Not even gonna try summing this up

This commit is contained in:
Ape committed 2026-09-11 23:00:09 +02:00
1 parent 7dafbcf479
commit 00e2a384c9
20 files changed
+700 -458

No files matched your search

+3 -1
View File
@@ -37,6 +37,7 @@ public partial class Main : BasePlugin
public static ConfigEntry<bool> DisableInfoWhenDead { get; private set; } public static ConfigEntry<bool> DisableInfoWhenDead { get; private set; }
public static ConfigEntry<bool> DisableCommandHelper { get; private set; } public static ConfigEntry<bool> DisableCommandHelper { get; private set; }
public static ConfigEntry<bool> DisableCompatibilityWarning { get; private set; } 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 NormalGameOptionsV11 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null; public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
@@ -44,7 +45,7 @@ public partial class Main : BasePlugin
public static bool HasArgumentException; public static bool HasArgumentException;
public static string CredentialsText; public static string CredentialsText;
public const string ModVersion = "v2.0.4"; public const string ModVersion = "v2.1.0";
public static float GameTimer; public static float GameTimer;
public static float AfkTimer; public static float AfkTimer;
@@ -96,6 +97,7 @@ public partial class Main : BasePlugin
DisableInfoWhenDead = Config.Bind("Client Options", "Disable Task/Kill View", false); DisableInfoWhenDead = Config.Bind("Client Options", "Disable Task/Kill View", false);
DisableCommandHelper = Config.Bind("Client Options", "Disable Command Helper", false); DisableCommandHelper = Config.Bind("Client Options", "Disable Command Helper", false);
DisableCompatibilityWarning = Config.Bind("Client Options", "Disable Compatibility Warning", false); DisableCompatibilityWarning = Config.Bind("Client Options", "Disable Compatibility Warning", false);
DisableChatModifier = Config.Bind("Client Options", "Disable Chat Modifications", false);
Translator.Init(); Translator.Init();
Translator.Reload(); Translator.Reload();
-1
View File
@@ -83,7 +83,6 @@ internal static class CommandHelper
new Cmd { Name = new[] { "/clearseeker" }, Prompt = "/clearseeker", Description = Translator.Get("clearSeekerDesc"), HasVariable = false }, new Cmd { Name = new[] { "/clearseeker" }, Prompt = "/clearseeker", Description = Translator.Get("clearSeekerDesc"), HasVariable = false },
new Cmd { Name = new[] { "/mapvote" }, Prompt = "/mapvote", Description = Translator.Get("mapVoteDesc"), HasVariable = false }, new Cmd { Name = new[] { "/mapvote" }, Prompt = "/mapvote", Description = Translator.Get("mapVoteDesc"), HasVariable = false },
new Cmd { Name = new[] { "/allmapvote" }, Prompt = "/allmapvote", Description = Translator.Get("allMapVoteDesc"), HasVariable = false },
new Cmd { Name = new[] { "/gmvote" }, Prompt = "/gmvote", Description = Translator.Get("modeVoteDesc"), HasVariable = false }, new Cmd { Name = new[] { "/gmvote" }, Prompt = "/gmvote", Description = Translator.Get("modeVoteDesc"), HasVariable = false },
new Cmd { Name = new[] { "/private" }, Prompt = "/private", Description = Translator.Get("privateDesc"), HasVariable = false }, new Cmd { Name = new[] { "/private" }, Prompt = "/private", Description = Translator.Get("privateDesc"), HasVariable = false },
+88 -15
View File
@@ -61,6 +61,11 @@ namespace AmongUsRevamped
Translator.Get("kick"), Translator.Get("ban"), Translator.Get("notifyMe") Translator.Get("kick"), Translator.Get("ban"), Translator.Get("notifyMe")
}; };
public static readonly string[] cheatingPenalties =
{
Translator.Get("ban"), Translator.Get("kick"), Translator.Get("notifyMe")
};
//System //System
@@ -102,8 +107,6 @@ namespace AmongUsRevamped
public static OptionItem MessagePerPlayerNum; public static OptionItem MessagePerPlayerNum;
public static OptionItem AutomaticMapPoll; public static OptionItem AutomaticMapPoll;
public static OptionItem TimeBeforeMapPoll; public static OptionItem TimeBeforeMapPoll;
public static OptionItem AutomaticAllMapPoll;
public static OptionItem TimeBeforeAllMapPoll;
public static OptionItem AutomaticModePoll; public static OptionItem AutomaticModePoll;
public static OptionItem TimeBeforeModePoll; public static OptionItem TimeBeforeModePoll;
@@ -123,12 +126,37 @@ namespace AmongUsRevamped
public static OptionItem TabGroupMisc; public static OptionItem TabGroupMisc;
public static OptionItem MapVoteDuration; public static OptionItem MapVoteDuration;
public static OptionItem CustomizeMapVote;
public static OptionItem IncludeSkeld;
public static OptionItem IncludeMira;
public static OptionItem IncludePolus;
public static OptionItem IncludeAirship;
public static OptionItem IncludeFungle;
public static OptionItem IncludeDleks;
public static OptionItem ModeVoteDuration; public static OptionItem ModeVoteDuration;
public static OptionItem CustomizeModeVote;
public static OptionItem IncludeStandard;
public static OptionItem IncludeNoKillCooldown;
public static OptionItem IncludeShiftAndSeek;
public static OptionItem IncludePoofAndSeek;
public static OptionItem IncludeSpeedrun;
public static OptionItem StartCountdown; public static OptionItem StartCountdown;
public static OptionItem ColorCommandLevel; public static OptionItem ColorCommandLevel;
public static OptionItem AllowFortegreen; public static OptionItem AllowFortegreen;
public static OptionItem NoGameEnd; public static OptionItem NoGameEnd;
public static OptionItem TabGroupAnticheat;
public static OptionItem HackingPunishment;
public static OptionItem DetectBadRPC;
public static OptionItem DetectBadSabotage;
public static OptionItem DetectBadVent;
public static OptionItem DetectBadTask;
public static OptionItem DetectBadKill;
public static OptionItem DetectBadAnimation;
public static OptionItem DetectBadMeeting;
public static OptionItem TabGroupAccess; public static OptionItem TabGroupAccess;
public static OptionItem SlashColorCmd; public static OptionItem SlashColorCmd;
public static OptionItem SlashRolesAndGamemodeCmd; public static OptionItem SlashRolesAndGamemodeCmd;
@@ -167,6 +195,8 @@ namespace AmongUsRevamped
public static OptionItem ShieldFirstDeath; public static OptionItem ShieldFirstDeath;
public static OptionItem ShieldFirstDeathDuration; public static OptionItem ShieldFirstDeathDuration;
public static OptionItem DisableAnnoyingMeetingCalls; public static OptionItem DisableAnnoyingMeetingCalls;
public static OptionItem TabGroupGameplayMapModifications;
public static OptionItem ChangeDecontaminationTime; public static OptionItem ChangeDecontaminationTime;
public static OptionItem DecontaminationTimeOnMiraHQ; public static OptionItem DecontaminationTimeOnMiraHQ;
public static OptionItem DecontaminationDoorOpenTimeOnMiraHQ; public static OptionItem DecontaminationDoorOpenTimeOnMiraHQ;
@@ -424,18 +454,14 @@ namespace AmongUsRevamped
TimeBeforeMapPoll = IntegerOptionItem.Create(60155, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 10, TabGroup.SystemSettings, false) TimeBeforeMapPoll = IntegerOptionItem.Create(60155, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 10, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds) .SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticMapPoll); .SetParent(AutomaticMapPoll);
AutomaticAllMapPoll = BooleanOptionItem.Create(60156, Translator.Get("automaticAllMapPoll"), false, TabGroup.SystemSettings, false); AutomaticModePoll = BooleanOptionItem.Create(60156, Translator.Get("automaticModePoll"), false, TabGroup.SystemSettings, false);
TimeBeforeAllMapPoll = IntegerOptionItem.Create(60157, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 10, TabGroup.SystemSettings, false) TimeBeforeModePoll = IntegerOptionItem.Create(60157, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticAllMapPoll);
AutomaticModePoll = BooleanOptionItem.Create(60158, Translator.Get("automaticModePoll"), false, TabGroup.SystemSettings, false);
TimeBeforeModePoll = IntegerOptionItem.Create(60159, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds) .SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticModePoll); .SetParent(AutomaticModePoll);
TabGroupAutostart = TextOptionItem.Create(64425, Translator.Get("tabGroupAutostart"), TabGroup.SystemSettings) TabGroupAutostart = TextOptionItem.Create(64425, Translator.Get("tabGroupAutostart"), TabGroup.SystemSettings)
.SetColor(Color.yellow); .SetColor(Color.yellow);
AutoStartTimer = IntegerOptionItem.Create(64426, Translator.Get("autoStartTimer"), new(1, 5, 1), 5, TabGroup.SystemSettings, false) AutoStartTimer = IntegerOptionItem.Create(64426, Translator.Get("autoStartTimer"), new(2, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds); .SetValueFormat(OptionFormat.Seconds);
WaitAutoStart = IntegerOptionItem.Create(64427, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false) WaitAutoStart = IntegerOptionItem.Create(64427, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds); .SetValueFormat(OptionFormat.Seconds);
@@ -457,19 +483,64 @@ namespace AmongUsRevamped
TabGroupMisc = TextOptionItem.Create(60378, Translator.Get("tabGroupMisc"), TabGroup.SystemSettings) TabGroupMisc = TextOptionItem.Create(60378, Translator.Get("tabGroupMisc"), TabGroup.SystemSettings)
.SetColor(Color.yellow); .SetColor(Color.yellow);
MapVoteDuration = IntegerOptionItem.Create(60379, Translator.Get("mapVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false) MapVoteDuration = IntegerOptionItem.Create(60379, Translator.Get("mapVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
CustomizeMapVote = BooleanOptionItem.Create(60380, Translator.Get("customizeMapVote"), false, TabGroup.SystemSettings, false);
IncludeSkeld = BooleanOptionItem.Create(60381, Translator.Get("includeSkeld"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeMira = BooleanOptionItem.Create(60382, Translator.Get("includeMira"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludePolus = BooleanOptionItem.Create(60383, Translator.Get("includePolus"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeAirship = BooleanOptionItem.Create(60384, Translator.Get("includeAirship"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeFungle = BooleanOptionItem.Create(60385, Translator.Get("includeFungle"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeDleks = BooleanOptionItem.Create(60386, Translator.Get("includeDleks"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
ModeVoteDuration = IntegerOptionItem.Create(60389, Translator.Get("modeVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
CustomizeModeVote = BooleanOptionItem.Create(60390, Translator.Get("customizeModeVote"), false, TabGroup.SystemSettings, false);
IncludeStandard = BooleanOptionItem.Create(60391, Translator.Get("includeStandard"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeNoKillCooldown = BooleanOptionItem.Create(60392, Translator.Get("includeNoKillCooldown"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeShiftAndSeek = BooleanOptionItem.Create(60393, Translator.Get("includeShiftAndSeek"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludePoofAndSeek = BooleanOptionItem.Create(60394, Translator.Get("includePoofAndSeek"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeSpeedrun = BooleanOptionItem.Create(60395, Translator.Get("includeSpeedrun"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
StartCountdown = IntegerOptionItem.Create(60396, Translator.Get("startCountdown"), new(2, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds) .SetValueFormat(OptionFormat.Seconds)
.SetColor(Color.red); .SetColor(Color.red);
ModeVoteDuration = IntegerOptionItem.Create(60380, Translator.Get("modeVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false) AllowFortegreen = BooleanOptionItem.Create(60397, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(Color.red); .SetColor(Color.red);
StartCountdown = IntegerOptionItem.Create(60381, Translator.Get("startCountdown"), new(1, 5, 1), 5, TabGroup.SystemSettings, false) NoGameEnd = BooleanOptionItem.Create(60398, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(Color.red); .SetColor(Color.red);
AllowFortegreen = BooleanOptionItem.Create(60382, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false)
TabGroupAnticheat = TextOptionItem.Create(60400, Translator.Get("tabGroupAnticheat"), TabGroup.SystemSettings)
.SetColor(Color.yellow);
HackingPunishment = StringOptionItem.Create(60401, Translator.Get("hackingPunishment"), cheatingPenalties, 0, TabGroup.SystemSettings, false)
.SetColor(Color.red); .SetColor(Color.red);
NoGameEnd = BooleanOptionItem.Create(60383, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false) DetectBadRPC = BooleanOptionItem.Create(60402, Translator.Get("detectBadRPC"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red); .SetColor(Color.red);
DetectBadSabotage = BooleanOptionItem.Create(60403, Translator.Get("detectBadSabotage"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadVent = BooleanOptionItem.Create(60404, Translator.Get("detectBadVent"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadTask = BooleanOptionItem.Create(60405, Translator.Get("detectBadTask"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadKill = BooleanOptionItem.Create(60406, Translator.Get("detectBadKill"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadAnimation = BooleanOptionItem.Create(60407, Translator.Get("detectBadAnimation"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadMeeting = BooleanOptionItem.Create(60408, Translator.Get("detectBadMeeting"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
// Gamemode Settings // Gamemode Settings
@@ -628,6 +699,8 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Seconds); .SetValueFormat(OptionFormat.Seconds);
DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60567, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false); DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60567, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false);
TabGroupGameplayMapModifications = TextOptionItem.Create(60549, Translator.Get("tabGroupGameplayMapModifications"), TabGroup.ModSettings)
.SetColor(Color.blue);
ChangeDecontaminationTime = BooleanOptionItem.Create(60550, Translator.Get("changeDecontaminationTime"), false, TabGroup.ModSettings, false); ChangeDecontaminationTime = BooleanOptionItem.Create(60550, Translator.Get("changeDecontaminationTime"), false, TabGroup.ModSettings, false);
DecontaminationTimeOnMiraHQ = FloatOptionItem.Create(60551, Translator.Get("decontaminationTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false) DecontaminationTimeOnMiraHQ = FloatOptionItem.Create(60551, Translator.Get("decontaminationTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
.SetParent(ChangeDecontaminationTime) .SetParent(ChangeDecontaminationTime)
+89 -76
View File
@@ -8,23 +8,22 @@ internal class EACR
{ {
public static bool PlayerControlReceiveRpc(PlayerControl pc, byte callId, MessageReader reader) public static bool PlayerControlReceiveRpc(PlayerControl pc, byte callId, MessageReader reader)
{ {
if (!AmongUsClient.Instance.AmHost) return false; if (!AmongUsClient.Instance.AmHost || pc == null || reader == null) return false;
if (pc == null || reader == null) return false;
try try
{ {
MessageReader sr = MessageReader.Get(reader); MessageReader sr = MessageReader.Get(reader);
var rpc = (RpcCalls)callId; var rpc = (RpcCalls)callId;
switch (rpc) switch (rpc)
{ {
case RpcCalls.StartMeeting: case RpcCalls.StartMeeting:
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); MeetingCheat(pc);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for being calling an invalid meeting (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for being calling an invalid meeting (cheating)", "EACR");
return true; return true;
} }
} }
switch (callId) switch (callId)
{ {
case 101: // Aum Chat case 101: // Aum Chat
@@ -38,9 +37,7 @@ internal class EACR
if (!flag) if (!flag)
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "Among Us Menu Chat");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for AUM chat CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for AUM chat CallId (cheating)", "EACR");
return true; return true;
} }
} }
@@ -56,9 +53,7 @@ internal class EACR
if (aumid == pc.PlayerId) if (aumid == pc.PlayerId)
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "Among Us Menu");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for AUM CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for AUM CallId (cheating)", "EACR");
return true; return true;
} }
} }
@@ -78,9 +73,7 @@ internal class EACR
if (!flag) if (!flag)
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "KillNetwork Chat");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for KN chat CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for KN chat CallId (cheating)", "EACR");
return true; return true;
} }
} }
@@ -92,27 +85,14 @@ internal class EACR
case 250: // KN case 250: // KN
if (sr.BytesRemaining == 0) if (sr.BytesRemaining == 0)
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "KillNetwork");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for KN CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for KN CallId (cheating)", "EACR");
return true; return true;
} }
break; break;
case unchecked((byte)420): // 164 Sicko case unchecked((byte)420): // 164 Sicko
if (sr.BytesRemaining == 0)
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for Sickomenu RPC (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for Sickomenu RPC (cheating)", "EACR");
return true;
}
break;
case 202: // SMC
try try
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "SickoMenu");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for MMC CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for MMC CallId (cheating)", "EACR");
return true; return true;
} }
catch catch
@@ -120,7 +100,18 @@ internal class EACR
} }
break; break;
case 201: case 202: // SMC
try
{
RPCCheat(pc, "SlopMenuCrew");
return true;
}
catch
{
}
break;
case 201: // SMC Chat
try try
{ {
var firstString = sr.ReadString(); var firstString = sr.ReadString();
@@ -131,9 +122,7 @@ internal class EACR
if (!flag) if (!flag)
{ {
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true); RPCCheat(pc, "SlopMenuCrew Chat");
Logger.SendInGame($"{pc.Data.PlayerName} was banned for MMC chat CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for MMC chat CallId (cheating)", "EACR");
return true; return true;
} }
} }
@@ -150,6 +139,7 @@ internal class EACR
} }
return false; return false;
} }
public static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, byte amount) public static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, byte amount)
{ {
var Mapid = Utils.GetActiveMapId(); var Mapid = Utils.GetActiveMapId();
@@ -167,108 +157,131 @@ internal class EACR
if (systemType == SystemTypes.Sabotage) if (systemType == SystemTypes.Sabotage)
{ {
if (!player.Data.Role.IsImpostor && !player.isNew) if (!player.Data.Role.IsImpostor)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); SabotageCheat(player);
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalid sabotage (cheating)");
Logger.Info($" {player.Data.PlayerName} was banned for invalid sabotage", "EACR");
} }
} }
else if (systemType == SystemTypes.LifeSupp) else if (systemType == SystemTypes.LifeSupp)
{ {
if (Mapid != 0 && Mapid != 1 && Mapid != 3) goto YesCheat; if (Mapid != 0 && Mapid != 1 && Mapid != 3) SabotageCheat(player);
else if (amount != 64 && amount != 65) goto YesCheat; else if (amount != 64 && amount != 65) SabotageCheat(player);
} }
else if (systemType == SystemTypes.Comms) else if (systemType == SystemTypes.Comms)
{ {
if (amount == 0) if (amount == 0)
{ {
if (Mapid == 1 || Mapid == 5) goto YesCheat; if (Mapid == 1 || Mapid == 5) SabotageCheat(player);
} }
else if (amount == 64 || amount == 65 || amount == 32 || amount == 33 || amount == 16 || amount == 17) else if (amount == 64 || amount == 65 || amount == 32 || amount == 33 || amount == 16 || amount == 17)
{ {
if (!(Mapid == 1 || Mapid == 5)) goto YesCheat; if (!(Mapid == 1 || Mapid == 5)) SabotageCheat(player);
} }
else goto YesCheat; else SabotageCheat(player);
} }
else if (systemType == SystemTypes.Electrical) else if (systemType == SystemTypes.Electrical)
{ {
if (Mapid == 5) goto YesCheat; if (Mapid == 5 || amount >= 5) SabotageCheat(player);
if (amount >= 5)
{
goto YesCheat;
}
} }
else if (systemType == SystemTypes.Laboratory) else if (systemType == SystemTypes.Laboratory)
{ {
if (Mapid != 2) goto YesCheat; if (Mapid != 2) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) goto YesCheat; else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) SabotageCheat(player);
} }
else if (systemType == SystemTypes.Reactor) else if (systemType == SystemTypes.Reactor)
{ {
if (Mapid == 2 || Mapid == 4) goto YesCheat; if (Mapid == 2 || Mapid == 4) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) goto YesCheat; else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) SabotageCheat(player);
} }
else if (systemType == SystemTypes.HeliSabotage) else if (systemType == SystemTypes.HeliSabotage)
{ {
if (Mapid != 4) goto YesCheat; if (Mapid != 4) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 16 || amount == 17 || amount == 32 || amount == 33)) goto YesCheat; else if (!(amount == 64 || amount == 65 || amount == 16 || amount == 17 || amount == 32 || amount == 33)) SabotageCheat(player);
} }
else if (systemType == SystemTypes.MushroomMixupSabotage) else if (systemType == SystemTypes.MushroomMixupSabotage)
{ {
goto YesCheat; SabotageCheat(player);
} }
if (Utils.IsMeeting && MeetingHud.Instance.state != MeetingHud.MeetingStates.Animating) if (Utils.IsMeeting && MeetingHud.Instance.state != MeetingHud.MeetingStates.Animating)
{ {
Logger.SendInGame($"{player.Data.PlayerName} might have called an invalid sabotage (cheating)"); SabotageCheat(player);
Logger.Info($" {player.Data.PlayerName} might have called an invalid sabotage (cheating)", "EACR");
return true; return true;
} }
return false; return false;
YesCheat: }
public static void RPCCheat(PlayerControl player, string input)
{
if (Options.DetectBadRPC.GetBool())
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); HackingPunishment(player, $"{player.Data.PlayerName} Sent invalid RPC: {input} (hacking)");
Logger.SendInGame($"{player.Data.PlayerName} was banned for an invalid sabotage (cheating)"); }
Logger.Info($" {player.Data.PlayerName} was banned for an invalid sabotage", "EACR"); }
return true;
public static void SabotageCheat(PlayerControl player)
{
if (Options.DetectBadSabotage.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly sabotaged (hacking)");
} }
} }
public static void VentCheat(PlayerControl player, Vent __instance) public static void VentCheat(PlayerControl player, Vent __instance)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); if (Options.DetectBadVent.GetBool())
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalid venting (cheating)"); {
Logger.Info($" {player.Data.PlayerName} was banned for invalid venting", "EACR"); HackingPunishment(player, $"{player.Data.PlayerName} invalidly vented (hacking)");
}
} }
public static void PlayAnimationCheat(PlayerControl player) public static void PlayAnimationCheat(PlayerControl player)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); if (Options.DetectBadAnimation.GetBool())
Logger.SendInGame($"{player.Data.PlayerName} was banned for an invalid animation (cheating)"); {
Logger.Info($" {player.Data.PlayerName} was banned for an invalid animation", "EACR"); HackingPunishment(player, $"{player.Data.PlayerName} sent an invalid animation (hacking)");
}
} }
public static void TaskCheat(PlayerControl player) public static void TaskCheat(PlayerControl player)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); if (Options.DetectBadTask.GetBool())
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalidly completing a task (cheating)"); {
Logger.Info($" {player.Data.PlayerName} was banned for invalidly completing a task", "EACR"); HackingPunishment(player, $"{player.Data.PlayerName} invalidly completed a task (hacking)");
}
} }
public static void MurderCheat(PlayerControl player) public static void MurderCheat(PlayerControl player)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); if (Options.DetectBadKill.GetBool())
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalidly murdering a player (cheating)"); {
Logger.Info($" {player.Data.PlayerName} was banned for invalidly murdering a player", "EACR"); HackingPunishment(player, $"{player.Data.PlayerName} invalidly murdered a player (hacking)");
}
} }
public static void MeetingCheat(PlayerControl player) public static void MeetingCheat(PlayerControl player)
{ {
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true); if (Options.DetectBadMeeting.GetBool())
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalidly calling a meeting (cheating)"); {
Logger.Info($" {player.Data.PlayerName} was banned for invalidly calling a meeting", "EACR"); HackingPunishment(player, $"{player.Data.PlayerName} invalidly called a meeting (hacking)");
}
}
public static void HackingPunishment(PlayerControl player, string input)
{
if (Options.HackingPunishment.GetValue() == 0)
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
}
if (Options.HackingPunishment.GetValue() == 1)
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, false);
}
Logger.SendInGame($"{input}");
Logger.Info($" {input}", "EACR");
} }
} }
+106 -31
View File
@@ -605,25 +605,30 @@ public static class Utils
public static int fungleVotes; public static int fungleVotes;
public static int dleksVotes; public static int dleksVotes;
public static bool MapVoteActive; public static bool MapVoteActive;
public static bool DleksEnabled;
public static readonly List<byte> HasVoted = []; public static readonly List<byte> HasVoted = [];
public static void MapVote(bool dleks, bool moderator) public static void MapVote(bool moderator)
{ {
if (MapVoteActive || ModeVoteActive) return; if (MapVoteActive || ModeVoteActive) return;
DleksEnabled = dleks;
MapVoteActive = true; MapVoteActive = true;
if (dleks && moderator) Utils.ModeratorChatCommand("A map vote is active!\n\nA: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Eht Dleks\n\nType /vote 'letter' to vote.", "", false); string voteMessage = "A map vote is active!\n\n";
else if (moderator) Utils.ModeratorChatCommand("A map vote is active!\n\nA: The Skeld\nB: Mira HQ\nC: Polus\nD: The Airship\nE: The Fungle\n\nType /vote 'letter' to vote.", "", false); if (!Options.CustomizeMapVote.GetBool()) voteMessage += "A: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Dleks\n";
if (Options.IncludeSkeld.GetBool()) voteMessage += "A: Skeld\n";
if (Options.IncludeMira.GetBool()) voteMessage += "B: Mira\n";
if (Options.IncludePolus.GetBool()) voteMessage += "C: Polus\n";
if (Options.IncludeAirship.GetBool()) voteMessage += "D: Airship\n";
if (Options.IncludeFungle.GetBool()) voteMessage += "E: Fungle\n";
if (Options.IncludeDleks.GetBool()) voteMessage += "F: Dleks\n";
voteMessage += "\nType /vote 'letter' to vote.";
if (dleks && !moderator) Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A map vote is active!\n\nA: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Eht Dleks\n\nType /vote 'letter' to vote.", "", false); if (moderator) Utils.ModeratorChatCommand(voteMessage, "", false);
else if (!moderator) Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A map vote is active!\n\nA: The Skeld\nB: Mira HQ\nC: Polus\nD: The Airship\nE: The Fungle\n\nType /vote 'letter' to vote.", "", false); else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, voteMessage, "", false);
new LateTask(() => new LateTask(() =>
{ {
int highest = skeldVotes; int highest = -1;
string winner = "Skeld"; string winner = "";
byte mapId = 0; byte mapId = 0;
bool tie = false; bool tie = false;
@@ -642,16 +647,47 @@ public static class Utils
} }
} }
Check(miraVotes, "Mira HQ", 1); if (!Options.CustomizeMapVote.GetBool())
Check(polusVotes, "Polus", 2); {
Check(airshipVotes, "Airship", 4); Check(skeldVotes, "Skeld", 0);
Check(fungleVotes, "The Fungle", 5); Check(miraVotes, "Mira", 1);
if (DleksEnabled) Check(dleksVotes, "Eht Dleks", 3); Check(polusVotes, "Polus", 2);
Check(airshipVotes, "Airship", 4);
Check(fungleVotes, "Fungle", 5);
Check(dleksVotes, "Dleks", 3);
}
else
{
if (Options.IncludeSkeld.GetBool()) Check(skeldVotes, "Skeld", 0);
if (Options.IncludeMira.GetBool()) Check(miraVotes, "Mira", 1);
if (Options.IncludePolus.GetBool()) Check(polusVotes, "Polus", 2);
if (Options.IncludeAirship.GetBool()) Check(airshipVotes, "Airship", 4);
if (Options.IncludeFungle.GetBool()) Check(fungleVotes, "Fungle", 5);
if (Options.IncludeDleks.GetBool()) Check(dleksVotes, "Dleks", 3);
}
string voteResults = $"Skeld: {skeldVotes}\n" + $"Mira: {miraVotes}\n" + $"Polus: {polusVotes}\n" + $"Airship: {airshipVotes}\n" + $"Fungle: {fungleVotes}"; string voteResults = "";
if (DleksEnabled) voteResults += $"\nEht Dleks: {dleksVotes}"; if (!Options.CustomizeMapVote.GetBool())
{
voteResults += $"Skeld: {skeldVotes}\n";
voteResults += $"Mira: {miraVotes}\n";
voteResults += $"Polus: {polusVotes}\n";
voteResults += $"Airship: {airshipVotes}\n";
voteResults += $"Fungle: {fungleVotes}\n";
voteResults += $"Dleks: {dleksVotes}\n";
}
else
{
if (Options.IncludeSkeld.GetBool()) voteResults += $"Skeld: {skeldVotes}\n";
if (Options.IncludeMira.GetBool()) voteResults += $"Mira: {miraVotes}\n";
if (Options.IncludePolus.GetBool()) voteResults += $"Polus: {polusVotes}\n";
if (Options.IncludeAirship.GetBool()) voteResults += $"Airship: {airshipVotes}\n";
if (Options.IncludeFungle.GetBool()) voteResults += $"Fungle: {fungleVotes}\n";
if (Options.IncludeDleks.GetBool()) voteResults += $"Dleks: {dleksVotes}\n";
}
voteResults = voteResults.TrimEnd();
if (highest == 0) if (highest <= 0)
{ {
ModeratorChatCommand("Lol, no one voted. Hooray for democracy?", "", false); ModeratorChatCommand("Lol, no one voted. Hooray for democracy?", "", false);
} }
@@ -663,7 +699,7 @@ public static class Utils
{ {
ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false); ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
if (winner == "Eht Dleks") if (winner == "Dleks")
{ {
CreateOptionsPickerPatch.ApplyDleks(Utils.isHideNSeek); CreateOptionsPickerPatch.ApplyDleks(Utils.isHideNSeek);
} }
@@ -701,13 +737,22 @@ public static class Utils
ModeVoteActive = true; ModeVoteActive = true;
if (moderator) Utils.ModeratorChatCommand("A Gamemode vote is active!\n\nA: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n\nType /vote 'letter' to vote.", "", false); string voteMessage = "A Gamemode vote is active!\n\n";
else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A Gamemode vote is active!\n\nA: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n\nType /vote 'letter' to vote.", "", false); if (!Options.CustomizeModeVote.GetBool()) voteMessage += "A: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n";
if (Options.IncludeStandard.GetBool()) voteMessage += "A: None\n";
if (Options.IncludeNoKillCooldown.GetBool()) voteMessage += "B: No Kill Cooldown\n";
if (Options.IncludeSpeedrun.GetBool()) voteMessage += "C: Speedrun\n";
if (Options.IncludeShiftAndSeek.GetBool()) voteMessage += "D: SnS\n";
if (Options.IncludePoofAndSeek.GetBool()) voteMessage += "E: PnS\n";
voteMessage += "\nType /vote 'letter' to vote.";
if (moderator) Utils.ModeratorChatCommand(voteMessage, "", false);
else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, voteMessage, "", false);
new LateTask(() => new LateTask(() =>
{ {
int highest = standardVotes; int highest = -1;
string winner = "None"; string winner = "";
byte modeId = 0; byte modeId = 0;
bool tie = false; bool tie = false;
@@ -726,13 +771,43 @@ public static class Utils
} }
} }
Check(noKillCooldownVotes, "0 Kill Cooldown", 0); if (!Options.CustomizeModeVote.GetBool())
Check(speedrunVotes, "Speedrun", 2); {
Check(shiftAndSeekVotes, "Shift and Seek", 1); Check(standardVotes, "None", 0);
Check(poofAndSeekVotes, "Poof and Seek", 3); Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
Check(speedrunVotes, "Speedrun", 2);
Check(shiftAndSeekVotes, "Shift and Seek", 1);
Check(poofAndSeekVotes, "Poof and Seek", 3);
}
else
{
if (Options.IncludeStandard.GetBool()) Check(standardVotes, "None", 0);
if (Options.IncludeNoKillCooldown.GetBool()) Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
if (Options.IncludeSpeedrun.GetBool()) Check(speedrunVotes, "Speedrun", 2);
if (Options.IncludeShiftAndSeek.GetBool()) Check(shiftAndSeekVotes, "Shift and Seek", 1);
if (Options.IncludePoofAndSeek.GetBool()) Check(poofAndSeekVotes, "Poof and Seek", 3);
}
string voteResults = $"Standard: {standardVotes}\n" + $"No Kill Cooldown: {noKillCooldownVotes}\n" + $"Speedrun: {speedrunVotes}\n" + $"Shift and Seek: {shiftAndSeekVotes}\n" + $"Poof and Seek: {poofAndSeekVotes}"; string voteResults = "";
if (highest == 0) if (!Options.CustomizeModeVote.GetBool())
{
voteResults += $"Standard: {standardVotes}\n";
voteResults += $"No Kill Cooldown: {noKillCooldownVotes}\n";
voteResults += $"Speedrun: {speedrunVotes}\n";
voteResults += $"Shift and Seek: {shiftAndSeekVotes}\n";
voteResults += $"Poof and Seek: {poofAndSeekVotes}\n";
}
else
{
if (Options.IncludeStandard.GetBool()) voteResults += $"Standard: {standardVotes}\n";
if (Options.IncludeNoKillCooldown.GetBool()) voteResults += $"No Kill Cooldown: {noKillCooldownVotes}\n";
if (Options.IncludeSpeedrun.GetBool()) voteResults += $"Speedrun: {speedrunVotes}\n";
if (Options.IncludeShiftAndSeek.GetBool()) voteResults += $"Shift and Seek: {shiftAndSeekVotes}\n";
if (Options.IncludePoofAndSeek.GetBool()) voteResults += $"Poof and Seek: {poofAndSeekVotes}\n";
}
voteResults = voteResults.TrimEnd();
if (highest <= 0)
{ {
ModeratorChatCommand("We have a winner! Just kidding. No one voted.", "", false); ModeratorChatCommand("We have a winner! Just kidding. No one voted.", "", false);
} }
@@ -744,10 +819,10 @@ public static class Utils
{ {
ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false); ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
Options.Gamemode.SetValue(modeId); Options.Gamemode.SetValue(modeId);
if (winner == "0 Kill Cooldown") if (winner == "0 Kill Cooldown")
{ {
Main.NormalOptions.KillCooldown = 0.01f; Main.NormalOptions.KillCooldown = 0.001f;
} }
} }
@@ -756,7 +831,7 @@ public static class Utils
speedrunVotes = 0; speedrunVotes = 0;
shiftAndSeekVotes = 0; shiftAndSeekVotes = 0;
poofAndSeekVotes = 0; poofAndSeekVotes = 0;
HasVoted.Clear(); HasModeVoted.Clear();
ModeVoteActive = false; ModeVoteActive = false;
}, Options.ModeVoteDuration.GetInt(), "ModePoll"); }, Options.ModeVoteDuration.GetInt(), "ModePoll");
+119 -63
View File
@@ -36,6 +36,24 @@ internal static class ChatControllerUpdatePatch
__instance.quickChatField.background.color = Color.white; __instance.quickChatField.background.color = Color.white;
__instance.quickChatField.text.color = Color.black; __instance.quickChatField.text.color = Color.black;
} }
if (Main.DisableChatModifier.Value && !__instance.freeChatField.textArea.allowAllCharacters)
{
__instance.freeChatField.textArea.AllowSymbols = false;
__instance.freeChatField.textArea.AllowEmail = false;
__instance.freeChatField.textArea.characterLimit = 100;
}
if (!Main.DisableChatModifier.Value)
{
if (__instance.timeSinceLastMessage < 0.9f)
{
__instance.timeSinceLastMessage = 0.9f;
}
__instance.freeChatField.textArea.AllowSymbols = true;
__instance.freeChatField.textArea.AllowEmail = true;
__instance.freeChatField.textArea.characterLimit = 120;
}
} }
} }
@@ -418,19 +436,7 @@ internal static class SendChatPatch
{ {
if (Utils.IsLobby) if (Utils.IsLobby)
{ {
Utils.MapVote(false, false); Utils.MapVote(false);
__instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty);
return false;
}
}
if (text == "/allmapvote")
{
if (Utils.IsLobby)
{
Utils.MapVote(true, false);
__instance.freeChatField.textArea.Clear(); __instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty); __instance.freeChatField.textArea.SetText(string.Empty);
@@ -452,77 +458,87 @@ internal static class SendChatPatch
if (text == "/vote a") if (text == "/vote a")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true; if (Utils.MapVoteActive)
if (Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId))
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.skeldVotes++; Utils.skeldVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.standardVotes++; Utils.standardVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/vote b") if (text == "/vote b")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.miraVotes++; Utils.miraVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.noKillCooldownVotes++; Utils.noKillCooldownVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/vote c") if (text == "/vote c")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.polusVotes++; Utils.polusVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.speedrunVotes++; Utils.speedrunVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/vote d") if (text == "/vote d")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.airshipVotes++; Utils.airshipVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.shiftAndSeekVotes++; Utils.shiftAndSeekVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/vote e") if (text == "/vote e")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.fungleVotes++; Utils.fungleVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.poofAndSeekVotes++; Utils.poofAndSeekVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/vote f") if (text == "/vote f")
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true; if (Utils.MapVoteActive)
if (Utils.MapVoteActive && Utils.DleksEnabled)
{ {
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.dleksVotes++; Utils.dleksVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
} }
if (text == "/l" || text == "/lastgame") if (text == "/l" || text == "/lastgame")
@@ -575,7 +591,7 @@ internal static class SendChatPatch
switch (Options.Gamemode.GetValue()) switch (Options.Gamemode.GetValue())
{ {
case 0: case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f) 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 can't kill after a game starts for 5 seconds", "", false);
} }
@@ -874,16 +890,7 @@ public static class RPCHandlerPatch
if (Utils.IsLobby) if (Utils.IsLobby)
{ {
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return; if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
Utils.MapVote(false, true); Utils.MapVote(true);
}
}
if (text == "/allmapvote")
{
if (Utils.IsLobby)
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
Utils.MapVote(true, true);
} }
} }
@@ -895,80 +902,90 @@ public static class RPCHandlerPatch
Utils.ModeVote(true); Utils.ModeVote(true);
} }
} }
if (text == "/vote a") if (text == "/vote a")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.skeldVotes++; Utils.skeldVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.standardVotes++; Utils.standardVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/vote b") if (text == "/vote b")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.miraVotes++; Utils.miraVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.noKillCooldownVotes++; Utils.noKillCooldownVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/vote c") if (text == "/vote c")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.polusVotes++; Utils.polusVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.speedrunVotes++; Utils.speedrunVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/vote d") if (text == "/vote d")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.airshipVotes++; Utils.airshipVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.shiftAndSeekVotes++; Utils.shiftAndSeekVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/vote e") if (text == "/vote e")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive) if (Utils.MapVoteActive)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.fungleVotes++; Utils.fungleVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (Utils.ModeVoteActive) else if (Utils.ModeVoteActive)
{ {
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.poofAndSeekVotes++; Utils.poofAndSeekVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/vote f") if (text == "/vote f")
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return; if (Utils.MapVoteActive)
if (Utils.MapVoteActive && Utils.DleksEnabled)
{ {
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.dleksVotes++; Utils.dleksVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
Utils.HasVoted.Add(__instance.Data.PlayerId);
} }
if (text == "/l" || text == "/lastgame") if (text == "/l" || text == "/lastgame")
@@ -1018,7 +1035,7 @@ public static class RPCHandlerPatch
switch (Options.Gamemode.GetValue()) switch (Options.Gamemode.GetValue())
{ {
case 0: case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f) 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 can't kill after a game starts for 5 seconds", "", false);
} }
@@ -1063,4 +1080,43 @@ public static class RPCHandlerPatch
} }
} }
} }
}
[HarmonyPatch(typeof(FreeChatInputField), nameof(FreeChatInputField.UpdateCharCount))]
public static class FreeChatInputFieldUpdateCharCountPatch
{
public static void Postfix(FreeChatInputField __instance)
{
if (!Main.DisableChatModifier.Value)
{
__instance.charCountText.SetText($"{__instance.textArea.text.Length}/120");
}
}
}
// https://github.com/astra1dev/AUnlocker/blob/main/src/Patches/ChatPatches.cs
[HarmonyPatch(typeof(TextBoxTMP), nameof(TextBoxTMP.Update))]
public static class TextBoxTMPUpdatePatch
{
public static void Postfix(TextBoxTMP __instance)
{
if (!Main.DisableChatModifier.Value && __instance.hasFocus)
{
if (!Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.RightControl)) return;
if (Input.GetKeyDown(KeyCode.C))
{
GUIUtility.systemCopyBuffer = __instance.text;
}
if (Input.GetKeyDown(KeyCode.V))
{
__instance.SetText(__instance.text + GUIUtility.systemCopyBuffer);
}
if (Input.GetKeyDown(KeyCode.X))
{
GUIUtility.systemCopyBuffer = __instance.text;
__instance.SetText("");
}
}
}
} }
+4
View File
@@ -17,6 +17,7 @@ namespace AmongUsRevamped
private static ClientOptionItem DisableInfoWhenDead; private static ClientOptionItem DisableInfoWhenDead;
private static ClientOptionItem DisableCommandHelper; private static ClientOptionItem DisableCommandHelper;
private static ClientOptionItem DisableCompatibilityWarning; private static ClientOptionItem DisableCompatibilityWarning;
private static ClientOptionItem DisableChatModifier;
public static void Postfix(OptionsMenuBehaviour __instance) public static void Postfix(OptionsMenuBehaviour __instance)
{ {
@@ -64,6 +65,9 @@ namespace AmongUsRevamped
if (DisableCompatibilityWarning == null || DisableCompatibilityWarning.ToggleButton == null) if (DisableCompatibilityWarning == null || DisableCompatibilityWarning.ToggleButton == null)
DisableCompatibilityWarning = ClientOptionItem.Create(Translator.Get("disableCompatibilityWarning"), Main.DisableCompatibilityWarning, __instance); DisableCompatibilityWarning = ClientOptionItem.Create(Translator.Get("disableCompatibilityWarning"), Main.DisableCompatibilityWarning, __instance);
if (DisableChatModifier == null || DisableChatModifier.ToggleButton == null)
DisableChatModifier = ClientOptionItem.Create(Translator.Get("disableChatModifier"), Main.DisableChatModifier, __instance);
} }
} }
+17 -4
View File
@@ -62,7 +62,7 @@ namespace AmongUsRevamped
var credentials = UnityEngine.Object.Instantiate(__instance.text); var credentials = UnityEngine.Object.Instantiate(__instance.text);
credentials.text = Main.CredentialsText; credentials.text = Main.CredentialsText;
credentials.alignment = TextAlignmentOptions.Right; credentials.alignment = TextAlignmentOptions.Right;
credentials.transform.position = new Vector3(1f, 2.67f, -2f); credentials.transform.position = new Vector3(-4.1f, -2.68f, -2f);
credentials.fontSize = credentials.fontSizeMax = credentials.fontSizeMin = 2f; credentials.fontSize = credentials.fontSizeMax = credentials.fontSizeMin = 2f;
ErrorText.Create(__instance.text); ErrorText.Create(__instance.text);
@@ -181,6 +181,7 @@ namespace AmongUsRevamped
private static PassiveButton template; private static PassiveButton template;
private static PassiveButton discordButton; private static PassiveButton discordButton;
private static PassiveButton gitHubButton; private static PassiveButton gitHubButton;
private static PassiveButton latestButton;
private static PassiveButton animationSceneButton; private static PassiveButton animationSceneButton;
private static Transform buttonParent; private static Transform buttonParent;
public static void Postfix(MainMenuManager __instance) public static void Postfix(MainMenuManager __instance)
@@ -195,7 +196,7 @@ namespace AmongUsRevamped
discordButton = CreateButton( discordButton = CreateButton(
__instance, __instance,
"DiscordButton", "DiscordButton",
new(2.1f, 4.05f, 1f), new(2.3f, 4.05f, 1f),
new(88, 101, 242, byte.MaxValue), new(88, 101, 242, byte.MaxValue),
new(148, 161, byte.MaxValue, byte.MaxValue), new(148, 161, byte.MaxValue, byte.MaxValue),
() => Application.OpenURL("https://discord.gg/83Zhzhyhya"), () => Application.OpenURL("https://discord.gg/83Zhzhyhya"),
@@ -207,13 +208,25 @@ namespace AmongUsRevamped
gitHubButton = CreateButton( gitHubButton = CreateButton(
__instance, __instance,
"GitHubButton", "GitHubButton",
new(3.8f, 4.05f, 1f), new(4.0f, 4.05f, 1f),
new(153, 153, 153, byte.MaxValue), new(153, 153, 153, byte.MaxValue),
new(209, 209, 209, byte.MaxValue), new(209, 209, 209, byte.MaxValue),
() => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped"), () => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped"),
"GitHub"); "GitHub");
} }
if (latestButton == null)
{
latestButton = CreateButton(
__instance,
"LatestButton",
new(5.7f, 4.05f, 1f),
new(255, 215, 0, byte.MaxValue),
new(255, 255, 30, byte.MaxValue),
() => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped/releases/latest"),
"Latest");
}
if (animationSceneButton == null) if (animationSceneButton == null)
{ {
animationSceneButton = CreateButton( animationSceneButton = CreateButton(
@@ -322,7 +335,7 @@ namespace AmongUsRevamped
button.name = name; button.name = name;
button.transform.localPosition = localPosition; button.transform.localPosition = localPosition;
if (name == "GitHubButton" || name == "DiscordButton") if (name == "GitHubButton" || name == "DiscordButton" || name == "LatestButton")
{ {
button.transform.localScale = new Vector3(0.8f, 1f, 1f); button.transform.localScale = new Vector3(0.8f, 1f, 1f);
} }
+1 -1
View File
@@ -51,7 +51,7 @@ class NormalGameEndChecker
public static void CheckWinnerText(string Winner) public static void CheckWinnerText(string Winner)
{ {
string impostorList = string.Join(", ", imps.Select(p => p.Data.PlayerName)); string impostorList = string.Join(", ", imps.Select(p => p.Data.PlayerName));
string impostorString = impostorList != "" ? $"\n\n Impostors: {impostorList}" : ""; string impostorString = impostorList != "" ? $"\n\nImpostors: {impostorList}" : "";
if (!canUpdateWinnerText) return; if (!canUpdateWinnerText) return;
+4 -4
View File
@@ -90,14 +90,14 @@ internal static class CoShowIntroPatch
} }
} }
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)) if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f))
{ {
Main.NormalOptions.KillCooldown = 5f; Main.NormalOptions.KillCooldown = 5f;
OptionManager.SyncGameOptions(); OptionManager.SyncGameOptions();
_ = new LateTask(() => _ = new LateTask(() =>
{ {
Main.NormalOptions.KillCooldown = 0.01f; Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions(); OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled"); }, 13f, "NoKcdEnabled");
} }
@@ -111,7 +111,7 @@ internal static class CoShowIntroPatch
_ = new LateTask(() => _ = new LateTask(() =>
{ {
Main.NormalOptions.KillCooldown = 0.01f; Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions(); OptionManager.SyncGameOptions();
}, 18f, "NoKcdEnabled"); }, 18f, "NoKcdEnabled");
} }
@@ -122,7 +122,7 @@ internal static class CoShowIntroPatch
_ = new LateTask(() => _ = new LateTask(() =>
{ {
Main.NormalOptions.KillCooldown = 0.01f; Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions(); OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled"); }, 13f, "NoKcdEnabled");
} }
+1 -8
View File
@@ -50,16 +50,9 @@ internal static class OnGameJoinedPatch
{ {
new LateTask(() => new LateTask(() =>
{ {
Utils.MapVote(false, true); Utils.MapVote(true);
}, Options.TimeBeforeMapPoll.GetInt(), "AutoMapPoll"); }, Options.TimeBeforeMapPoll.GetInt(), "AutoMapPoll");
} }
if (Options.AutomaticAllMapPoll.GetBool())
{
new LateTask(() =>
{
Utils.MapVote(true, true);
}, Options.TimeBeforeAllMapPoll.GetInt(), "AutoMapPoll");
}
if (Options.AutomaticModePoll.GetBool()) if (Options.AutomaticModePoll.GetBool())
{ {
new LateTask(() => new LateTask(() =>
+2 -2
View File
@@ -19,7 +19,7 @@ public static class NumberOption_Increase
{ {
if (__instance.Title == StringNames.GameKillCooldown) if (__instance.Title == StringNames.GameKillCooldown)
{ {
if (__instance.Value == 0.01f) if (__instance.Value == 0.001f)
{ {
__instance.Value = 0.5f; __instance.Value = 0.5f;
__instance.UpdateValue(); __instance.UpdateValue();
@@ -114,7 +114,7 @@ public static class NumberOption_Initialize
case StringNames.GameKillCooldown: case StringNames.GameKillCooldown:
__instance.Increment = 0.5f; __instance.Increment = 0.5f;
__instance.ValidRange = new FloatRange(0.01f, 900f); __instance.ValidRange = new FloatRange(0.001f, 900f);
break; break;
case StringNames.GamePlayerSpeed: case StringNames.GamePlayerSpeed:
+8 -2
View File
@@ -182,14 +182,20 @@ class PlayerControlCompleteTaskPatch
__instance.Data.RoleType == RoleTypes.Phantom || __instance.Data.RoleType == RoleTypes.Phantom ||
__instance.Data.RoleType == RoleTypes.Viper) __instance.Data.RoleType == RoleTypes.Viper)
{ {
EACR.TaskCheat(__instance); if (__instance != PlayerControl.LocalPlayer)
{
EACR.TaskCheat(__instance);
}
} }
playerTasksCompleted[__instance.PlayerId]++; playerTasksCompleted[__instance.PlayerId]++;
if (playerTasksCompleted[__instance.PlayerId] > __instance.Data.Tasks.Count) if (playerTasksCompleted[__instance.PlayerId] > __instance.Data.Tasks.Count)
{ {
EACR.TaskCheat(__instance); if (__instance != PlayerControl.LocalPlayer)
{
EACR.TaskCheat(__instance);
}
} }
Logger.Info($" {__instance.Data.PlayerName} completed {idx}", "TaskPatch"); Logger.Info($" {__instance.Data.PlayerName} completed {idx}", "TaskPatch");
+22 -7
View File
@@ -104,8 +104,7 @@ public static class MessageReaderUpdateSystemPatch
public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] SystemTypes systemType, [HarmonyArgument(1)] PlayerControl player, [HarmonyArgument(2)] MessageReader reader) public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] SystemTypes systemType, [HarmonyArgument(1)] PlayerControl player, [HarmonyArgument(2)] MessageReader reader)
{ {
if (systemType is if (systemType is
SystemTypes.Ventilation SystemTypes.Security
or SystemTypes.Security
or SystemTypes.Decontamination or SystemTypes.Decontamination
or SystemTypes.Decontamination2 or SystemTypes.Decontamination2
or SystemTypes.Decontamination3 or SystemTypes.Decontamination3
@@ -113,13 +112,29 @@ public static class MessageReaderUpdateSystemPatch
if (player.Data.ClientId == AmongUsClient.Instance.HostId) return true; if (player.Data.ClientId == AmongUsClient.Instance.HostId) return true;
var amount = MessageReader.Get(reader).ReadByte(); // Thanks to D1GQ for finding.
if (EACR.RpcUpdateSystemCheck(player, systemType, amount)) if (systemType == SystemTypes.Ventilation)
{ {
Logger.Info("EACR patched Sabotage RPC", "MessageReaderUpdateSystemPatch"); _ = reader.ReadUInt16();
return false; 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;
} }
else return true;
} }
} }
+6 -4
View File
@@ -36,7 +36,7 @@
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>**** <img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
‎ ‎
# 🎮 Features (v2.0.4): # 🎮 Features (v2.1.0):
## <b>♠️ Client Side settings:</b> ## <b>♠️ Client Side settings:</b>
- Toggle Game Master (Spectator) - Toggle Game Master (Spectator)
@@ -45,6 +45,7 @@
- Toggle Lobby Music - Toggle Lobby Music
- Toggle Info When Dead - Toggle Info When Dead
- Toggle Command Helper - Toggle Command Helper
- Toggle Chat Modifications
## <b>⚙️ Technical settings:</b> ## <b>⚙️ Technical settings:</b>
- Advanced AFK Detection system - Advanced AFK Detection system
- Kick/Ban players under/above a certain level - Kick/Ban players under/above a certain level
@@ -77,7 +78,7 @@
- Shield player who died first - Shield player who died first
- Hide and Seek: Custom Seeker count - Hide and Seek: Custom Seeker count
## <b>🏆 Custom Gamemodes:</b> ## <b>🏆 Custom Gamemodes:</b>
- 0 Kill Cooldown -> Set Kill Cooldown to 0.01 - 0Kcd -> Set Kill Cooldown to 0.0
- Shift and Seek - Shift and Seek
- Poof and Seek - Poof and Seek
- Speedrun - Speedrun
@@ -90,7 +91,6 @@
- Detect invalid kills - Detect invalid kills
- Detect immortality cheats - Detect immortality cheats
- Block attempted votekicks - Block attempted votekicks
- These are all enabled by default
## <b>❓ Other Improvements:</b> ## <b>❓ Other Improvements:</b>
- Lanuage support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish - Lanuage support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
- Select a language in Language/YourLanguage.txt - Select a language in Language/YourLanguage.txt
@@ -104,6 +104,8 @@
- Higher and more accurate Option ranges - Higher and more accurate Option ranges
- Always visible lobby timer - Always visible lobby timer
- Access experimental animation test scene - Access experimental animation test scene
- Faster chat cooldown (2.2s)
- 120 character chat limit, copy pasting
- <b>🎉 And this all works in public lobbies!</b> - <b>🎉 And this all works in public lobbies!</b>
### Hotkeys ### Hotkeys
@@ -151,10 +153,10 @@
### :star: [AUnlocker](https://github.com/astra1dev/AUnlocker) ### :star: [AUnlocker](https://github.com/astra1dev/AUnlocker)
> - Original NumberOptionsPatch > - Original NumberOptionsPatch
> - Always Show Lobby Timer > - Always Show Lobby Timer
> - Copy Pasting & Character Increase
### :star: [EHR (Formerly TOHE+)](https://github.com/Gurge44/EndlessHostRoles) ### :star: [EHR (Formerly TOHE+)](https://github.com/Gurge44/EndlessHostRoles)
> - Task Patching > - Task Patching
### :star: [TOH](https://github.com/tukasa0001/TownOfHost) : ### :star: [TOH](https://github.com/tukasa0001/TownOfHost) :
> - Ban Manager
> - OptionHolder & ClientOptionItem > - OptionHolder & ClientOptionItem
### :star: [Super New Roles](https://github.com/ykundesu/SuperNewRoles) (SNR): ### :star: [Super New Roles](https://github.com/ykundesu/SuperNewRoles) (SNR):
> - Credentials menu > - Credentials menu
+36 -6
View File
@@ -39,7 +39,7 @@
"tabGroupAutomation": "Automation", "tabGroupAutomation": "Automation",
"autoSendGameInfo": "Automatically send winner info", "autoSendGameInfo": "Automatically send winner info",
"autoRejoinLobby": "Auto Rejoin Lobby", "autoRejoinLobby": "Automatically Rejoin Lobby",
"tabGroupAutostart": "Autohost", "tabGroupAutostart": "Autohost",
"autoStartTimer": "Countdown For Auto Start", "autoStartTimer": "Countdown For Auto Start",
@@ -159,7 +159,7 @@
"disableFungleVital": "Disable Fungle Vitals", "disableFungleVital": "Disable Fungle Vitals",
"tabGroupTasks": "Tasks", "tabGroupTasks": "Tasks",
"allPlayersSameTasks": "Everyone has same tasks", "allPlayersSameTasks": "Everyone Has Same Tasks",
"overrideTaskSettings": "Disable Tasks", "overrideTaskSettings": "Disable Tasks",
"taskPercentNeededToWin": "% Tasks completed for crewmates to win", "taskPercentNeededToWin": "% Tasks completed for crewmates to win",
@@ -252,7 +252,7 @@
"disableSubmitScan": "Disable Submit Scan", "disableSubmitScan": "Disable Submit Scan",
"disableUploadData": "Disable Upload Data", "disableUploadData": "Disable Upload Data",
"allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r, /gm</b>\nSend current mode description.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sns2</b>\nSend extended Shift and Seek mode description\n<b>/pns, /poofandseek</b>\nSend Poof and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.\n\n<b>/seeker {name}</b>\nForce someone as Seeker in HnS.\n<b>/seekers</b>\nShow forced seeker list.\n<b>/clearseeker</b>\nClear forced seeker list.\n\n<b>/mapvote</b>\nStarts a map vote containing default maps.\n<b>/allmapvote</b>\nStarts a map vote that includes Eht Dleks.\n<b>/gmvote</b>\nStarts a gamemode vote.", "allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r</b>\nSend current mode description.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sns2</b>\nSend extended Shift and Seek mode description\n<b>/pns, /poofandseek</b>\nSend Poof and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip /removemoderator /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.\n\n<b>/seeker {name}</b>\nForce someone as Seeker in HnS.\n<b>/seekers</b>\nShow forced Seeker list.\n<b>/clearseeker</b>\nClear forced Seeker list.\n\n<b>/mapvote</b>\nStarts a customizable map vote maps.\n<b>/gmvote</b>\nStarts a customizable gamemode vote.\n\n<b>/private</b>\nSets lobby to private.\n<b>/public</b>\nSets lobby to public.",
"translationReloaded": "Your file has successfully been reset.\nTo apply all changes, restart your game.", "translationReloaded": "Your file has successfully been reset.\nTo apply all changes, restart your game.",
@@ -308,9 +308,9 @@
"seekerDesc": "Adds player as Seeker in HnS.", "seekerDesc": "Adds player as Seeker in HnS.",
"seekersDesc": "Shows all manually selected Seekers.", "seekersDesc": "Shows all manually selected Seekers.",
"clearSeekerDesc": "Clears the manual Seeker list.", "clearSeekerDesc": "Clears the manual Seeker list.",
"mapVoteDesc": "Starts a vote between the 5 core maps.", "mapVoteDesc": "Starts a vote between selected maps.",
"allMapVoteDesc": "Starts a vote between all 6 maps, including Eht Dleks.", "allMapVoteDesc": "Starts a vote between all 6 maps, including Eht Dleks.",
"modeVoteDesc": "Starts a vote between all gamemodes.", "modeVoteDesc": "Starts a vote between selected gamemodes.",
"privateDesc": "Changes lobby visibility to private.", "privateDesc": "Changes lobby visibility to private.",
"publicDesc": "Changes lobby visibility to public.", "publicDesc": "Changes lobby visibility to public.",
@@ -365,5 +365,35 @@
"pnsDisableCloseDoor": "Disable PnS Door Sabotages", "pnsDisableCloseDoor": "Disable PnS Door Sabotages",
"tabGroupPNS": "Poof and Seek", "tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For", "badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
"snsImpostorCanVent": "Impostors Can Vent" "snsImpostorCanVent": "Impostors Can Vent",
"tabGroupAnticheat": "Anticheat",
"hackingPunishment": "Hacking Punishment",
"detectBadRPC": "Detect Invalid RPC's",
"detectBadSabotage": "Detect Invalid Sabotages",
"detectBadVent": "Detect Invalid Venting",
"detectBadTask": "Detect Invalid Task Completions",
"detectBadKill": "Detect Invalid Kills",
"detectBadAnimation": "Detect Invalid Animations",
"detectBadMeeting": "Detect Invalid Meetings",
"customizeMapVote": "Customize Map Votes",
"includeSkeld": "Include Skeld",
"includeMira": "Include Mira",
"includePolus": "Include Polus",
"includeAirship": "Include Airship",
"includeFungle": "Include Fungle",
"includeDleks": "Include Dleks",
"customizeModeVote": "Customize Gamemode Votes",
"includeStandard": "Include Standard",
"includeNoKillCooldown": "Include 0 Kill Cooldown",
"includeShiftAndSeek": "Include Shift And Seek",
"includePoofAndSeek": "Include Poof And Seek",
"includeSpeedrun": "Include Speedrun",
"tabGroupGameplayMapModifications": "Map Modifications",
"disableChatModifier": "Disable Chat Modifications"
} }
+155 -188
View File
@@ -1,46 +1,42 @@
{ {
"LanguageID": "1", "LanguageID": "1",
"gameMaster": "Spettatore", "gameMaster": "Spettatore",
"showFPS": "Mostra FPS", "showFPS": "Mostra FPS",
"autoStart": "Avvio Automatico", "autoStart": "Avvio Automatico",
"enableDarkTheme": "Abilita Tema Scuro", "enableDarkTheme": "Abilita Tema Scuro",
"enableLobbyMusic": "Musica della Lobby", "enableLobbyMusic": "Musica della Lobby",
"disableInfoWhenDead": "Nascondi Informazioni Dopo la Morte", "disableInfoWhenDead": "Nascondi Informazioni Dopo la Morte",
"disableCommandHelper": "Disabilita Aiutante Comandi", "disableCommandHelper": "Disabilita Aiutante dei Comandi",
"disableCompatibilityWarning": "Disabilita Avviso di Compatibilità", "disableCompatibilityWarning": "Disabilita Avviso di Compatibilità",
"cancelStartCountdown": "Conto alla rovescia per l'avvio annullato",
"cancelStartCountdown": "Conto alla rovescia annullato", "invalidFriendCodeKick": "{0} è stato espulso a causa di un Codice Amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato a causa di un Codice Amico non valido",
"invalidFriendCodeKick": "{0} è stato kickato per un Codice Amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato per un Codice Amico non valido",
"language": "Lingua (Richiede Riavvio)", "language": "Lingua (Richiede Riavvio)",
"gamemode": "Modalità", "gamemode": "Modalità",
"tabGroupMain": "Moderazione", "tabGroupMain": "Moderazione",
"kickLowLevelPlayer": "Kicka Giocatori Sotto il Livello", "kickLowLevelPlayer": "Espelli Giocatori Sotto il Livello",
"tempBanLowLevelPlayer": "Banna invece di kickare", "tempBanLowLevelPlayer": "Banna invece di espellere",
"dontKickLevelOnes": "Non kickare Giocatori Liv.1 Nelle Lobby Glitchate", "dontKickLevelOnes": "Non espellere i Giocatori di Liv. 1 Nelle Lobby Glitchate",
"kickInvalidFriendCodes": "Kicka Codici Amico Non Validi (Vuoti)", "kickInvalidFriendCodes": "Espelli Codici Amico Non Validi (Vuoti)",
"tempBanInvalidFriendCodes": "Banna invece di kickare", "tempBanInvalidFriendCodes": "Banna invece di espellere",
"deniedWordsToKick": "Parole Vietate Inviate Per Kickare il Giocatore", "deniedWordsToKick": "Parole Vietate Inviate Per Espellere il Giocatore",
"moderatorCanUseCommand": "I Moderatori Possono Usare i Comandi", "moderatorCanUseCommand": "I Moderatori Possono Usare i Comandi",
"autoKickStart": "Kicka Giocatori Che Dicono Start", "autoKickStart": "Espelli i Giocatori Che Dicono Start",
"autoKickStartAsBan": "Banna invece di kickare", "autoKickStartAsBan": "Banna invece di espellere",
"autoKickStartStrength": "Modalità di rilevamento rigorosa", "autoKickStartStrength": "Modalità di rilevamento rigorosa",
"tabGroupAutomation": "Automazione", "tabGroupAutomation": "Automazione",
"autoSendGameInfo": "Invia automaticamente informazioni sui vincitori", "autoSendGameInfo": "Invia automaticamente informazioni sui vincitori",
"autoRejoinLobby": "Rientra automaticamente nella lobby", "autoRejoinLobby": "Rientra automaticamente nella lobby",
"autoStartTimer": "Conto alla rovescia Avvio Automatico", "autoStartTimer": "Conto alla rovescia Per l'Avvio Automatico",
"waitAutoStart": "Avvio Automatico Dopo", "waitAutoStart": "Avvio Automatico Dopo",
"playerAutoStart": "Giocatori Necessari Per Avvio Automatico", "playerAutoStart": "Giocatori Necessari Per l'Avvio Automatico",
"enableJoinMessages": "Abilita Messaggio di Benvenuto", "enableJoinMessages": "Abilita Messaggi di Benvenuto",
"messagePerPlayerNum": "Messaggio Ogni # Ingressi", "messagePerPlayerNum": "Messaggio Ogni # Ingressi",
"tabGroupMisc": "Sperimentale", "tabGroupMisc": "Sperimentale",
"startCountdown": "Conto alla rovescia Predefinito", "startCountdown": "Conto alla Rovescia Per l'Avvio Predefinito",
"colorCommandLevel": "Chi Può Usare i Comandi Colore", "colorCommandLevel": "Chi Può usare i Comandi Colore",
"allowFortegreen": "Consenti Colore Fortegreen", "allowFortegreen": "Consenti Colore Fortegreen",
"noGameEnd": "Nessuna Fine Partita", "noGameEnd": "Nessuna Fine Partita",
"tabGroupAccess": "Livelli di Accesso", "tabGroupAccess": "Livelli di Accesso",
"slashColorCmd": "Chi Può Usare /color", "slashColorCmd": "Chi Può Usare /color",
"slashRolesAndGamemodeCmd": "Chi Può Usare /r & Templates", "slashRolesAndGamemodeCmd": "Chi Può Usare /r & Templates",
@@ -48,22 +44,19 @@
"slashKickCmd": "Chi Può Usare /kick & /ckick", "slashKickCmd": "Chi Può Usare /kick & /ckick",
"slashBanCmd": "Chi Può Usare /ban & /cban", "slashBanCmd": "Chi Può Usare /ban & /cban",
"slashStartAndEndGameCmd": "Chi Può Usare /startgame & /endgame", "slashStartAndEndGameCmd": "Chi Può Usare /startgame & /endgame",
"tabGroupCrewmate": "Ruoli Astronauti", "tabGroupCrewmate": "Ruoli Astronauti",
"tabGroupNeutral": "Ruoli Neutrali", "tabGroupNeutral": "Ruoli Neutrali",
"tabGroupImpostor": "Ruoli Impostori", "tabGroupImpostor": "Ruoli Impostori",
"tabGroupStandard": "Standard", "tabGroupStandard": "Standard",
"tabGroupHNS": "Nascondino", "tabGroupHNS": "Nascondino",
"numSeekers": "# Cercatori", "numSeekers": "# Cercatori",
"tabGroup0Kcd": "0 Cooldown Uccisione", "tabGroup0Kcd": "0 Ricarica Uccisioni",
"noKcdSettingsOverride": "Aggiorna Automaticamente Impostazioni", "noKcdSettingsOverride": "Aggiorna Automaticamente le Impostazioni",
"tabGroupSNS": "Clone", "tabGroupSNS": "Clone",
"snsChatInGame": "Chat in gioco (sperimentale)", "snsChatInGame": "Chat durante il gioco (sperimentale)",
"snsSettingsOverride": "Aggiorna Automaticamente Impostazioni", "snsSettingsOverride": "Aggiorna Automaticamente le Impostazioni",
"cantKillTime": "Dopo un Mancato Bersaglio Non Puoi Uccidere Per", "cantKillTime": "Dopo una Cilecca Non Puoi Uccidere Per",
"misfiresToSuicide": "Suicidio Dopo Numero di Mancati Bersagli", "misfiresToSuicide": "Suicidio Dopo Numero di Cilecche",
"crewAutoWinsGameAfter": "Gli Astronauti Vincono Automaticamente Dopo", "crewAutoWinsGameAfter": "Gli Astronauti Vincono Automaticamente Dopo",
"snsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Clone", "snsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Clone",
"snsDisableReactor": "Disabilita Sabotaggio Reattore", "snsDisableReactor": "Disabilita Sabotaggio Reattore",
@@ -71,26 +64,12 @@
"snsDisableLights": "Disabilita Sabotaggio Luci", "snsDisableLights": "Disabilita Sabotaggio Luci",
"snsDisableComms": "Disabilita Sabotaggio Comunicazioni", "snsDisableComms": "Disabilita Sabotaggio Comunicazioni",
"snsDisableHeli": "Disabilita Sabotaggio Collisione", "snsDisableHeli": "Disabilita Sabotaggio Collisione",
"snsDisableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi", "snsDisableMushroomMixup": "Disabilita Sabotaggio Mixup Fungo",
"snsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Clone", "snsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Clone",
"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", "tabGroupSpeedrun": "Speedrun",
"speedrunSettingsOverride": "Aggiorna Automaticamente Impostazioni", "speedrunSettingsOverride": "Aggiorna Automaticamente le Impostazioni",
"gameAutoEndsAfter": "La partita finisce automaticamente dopo", "gameAutoEndsAfter": "La partita finisce automaticamente dopo",
"engineerMode": "Tutti Ingegneri", "engineerMode": "Tutti Ingegneri",
"tabGroupSabotages": "Sabotaggi", "tabGroupSabotages": "Sabotaggi",
"deadImpostorsCanSabotage": "Gli Impostori Morti Possono Sabotare", "deadImpostorsCanSabotage": "Gli Impostori Morti Possono Sabotare",
"disableSabotage": "Disabilita Sabotaggi Critici", "disableSabotage": "Disabilita Sabotaggi Critici",
@@ -99,11 +78,10 @@
"disableLights": "Disabilita Sabotaggio Luci", "disableLights": "Disabilita Sabotaggio Luci",
"disableComms": "Disabilita Sabotaggio Comunicazioni", "disableComms": "Disabilita Sabotaggio Comunicazioni",
"disableHeli": "Disabilita Sabotaggio Collisione", "disableHeli": "Disabilita Sabotaggio Collisione",
"disableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi", "disableMushroomMixup": "Disabilita Sabotaggio Mixup Fungo",
"disableCloseDoor": "Disabilita Sabotaggio Porte", "disableCloseDoor": "Disabilita Sabotaggio Porte",
"tabGroupGameplayGeneral": "Generale", "tabGroupGameplayGeneral": "Generale",
"disableAnnoyingMeetingCalls": "Nei primi 30 secondi non si possono chiamare riunioni", "disableAnnoyingMeetingCalls": "Nei primi 30 secondi non è possibile convocare riunioni",
"disableReport": "Disabilita Report dei Cadaveri", "disableReport": "Disabilita Report dei Cadaveri",
"changeDecontaminationTime": "Cambia Tempo di Decontaminazione (Solo Modalità Standard)", "changeDecontaminationTime": "Cambia Tempo di Decontaminazione (Solo Modalità Standard)",
"decontaminationTimeOnMiraHQ": "Tempo di decontaminazione su Mira HQ", "decontaminationTimeOnMiraHQ": "Tempo di decontaminazione su Mira HQ",
@@ -111,38 +89,34 @@
"decontaminationTimeOnPolus": "Tempo di decontaminazione su Polus", "decontaminationTimeOnPolus": "Tempo di decontaminazione su Polus",
"decontaminationDoorOpenTimeOnPolus": "Tempo di apertura porte su Polus", "decontaminationDoorOpenTimeOnPolus": "Tempo di apertura porte su Polus",
"disableSporeTrigger": "Disabilita spore su Fungle", "disableSporeTrigger": "Disabilita spore su Fungle",
"disableDevices": "Disabilita Dispositivi", "disableDevices": "Disabilita Dispositivi",
"disableSkeldDevices": "Disabilita Dispositivi su Skeld", "disableSkeldDevices": "Disabilita Dispositivi su Skeld",
"disableSkeldAdmin": "Disabilita Admin su Skeld", "disableSkeldAdmin": "Disabilita Amministrazione su Skeld",
"disableSkeldCamera": "Disabilita Telecamere su Skeld", "disableSkeldCamera": "Disabilita Telecamere su Skeld",
"disableMiraHQDevices": "Disabilita Dispositivi su Mira HQ", "disableMiraHQDevices": "Disabilita Dispositivi su Mira HQ",
"disableMiraHQAdmin": "Disabilita Admin su Mira HQ", "disableMiraHQAdmin": "Disabilita Amministrazione su Mira HQ",
"disableMiraHQDoorLog": "Disabilita Registri Porte su Mira HQ", "disableMiraHQDoorLog": "Disabilita Log Porte su Mira HQ",
"disablePolusDevices": "Disabilita Dispositivi su Polus", "disablePolusDevices": "Disabilita Dispositivi su Polus",
"disablePolusAdmin": "Disabilita Admin su Polus", "disablePolusAdmin": "Disabilita Amministrazione su Polus",
"disablePolusCamera": "Disabilita Telecamere su Polus", "disablePolusCamera": "Disabilita Telecamere su Polus",
"disablePolusVital": "Disabilita Segni Vitali su Polus", "disablePolusVital": "Disabilita Segni Vitali su Polus",
"disableAirshipDevices": "Disabilita Dispositivi su Airship", "disableAirshipDevices": "Disabilita Dispositivi su Airship",
"disableAirshipCockpitAdmin": "Disabilita Admin nella Cabina su Airship", "disableAirshipCockpitAdmin": "Disabilita Amministrazione Cabina su Airship",
"disableAirshipRecordsAdmin": "Disabilita Admin nell'Archivio su Airship", "disableAirshipRecordsAdmin": "Disabilita Amministrazione Archivi su Airship",
"disableAirshipCamera": "Disabilita Telecamere su Airship", "disableAirshipCamera": "Disabilita Telecamere su Airship",
"disableAirshipVital": "Disabilita Segni Vitali su Airship", "disableAirshipVital": "Disabilita Segni Vitali su Airship",
"disableFungleDevices": "Disabilita Dispositivi su Fungle", "disableFungleDevices": "Disabilita Dispositivi su Fungle",
"disableFungleVital": "Disabilita Segni Vitali su Fungle", "disableFungleVital": "Disabilita Segni Vitali su Fungle",
"tabGroupTasks": "Incarichi", "tabGroupTasks": "Incarichi",
"allPlayersSameTasks": "Stessi incarichi per tutti", "allPlayersSameTasks": "Stessi incarichi per tutti",
"overrideTaskSettings": "Disabilita incarichi", "overrideTaskSettings": "Disabilita incarichi",
"taskPercentNeededToWin": "% di Incarichi completati per la vittoria degli astronauti", "taskPercentNeededToWin": "% di Incarichi completati per la vittoria degli astronauti",
"disableMiraTasks": "Disabilita Incarichi su Mira HQ", "disableMiraTasks": "Disabilita Incarichi su Mira HQ",
"disableBuyBeverage": "Disabilita Compra Bevanda", "disableBuyBeverage": "Disabilita Compra Bevanda",
"disableMeasureWeather": "Disabilita Misura Condizioni Meteo", "disableMeasureWeather": "Disabilita Misura Condizioni Meteo",
"disableProcessData": "Disabilita Elabora Dati", "disableProcessData": "Disabilita Elabora Dati",
"disableRunDiagnostics": "Disabilita Esegui Diagnostica", "disableRunDiagnostics": "Disabilita Esegui Diagnostica",
"disableSortSamples": "Disabilita Smista Campioni", "disableSortSamples": "Disabilita Smista Campioni",
"disablePolusTasks": "Disabilita Incarichi su Polus", "disablePolusTasks": "Disabilita Incarichi su Polus",
"disableActivateWeatherNodes": "Disabilita Ripara Nodo Atmosferico", "disableActivateWeatherNodes": "Disabilita Ripara Nodo Atmosferico",
"disableAlignTelescope": "Disabilita Allinea Telescopio", "disableAlignTelescope": "Disabilita Allinea Telescopio",
@@ -152,207 +126,200 @@
"disableRebootWifi": "Disabilita Riavvia Wi-Fi", "disableRebootWifi": "Disabilita Riavvia Wi-Fi",
"disableRepairDrill": "Disabilita Ripara Trivella", "disableRepairDrill": "Disabilita Ripara Trivella",
"disableScanBoardingPass": "Disabilita Scansiona Carta d'Imbarco", "disableScanBoardingPass": "Disabilita Scansiona Carta d'Imbarco",
"disableAirshipTasks": "Disabilita Incarichi su Airship", "disableAirshipTasks": "Disabilita Incarichi su Airship",
"disableCleanToilet": "Disabilita Pulisci Bagno", "disableCleanToilet": "Disabilita Pulisci Bagno",
"disableDecontaminate": "Disabilita Decontamina", "disableDecontaminate": "Disabilita Decontamina",
"disableDevelopPhotos": "Disabilita Sviluppa Foto", "disableDevelopPhotos": "Disabilita Sviluppa Foto",
"disableDressMannequin": "Disabilita Vesti Manichino", "disableDressMannequin": "Disabilita Vesti Manichino",
"disableFixShower": "Disabilita Ripara Doccia", "disableFixShower": "Disabilita Ripara Doccia",
"disableMakeBurger": "Disabilita Prepara Burger", "disableMakeBurger": "Disabilita Prepara Hamburger",
"disablePickUpTowels": "Disabilita Raccogli Asciugamani", "disablePickUpTowels": "Disabilita Raccogli Asciugamani",
"disablePolishRuby": "Disabilita Lucida Rubino", "disablePolishRuby": "Disabilita Lucida Rubino",
"disablePutAwayPistols": "Disabilita Metti a Posto Pistole", "disablePutAwayPistols": "Disabilita Metti a Posto le Pistole",
"disablePutAwayRifles": "Disabilita Metti a Posto Fucili", "disablePutAwayRifles": "Disabilita Metti a Posto i Fucili",
"disableRewindTapes": "Disabilita Riavvolgi Nastri", "disableRewindTapes": "Disabilita Riavvolgi Nastri",
"disableResetBreaker": "Disabilita Resetta Interruttore", "disableResetBreaker": "Disabilita Ripristina Interruttori",
"disableSortRecords": "Disabilita Smista Documenti", "disableSortRecords": "Disabilita Smista Registri",
"disableStartFans": "Disabilita Avvia Ventilatori", "disableStartFans": "Disabilita Avvia Ventilatori",
"disableUnlockSafe": "Disabilita Apri Cassaforte", "disableUnlockSafe": "Disabilita Apri Cassaforte",
"disableFungleTasks": "Disabilita Incarichi su Fungle", "disableFungleTasks": "Disabilita Incarichi su Fungle",
"disableBuildSandcastle": "Disabilita Costruisci Castello di Sabbia", "disableBuildSandcastle": "Disabilita Costruisci Castello di Sabbia",
"disableCatchFish": "Disabilita Pesca", "disableCatchFish": "Disabilita Pesca",
"disableCollectSamples": "Disabilita Raccogli Campioni", "disableCollectSamples": "Disabilita Raccogli Campioni",
"disableCollectShells": "Disabilita Raccogli Conchiglie", "disableCollectShells": "Disabilita Raccogli Conchiglie",
"disableCollectVegetables": "Disabilita Raccogli Verdure", "disableCollectVegetables": "Disabilita Raccogli Verdure",
"disableCrankGenerator": "Disabilita Avvia Generatore a Manovella", "disableCrankGenerator": "Disabilita Gira Generatore",
"disableExtractFuel": "Disabilita Estrai Carburante", "disableExtractFuel": "Disabilita Estrai Carburante",
"disableFixAntenna": "Disabilita Ripara Antenna", "disableFixAntenna": "Disabilita Ripara Antenna",
"disableHelpCritter": "Disabilita Aiuta la Creatura", "disableHelpCritter": "Disabilita Aiuta l'Animale",
"disableHoistSupplies": "Disabilita Solleva Provviste", "disableHoistSupplies": "Disabilita Solleva Provviste",
"disableLiftWeights": "Disabilita Solleva Pesi", "disableLiftWeights": "Disabilita Solleva Pesi",
"disableMineOres": "Disabilita Estrai Minerali", "disableMineOres": "Disabilita Estrai Minerali",
"disablePlayVideoGame": "Disabilita Gioca ai Videogiochi", "disablePlayVideoGame": "Disabilita Gioca al Videogioco",
"disablePolishGem": "Disabilita Lucida Gemma", "disablePolishGem": "Disabilita Lucida Gemma",
"disableReplaceParts": "Disabilita Sostituisci Parti", "disableReplaceParts": "Disabilita Sostituisci Parti",
"disableRoastMarshmallow": "Disabilita Arrostisci Marshmallow", "disableRoastMarshmallow": "Disabilita Arrostisci Marshmallow",
"disableThrowFisbee": "Disabilita Lancia Frisbee", "disableThrowFisbee": "Disabilita Lancia Frisbee",
"disableFindSignal": "Disabilita Trova Segnale", "disableFindSignal": "Disabilita Trova Segnale",
"disableMiscCommonTasks": "Disabilita Incarichi Comuni", "disableMiscCommonTasks": "Disabilita Incarichi Comuni",
"disableEnterIdCode": "Disabilita Inserisci Codice ID", "disableEnterIdCode": "Disabilita Inserisci Codice ID",
"disableFixWiring": "Disabilita Ripara Cavi", "disableFixWiring": "Disabilita Ripara Cavi",
"disableSwipeCard": "Disabilita Passa la Carta", "disableSwipeCard": "Disabilita Striscia Carta",
"disableMiscShortTasks": "Disabilita Incarichi Corti", "disableMiscShortTasks": "Disabilita Incarichi Corti",
"disableAssembleArtifact": "Disabilita Assembla Manufatto", "disableAssembleArtifact": "Disabilita Assembla Manufatto",
"disableChartCourse": "Disabilita Traccia la Rotta", "disableChartCourse": "Disabilita Traccia Rotta",
"disableCleanO2Filter": "Disabilita Pulisci Filtro O2", "disableCleanO2Filter": "Disabilita Pulisci Filtro O2",
"disableCleanVent": "Disabilita Pulisci Condotto", "disableCleanVent": "Disabilita Pulisci Condotto",
"disableMonitorMushroom": "Disabilita Monitora Fungo", "disableMonitorMushroom": "Disabilita Monitora Fungo",
"disableMonitorTree": "Disabilita Controlla Albero", "disableMonitorTree": "Disabilita Controlla Albero",
"disablePrimeShields": "Disabilita Innesca Scudi", "disablePrimeShields": "Disabilita Avvia Scudi",
"disableRecordTemperature": "Disabilita Registra Temperatura", "disableRecordTemperature": "Disabilita Registra Temperatura",
"disableStabilizeSteering": "Disabilita Stabilizza Rotta", "disableStabilizeSteering": "Disabilita Stabilizza Timone",
"disableStoreArtifacts": "Disabilita Conserva Manufatti", "disableStoreArtifacts": "Disabilita Conserva Manufatti",
"disableUnlockManifolds": "Disabilita Sblocca Collettori", "disableUnlockManifolds": "Disabilita Sblocca Collettori",
"disableMiscLongTasks": "Disabilita Incarichi Lunghi", "disableMiscLongTasks": "Disabilita Incarichi Lunghi",
"disableAlignEngineOutput": "Disabilita Allinea Uscita Motore", "disableAlignEngineOutput": "Disabilita Allinea Potenza Motori",
"disableClearAsteroids": "Disabilita Distruggi Asteroidi", "disableClearAsteroids": "Disabilita Distruggi Asteroidi",
"disableEmptyChute": "Disabilita Svuota Scivolo", "disableEmptyChute": "Disabilita Svuota Scivolo",
"disableInspectSample": "Disabilita Ispeziona Campione", "disableInspectSample": "Disabilita Ispeziona Campione",
"disableReplaceWaterJug": "Disabilita Sostituisci Boccione d'Acqua", "disableReplaceWaterJug": "Disabilita Sostituisci Boccione d'Acqua",
"disableStartReactor": "Disabilita Avvia Reattore", "disableStartReactor": "Disabilita Avvia Reattore",
"disableWaterPlants": "Disabilita Innaffia Piante", "disableWaterPlants": "Disabilita Innaffia Piante",
"disableMiscMixedTasks": "Disabilita Incarichi Misti", "disableMiscMixedTasks": "Disabilita Incarichi Misti",
"disableCalibrateDistributor": "Disabilita Calibra Distributore", "disableCalibrateDistributor": "Disabilita Calibra Distributore",
"disableDivertPower": "Disabilita Devia Energia", "disableDivertPower": "Disabilita Devia Energia",
"disableEmptyGarbage": "Disabilita Svuota Spazzatura", "disableEmptyGarbage": "Disabilita Svuota Spazzatura",
"disableFuelEngines": "Disabilita Fai Rifornimento Motori", "disableFuelEngines": "Disabilita Rifornisci Motori",
"disableSubmitScan": "Disabilita Esegui Scansione", "disableSubmitScan": "Disabilita Invia Scansione",
"disableUploadData": "Disabilita Carica Dati", "disableUploadData": "Disabilita Carica Dati",
"allCommandsFull": "<b>TUTTI I COMANDI:</b>\n\n<b>/help</b>\nMostra questo messaggio. \n<b>/aur, /socials</b>\nInvia i link di Among Us Revamped. \n\n<b>/r, /gm</b>\nInvia la descrizione della modalità corrente o l'elenco delle abilità. \n<b>/l, /lastgame</b>\nInvia informazioni sull'ultimo vincitore. \n\n<b>/0kc, /0killcooldown</b>\nInvia la descrizione della modalità 0 Ricarica Uccisioni. \n<b>/sns, /shiftandseek</b>\nInvia la descrizione della modalità Clone. \n<b>/sp, /speedrun</b>\nInvia la descrizione della modalità Speedrun. \n\n/<b>kick, /ban</b>\nEspelle o banna un giocatore dal nome. \n<b>/ckick, /cban</b>\nEspelle o banna un giocatore dal colore. \n\n<b>/vip /moderator /admin</b>\nAggiunge un giocatore come VIP, Moderatore o Amministratore. \n<b>/removevip, /removemoderator, /removeadmin</b>\nRimuove VIP, Moderatore o Amministratore da un giocatore. \n\n<b>/eg, /endgame</b>\nTermina la partita in corso. \n<b>/em, /endmeeting</b>\nTermina la riunione in corso. \n<b>/s, /start</b>\nInizia il conto alla rovescia per l'avvio. \n\n<b>/t {template}</b>\nInvia un template da AUR-DATA/templates.txt. \n\n<b>/col, /color, /colour</b>\nCambia il tuo colore, può essere usato per aggirare le restrizioni di colore. ",
"allCommandsFull": "<b>TUTTI I COMANDI:</b>\n\n<b>/help</b>\nMostra questo messaggio.\n<b>/aur, /socials</b>\nInvia i link di Among Us Revamped.\n\n<b>/r, /gm</b>\nInvia la descrizione della modalità attuale o la lista delle abilità.\n<b>/l, /lastgame</b>\nInvia le informazioni sull'ultimo vincitore.\n\n<b>/0kc, /0killcooldown</b>\nInvia la descrizione della modalità 0 Cooldown Uccisione.\n<b>/sns, /shiftandseek</b>\nInvia la descrizione della modalità Clone.\n<b>/sp, /speedrun</b>\nInvia la descrizione della modalità Speedrun.\n\n/<b>kick, /ban</b>\nKicka o banna un giocatore tramite nome.\n<b>/ckick, /cban</b>\nKicka o banna un giocatore tramite colore.\n\n<b>/vip /moderator /admin</b>\nAggiunge un giocatore come VIP, Moderatore o Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRimuove lo stato di VIP, Moderatore o Admin a un giocatore.\n\n<b>/eg, /endgame</b>\nTermina la partita attuale.\n<b>/em, /endmeeting</b>\nTermina la riunione attuale.\n<b>/s, /start</b>\nInizia il conto alla rovescia per l'avvio.\n\n<b>/t {template}</b>\nInvia un template da AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nCambia il tuo colore, può essere usato per aggirare le restrizioni sui colori.", "translationReloaded": "Il tuo file della lingua è stato ripristinato con successo. \nPer applicare tutte le modifiche, riavvia il gioco. ",
"templateWelcome": "# In questo file puoi creare template, che possono servire come semplice alternativa al copia-incolla. \n# Per creare un template, scrivi una nuova riga con la stessa formattazione del template di test qui sotto. \n# I template non possono essere più lunghi di 120 caratteri e non possono contenere caratteri speciali. In caso contrario, verrai espulso. \n\ntest: questo è un esempio di template. Scrivi '/t test', per vederlo. \n\nwelcome: Benvenuti! Questa Lobby Utilizza Among Us Revamped {ModVersion} di MV. Divertitevi! ",
"translationReloaded": "Il tuo file di lingua è stato ricaricato con successo.\nPer applicare tutte le modifiche, riavvia il gioco.", "moderatorWelcome": "# In questo file puoi aggiungere Moderatori tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome viola nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi dei Moderatori. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000",
"vipWelcome": "# In questo file puoi aggiungere VIP tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome giallo nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi dei VIP. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"templateWelcome": "# In questo file puoi creare dei template che fungono da semplice alternativa al copia-incolla.\n# Per creare un template, scrivi una nuova riga con la stessa formattazione del template di prova qui sotto.\n# I template non possono essere più lunghi di 120 caratteri e non possono contenere caratteri speciali. In caso contrario verrai kickato.\n\ntest: questo è un esempio di template. Scrivi '/t test' per vederlo.\n\nwelcome: Benvenuti! Questa Lobby Utilizza Among Us Revamped {ModVersion} di MV. Buon divertimento!", "adminWelcome": "# In questo file puoi aggiungere Amministratori tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome rosso nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi degli Amministratori. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"moderatorWelcome": "# In questo file puoi aggiungere Moderatori tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome viola in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi dei Moderatori. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000", "banlistWelcome": "# In questo file puoi bannare i giocatori dalle tue lobby tramite Codice Amico. \n# Se banni qualcuno in gioco, verrà automaticamente aggiunto a questo file. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"vipWelcome": "# In questo file puoi aggiungere VIP tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome giallo in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi dei VIP. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n", "banwordWelcome": "# In questo file puoi creare parole vietate, espellendo automaticamente chi dice queste parole scritte qui. \n# Nota bene, per separare le parole devi usare delle nuove righe. ",
"adminWelcome": "# In questo file puoi aggiungere Admin tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome rosso in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi degli Admin. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n", "bannameWelcome": "# In questo file puoi creare nomi vietati, espellendo automaticamente chi utilizza i nomi scritti qui. \n# Nota bene, per separare i nomi devi usare delle nuove righe. ",
"banlistWelcome": "# In questo file puoi bannare i giocatori dalle tue lobby tramite il Codice Amico.\n# Se banni qualcuno in gioco, verrà aggiunto automaticamente a questo file. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n", "languageWelcome": "# In questo file puoi impostare la lingua del tuo Among Us Revamped. \n# Per impostare la lingua, scrivi una delle lingue supportate in una nuova riga. L'impostazione predefinita è l'inglese. \n# Lingue supportate: English, Spanish, SimplifiedChinese, Italian\n\nItalian",
"banwordWelcome": "# In questo file puoi impostare le parole vietate, kickando automaticamente chi pronuncia le parole scritte qui.\n# Nota bene: per separare le parole devi usare nuove righe.", "noGameEndWarning": "ATTENZIONE: Impostazione 'Nessuna Fine Partita' Attivata",
"bannameWelcome": "# In questo file puoi impostare i nomi vietati, kickando automaticamente chi utilizza i nomi scritti qui.\n# Nota bene: per separare i nomi devi usare nuove righe.", "tooLongTemplate": "Il tuo template è più lungo di 120 caratteri e verrai espulso se viene inviato. Per favore, riducine la lunghezza. ",
"languageWelcome": "# In questo file puoi impostare la tua lingua per Among Us Revamped.\n# Per impostare la lingua, scrivi una delle lingue supportate in una nuova riga. Quella predefinita è English.\n# Lingue supportate: English, Spanish, SimplifiedChinese, Italian\n\nItalian", "vipAdd": "Aggiunto con successo {0} come VIP. ",
"moderatorAdd": "Aggiunto con successo {0} come Moderatore. ",
"noGameEndWarning": "ATTENZIONE: L'impostazione 'Nessuna Fine Partita' è Abilitata", "adminAdd": "Aggiunto con successo {0} come Amministratore. ",
"vipRemove": "VIP rimosso con successo da {0}. ",
"tooLongTemplate": "Il tuo template supera i 120 caratteri e verrai kickato se viene inviato. Per favore, riducine la lunghezza.", "moderatorRemove": "Moderatore rimosso con successo da {0}. ",
"adminRemove": "Amministratore rimosso con successo da {0}. ",
"vipAdd": "{0} aggiunto con successo come VIP.", "permFail": "Impossibile trovare il giocatore '{0}'. Assicurati di aver scritto il nome correttamente. ",
"moderatorAdd": "{0} aggiunto con successo come Moderatore.", "helpDesc": "Mostra tutti i Comandi e cosa fanno. ",
"adminAdd": "{0} aggiunto con successo come Admin.", "snsDesc": "Invia la descrizione della modalità Clone. ",
"vipRemove": "VIP rimosso con successo a {0}.", "0kcDesc": "Invia la descrizione della modalità 0 Ricarica Uccisioni. ",
"moderatorRemove": "Moderatore rimosso con successo a {0}.", "SrDesc": "Invia la descrizione della modalità Speedrun. ",
"adminRemove": "Admin rimosso con successo a {0}.", "egDesc": "Termina la partita in corso. ",
"permFail": "Impossibile trovare il giocatore '{0}'. Assicurati di aver scritto il nome correttamente", "emDesc": "Termina la riunione in corso. ",
"aurDesc": "Invia i Link di Among Us Revamped. ",
"helpDesc": "Mostra tutti i Comandi e cosa fanno.", "sDesc": "Inizia il conto alla rovescia per l'avvio. ",
"snsDesc": "Invia la descrizione della modalità Clone.", "rDesc": "/r Invia le abilità attivate o la modalità corrente. ",
"0kcDesc": "Invia la descrizione della modalità 0 Cooldown Uccisione.", "rolesDesc": "Invia una panoramica di tutte le abilità/modalità. ",
"SrDesc": "Invia la descrizione della modalità Speedrun.", "kickDesc": "Espelle il giocatore dal nome. ",
"egDesc": "Termina la partita attuale.", "ckickDesc": "Espelle il giocatore dal colore. ",
"emDesc": "Termina la riunione attuale.", "banDesc": "Banna il giocatore dal nome. ",
"aurDesc": "Invia i Link di Among Us Revamped.", "cbanDesc": "Banna il giocatore dal colore. ",
"sDesc": "Inizia il Conto alla rovescia per l'avvio.", "dumpDesc": "Copia LogOutput in un file separato. ",
"rDesc": "/r Invia le abilità abilitate o la modalità attuale.", "colDesc": "Cambia il tuo colore. ",
"rolesDesc": "Invia una panoramica di tutte le abilità/modalità.", "reloadDesc": "Ricarica il file della lingua. ",
"kickDesc": "Kicka un giocatore tramite nome.", "vipDesc": "Aggiunge il giocatore come VIP. ",
"ckickDesc": "Kicka un giocatore tramite colore.", "moderatorDesc": "Aggiunge il giocatore come Moderatore. ",
"banDesc": "Banna un giocatore tramite nome.", "adminDesc": "Aggiunge il giocatore come Amministratore. ",
"cbanDesc": "Banna un giocatore tramite colore.", "cremoveVipDesc": "Rimuove il VIP dal giocatore. ",
"dumpDesc": "Copia il LogOutput in un file separato.", "removeModeratorDesc": "Rimuove il Moderatore dal giocatore. ",
"colDesc": "Cambia il tuo colore.", "removeAdminDesc": "Rimuove l'Amministratore dal giocatore. ",
"reloadDesc": "Ricarica il file di lingua.", "lastgameDesc": "Invia informazioni sull'ultima partita. ",
"vipDesc": "Aggiunge un giocatore come VIP.", "templateDesc": "Invia un template specifico da AUR-DATA/templates.txt. ",
"moderatorDesc": "Aggiunge un giocatore come Moderatore.", "banWordKick": "{0} è stato espulso perché ha inviato una parola vietata {1} volta/e. ",
"adminDesc": "Aggiunge un giocatore come Admin.", "pluginWarning": "<color=red><size=5><b>ATTENZIONE:</color></b></size>\n<size=3><b>Hai 2 o più plugin attivi rilevati. </size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod. \nSe riscontri dei bug, quasi certamente sono dovuti a incompatibilità. ",
"cremoveVipDesc": "Rimuove lo stato VIP a un giocatore.",
"removeModeratorDesc": "Rimuove lo stato di Moderatore a un giocatore.",
"removeAdminDesc": "Rimuove lo stato di Admin a un giocatore.",
"lastgameDesc": "Invia le informazioni sull'ultima partita.",
"templateDesc": "Invia un template specifico da AUR-DATA/templates.txt.",
"banWordKick": "{0} è stato kickato per aver inviato una parola vietata {1} volta/e",
"pluginWarning": "<color=red><size=5><b>ATTENZIONE:</color></b></size>\n<size=3><b>Hai 2 o più plugin attivi rilevati.</size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod.\nSe riscontri dei bug, molto probabilmente sono dovuti a incompatibilità.",
"systemSettings": "Impostazioni di Sistema", "systemSettings": "Impostazioni di Sistema",
"gameplaySettings": "Impostazioni di Gioco", "gameplaySettings": "Impostazioni di Gioco",
"gamemodeSettings": "Impostazioni Modalità", "gamemodeSettings": "Impostazioni Modalità",
"systemSettingsDesc": "Impostazioni di Sistema per Migliorare il Comfort e Semplificare i Test. ",
"systemSettingsDesc": "Impostazioni di Sistema Per Migliorare il Comfort e Semplificare i Test.", "gameplaySettingsDesc": "Impostazioni di Gioco per Migliorare l'Esperienza di Gioco. ",
"gameplaySettingsDesc": "Impostazioni di Gioco Per Migliorare l'Esperienza di Gioco.", "gamemodeSettingsDesc": "Impostazioni Aggiuntive per Determinate Modalità di Gioco. ",
"gamemodeSettingsDesc": "Impostazioni Aggiuntive Per Specifiche Modalità di Gioco.",
"everyone": "Tutti", "everyone": "Tutti",
"vipAndAbove": "<color=yellow>VIP</color> E Superiori", "vipAndAbove": "<color=yellow>VIP</color> E Superiori",
"moderatorAndAbove": "<color=purple>Moderatore</color> E Superiori", "moderatorAndAbove": "<color=purple>Moderatore</color> E Superiori",
"admin": "<color=red>Admin</color>", "admin": "<color=red>Amministratore</color>",
"onlyYou": "Solo Tu", "onlyYou": "Solo Tu",
"seekerDesc": "Aggiunge il giocatore come cercatore in nascondino. ",
"seekerDesc": "Aggiunge un giocatore come cercatore a nascondino", "seekersDesc": "Mostra tutti i cercatori selezionati manualmente. ",
"seekersDesc": "Mostra tutti i cercatori scelti manualmente.", "clearSeekerDesc": "Pulisce l'elenco di tutti i cercatori selezionati manualmente. ",
"clearSeekerDesc": "Pulisce la lista di tutti i cercatori scelti manualmente",
"slashEndMeetingCmd": "Chi Può Usare /endmeeting & /seeker", "slashEndMeetingCmd": "Chi Può Usare /endmeeting & /seeker",
"gameMasterWarning": "Osserverai le partite mentre la modalità spettatore è attiva. ATTENZIONE: L'assegnazione dei ruoli potrebbe essere errata se questa impostazione è attivata. ",
"gameMasterWarning":"Osserverai le partite finché la modalità spettatore è attiva. ATTENZIONE: L'assegnazione dei ruoli potrebbe essere errata se questa impostazione è abilitata.", "startWordsWelcome": "# In questo file puoi creare parole che serviranno a 'Espellere i Giocatori Che Dicono Start'. \n# 'Modalità di rilevamento rigorosa' OFF = I messaggi devono corrispondere perfettamente alle parole specificate. 'Modalità di rilevamento rigorosa' ON = I messaggi richiedono solo determinate parole. \n# Puoi anche aggiungere parole non correlate, che verranno rilevate solo nella lobby. \n\nstart\nbegin\ncommence\nstart\ninizia\n",
"gameMasterWarningTwo": "ATTENZIONE: Modalità Game Master Attivata",
"startWordsWelcome": "# In questo file puoi impostare le parole per 'Kicka Giocatori Che Dicono Start'.\n# 'Modalità di rilevamento rigorosa' OFF = I messaggi devono coincidere perfettamente con le parole impostate. 'Modalità di rilevamento rigorosa' ON = I messaggi necessitano solo di contenere le parole impostate.\n# Puoi anche aggiungere parole non correlate, che verranno rilevate solo nella lobby..\n\nstart\nbegin\ncommence\ninizia\nstartate\n", "startWordKick": "{0} è stato espulso perché ha inviato una parola presente in StartWords.txt {1} volta/e. ",
"gameMasterWarningTwo": "ATTENZIONE: Modalità Spettatore Attivata",
"startWordKick": "{0} è stato kickato per aver inviato una parola presente in StartWords.txt {1} volta/e",
"seekers": "Cercatori: ", "seekers": "Cercatori: ",
"clearedSeekers": "Lista dei cercatori scelti manualmente pulita con successo.", "clearedSeekers": "Elenco dei cercatori selezionati manualmente pulito con successo. ",
"tabGroupLevelKick": "Moderazione Livelli", "tabGroupLevelKick": "Moderazione per Livello",
"enableKickLowLevelPlayer": "Kicka Giocatori di Basso Livello", "enableKickLowLevelPlayer": "Espelli Giocatori di Basso Livello",
"tabGroupKickInvalidFriendCodes": "Codici Amico Non Validi", "tabGroupKickInvalidFriendCodes": "Codici Amico Non Validi",
"tabGroupAutoKickStart": "Parole di Start", "tabGroupAutoKickStart": "Parola Start",
"autoKickStartTimes": "Messaggi di Start inviati necessari per il kick", "autoKickStartTimes": "Messaggi Start inviati necessari per l'espulsione",
"tabGroupAutostart": "AutoHost", "tabGroupAutostart": "AutoHost",
"rehost": "Ricrea Automaticamente Lobby In Caso di Crash", "rehost": "Ricrea Automaticamente la Lobby al Crash",
"public": "Rendi Automaticamente la Nuova Lobby Pubblica", "public": "Rendi Automaticamente Pubblica la Nuova Lobby",
"mapVoteDuration": "Durata della Votazione per le Mappe", "mapVoteDuration": "Durata Votazione Mappe",
"tabGroupDeniedWords": "Parole Vietate", "tabGroupDeniedWords": "Parole Vietate",
"enableDeniedWords": "Kicka Giocatori Che Pronunciano Parole Vietate", "enableDeniedWords": "Espelli i Giocatori Che Dicono Parole Vietate",
"slashMapAndSeekerCmd": "Chi Può Usare /seeker & /mapvote", "slashMapAndSeekerCmd": "Chi Può Usare /seeker & /mapvote",
"snsChatInGameExtend": "Invia informazioni sulla modalità dopo l'inizio del gioco", "snsChatInGameExtend": "Invia informazioni sulla modalità dopo l'inizio del gioco",
"mapVoteDesc": "Inizia una votazione tra le 5 mappe principali.", "mapVoteDesc": "Inizia una votazione tra le 5 mappe principali. ",
"allMapVoteDesc": "Inizia una votazione tra tutte e 6 le mappe, inclusa Eht Dleks.", "allMapVoteDesc": "Inizia una votazione tra tutte e 6 le mappe, inclusa Eht Dleks. ",
"banWordBan": "{0} è stato bannato per aver inviato una parola di DeniedWords.txt {1} volta/e", "banWordBan": "{0} è stato bannato perché ha inviato una parola da DeniedWords.txt {1} volta/e. ",
"startWordBan": "{0} è stato bannato per aver inviato una parola di StartWords.txt {1} volta/e", "startWordBan": "{0} è stato bannato perché ha inviato una parola da StartWords.txt {1} volta/e. ",
"moderationSettings": "Impostazioni di Moderazione", "moderationSettings": "Impostazioni di Moderazione",
"moderationSettingsDesc": "Impostazioni di Moderazione per combattere tossicità e cattivo comportamento.", "moderationSettingsDesc": "Impostazioni di Moderazione per combattere tossicità e cattivi comportamenti. ",
"rehostSuccess": "La Lobby è Stata Ricreata Con Successo", "rehostSuccess": "La Lobby È Stata Ricreata Con Successo",
"enableKickHighLevelPlayer": "Kicka Giocatori di Alto Livello", "enableKickHighLevelPlayer": "Espelli Giocatori di Alto Livello",
"kickHighLevelPlayer": "Kicka Giocatori Sopra il Livello", "kickHighLevelPlayer": "Espelli Giocatori Sopra il Livello",
"kick": "Kick", "kick": "Espelli",
"ban": "Ban", "ban": "Banna",
"notifyMe": "Notificami", "notifyMe": "Notificami",
"tabGroupAfk": "Rilevamento AFK", "tabGroupAfk": "Rilevamento AFK",
"enableAfkDetection": "Abilita Rilevamento AFK", "enableAfkDetection": "Abilita Rilevamento AFK",
"afkTimer": "Soglia di Rilevamento", "afkTimer": "Soglia di Rilevamento",
"afkPenalty": "Penalità Per AFK", "afkPenalty": "Penalità Per AFK",
"onlyDetectSpawn": "Rileva Solo i Giocatori allo Spawn", "onlyDetectSpawn": "Rileva Solo i Giocatori allo Spawn",
"afkNotify": "{0} È Stato AFK per {1}sec",
"afkNotify": "{0} è stato AFK {1}sec", "afkKick": "{0} È Stato AFK per {1}sec, espulsione giocatore",
"afkKick": "{0} è stato AFK {1}sec, kickiamo il giocatore", "afkBan": "{0} È Stato AFK per {1}sec, ban giocatore",
"afkBan": "{0} è stato AFK {1}sec, banniamo il giocatore",
"automaticMapPoll": "/mapvote Automatico Dopo il Rientro", "automaticMapPoll": "/mapvote Automatico Dopo il Rientro",
"automaticAllMapPoll": "/allmapvote Automatico Dopo il Rientro", "automaticAllMapPoll": "/allmapvote Automatico Dopo il Rientro",
"timeBeforeMapPoll": "Tempo Prima Inizio Votazione Mappe", "timeBeforeMapPoll": "Tempo Prima dell'Inizio Votazione Mappe",
"pnsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Nascondino Fantasma",
"pnsDisableSabotage": "Disable PnS Critical Sabotages", "pnsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Nascondino Fantasma",
"pnsDisableCloseDoor": "Disable PnS Door Sabotages", "tabGroupPNS": "Nascondino Fantasma",
"tabGroupPNS": "Poof and Seek", "badMoveTimeToSuicide": "I Fantasmi Si Suicidano Dopo Movimento Visibile Dopo",
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For", "snsImpostorCanVent": "Gli Impostori Possono Entrare nelle Botole",
"snsImpostorCanVent": "Impostors can vent" "pnsDesc": "Invia Informazioni sulla Modalità Nascondino Fantasma. ",
"modeVoteDuration": "Tempo di Votazione per la Modalità",
"snsChatInGameExtendTwo": "Invia info ampliate dopo l'inizio del gioco",
"snsChatInGameFast": "Riunioni Veloci (sperimentale+)",
"shieldFirstDeath": "Proteggi il Giocatore Morto Per Primo",
"shieldFirstDeathDuration": "Durata dello Scudo",
"snsTwoDesc": "Invia Descrizione Ampliata di Clone. ",
"modeVoteDesc": "Inizia la Votazione tra tutte le modalità. ",
"automaticModePoll": "/gmvote Automatico Dopo il Rientro",
"tabGroupCustomizeSabotages": "Personalizza Sabotaggi",
"customizeSabotages": "Abilita Personalizzazione Sabotaggi",
"sabotageCooldown": "Ricarica Sabotaggi Critici",
"skeldReactorDuration": "Durata Sabotaggio Reattore su Skeld",
"skeldO2Duration": "Durata Sabotaggio O2 su Skeld",
"miraReactorDuration": "Durata Sabotaggio Reattore su Mira",
"miraO2Duration": "Durata Sabotaggio O2 su Mira",
"polusReactorDuration": "Durata Sabotaggio Reattore su Polus",
"airshipReactorDuration": "Durata Sabotaggio Reattore su Airship",
"fungleReactorDuration": "Durata Sabotaggio Reattore su Fungle",
"fungleMushroomMixupDuration": "Durata Sabotaggio Mixup Fungo",
"privateDesc": "Cambia la Visibilità della Lobby in Privata. ",
"publicDesc": "Cambia la Visibilità della Lobby in Pubblica. "
} }
+13 -15
View File
@@ -76,19 +76,6 @@
"snsDisableHeli": "墜落危険サボタージュを無効化", "snsDisableHeli": "墜落危険サボタージュを無効化",
"snsDisableMushroomMixup": "キノコシャッフルサボタージュを無効化", "snsDisableMushroomMixup": "キノコシャッフルサボタージュを無効化",
"snsDisableCloseDoor": "SnSドア閉鎖を無効化", "snsDisableCloseDoor": "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": "スピードラン", "tabGroupSpeedrun": "スピードラン",
"speedrunSettingsOverride": "設定を自動更新", "speedrunSettingsOverride": "設定を自動更新",
"gameAutoEndsAfter": "ゲームの自動終了時間", "gameAutoEndsAfter": "ゲームの自動終了時間",
@@ -363,7 +350,18 @@
"snsTwoDesc": "Shift and Seekの拡張説明を送信。", "snsTwoDesc": "Shift and Seekの拡張説明を送信。",
"modeVoteDesc": "すべてのゲームモードから投票を開始します。", "modeVoteDesc": "すべてのゲームモードから投票を開始します。",
"automaticModePoll": "再参加後に自動で /gmvote を実行", "automaticModePoll": "再参加後に自動で /gmvote を実行",
"tabGroupCustomizeSabotages": "サボタージュのカスタマイズ",
"customizeSabotages": "サボタージュのカスタマイズを有効にする",
"sabotageCooldown": "緊急サボタージュのクールダウン",
"skeldReactorDuration": "Skeld 原子炉サボタージュの持続時間",
"skeldO2Duration": "Skeld 酸素サボタージュの持続時間",
"miraReactorDuration": "Mira 原子炉サボタージュの持続時間",
"miraO2Duration": "Mira 酸素サボタージュの持続時間",
"polusReactorDuration": "Polus 原子炉サボタージュの持続時間",
"airshipReactorDuration": "Airship 原子炉サボタージュの持続時間",
"fungleReactorDuration": "Fungle 原子炉サボタージュの持続時間",
"fungleMushroomMixupDuration": "Fungle キノコ幻覚の持続時間",
"privateDesc": "Changes lobby visibility to private.", "privateDesc": "ロビーを非公開に設定します。",
"publicDesc": "Changes lobby visibility to public." "publicDesc": "ロビーを公開に設定します。"
} }
+13 -15
View File
@@ -73,19 +73,6 @@
"snsDisableHeli": "Выключить Сабботаж Столкновения", "snsDisableHeli": "Выключить Сабботаж Столкновения",
"snsDisableMushroomMixup": "Выключить Сабботаж Грибного Переполоха", "snsDisableMushroomMixup": "Выключить Сабботаж Грибного Переполоха",
"snsDisableCloseDoor": "Выключить Сабботаж Дверей в Режиме Клона", "snsDisableCloseDoor": "Выключить Сабботаж Дверей в Режиме Клона",
"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": "Спидран", "tabGroupSpeedrun": "Спидран",
"speedrunSettingsOverride": "Автоматически Обновлять Настройки", "speedrunSettingsOverride": "Автоматически Обновлять Настройки",
"gameAutoEndsAfter": "Игра автоматически заканчивается после", "gameAutoEndsAfter": "Игра автоматически заканчивается после",
@@ -364,7 +351,18 @@
"snsTwoDesc": "Отправить Увеличенное Описание Клона.", "snsTwoDesc": "Отправить Увеличенное Описание Клона.",
"modeVoteDesc": "Начать Голосование между всеми режимами.", "modeVoteDesc": "Начать Голосование между всеми режимами.",
"automaticModePoll": "Автоматический /gmvote После Перезахода", "automaticModePoll": "Автоматический /gmvote После Перезахода",
"tabGroupCustomizeSabotages": "Кастомизировать Саботажи",
"customizeSabotages": "Включить Кастомизацию Сабботажей",
"sabotageCooldown": "Перезарядка Критических Сабботажей",
"skeldReactorDuration": "Длительность Сабботажа Реактора на Skeld",
"skeldO2Duration": "Длительность Сабботажа O2 на Skeld",
"miraReactorDuration": "Длительность Сабботажа Реактора на Mira",
"miraO2Duration": "Длительность Сабботажа O2 на Mira",
"polusReactorDuration": "Длительность Сабботажа Реактора на Polus",
"airshipReactorDuration": "Длительность Сабботажа Реактора на Airship",
"fungleReactorDuration": "Длительность Сабботажа Реактора на Fungle",
"fungleMushroomMixupDuration": "Длительность Сабботажа Грибного Переполоха",
"privateDesc": "Changes lobby visibility to private.", "privateDesc": "Изменяет Публичность Лобби на Приватный.",
"publicDesc": "Changes lobby visibility to public." "publicDesc": "Изменяет Публичность Лобби на Публичный."
} }
+13 -15
View File
@@ -76,19 +76,6 @@
"snsDisableHeli": "禁用坠机危机破坏", "snsDisableHeli": "禁用坠机危机破坏",
"snsDisableMushroomMixup": "禁用迷幻蘑菇破坏", "snsDisableMushroomMixup": "禁用迷幻蘑菇破坏",
"snsDisableCloseDoor": "禁用 SnS 关门破坏", "snsDisableCloseDoor": "禁用 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)", "tabGroupSpeedrun": "速通模式 (Speedrun)",
"speedrunSettingsOverride": "自动更新设置", "speedrunSettingsOverride": "自动更新设置",
"gameAutoEndsAfter": "游戏在此时间后自动结束", "gameAutoEndsAfter": "游戏在此时间后自动结束",
@@ -350,7 +337,18 @@
"snsTwoDesc": "发送 Shift and Seek 扩展说明。", "snsTwoDesc": "发送 Shift and Seek 扩展说明。",
"modeVoteDesc": "在所有游戏模式之间发起投票。", "modeVoteDesc": "在所有游戏模式之间发起投票。",
"automaticModePoll": "重新加入后自动执行 /gmvote", "automaticModePoll": "重新加入后自动执行 /gmvote",
"tabGroupCustomizeSabotages": "自定义破坏",
"customizeSabotages": "启用自定义破坏",
"sabotageCooldown": "紧急破坏冷却时间",
"skeldReactorDuration": "Skeld 反应堆破坏持续时间",
"skeldO2Duration": "Skeld 氧气破坏持续时间",
"miraReactorDuration": "Mira 反应堆破坏持续时间",
"miraO2Duration": "Mira 氧气破坏持续时间",
"polusReactorDuration": "Polus 反应堆破坏持续时间",
"airshipReactorDuration": "Airship 反应堆破坏持续时间",
"fungleReactorDuration": "Fungle 反应堆破坏持续时间",
"fungleMushroomMixupDuration": "Fungle 蘑菇幻觉持续时间",
"privateDesc": "Changes lobby visibility to private.", "privateDesc": "将房间改为私人。",
"publicDesc": "Changes lobby visibility to public." "publicDesc": "将房间改为公开。"
} }