mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-22 07:36:05 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
688998fc47 | ||
|
|
dfa6836d70 | ||
|
|
5afb0bcb20 | ||
|
|
645ff86660 | ||
|
|
11fb96ccc2 | ||
|
|
ae1f4c7290 | ||
|
|
744da1b726 |
No files matched your search
+3
-3
@@ -39,13 +39,13 @@ public partial class Main : BasePlugin
|
||||
public static ConfigEntry<bool> DisableCompatibilityWarning { get; private set; }
|
||||
public static ConfigEntry<bool> DisableChatModifier { get; private set; }
|
||||
|
||||
public static NormalGameOptionsV11 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
|
||||
public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
|
||||
public static NormalGameOptionsV12 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
|
||||
public static HideNSeekGameOptionsV12 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
|
||||
public static MapNames CurrentMap => (MapNames)NormalOptions.MapId;
|
||||
|
||||
public static bool HasArgumentException;
|
||||
public static string CredentialsText;
|
||||
public const string ModVersion = "v2.1.0";
|
||||
public const string ModVersion = "v2.2.2";
|
||||
|
||||
public static float GameTimer;
|
||||
public static float AfkTimer;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BepInEx.Unity.IL2CPP" Version="6.0.0-be.735" ExcludeAssets="runtime;native" />
|
||||
|
||||
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
|
||||
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.9.29" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
|
||||
<PackageReference Include="AmongUs.GameLibs.Android" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
|
||||
|
||||
<PackageReference Include="BepInEx.AutoPlugin" Version="1.1.0" PrivateAssets="all" />
|
||||
|
||||
@@ -287,7 +287,8 @@ public static class BanManager
|
||||
Dictionary<string, string> variables = new()
|
||||
{
|
||||
{ "ModVersion", Main.ModVersion },
|
||||
{ "\\n", Environment.NewLine }
|
||||
{ "\\n", Environment.NewLine },
|
||||
{ "FirstDeath", NormalGameEndChecker.firstDeath }
|
||||
};
|
||||
|
||||
foreach (var kvp in variables)
|
||||
|
||||
@@ -337,6 +337,9 @@ namespace AmongUsRevamped
|
||||
public static OptionItem TabGroupHNS;
|
||||
public static OptionItem NumSeekers;
|
||||
|
||||
public static OptionItem TabGroupNoKcd;
|
||||
public static OptionItem DisablePeacePeriod;
|
||||
|
||||
public static OptionItem TabGroupSNS;
|
||||
public static OptionItem SNSChatInGame;
|
||||
public static OptionItem SNSChatInGameExtend;
|
||||
@@ -352,6 +355,7 @@ namespace AmongUsRevamped
|
||||
public static OptionItem SNSDisableMushroomMixup;
|
||||
public static OptionItem SNSDisableCloseDoor;
|
||||
public static OptionItem SNSImpostorsCanVent;
|
||||
public static OptionItem SNSSuicideMode;
|
||||
|
||||
public static OptionItem TabGroupSpeedrun;
|
||||
public static OptionItem GameAutoEndsAfter;
|
||||
@@ -549,6 +553,10 @@ namespace AmongUsRevamped
|
||||
NumSeekers = IntegerOptionItem.Create(70001, Translator.Get("numSeekers"), new(1, 15, 1), 1, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Level);
|
||||
|
||||
TabGroupNoKcd = TextOptionItem.Create(70010, Translator.Get("tabGroupNoKcd"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.green);
|
||||
DisablePeacePeriod = BooleanOptionItem.Create(70011, Translator.Get("disablePeacePeriod"), false, TabGroup.GamemodeSettings, false);
|
||||
|
||||
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.green);
|
||||
SNSChatInGame = BooleanOptionItem.Create(70051, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
|
||||
@@ -583,6 +591,7 @@ namespace AmongUsRevamped
|
||||
SNSDisableCloseDoor = BooleanOptionItem.Create(70064, Translator.Get("snsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetColor(Color.red);
|
||||
SNSImpostorsCanVent = BooleanOptionItem.Create(70065, Translator.Get("snsImpostorCanVent"), true, TabGroup.GamemodeSettings, false);
|
||||
SNSSuicideMode = BooleanOptionItem.Create(70066, Translator.Get("snsSuicideMode"), false, TabGroup.GamemodeSettings, false);
|
||||
|
||||
TabGroupSpeedrun = TextOptionItem.Create(70076, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.green);
|
||||
|
||||
@@ -15,15 +15,6 @@ internal class EACR
|
||||
MessageReader sr = MessageReader.Get(reader);
|
||||
var rpc = (RpcCalls)callId;
|
||||
|
||||
switch (rpc)
|
||||
{
|
||||
case RpcCalls.StartMeeting:
|
||||
{
|
||||
MeetingCheat(pc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
switch (callId)
|
||||
{
|
||||
case 101: // Aum Chat
|
||||
|
||||
@@ -119,7 +119,7 @@ public static class FixedUpdate
|
||||
}
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !Utils.IsLobby)
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !Utils.IsLobby && !Options.SNSSuicideMode.GetBool())
|
||||
{
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace AmongUsRevamped;
|
||||
public static class OptionManager
|
||||
{
|
||||
private static float OldKillCooldown;
|
||||
private static float OldGuardianCooldown;
|
||||
|
||||
public static void SyncGameOptions()
|
||||
{
|
||||
@@ -31,6 +32,10 @@ public static class OptionManager
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
OldKillCooldown = Main.NormalOptions.KillCooldown;
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
OldGuardianCooldown = GuardianAngelOptions.ProtectionDurationSeconds;
|
||||
}
|
||||
}
|
||||
|
||||
public static void RestoreOptions()
|
||||
@@ -42,6 +47,11 @@ public static class OptionManager
|
||||
Main.NormalOptions.KillCooldown = OldKillCooldown;
|
||||
Logger.Info("Force overrided Kill Cooldown back to original", "RestoreOptions");
|
||||
}
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions) && GuardianAngelOptions.ProtectionDurationSeconds != OldGuardianCooldown)
|
||||
{
|
||||
GuardianAngelOptions.ProtectionDurationSeconds = OldGuardianCooldown;
|
||||
Logger.Info("Force overrided Guardian Angel Cooldown back to original", "RestoreOptions");
|
||||
}
|
||||
|
||||
SyncGameOptions();
|
||||
}
|
||||
|
||||
@@ -559,13 +559,13 @@ internal static class SendChatPatch
|
||||
|
||||
if (text == "/0kc" || text == "/0killcooldown")
|
||||
{
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (text == "/sns" || text == "/shiftandseek")
|
||||
{
|
||||
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
|
||||
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
|
||||
return false;
|
||||
}
|
||||
if (text == "/sns2" || text == "/shiftandseek2")
|
||||
@@ -593,12 +593,12 @@ internal static class SendChatPatch
|
||||
case 0:
|
||||
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
|
||||
{
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
|
||||
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@@ -1004,12 +1004,12 @@ public static class RPCHandlerPatch
|
||||
if (text == "/0kc" || text == "/0killcooldown")
|
||||
{
|
||||
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
if (text == "/sns" || text == "/shiftandseek")
|
||||
{
|
||||
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
|
||||
}
|
||||
if (text == "/sns2" || text == "/shiftandseek2")
|
||||
{
|
||||
@@ -1037,12 +1037,12 @@ public static class RPCHandlerPatch
|
||||
case 0:
|
||||
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
|
||||
{
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BepInEx.Unity.IL2CPP;
|
||||
using AmongUs.Data.Player;
|
||||
using BepInEx.Unity.IL2CPP;
|
||||
using System;
|
||||
using System.Text;
|
||||
using Il2CppInterop.Runtime.InteropTypes.Arrays;
|
||||
@@ -386,6 +387,16 @@ namespace AmongUsRevamped
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(PlayerBanData), nameof(PlayerBanData.BanMinutesLeft), MethodType.Getter)]
|
||||
public static class PlayerBanDataGetterPatch
|
||||
{
|
||||
public static void Postfix(PlayerBanData __instance, ref int __result)
|
||||
{
|
||||
__instance.BanPoints = 0f;
|
||||
__result = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if !ANDROID
|
||||
|
||||
@@ -28,7 +28,7 @@ class NormalGameEndChecker
|
||||
public static string LastWinReason = "";
|
||||
public static List<PlayerControl> imps = new List<PlayerControl>();
|
||||
public static string firstDeath;
|
||||
public static string firstDeathString => firstDeath != "" ? $"\n\nFirst death: {firstDeath}" : "";
|
||||
public static string firstDeathString => firstDeath != "" ? $"\n\n1st death: {firstDeath}" : "";
|
||||
|
||||
public static bool Prefix()
|
||||
{
|
||||
@@ -50,8 +50,8 @@ class NormalGameEndChecker
|
||||
public static string customRoles { get; set; }
|
||||
public static void CheckWinnerText(string Winner)
|
||||
{
|
||||
string impostorList = string.Join(", ", imps.Select(p => p.Data.PlayerName));
|
||||
string impostorString = impostorList != "" ? $"\n\nImpostors: {impostorList}" : "";
|
||||
string impostorList = string.Join("\n", imps.Select(p => $"{p.Data.PlayerName} {p.Data.ColorName}"));
|
||||
string impostorString = impostorList != "" ? $"\n\n{impostorList}" : "";
|
||||
|
||||
if (!canUpdateWinnerText) return;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class ExileControllerWrapUpPatch
|
||||
}
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1)
|
||||
if (Options.Gamemode.GetValue() == 1 && !Options.SNSSuicideMode.GetBool())
|
||||
{
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
|
||||
+26
-22
@@ -23,7 +23,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
if (NormalGameEndChecker.firstDeath != null && NormalGameEndChecker.firstDeath == p.Data.PlayerName && Options.ShieldFirstDeath.GetBool() && Options.Gamemode.GetValue() != 1)
|
||||
{
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
var oldGA = GuardianAngelOptions.ImpostorsCanSeeProtect;
|
||||
var oldGAProt = GuardianAngelOptions.ProtectionDurationSeconds;
|
||||
@@ -64,33 +64,37 @@ internal static class CoShowIntroPatch
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
|
||||
}
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
p.Data.MarkDirty();
|
||||
}
|
||||
|
||||
if (Options.SNSChatInGameExtend.GetBool())
|
||||
{
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
|
||||
}
|
||||
if (Options.SNSChatInGameExtend2.GetBool())
|
||||
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
|
||||
}
|
||||
|
||||
if (!Options.SNSSuicideMode.GetBool())
|
||||
{
|
||||
_ = new LateTask(() =>
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
|
||||
}, 6.6f, "SNSChatInGameExtend2");
|
||||
}
|
||||
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
|
||||
}
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
p.Data.MarkDirty();
|
||||
}
|
||||
|
||||
if (Options.SNSChatInGameExtend2.GetBool())
|
||||
{
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
|
||||
}, 6.6f, "SNSChatInGameExtend2");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f))
|
||||
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f) && !Options.DisablePeacePeriod.GetBool())
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 5f;
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
@@ -112,4 +112,16 @@ class MeetingHudStartPatch
|
||||
return $"<color=red>({MurderPlayerPatch.killCount[player.Data.PlayerId]}†)</color> - {Utils.GetRoleText(player)}";
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(LogicOptionsNormal), nameof(LogicOptionsNormal.GetAnonymousVotes))]
|
||||
public static class LogicOptionsNormalGetAnonymousVotesPatch
|
||||
{
|
||||
public static void Postfix(ref bool __result)
|
||||
{
|
||||
if (Utils.IsDead)
|
||||
{
|
||||
__result = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,11 +68,11 @@ internal static class MurderPlayerPatch
|
||||
|
||||
if (resultFlags.HasFlag(MurderResultFlags.Succeeded))
|
||||
{
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && target.Data.PlayerId != __instance.shapeshiftTargetPlayerId)
|
||||
{
|
||||
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId) return;
|
||||
Logger.Info($" {__instance.Data.PlayerName} directly killed {target.Data.PlayerName} in SnS, forcing suicide. (Are they hacking?)", "MurderPlayer");
|
||||
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
|
||||
Logger.SendInGame($"{__instance.Data.PlayerName} directly misfired, forcing suicide");
|
||||
Logger.Info($" {__instance.Data.PlayerName} directly misfired, forcing suicide", "MurderPlayer");
|
||||
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -104,7 +104,8 @@ public static class MessageReaderUpdateSystemPatch
|
||||
public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] SystemTypes systemType, [HarmonyArgument(1)] PlayerControl player, [HarmonyArgument(2)] MessageReader reader)
|
||||
{
|
||||
if (systemType is
|
||||
SystemTypes.Security
|
||||
SystemTypes.Ventilation
|
||||
or SystemTypes.Security
|
||||
or SystemTypes.Decontamination
|
||||
or SystemTypes.Decontamination2
|
||||
or SystemTypes.Decontamination3
|
||||
@@ -112,29 +113,13 @@ public static class MessageReaderUpdateSystemPatch
|
||||
|
||||
if (player.Data.ClientId == AmongUsClient.Instance.HostId) return true;
|
||||
|
||||
// Thanks to D1GQ for finding.
|
||||
if (systemType == SystemTypes.Ventilation)
|
||||
var amount = MessageReader.Get(reader).ReadByte();
|
||||
if (EACR.RpcUpdateSystemCheck(player, systemType, amount))
|
||||
{
|
||||
_ = reader.ReadUInt16();
|
||||
var operation = (VentilationSystem.Operation)reader.ReadByte();
|
||||
if (operation == VentilationSystem.Operation.BootImpostors)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var amount = MessageReader.Get(reader).ReadByte();
|
||||
if (EACR.RpcUpdateSystemCheck(player, systemType, amount))
|
||||
{
|
||||
Logger.Info("EACR patched Sabotage RPC", "MessageReaderUpdateSystemPatch");
|
||||
return false;
|
||||
}
|
||||
else return true;
|
||||
Logger.Info("EACR patched Sabotage RPC", "MessageReaderUpdateSystemPatch");
|
||||
return false;
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
|
||||
|
||||
|
||||
# 🎮 Features (v2.1.0):
|
||||
# 🎮 Features (v2.2.2):
|
||||
|
||||
## <b>♠️ Client Side settings:</b>
|
||||
- Toggle Game Master (Spectator)
|
||||
@@ -66,7 +66,7 @@
|
||||
## <b>🔧 Gameplay Settings:</b>
|
||||
- Change sabotage cooldown and durations
|
||||
- Dead impostors can sabotage
|
||||
- Disable critical sabotages (invividual)
|
||||
- Disable critical sabotages (individual)
|
||||
- Disable door sabotages
|
||||
- Disable meeting calls first 30s
|
||||
- Disable devices (per map, individual)
|
||||
@@ -92,7 +92,7 @@
|
||||
- Detect immortality cheats
|
||||
- Block attempted votekicks
|
||||
## <b>❓ Other Improvements:</b>
|
||||
- Lanuage support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
|
||||
- Language support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
|
||||
- Select a language in Language/YourLanguage.txt
|
||||
- Preset system for mod settings
|
||||
- Creatable and customizable Templates
|
||||
|
||||
@@ -394,6 +394,10 @@
|
||||
|
||||
"tabGroupGameplayMapModifications": "Map Modifications",
|
||||
|
||||
"disableChatModifier": "Disable Chat Modifications"
|
||||
"disableChatModifier": "Disable Chat Modifications",
|
||||
"snsSuicideMode": "Disable Shield System",
|
||||
|
||||
"tabGroupNoKcd": "0 Kill Cooldown",
|
||||
"disablePeacePeriod": "Disable 5s Peace Period"
|
||||
|
||||
}
|
||||
@@ -363,5 +363,39 @@
|
||||
"fungleMushroomMixupDuration": "Fungle キノコ幻覚の持続時間",
|
||||
|
||||
"privateDesc": "ロビーを非公開に設定します。",
|
||||
"publicDesc": "ロビーを公開に設定します。"
|
||||
"publicDesc": "ロビーを公開に設定します。",
|
||||
"mapVoteDesc": "選択したマップの中から投票を開始します。",
|
||||
"modeVoteDesc": "選択したゲームモードの中から投票を開始します。",
|
||||
|
||||
"tabGroupAnticheat": "アンチチート",
|
||||
"hackingPunishment": "チートへの処罰",
|
||||
"detectBadRPC": "無効な RPC を検出",
|
||||
"detectBadSabotage": "無効なサボタージュを検出",
|
||||
"detectBadVent": "無効なベントを検出",
|
||||
"detectBadTask": "無効なタスク完了を検出",
|
||||
"detectBadKill": "無効なキルを検出",
|
||||
"detectBadAnimation": "無効なアニメーションを検出",
|
||||
"detectBadMeeting": "無効な会議を検出",
|
||||
|
||||
"customizeMapVote": "マップ投票をカスタマイズ",
|
||||
"includeSkeld": "Skeld を含める",
|
||||
"includeMira": "Mira を含める",
|
||||
"includePolus": "Polus を含める",
|
||||
"includeAirship": "Airship を含める",
|
||||
"includeFungle": "Fungle を含める",
|
||||
"includeDleks": "Dleks を含める",
|
||||
|
||||
"customizeModeVote": "ゲームモード投票をカスタマイズ",
|
||||
"includeStandard": "スタンダードを含める",
|
||||
"includeNoKillCooldown": "キルクールダウン 0 を含める",
|
||||
"includeShiftAndSeek": "Shift And Seek を含める",
|
||||
"includePoofAndSeek": "Poof And Seek を含める",
|
||||
"includeSpeedrun": "Speedrun を含める",
|
||||
|
||||
"tabGroupGameplayMapModifications": "マップの変更",
|
||||
|
||||
"disableChatModifier": "チャット変更を無効化",
|
||||
"snsSuicideMode": "シールドシステムを無効化",
|
||||
"tabGroupNoKcd": "キルクールダウン0秒",
|
||||
"disablePeacePeriod": "5秒間の平和時間を無効化"
|
||||
}
|
||||
@@ -364,5 +364,36 @@
|
||||
"fungleMushroomMixupDuration": "Длительность Сабботажа Грибного Переполоха",
|
||||
|
||||
"privateDesc": "Изменяет Публичность Лобби на Приватный.",
|
||||
"publicDesc": "Изменяет Публичность Лобби на Публичный."
|
||||
"publicDesc": "Изменяет Публичность Лобби на Публичный.",
|
||||
"tabGroupAnticheat": "Античит",
|
||||
"hackingPunishment": "Наказание за Читерство",
|
||||
"detectBadRPC": "Обнаруживать Неправильные RPC",
|
||||
"detectBadSabotage": "Обнаруживать Неправильные Sabotages",
|
||||
"detectBadVent": "Обнаруживать Неправильные Уходы в Люк",
|
||||
"detectBadTask": "Обнаруживать Неправильные Выполнения Заданий",
|
||||
"detectBadKill": "Обнаруживать Неправильные Убийства",
|
||||
"detectBadAnimation": "Обнаруживать Неправильные Анимации",
|
||||
"detectBadMeeting": "Обнаруживать Неправильные Собрания",
|
||||
|
||||
"customizeMapVote": "Кастомизировать Голосование За Карты",
|
||||
"includeSkeld": "Включить Skeld",
|
||||
"includeMira": "Включить Mira",
|
||||
"includePolus": "Включить Polus",
|
||||
"includeAirship": "Включить Airship",
|
||||
"includeFungle": "Включить Fungle",
|
||||
"includeDleks": "Включить Dleks",
|
||||
|
||||
"customizeModeVote": "Кастомизировать Голосование За Режим",
|
||||
"includeStandard": "Включить Стандарт",
|
||||
"includeNoKillCooldown": "Включить 0 Перезарядка Убийств",
|
||||
"includeShiftAndSeek": "Включить Клона",
|
||||
"includePoofAndSeek": "Включить Фантомные Прятки",
|
||||
"includeSpeedrun": "Включить Спидран",
|
||||
|
||||
"tabGroupGameplayMapModifications": "Модификации Карт",
|
||||
|
||||
"disableChatModifier": "Выключить Модификации Чата",
|
||||
"snsSuicideMode": "Выключить Систему Щитов",
|
||||
"tabGroupNoKcd": "0 Перезарядка Убийств",
|
||||
"disablePeacePeriod": "Выключить Мирный Период Первые 5 секунд"
|
||||
}
|
||||
@@ -350,5 +350,39 @@
|
||||
"fungleMushroomMixupDuration": "Fungle 蘑菇幻觉持续时间",
|
||||
|
||||
"privateDesc": "将房间改为私人。",
|
||||
"publicDesc": "将房间改为公开。"
|
||||
"publicDesc": "将房间改为公开。",
|
||||
"mapVoteDesc": "在选定的地图之间发起投票。",
|
||||
"modeVoteDesc": "在选定的游戏模式之间发起投票。",
|
||||
|
||||
"tabGroupAnticheat": "反作弊",
|
||||
"hackingPunishment": "作弊惩罚",
|
||||
"detectBadRPC": "检测无效 RPC",
|
||||
"detectBadSabotage": "检测无效破坏",
|
||||
"detectBadVent": "检测无效钻管",
|
||||
"detectBadTask": "检测无效任务完成",
|
||||
"detectBadKill": "检测无效击杀",
|
||||
"detectBadAnimation": "检测无效动画",
|
||||
"detectBadMeeting": "检测无效会议",
|
||||
|
||||
"customizeMapVote": "自定义地图投票",
|
||||
"includeSkeld": "包含 Skeld",
|
||||
"includeMira": "包含 Mira",
|
||||
"includePolus": "包含 Polus",
|
||||
"includeAirship": "包含 Airship",
|
||||
"includeFungle": "包含 Fungle",
|
||||
"includeDleks": "包含 Dleks",
|
||||
|
||||
"customizeModeVote": "自定义游戏模式投票",
|
||||
"includeStandard": "包含标准模式",
|
||||
"includeNoKillCooldown": "包含 0 击杀冷却",
|
||||
"includeShiftAndSeek": "包含SnS",
|
||||
"includePoofAndSeek": "包含PnS",
|
||||
"includeSpeedrun": "包含速通",
|
||||
|
||||
"tabGroupGameplayMapModifications": "地图修改",
|
||||
|
||||
"disableChatModifier": "禁用聊天修改",
|
||||
"snsSuicideMode": "禁用护盾系统",
|
||||
"tabGroupNoKcd": "0 秒击杀冷却",
|
||||
"disablePeacePeriod": "禁用 5 秒和平期"
|
||||
}
|
||||
@@ -94,19 +94,6 @@
|
||||
"snsDisableHeli": "Desactivar sabotaje de Crash Course",
|
||||
"snsDisableMushroomMixup": "Desactivar sabotaje de mezcla de hongos",
|
||||
"snsDisableCloseDoor": "Desactivar sabotajes de puertas de SnS",
|
||||
|
||||
"tabGroupCustomizeSabotages": "Customize Sabotages",
|
||||
"customizeSabotages": "Enable Sabotage Customizations",
|
||||
"sabotageCooldown": "Critical Sabotage Cooldown",
|
||||
"skeldReactorDuration": "Skeld Reactor Duration",
|
||||
"skeldO2Duration": "Skeld O2 Duration",
|
||||
"miraReactorDuration": "Mira Reactor Duration",
|
||||
"miraO2Duration": "Mira O2 Duration",
|
||||
"polusReactorDuration": "Polus Reactor Duration",
|
||||
"airshipReactorDuration": "Airship Reactor Duration",
|
||||
"fungleReactorDuration": "Fungle Reactor Duration",
|
||||
"fungleMushroomMixupDuration": "Fungle Mixup Duration",
|
||||
|
||||
"tabGroupSpeedrun": "Speedrun",
|
||||
"speedrunSettingsOverride": "Actualizar configuración automáticamente",
|
||||
"gameAutoEndsAfter": "La partida termina automáticamente después de",
|
||||
@@ -261,7 +248,6 @@
|
||||
"seekerDesc": "Marca al jugador como buscador en HnS.",
|
||||
"seekersDesc": "Muestra los buscadores elegidos manualmente.",
|
||||
"clearSeekerDesc": "Borra la lista manual de buscadores.",
|
||||
"mapVoteDesc": "Inicia una votación entre los 5 mapas principales.",
|
||||
"allMapVoteDesc": "Inicia una votación entre los 6 mapas, incluido Eht Dleks.",
|
||||
"aurDesc": "Envía los enlaces sociales de Among Us Revamped.",
|
||||
"sDesc": "Inicia la cuenta regresiva de la partida.",
|
||||
@@ -307,20 +293,59 @@
|
||||
"moderatorAndAbove": "<color=purple>Moderador</color> o superior",
|
||||
"admin": "<color=red>Administrador</color>",
|
||||
"onlyYou": "Solo tú",
|
||||
|
||||
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
|
||||
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
|
||||
"snsImpostorCanVent": "Los impostores pueden usar conductos",
|
||||
"snsImpostorCanVent": "Los impostores pueden usar conductos"
|
||||
"modeVoteDuration": "Duración de la votación de modo de juego",
|
||||
"snsChatInGameExtendTwo": "Enviar información ampliada al iniciar la partida",
|
||||
"snsChatInGameFast": "Reunión más rápida (experimental+)",
|
||||
"snsChatInGameFast": "Reunión más rápida (experimental+),
|
||||
"shieldFirstDeath": " Proteger al primer jugador que murió",
|
||||
"shieldFirstDeathDuration": "Duración de la protección",
|
||||
"snsTwoDesc": "Enviar la descripción ampliada de Shift and Seek.",
|
||||
"modeVoteDesc": "Inicia una votación entre todos los modos de juego.",
|
||||
"automaticModePoll": "/gmvote automático al volver a la sala",
|
||||
|
||||
"privateDesc": "Changes lobby visibility to private.",
|
||||
"publicDesc": "Changes lobby visibility to public."
|
||||
"tabGroupCustomizeSabotages": "Personalizar sabotajes",
|
||||
"customizeSabotages": "Activar personalización de sabotajes",
|
||||
"sabotageCooldown": "Tiempo de espera de sabotajes críticos",
|
||||
"skeldReactorDuration": "Duración del reactor en Skeld",
|
||||
"skeldO2Duration": "Duración del O2 en Skeld",
|
||||
"miraReactorDuration": "Duración del reactor en Mira HQ",
|
||||
"miraO2Duration": "Duración del O2 en Mira HQ",
|
||||
"polusReactorDuration": "Duración del reactor en Polus",
|
||||
"airshipReactorDuration": "Duración del reactor en Airship",
|
||||
"fungleReactorDuration": "Duración del reactor en Fungle",
|
||||
"fungleMushroomMixupDuration": "Duración de la mezcla de hongos en Fungle",
|
||||
"privateDesc": "Cambia la visibilidad de la sala a privada.",
|
||||
"publicDesc": "Cambia la visibilidad de la sala a pública.",
|
||||
"mapVoteDesc": "Inicia una votación entre los mapas seleccionados.",
|
||||
"modeVoteDesc": "Inicia una votación entre los modos de juego seleccionados.",
|
||||
"tabGroupAnticheat": "Antitrampas",
|
||||
"hackingPunishment": "Castigo por hacer trampa",
|
||||
"detectBadRPC": "Detectar RPC inválidos",
|
||||
"detectBadSabotage": "Detectar sabotajes inválidos",
|
||||
"detectBadVent": "Detectar uso inválido de ventilas",
|
||||
"detectBadTask": "Detectar tareas completadas de forma inválida",
|
||||
"detectBadKill": "Detectar asesinatos inválidos",
|
||||
"detectBadAnimation": "Detectar animaciones inválidas",
|
||||
"detectBadMeeting": "Detectar reuniones inválidas",
|
||||
"customizeMapVote": "Personalizar votación de mapas",
|
||||
"includeSkeld": "Incluir Skeld",
|
||||
"includeMira": "Incluir Mira HQ",
|
||||
"includePolus": "Incluir Polus",
|
||||
"includeAirship": "Incluir Airship",
|
||||
"includeFungle": "Incluir Fungle",
|
||||
"includeDleks": "Incluir Dleks",
|
||||
"customizeModeVote": "Personalizar votación de modos de juego",
|
||||
"includeStandard": "Incluir Estándar",
|
||||
"includeNoKillCooldown": "Incluir 0 s de espera para matar",
|
||||
"includeShiftAndSeek": "Incluir Shift and Seek",
|
||||
"includePoofAndSeek": "Incluir Poof and Seek",
|
||||
"includeSpeedrun": "Incluir Speedrun",
|
||||
"tabGroupGameplayMapModifications": "Modificaciones de mapas",
|
||||
"disableChatModifier": "Desactivar modificaciones del chat",
|
||||
"snsSuicideMode": "Desactivar sistema de escudos",
|
||||
"tabGroupNoKcd": "0 s de espera para matar",
|
||||
"disablePeacePeriod": "Desactivar período de paz de 5 s"
|
||||
}
|
||||
Reference in new issue
Block a user