From 9c1d8a2943474394c0d4eb4e711860e04d5b9f64 Mon Sep 17 00:00:00 2001
From: Ape <155788660+ApeMV@users.noreply.github.com>
Date: Mon, 3 Aug 2026 20:02:59 +0200
Subject: [PATCH] v1.9.2 BE
---
AmongUsRevamped.cs | 2 +-
Modules/BanManager.cs | 34 +-
Modules/CommandHelper.cs | 5 +-
Modules/CustomOptionsHolder.cs | 210 ++++----
Modules/EACR.cs | 21 +
Modules/FixedUpdate.cs | 2 +-
Modules/OptionItem/OptionItem.cs | 1 +
Modules/Rehost.cs | 27 ++
Modules/Utils.cs | 96 +++-
Patches/ChatPatches.cs | 70 ++-
Patches/ClientOptionsPatch.cs | 3 +-
Patches/DleksPatch.cs | 17 +-
Patches/EndGamePatches.cs | 4 +-
Patches/GameSettingMenuPatch.cs | 3 +
Patches/IntroPatch.cs | 16 +-
Patches/JoinAndLeavePatches.cs | 8 +-
Patches/OnGameStartedPatch.cs | 7 +-
Patches/PlayerControlPatches.cs | 75 ++-
Patches/VentPatches.cs | 23 +-
README.md | 22 +-
Resources/Language/English.json | 32 +-
Resources/Language/Japanese.json | 554 +++++++++++-----------
Resources/Language/Russian.json | 68 +--
Resources/Language/SimplifiedChinese.json | 23 +-
24 files changed, 868 insertions(+), 455 deletions(-)
create mode 100644 Modules/Rehost.cs
diff --git a/AmongUsRevamped.cs b/AmongUsRevamped.cs
index df90403..d043c3f 100644
--- a/AmongUsRevamped.cs
+++ b/AmongUsRevamped.cs
@@ -44,7 +44,7 @@ public partial class Main : BasePlugin
public static bool HasArgumentException;
public static string CredentialsText;
- public const string ModVersion = "v1.9.1";
+ public const string ModVersion = "v1.9.2";
public static float GameTimer;
diff --git a/Modules/BanManager.cs b/Modules/BanManager.cs
index 76d326c..cb04baf 100644
--- a/Modules/BanManager.cs
+++ b/Modules/BanManager.cs
@@ -170,12 +170,12 @@ public static class BanManager
public static bool IsWordBanned(PlayerControl player, string input)
{
- if (input == "" || !AmongUsClient.Instance.AmHost || Utils.CheckAccessLevel(player.Data.FriendCode) > 0) return false;
+ if (input == "" || !AmongUsClient.Instance.AmHost || Utils.CheckAccessLevel(player.Data.FriendCode) > 0 || !Options.EnableDeniedWords.GetBool()) return false;
int clientId = player.Data.ClientId;
var bannedWords = File.ReadAllLines(BanWordPath).Where(x => !x.StartsWith("#"));
- if (bannedWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Contains(code, StringComparison.OrdinalIgnoreCase)))
+ if ((Options.DeniedWordsStrength.GetBool() && bannedWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Contains(code, StringComparison.OrdinalIgnoreCase))) || (!Options.DeniedWordsStrength.GetBool() && bannedWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Equals(code, StringComparison.OrdinalIgnoreCase))))
{
if (!Main.SayDeniedWordTimes.ContainsKey(clientId))
@@ -187,9 +187,17 @@ public static class BanManager
if (Main.SayDeniedWordTimes[clientId] >= Options.DeniedWordsToKick.GetInt())
{
- AmongUsClient.Instance.KickPlayer(clientId, false);
- Logger.Info(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()), "DeniedWordKick");
- Logger.SendInGame(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()));
+ if (Options.DeniedWordsAsBan.GetBool())
+ {
+ AmongUsClient.Instance.KickPlayer(clientId, true);
+ Logger.SendInGame(Translator.Get("banWordBan", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()));
+ }
+ else
+ {
+ AmongUsClient.Instance.KickPlayer(clientId, false);
+ Logger.SendInGame(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()));
+ }
+ Logger.Info(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()), "DeniedWordKick");
}
return true;
}
@@ -198,10 +206,10 @@ public static class BanManager
public static bool IsStartWord(PlayerControl player, string input)
{
- if (input == "" || !AmongUsClient.Instance.AmHost || Utils.CheckAccessLevel(player.Data.FriendCode) > 0) return false;
+ if (input == "" || !AmongUsClient.Instance.AmHost || Utils.CheckAccessLevel(player.Data.FriendCode) > 0 || !Options.AutoKickStart.GetBool()) return false;
int clientId = player.Data.ClientId;
- var startWords = File.ReadAllLines(BanWordPath).Where(x => !x.StartsWith("#"));
+ var startWords = File.ReadAllLines(StartWordsPath).Where(x => !x.StartsWith("#"));
if ((Options.AutoKickStartStrength.GetBool() && startWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Contains(code, StringComparison.OrdinalIgnoreCase))) || (!Options.AutoKickStartStrength.GetBool() && startWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Equals(code, StringComparison.OrdinalIgnoreCase))))
{
@@ -214,9 +222,17 @@ public static class BanManager
if (Main.SayStartTimes[clientId] >= Options.AutoKickStartTimes.GetInt())
{
- AmongUsClient.Instance.KickPlayer(clientId, false);
+ if (Options.AutoKickStartAsBan.GetBool())
+ {
+ AmongUsClient.Instance.KickPlayer(clientId, true);
+ Logger.SendInGame(Translator.Get("startWordKick", player.Data.PlayerName, Options.AutoKickStartTimes.GetInt()));
+ }
+ else
+ {
+ AmongUsClient.Instance.KickPlayer(clientId, false);
+ Logger.SendInGame(Translator.Get("startWordBan", player.Data.PlayerName, Options.AutoKickStartTimes.GetInt()));
+ }
Logger.Info(Translator.Get("startWordKick", player.Data.PlayerName, Options.AutoKickStartTimes.GetInt()), "StartWordKick");
- Logger.SendInGame(Translator.Get("startWordKick", player.Data.PlayerName, Options.AutoKickStartTimes.GetInt()));
}
return true;
}
diff --git a/Modules/CommandHelper.cs b/Modules/CommandHelper.cs
index 70267f1..80fd550 100644
--- a/Modules/CommandHelper.cs
+++ b/Modules/CommandHelper.cs
@@ -76,7 +76,10 @@ internal static class CommandHelper
new Cmd { Name = new[] { "/seeker" }, Prompt = "/seeker {name}", Description = Translator.Get("seekerDesc"), HasVariable = true },
new Cmd { Name = new[] { "/seekers" }, Prompt = "/seekers", Description = Translator.Get("seekersDesc"), HasVariable = false },
- 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[] { "/allmapvote" }, Prompt = "/allmapvote", Description = Translator.Get("allMapVoteDesc"), HasVariable = false }
};
[HarmonyPostfix]
diff --git a/Modules/CustomOptionsHolder.cs b/Modules/CustomOptionsHolder.cs
index 42a86e7..59444b0 100644
--- a/Modules/CustomOptionsHolder.cs
+++ b/Modules/CustomOptionsHolder.cs
@@ -72,32 +72,43 @@ namespace AmongUsRevamped
public static OptionItem TabGroupMain;
+ public static OptionItem TabGroupLevelKick;
+ public static OptionItem EnableKickLowLevelPlayer;
public static OptionItem KickLowLevelPlayer;
public static OptionItem DontKickLevelOnes;
public static OptionItem TempBanLowLevelPlayer;
+ public static OptionItem TabGroupKickInvalidFriendCodes;
public static OptionItem KickInvalidFriendCodes;
public static OptionItem TempBanInvalidFriendCodes;
+ public static OptionItem TabGroupDeniedWords;
+ public static OptionItem EnableDeniedWords;
public static OptionItem DeniedWordsToKick;
+ public static OptionItem DeniedWordsAsBan;
+ public static OptionItem DeniedWordsStrength;
+ public static OptionItem TabGroupAutoKickStart;
public static OptionItem AutoKickStart;
public static OptionItem AutoKickStartAsBan;
public static OptionItem AutoKickStartTimes;
public static OptionItem AutoKickStartStrength;
public static OptionItem TabGroupAutomation;
-
public static OptionItem AutoSendGameInfo;
public static OptionItem AutoRejoinLobby;
- public static OptionItem AutoStartTimer;
- public static OptionItem WaitAutoStart;
- public static OptionItem PlayerAutoStart;
public static OptionItem EnableJoinMessages;
public static OptionItem MessagePerPlayerNum;
- public static OptionItem TabGroupMisc;
+ public static OptionItem TabGroupAutostart;
+ public static OptionItem AutoStartTimer;
+ public static OptionItem WaitAutoStart;
+ public static OptionItem PlayerAutoStart;
+ public static OptionItem Rehost;
+ public static OptionItem Public;
+ public static OptionItem TabGroupMisc;
+ public static OptionItem MapVoteDuration;
public static OptionItem StartCountdown;
public static OptionItem ColorCommandLevel;
public static OptionItem AllowFortegreen;
@@ -107,6 +118,7 @@ namespace AmongUsRevamped
public static OptionItem SlashColorCmd;
public static OptionItem SlashRolesAndGamemodeCmd;
public static OptionItem SlashLastGameCmd;
+ public static OptionItem SlashMapAndSeekerCmd;
public static OptionItem SlashKickCmd;
public static OptionItem SlashBanCmd;
public static OptionItem SlashEndMeetingCmd;
@@ -270,6 +282,7 @@ namespace AmongUsRevamped
public static OptionItem TabGroupSNS;
public static OptionItem SNSSettingsOverride;
public static OptionItem SNSChatInGame;
+ public static OptionItem SNSChatInGameExtend;
public static OptionItem CrewAutoWinsGameAfter;
public static OptionItem CantKillTime;
public static OptionItem MisfiresToSuicide;
@@ -294,72 +307,96 @@ namespace AmongUsRevamped
if (IsLoaded) return;
_ = PresetOptionItem.Create(0, TabGroup.SystemSettings)
- .SetColor(new Color32(204, 204, 0, 255))
+ .SetColor(Color.yellow)
.SetHeader(true);
Gamemode = StringOptionItem.Create(1, Translator.Get("gamemode"), gameModes, 0, TabGroup.SystemSettings, false)
- .SetColor(Color.green)
+ .SetColor(Color.yellow)
.SetHeader(true);
- TabGroupMain = TextOptionItem.Create(60000, Translator.Get("tabGroupMain"), TabGroup.SystemSettings)
- .SetColor(Color.blue);
-
- DeniedWordsToKick = IntegerOptionItem.Create(60049, Translator.Get("deniedWordsToKick"), new(1, 5, 1), 1, TabGroup.SystemSettings, false)
+ TabGroupLevelKick = TextOptionItem.Create(60048, Translator.Get("tabGroupLevelKick"), TabGroup.ModerationSettings)
+ .SetColor(Color.red);
+ EnableKickLowLevelPlayer = BooleanOptionItem.Create(60049, Translator.Get("enableKickLowLevelPlayer"), false, TabGroup.ModerationSettings, false);
+ KickLowLevelPlayer = IntegerOptionItem.Create(60050, Translator.Get("kickLowLevelPlayer"), new(0, 100, 1), 0, TabGroup.ModerationSettings, false)
+ .SetParent(EnableKickLowLevelPlayer)
.SetValueFormat(OptionFormat.Level);
+ TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.ModerationSettings, false)
+ .SetParent(EnableKickLowLevelPlayer);
+ DontKickLevelOnes = BooleanOptionItem.Create(60052, Translator.Get("dontKickLevelOnes"), false, TabGroup.ModerationSettings, false)
+ .SetParent(EnableKickLowLevelPlayer);
- KickLowLevelPlayer = IntegerOptionItem.Create(60050, Translator.Get("kickLowLevelPlayer"), new(0, 100, 1), 0, TabGroup.SystemSettings, false)
- .SetValueFormat(OptionFormat.Level);
- TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.SystemSettings, false)
- .SetParent(KickLowLevelPlayer);
- DontKickLevelOnes = BooleanOptionItem.Create(60052, Translator.Get("dontKickLevelOnes"), false, TabGroup.SystemSettings, false)
- .SetParent(KickLowLevelPlayer);
-
- KickInvalidFriendCodes = BooleanOptionItem.Create(60080, Translator.Get("kickInvalidFriendCodes"), true, TabGroup.SystemSettings, false);
- TempBanInvalidFriendCodes = BooleanOptionItem.Create(60081, Translator.Get("tempBanInvalidFriendCodes"), false, TabGroup.SystemSettings, false)
+ TabGroupKickInvalidFriendCodes = TextOptionItem.Create(60079, Translator.Get("tabGroupKickInvalidFriendCodes"), TabGroup.ModerationSettings)
+ .SetColor(Color.red);
+ KickInvalidFriendCodes = BooleanOptionItem.Create(60080, Translator.Get("kickInvalidFriendCodes"), true, TabGroup.ModerationSettings, false);
+ TempBanInvalidFriendCodes = BooleanOptionItem.Create(60081, Translator.Get("tempBanInvalidFriendCodes"), false, TabGroup.ModerationSettings, false)
.SetParent(KickInvalidFriendCodes);
- AutoKickStart = BooleanOptionItem.Create(60123, Translator.Get("autoKickStart"), false, TabGroup.SystemSettings, false);
- AutoKickStartAsBan = BooleanOptionItem.Create(60124, Translator.Get("autoKickStartAsBan"), false, TabGroup.SystemSettings, false)
+ TabGroupDeniedWords = TextOptionItem.Create(60082, Translator.Get("tabGroupDeniedWords"), TabGroup.ModerationSettings)
+ .SetColor(Color.red);
+ EnableDeniedWords = BooleanOptionItem.Create(60083, Translator.Get("enableDeniedWords"), false, TabGroup.ModerationSettings, false);
+ DeniedWordsAsBan = BooleanOptionItem.Create(60084, Translator.Get("autoKickStartAsBan"), false, TabGroup.ModerationSettings, false)
+ .SetParent(EnableDeniedWords);
+ DeniedWordsToKick = IntegerOptionItem.Create(60085, Translator.Get("deniedWordsToKick"), new(1, 5, 1), 1, TabGroup.ModerationSettings, false)
+ .SetParent(EnableDeniedWords)
+ .SetValueFormat(OptionFormat.Level);
+ DeniedWordsStrength = BooleanOptionItem.Create(60086, Translator.Get("autoKickStartStrength"), false, TabGroup.ModerationSettings, false)
+ .SetParent(EnableDeniedWords);
+
+ TabGroupAutoKickStart = TextOptionItem.Create(600122, Translator.Get("tabGroupAutoKickStart"), TabGroup.ModerationSettings)
+ .SetColor(Color.red);
+ AutoKickStart = BooleanOptionItem.Create(60123, Translator.Get("autoKickStart"), false, TabGroup.ModerationSettings, false);
+ AutoKickStartAsBan = BooleanOptionItem.Create(60124, Translator.Get("autoKickStartAsBan"), false, TabGroup.ModerationSettings, false)
.SetParent(AutoKickStart);
- AutoKickStartTimes = IntegerOptionItem.Create(60125, Translator.Get("autoKickStartTimes"), new(1, 10, 1), 1, TabGroup.SystemSettings, false)
+ AutoKickStartTimes = IntegerOptionItem.Create(60125, Translator.Get("autoKickStartTimes"), new(1, 10, 1), 1, TabGroup.ModerationSettings, false)
.SetParent(AutoKickStart)
.SetValueFormat(OptionFormat.Times);
- AutoKickStartStrength = BooleanOptionItem.Create(60126, Translator.Get("autoKickStartStrength"), false, TabGroup.SystemSettings, false)
+ AutoKickStartStrength = BooleanOptionItem.Create(60126, Translator.Get("autoKickStartStrength"), false, TabGroup.ModerationSettings, false)
.SetParent(AutoKickStart);
+ TabGroupAccess = TextOptionItem.Create(60127, Translator.Get("tabGroupAccess"), TabGroup.ModerationSettings)
+ .SetColor(Color.red);
+ SlashColorCmd = StringOptionItem.Create(60128, Translator.Get("slashColorCmd"), accessLevels, 1, TabGroup.ModerationSettings, false);
+ SlashRolesAndGamemodeCmd = StringOptionItem.Create(60129, Translator.Get("slashRolesAndGamemodeCmd"), accessLevels, 1, TabGroup.ModerationSettings, false);
+ SlashLastGameCmd = StringOptionItem.Create(60130, Translator.Get("slashLastGameCmd"), accessLevels, 1, TabGroup.ModerationSettings, false);
+ SlashMapAndSeekerCmd = StringOptionItem.Create(60131, Translator.Get("slashMapAndSeekerCmd"), accessLevels, 1, TabGroup.ModerationSettings, false);
+ SlashKickCmd = StringOptionItem.Create(60132, Translator.Get("slashKickCmd"), accessLevels, 2, TabGroup.ModerationSettings, false);
+ SlashBanCmd = StringOptionItem.Create(60133, Translator.Get("slashBanCmd"), accessLevels, 2, TabGroup.ModerationSettings, false);
+ SlashEndMeetingCmd = StringOptionItem.Create(60134, Translator.Get("slashEndMeetingCmd"), accessLevels, 3, TabGroup.ModerationSettings, false);
+ SlashStartAndEndGameCmd = StringOptionItem.Create(60135, Translator.Get("slashStartAndEndGameCmd"), accessLevels, 3, TabGroup.ModerationSettings, false);
+
TabGroupAutomation = TextOptionItem.Create(60149, Translator.Get("tabGroupAutomation"), TabGroup.SystemSettings)
.SetColor(Color.yellow);
-
AutoSendGameInfo = BooleanOptionItem.Create(60150, Translator.Get("autoSendGameInfo"), true, TabGroup.SystemSettings, false);
- AutoRejoinLobby = BooleanOptionItem.Create(60210, Translator.Get("autoRejoinLobby"), false, TabGroup.SystemSettings, false);
- AutoStartTimer = IntegerOptionItem.Create(64420, Translator.Get("autoStartTimer"), new(1, 5, 1), 5, TabGroup.SystemSettings, false)
- .SetValueFormat(OptionFormat.Seconds);
- WaitAutoStart = IntegerOptionItem.Create(64421, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false)
- .SetValueFormat(OptionFormat.Seconds);
- PlayerAutoStart = IntegerOptionItem.Create(64422, Translator.Get("playerAutoStart"), new(1, 15, 1), 1, TabGroup.SystemSettings, false);
- EnableJoinMessages = BooleanOptionItem.Create(64423, Translator.Get("enableJoinMessages"), true, TabGroup.SystemSettings, false);
- MessagePerPlayerNum = IntegerOptionItem.Create(64424, Translator.Get("messagePerPlayerNum"), new(1, 15, 1), 5, TabGroup.SystemSettings, false)
+ AutoRejoinLobby = BooleanOptionItem.Create(60151, Translator.Get("autoRejoinLobby"), false, TabGroup.SystemSettings, false);
+ EnableJoinMessages = BooleanOptionItem.Create(60152, Translator.Get("enableJoinMessages"), true, TabGroup.SystemSettings, false);
+ MessagePerPlayerNum = IntegerOptionItem.Create(60153, Translator.Get("messagePerPlayerNum"), new(1, 15, 1), 5, TabGroup.SystemSettings, false)
.SetParent(EnableJoinMessages);
- TabGroupMisc = TextOptionItem.Create(60379, Translator.Get("tabGroupMisc"), TabGroup.SystemSettings)
- .SetColor(Color.green);
-
- StartCountdown = IntegerOptionItem.Create(60380, Translator.Get("startCountdown"), new(1, 5, 1), 5, TabGroup.SystemSettings, false)
+ TabGroupAutostart = TextOptionItem.Create(64425, Translator.Get("tabGroupAutostart"), TabGroup.SystemSettings)
+ .SetColor(Color.yellow);
+ AutoStartTimer = IntegerOptionItem.Create(64426, Translator.Get("autoStartTimer"), new(1, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
- AllowFortegreen = BooleanOptionItem.Create(60382, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false);
+ WaitAutoStart = IntegerOptionItem.Create(64427, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false)
+ .SetValueFormat(OptionFormat.Seconds);
+ PlayerAutoStart = IntegerOptionItem.Create(64428, Translator.Get("playerAutoStart"), new(1, 15, 1), 1, TabGroup.SystemSettings, false);
+ Rehost = BooleanOptionItem.Create(64429, Translator.Get("rehost"), false, TabGroup.SystemSettings, false);
+ Public = BooleanOptionItem.Create(64430, Translator.Get("public"), false, TabGroup.SystemSettings, false)
+ .SetParent(Rehost);
+
+ TabGroupMisc = TextOptionItem.Create(60378, Translator.Get("tabGroupMisc"), TabGroup.SystemSettings)
+ .SetColor(Color.yellow);
+
+ MapVoteDuration = IntegerOptionItem.Create(60379, Translator.Get("mapVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
+ .SetValueFormat(OptionFormat.Seconds)
+ .SetColor(Color.red);
+ StartCountdown = IntegerOptionItem.Create(60380, Translator.Get("startCountdown"), new(1, 5, 1), 5, TabGroup.SystemSettings, false)
+ .SetValueFormat(OptionFormat.Seconds)
+ .SetColor(Color.red);
+ AllowFortegreen = BooleanOptionItem.Create(60382, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false)
+ .SetColor(Color.red);
NoGameEnd = BooleanOptionItem.Create(60383, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false)
.SetColor(Color.red);
- TabGroupAccess = TextOptionItem.Create(60400, Translator.Get("tabGroupAccess"), TabGroup.SystemSettings)
- .SetColor(Color.red);
- SlashColorCmd = StringOptionItem.Create(60401, Translator.Get("slashColorCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
- SlashRolesAndGamemodeCmd = StringOptionItem.Create(60402, Translator.Get("slashRolesAndGamemodeCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
- SlashLastGameCmd = StringOptionItem.Create(60403, Translator.Get("slashLastGameCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
- SlashKickCmd = StringOptionItem.Create(60405, Translator.Get("slashKickCmd"), accessLevels, 2, TabGroup.SystemSettings, false);
- SlashBanCmd = StringOptionItem.Create(60406, Translator.Get("slashBanCmd"), accessLevels, 2, TabGroup.SystemSettings, false);
- SlashEndMeetingCmd = StringOptionItem.Create(60407, Translator.Get("slashEndMeetingCmd"), accessLevels, 3, TabGroup.SystemSettings, false);
- SlashStartAndEndGameCmd = StringOptionItem.Create(60408, Translator.Get("slashStartAndEndGameCmd"), accessLevels, 3, TabGroup.SystemSettings, false);
-
// Gamemode Settings
TabGroupHNS = TextOptionItem.Create(70000, Translator.Get("tabGroupHNS"), TabGroup.GamemodeSettings)
@@ -368,9 +405,11 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Level);
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
- .SetColor(Color.yellow);
+ .SetColor(Color.green);
SNSSettingsOverride = BooleanOptionItem.Create(70051, Translator.Get("snsSettingsOverride"), true, TabGroup.GamemodeSettings, false);
SNSChatInGame = BooleanOptionItem.Create(70063, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
+ SNSChatInGameExtend = BooleanOptionItem.Create(70064, Translator.Get("snsChatInGameExtend"), false, TabGroup.GamemodeSettings, false)
+ .SetParent(SNSChatInGame);
CantKillTime = IntegerOptionItem.Create(70053, Translator.Get("cantKillTime"), new(0, 60, 5), 20, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
MisfiresToSuicide = IntegerOptionItem.Create(70052, Translator.Get("misfiresToSuicide"), new(1, 10, 1), 2, TabGroup.GamemodeSettings, false);
@@ -400,7 +439,7 @@ namespace AmongUsRevamped
.SetColor(Color.red);
TabGroupSpeedrun = TextOptionItem.Create(70075, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
- .SetColor(Color.blue);
+ .SetColor(Color.green);
SpeedrunSettingsOverride = BooleanOptionItem.Create(70076, Translator.Get("speedrunSettingsOverride"), true, TabGroup.GamemodeSettings, false);
GameAutoEndsAfter = IntegerOptionItem.Create(70077, Translator.Get("gameAutoEndsAfter"), new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
@@ -408,7 +447,7 @@ namespace AmongUsRevamped
// Gameplay Settings
TabGroupSabotages = TextOptionItem.Create(60450, Translator.Get("tabGroupSabotages"), TabGroup.ModSettings)
- .SetColor(Color.red);
+ .SetColor(Color.blue);
DeadImpostorsCanSabotage = BooleanOptionItem.Create(60455, Translator.Get("deadImpostorsCanSabotage"), true, TabGroup.ModSettings, false)
.SetColor(Color.red);
DisableSabotage = BooleanOptionItem.Create(60456, Translator.Get("disableSabotage"), false, TabGroup.ModSettings, false)
@@ -436,100 +475,77 @@ namespace AmongUsRevamped
TabGroupGameplayGeneral = TextOptionItem.Create(60564, Translator.Get("tabGroupGameplayGeneral"), TabGroup.ModSettings)
.SetColor(Color.blue);
- DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60565, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60565, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false);
- ChangeDecontaminationTime = BooleanOptionItem.Create(60550, Translator.Get("changeDecontaminationTime"), false, TabGroup.ModSettings, false)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ 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)
.SetParent(ChangeDecontaminationTime)
- .SetValueFormat(OptionFormat.Seconds)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ .SetValueFormat(OptionFormat.Seconds);
DecontaminationDoorOpenTimeOnMiraHQ = FloatOptionItem.Create(60552, Translator.Get("decontaminationDoorOpenTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
.SetParent(ChangeDecontaminationTime)
- .SetValueFormat(OptionFormat.Seconds)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ .SetValueFormat(OptionFormat.Seconds);
DecontaminationTimeOnPolus = FloatOptionItem.Create(60553, Translator.Get("decontaminationTimeOnPolus"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
.SetParent(ChangeDecontaminationTime)
- .SetValueFormat(OptionFormat.Seconds)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ .SetValueFormat(OptionFormat.Seconds);
DecontaminationDoorOpenTimeOnPolus = FloatOptionItem.Create(60554, Translator.Get("decontaminationDoorOpenTimeOnPolus"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
.SetParent(ChangeDecontaminationTime)
- .SetValueFormat(OptionFormat.Seconds)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ .SetValueFormat(OptionFormat.Seconds);
- DisableSporeTrigger = BooleanOptionItem.Create(60558, Translator.Get("disableSporeTrigger"), false, TabGroup.ModSettings, false)
- .SetColor(new Color32(19, 188, 233, byte.MaxValue));
+ DisableSporeTrigger = BooleanOptionItem.Create(60558, Translator.Get("disableSporeTrigger"), false, TabGroup.ModSettings, false);
- DisableDevices = BooleanOptionItem.Create(22900, Translator.Get("disableDevices"), false, TabGroup.ModSettings, false)
- .SetColor(Color.red);
+ DisableDevices = BooleanOptionItem.Create(22900, Translator.Get("disableDevices"), false, TabGroup.ModSettings, false);
DisableSkeldDevices = BooleanOptionItem.Create(22905, Translator.Get("disableSkeldDevices"), false, TabGroup.ModSettings, false)
.SetParent(DisableDevices)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisableSkeldAdmin = BooleanOptionItem.Create(22906, Translator.Get("disableSkeldAdmin"), false, TabGroup.ModSettings, false)
- .SetParent(DisableSkeldDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableSkeldDevices);
DisableSkeldCamera = BooleanOptionItem.Create(22907, Translator.Get("disableSkeldCamera"), false, TabGroup.ModSettings, false)
- .SetParent(DisableSkeldDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableSkeldDevices);
DisableMiraHQDevices = BooleanOptionItem.Create(22908, Translator.Get("disableMiraHQDevices"), false, TabGroup.ModSettings, false)
.SetParent(DisableDevices)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisableMiraHQAdmin = BooleanOptionItem.Create(22909, Translator.Get("disableMiraHQAdmin"), false, TabGroup.ModSettings, false)
- .SetParent(DisableMiraHQDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableMiraHQDevices);
DisableMiraHQDoorLog = BooleanOptionItem.Create(22910, Translator.Get("disableMiraHQDoorLog"), false, TabGroup.ModSettings, false)
- .SetParent(DisableMiraHQDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableMiraHQDevices);
DisablePolusDevices = BooleanOptionItem.Create(22911, Translator.Get("disablePolusDevices"), false, TabGroup.ModSettings, false)
.SetParent(DisableDevices)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisablePolusAdmin = BooleanOptionItem.Create(22912, Translator.Get("disablePolusAdmin"), false, TabGroup.ModSettings, false)
- .SetParent(DisablePolusDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisablePolusDevices);
DisablePolusCamera = BooleanOptionItem.Create(22913, Translator.Get("disablePolusCamera"), false, TabGroup.ModSettings, false)
- .SetParent(DisablePolusDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisablePolusDevices);
DisablePolusVital = BooleanOptionItem.Create(22914, Translator.Get("disablePolusVital"), false, TabGroup.ModSettings, false)
- .SetParent(DisablePolusDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisablePolusDevices);
DisableAirshipDevices = BooleanOptionItem.Create(22915, Translator.Get("disableAirshipDevices"), false, TabGroup.ModSettings, false)
.SetParent(DisableDevices)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisableAirshipCockpitAdmin = BooleanOptionItem.Create(22916, Translator.Get("disableAirshipCockpitAdmin"), false, TabGroup.ModSettings, false)
- .SetParent(DisableAirshipDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableAirshipDevices);
DisableAirshipRecordsAdmin = BooleanOptionItem.Create(22917, Translator.Get("disableAirshipRecordsAdmin"), false, TabGroup.ModSettings, false)
- .SetParent(DisableAirshipDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableAirshipDevices);
DisableAirshipCamera = BooleanOptionItem.Create(22918, Translator.Get("disableAirshipCamera"), false, TabGroup.ModSettings, false)
- .SetParent(DisableAirshipDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableAirshipDevices);
DisableAirshipVital = BooleanOptionItem.Create(22919, Translator.Get("disableAirshipVital"), false, TabGroup.ModSettings, false)
- .SetParent(DisableAirshipDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableAirshipDevices);
DisableFungleDevices = BooleanOptionItem.Create(22925, Translator.Get("disableFungleDevices"), false, TabGroup.ModSettings, false)
.SetParent(DisableDevices)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisableFungleVital = BooleanOptionItem.Create(22927, Translator.Get("disableFungleVital"), false, TabGroup.ModSettings, false)
- .SetParent(DisableFungleDevices)
- .SetColor(new Color32(255, 153, 153, byte.MaxValue));
+ .SetParent(DisableFungleDevices);
TabGroupTasks = TextOptionItem.Create(22995, Translator.Get("tabGroupTasks"), TabGroup.ModSettings)
- .SetColor(Color.yellow);
+ .SetColor(Color.blue);
TaskPercentNeededToWin = IntegerOptionItem.Create(22996, Translator.Get("taskPercentNeededToWin"), new(30, 100, 5), 100, TabGroup.ModSettings, false)
- .SetColor(new Color32(255, 255, 153, byte.MaxValue))
.SetValueFormat(OptionFormat.Percent);
- AllPlayersSameTasks = BooleanOptionItem.Create(22998, Translator.Get("allPlayersSameTasks"), false, TabGroup.ModSettings, false)
- .SetColor(new Color32(255, 255, 153, byte.MaxValue));
- OverrideTaskSettings = BooleanOptionItem.Create(22999, Translator.Get("overrideTaskSettings"), false, TabGroup.ModSettings, false)
- .SetColor(new Color32(255, 255, 153, byte.MaxValue));
+ AllPlayersSameTasks = BooleanOptionItem.Create(22998, Translator.Get("allPlayersSameTasks"), false, TabGroup.ModSettings, false);
+ OverrideTaskSettings = BooleanOptionItem.Create(22999, Translator.Get("overrideTaskSettings"), false, TabGroup.ModSettings, false);
DisableMiraTasks = BooleanOptionItem.Create(23000, Translator.Get("disableMiraTasks"), false, TabGroup.ModSettings, false)
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
diff --git a/Modules/EACR.cs b/Modules/EACR.cs
index a840b27..6bcebfd 100644
--- a/Modules/EACR.cs
+++ b/Modules/EACR.cs
@@ -201,4 +201,25 @@ internal class EACR
return true;
}
}
+
+ public static void VentCheat(PlayerControl player, Vent __instance)
+ {
+ AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
+ Logger.SendInGame($"{player.Data.PlayerName} was banned for invalid venting (cheating)");
+ Logger.Info($" {player.Data.PlayerName} was banned for invalid venting", "EACR");
+ }
+
+ public static void PlayAnimationCheat(PlayerControl player)
+ {
+ AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
+ Logger.SendInGame($"{player.Data.PlayerName} was banned for an invalid animation (cheating)");
+ Logger.Info($" {player.Data.PlayerName} was banned for an invalid animation", "EACR");
+ }
+
+ public static void TaskCheat(PlayerControl player)
+ {
+ AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
+ 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");
+ }
}
\ No newline at end of file
diff --git a/Modules/FixedUpdate.cs b/Modules/FixedUpdate.cs
index 88b5e5f..7f56b89 100644
--- a/Modules/FixedUpdate.cs
+++ b/Modules/FixedUpdate.cs
@@ -110,7 +110,7 @@ class FixedUpdateInGamePatch
Utils.CustomWinnerEndGame(PlayerControl.LocalPlayer, 0);
Logger.Info($" No one won because the game took longer than {Options.GameAutoEndsAfter.GetInt()}s", "SpeedrunManager");
- NormalGameEndChecker.CheckWinnerText("NoOneWin");
+ NormalGameEndChecker.CheckWinnerText("NoOneWinsSpeedrun");
}
}
}
diff --git a/Modules/OptionItem/OptionItem.cs b/Modules/OptionItem/OptionItem.cs
index fdf5172..1dcb035 100644
--- a/Modules/OptionItem/OptionItem.cs
+++ b/Modules/OptionItem/OptionItem.cs
@@ -214,6 +214,7 @@ namespace AmongUsRevamped
public enum TabGroup
{
SystemSettings,
+ ModerationSettings,
//CustomRoleSettings,
ModSettings,
GamemodeSettings,
diff --git a/Modules/Rehost.cs b/Modules/Rehost.cs
new file mode 100644
index 0000000..4a2337c
--- /dev/null
+++ b/Modules/Rehost.cs
@@ -0,0 +1,27 @@
+using InnerNet;
+using UnityEngine;
+using System;
+using AmongUs.GameOptions;
+
+namespace AmongUsRevamped
+{
+ [HarmonyPatch(typeof(InnerNetClient), nameof(InnerNetClient.DisconnectInternal))]
+ public static class DisconnectManager
+ {
+ public static bool Rehosting;
+ public static void Prefix(InnerNetClient __instance, DisconnectReasons reason, string stringReason)
+ {
+ Logger.Info($" Disconnected due to {reason}/{stringReason}, ping:{__instance.Ping})", "DisconnectManager");
+
+ if (!Options.Rehost.GetBool() || reason == DisconnectReasons.NewConnection || reason == DisconnectReasons.ConnectionLimit || reason == DisconnectReasons.ExitGame) return;
+
+ _ = new LateTask(() =>
+ {
+ Rehosting = true;
+ PSManager.Instance.CreateGame(GameModes.Normal);
+ Logger.Info(Translator.Get("rehostSuccess"), "DisconnectManager");
+
+ }, 5f, "RehostManager");
+ }
+ }
+}
diff --git a/Modules/Utils.cs b/Modules/Utils.cs
index a7f5107..af719d2 100644
--- a/Modules/Utils.cs
+++ b/Modules/Utils.cs
@@ -73,6 +73,8 @@ public static class Utils
{
case TabGroup.SystemSettings:
return Translator.Get("systemSettings");
+ case TabGroup.ModerationSettings:
+ return Translator.Get("moderationSettings");
case TabGroup.ModSettings:
return Translator.Get("gameplaySettings");
case TabGroup.GamemodeSettings:
@@ -206,7 +208,7 @@ public static class Utils
MurderPlayerPatch.misfireCount.Clear();
MurderPlayerPatch.killCount.Clear();
- LateTask.Tasks.Clear();
+ LateTask.Tasks.RemoveAll(x => x.name != "RehostManager");
NormalGameEndChecker.ImpCheckComplete = false;
CreateOptionsPickerPatch.SetDleks2 = false;
CanCallMeetings = true;
@@ -224,7 +226,7 @@ public static class Utils
PlayerControlSetRolePatch.FirstAssign = true;
PlayerControlSetRolePatch.manualSeekers.Clear();
- CoShowIntroPatch.IntroInitiated = false;
+ OnGameStartPatch.PastStartScreen = false;
}
public static PlayerControl[] AllAlivePlayerControls
@@ -571,4 +573,94 @@ public static class Utils
}
else return $"{p.Data.RoleType}";
}
+
+ public static int skeldVotes;
+ public static int miraVotes;
+ public static int polusVotes;
+ public static int airshipVotes;
+ public static int fungleVotes;
+ public static int dleksVotes;
+ public static bool MapVoteActive;
+ public static bool DleksEnabled;
+ public static readonly List HasVoted = [];
+ public static void MapVote(bool dleks, bool moderator)
+ {
+ if (MapVoteActive) return;
+
+ DleksEnabled = dleks;
+ 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);
+ 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 (dleks && !moderator) Utils.ChatCommand(DestroyableSingleton.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);
+ else if (!moderator) Utils.ChatCommand(DestroyableSingleton.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);
+
+ new LateTask(() =>
+ {
+ int highest = skeldVotes;
+ string winner = "Skeld";
+ byte mapId = 0;
+ bool tie = false;
+
+ void Check(int votes, string name, byte id)
+ {
+ if (votes > highest)
+ {
+ highest = votes;
+ winner = name;
+ mapId = id;
+ tie = false;
+ }
+ else if (votes == highest)
+ {
+ tie = true;
+ }
+ }
+
+ Check(miraVotes, "Mira HQ", 1);
+ Check(polusVotes, "Polus", 2);
+ Check(airshipVotes, "Airship", 4);
+ Check(fungleVotes, "The Fungle", 5);
+ if (DleksEnabled) Check(dleksVotes, "Eht Dleks", 3);
+
+ string voteResults = $"Skeld: {skeldVotes}\n" + $"Mira: {miraVotes}\n" + $"Polus: {polusVotes}\n" + $"Airship: {airshipVotes}\n" + $"Fungle: {fungleVotes}";
+ if (DleksEnabled) voteResults += $"\nEht Dleks: {dleksVotes}";
+
+ if (highest == 0)
+ {
+ ModeratorChatCommand("Lol, no one voted. Hooray for democracy?", "", false);
+ }
+ else if (tie)
+ {
+ ModeratorChatCommand($"Map vote tied. No new map selected.\n\n{voteResults}", "", false);
+ }
+ else
+ {
+ ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
+
+ if (winner == "Eht Dleks")
+ {
+ CreateOptionsPickerPatch.ApplyDleks(Utils.isHideNSeek);
+ }
+ else
+ {
+ CreateOptionsPickerPatch.ClearDleks();
+
+ if (!Utils.isHideNSeek) Main.NormalOptions.MapId = mapId;
+ else Main.HideNSeekOptions.MapId = mapId;
+ }
+ }
+
+ skeldVotes = 0;
+ miraVotes = 0;
+ polusVotes = 0;
+ airshipVotes = 0;
+ fungleVotes = 0;
+ dleksVotes = 0;
+ HasVoted.Clear();
+
+ MapVoteActive = false;
+ }, Options.MapVoteDuration.GetInt(), "MapPoll");
+ }
}
\ No newline at end of file
diff --git a/Patches/ChatPatches.cs b/Patches/ChatPatches.cs
index facfa88..8f3c23c 100644
--- a/Patches/ChatPatches.cs
+++ b/Patches/ChatPatches.cs
@@ -396,10 +396,44 @@ internal static class SendChatPatch
if (__instance.timeSinceLastMessage < 3f || OnGameJoinedPatch.WaitingForChat) return false;
+ if (text == "/mapvote")
+ {
+ if (Utils.IsLobby)
+ {
+ Utils.MapVote(false, 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.SetText(string.Empty);
+ return false;
+ }
+ }
+
+ if (text == "/vote a" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) {Utils.skeldVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+ if (text == "/vote b" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) {Utils.miraVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+ if (text == "/vote c" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) {Utils.polusVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+ if (text == "/vote d" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) {Utils.airshipVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+ if (text == "/vote e" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) {Utils.fungleVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+ if (text == "/vote f" && Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId) && Utils.DleksEnabled) {Utils.dleksVotes++; Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);}
+
if (text == "/l" || text == "/lastgame")
{
if (string.IsNullOrEmpty(NormalGameEndChecker.LastWinReason) || Utils.InGame) return false;
Utils.ChatCommand(__instance, $"{NormalGameEndChecker.LastWinReason}", "", false);
+
+ __instance.freeChatField.textArea.Clear();
+ __instance.freeChatField.textArea.SetText(string.Empty);
return false;
}
@@ -588,7 +622,7 @@ public static class RPCHandlerPatch
BanManager.IsStartWord(__instance, text);
BanManager.IsWordBanned(__instance, text);
- if (text.StartsWith("/seeker ") && Utils.CheckAccessLevel(__instance.Data.FriendCode) >= Options.SlashEndMeetingCmd.GetValue())
+ if (text.StartsWith("/seeker ") && Utils.CheckAccessLevel(__instance.Data.FriendCode) >= Options.SlashMapAndSeekerCmd.GetValue())
{
if (!Utils.IsLobby || !Utils.isHideNSeek)
{
@@ -627,8 +661,9 @@ public static class RPCHandlerPatch
}
}
- if (text == "/clearseeker" && Utils.CheckAccessLevel(__instance.Data.FriendCode) >= Options.SlashEndMeetingCmd.GetValue())
+ if (text == "/clearseeker")
{
+ if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
PlayerControlSetRolePatch.manualSeekers.Clear();
HudManager.Instance.Chat.AddChat(PlayerControl.LocalPlayer, Translator.Get("clearedSeekers"));
}
@@ -697,8 +732,6 @@ public static class RPCHandlerPatch
}
}
- if (OnGameJoinedPatch.WaitingForChat || GameStartManagerUpdatePatch.CountingDown) return;
-
if (text == "/eg" || text == "/endgame")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashStartAndEndGameCmd.GetValue()) return;
@@ -722,6 +755,33 @@ public static class RPCHandlerPatch
GameStartManager.Instance.BeginGame();
}
+ if (OnGameJoinedPatch.WaitingForChat || GameStartManagerUpdatePatch.CountingDown) return;
+
+ if (text == "/mapvote")
+ {
+ if (Utils.IsLobby)
+ {
+ if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
+ Utils.MapVote(false, true);
+ }
+ }
+
+ if (text == "/allmapvote")
+ {
+ if (Utils.IsLobby)
+ {
+ if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
+ Utils.MapVote(true, true);
+ }
+ }
+
+ if (text == "/vote a" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId)) {Utils.skeldVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+ if (text == "/vote b" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId)) {Utils.miraVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+ if (text == "/vote c" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId)) {Utils.polusVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+ if (text == "/vote d" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId)) {Utils.airshipVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+ if (text == "/vote e" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId)) {Utils.fungleVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+ if (text == "/vote f" && Utils.MapVoteActive && !Utils.HasVoted.Contains(__instance.Data.PlayerId) && Utils.DleksEnabled) {Utils.dleksVotes++; Utils.HasVoted.Add(__instance.Data.PlayerId);}
+
if (text == "/l" || text == "/lastgame")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashLastGameCmd.GetValue()) return;
@@ -732,7 +792,7 @@ public static class RPCHandlerPatch
if (text == "/aur" || text == "/socials")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashLastGameCmd.GetValue()) return;
- Utils.ModeratorChatCommand("AUR socials:\n\ng i t h u b . c o m /\nApeMV/AmongUsRevamped\n\nd i s c o r d . g g /\n83Zhzhyhya", "", false);
+ Utils.ModeratorChatCommand("AUR socials:\n\ng i t h u b . c o m /\nApeMV/AmongUsRevamped\n\nd i s c о r d . g g /\n83Zhzhyhya", "", false);
}
if (text == "/0kc" || text == "/0killcooldown")
diff --git a/Patches/ClientOptionsPatch.cs b/Patches/ClientOptionsPatch.cs
index 3c9c0b4..88a7d1f 100644
--- a/Patches/ClientOptionsPatch.cs
+++ b/Patches/ClientOptionsPatch.cs
@@ -28,8 +28,7 @@ namespace AmongUsRevamped
static void GMButtonToggle()
{
- if (Main.GM.Value)
- HudManager.Instance.ShowPopUp(Translator.Get("gameMasterWarning"));
+ if (Main.GM.Value && Utils.IsLobby) HudManager.Instance.ShowPopUp(Translator.Get("gameMasterWarning"));
}
}
diff --git a/Patches/DleksPatch.cs b/Patches/DleksPatch.cs
index 953c8f6..eb9120a 100644
--- a/Patches/DleksPatch.cs
+++ b/Patches/DleksPatch.cs
@@ -25,7 +25,22 @@ class CreateOptionsPickerPatch
isSkeldFlipped = value;
}
}
-
+
+ public static void ApplyDleks(bool hideNSeek)
+ {
+ SetDleks = true;
+ FlippedSkeld = true;
+
+ if (!Utils.isHideNSeek) Main.NormalOptions.MapId = 0;
+ else Main.HideNSeekOptions.MapId = 0;
+ }
+
+ public static void ClearDleks()
+ {
+ SetDleks = false;
+ FlippedSkeld = false;
+ }
+
private static MapSelectButton DleksButton;
[HarmonyPatch]
public static class GameOptionsMapPickerPatch
diff --git a/Patches/EndGamePatches.cs b/Patches/EndGamePatches.cs
index b64f15f..faf6886 100644
--- a/Patches/EndGamePatches.cs
+++ b/Patches/EndGamePatches.cs
@@ -65,12 +65,12 @@ class NormalGameEndChecker
return;
}
- if (Utils.AliveImpostors == 0 || Winner == "Crewmate")
+ if ((Options.Gamemode.GetValue() != 2 && Utils.AliveImpostors == 0) || Winner == "Crewmate")
{
LastWinReason = "Crewmates Win!\n\nImpostors: " + impostorList;
canUpdateWinnerText = false;
}
- else if (Utils.AliveImpostors >= Utils.AliveCrewmates || Winner == "Impostor")
+ else if ((Options.Gamemode.GetValue() != 2 && Utils.AliveImpostors >= Utils.AliveCrewmates) || Winner == "Impostor")
{
LastWinReason = "Impostors Win!\n\nImpostors: " + impostorList;
canUpdateWinnerText = false;
diff --git a/Patches/GameSettingMenuPatch.cs b/Patches/GameSettingMenuPatch.cs
index abe9db4..bf7081a 100644
--- a/Patches/GameSettingMenuPatch.cs
+++ b/Patches/GameSettingMenuPatch.cs
@@ -115,6 +115,9 @@ namespace AmongUsRevamped
case TabGroup.SystemSettings:
__instance.MenuDescriptionText.text = Translator.Get("systemSettingsDesc");
break;
+ case TabGroup.ModerationSettings:
+ __instance.MenuDescriptionText.text = Translator.Get("moderationSettingsDesc");
+ break;
case TabGroup.ModSettings:
__instance.MenuDescriptionText.text = Translator.Get("gameplaySettingsDesc");
break;
diff --git a/Patches/IntroPatch.cs b/Patches/IntroPatch.cs
index 84de296..4e0a56e 100644
--- a/Patches/IntroPatch.cs
+++ b/Patches/IntroPatch.cs
@@ -9,14 +9,11 @@ namespace AmongUsRevamped;
[HarmonyPatch(typeof(HudManager), nameof(HudManager.CoShowIntro))]
internal static class CoShowIntroPatch
{
- public static bool IntroInitiated;
public static void Postfix(IntroCutscene __instance)
{
Logger.Info(" Intro initiated", "CoShowIntro");
if (!AmongUsClient.Instance.AmHost) return;
-
- IntroInitiated = true;
foreach (var p in PlayerControl.AllPlayerControls)
{
@@ -38,6 +35,19 @@ internal static class CoShowIntroPatch
Utils.CanCallMeetings = true;
}, 33f, "MeetingEnabled");
}
+
+ if (Options.Gamemode.GetValue() == 1 && Options.SNSChatInGameExtend.GetBool())
+ {
+ if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
+ {
+ Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nEmergency Meetings = Off", $"Crewmates win by doing tasks or surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone\n{Options.MisfiresToSuicide.GetInt()} wrong kill(s) = suicide", true);
+ }
+ else
+ {
+
+ Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nEmergency Meetings = Off", SendChatPatch.ConvertNum($"Crew wins by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImp wins by killing\nOne wrong kill = Can't kill for {Options.CantKillTime.GetInt()}s\n{Options.MisfiresToSuicide.GetInt()} wrong kills = suicide"), true);
+ }
+ }
}
}
diff --git a/Patches/JoinAndLeavePatches.cs b/Patches/JoinAndLeavePatches.cs
index cb870ba..00d982f 100644
--- a/Patches/JoinAndLeavePatches.cs
+++ b/Patches/JoinAndLeavePatches.cs
@@ -45,6 +45,12 @@ internal static class OnGameJoinedPatch
WaitingForChat = false;
}, 5.2f, "AutoSendGameInfo2");
}
+
+ if (Options.Public.GetBool() && DisconnectManager.Rehosting)
+ {
+ AmongUsClient.Instance.ChangeGamePublic(true);
+ DisconnectManager.Rehosting = false;
+ }
}
}
@@ -134,7 +140,7 @@ public static class SetLevelPatch
public static List HandledLevelKicks = [];
public static void Prefix(PlayerControl __instance, uint level)
{
- if (AmongUsClient.Instance.AmHost && level < Options.KickLowLevelPlayer.GetInt() - 1 && __instance.Data.ClientId != AmongUsClient.Instance.HostId)
+ if (AmongUsClient.Instance.AmHost && level < Options.KickLowLevelPlayer.GetInt() - 1 && __instance.Data.ClientId != AmongUsClient.Instance.HostId && Options.EnableKickLowLevelPlayer.GetBool())
{
if (level == 0 && Options.DontKickLevelOnes.GetBool()) return;
if (HandledLevelKicks.Contains(__instance)) return;
diff --git a/Patches/OnGameStartedPatch.cs b/Patches/OnGameStartedPatch.cs
index 0350f4b..8b912b0 100644
--- a/Patches/OnGameStartedPatch.cs
+++ b/Patches/OnGameStartedPatch.cs
@@ -43,7 +43,7 @@ class PlayerControlSetRolePatch
if (!ProcessedPlayers.Add(__instance.PlayerId)) return true;
- canOverrideRole = false;
+ // canOverrideRole = false;
if (Utils.isHideNSeek && Seekers.Count() == 0 && Options.NumSeekers.GetInt() > 0)
{
@@ -110,7 +110,7 @@ class PlayerControlSetRolePatch
Seekers.Clear();
ProcessedPlayers.Clear();
- Logger.Info("PCSRP successful", "RoleManaging");
+ Logger.Info(" PCSRP successful", "RoleManaging");
}
return true;
@@ -120,6 +120,7 @@ class PlayerControlSetRolePatch
[HarmonyPatch(typeof(HudManager), nameof(HudManager.OnGameStart))]
internal static class OnGameStartPatch
{
+ public static bool PastStartScreen;
public static void Postfix()
{
if (AmongUsClient.Instance.AmHost && Options.Gamemode.GetValue() == 1 && Options.SNSChatInGame.GetBool())
@@ -139,5 +140,7 @@ internal static class OnGameStartPatch
{
Utils.StoredRoleText[p.PlayerId] = Utils.GetRoleText(p);
}
+
+ PastStartScreen = true;
}
}
\ No newline at end of file
diff --git a/Patches/PlayerControlPatches.cs b/Patches/PlayerControlPatches.cs
index e739406..08a3b3a 100644
--- a/Patches/PlayerControlPatches.cs
+++ b/Patches/PlayerControlPatches.cs
@@ -167,8 +167,21 @@ class PlayerControlCompleteTaskPatch
tasksPerPlayer[p.PlayerId] = p.Data.Tasks.Count;
}
+ if (__instance.Data.RoleType == RoleTypes.Impostor ||
+ __instance.Data.RoleType == RoleTypes.Shapeshifter ||
+ __instance.Data.RoleType == RoleTypes.Phantom ||
+ __instance.Data.RoleType == RoleTypes.Viper)
+ {
+ EACR.TaskCheat(__instance);
+ }
+
playerTasksCompleted[__instance.PlayerId]++;
+ if (playerTasksCompleted[__instance.PlayerId] > __instance.Data.Tasks.Count)
+ {
+ EACR.TaskCheat(__instance);
+ }
+
Logger.Info($" {__instance.Data.PlayerName} completed {idx}", "TaskPatch");
if (Options.Gamemode.GetValue() != 2) CalculateTaskWin();
@@ -192,7 +205,7 @@ class PlayerControlCompleteTaskPatch
public static void CalculateTaskWin()
{
- if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !CoShowIntroPatch.IntroInitiated) return;
+ if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !OnGameStartPatch.PastStartScreen) return;
//Logger.Info($" Checking if {GameData.Instance.CompletedTasks} - {ignoredCompletedTasks} >= ({GameData.Instance.TotalTasks} - {ignoredTasks}) * 0.01 * {Options.TaskPercentNeededToWin.GetInt()}", "TaskPatch");
@@ -215,3 +228,63 @@ public static class PlayerControlCheckSporeTriggerPatch
else return true;
}
}
+
+[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.PlayAnimation))]
+public static class PlayAnimationPatch
+{
+ public static void Prefix(PlayerControl __instance, byte animType)
+ {
+ if (!AmongUsClient.Instance.AmHost || __instance == PlayerControl.LocalPlayer) return;
+
+ var task = (TaskTypes)animType;
+
+ switch (task)
+ {
+ case TaskTypes.PrimeShields:
+ case TaskTypes.ClearAsteroids:
+ case TaskTypes.EmptyGarbage:
+ if (__instance.Data.RoleType == RoleTypes.Impostor ||
+ __instance.Data.RoleType == RoleTypes.Shapeshifter ||
+ __instance.Data.RoleType == RoleTypes.Phantom ||
+ __instance.Data.RoleType == RoleTypes.Viper)
+ {
+ EACR.PlayAnimationCheat(__instance);
+ return;
+ }
+ if (!GameManager.Instance.LogicOptions.GetVisualTasks())
+ {
+ {
+ EACR.PlayAnimationCheat(__instance);
+ return;
+ }
+ }
+ break;
+ }
+ }
+}
+
+[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.SetScanner))]
+public static class SetScannerPatch
+{
+ public static void Prefix(PlayerControl __instance)
+ {
+ if (!AmongUsClient.Instance.AmHost || __instance == PlayerControl.LocalPlayer) return;
+
+ if (__instance.Data.RoleType == RoleTypes.Impostor ||
+ __instance.Data.RoleType == RoleTypes.Shapeshifter ||
+ __instance.Data.RoleType == RoleTypes.Phantom ||
+ __instance.Data.RoleType == RoleTypes.Viper)
+ {
+ EACR.PlayAnimationCheat(__instance);
+ return;
+ }
+
+ if (!GameManager.Instance.LogicOptions.GetVisualTasks() && __instance != PlayerControl.LocalPlayer)
+ {
+ {
+ EACR.PlayAnimationCheat(__instance);
+ return;
+ }
+ }
+ }
+}
diff --git a/Patches/VentPatches.cs b/Patches/VentPatches.cs
index 2a3a5e3..a7b3e8a 100644
--- a/Patches/VentPatches.cs
+++ b/Patches/VentPatches.cs
@@ -1,8 +1,7 @@
-namespace AmongUsRevamped;
+using AmongUs.GameOptions;
-//Old Patch for Mayor
+namespace AmongUsRevamped;
-/*
[HarmonyPatch(typeof(Vent), nameof(Vent.EnterVent))]
class EnterVentPatch
{
@@ -10,11 +9,19 @@ class EnterVentPatch
{
if (!AmongUsClient.Instance.AmHost) return;
- if (CustomRoleManagement.PlayerRoles.TryGetValue(pc.PlayerId, out var role) && role == "Mayor")
+ if (pc.Data.RoleType != RoleTypes.Impostor &&
+ pc.Data.RoleType != RoleTypes.Shapeshifter &&
+ pc.Data.RoleType != RoleTypes.Phantom &&
+ pc.Data.RoleType != RoleTypes.Viper &&
+ pc.Data.RoleType != RoleTypes.Engineer &&
+ !pc.Data.IsDead)
{
- pc.CmdReportDeadBody(null);
- Logger.Info($" The Mayor, {pc.Data.PlayerName}, called a meeting by venting", "EnterVent");
+ EACR.VentCheat(pc, __instance);
+ }
+
+ if (__instance.Id > 15)
+ {
+ EACR.VentCheat(pc, __instance);
}
}
-}
-*/
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 31dff89..5abb41b 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
****
-# 🎮 Features (v1.9.1):
+# 🎮 Features (v1.9.2):
## ♠️ Client Side settings:
- Game Master (Spectator)
@@ -44,16 +44,15 @@
- Denyword system
- Banlist system
- Denyname system
-- Multi layer moderator system
+- Advanced Moderator system
- To add Admins, Moderators and VIP's, type the user's Friendcode in the designated files located in AUR-DATA
- Enable No Game End
- Custom starting countdown
## ♻️ Automation settings:
-- Automatically start game
+- Full Autohost and Rehost support
- Automatically rejoin lobby
- Automatically send winner info
-- Enable (configurable) Welcome Messages
-- The Welcome Template is in Templates.txt
+- Enable (configurable) Welcome Messages from Templates.txt
## 🔧 Gameplay Settings:
- Dead impostors can sabotage
- Disable critical sabotages (invividual)
@@ -70,8 +69,16 @@
- 0 Kill Cooldown -> Set Kill Cooldown to 0.01
- Shift and Seek
- Speedrun
+## 👾 Custom Anticheat:
+- Detect invalid sabotages
+- Detect malformed RPC's
+- Detect invalid venting
+- Detect Invalid animations
+- Detect Invalid task completions
+- Detect immortality cheats
+- These are all enabled by default
## ❓ Other Improvements:
-- Among Us Revamped supports other languages
+- Lanuage support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
- Select a language in Language/YourLanguage.txt
- Preset system for mod settings
- Command Helper
@@ -80,7 +87,6 @@
- Ability to cancel starting countdown
- Improved main menu
- Faster startup time
-- Custom anticheat system
- Zoom out in lobby or when dead
- See player kill/task count and Role when dead
- Higher and more accurate Option ranges
@@ -123,6 +129,8 @@
| /seeker {name} | Manually adds someone as Seeker in HnS |
| /seekers | Shows manual Seeker list in HnS |
| /clearseekers | Clears manual Seeker list in HnS |
+| /mapvote | Starts a vote for the map. Default maps only |
+| /allmapvote | Starts a vote for the map. Includes Eht Dleks |
**Credit to these mods and their developers for their code:**
diff --git a/Resources/Language/English.json b/Resources/Language/English.json
index 3f80334..19d1e5f 100644
--- a/Resources/Language/English.json
+++ b/Resources/Language/English.json
@@ -19,38 +19,53 @@
"language": "Language (Requires Restart)",
"gamemode": "Gamemode",
"tabGroupMain": "Moderation",
+ "tabGroupLevelKick": "Level Moderation",
+ "enableKickLowLevelPlayer": "Kick Low Level Players",
"kickLowLevelPlayer": "Kick Players Under Level",
"tempBanLowLevelPlayer": "Ban Instead Of Kick",
"dontKickLevelOnes": "Don't Kick Lv.1 Players For Glitched Lobbies",
+ "tabGroupKickInvalidFriendCodes": "Invalid Friendcodes",
"kickInvalidFriendCodes": "Kick Invalid (Empty) Friendcodes",
"tempBanInvalidFriendCodes": "Ban Instead Of Kick",
"deniedWordsToKick": "Sent Denied Words To Kick Player",
"moderatorCanUseCommand": "Moderators can use commands",
+ "tabGroupAutoKickStart": "Start Words",
"autoKickStart": "Kick Players Who Say Start",
"autoKickStartAsBan": "Ban Instead Of Kick",
- "autoKickStartTimes": "Start messages needed to kick",
+ "autoKickStartTimes": "Sent Start Words To Kick Player",
"autoKickStartStrength": "Strict detection mode",
+
"tabGroupAutomation": "Automation",
"autoSendGameInfo": "Automatically send winner info",
"autoRejoinLobby": "Auto Rejoin Lobby",
+
+ "tabGroupAutostart": "Autohost",
"autoStartTimer": "Countdown For Auto Start",
"waitAutoStart": "Auto Start After",
"playerAutoStart": "Players Needed To Auto Start",
+ "rehost": "Automatically Recreate Lobby On Disconnect",
+ "public": "Automatically Publicize New Lobby",
"enableJoinMessages": "Enable Welcome Messages",
"messagePerPlayerNum": "Message Per Amount Of Joins",
- "tabGroupMisc": "Miscelleneous",
+
+ "tabGroupMisc": "Experimental",
"startCountdown": "Default Starting Countdown",
"colorCommandLevel": "Who Can use Color Commands",
"allowFortegreen": "Allow Fortegreen Color",
"noGameEnd": "No Game End",
+ "mapVoteDuration": "Map Vote Duration",
+
+ "tabGroupDeniedWords": "Denied Words",
+ "enableDeniedWords": "Kick Players Who Say Denied Words",
"tabGroupAccess": "Access Levels",
"slashColorCmd": "Who Can Use /color",
"slashRolesAndGamemodeCmd": "Who Can Use /r & Templates",
"slashLastGameCmd": "Who Can Use /l & /aur",
+ "slashMapAndSeekerCmd": "Who Can Use /seeker & /mapvote",
"slashKickCmd": "Who Can Use /kick & /ckick",
"slashBanCmd": "Who Can Use /ban & /cban",
- "slashEndMeetingCmd": "Who Can Use /endmeeting & /seeker",
+ "slashEndMeetingCmd": "Who Can Use /endmeeting",
"slashStartAndEndGameCmd": "Who Can Use /startgame & /endgame",
"tabGroupCrewmate": "Crewmate Roles",
@@ -65,6 +80,7 @@
"noKcdSettingsOverride": "Auto Update Settings",
"tabGroupSNS": "Shift and Seek",
"snsChatInGame": "Chat during gameplay (experimental)",
+ "snsChatInGameExtend": "Send gamemode info after game start",
"snsSettingsOverride": "Auto Update Settings",
"cantKillTime": "After Misfiring, Can't kill for",
"misfiresToSuicide": "Suicide After Amount Of Misfires",
@@ -270,17 +286,23 @@
"seekerDesc": "Adds player as Seeker in HnS.",
"seekersDesc": "Shows all manually selected Seekers.",
"clearSeekerDesc": "Clears the manual Seeker list.",
+ "mapVoteDesc": "Starts a vote between the 5 core maps.",
+ "allMapVoteDesc": "Starts a vote between all 6 maps, including Eht Dleks.",
"banWordKick": "{0} was kicked because they sent a word in DeniedWords.txt {1} time(s)",
"startWordKick": "{0} was kicked because they sent a word in StartWords.txt {1} time(s)",
+ "banWordBan": "{0} was banned because they sent a word in DeniedWords.txt {1} time(s)",
+ "startWordBan": "{0} was banned because they sent a word in StartWords.txt {1} time(s)",
"pluginWarning": "WARNING:\nYou have 2 or more detected Plugins.\nAmong Us Revamped is not compatible with most mods.\nIf you find bugs, they are most likely due to incompatibility.",
"systemSettings": "System Settings",
+ "moderationSettings": "Moderation Settings",
"gameplaySettings": "Gameplay Settings",
"gamemodeSettings": "Gamemode Settings",
"systemSettingsDesc": "Quality settings to improve comfort and testing.",
+ "moderationSettingsDesc": "Moderation settings to combat toxicity and misconduct.",
"gameplaySettingsDesc": "Gameplay settings to improve the in-game experience.",
"gamemodeSettingsDesc": "Situational settings to apply for specific gamemodes.",
@@ -291,5 +313,7 @@
"onlyYou": "Only You",
"seekers": "Seekers: ",
- "clearedSeekers": "Successfully cleared the manual Seeker list."
+ "clearedSeekers": "Successfully cleared the manual Seeker list.",
+
+ "rehostSuccess": "Successfully rehosted a lobby"
}
diff --git a/Resources/Language/Japanese.json b/Resources/Language/Japanese.json
index 3b81c38..87ace66 100644
--- a/Resources/Language/Japanese.json
+++ b/Resources/Language/Japanese.json
@@ -1,287 +1,295 @@
{
"LanguageID": "4",
+ "gameMaster": "ゲームマスター",
+ "showFPS": "FPSを表示",
+ "autoStart": "自動スタート",
+ "enableDarkTheme": "ダークテーマを有効化",
+ "enableLobbyMusic": "ロビーBGM",
+ "disableInfoWhenDead": "死亡時に情報を非表示",
+ "disableCommandHelper": "コマンドヘルパーを無効化",
"disableCompatibilityWarning": "互換性警告を無効化",
+ "gameMasterWarning": "ゲームマスターをオフにするまで観戦モードになります。警告: この設定が有効な場合、役職の割り当てが正確に行われない可能性があります。",
+
+ "cancelStartCountdown": "カウントダウンがキャンセルされました",
+
+ "invalidFriendCodeKick": "{0} は無効なフレンドコードのためキックされました",
+ "invalidFriendCodeBan": "{0} は無効なフレンドコードのためBANされました",
+ "language": "言語 (再起動が必要)",
+ "gamemode": "ゲームモード",
+ "tabGroupMain": "モデレーション",
+ "kickLowLevelPlayer": "指定レベル未満のプレイヤーをキック",
+ "tempBanLowLevelPlayer": "キックの代わりにBAN",
+ "dontKickLevelOnes": "Lv.1プレイヤーをキックしない (バグロビー対策)",
+ "kickInvalidFriendCodes": "無効(空欄)なフレンドコードをキック",
+ "tempBanInvalidFriendCodes": "キックの代わりにBAN",
+ "deniedWordsToKick": "NGワード送信者をキック",
+ "moderatorCanUseCommand": "モデレーターのコマンド使用を許可",
+ "autoKickStart": "「Start/開始」と発言したプレイヤーをキック",
+ "autoKickStartAsBan": "キックの代わりにBAN",
+ "autoKickStartTimes": "キックに必要な催促メッセージ回数",
+ "autoKickStartStrength": "厳格検出モード",
+ "tabGroupAutomation": "自動化",
+ "autoSendGameInfo": "勝者情報を自動送信",
+ "autoRejoinLobby": "ロビーへ自動再参加",
+ "autoStartTimer": "自動スタートのカウントダウン",
+ "waitAutoStart": "自動スタートまでの待機時間",
+ "playerAutoStart": "自動スタートに必要な人数",
+ "enableJoinMessages": "参加歓迎メッセージを有効化",
+ "messagePerPlayerNum": "指定参加人数ごとの通知",
+ "tabGroupMisc": "その他",
+ "startCountdown": "デフォルトのカウントダウン",
+ "colorCommandLevel": "カラーコマンドの使用権限",
+ "allowFortegreen": "フォルテグリーン色を許可",
+ "noGameEnd": "ゲーム終了なし",
+
+ "tabGroupAccess": "アクセス権限",
+ "slashColorCmd": "/color の使用権限",
+ "slashRolesAndGamemodeCmd": "/r & テンプレート の使用権限",
+ "slashLastGameCmd": "/l & /aur の使用権限",
+ "slashKickCmd": "/kick & /ckick の使用権限",
+ "slashBanCmd": "/ban & /cban の使用権限",
+ "slashEndMeetingCmd": "/endmeeting & /seeker の使用権限",
+ "slashStartAndEndGameCmd": "/startgame & /endgame の使用権限",
+
+ "tabGroupCrewmate": "クルー役職",
+ "tabGroupNeutral": "第三陣営役職",
+ "tabGroupImpostor": "インポスター役職",
+
+ "tabGroupStandard": "ノーマル",
+
+ "tabGroupHNS": "かくれんぼ (Hide and Seek)",
+ "numSeekers": "鬼の人数",
+ "tabGroup0Kcd": "キルクールダウン0秒",
+ "noKcdSettingsOverride": "設定を自動更新",
+ "tabGroupSNS": "シェイプ&シーク (Shift and Seek)",
+ "snsChatInGame": "ゲーム中のチャットを許可 (ベータ機能)",
+ "snsSettingsOverride": "設定を自動更新",
+ "cantKillTime": "お手付き後のキル不可時間",
+ "misfiresToSuicide": "指定回数のお手付きで自滅",
+ "crewAutoWinsGameAfter": "クルーの自動勝利カウントダウン",
+ "snsDisableSabotage": "SnS緊急サボタージュを無効化",
+ "snsDisableReactor": "リアクターサボタージュを無効化",
+ "snsDisableOxygen": "O2サボタージュを無効化",
+ "snsDisableLights": "停電サボタージュを無効化",
+ "snsDisableComms": "通信妨害サボタージュを無効化",
+ "snsDisableHeli": "墜落危険サボタージュを無効化",
+ "snsDisableMushroomMixup": "キノコシャッフルサボタージュを無効化",
+ "snsDisableCloseDoor": "SnSドア閉鎖を無効化",
+ "tabGroupSpeedrun": "スピードラン",
+ "speedrunSettingsOverride": "設定を自動更新",
+ "gameAutoEndsAfter": "ゲームの自動終了時間",
+ "engineerMode": "全員エンジニア",
+
+ "tabGroupSabotages": "サボタージュ設定",
+ "deadImpostorsCanSabotage": "幽霊インポスターのサボタージュを許可",
+ "disableSabotage": "緊急サボタージュを無効化",
+ "disableReactor": "リアクターサボタージュを無効化",
+ "disableOxygen": "O2サボタージュを無効化",
+ "disableLights": "停電サボタージュを無効化",
+ "disableComms": "通信妨害サボタージュを無効化",
+ "disableHeli": "墜落危険サボタージュを無効化",
+ "disableMushroomMixup": "キノコシャッフルサボタージュを無効化",
+ "disableCloseDoor": "ドア閉鎖を無効化",
+
+ "tabGroupGameplayGeneral": "一般ゲーム設定",
+ "disableAnnoyingMeetingCalls": "開始30秒間の緊急会議召集を禁止",
+ "disableReport": "通報を無効化",
+ "changeDecontaminationTime": "除染時間を変更 (ノーマル限定)",
+ "decontaminationTimeOnMiraHQ": "MIRA HQ 除染所要時間",
+ "decontaminationDoorOpenTimeOnMiraHQ": "MIRA HQ 除染ドア開放時間",
+ "decontaminationTimeOnPolus": "Polus 除染所要時間",
+ "decontaminationDoorOpenTimeOnPolus": "Polus 除染ドア開放時間",
+ "disableSporeTrigger": "Fungleの胞子発生を無効化",
+
+ "disableDevices": "端末・設備を無効化",
+ "disableSkeldDevices": "The Skeld の設備を無効化",
+ "disableSkeldAdmin": "The Skeld アドミンを無効化",
+ "disableSkeldCamera": "The Skeld 防犯カメラを無効化",
+ "disableMiraHQDevices": "MIRA HQ の設備を無効化",
+ "disableMiraHQAdmin": "MIRA HQ アドミンを無効化",
+ "disableMiraHQDoorLog": "MIRA HQ ドアログを無効化",
+ "disablePolusDevices": "Polus の設備を無効化",
+ "disablePolusAdmin": "Polus アドミンを無効化",
+ "disablePolusCamera": "Polus 防犯カメラを無効化",
+ "disablePolusVital": "Polus バイタルを無効化",
+ "disableAirshipDevices": "The Airship の設備を無効化",
+ "disableAirshipCockpitAdmin": "The Airship 操縦室アドミンを無効化",
+ "disableAirshipRecordsAdmin": "The Airship 記録室アドミンを無効化",
+ "disableAirshipCamera": "The Airship 防犯カメラを無効化",
+ "disableAirshipVital": "The Airship バイタルを無効化",
+ "disableFungleDevices": "The Fungle の設備を無効化",
+ "disableFungleVital": "The Fungle バイタルを無効化",
+
+ "tabGroupTasks": "タスク設定",
+ "allPlayersSameTasks": "全員同じタスクを割り当て",
+ "overrideTaskSettings": "すべてのタスクを無効化",
+ "taskPercentNeededToWin": "クルー勝利に必要なタスク完了率(%)",
+
+ "disableMiraTasks": "MIRA HQ タスクを無効化",
+ "disableBuyBeverage": "「飲料の購入」を無効化",
+ "disableMeasureWeather": "「天気の測定」を無効化",
+ "disableProcessData": "「データの処理」を無効化",
+ "disableRunDiagnostics": "「診断の実行」を無効化",
+ "disableSortSamples": "「標本の仕分け」を無効化",
+
+ "disablePolusTasks": "Polus タスクを無効化",
+ "disableActivateWeatherNodes": "「気象ノードの有効化」を無効化",
+ "disableAlignTelescope": "「望遠鏡の整列」を無効化",
+ "disableFillCanisters": "「キャニスターへの充填」を無効化",
+ "disableInsertKeys": "「鍵の挿入」を無効化",
+ "disableOpenWaterways": "「水路を開く」を無効化",
+ "disableRebootWifi": "「Wi-Fiの再起動」を無効化",
+ "disableRepairDrill": "「ドリルの修理」を無効化",
+ "disableScanBoardingPass": "「搭乗券のスキヤン」を無効化",
+
+ "disableAirshipTasks": "The Airship タスクを無効化",
+ "disableCleanToilet": "「トイレの掃除」を無効化",
+ "disableDecontaminate": "「除染」を無効化",
+ "disableDevelopPhotos": "「写真の現像」を無効化",
+ "disableDressMannequin": "「マネキンの着せ替え」を無効化",
+ "disableFixShower": "「シャワーの修理」を無効化",
+ "disableMakeBurger": "「バーガーの作成」を無効化",
+ "disablePickUpTowels": "「タオルを拾う」を無効化",
+ "disablePolishRuby": "「ルビーを磨く」を無効化",
+ "disablePutAwayPistols": "「拳銃の片付け」を無効化",
+ "disablePutAwayRifles": "「ライフルを片付ける」を無効化",
+ "disableRewindTapes": "「テープの巻き戻し」を無効化",
+ "disableResetBreakers": "「ブレーカーのリセット」を無効化",
+ "disableSortRecords": "「記録の整理」を無効化",
+ "disableStartFans": "「ファンを始動」を無効化",
+ "disableUnlockSafe": "「金庫の解錠」を無効化",
+
+ "disableFungleTasks": "The Fungle タスクを無効化",
+ "disableBuildSandcastle": "「砂の城を作る」を無効化",
+ "disableCatchFish": "「魚を捕まえる」を無効化",
+ "disableCollectSamples": "「標本の採取」を無効化",
+ "disableCollectShells": "「貝殻の採取」を無効化",
+ "disableCollectVegetables": "「野菜の収穫」を無効化",
+ "disableCrankGenerator": "「発電機を回す」を無効化",
+ "disableExtractFuel": "「燃料の抽出」を無効化",
+ "disableFixAntenna": "「アンテナの修理」を無効化",
+ "disableHelpCritter": "「生き物の救出」を無効化",
+ "disableHoistSupplies": "「物資の引き上げ」を無効化",
+ "disableLiftWeights": "「ウエイトリフティング」を無効化",
+ "disableMineOres": "「鉱石の採掘」を無効化",
+ "disablePlayVideoGame": "「ゲームを遊ぶ」を無効化",
+ "disablePolishGem": "「宝石を磨く」を無効化",
+ "disableReplaceParts": "「部品の交換」を無効化",
+ "disableRoastMarshmallow": "「マシュマロを焼く」を無効化",
+ "disableThrowFisbee": "「フリスビーを投げる」を無効化",
+ "disableFindSignal": "「信号を探す」を無効化",
+
+ "disableMiscCommonTasks": "共通タスクを無効化",
+ "disableEnterIdCode": "「IDコードの入力」を無効化",
+ "disableFixWiring": "「配線の修理」を無効化",
+ "disableSwipeCard": "「カードを通す」を無効化",
+
+ "disableMiscShortTasks": "ショートタスクを無効化",
+ "disableAssembleArtifact": "「アーティファクトの組み立て」を無効化",
+ "disableChartCourse": "「航路の確認」を無効化",
+ "disableCleanO2Filter": "「O2フィルターの清掃」を無効化",
+ "disableCleanVent": "「ベントの清掃」を無効化",
+ "disableMonitorMushroom": "「キノコの監視」を無効化",
+ "disableMonitorTree": "「木の監視」を無効化",
+ "disablePrimeShields": "「シールドの準備」を無効化",
+ "disableRecordTemperature": "「温度の記録」を無効化",
+ "disableStabilizeSteering": "「操舵の安定化」を無効化",
+ "disableStoreArtifacts": "「アーティファクトの保管」を無効化",
+ "disableUnlockManifolds": "「マニホールドの開錠」を無効化",
+
+ "disableMiscLongTasks": "ロングタスクを無効化",
+ "disableAlignEngineOutput": "「エンジン出力の調整」を無効化",
+ "disableClearAsteroids": "「小惑星の破壊」を無効化",
+ "disableEmptyChute": "「ダストシュートを空にする」を無効化",
+ "disableInspectSample": "「検体の検査」を無効化",
+ "disableReplaceWaterJug": "「給水ボトルの交換」を無効化",
+ "disableStartReactor": "「リアクターの起動」を無効化",
+ "disableWaterPlants": "「植物の水やり」を無効化",
+
+ "disableMiscMixedTasks": "ミックス(多段階)タスクを無効化",
+ "disableCalibrateDistributor": "「ディストリビューターの調整」を無効化",
+ "disableDivertPower": "「電力のバイパス」を無効化",
+ "disableEmptyGarbage": "「ゴミ捨て」を無効化",
+ "disableFuelEngines": "「エンジンへの給油」を無効化",
+ "disableSubmitScan": "「スキャンの送信」を無効化",
+ "disableUploadData": "「データのアップロード」を無効化",
+
+ "allCommandsFull": "全コマンド一覧:\n\n/help\nこのヘルプメッセージを表示します。\n/aur, /socials\nAmong Us Revamped のSNSリンクを送信します。\n\n/r, /gm\n現在のゲームモードの説明を送信します。\n/l, /lastgame\n前回の勝者情報を送信します。\n\n/0kc, /0killcooldown\nキルクール0秒モードの説明を送信します。\n/sns, /shiftandseek\nシェイプ&シークモードの説明を送信します。\n/sp, /speedrun\nスピードランモードの説明を送信します。\n\n/kick, /ban\n名前指定でプレイヤーをキック/BANします。\n/ckick, /cban\n色指定でプレイヤーをキック/BANします。\n\n/vip /moderator /admin\nプレイヤーをVIP、モデレーター、管理人に設定します。\n/removevip, /removemoderator, /removeadmin\nプレイヤーの権限を削除します。\n\n/eg, /endgame\n現在のゲームを強制終了します。\n/em, /endmeeting\n現在の会議を強制終了します。\n/s, /start\nゲーム開始のカウントダウンを開始します。\n\n/t {template}\nAUR-DATA/templates.txt から定型文を送信します。\n\n/col, /color, /colour\n自分の色を設定します(制限解除に使用可能)。",
+
+ "translationReloaded": "翻訳ファイルが正常にリセットされました。\n変更を適用するにはゲームを再起動してください。",
+
+ "templateWelcome": "# このファイルには定型文(テンプレート)を追加できます。\n# テンプレートを作成するには、下の例と同じフォーマットで新しい行を追加してください。\n# 注意: テンプレートは120文字を超えてはいけず、特殊文字も使用できません(送信時にキックされます)。\n\ntest: これはテンプレートの例です。'/t test' と入力して送信します。\n\nwelcome: ようこそ! このロビーは MV 作成の Among Us Revamped {ModVersion} を使用しています。お楽しみください!",
+ "moderatorWelcome": "# このファイルにはフレンドコードでモデレーターを追加できます。\n# 追加されたプレイヤーはゲーム内で名前が紫色で表示されます。\n# 権限のカスタマイズはゲーム内の「システム設定」で行えます。以下は記述例です。\n\nfriendcode#0000",
+ "vipWelcome": "# このファイルにはフレンドコードでVIPを追加できます。\n# 追加されたプレイヤーはゲーム内で名前が黄色で表示されます。\n# 権限のカスタマイズはゲーム内の「システム設定」で行えます。以下は記述例です。\n\nfriendcode#0000\n",
+ "adminWelcome": "# このファイルにはフレンドコードで管理人(Admin)を追加できます。\n# 追加されたプレイヤーはゲーム内で名前が赤色で表示されます。\n# 権限のカスタマイズはゲーム内の「システム設定」で行えます。以下は記述例です。\n\nfriendcode#0000\n",
+ "banlistWelcome": "# このファイルにフレンドコードを記述することでプレイヤーをBANリストに追加できます。\n# ゲーム内でBANしたプレイヤーも自動的にここへ追加されます。以下は記述例です。\n\nfriendcode#0000\n",
+ "banwordWelcome": "# このファイルではNGワードを設定できます。リスト内の単語を発言したプレイヤーは自動的にキックされます。\n# 単語ごとに改行して区切ってください。",
+ "bannameWelcome": "# このファイルではNGネームを設定できます。リスト内の名前を使用しているプレイヤーは自動的にキックされます。\n# 名前ごとに改行して区切ってください。",
+ "startWordsWelcome": "# このファイルでは「『Start』と発言したプレイヤーをキック」に使用する判定単語を設定できます。\n# 「厳格検出モード」OFF = 完全一致で判定。「厳格検出モード」ON = 部分一致で判定。\n# ロビー内でのみ検知したい無関係な単語を入れることも可能です。\n\nstart\nbegin\ncommence",
+
+ "noGameEndWarning": "警告: 「ゲーム終了なし」が有効になっています",
+ "gameMasterWarningTwo": "警告: 「ゲームマスター」が有効になっています",
+
+ "tooLongTemplate": "テンプレートが120文字を超えているため、送信するとキックされます。文字数を減らしてください。",
+
+ "vipAdd": "{0} をVIPに追加しました。",
+ "moderatorAdd": "{0} をモデレーターに追加しました。",
+ "adminAdd": "{0} を管理人に追加しました。",
+ "vipRemove": "{0} のVIP権限を削除しました。",
+ "moderatorRemove": "{0} のモデレーター権限を削除しました。",
+ "adminRemove": "{0} の管理人権限を削除しました。",
+ "permFail": "ユーザー '{0}' が見つかりませんでした。綴りが正しいか確認してください。",
+
+ "helpDesc": "すべてのコマンドと機能を表示します。",
+ "snsDesc": "シェイプ&シークモードの説明を送信します。",
+ "0kcDesc": "キルクール0秒モードの説明を送信します。",
+ "SrDesc": "スピードランモードの説明を送信します。",
+ "egDesc": "現在のゲームを強制終了します。",
+ "emDesc": "現在の会議を強制終了します。",
+ "aurDesc": "Among Us Revamped のSNSリンクを送信します。",
+ "sDesc": "ゲーム開始カウントダウンを開始します。",
+ "rDesc": "現在のゲームモードの説明を送信します。",
+ "rolesDesc": "すべての能力・モードの概要を送信します。",
+ "kickDesc": "名前指定でプレイヤーをキックします。",
+ "ckickDesc": "色指定でプレイヤーをキックします。",
+ "banDesc": "名前指定でプレイヤーをBANします。",
+ "cbanDesc": "色指定でプレイヤーをBANします。",
+ "dumpDesc": "LogOutputを別のファイルにコピーします。",
+ "colDesc": "自分の色を変更します。",
+ "reloadDesc": "言語ファイルを再読み込みします。",
+ "vipDesc": "ユーザーをVIPに追加します。",
+ "moderatorDesc": "ユーザーをモデレーターに追加します。",
+ "adminDesc": "ユーザーを管理人に追加します。",
+ "cremoveVipDesc": "ユーザーからVIP権限を削除します。",
+ "removeModeratorDesc": "ユーザーからモデレーター権限を削除します。",
+ "removeAdminDesc": "ユーザーから管理人権限を削除します。",
+ "lastgameDesc": "前回のゲーム情報を送信します。",
+ "templateDesc": "AUR-DATA/templates.txt から指定のテンプレートを送信します。",
+ "seekerDesc": "かくれんぼでプレイヤーを鬼(Seeker)に指定します。",
+ "seekersDesc": "手動選択された鬼のリストを表示します。",
+ "clearSeekerDesc": "手動選択された鬼のリストをクリアします。",
+
+ "banWordKick": "{0} は DeniedWords.txt に登録されたNGワードを {1} 回送信したためキックされました",
+ "startWordKick": "{0} は StartWords.txt に登録された単語を {1} 回送信したためキックされました",
+
+ "pluginWarning": "警告:\n複数のプラグイン(Mod)が検出されました。\nAmong Us Revamped は他の多くのMODと互換性がありません。\nバグが発生する場合、そのほとんどはMod間の競合によるものです。",
+
"systemSettings": "システム設定",
"gameplaySettings": "ゲームプレイ設定",
- "gamemodeSettings": "モード設定",
+ "gamemodeSettings": "ゲームモード設定",
- "systemSettingsDesc": "快適性の向上やテスト目的の画質・システム設定。",
- "gameplaySettingsDesc": "ゲーム内体験を改善するための設定。",
- "gamemodeSettingsDesc": "特定のゲームモードに適したシチュエーション設定。",
+ "systemSettingsDesc": "快適性やテスト作業を向上させる各種設定。",
+ "gameplaySettingsDesc": "局内の体験を向上させるゲームプレイ設定。",
+ "gamemodeSettingsDesc": "特定モード用に適用する状況別の設定。",
"everyone": "全員",
"vipAndAbove": "VIP 以上",
"moderatorAndAbove": "モデレーター 以上",
- "admin": "管理者",
- "onlyYou": "自分のみ",
+ "admin": "管理人",
+ "onlyYou": "あなたのみ",
- "gameMaster": "管理者",
- "showFPS": "FPSを表示",
- "autoStart": "自動開始",
- "enableDarkTheme": "ダークテーマを有効化",
- "enableLobbyMusic": "ロビーBGM",
- "disableInfoWhenDead": "死亡後に情報を非表示",
- "disableCommandHelper": "コマンドヘルパーを無効化",
-
- "gameMasterWarning": "ゲーム管理者をオフにするまで、観戦モードに入ります。警告:この設定を有効にすると、スキルのメッセージが送信されなくなったり、配役の割り当てが不正確になったりする可能性があります。",
-
- "cancelStartCountdown": "開始カウントダウンがキャンセルされました",
-
- "invalidFriendCodeKick": "{0} はフレンドコードが無効なためキックされました",
- "invalidFriendCodeBan": "{0} はフレンドコードが無効なためBANされました",
- "language": "言語 (再起動が必要)",
- "gamemode": "ゲームモード",
- "tabGroupMain": "管理設定",
- "kickLowLevelPlayer": "このレベル未満のプレイヤーをキック",
- "tempBanLowLevelPlayer": "キックではなくBANにする",
- "dontKickLevelOnes": "部屋のエラーによるレベル1プレイヤーのキックを防止",
- "kickInvalidFriendCodes": "無効(空)のフレンドコードをキック",
- "tempBanInvalidFriendCodes": "キックではなくBANにする",
- "deniedWordsToKick": "NGワード送信時にプレイヤーをキック",
- "moderatorCanUseCommand": "モデレーターはコマンドを使用可能",
- "autoKickStart": "「Start」と送信したプレイヤーを自動キック",
- "autoKickStartAsBan": "キックではなくBANにする",
- "autoKickStartTimes": "キックに必要な「Start」の送信回数",
- "autoKickStartStrength": "厳格な検出モード",
- "tabGroupAutomation": "自動化",
- "autoSendGameInfo": "勝者情報を自動送信",
- "autoRejoinLobby": "ロビーに自動で再参加",
- "autoStartTimer": "自動開始カウントダウン",
- "waitAutoStart": "自動開始の待機時間",
- "playerAutoStart": "自動開始に必要な人数",
- "enableJoinMessages": "入室歓迎メッセージを有効化",
- "messagePerPlayerNum": "指定した入室人数に達するごとにメッセージを送信",
- "tabGroupMisc": "その他設定",
- "startCountdown": "デフォルトの開始カウントダウン",
- "colorCommandLevel": "カラーコマンドを使用できる権限",
- "allowFortegreen": "フォートグリーンを許可",
- "noGameEnd": "ゲームが絶対に終了しない",
-
- "tabGroupAccess": "権限レベル",
- "slashColorCmd": "/color を使用できる権限",
- "slashRolesAndGamemodeCmd": "/r とテンプレートを使用できる権限",
- "slashLastGameCmd": "/l と /aur を使用できる権限",
- "slashKickCmd": "/kick と /ckick を使用できる権限",
- "slashBanCmd": "/ban と /cban を使用できる権限",
- "slashEndMeetingCmd": "/endmeeting を使用できる権限",
- "slashStartAndEndGameCmd": "/startgame と /endgame を使用できる権限",
-
- "tabGroupCrewmate": "クルーメイトの役職",
- "tabGroupNeutral": "ニュートラルの役職",
- "tabGroupImpostor": "インポスターの役職",
-
- "tabGroupStandard": "スタンダードモード",
-
- "tabGroupHNS": "かくれんぼモード (Hide and Seek)",
- "numSeekers": "オニの数",
- "tabGroup0Kcd": "キルクールダウン0秒モード (0 Kill Cooldown)",
- "noKcdSettingsOverride": "設定の自動更新",
- "tabGroupSNS": "シフト&シーク (Shift and Seek)",
- "snsChatInGame": "ゲーム進行中のチャットを許可 (実験的)",
- "snsSettingsOverride": "設定の自動更新",
- "cantKillTime": "ミス/空振り後のキル不能時間",
- "misfiresToSuicide": "ミスが指定回数に達した時に自害",
- "crewAutoWinsGameAfter": "クルーがこの時間経過後に自動勝利",
- "snsDisableSabotage": "SnSの緊急サボタージュを無効化",
- "snsDisableReactor": "リアクター妨害を無効化",
- "snsDisableOxygen": "酸素妨害を無効化",
- "snsDisableLights": "停電妨害を無効化",
- "snsDisableComms": "通信妨害を無効化",
- "snsDisableHeli": "墜落危機妨害を無効化",
- "snsDisableMushroomMixup": "キノコまぜまぜ妨害を無効化",
- "snsDisableCloseDoor": "SnSのドア閉め妨害を無効化",
- "tabGroupSpeedrun": "タイムアタックモード (Speedrun)",
- "speedrunSettingsOverride": "設定の自動更新",
- "gameAutoEndsAfter": "ゲームがこの時間経過後に自動終了",
- "engineerMode": "全員がエンジニア",
-
- "tabGroupSabotages": "サボタージュ設定",
- "deadImpostorsCanSabotage": "死亡したインポスターもサボタージュ可能",
- "disableSabotage": "緊急サボタージュを無効化",
- "disableReactor": "リアクター妨害を無効化",
- "disableOxygen": "酸素妨害を無効化",
- "disableLights": "停電妨害を無効化",
- "disableComms": "通信妨害を無効化",
- "disableHeli": "墜落危機妨害を無効化",
- "disableMushroomMixup": "キノコまぜまぜ妨害を無効化",
- "disableCloseDoor": "ドア閉め妨害を無効化",
-
- "tabGroupGameplayGeneral": "全般的なゲームプレイ",
- "disableAnnoyingMeetingCalls": "ゲーム開始後30秒間は緊急会議の招集を禁止",
- "disableReport": "死体通報を無効化",
- "changeDecontaminationTime": "除染室の時間を上書き (スタンダードモードのみ)",
- "decontaminationTimeOnMiraHQ": "Mira HQの除染持続時間",
- "decontaminationDoorOpenTimeOnMiraHQ": "Mira HQのドア開放持続時間",
- "decontaminationTimeOnPolus": "Polusの除染持続時間",
- "decontaminationDoorOpenTimeOnPolus": "Polusのドア開放持続時間",
- "disableSporeTrigger": "The Fungleの胞子トリガーを無効化",
-
- "disableDevices": "端末を無効化",
- "disableSkeldDevices": "Skeldの端末を無効化",
- "disableSkeldAdmin": "Skeldの管理室マップを無効化",
- "disableSkeldCamera": "Skeldの監視カメラを無効化",
- "disableMiraHQDevices": "Mira HQの端末を無効化",
- "disableMiraHQAdmin": "Mira HQの管理室マップを無効化",
- "disableMiraHQDoorLog": "Mira HQのセンサーログを無効化",
- "disablePolusDevices": "Polusの端末を無効化",
- "disablePolusAdmin": "Polusの管理室マップを無効化",
- "disablePolusCamera": "Polusの監視カメラを無効化",
- "disablePolusVital": "Polusのバイタルを無効化",
- "disableAirshipDevices": "Airshipの端末を無効化",
- "disableAirshipCockpitAdmin": "Airshipのコックピット管理室マップを無効化",
- "disableAirshipRecordsAdmin": "Airshipの記録室管理室マップを無効化",
- "disableAirshipCamera": "Airshipの監視カメラを無効化",
- "disableAirshipVital": "Airshipのバイタルを無効化",
- "disableFungleDevices": "The Fungleの端末を無効化",
- "disableFungleVital": "The Fungleのバイタルを無効化",
-
- "tabGroupTasks": "タスク設定",
- "allPlayersSameTasks": "全員が同じタスクを所持",
- "overrideTaskSettings": "タスクを無効化",
- "taskPercentNeededToWin": "クルーの勝利に必要なタスク達成割合",
-
- "disableMiraTasks": "Mira HQのタスクを無効化",
- "disableBuyBeverage": "「飲料を買う」を無効化",
- "disableMeasureWeather": "「天気を計測する」を無効化",
- "disableProcessData": "「データを処理する」を無効化",
- "disableRunDiagnostics": "「診断を実行する」を無効化",
- "disableSortSamples": "「サンプルを整理する」を無効化",
-
- "disablePolusTasks": "Polusのタスクを無効化",
- "disableActivateWeatherNodes": "「気象ノードを起動する」を無効化",
- "disableAlignTelescope": "「望遠鏡を調整する」を無効化",
- "disableFillCanisters": "「キャニスターを満たす」を無効化",
- "disableInsertKeys": "「鍵を差し込む」を無効化",
- "disableOpenWaterways": "「水路を開く」を無効化",
- "disableRebootWifi": "「Wi-Fiを再起動する」を無効化",
- "disableRepairDrill": "「ドリルを修理する」を無効化",
- "disableScanBoardingPass": "「搭乗券をスキャンする」を無効化",
-
- "disableAirshipTasks": "Airshipのタスクを無効化",
- "disableCleanToilet": "「トイレを掃除する」を無効化",
- "disableDecontaminate": "「除染する」を無効化",
- "disableDevelopPhotos": "「写真を現像する」を無効化",
- "disableDressMannequin": "「マネキンに着せ替える」を無効化",
- "disableFixShower": "「シャワーヘッドを修理する」を無効化",
- "disableMakeBurger": "「ハンバーガーを作る」を無効化",
- "disablePickUpTowels": "「タオルを拾う」を無効化",
- "disablePolishRuby": "「ルビーを磨く」を無効化",
- "disablePutAwayPistols": "「ピストルを片付ける」を無効化",
- "disablePutAwayRifles": "「ライフルを片付ける」を無効化",
- "disableRewindTapes": "「テープを巻き戻す」を無効化",
- "disableResetBreaker": "「ブレーカーをリセットする」を無効化",
- "disableSortRecords": "「記録を整理する」を無効化",
- "disableStartFans": "「ファンを始動する」を無効化",
- "disableUnlockSafe": "「金庫を開ける」を無効化",
-
- "disableFungleTasks": "The Fungleのタスクを無効化",
- "disableBuildSandcastle": "「砂のお城を作る」を無効化",
- "disableCatchFish": "「魚釣りをする」を無効化",
- "disableCollectSamples": "「サンプルを採集する」を無効化",
- "disableCollectShells": "「貝殻を集める」を無効化",
- "disableCollectVegetables": "「野菜を収穫する」を無効化",
- "disableCrankGenerator": "「発電機を回す」を無効化",
- "disableExtractFuel": "「燃料を抽出する」を無効化",
- "disableFixAntenna": "「アンテナを修理する」を無効化",
- "disableHelpCritter": "「小動物を助ける」を無効化",
- "disableHoistSupplies": "「物資を巻き上げる」を無効化",
- "disableLiftWeights": "「ウエイトリフティング」を無効化",
- "disableMineOres": "「鉱石を採掘する」を無効化",
- "disablePlayVideoGame": "「ゲームを遊ぶ」を無効化",
- "disablePolishGem": "「宝石を磨く」を無効化",
- "disableReplaceParts": "「部品を交換する」を無効化",
- "disableRoastMarshmallow": "「マシュマロを焼く」を無効化",
- "disableThrowFisbee": "「フリスビーを投げる」を無効化",
- "disableFindSignal": "「電波を探す」を無効化",
-
- "disableMiscCommonTasks": "共通タスクをグローバル無効化",
- "disableEnterIdCode": "「IDコードを入力する」を無効化",
- "disableFixWiring": "「配線を修理する」を無効化",
- "disableSwipeCard": "「カードをスワイプする」を無効化",
-
- "disableMiscShortTasks": "ショートタスクをグローバル無効化",
- "disableAssembleArtifact": "「遺物を組み立てる」を無効化",
- "disableChartCourse": "「航路を設定する」を無効化",
- "disableCleanO2Filter": "「酸素フィルターを清掃する」を無効化",
- "disableCleanVent": "「ベントを清掃する」を無効化",
- "disableMonitorMushroom": "「キノコを監視する」を無効化",
- "disableMonitorTree": "「木を監視する」を無効化",
- "disablePrimeShields": "「シールドを充填する」を無効化",
- "disableRecordTemperature": "「温度を記録する」を無効化",
- "disableStabilizeSteering": "「操縦を安定させる」を無効化",
- "disableStoreArtifacts": "「遺物を保管する」を無効化",
- "disableUnlockManifolds": "「マニホールドを開ける」を無効化",
-
- "disableMiscLongTasks": "ロングタスクをグローバル無効化",
- "disableAlignEngineOutput": "「エンジン出力を調整する」を無効化",
- "disableClearAsteroids": "「小惑星をクリアする」を無効化",
- "disableEmptyChute": "「ゴミ捨て場のシュートを空にする」を無効化",
- "disableInspectSample": "「サンプルを検査する」を無効化",
- "disableReplaceWaterJug": "「給水ボトルの交換」を無効化",
- "disableStartReactor": "「リアクターを起動する」を無効化",
- "disableWaterPlants": "「植物に水をやる」を無効化",
-
- "disableMiscMixedTasks": "複合タスクをグローバル無効化",
- "disableCalibrateDistributor": "「配電盤を調整する」を無効化",
- "disableDivertPower": "「電力を転送する」を無効化",
- "disableEmptyGarbage": "「ゴミを捨てる」を無効化",
- "disableFuelEngines": "「エンジンに燃料を補給する」を無効化",
- "disableSubmitScan": "「スキャンを送信する」を無効化",
- "disableUploadData": "「データをアップロードする」を無効化",
-
- "allCommandsFull": "すべてのコマンド:\n\n/help\nこのヘルプメッセージを表示します。\n/aur, /socials\nAmong Us RevampedのSNSリンクを送信します。\n\n/r, /gm\n現在のモード紹介またはスキルリストを送信します。\n/l, /lastgame\n前回のゲームの勝者情報を送信します。\n\n/0kc, /0killcooldown\nキルクールダウン0秒モードの紹介を送信します。\n/sns, /shiftandseek\nシフト&シークモードの紹介を送信します。\n/sp, /speedrun\nタイムアタックモードの紹介を送信します。\n\n/kick, /ban\n名前を指定してプレイヤーをキックまたはBANします。\n/ckick, /cban\n色を指定してプレイヤーをキックまたはBANします。\n\n/vip /moderator /admin\nプレイヤーをVIP、モデレーター、または管理者に設定します。\n/removevip, /removemoderator, /removeadmin\nプレイヤーのVIP、モデレーター、または管理者権限を剥奪します。\n\n/eg, /endgame\n現在のゲームを終了します。\n/em, /endmeeting\n現在の会議を終了します。\n/s, /start\nゲーム開始のカウントダウンを始めます。\n\n/t {template}\nAUR-DATA/templates.txt内の指定されたテンプレートを送信します。\n\n/col, /color, /colour\nあなたのカラーを設定します(制限のバイパスに使用可能)。",
-
- "translationReloaded": "ファイルが正常にリセットされました。\nすべての変更を適用するには、ゲームを再起動してください。",
-
- "templateWelcome": "# このファイルでは、簡単にコピー&ペーストできるテンプレートを追加できます。\n# 新しいテンプレートを作成するには、改行して下のテスト用テンプレートと同じ形式を使用してください。\n# テンプレートの長さは120文字を超えることはできず、特殊文字も含められません。超えた場合は部屋からキックされます。\n\ntest: これはテンプレートの例です。「/t test」と入力すると表示されます。\n\nwelcome: ようこそ!このロビーはMV制作の Among Us Revamped {ModVersion} を使用しています。お楽しみください!",
- "moderatorWelcome": "# このファイルでは、フレンドコードを使ってモデレーターを追加できます。\n# 追加されると、ゲーム内での名前が紫色になります。\n# ゲーム内の「システム設定」からモデレーター権限をカスタマイズしてください。以下はフレンドコードの例です。\n\nfriendcode#0000",
- "vipWelcome": "# このファイルでは、フレンドコードを使ってVIPを追加できます。\n# 追加されると、ゲーム内での名前が黄色になります。\n# ゲーム内の「システム設定」からVIP権限をカスタマイズしてください。以下はフレンドコードの例です。\n\nfriendcode#0000\n",
- "adminWelcome": "# このファイルでは、フレンドコードを使って管理職(Admin)を追加できます。\n# 追加されると、ゲーム内での名前が赤色になります。\n# ゲーム内の「システム設定」から管理者権限をカスタマイズしてください。以下はフレンドコードの例です。\n\nfriendcode#0000\n",
- "banlistWelcome": "# このファイルでは、フレンドコードを使ってロビーからプレイヤーをBANできます。\n# ゲーム内で誰かをBANすると、自動的にここにも同期されます。以下はフレンドコードの例です。\n\nfriendcode#0000\n",
- "banwordWelcome": "# このファイルでは、NGワードを設定できます。ここでリストされた単語をゲーム内で送信したプレイヤーは自動的にキックされます。\n# 単語ごとに必ず改行して区切ってください。",
- "bannameWelcome": "# このファイルでは、NG名前を設定できます。ここでリストされた名前をゲーム内で使用しているプレイヤーは自動的にキックされます。\n# 名前ごとに必ず改行して区切ってください。",
-
- "noGameEndWarning": "警告:「ゲームが絶対に終了しない」が有効になっています",
-
- "tooLongTemplate": "テンプレートが120文字を超えているため、送信するとキックされます。長さを短くしてください。",
-
- "vipAdd": "{0} を VIP として登録しました。",
- "moderatorAdd": "{0} を モデレーター として登録しました。",
- "adminAdd": "{0} を 管理者 として登録しました。",
- "vipRemove": "{0} の VIP 権限を削除しました。",
- "moderatorRemove": "{0} の モデレーター 権限を削除しました。",
- "adminRemove": "{0} の 管理者 権限を削除しました。",
- "permFail": "ユーザー '{0}' が見つかりません。スペルが正しいか確認してください。",
-
- "helpDesc": "すべてのコマンドとその機能を表示します。",
- "snsDesc": "シフト&シーク (Shift and Seek) ゲームモードの紹介を送信します。",
- "0kcDesc": "キルクールダウン0秒 (0 Kill Cooldown) ゲームモードの紹介を送信します。",
- "SrDesc": "タイムアタック (Speedrun) ゲームモード의 紹介を送信します。",
- "egDesc": "現在のゲームを終了します。",
- "emDesc": "現在の会議を終了します。",
- "aurDesc": "Among Us RevampedのSNSリンクを送信します。",
- "sDesc": "ゲーム開始のカウントダウンを始めます。",
- "rDesc": "/r はアクティブなスキルまたは現在のモードを送信します。",
- "rolesDesc": "すべてのスキル・ゲームモードの概要を送信します。",
- "kickDesc": "名前を指定してプレイヤーをキックします。",
- "ckickDesc": "色を指定してプレイヤーをキックします。",
- "banDesc": "名前を指定してプレイヤーをBANします。",
- "cbanDesc": "色を指定してプレイヤーをBANします。",
- "dumpDesc": "LogOutput(ログ出力)を独立したファイルにコピーします。",
- "colDesc": "あなたのカラーを設定します。",
- "reloadDesc": "言語ファイルを再読み込みします。",
- "vipDesc": "ユーザーを VIP に追加します。",
- "moderatorDesc": "ユーザーを モデレーター に追加します。",
- "adminDesc": "ユーザーを 管理者 に追加します。",
- "cremoveVipDesc": "ユーザーの VIP 権限を削除します。",
- "removeModeratorDesc": "ユーザーの モデレーター 権限を削除します。",
- "removeAdminDesc": "ユーザーの 管理者 権限を削除します。",
- "lastgameDesc": "前回のゲーム情報を送信します。",
- "templateDesc": "AUR-DATA/templates.txtで指定されたテンプレートを送信します。",
-
- "banWordKick": "{0} はNGワードを送信したためキックされました(累計回数:{1} 回)",
-
- "pluginWarning": "警告:\n2つ以上のプラグインが有効化されていることを検出しました。\nAmong Us RevampedはほとんどのModと互換性がありません。\n不具合が発生した場合、競合が原因である可能性が非常に高いです。"
+ "seekers": "鬼(Seeker): ",
+ "clearedSeekers": "手動選択された鬼のリストを正常にクリアしました。"
}
diff --git a/Resources/Language/Russian.json b/Resources/Language/Russian.json
index 2db6565..ff39032 100644
--- a/Resources/Language/Russian.json
+++ b/Resources/Language/Russian.json
@@ -10,9 +10,7 @@
"disableCommandHelper": "Выключить Командного Помощника",
"disableCompatibilityWarning": "Выключить Предупреждение Совместимости",
- "gameMasterWarning":"Вы будете наблюдать игры пока включён режим спектатора. ВНИМАНИЕ: Сообщения со способностями не будут отправлены и назначение ролей может быть неправильным если эта настройка включена.",
-
- "cancelStartCountdown": "Отсчет до старта отменён",
+ "cancelStartCountdown": "Отсчёт до старта отменён",
"invalidFriendCodeKick": "{0} был кикнут из-за неправильного Кода друга",
"invalidFriendCodeBan": "{0} был забанен из-за неправильного Кода друга",
@@ -29,17 +27,17 @@
"autoKickStart": "Кикать Игроков Которые Говорят Start",
"autoKickStartAsBan": "Банить вместо кика",
"autoKickStartTimes": "Start сообщений нужно для кика",
- "autoKickStartStrength": "Режим строго обнаружения",
+ "autoKickStartStrength": "Режим строгого обнаружения",
"tabGroupAutomation": "Автоматизация",
- "autoSendGameInfo": "Автоматически отправлять информацию о победителе",
+ "autoSendGameInfo": "Автоматически отправлять информацию о победителях",
"autoRejoinLobby": "Автоматически перезаходить в лобби",
- "autoStartTimer": "Отсчет Для Авто Старта",
+ "autoStartTimer": "Отсчёт Для Авто Старта",
"waitAutoStart": "Авто Старт После",
"playerAutoStart": "Игроков Нужно Для Авто Старта",
"enableJoinMessages": "Включить Сообщение С Приветствиями",
- "messagePerPlayerNum": "Сообщение Каждое Количество Заходов",
+ "messagePerPlayerNum": "Сообщение Каждые # Заходов",
"tabGroupMisc": "Разное",
- "startCountdown": "Отсчет Для Старта По Умолчанию",
+ "startCountdown": "Отсчёт Для Старта По Умолчанию",
"colorCommandLevel": "Кто Может использовать Команды Цветов",
"allowFortegreen": "Разрешить Фортезелёный Цвет",
"noGameEnd": "Без Конца Игры",
@@ -50,7 +48,6 @@
"slashLastGameCmd": "Кто Может Использовать /l & /aur",
"slashKickCmd": "Кто Может Использовать /kick & /ckick",
"slashBanCmd": "Кто Может Использовать /ban & /cban",
- "slashEndMeetingCmd": "Кто Может Использовать /endmeeting",
"slashStartAndEndGameCmd": "Кто Может Использовать /startgame & /endgame",
"tabGroupCrewmate": "Роли Экипажа",
@@ -69,7 +66,7 @@
"cantKillTime": "После Осечки Нельзя Убивать В Течение",
"misfiresToSuicide": "Самоубийство После Количества Осечек",
"crewAutoWinsGameAfter": "Экипаж Автоматически Побеждает После",
- "snsDisableSabotage": "Выключить Критические Сабботажи в Режиме Клона",
+ "snsDisableSabotage": "Выключить Критические Саботажи в Режиме Клона",
"snsDisableReactor": "Выключить Сабботаж Реактора",
"snsDisableOxygen": "Выключить Сабботаж O2",
"snsDisableLights": "Выключить Сабботаж Света",
@@ -82,9 +79,9 @@
"gameAutoEndsAfter": "Игра автоматически заканчивается после",
"engineerMode": "Все Инженеры",
- "tabGroupSabotages": "Сабботажи",
- "deadImpostorsCanSabotage": "Умершие Предатели Могут Сабботировать",
- "disableSabotage": "Выключить Критические Сабботажи",
+ "tabGroupSabotages": "Саботажи",
+ "deadImpostorsCanSabotage": "Умершие Предатели Могут Саботировать",
+ "disableSabotage": "Выключить Критические Саботажи",
"disableReactor": "Выключить Сабботаж Реактора",
"disableOxygen": "Выключить Сабботаж O2",
"disableLights": "Выключить Сабботаж Света",
@@ -216,30 +213,30 @@
"disableSubmitScan": "Выключить Пройти Скан",
"disableUploadData": "Выключить Загрузить Данные",
- "allCommandsFull": "ВСЕ КОМАНДЫ:\n\n/help\nПоказать это сообщение.\n/aur, /socials\nОтправляет ссылки Among Us Revamped.\n\n/r, /gm\nОтправляет описание текущего режима или списка способностей.\n/l, /lastgame\nОтправляет информацию о последнем победителе.\n\n/0kc, /0killcooldown\nОтправляет описание режима 0 Перезарядки Убийств.\n/sns, /shiftandseek\nОтправляет описание режима Клона.\n/sp, /speedrun\nОтправляет описание режима Спидрана.\n\n/kick, /ban\nКикает или банит игрока по нику.\n/ckick, /cban\nКикает или банит игрока по цвету.\n\n/vip /moderator /admin\nДобавляет игрока как VIP, Модератора или Админа.\n/removevip, /removemoderator, /removeadmin\nУбирает VIP, Модератора или Админа у игрока.\n\n/eg, /endgame\nЗаканчивает текущую игру.\n/em, /endmeeting\nЗаканчивает текущее собрание.\n/s, /start\nНачинает отсчет для старта.\n\n/t {template}\nОтправляет шаблон из AUR-DATA/templates.txt.\n\n/col, /color, /colour\nМеняет ваш цвет, может быть использована чтобы обойти ограничения по цветам.",
+ "allCommandsFull": "ВСЕ КОМАНДЫ:\n\n/help\nПоказать это сообщение.\n/aur, /socials\nОтправляет ссылки Among Us Revamped.\n\n/r, /gm\nОтправляет описание текущего режима или списка способностей.\n/l, /lastgame\nОтправляет информацию о последнем победителе.\n\n/0kc, /0killcooldown\nОтправляет описание режима 0 Перезарядки Убийств.\n/sns, /shiftandseek\nОтправляет описание режима Клона.\n/sp, /speedrun\nОтправляет описание режима Спидрана.\n\n/kick, /ban\nКикает или банит игрока по нику.\n/ckick, /cban\nКикает или банит игрока по цвету.\n\n/vip /moderator /admin\nДобавляет игрока как VIP, Модератора или Админа.\n/removevip, /removemoderator, /removeadmin\nУбирает VIP, Модератора или Админа у игрока.\n\n/eg, /endgame\nЗаканчивает текущую игру.\n/em, /endmeeting\nЗаканчивает текущее собрание.\n/s, /start\nНачинает Отсчёт для старта.\n\n/t {template}\nОтправляет шаблон из AUR-DATA/templates.txt.\n\n/col, /color, /colour\nМеняет ваш цвет, может быть использована чтобы обойти ограничения по цветам.",
"translationReloaded": "Ваш языковой файл был успешно сброшен.\nЧтобы применить все изменения, перезапустите вашу игру.",
- "templateWelcome": "# В этом файле вы можете создавать шаблоны, которые могут служить как простая альтернатива копировать-вставить.\n# Чтобы создать шаблон, напишите новую линию с таким же форматированием как и у тестового шаблона снизу.\n# Шаблоны не могут быть длиннее чем 120 символов и не могут содержать специальные символы. В противном вас будет кикать.\n\ntest: это пример шаблона. Напишите '/t test' чтобы увидеть его.\n\nwelcome: Добро Пожаловать! Это Лобби Использует Among Us Revamped {ModVersion} от MV. Наслаждайтесь!",
- "moderatorWelcome": "# В этом файле вы можете добавлять Модераторов по Коду друга.\n# Если вы добавите кого то, они получат фиолетовый ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия Модераторов. Снизу приведен пример Кода друга.\n\nfriendcode#0000",
- "vipWelcome": "# В этом файле вы можете добавлять VIP по Коду друга.\n# Если вы добавите кого то, они получат желтый ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия VIP. Снизу приведен пример Кода друга.\n\nfriendcode#0000\n",
- "adminWelcome": "# В этом файле вы можете добавлять Админов по Коду друга.\n# Если вы добавите кого то, они получат красный ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия Админов. Снизу приведен пример Кода друга.\n\nfriendcode#0000\n",
+ "templateWelcome": "# В этом файле вы можете создавать шаблоны, которые могут служить как простая альтернатива копировать-вставить.\n# Чтобы создать шаблон, напишите новую линию с таким же форматированием как и у тестового шаблона снизу.\n# Шаблоны не могут быть длиннее, чем 120 символов и не могут содержать специальные символы. В противном вас будет кикать.\n\ntest: это пример шаблона. Напишите '/t test', чтобы увидеть его.\n\nwelcome: Добро Пожаловать! Это Лобби Использует Among Us Revamped {ModVersion} от MV. Наслаждайтесь!",
+ "moderatorWelcome": "# В этом файле вы можете добавлять Модераторов по Коду друга.\n# Если вы добавите кого-то, они получат фиолетовый ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия Модераторов. Снизу приведен пример Кода друга.\n\nfriendcode#0000",
+ "vipWelcome": "# В этом файле вы можете добавлять VIP по Коду друга.\n# Если вы добавите кого-то, они получат желтый ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия VIP. Снизу приведен пример Кода друга.\n\nfriendcode#0000\n",
+ "adminWelcome": "# В этом файле вы можете добавлять Админов по Коду друга.\n# Если вы добавите кого-то, они получат красный ник в игре.\n# Перейдите в 'Системные Настройки' в игре чтобы изменить полномочия Админов. Снизу приведен пример Кода друга.\n\nfriendcode#0000\n",
"banlistWelcome": "# В этом файле вы можете банить игроков из ваших лобби по Коду друга.\n# Если вы забаните кого-то в игре они автоматически добавятся в этот файл. Снизу приведен пример Кода друга.\n\nfriendcode#0000\n",
- "banwordWelcome": "# В этом файле вы можете создавать запрещенные слова, автоматически кикает тех кто сказали эти слова которые написаны здесь.\n# Обратите внимание чтобы разделять слова надо при помощи новых строк.",
- "bannameWelcome": "# В этом файле вы можете создавать запрещенные имена, автоматически кикает тех кто использует имена которые написаны здесь.\n# Обратите внимание чтобы разделять имена надо при помощи новых строк.",
+ "banwordWelcome": "# В этом файле вы можете создавать запрещенные слова, автоматически кикает тех кто сказали эти слова которые написаны здесь.\n# Обратите внимание, чтобы разделять слова надо при помощи новых строк.",
+ "bannameWelcome": "# В этом файле вы можете создавать запрещенные имена, автоматически кикает тех кто использует имена которые написаны здесь.\n# Обратите внимание, чтобы разделять имена надо при помощи новых строк.",
"languageWelcome": "# In this file you can set your Among Us Revamped language.\n# To set the language, type one of the supported languages in a new line. The default is English.\n# Supported languages: English, Spanish, SimplifiedChinese, Italian\n\nEnglish",
"noGameEndWarning": "ВНИМАНИЕ: Настройка 'Без Конца Игры' Включена",
- "tooLongTemplate": "Ваш шаблон длиннее чем 120 символов и будет вас кик если он будет отправлен. Пожалуйста уменьшите длину.",
+ "tooLongTemplate": "Ваш шаблон длиннее, чем 120 символов и вас кикнет если он будет отправлен. Пожалуйста, уменьшите длину.",
"vipAdd": "Успешно добавлен {0} как VIP.",
"moderatorAdd": "Успешно добавлен {0} как Модератор.",
- "adminAdd": "Успешно добавлен {0} as Админ.",
+ "adminAdd": "Успешно добавлен {0} как Админ.",
"vipRemove": "Успешно убран VIP у {0}.",
"moderatorRemove": "Успешно убран Модератор у {0}.",
"adminRemove": "Успешно убран Админ у {0}.",
- "permFail": "Не удалось найти игрока '{0}'. Убедитесь что вы написали ник корректно",
+ "permFail": "Не удалось найти игрока '{0}'. Убедитесь, что вы написали ник корректно",
"helpDesc": "Показывает все Команды и что они делают.",
"snsDesc": "Отправляет описание режима Клона.",
@@ -248,7 +245,7 @@
"egDesc": "Заканчивает текущую игру.",
"emDesc": "Заканчивает текущее собрание.",
"aurDesc": "Отправляет Ссылки Us Revamped.",
- "sDesc": "Начинает отсчет для старта.",
+ "sDesc": "Начинает Отсчёт для старта.",
"rDesc": "/r Отправляет включеные способности или текущий режим.",
"rolesDesc": "Отправляет обзор всех способностей/режимов.",
"kickDesc": "Кикает игрока по нику.",
@@ -259,8 +256,8 @@
"colDesc": "Меняет ваш цвет.",
"reloadDesc": "Перезагружает языковой файл.",
"vipDesc": "Добавляет игрока как VIP.",
- "moderatorDesc": "Добавляет игрока как Модератор.",
- "adminDesc": "Добавляет игрока как Админ.",
+ "moderatorDesc": "Добавляет игрока как Модератора.",
+ "adminDesc": "Добавляет игрока как Админа.",
"cremoveVipDesc": "Убирает VIP у игрока.",
"removeModeratorDesc": "Убирает Модератора у игрока.",
"removeAdminDesc": "Убирает Админа у игрока.",
@@ -283,5 +280,22 @@
"vipAndAbove": "VIP И Выше",
"moderatorAndAbove": "Модератор И Выше",
"admin": "Админ",
- "onlyYou": "Только Вы"
+ "onlyYou": "Только Вы",
+
+ "seekerDesc": "Добавляет игрока как искателя в прятках",
+ "seekersDesc": "Показывает всех вручную выбранных искателей.",
+ "clearSeekerDesc": "Очищает список всех вручную выбранных искателей",
+
+ "slashEndMeetingCmd": "Кто Может Использовать /endmeeting & /seeker",
+
+ "gameMasterWarning":"Вы будете наблюдать игры пока включён режим наблюдателя. ВНИМАНИЕ: Назначение ролей может быть неправильным, если эта настройка включена.",
+
+ "startWordsWelcome": "# В этом файле вы можете создавать слова которые будут 'Кикать Игроков Которые Говорят Старт'.\n# 'Режим строгого обнаружения' ВЫКЛ = Сообщения должны идеально совпадать с определенными словами. 'Режим строгого обнаружения' ВКЛ = Сообщения нуждаются только в определённых словах.\n# Вы также можете добавлять несвязанные слова, которые будут обнаруживаться только в лобби..\n\nstart\nbegin\ncommence\nстарт\nначинайте\n",
+
+ "gameMasterWarningTwo": "ВНИМАНИЕ: Режим Наблюдателя Включен",
+
+ "startWordKick": "{0} Был кикнут так как они отправили слово которое было в StartWords.txt {1} раз(а)",
+
+ "seekers": "Искателей: ",
+ "clearedSeekers": "Успешно очищен список вручную выбранных искателей."
}
diff --git a/Resources/Language/SimplifiedChinese.json b/Resources/Language/SimplifiedChinese.json
index 877aa56..c28e449 100644
--- a/Resources/Language/SimplifiedChinese.json
+++ b/Resources/Language/SimplifiedChinese.json
@@ -1,7 +1,7 @@
{
"LanguageID": "2",
- "gameMaster": "游戏大师(Game Master)",
+ "gameMaster": "游戏主管(Game Master)",
"showFPS": "显示帧率 (FPS)",
"autoStart": "自动开始",
"enableDarkTheme": "启用深色主题",
@@ -45,13 +45,13 @@
"noGameEnd": "游戏永不结束",
"tabGroupAccess": "权限等级",
- "slashColorCmd": "谁可以使用 /color",
+ "slashColorCmd": "谁可以使用 /color 指令",
"slashRolesAndGamemodeCmd": "谁可以使用 /r 和模板",
- "slashLastGameCmd": "谁可以使用 /l 和 /aur",
- "slashKickCmd": "谁可以使用 /kick 和 /ckick",
- "slashBanCmd": "谁可以使用 /ban 和 /cban",
- "slashEndMeetingCmd": "谁可以使用 /endmeeting",
- "slashStartAndEndGameCmd": "谁可以使用 /startgame 和 /endgame",
+ "slashLastGameCmd": "谁可以使用 /l 和 /aur 指令",
+ "slashKickCmd": "谁可以使用 /kick 和 /ckick 指令",
+ "slashBanCmd": "谁可以使用 /ban 和 /cban 指令",
+ "slashEndMeetingCmd": "谁可以使用 /endmeeting 和 /seeker 指令",
+ "slashStartAndEndGameCmd": "谁可以使用 /startgame 和 /endgame 指令",
"tabGroupCrewmate": "船员职业",
"tabGroupNeutral": "中立职业",
@@ -282,5 +282,12 @@
"vipAndAbove": "VIP 及以上",
"moderatorAndAbove": "管理员 及以上",
"admin": "管理员",
- "onlyYou": "仅自己"
+ "onlyYou": "仅自己",
+ "seekersDesc": "显示所有手动选择的搜寻者。",
+ "clearSeekerDesc": "清除手动搜寻者列表。",
+ "startWordsWelcome": "# 在此文件中,您可以设置检查发送 “Start” 并踢出该玩家的功能。\n# 严格检测关闭 = 消息必须完全匹配关键词。\n# 严格检测开启 = 消息只需包含关键词即可。\n# 也可以添加无关词语,仅用于大厅检测。\n\nstart\nbegin\ncommence",
+ "gameMasterWarningTwo": "警告:游戏主管已启用",
+ "startWordKick": "{0} 因发送 StartWords.txt 中的关键词被踢出,累计次数:{1} 次",
+ "seekers": "搜寻者:",
+ "clearedSeekers": "已成功清除手动搜寻者列表。"
}