Compare commits

...
21 Commits
Author SHA1 Message Date
Ape cde461c4a4 UI try not to be the dumbest thing ever (impossible challenge) 2026-08-26 14:33:04 +02:00
Ape 62d66e170b v2.0.3 II 2026-08-26 14:31:15 +02:00
Ape c201211afb v2.0.3 2026-08-26 14:26:42 +02:00
MV cc1950f543 Idiot can get GitHub working 2026-08-26 14:18:10 +02:00
MV 2764e073af Idiot can't get GitHub working 2026-08-26 14:14:59 +02:00
Ape 6f53cacb32 Fix hopefully 2026-08-26 14:09:54 +02:00
Ape f4d9d8101f Setting fallbacks, GitHub templates, GM fix 2026-08-26 14:02:31 +02:00
Ape f18dc3fa31 v2.0.2 2026-08-21 18:44:45 +02:00
Ape 0d55683088 v2.0.1 readme 2026-08-20 13:32:52 +02:00
Ape 9572c8ca53 v2.0.1 2026-08-20 13:32:10 +02:00
Ape 2e66fb54f9 v2.0.0 2026-08-18 21:00:42 +02:00
Ape f9c9e1a2b6 v1.9.5 2026-08-12 15:22:31 +02:00
Ape e5c1e183cd Merge branch 'main' of https://github.com/ApeMV/AmongUsRevamped 2026-08-11 22:48:47 +02:00
Ape 037c3ce902 Pray this works simulator (v1.9.4) 2026-08-11 22:48:45 +02:00
MV 37300e87d7 yes 2026-08-07 13:11:38 +02:00
Ape 69c13b2fba Merge branch 'main' of https://github.com/ApeMV/AmongUsRevamped 2026-08-05 21:41:35 +02:00
Ape 4404464459 Last thing I promise (I don't) 2026-08-05 21:41:23 +02:00
MV 059dbac2e4 Download Statistics
Added download badges for total and latest downloads.
2026-08-05 21:27:05 +02:00
Ape 95a203b711 v1.9.3 2026-08-05 21:21:23 +02:00
Ape 9c1d8a2943 v1.9.2 BE 2026-08-03 20:02:59 +02:00
Ape 90f0224d54 Whatever 2026-08-01 11:03:12 +02:00
37 changed files with 2597 additions and 907 deletions

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
---
name: General Issue
about: Report a bug, suggest an idea, or get support
title: ""
labels: ""
assignees: ""
---
### REQUIRED
* [ ] I confirm this Issue is relevant to Among Us Revamped
* [ ] I confirm this Issue is not a duplicate
* [ ] I have read the main GitHub page for potential answers to my Issue
### INFO
Please tick all the boxes above by typing "x" between them.
If your Issue does not match these requirements, please do not post it.
Issues ignoring or falsifying these requirements will be closed without warning.
Support based questions are preferred to be asked on Discord, but not prohibited.
### ISSUE TYPE (tick 1)
* [ ] Bug Report
* [ ] Suggestion
* [ ] Support
* [ ] other
### WRITE YOUR ISSUE BELOW:
+17
View File
@@ -0,0 +1,17 @@
### REQUIRED
* [ ] I confirm this PR was not fully made by AI
* [ ] I confirm this PR is fitting for Among Us Revamped
* [ ] I confirm this PR has been tested and properly functions
### INFO
Please tick all the boxes above by typing "x" between them.
If your Pull Request does not match these requirements, please do not post it.
Pull Requests ignoring or falsifying these requirements will be closed without warning.
### PR TYPE
* [ ] Bug Fix
* [ ] New Feature
* [ ] Refactor/Optimization
* [ ] Documentation Update
### WRITE YOUR PULL REQUEST BELOW:
+4 -3
View File
@@ -38,15 +38,16 @@ public partial class Main : BasePlugin
public static ConfigEntry<bool> DisableCommandHelper { get; private set; }
public static ConfigEntry<bool> DisableCompatibilityWarning { get; private set; }
public static NormalGameOptionsV10 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV10 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static NormalGameOptionsV11 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static MapNames CurrentMap => (MapNames)NormalOptions.MapId;
public static bool HasArgumentException;
public static string CredentialsText;
public const string ModVersion = "v1.9.0";
public const string ModVersion = "v2.0.3";
public static float GameTimer;
public static float AfkTimer;
public static readonly Dictionary<int, int> SayStartTimes = [];
public static readonly Dictionary<int, int> SayDeniedWordTimes = [];
+2 -2
View File
@@ -18,8 +18,8 @@
<ItemGroup>
<PackageReference Include="BepInEx.Unity.IL2CPP" Version="6.0.0-be.735" ExcludeAssets="runtime;native" />
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.6.5" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Android" Version="2025.10.14" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Android" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
<PackageReference Include="BepInEx.AutoPlugin" Version="1.1.0" PrivateAssets="all" />
<PackageReference Include="BepInEx.IL2CPP.MSBuild" Version="2.1.0-rc.1" PrivateAssets="all" ExcludeAssets="runtime" />
+26 -18
View File
@@ -29,7 +29,6 @@ public static class BanManager
private static string TemplatePath = $"{DataPath}/AUR-DATA/Templates.txt";
private static string StartWordsPath = $"{DataPath}/AUR-DATA/Startwords.txt";
public static Dictionary<string, string> Templates = new();
public static List<string> TempBanWhiteList = [];
public static void Init()
{
try
@@ -81,7 +80,7 @@ public static class BanManager
public static void AddBanPlayer(ClientData player)
{
if (!AmongUsClient.Instance.AmHost || player == null) return;
if (!CheckBanList(player?.FriendCode, player?.GetHashedPuid()) && !TempBanWhiteList.Contains(player?.GetHashedPuid()))
if (!CheckBanList(player?.FriendCode, player?.GetHashedPuid()))
{
if (player?.GetHashedPuid() != "" && player?.GetHashedPuid() != null && player?.GetHashedPuid() != "e3b0cb855")
{
@@ -106,13 +105,6 @@ public static class BanManager
Logger.Info($"{player.PlayerName} was in the BanList and has been banned", "BanListBan");
return;
}
if (TempBanWhiteList.Contains(player?.GetHashedPuid()))
{
AmongUsClient.Instance.KickPlayer(player.Id, true);
//This should not happen
Logger.Info($"{player.PlayerName} was in the Temporary BanList", "TempBan");
return;
}
}
public static bool CheckBanList(string code, string hashedpuid = "")
{
@@ -170,12 +162,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 +179,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 +198,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() || !Utils.IsLobby) 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 +214,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("startWordBan", player.Data.PlayerName, Options.AutoKickStartTimes.GetInt()));
}
else
{
AmongUsClient.Instance.KickPlayer(clientId, false);
Logger.SendInGame(Translator.Get("startWordKick", 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;
}
+10 -1
View File
@@ -26,6 +26,7 @@ internal static class CommandHelper
new Cmd { Name = new[] { "/sns" }, Prompt = "/sns", Description = Translator.Get("snsDesc"), HasVariable = false },
new Cmd { Name = new[] { "/shiftandseek" }, Prompt = "/shiftandseek", Description = Translator.Get("snsDesc"), HasVariable = false },
new Cmd { Name = new[] { "/sns2" }, Prompt = "/sns2", Description = Translator.Get("snsTwoDesc"), HasVariable = false },
new Cmd { Name = new[] { "/0kc" }, Prompt = "/0kc", Description = Translator.Get("0kcDesc"), HasVariable = false },
new Cmd { Name = new[] { "/0killcooldown" }, Prompt = "/0killcooldown", Description = Translator.Get("0kcDesc"), HasVariable = false },
@@ -33,6 +34,9 @@ internal static class CommandHelper
new Cmd { Name = new[] { "/sr" }, Prompt = "/sr", Description = Translator.Get("SrDesc"), HasVariable = false },
new Cmd { Name = new[] { "/speedrun" }, Prompt = "/speedrun", Description = Translator.Get("SrDesc"), HasVariable = false },
new Cmd { Name = new[] { "/pns" }, Prompt = "/pns", Description = Translator.Get("pnsDesc"), HasVariable = false },
new Cmd { Name = new[] { "/poofandseek" }, Prompt = "/poofandseek", Description = Translator.Get("pnsDesc"), HasVariable = false },
new Cmd { Name = new[] { "/eg" }, Prompt = "/eg", Description = Translator.Get("egDesc"), HasVariable = false },
new Cmd { Name = new[] { "/endgame" }, Prompt = "/endgame", Description = Translator.Get("egDesc"), HasVariable = false },
@@ -76,7 +80,11 @@ 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 },
new Cmd { Name = new[] { "/gmvote" }, Prompt = "/gmvote", Description = Translator.Get("modeVoteDesc"), HasVariable = false }
};
[HarmonyPostfix]
@@ -97,6 +105,7 @@ internal static class CommandHelper
HelperText.color = new Color(0.7f, 0.7f, 0.7f, 0.7f);
HelperText.transform.localPosition = __instance.outputText.transform.localPosition;
HelperText.enabled = false;
HelperText.fontSharedMaterial = new Material(__instance.outputText.fontSharedMaterial);
}
string t = __instance.text;
+241 -124
View File
@@ -48,7 +48,7 @@ namespace AmongUsRevamped
public static readonly string[] gameModes =
{
"Standard", "Shift And Seek", "Speedrun"
"Standard", "Shift And Seek", "Speedrun", "Poof And Seek"
};
public static readonly string[] accessLevels =
@@ -56,15 +56,13 @@ namespace AmongUsRevamped
Translator.Get("everyone"), Translator.Get("vipAndAbove"), Translator.Get("moderatorAndAbove"), Translator.Get("admin"), Translator.Get("onlyYou")
};
public static readonly string[] crewmateAbilities =
public static readonly string[] afkPenalties =
{
"Mayor", "Workhorse", "Jester", "Tasker", "None"
};
public static readonly string[] impostorAbilities =
{
"Tyrant", "Stealer", "Juggernaut", "None"
Translator.Get("kick"), Translator.Get("ban"), Translator.Get("notifyMe")
};
//System
public static OptionItem Language;
@@ -72,32 +70,60 @@ 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 EnableKickHighLevelPlayer;
public static OptionItem KickHighLevelPlayer;
public static OptionItem TempBanHighLevelPlayer;
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 EnableJoinMessages;
public static OptionItem MessagePerPlayerNum;
public static OptionItem AutomaticMapPoll;
public static OptionItem TimeBeforeMapPoll;
public static OptionItem AutomaticAllMapPoll;
public static OptionItem TimeBeforeAllMapPoll;
public static OptionItem AutomaticModePoll;
public static OptionItem TimeBeforeModePoll;
public static OptionItem TabGroupAutostart;
public static OptionItem AutoStartTimer;
public static OptionItem WaitAutoStart;
public static OptionItem PlayerAutoStart;
public static OptionItem EnableJoinMessages;
public static OptionItem MessagePerPlayerNum;
public static OptionItem Rehost;
public static OptionItem Public;
public static OptionItem TabGroupAfk;
public static OptionItem EnableAfkDetection;
public static OptionItem AfkTimer;
public static OptionItem AfkPenalty;
public static OptionItem OnlyDetectSpawn;
public static OptionItem TabGroupMisc;
public static OptionItem MapVoteDuration;
public static OptionItem ModeVoteDuration;
public static OptionItem StartCountdown;
public static OptionItem ColorCommandLevel;
public static OptionItem AllowFortegreen;
@@ -107,6 +133,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;
@@ -125,8 +152,9 @@ namespace AmongUsRevamped
public static OptionItem DisableCloseDoor;
public static OptionItem TabGroupGameplayGeneral;
public static OptionItem ShieldFirstDeath;
public static OptionItem ShieldFirstDeathDuration;
public static OptionItem DisableAnnoyingMeetingCalls;
public static OptionItem ChangeDecontaminationTime;
public static OptionItem DecontaminationTimeOnMiraHQ;
public static OptionItem DecontaminationDoorOpenTimeOnMiraHQ;
@@ -268,11 +296,11 @@ namespace AmongUsRevamped
public static OptionItem NumSeekers;
public static OptionItem TabGroupSNS;
public static OptionItem SNSSettingsOverride;
public static OptionItem SNSChatInGame;
public static OptionItem SNSChatInGameExtend;
public static OptionItem SNSChatInGameExtend2;
public static OptionItem SNSChatInGameFast;
public static OptionItem CrewAutoWinsGameAfter;
public static OptionItem CantKillTime;
public static OptionItem MisfiresToSuicide;
public static OptionItem SNSDisableSabotage;
public static OptionItem SNSDisableReactor;
public static OptionItem SNSDisableOxygen;
@@ -281,12 +309,28 @@ namespace AmongUsRevamped
public static OptionItem SNSDisableHeli;
public static OptionItem SNSDisableMushroomMixup;
public static OptionItem SNSDisableCloseDoor;
public static OptionItem SNSImpostorsCanVent;
public static OptionItem TabGroupSpeedrun;
public static OptionItem SpeedrunSettingsOverride;
public static OptionItem GameAutoEndsAfter;
public static OptionItem EngineerMode;
public static OptionItem TabGroupPNS;
public static OptionItem PNSChatInGame;
public static OptionItem PNSChatInGameExtend;
public static OptionItem PNSChatInGameFast;
public static OptionItem PNSCrewAutoWinsGameAfter;
public static OptionItem BadMoveTimeToSuicide;
public static OptionItem PNSDisableSabotage;
public static OptionItem PNSDisableReactor;
public static OptionItem PNSDisableOxygen;
public static OptionItem PNSDisableLights;
public static OptionItem PNSDisableComms;
public static OptionItem PNSDisableHeli;
public static OptionItem PNSDisableMushroomMixup;
public static OptionItem PNSDisableCloseDoor;
public static OptionItem PNSImpostorsCanVent;
public static bool IsLoaded = false;
public static void Load()
@@ -294,72 +338,127 @@ 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);
KickLowLevelPlayer = IntegerOptionItem.Create(60050, Translator.Get("kickLowLevelPlayer"), new(0, 100, 1), 0, TabGroup.SystemSettings, false)
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);
EnableKickHighLevelPlayer = BooleanOptionItem.Create(60053, Translator.Get("enableKickHighLevelPlayer"), false, TabGroup.ModerationSettings, false);
KickHighLevelPlayer = IntegerOptionItem.Create(60054, Translator.Get("kickHighLevelPlayer"), new(100, 5000, 50), 1000, TabGroup.ModerationSettings, false)
.SetParent(EnableKickHighLevelPlayer)
.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);
TempBanHighLevelPlayer = BooleanOptionItem.Create(60055, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.ModerationSettings, false)
.SetParent(EnableKickHighLevelPlayer);
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);
AutomaticMapPoll = BooleanOptionItem.Create(60154, Translator.Get("automaticMapPoll"), false, TabGroup.SystemSettings, false);
TimeBeforeMapPoll = IntegerOptionItem.Create(60155, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 10, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticMapPoll);
AutomaticAllMapPoll = BooleanOptionItem.Create(60156, Translator.Get("automaticAllMapPoll"), false, TabGroup.SystemSettings, false);
TimeBeforeAllMapPoll = IntegerOptionItem.Create(60157, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 10, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticAllMapPoll);
AutomaticModePoll = BooleanOptionItem.Create(60158, Translator.Get("automaticModePoll"), false, TabGroup.SystemSettings, false);
TimeBeforeModePoll = IntegerOptionItem.Create(60159, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticModePoll);
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);
TabGroupAfk = TextOptionItem.Create(60370, Translator.Get("tabGroupAfk"), TabGroup.SystemSettings)
.SetColor(Color.yellow);
EnableAfkDetection = BooleanOptionItem.Create(60371, Translator.Get("enableAfkDetection"), false, TabGroup.SystemSettings, false);
AfkTimer = IntegerOptionItem.Create(60372, Translator.Get("afkTimer"), new(15, 120, 5), 30, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(EnableAfkDetection);
AfkPenalty = StringOptionItem.Create(60373, Translator.Get("afkPenalty"), afkPenalties, 0, TabGroup.SystemSettings, false)
.SetParent(EnableAfkDetection);
OnlyDetectSpawn = BooleanOptionItem.Create(60374, Translator.Get("onlyDetectSpawn"), true, TabGroup.SystemSettings, false)
.SetParent(EnableAfkDetection);
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);
ModeVoteDuration = IntegerOptionItem.Create(60380, Translator.Get("modeVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(Color.red);
StartCountdown = IntegerOptionItem.Create(60381, 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,47 +467,84 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Level);
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
.SetColor(Color.yellow);
SNSSettingsOverride = BooleanOptionItem.Create(70051, Translator.Get("snsSettingsOverride"), true, TabGroup.GamemodeSettings, false);
SNSChatInGame = BooleanOptionItem.Create(70063, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
CantKillTime = IntegerOptionItem.Create(70053, Translator.Get("cantKillTime"), new(0, 60, 5), 20, TabGroup.GamemodeSettings, false)
.SetColor(Color.green);
SNSChatInGame = BooleanOptionItem.Create(70051, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
SNSChatInGameExtend = BooleanOptionItem.Create(70052, Translator.Get("snsChatInGameExtend"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSChatInGame);
SNSChatInGameExtend2 = BooleanOptionItem.Create(70053, Translator.Get("snsChatInGameExtendTwo"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSChatInGame);
SNSChatInGameFast = BooleanOptionItem.Create(70054, Translator.Get("snsChatInGameFast"), false, TabGroup.GamemodeSettings, false)
.SetParent(SNSChatInGame);
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70056, Translator.Get("crewAutoWinsGameAfter"), new(60, 600, 10), 300, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
MisfiresToSuicide = IntegerOptionItem.Create(70052, Translator.Get("misfiresToSuicide"), new(1, 10, 1), 2, TabGroup.GamemodeSettings, false);
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70054, Translator.Get("crewAutoWinsGameAfter"), new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
SNSDisableSabotage = BooleanOptionItem.Create(70055, Translator.Get("snsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
SNSDisableSabotage = BooleanOptionItem.Create(70057, Translator.Get("snsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
.SetColor(Color.red);
SNSDisableReactor = BooleanOptionItem.Create(70056, Translator.Get("snsDisableReactor"), true, TabGroup.GamemodeSettings, false)
SNSDisableReactor = BooleanOptionItem.Create(70058, Translator.Get("snsDisableReactor"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableOxygen = BooleanOptionItem.Create(70057, Translator.Get("snsDisableOxygen"), true, TabGroup.GamemodeSettings, false)
SNSDisableOxygen = BooleanOptionItem.Create(70059, Translator.Get("snsDisableOxygen"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableLights = BooleanOptionItem.Create(70058, Translator.Get("snsDisableLights"), true, TabGroup.GamemodeSettings, false)
SNSDisableLights = BooleanOptionItem.Create(70060, Translator.Get("snsDisableLights"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableComms = BooleanOptionItem.Create(70059, Translator.Get("snsDisableComms"), true, TabGroup.GamemodeSettings, false)
SNSDisableComms = BooleanOptionItem.Create(70061, Translator.Get("snsDisableComms"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableHeli = BooleanOptionItem.Create(70060, Translator.Get("snsDisableHeli"), true, TabGroup.GamemodeSettings, false)
SNSDisableHeli = BooleanOptionItem.Create(70062, Translator.Get("snsDisableHeli"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableMushroomMixup = BooleanOptionItem.Create(70061, Translator.Get("snsDisableMushroomMixup"), true, TabGroup.GamemodeSettings, false)
SNSDisableMushroomMixup = BooleanOptionItem.Create(70063, Translator.Get("snsDisableMushroomMixup"), true, TabGroup.GamemodeSettings, false)
.SetParent(SNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
SNSDisableCloseDoor = BooleanOptionItem.Create(70062, Translator.Get("snsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
SNSDisableCloseDoor = BooleanOptionItem.Create(70064, Translator.Get("snsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
.SetColor(Color.red);
SNSImpostorsCanVent = BooleanOptionItem.Create(70065, Translator.Get("snsImpostorCanVent"), true, TabGroup.GamemodeSettings, false);
TabGroupSpeedrun = TextOptionItem.Create(70075, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
.SetColor(Color.blue);
SpeedrunSettingsOverride = BooleanOptionItem.Create(70076, Translator.Get("speedrunSettingsOverride"), true, TabGroup.GamemodeSettings, false);
TabGroupSpeedrun = TextOptionItem.Create(70076, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
GameAutoEndsAfter = IntegerOptionItem.Create(70077, Translator.Get("gameAutoEndsAfter"), new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
EngineerMode = BooleanOptionItem.Create(70078, Translator.Get("engineerMode"), false, TabGroup.GamemodeSettings, false);
TabGroupPNS = TextOptionItem.Create(70100, Translator.Get("tabGroupPNS"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
PNSChatInGame = BooleanOptionItem.Create(70101, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
PNSChatInGameExtend = BooleanOptionItem.Create(70102, Translator.Get("snsChatInGameExtend"), false, TabGroup.GamemodeSettings, false)
.SetParent(PNSChatInGame);
PNSChatInGameFast = BooleanOptionItem.Create(70103, Translator.Get("snsChatInGameFast"), false, TabGroup.GamemodeSettings, false)
.SetParent(PNSChatInGame);
BadMoveTimeToSuicide = IntegerOptionItem.Create(70104, Translator.Get("badMoveTimeToSuicide"), new(1, 30, 1), 3, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
PNSCrewAutoWinsGameAfter = IntegerOptionItem.Create(70105, Translator.Get("crewAutoWinsGameAfter"), new(60, 600, 10), 300, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Seconds);
PNSDisableSabotage = BooleanOptionItem.Create(70106, Translator.Get("pnsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
.SetColor(Color.red);
PNSDisableReactor = BooleanOptionItem.Create(70107, Translator.Get("snsDisableReactor"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableOxygen = BooleanOptionItem.Create(70108, Translator.Get("snsDisableOxygen"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableLights = BooleanOptionItem.Create(70109, Translator.Get("snsDisableLights"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableComms = BooleanOptionItem.Create(70110, Translator.Get("snsDisableComms"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableHeli = BooleanOptionItem.Create(70111, Translator.Get("snsDisableHeli"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableMushroomMixup = BooleanOptionItem.Create(70112, Translator.Get("snsDisableMushroomMixup"), true, TabGroup.GamemodeSettings, false)
.SetParent(PNSDisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
PNSDisableCloseDoor = BooleanOptionItem.Create(70113, Translator.Get("pnsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
.SetColor(Color.red);
PNSImpostorsCanVent = BooleanOptionItem.Create(70114, Translator.Get("snsImpostorCanVent"), true, TabGroup.GamemodeSettings, false);
// 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)
@@ -431,105 +567,86 @@ namespace AmongUsRevamped
DisableMushroomMixup = BooleanOptionItem.Create(60462, Translator.Get("disableMushroomMixup"), false, TabGroup.ModSettings, false)
.SetParent(DisableSabotage)
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
DisableCloseDoor = BooleanOptionItem.Create(60566, Translator.Get("disableCloseDoor"), false, TabGroup.ModSettings, false)
DisableCloseDoor = BooleanOptionItem.Create(60463, Translator.Get("disableCloseDoor"), false, TabGroup.ModSettings, false)
.SetColor(Color.red);
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));
ShieldFirstDeath = BooleanOptionItem.Create(60565, Translator.Get("shieldFirstDeath"), false, TabGroup.ModSettings, false);
ShieldFirstDeathDuration = IntegerOptionItem.Create(60566, Translator.Get("shieldFirstDeathDuration"), new(10, 120, 5), 30, TabGroup.ModSettings, false)
.SetParent(ShieldFirstDeath)
.SetValueFormat(OptionFormat.Seconds);
DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60567, 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))
+22 -1
View File
@@ -184,7 +184,7 @@ internal class EACR
goto YesCheat;
}
if (Utils.IsMeeting && MeetingHud.Instance.state != MeetingHud.VoteStates.Animating)
if (Utils.IsMeeting && MeetingHud.Instance.state != MeetingHud.MeetingStates.Animating)
{
Logger.SendInGame($"{player.Data.PlayerName} might have called an invalid sabotage (cheating)");
Logger.Info($" {player.Data.PlayerName} might have called an invalid sabotage (cheating)", "EACR");
@@ -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");
}
}
+165 -8
View File
@@ -1,3 +1,4 @@
using AmongUs.GameOptions;
using Hazel;
using System;
using System.Runtime.CompilerServices;
@@ -9,11 +10,28 @@ namespace AmongUsRevamped;
[HarmonyPatch(typeof(InnerNetClient), nameof(InnerNetClient.FixedUpdate))]
public static class FixedUpdate
{
public static Dictionary<byte, float> BadMovementTimer = new Dictionary<byte, float>();
public static readonly Dictionary<string, Vector2> SpawnRange = new()
{
["Skeld"] = new(-0.8f, 1.2f),
["Mira"] = new(-4.4f, 2.4f),
["MiraMeeting"] = new(23.9f, 2.6f),
["Polus"] = new(16.6f, -1.1f),
["PolusMeeting"] = new(19.5f, -16.9f),
["AirshipMeeting"] = new(11f, 15.3f),
["Fungle"] = new(-9.8f, 1.8f),
["FungleMeetings"] = new(-3.1f, -1.3f)
};
public static float Range = 4f;
public static Dictionary<byte, Vector2> Position = new Dictionary<byte, Vector2>();
public static void Postfix()
{
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance)
{
Main.GameTimer += Time.fixedDeltaTime;
Main.AfkTimer += Time.fixedDeltaTime;
}
GameObject n = GameObject.Find("NewRequestInactive");
@@ -30,6 +48,114 @@ public static class FixedUpdate
if (!AmongUsClient.Instance.AmHost) return;
DisableDevice.FixedUpdate();
if (Main.AfkTimer >= Options.AfkTimer.GetInt())
{
Main.AfkTimer = 0;
if (!Options.EnableAfkDetection.GetBool()) return;
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data == null || p == PlayerControl.LocalPlayer || p.Data.IsDead) continue;
Vector2 newPos = p.GetTruePosition();
if (Options.OnlyDetectSpawn.GetBool() && !IsSpawn(newPos))
{
Position[p.PlayerId] = newPos;
continue;
}
if (Position.TryGetValue(p.PlayerId, out Vector2 oldPos))
{
if (Vector2.Distance(oldPos, newPos) < 0.05f)
{
switch (Options.AfkPenalty.GetValue())
{
case 0:
AmongUsClient.Instance.KickPlayer(p.Data.ClientId, false);
Logger.Info(Translator.Get("afkKick", p.Data.PlayerName, Options.AfkTimer.GetInt()), "AfkManagement");
Logger.SendInGame(Translator.Get("afkKick", p.Data.PlayerName, Options.AfkTimer.GetInt()));
break;
case 1:
AmongUsClient.Instance.KickPlayer(p.Data.ClientId, true);
Logger.Info(Translator.Get("afkBan", p.Data.PlayerName, Options.AfkTimer.GetInt()), "AfkManagement");
Logger.SendInGame(Translator.Get("afkBan", p.Data.PlayerName, Options.AfkTimer.GetInt()));
break;
case 2:
Logger.Info(Translator.Get("afkNotify", p.Data.PlayerName, Options.AfkTimer.GetInt()), "AfkManagement");
Logger.SendInGame(Translator.Get("afkNotify", p.Data.PlayerName, Options.AfkTimer.GetInt()));
break;
}
}
}
Position[p.PlayerId] = p.GetTruePosition();
}
}
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
{
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data.RoleType == RoleTypes.Phantom && !p.PhantomFadeActive && !p.Data.IsDead && p.MyPhysics.GetVelocity() != new Vector2(0, 0) && OnGameStartPatch.PastStartScreen)
{
if (!BadMovementTimer.ContainsKey(p.Data.PlayerId))
{
BadMovementTimer[p.Data.PlayerId] = 0f;
}
BadMovementTimer[p.Data.PlayerId] += Time.fixedDeltaTime;
if (BadMovementTimer[p.Data.PlayerId] > Options.BadMoveTimeToSuicide.GetInt())
{
p.RpcSetRole(RoleTypes.ImpostorGhost);
Logger.Info($" {p.Data.PlayerName} wrongfully moved for {Options.BadMoveTimeToSuicide.GetInt()}s and suicided", "SNSKillManager");
Logger.SendInGame($" {p.Data.PlayerName} wrongfully moved for {Options.BadMoveTimeToSuicide.GetInt()}s and suicided");
}
}
}
}
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !Utils.IsLobby)
{
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
if (p.protectedByGuardianId == -1)
{
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
}
p.Data.MarkDirty();
}
}
}
private static bool IsSpawn(Vector2 pos)
{
switch (Utils.GetActiveMapId())
{
case 0:
return Vector2.Distance(pos, SpawnRange["Skeld"]) <= Range;
case 1:
return Vector2.Distance(pos, SpawnRange["Mira"]) <= Range || Vector2.Distance(pos, SpawnRange["MiraMeeting"]) <= Range;
case 2:
return Vector2.Distance(pos, SpawnRange["Polus"]) <= Range || Vector2.Distance(pos, SpawnRange["PolusMeeting"]) <= Range;
case 4:
return Vector2.Distance(pos, SpawnRange["AirshipMeeting"]) <= Range;
case 5:
return Vector2.Distance(pos, SpawnRange["Fungle"]) <= Range || Vector2.Distance(pos, SpawnRange["FungleMeetings"]) <= Range;
default:
return true;
}
}
}
@@ -43,7 +169,7 @@ class FixedUpdateInGamePatch
public static void Postfix(PlayerControl __instance)
{
if (__instance == null || __instance.PlayerId == 255 || !AmongUsClient.Instance.AmHost) return;
t += Time.deltaTime;
if (t < 0.2f) return;
t = 0f;
@@ -72,22 +198,41 @@ class FixedUpdateInGamePatch
switch (gamemode)
{
case 0:
break;
case 1: // SnS
if (Main.NormalOptions.KillCooldown != 2.5f)
Main.NormalOptions.KillCooldown = 2.5f;
if (Options.SNSSettingsOverride.GetBool() && settingsLabel == null)
Main.NormalOptions.TaskBarMode = 0;
if (!Utils.InGame)
{
if (Main.NormalOptions.KillCooldown != 2.5f)
{
Main.NormalOptions.KillCooldown = 2.5f;
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 3, 100);
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 0, 0);
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
}
}
break;
case 2: // Speedrun
break;
case 3: // PnS
if (!Utils.InGame)
{
if (Main.NormalOptions.KillCooldown != 1f)
{
Main.NormalOptions.KillCooldown = 1f;
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 0, 0);
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 3, 100);
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
}
}
break;
}
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance)
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance && Main.GameTimer > 6)
{
// 1 = Shift and Seek
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && Options.CrewAutoWinsGameAfter.GetInt() != 0 && !Options.NoGameEnd.GetBool())
@@ -110,7 +255,19 @@ 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");
}
}
// 3 = Poof and Seek
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek && !Options.NoGameEnd.GetBool())
{
if (Main.GameTimer > Options.PNSCrewAutoWinsGameAfter.GetInt())
{
Main.GameTimer = 0f;
Utils.ContinueEndGame((byte)GameOverReason.CrewmatesByVote);
Logger.Info($" Crewmates won because the game took longer than {Options.PNSCrewAutoWinsGameAfter.GetInt()}s", "PNSManager");
NormalGameEndChecker.CheckWinnerText("PnSTimer");
}
}
}
+1
View File
@@ -214,6 +214,7 @@ namespace AmongUsRevamped
public enum TabGroup
{
SystemSettings,
ModerationSettings,
//CustomRoleSettings,
ModSettings,
GamemodeSettings,
+48
View File
@@ -0,0 +1,48 @@
using AmongUs.GameOptions;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using System;
namespace AmongUsRevamped;
public static class OptionManager
{
private static float OldKillCooldown;
public static void SyncGameOptions()
{
if (!AmongUsClient.Instance.AmHost) return;
var options = GameOptionsManager.Instance.CurrentGameOptions;
foreach (var component in GameManager.Instance.LogicComponents)
{
var logicOptions = component.TryCast<LogicOptions>();
if (logicOptions != null)
{
logicOptions.SetGameOptions(options);
}
}
}
public static void CacheOptions()
{
if (!AmongUsClient.Instance.AmHost) return;
OldKillCooldown = Main.NormalOptions.KillCooldown;
}
public static void RestoreOptions()
{
if (!AmongUsClient.Instance.AmHost) return;
if (Main.NormalOptions.KillCooldown != OldKillCooldown)
{
Main.NormalOptions.KillCooldown = OldKillCooldown;
Logger.Info("Force overrided Kill Cooldown back to original", "RestoreOptions");
}
SyncGameOptions();
}
}
+33
View File
@@ -0,0 +1,33 @@
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 (!EOSManager.Instance.loginFlowFinished || EOSManager.Instance.authExpiredCallbackTriggered)
{
Logger.Info("Attempted to log in using EOS", "DisconnectManager");
EOSManager.Instance.AdultPermissionsFlow();
}
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");
}
}
}
+210 -5
View File
@@ -38,10 +38,10 @@ public static class Utils
public static bool IsFreePlay => AmongUsClient.Instance.NetworkMode == NetworkModes.FreePlay;
public static bool IsMeeting => InGame && (MeetingHud.Instance);
public static bool GamePastRoleSelection => Main.GameTimer > 10f;
public static bool HandlingGameEnd;
public static byte CustomGameOverReason;
public static bool CanCallMeetings;
public static bool HasMurdered;
public static string ColorString(Color32 color, string str) => $"<#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}>{str}</color>";
public static string ColorToHex(Color32 color) => $"#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}";
@@ -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:
@@ -198,19 +200,24 @@ public static class Utils
public static void ClearLeftoverData()
{
Logger.Info(" Cleared Leftover Data", "Utils");
RpcSetTasksPatch.GlobalTaskIds = null;
HandlingGameEnd = false;
OnGameJoinedPatch.AutoStartCheck = false;
Main.GameTimer = 0f;
Main.AfkTimer = 0f;
FixedUpdate.Position.Clear();
NormalGameEndChecker.canUpdateWinnerText = true;
MurderPlayerPatch.misfireCount.Clear();
MurderPlayerPatch.killCount.Clear();
HasMurdered = false;
LateTask.Tasks.Clear();
LateTask.Tasks.RemoveAll(x => x.name != "RehostManager");
NormalGameEndChecker.ImpCheckComplete = false;
CreateOptionsPickerPatch.SetDleks2 = false;
CanCallMeetings = true;
PlayerControlSetRolePatch.FirstAssign = true;
PlayerControlCompleteTaskPatch.playerTasksCompleted.Clear();
PlayerControlCompleteTaskPatch.tasksPerPlayer.Clear();
@@ -220,12 +227,30 @@ public static class Utils
OnPlayerJoinedPatch.JoinNum = 0;
PlayerControlSetRolePatch.ProcessedPlayers.Clear();
PlayerControlSetRolePatch.Seekers.Clear();
PlayerControlSetRolePatch.FirstAssign = true;
PlayerControlSetRolePatch.manualSeekers.Clear();
OnGameStartPatch.ScheduleExile = false;
CoShowIntroPatch.IntroInitiated = false;
OnGameStartPatch.PastStartScreen = false;
FixedUpdate.BadMovementTimer.Clear();
skeldVotes = 0;
miraVotes = 0;
polusVotes = 0;
airshipVotes = 0;
fungleVotes = 0;
dleksVotes = 0;
HasVoted.Clear();
MapVoteActive = false;
standardVotes = 0;
noKillCooldownVotes = 0;
speedrunVotes = 0;
shiftAndSeekVotes = 0;
poofAndSeekVotes = 0;
ModeVoteActive = false;
}
public static PlayerControl[] AllAlivePlayerControls
@@ -572,4 +597,184 @@ public static class Utils
}
else return $"<color=#8cffff>{p.Data.RoleType}</color>";
}
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<byte> HasVoted = [];
public static void MapVote(bool dleks, bool moderator)
{
if (MapVoteActive || ModeVoteActive) 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<HudManager>.Instance.Chat, "A map vote is active!\n\nA: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Eht Dleks\n\nType /vote 'letter' to vote.", "", false);
else if (!moderator) Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A map vote is active!\n\nA: The Skeld\nB: Mira HQ\nC: Polus\nD: The Airship\nE: The Fungle\n\nType /vote 'letter' to vote.", "", false);
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");
}
public static int standardVotes;
public static int noKillCooldownVotes;
public static int speedrunVotes;
public static int shiftAndSeekVotes;
public static int poofAndSeekVotes;
public static bool ModeVoteActive;
public static readonly List<byte> HasModeVoted = [];
public static void ModeVote(bool moderator)
{
if (ModeVoteActive || MapVoteActive) return;
ModeVoteActive = true;
if (moderator) Utils.ModeratorChatCommand("A Gamemode vote is active!\n\nA: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n\nType /vote 'letter' to vote.", "", false);
else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A Gamemode vote is active!\n\nA: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n\nType /vote 'letter' to vote.", "", false);
new LateTask(() =>
{
int highest = standardVotes;
string winner = "None";
byte modeId = 0;
bool tie = false;
void Check(int votes, string name, byte id)
{
if (votes > highest)
{
highest = votes;
winner = name;
modeId = id;
tie = false;
}
else if (votes == highest)
{
tie = true;
}
}
Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
Check(speedrunVotes, "Speedrun", 2);
Check(shiftAndSeekVotes, "Shift and Seek", 1);
Check(poofAndSeekVotes, "Poof and Seek", 3);
string voteResults = $"Standard: {standardVotes}\n" + $"No Kill Cooldown: {noKillCooldownVotes}\n" + $"Speedrun: {speedrunVotes}\n" + $"Shift and Seek: {shiftAndSeekVotes}\n" + $"Poof and Seek: {poofAndSeekVotes}";
if (highest == 0)
{
ModeratorChatCommand("We have a winner! Just kidding. No one voted.", "", false);
}
else if (tie)
{
ModeratorChatCommand($"Gamemode vote tied. No new mode selected.\n\n{voteResults}", "", false);
}
else
{
ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
Options.Gamemode.SetValue(modeId);
if (winner == "0 Kill Cooldown")
{
Main.NormalOptions.KillCooldown = 0.01f;
}
}
standardVotes = 0;
noKillCooldownVotes = 0;
speedrunVotes = 0;
shiftAndSeekVotes = 0;
poofAndSeekVotes = 0;
HasVoted.Clear();
ModeVoteActive = false;
}, Options.ModeVoteDuration.GetInt(), "ModePoll");
}
// As of v2026.8.18, Innersloth bans the host for hacking if the start game button is pressed when any player is not Serialized (or something similar).
// CheckValidData serves as an emergency blockage to prevent this and stop host from being kicked.
public static bool CheckValidData()
{
if (!AmongUsClient.Instance.AmHost) return true;
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p == null || !p.hasBeenSerialized)
{
return false;
}
}
return true;
}
}
+263 -43
View File
@@ -396,10 +396,124 @@ 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 == "/gmvote")
{
if (Utils.IsLobby)
{
Utils.ModeVote(false);
__instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty);
return false;
}
}
if (text == "/vote a")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId))
{
Utils.skeldVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.standardVotes++;
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote b")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
Utils.miraVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.noKillCooldownVotes++;
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote c")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
Utils.polusVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.speedrunVotes++;
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote d")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
Utils.airshipVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.shiftAndSeekVotes++;
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote e")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
Utils.fungleVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.poofAndSeekVotes++;
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote f")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive && 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;
}
@@ -411,20 +525,18 @@ internal static class SendChatPatch
if (text == "/0kc" || text == "/0killcooldown")
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
return false;
}
if (text == "/sns" || text == "/shiftandseek")
{
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
{
Utils.ChatCommand(__instance, "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.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nEmergency Meetings = Off", 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);
}
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
return false;
}
if (text == "/sns2" || text == "/shiftandseek2")
{
Utils.ChatCommand(__instance, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
return false;
}
@@ -434,6 +546,12 @@ internal static class SendChatPatch
return false;
}
if (text == "/pns" || text == "/poofandseek")
{
Utils.ChatCommand(__instance, $"Poof and Seek:\n\nImpostors can only move while vanished\n Meetings & Reports = Off\nVisibly moving {Options.BadMoveTimeToSuicide.GetInt()}s as Phantom = Suicide", $"Crewmates win by doing tasks or surviving {Options.PNSCrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone", true);
return false;
}
if (text == "/r" || text == "/roles")
{
switch (Options.Gamemode.GetValue())
@@ -441,25 +559,21 @@ internal static class SendChatPatch
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
}
break;
case 1:
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
{
Utils.ChatCommand(__instance, "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.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nEmergency Meetings = Off", 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);
}
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
break;
case 2:
Utils.ChatCommand(__instance, $"Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {Options.GameAutoEndsAfter.GetInt()}s", "", false);
break;
case 3:
Utils.ChatCommand(__instance, $"Poof and Seek:\n\nImpostors can only move while vanished\n Meetings & Reports = Off\nVisibly moving {Options.BadMoveTimeToSuicide.GetInt()}s as Phantom = Suicide", $"Crewmates win by doing tasks or surviving {Options.PNSCrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone", true);
break;
}
__instance.timeSinceLastMessage = 0.8f;
__instance.freeChatField.textArea.Clear();
@@ -469,6 +583,8 @@ internal static class SendChatPatch
if (text.StartsWith("/t "))
{
BanManager.LoadTemplates();
string templateName = text[3..].Trim().ToLower();
if (BanManager.Templates.TryGetValue(templateName, out string templateMessage))
@@ -588,7 +704,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 +743,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 +814,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 +837,110 @@ 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 == "/gmvote")
{
if (Utils.IsLobby)
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashMapAndSeekerCmd.GetValue()) return;
Utils.ModeVote(true);
}
}
if (text == "/vote a")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
Utils.skeldVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.standardVotes++;
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote b")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
Utils.miraVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.noKillCooldownVotes++;
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote c")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
Utils.polusVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.speedrunVotes++;
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote d")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
Utils.airshipVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.shiftAndSeekVotes++;
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote e")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
Utils.fungleVotes++;
}
if (Utils.ModeVoteActive)
{
Utils.poofAndSeekVotes++;
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote f")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive && 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,27 +951,23 @@ 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")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
}
if (text == "/sns" || text == "/shiftandseek")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
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);
}
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
}
if (text == "/sns2" || text == "/shiftandseek2")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand("Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
}
if (text == "/sr" || text == "/speedrun")
@@ -761,6 +976,12 @@ public static class RPCHandlerPatch
Utils.ModeratorChatCommand($"Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {Options.GameAutoEndsAfter.GetInt()}s", "", false);
}
if (text == "/pns" || text == "/poofandseek")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand($"Poof and Seek:\n\nImpostors can only move while vanished\n Meetings & Reports = Off\nVisibly moving {Options.BadMoveTimeToSuicide.GetInt()}s as Phantom = Suicide", $"Crewmates win by doing tasks or surviving {Options.PNSCrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone", true);
}
if (text == "/r" || text == "/roles")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
@@ -769,25 +990,22 @@ public static class RPCHandlerPatch
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
{
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
}
break;
case 1:
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);
}
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
break;
case 2:
Utils.ModeratorChatCommand($"Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {Options.GameAutoEndsAfter.GetInt()}s", "", false);
break;
case 3:
Utils.ModeratorChatCommand($"Poof and Seek:\n\nImpostors can only move while vanished\n Meetings & Reports = Off\nVisibly moving {Options.BadMoveTimeToSuicide.GetInt()}s as Phantom = Suicide", $"Crewmates win by doing tasks or surviving {Options.PNSCrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone", true);
break;
}
}
@@ -795,6 +1013,8 @@ public static class RPCHandlerPatch
if (text.StartsWith("/t "))
{
BanManager.LoadTemplates();
string templateName = text[3..].Trim().ToLower();
if (BanManager.Templates.TryGetValue(templateName, out string templateMessage))
+1 -2
View File
@@ -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"));
}
}
+1 -1
View File
@@ -49,7 +49,7 @@ internal static class DisableDevice
public static void FixedUpdate()
{
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !Utils.GamePastRoleSelection) return;
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !OnGameStartPatch.PastStartScreen) return;
frame = frame == 5 ? 0 : ++frame;
if (frame != 0) return;
+16 -1
View File
@@ -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
+19 -9
View File
@@ -11,8 +11,10 @@ public static class EndGameManagerPatch
public static void Postfix(EndGameManager __instance)
{
Logger.Info(" -------- GAME ENDED --------", "EndGame");
Utils.ClearLeftoverData();
OptionManager.RestoreOptions();
EndGameNavigation navigation = __instance.Navigation;
if (!AmongUsClient.Instance.AmHost || __instance == null || navigation == null || !Options.AutoRejoinLobby.GetBool()) return;
navigation.NextGame();
@@ -25,10 +27,11 @@ class NormalGameEndChecker
public static bool ImpCheckComplete;
public static string LastWinReason = "";
public static List<PlayerControl> imps = new List<PlayerControl>();
public static string firstDeath;
public static string firstDeathString => firstDeath != null ? $"\n\nFirst death: {firstDeath}" : "";
public static bool Prefix()
{
if (Options.NoGameEnd.GetBool() || Options.Gamemode.GetValue() == 2 || Utils.HandlingGameEnd) return false;
var allPlayers = PlayerControl.AllPlayerControls.ToArray();
@@ -53,7 +56,14 @@ class NormalGameEndChecker
if (Winner == "SnSTimer")
{
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)\n\n Impostors: " + impostorList;
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)\n\n Impostors: " + impostorList + firstDeathString;
canUpdateWinnerText = false;
return;
}
if (Winner == "PnSTimer")
{
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)\n\n Impostors: " + impostorList + firstDeathString;
canUpdateWinnerText = false;
return;
}
@@ -65,24 +75,24 @@ 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;
LastWinReason = "Crewmates Win!\n\nImpostors: " + impostorList + firstDeathString;
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;
LastWinReason = "Impostors Win!\n\nImpostors: " + impostorList + firstDeathString;
canUpdateWinnerText = false;
}
else if (GameData.Instance != null && GameData.Instance.TotalTasks > 0 && GameData.Instance.CompletedTasks >= GameData.Instance.TotalTasks || Winner == "CrewmateTasks")
{
LastWinReason = $"Crewmates Win! ({Options.TaskPercentNeededToWin.GetInt()}% tasks completed)\n\nImpostors: " + impostorList;
LastWinReason = $"Crewmates Win! ({Options.TaskPercentNeededToWin.GetInt()}% tasks completed)\n\nImpostors: " + impostorList + firstDeathString;
canUpdateWinnerText = false;
}
else if (Options.Gamemode.GetValue() < 1 || Winner == "ImpostorSabotage")
{
LastWinReason = "Impostors Win! (Sabotage)\n\n Impostors: " + impostorList;
LastWinReason = "Impostors Win! (Sabotage)\n\n Impostors: " + impostorList + firstDeathString;
}
}
}
+12
View File
@@ -1,3 +1,4 @@
using AmongUs.GameOptions;
using System.Reflection;
using Il2CppInterop.Runtime.InteropTypes;
@@ -19,6 +20,17 @@ class ExileControllerWrapUpPatch
public static void AfterExile(NetworkedPlayerInfo ejectedPlayer)
{
if (!AmongUsClient.Instance.AmHost) return;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
if (Main.GM.Value && !Utils.IsDead)
{
Logger.Info($" Game Master Successful", "StartGame");
PlayerControl.LocalPlayer.Exiled();
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
}
}
if (ejectedPlayer == null) return;
PlayerControl pc = null;
+3
View File
@@ -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;
+10
View File
@@ -20,12 +20,22 @@ public static class GameStartManagerUpdatePatch
__instance.MinPlayers = 1;
if (!Utils.CheckValidData())
{
__instance.StartButton.gameObject.SetActive(false);
}
else if (__instance.startState != GameStartManager.StartingStates.Countdown)
{
__instance.StartButton.gameObject.SetActive(true);
}
if (Main.AutoStart.Value && OnGameJoinedPatch.AutoStartCheck && GameStartManager.InstanceExists && __instance.startState != GameStartManager.StartingStates.Countdown && GameData.Instance?.PlayerCount >= Options.PlayerAutoStart.GetInt())
{
__instance.startState = GameStartManager.StartingStates.Countdown;
__instance.countDownTimer = Options.AutoStartTimer.GetFloat();
__instance.StartButton.gameObject.SetActive(false);
Autostarting = true;
return;
}
if (__instance.startState == GameStartManager.StartingStates.Countdown)
+100 -4
View File
@@ -9,17 +9,40 @@ 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;
OptionManager.CacheOptions();
foreach (var p in PlayerControl.AllPlayerControls)
{
p.protectedByGuardianId = -1;
if (NormalGameEndChecker.firstDeath != null && NormalGameEndChecker.firstDeath == p.Data.PlayerName && Options.ShieldFirstDeath.GetBool() && Options.Gamemode.GetValue() != 1)
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
var oldGA = GuardianAngelOptions.ImpostorsCanSeeProtect;
var oldGAProt = GuardianAngelOptions.ProtectionDurationSeconds;
GuardianAngelOptions.ProtectionDurationSeconds = Options.ShieldFirstDeathDuration.GetFloat();
GuardianAngelOptions.ImpostorsCanSeeProtect = true;
_ = new LateTask(() =>
{ GuardianAngelOptions.ImpostorsCanSeeProtect = oldGA;
GuardianAngelOptions.ProtectionDurationSeconds = oldGAProt + 6;
OptionManager.SyncGameOptions();
}, Options.ShieldFirstDeathDuration.GetFloat(), "RevertGAProtTime");
}
OptionManager.SyncGameOptions();
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
p.Data.MarkDirty();
Logger.Info($" {p.Data.PlayerName} has been granted a shield for {Options.ShieldFirstDeathDuration.GetInt()}s", "RoleInfo");
}
p.cosmetics.nameText.text = p.Data.PlayerName;
MurderPlayerPatch.killCount[p.PlayerId] = 0;
@@ -36,8 +59,81 @@ internal static class CoShowIntroPatch
_ = new LateTask(() =>
{
Utils.CanCallMeetings = true;
}, 33f, "MeetingEnabled");
}, 34f, "MeetingEnabled");
}
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
}
OptionManager.SyncGameOptions();
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
p.Data.MarkDirty();
}
if (Options.SNSChatInGameExtend.GetBool())
{
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
}
if (Options.SNSChatInGameExtend2.GetBool())
{
_ = new LateTask(() =>
{
Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
}, 6.6f, "SNSChatInGameExtend2");
}
}
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f))
{
Main.NormalOptions.KillCooldown = 5f;
OptionManager.SyncGameOptions();
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled");
}
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
{
if (Options.PNSChatInGame.GetBool())
{
Main.NormalOptions.KillCooldown = 5f;
OptionManager.SyncGameOptions();
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
OptionManager.SyncGameOptions();
}, 18f, "NoKcdEnabled");
}
else
{
Main.NormalOptions.KillCooldown = 8f;
OptionManager.SyncGameOptions();
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled");
}
}
if (Options.Gamemode.GetValue() == 3 && Options.PNSChatInGameExtend.GetBool() && !Utils.isHideNSeek)
{
Utils.ModeratorChatCommand($"Poof and Seek:\n\nImpostors can only move while vanished\n Meetings & Reports = Off\nVisibly moving {Options.BadMoveTimeToSuicide.GetInt()}s as Phantom = Suicide", $"Crewmates win by doing tasks or surviving {Options.PNSCrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing everyone", true);
}
NormalGameEndChecker.firstDeath = "";
}
}
+88 -5
View File
@@ -14,7 +14,7 @@ internal static class OnGameJoinedPatch
public static bool AutoStartCheck;
public static void Postfix()
{
Logger.Info(" -------- JOINED GAME --------", "OnGameJoined");
Logger.Info(" -------- GAME JOINED --------", "OnGameJoined");
if (!AmongUsClient.Instance.AmHost) return;
@@ -45,6 +45,34 @@ internal static class OnGameJoinedPatch
WaitingForChat = false;
}, 5.2f, "AutoSendGameInfo2");
}
if (Options.AutomaticMapPoll.GetBool())
{
new LateTask(() =>
{
Utils.MapVote(false, true);
}, Options.TimeBeforeMapPoll.GetInt(), "AutoMapPoll");
}
if (Options.AutomaticAllMapPoll.GetBool())
{
new LateTask(() =>
{
Utils.MapVote(true, true);
}, Options.TimeBeforeAllMapPoll.GetInt(), "AutoMapPoll");
}
if (Options.AutomaticModePoll.GetBool())
{
new LateTask(() =>
{
Utils.ModeVote(true);
}, Options.TimeBeforeModePoll.GetInt(), "AutoModePoll");
}
if (Options.Public.GetBool() && DisconnectManager.Rehosting)
{
AmongUsClient.Instance.ChangeGamePublic(true);
DisconnectManager.Rehosting = false;
}
}
}
@@ -72,7 +100,6 @@ class OnPlayerJoinedPatch
return false;
}
static void Postfix([HarmonyArgument(0)] ClientData Client)
{
Logger.Info($" {Client.PlayerName} / {Client.FriendCode} / {Client.PlatformData.Platform}", "Joined The Game");
@@ -93,7 +120,6 @@ class OnPlayerJoinedPatch
}
else
{
if (!BanManager.TempBanWhiteList.Contains(Client.GetHashedPuid())) BanManager.TempBanWhiteList.Add(Client.GetHashedPuid());
AmongUsClient.Instance.KickPlayer(Client.Id, true);
Logger.Info(Translator.Get("invalidFriendCodeBan", Client.PlayerName), "BanInvalidFriendCode");
Logger.SendInGame(Translator.Get("invalidFriendCodeBan", Client.PlayerName));
@@ -103,6 +129,8 @@ class OnPlayerJoinedPatch
if (Options.EnableJoinMessages.GetBool())
{
JoinNum++;
BanManager.LoadTemplates();
BanManager.Templates.TryGetValue("welcome", out string msg);
if (JoinNum >= Options.MessagePerPlayerNum.GetInt())
@@ -134,7 +162,7 @@ public static class SetLevelPatch
public static List<PlayerControl> 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;
@@ -152,7 +180,26 @@ public static class SetLevelPatch
Logger.SendInGame($" {__instance.Data.PlayerName} (level {level + 1}) was banned for being under level {Options.KickLowLevelPlayer.GetInt()}");
}
HandledLevelKicks.Add(__instance);
}
}
if (AmongUsClient.Instance.AmHost && level > Options.KickHighLevelPlayer.GetInt() - 1 && __instance.Data.ClientId != AmongUsClient.Instance.HostId && Options.EnableKickHighLevelPlayer.GetBool())
{
if (HandledLevelKicks.Contains(__instance)) return;
if (!Options.TempBanHighLevelPlayer.GetBool() && Utils.CheckAccessLevel(__instance.Data.FriendCode) < 1)
{
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, false);
Logger.Info($" {__instance.Data.PlayerName} (level {level + 1}) was kicked for being above level {Options.KickHighLevelPlayer.GetInt()}", "KickHighLevelPlayer");
Logger.SendInGame($" {__instance.Data.PlayerName} (level {level + 1}) was kicked for being above level {Options.KickHighLevelPlayer.GetInt()}");
}
else if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < 1)
{
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, true);
Logger.Info($" {__instance.Data.PlayerName} (level {level + 1}) was banned for being above level {Options.KickHighLevelPlayer.GetInt()} ", "BanHighLevelPlayer");
Logger.SendInGame($" {__instance.Data.PlayerName} (level {level + 1}) was banned for being above level {Options.KickHighLevelPlayer.GetInt()}");
}
HandledLevelKicks.Add(__instance);
}
}
}
@@ -163,6 +210,42 @@ public static class ShowLobbyTimer_GameStartManager_Start_Postfix
{
if (__instance == null || !GameData.Instance || !AmongUsClient.Instance || AmongUsClient.Instance.NetworkMode == NetworkModes.LocalGame || !AmongUsClient.Instance.AmHost) return;
// Toes who nose
//Main.NormalOptions.MaxPlayers = 100;
//OptionManager.SyncGameOptions();
HudManager.Instance.ShowLobbyTimer(600);
}
}
[HarmonyPatch(typeof(GameData), nameof(GameData.ShowNotification))]
public static class ShowNotificationPatch
{
static bool Prefix(string playerName, DisconnectReasons reason)
{
switch (reason)
{
case DisconnectReasons.ExitGame:
Logger.Info($" {playerName} left the game. ({reason})", "ShowNotificationPatch");
Logger.SendInGame($" {playerName} left the game. ({reason})");
return false;
case DisconnectReasons.Sanctions:
case DisconnectReasons.Hacking:
case DisconnectReasons.Banned:
Logger.Info($" {playerName} was banned from the game. ({reason})", "ShowNotificationPatch");
Logger.SendInGame($" {playerName} was banned from the game. ({reason})");
return false;
case DisconnectReasons.DuplicateConnectionDetected:
case DisconnectReasons.ClientTimeout:
case DisconnectReasons.Kicked:
Logger.Info($" {playerName} was kicked from the game. ({reason})", "ShowNotificationPatch");
Logger.SendInGame($" {playerName} was kicked from the game. ({reason})");
return false;
default:
Logger.Info($" {playerName} disconnected from the game. ({reason})", "ShowNotificationPatch");
return true;
}
}
}
+2 -2
View File
@@ -70,7 +70,7 @@ class MeetingHudStartPatch
PlayerControl player = null;
foreach (var pc in PlayerControl.AllPlayerControls)
{
if (pc.PlayerId == playerState.TargetPlayerId)
if (pc.PlayerId == playerState.PlayerId)
{
player = pc;
break;
@@ -89,7 +89,7 @@ class MeetingHudStartPatch
taskTextMeeting.text = taskText;
taskTextMeeting.gameObject.name = "TaskTextMeeting";
taskTextMeeting.enableWordWrapping = false;
taskTextMeeting.enabled = player.AmOwner || player.PlayerId == playerState.TargetPlayerId;
taskTextMeeting.enabled = player.AmOwner || player.PlayerId == playerState.PlayerId;
}
}
+5
View File
@@ -126,6 +126,11 @@ public static class NumberOption_Initialize
__instance.Increment = 0.05f;
break;
case StringNames.JudgeTaskRequirement:
__instance.Increment = 1f;
__instance.ValidRange = new FloatRange(0f, 100f);
break;
default:
__instance.Increment = 1f;
break;
+138 -23
View File
@@ -1,4 +1,5 @@
using AmongUs.GameOptions;
using BepInEx.Unity.IL2CPP.Utils.Collections;
using System;
using InnerNet;
using UnityEngine;
@@ -32,7 +33,7 @@ internal class CoStartGamePatch
class PlayerControlSetRolePatch
{
public static bool FirstAssign;
private static readonly HashSet<byte> ProcessedPlayers = new();
public static readonly HashSet<byte> ProcessedPlayers = new();
public static HashSet<byte> Seekers = new();
public static HashSet<byte> manualSeekers = new();
private static readonly System.Random rand = new System.Random();
@@ -43,13 +44,7 @@ class PlayerControlSetRolePatch
if (!ProcessedPlayers.Add(__instance.PlayerId)) return true;
canOverrideRole = false;
if (Main.GM.Value && __instance.PlayerId == PlayerControl.LocalPlayer.PlayerId)
{
roleType = RoleTypes.Crewmate;
OnGameStartPatch.ScheduleExile = true;
}
// canOverrideRole = false;
if (Utils.isHideNSeek && Seekers.Count() == 0 && Options.NumSeekers.GetInt() > 0)
{
@@ -89,7 +84,7 @@ class PlayerControlSetRolePatch
foreach (var p in candidates)
{
if (Seekers.Count >= seekersCount) break;
Seekers.Add(p.PlayerId);
}
}
@@ -106,18 +101,11 @@ class PlayerControlSetRolePatch
else roleType = RoleTypes.Crewmate;
}
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
{
if (roleType == RoleTypes.Impostor || roleType == RoleTypes.Phantom || roleType == RoleTypes.Viper) roleType = RoleTypes.Shapeshifter;
}
if (ProcessedPlayers.Count >= PlayerControl.AllPlayerControls.Count)
{
Seekers.Clear();
ProcessedPlayers.Clear();
FirstAssign = false;
Logger.Info("PCSRP successful", "RoleManaging");
Logger.Info(" PCSRP successful", "RoleManaging");
}
return true;
@@ -127,25 +115,152 @@ class PlayerControlSetRolePatch
[HarmonyPatch(typeof(HudManager), nameof(HudManager.OnGameStart))]
internal static class OnGameStartPatch
{
public static bool ScheduleExile;
public static bool PastStartScreen;
public static void Postfix()
{
if (AmongUsClient.Instance.AmHost && Options.Gamemode.GetValue() == 1 && Options.SNSChatInGame.GetBool())
if (AmongUsClient.Instance.AmHost && Options.Gamemode.GetValue() == 1 && Options.SNSChatInGame.GetBool() && !Utils.isHideNSeek)
{
PlayerControl.LocalPlayer.CmdReportDeadBody(null);
if (MeetingHud.Instance != null) MeetingHud.Instance.RpcClose();
}
if (ScheduleExile)
if (AmongUsClient.Instance.AmHost && Options.Gamemode.GetValue() == 3 && Options.PNSChatInGame.GetBool() && !Utils.isHideNSeek)
{
Logger.Info($" Game Master Successful", "StartGame");
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
ScheduleExile = false;
PlayerControl.LocalPlayer.CmdReportDeadBody(null);
if (MeetingHud.Instance != null) MeetingHud.Instance.RpcClose();
}
foreach (var p in PlayerControl.AllPlayerControls)
{
Utils.StoredRoleText[p.PlayerId] = Utils.GetRoleText(p);
}
PastStartScreen = true;
if (AmongUsClient.Instance.AmHost && Main.GM.Value)
{
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3)) return;
Logger.Info($" Game Master Successful", "StartGame");
PlayerControl.LocalPlayer.Exiled();
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
}
}
// All Patches below are for the speeded up Chat In Game.
// We force the complete intro to skip using 2 patches.
// Some PlayerData related things return null when you do this, so we have to set those all as well.
[HarmonyPatch(typeof(ShhhBehaviour), nameof(ShhhBehaviour.PlayAnimation))]
public static class ShhhBehaviourPlayAnimationPatch
{
static bool Prefix()
{
if (!AmongUsClient.Instance.AmHost) return true;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
HudManager.Instance.shhhEmblem.gameObject.SetActive(false);
return false;
}
else return true;
}
}
[HarmonyPatch(typeof(IntroCutscene), nameof(IntroCutscene.CoBegin))]
public static class IntroCutsceneCoBeginPatch
{
public static void Postfix(IntroCutscene __instance, ref Il2CppSystem.Collections.IEnumerator __result)
{
if (!AmongUsClient.Instance.AmHost) return;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
__result = SkipIntro(__instance, __result).WrapToIl2Cpp();
}
}
private static System.Collections.IEnumerator SkipIntro(IntroCutscene i, Il2CppSystem.Collections.IEnumerator k)
{
int steps = 0;
while (k.MoveNext() && steps++ < 1024) {}
if (steps >= 1024)
{
if (i != null && i.gameObject != null) i.gameObject.SetActive(false);
}
yield break;
}
}
private static NamePlateViewData meetingNameplate;
[HarmonyPatch(typeof(CosmeticsCache), nameof(CosmeticsCache.GetNameplate))]
public static class CosmeticsCacheGetNameplatePatch
{
public static bool Prefix(ref NamePlateViewData __result)
{
if (!AmongUsClient.Instance.AmHost) return true;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
if (MeetingHud.Instance == null) return true;
if (meetingNameplate == null)
{
meetingNameplate = ScriptableObject.CreateInstance<NamePlateViewData>();
meetingNameplate.Image = null;
}
__result = meetingNameplate;
return false;
}
else return true;
}
}
[HarmonyPatch(typeof(CosmeticsCache), nameof(CosmeticsCache.Destroy))]
public static class CosmeticsCacheDestroyPatch
{
public static void Postfix()
{
if (!AmongUsClient.Instance.AmHost) return;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
if (meetingNameplate != null) Object.Destroy(meetingNameplate);
meetingNameplate = null;
}
}
}
[HarmonyPatch(typeof(ShapeshifterPanel), nameof(ShapeshifterPanel.SetPlayer))]
public static class ShapeshifterPanelSetPlayerPatch
{
public static bool Prefix(ShapeshifterPanel __instance, int index, NetworkedPlayerInfo playerInfo, Il2CppSystem.Action onShift)
{
if (__instance == null || playerInfo == null || !AmongUsClient.Instance.AmHost) return true;
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
{
__instance.shapeshift = onShift;
__instance.PlayerIcon.SetFlipX(false);
__instance.PlayerIcon.ToggleName(false);
SpriteRenderer[] componentsInChildren = __instance.GetComponentsInChildren<SpriteRenderer>();
foreach (var spriteRenderer in componentsInChildren)
{
spriteRenderer.material.SetInt(PlayerMaterial.MaskLayer, index + 2);
}
__instance.PlayerIcon.SetMaskLayer(index + 2);
__instance.PlayerIcon.UpdateFromEitherPlayerDataOrCache(playerInfo, PlayerOutfitType.Default, PlayerMaterial.MaskType.ComplexUI, false, null);
__instance.NameText.text = playerInfo.PlayerName;
__instance.LevelNumberText.text = ProgressionManager.FormatVisualLevel(playerInfo.PlayerLevel);
return false;
}
else return true;
}
}
}
+117 -50
View File
@@ -25,7 +25,7 @@ class ReportDeadBodyPatch
// target == null means meeting
if (Options.Gamemode.GetValue() == 1 || Options.Gamemode.GetValue() == 2)
if (Options.Gamemode.GetValue() == 1 || Options.Gamemode.GetValue() == 2 || Options.Gamemode.GetValue() == 3)
{
if (target != null)
{
@@ -49,9 +49,9 @@ internal static class MurderPlayerPatch
public static readonly Dictionary<byte, int> misfireCount = new();
public static readonly Dictionary<byte, int> killCount = new();
public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] PlayerControl target, [HarmonyArgument(1)] MurderResultFlags resultFlags, ref bool __state)
public static void Prefix(PlayerControl __instance, [HarmonyArgument(0)] PlayerControl target, [HarmonyArgument(1)] MurderResultFlags resultFlags, ref bool __state)
{
if (!AmongUsClient.Instance.AmHost || !resultFlags.HasFlag(MurderResultFlags.Succeeded)) return;
if (!AmongUsClient.Instance.AmHost) return;
byte playerId = __instance.Data.PlayerId;
@@ -60,74 +60,67 @@ internal static class MurderPlayerPatch
killCount[playerId] = 0;
}
if (!__instance.isNew)
if (resultFlags.HasFlag(MurderResultFlags.Succeeded))
{
killCount[playerId]++;
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
if ((target == PlayerControl.LocalPlayer || PlayerControl.LocalPlayer.Data.IsDead) && !Main.DisableInfoWhenDead.Value)
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
{
foreach (var p in PlayerControl.AllPlayerControls)
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId) return;
Logger.Info($" {__instance.Data.PlayerName} directly killed {target.Data.PlayerName} in SnS, forcing suicide. (Are they hacking?)", "MurderPlayer");
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
}
else
{
killCount[playerId]++;
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
{
if (p.Data.Role.IsImpostor)
{
p.cosmetics.nameText.text = $"{p.Data.PlayerName}<color=red><size=90%>({killCount[p.Data.PlayerId]}†)</color> - {Utils.StoredRoleText[p.PlayerId]}";
}
else
{
p.cosmetics.nameText.text = $"{p.Data.PlayerName}<color=green><size=90%>({PlayerControlCompleteTaskPatch.playerTasksCompleted[p.PlayerId]}/{PlayerControlCompleteTaskPatch.tasksPerPlayer[p.PlayerId]})</color> - {Utils.StoredRoleText[p.PlayerId]}";
}
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
Utils.HasMurdered = true;
}
}
}
//2 = Shift and Seek
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
if ((target == PlayerControl.LocalPlayer || PlayerControl.LocalPlayer.Data.IsDead) && !Main.DisableInfoWhenDead.Value && resultFlags.HasFlag(MurderResultFlags.Succeeded))
{
if (!resultFlags.HasFlag(MurderResultFlags.Succeeded))
return;
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data.Role.IsImpostor)
{
p.cosmetics.nameText.text = $"{p.Data.PlayerName}<color=red><size=90%>({killCount[p.Data.PlayerId]}†)</color> - {Utils.StoredRoleText[p.PlayerId]}";
}
else
{
p.cosmetics.nameText.text = $"{p.Data.PlayerName}<color=green><size=90%>({PlayerControlCompleteTaskPatch.playerTasksCompleted[p.PlayerId]}/{PlayerControlCompleteTaskPatch.tasksPerPlayer[p.PlayerId]})</color> - {Utils.StoredRoleText[p.PlayerId]}";
}
}
}
//1 = Shift and Seek
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !resultFlags.HasFlag(MurderResultFlags.Succeeded))
{
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId)
{
killCount[playerId]++;
Logger.Info($" {__instance.Data.PlayerName} correctly killed {target.Data.PlayerName} ", "SNSKillManager");
target.RpcSetRole(RoleTypes.CrewmateGhost);
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
{
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
Utils.HasMurdered = true;
}
}
else
{
if (!misfireCount.ContainsKey(playerId))
misfireCount[playerId] = 0;
misfireCount[playerId]++;
if (misfireCount[__instance.Data.PlayerId] < Options.MisfiresToSuicide.GetFloat())
{
__instance.RpcSetRole(RoleTypes.Crewmate);
__instance.isNew = true;
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName} incorrectly and can't kill for {Options.CantKillTime.GetInt()}s", "SNSKillManager");
Logger.SendInGame($" {__instance.Data.PlayerName} killed {target.Data.PlayerName} incorrectly and can't kill for {Options.CantKillTime.GetInt()}s");
new LateTask(() =>
{
__instance.isNew = false;
if (!__instance.Data.IsDead && __instance != null) {__instance.RpcSetRole(RoleTypes.Shapeshifter, false);}
}, Options.CantKillTime.GetInt(), "SNSResetRole");
}
if (misfireCount[__instance.Data.PlayerId] >= Options.MisfiresToSuicide.GetFloat())
{
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
Logger.Info($" {__instance.Data.PlayerName} misfired {misfireCount[playerId]} time(s) and suicided", "SNSKillManager");
Logger.SendInGame($" {__instance.Data.PlayerName} misfired {misfireCount[playerId]} time(s) and suicided");
}
Logger.Info($" {__instance.Data.PlayerName} misfired trying to kill {target.Data.PlayerName}. Blocking kill", "SNSKillManager");
}
}
}
}
/*
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CheckShapeshift))]
internal static class CheckShapeshiftPatch
{
public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] PlayerControl target)
{
if (!AmongUsClient.Instance.AmHost) return true;
@@ -142,6 +135,7 @@ internal static class CheckShapeshiftPatch
else return true;
}
}
*/
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CompleteTask))]
class PlayerControlCompleteTaskPatch
@@ -156,7 +150,7 @@ class PlayerControlCompleteTaskPatch
public static void Postfix(PlayerControl __instance, uint idx)
{
if (!AmongUsClient.Instance.AmHost) return;
foreach (var p in PlayerControl.AllPlayerControls)
{
@@ -167,8 +161,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 +199,7 @@ class PlayerControlCompleteTaskPatch
public static void CalculateTaskWin()
{
if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !CoShowIntroPatch.IntroInitiated) return;
if (!OnGameStartPatch.PastStartScreen || 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 +222,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;
}
}
}
}
+19 -2
View File
@@ -43,7 +43,24 @@ public static class SabotageSystemTypeRepairDamagePatch
Sabo == SystemTypes.Comms && Options.SNSDisableComms.GetBool() ||
Sabo == SystemTypes.HeliSabotage && Options.SNSDisableHeli.GetBool() ||
Sabo == SystemTypes.MushroomMixupSabotage && Options.SNSDisableMushroomMixup.GetBool() ||
Sabo == SystemTypes.Laboratory && Options.DisableReactor.GetBool() && msgReader != null ||
Sabo == SystemTypes.Laboratory && Options.SNSDisableReactor.GetBool() && msgReader != null ||
player.Data.IsDead && !Options.DeadImpostorsCanSabotage.GetBool())
{
Logger.Info($" Sabotage {Sabo} by: {player.Data.PlayerName} was blocked", "SnSSabotageCheck");
return false;
}
return true;
}
if (Options.Gamemode.GetValue() == 3)
{
if (Sabo == SystemTypes.LifeSupp && Options.PNSDisableOxygen.GetBool() ||
Sabo == SystemTypes.Reactor && Options.PNSDisableReactor.GetBool() ||
Sabo == SystemTypes.Electrical && Options.PNSDisableLights.GetBool() ||
Sabo == SystemTypes.Comms && Options.PNSDisableComms.GetBool() ||
Sabo == SystemTypes.HeliSabotage && Options.PNSDisableHeli.GetBool() ||
Sabo == SystemTypes.MushroomMixupSabotage && Options.PNSDisableMushroomMixup.GetBool() ||
Sabo == SystemTypes.Laboratory && Options.PNSDisableReactor.GetBool() && msgReader != null ||
player.Data.IsDead && !Options.DeadImpostorsCanSabotage.GetBool())
{
Logger.Info($" Sabotage {Sabo} by: {player.Data.PlayerName} was blocked", "SnSSabotageCheck");
@@ -64,7 +81,7 @@ class ShipStatusCloseDoorsPatch
Logger.Info($" Trying to close the door in: {room}", "DoorCheck");
if ((Options.DisableCloseDoor.GetBool() && Options.Gamemode.GetValue() == 0) || (Options.Gamemode.GetValue() == 1 && Options.SNSDisableCloseDoor.GetBool()))
if ((Options.DisableCloseDoor.GetBool() && Options.Gamemode.GetValue() == 0) || (Options.Gamemode.GetValue() == 1 && Options.SNSDisableCloseDoor.GetBool()) || (Options.Gamemode.GetValue() == 3 && Options.PNSDisableCloseDoor.GetBool()))
{
Logger.Info($" Door sabotage in: {room} was blocked", "DoorCheck");
return false;
+26 -9
View File
@@ -1,20 +1,37 @@
namespace AmongUsRevamped;
using AmongUs.GameOptions;
//Old Patch for Mayor
namespace AmongUsRevamped;
/*
[HarmonyPatch(typeof(Vent), nameof(Vent.EnterVent))]
class EnterVentPatch
{
public static void Postfix(Vent __instance, [HarmonyArgument(0)] PlayerControl pc)
{
if (!AmongUsClient.Instance.AmHost) return;
if (!AmongUsClient.Instance.AmHost || pc == null || __instance == null || pc.Data == null) 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);
}
if ((Options.Gamemode.GetValue() == 1 && !Options.SNSImpostorsCanVent.GetBool()) || (Options.Gamemode.GetValue() == 3 && !Options.PNSImpostorsCanVent.GetBool()))
{
if (pc.Data.RoleType == RoleTypes.Impostor || pc.Data.RoleType == RoleTypes.Shapeshifter || pc.Data.RoleType == RoleTypes.Phantom || pc.Data.RoleType == RoleTypes.Viper)
{
pc.MyPhysics.RpcBootFromVent(__instance.Id);
Logger.SendInGame($"{pc.Data.PlayerName} tried to vent as Impostor, but got blocked");
Logger.Info($" {pc.Data.PlayerName} tried to vent as Impostor, but got blocked", "VentManager");
}
}
}
}
*/
}
+2 -2
View File
@@ -19,8 +19,8 @@ internal static class AddVotePatch
{
Logger.Info($" Kicked {target.Data.PlayerName}, {target.Data.FriendCode}", "KickPatch");
}
return true;
return false;
}
}
+48 -28
View File
@@ -1,16 +1,23 @@
# Welcome to Among Us Revamped!
<h1 align="center">Welcome to Among Us Revamped!</h1>
<br>
</p>
<p align="center">
<a href="https://discord.gg/83Zhzhyhya" target="_blank">
<img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/>
</a>
<a href="https://ko-fi.com/apemv">
<img src="https://img.shields.io/badge/Donate%20on-Ko--fi-ff5f5f?style=for-the-badge&logo=ko-fi&logoColor=white">
</a>
</p>
<center>
<a href="https://discord.gg/83Zhzhyhya" target="_blank"><img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/></a>
<a href="https://github.com/apemv/AmongUsRevamped/releases/latest" target="_blank"><img src="https://img.shields.io/badge/Latest Version%20-%231DA1F2.svg?&style=for-the-badge&logo=github&logoColor=white&color=181717"/></a>
</center>
<p align="center">
<a href="https://github.com/ApeMV/AmongUsRevamped/releases">
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/total?style=for-the-badge&color=red"/>
</a>
<a href="https://github.com/ApeMV/AmongUsRevamped/releases/latest">
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/latest/total?style=for-the-badge"/>
</a>
</p>
# 💡 How To Install:
@@ -29,31 +36,32 @@
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
‎
# 🎮 Features (v1.9.0):
# 🎮 Features (v2.0.3):
## <b>♠️ Client Side settings:</b>
- Game Master (Spectator)
- Show FPS
- Dark Theme
- Toggle Game Master (Spectator)
- Toggle Show FPS
- Toggle Dark Theme
- Toggle Lobby Music
- Show/Hide Info When Dead
- Toggle Info When Dead
- Toggle Command Helper
## <b>⚙️ Technical settings:</b>
- Kick/Ban players under a certain level
- Kick/Ban invalid FriendCodes
- Advanced AFK Detection system
- Kick/Ban players under/above a certain level
- Kick/Ban invalid (Empty) Friendcodes
- Kick/Ban players who say "start"
- Denyword system
- Banlist system
- Denyname system
- Multi layer moderator system
- To add Admins, Moderators and VIP's, type the user's Friendcode in the designated files located in AUR-DATA
- Denyword and Denyname system
- Advanced Moderator system
- To add Admins/Moderators/VIP's, type the user's Friendcode in the designated files located in AUR-DATA
- Enable No Game End
- Custom starting countdown
## <b>♻️ Automation settings:</b>
- 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
- Automatically Send Map Votes
- Enable (configurable) Welcome Messages from Templates.txt
## <b>🔧 Gameplay Settings:</b>
- Dead impostors can sabotage
- Disable critical sabotages (invividual)
@@ -65,28 +73,35 @@
- % Tasks completed for Crewmates to win
- Enable/Disable any task
- All players have same tasks
- Shield player who died first
- Hide and Seek: Custom Seeker count
## <b>🏆 Custom Gamemodes:</b>
- 0 Kill Cooldown -> Set Kill Cooldown to 0.01
- Shift and Seek
- Poof and Seek
- Speedrun
## <b>👾 Custom Anticheat:</b>
- Detect invalid sabotages
- Detect malformed RPC's
- Detect invalid venting
- Detect Invalid animations
- Detect Invalid task completions
- Detect immortality cheats
- Block attempted votekicks
- These are all enabled by default
## <b>❓ Other Improvements:</b>
- 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
- Creatable and customizable Templates
- Eht Dleks (Reverse Skeld) Map
- 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
- Always visible lobby timer
- Access experimental animation test scene
- Manually set multiple Seekers in HnS
- <b>🎉 And this all works in public lobbies!</b>
### Hotkeys
@@ -106,7 +121,6 @@
| /help | Show command help |
| /l<br>/lastgame | Send last game info |
| /r | Send current gamemode/roles description |
| /r {ability} | Send specific Ability info |
| /0kc<br>/sns</br>/sp | Send respective gamemode description |
| /ban {name} | Ban a player by name |
| /kick {name} | Kick a player by name |
@@ -121,6 +135,12 @@
| /s<br>/start | Start game countdown |
| /vip<br>/moderator<br>/admin | Add a user to respective list by name |
| /t {template} | Send a Template from Templates.txt |
| /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 |
| /gmvote | Starts a vote for the gamemode |
‎
**Credit to these mods and their developers for their code:**
+64 -5
View File
@@ -19,38 +19,56 @@
"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",
"enableKickHighLevelPlayer": "Kick High Level Players",
"kickHighLevelPlayer": "Kick Players Above Level",
"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",
"modeVoteDuration": "Gamemode 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 & Create Votes",
"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 +83,9 @@
"noKcdSettingsOverride": "Auto Update Settings",
"tabGroupSNS": "Shift and Seek",
"snsChatInGame": "Chat during gameplay (experimental)",
"snsChatInGameExtend": "Send gamemode info after game start",
"snsChatInGameExtendTwo": "Send extended info after game start",
"snsChatInGameFast": "Faster Meeting (experimental+)",
"snsSettingsOverride": "Auto Update Settings",
"cantKillTime": "After Misfiring, Can't kill for",
"misfiresToSuicide": "Suicide After Amount Of Misfires",
@@ -94,6 +115,8 @@
"disableCloseDoor": "Disable Door Sabotages",
"tabGroupGameplayGeneral": "General",
"shieldFirstDeath": "Shield Player Who Died First",
"shieldFirstDeathDuration": "Shield Duration",
"disableAnnoyingMeetingCalls": "Disable Meeting Calls First 30s",
"disableReport": "Disable Body Reports",
"changeDecontaminationTime": "Override Decontamination Time (Standard Only)",
@@ -216,7 +239,7 @@
"disableSubmitScan": "Disable Submit Scan",
"disableUploadData": "Disable Upload Data",
"allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r, /gm</b>\nSend current mode description.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.",
"allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r, /gm</b>\nSend current mode description.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sns2</b>\nSend extended Shift and Seek mode description\n<b>/pns, /poofandseek</b>\nSend Poof and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.\n\n<b>/seeker {name}</b>\nForce someone as Seeker in HnS.\n<b>/seekers</b>\nShow forced seeker list.\n<b>/clearseeker</b>\nClear forced seeker list.\n\n<b>/mapvote</b>\nStarts a map vote containing default maps.\n<b>/allmapvote</b>\nStarts a map vote that includes Eht Dleks.\n<b>/gmvote</b>\nStarts a gamemode vote.",
"translationReloaded": "Your file has successfully been reset.\nTo apply all changes, restart your game.",
@@ -244,8 +267,10 @@
"helpDesc": "Show all commands and what they do.",
"snsDesc": "Send Shift and Seek gamemode Description.",
"snsTwoDesc": "Send Shift and Seek extended Description.",
"0kcDesc": "Send 0 Kill Cooldown gamemode Description.",
"SrDesc": "Send Speedrun gamemode Description.",
"pnsDesc": "Send Poof and Seek gamemode Description.",
"egDesc": "End the current game.",
"emDesc": "End the current meeting.",
"aurDesc": "Send Among Us Revamped social links.",
@@ -270,17 +295,24 @@
"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.",
"modeVoteDesc": "Starts a vote between all gamemodes.",
"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": "<color=red><size=5><b>WARNING:</color></b></size>\n<size=3><b>You have 2 or more detected Plugins.</size></b>\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 +323,32 @@
"onlyYou": "Only You",
"seekers": "Seekers: ",
"clearedSeekers": "Successfully cleared the manual Seeker list."
"clearedSeekers": "Successfully cleared the manual Seeker list.",
"rehostSuccess": "Successfully rehosted a lobby",
"kick": "Kick",
"ban": "Ban",
"notifyMe": "Notify Me",
"tabGroupAfk": "AFK Detection",
"enableAfkDetection": "Enable AFK Detection",
"afkTimer": "Detection Threshold",
"afkPenalty": "AFK Penalty",
"onlyDetectSpawn": "Only Detect Players At Spawn",
"afkNotify": "{0} has been AFK for {1}s",
"afkKick": "{0} has been AFK for {1}s, kicking user",
"afkBan": "{0} has been AFK for {1}s, banning user",
"automaticMapPoll": "Automatic /mapvote After Rejoining",
"automaticAllMapPoll": "Automatic /allmapvote After Rejoining",
"timeBeforeMapPoll": "Time Before Vote Starts",
"automaticModePoll": "Automatic /gmvote After Rejoining",
"pnsDisableSabotage": "Disable PnS Critical Sabotages",
"pnsDisableCloseDoor": "Disable PnS Door Sabotages",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
"snsImpostorCanVent": "Impostors Can Vent"
}
+294 -235
View File
@@ -3,284 +3,343 @@
"gameMaster": "Spettatore",
"showFPS": "Mostra FPS",
"autoStart": "Auto Start",
"enableDarkTheme": "Abilità Tema Scuro",
"enableLobbyMusic": "Musica Lobby",
"disableInfoWhenDead": "Nascondi Info da Morto",
"disableCommandHelper": "Disabilita Command Helper",
"disableCompatibilityWarning": "Disattiva avviso di compatibilità",
"autoStart": "Avvio Automatico",
"enableDarkTheme": "Abilita Tema Scuro",
"enableLobbyMusic": "Musica della Lobby",
"disableInfoWhenDead": "Nascondi Informazioni Dopo la Morte",
"disableCommandHelper": "Disabilita Aiutante Comandi",
"disableCompatibilityWarning": "Disabilita Avviso di Compatibilità",
"gameMasterWarning":"Assisterai alle partite come spettatore finché la modalità Spettatore non viene disattivata.AVVISO:I messaggi delle abilità non verranno inviati e l'assegnazione dei ruoli potrebbe non essere accurata se questa impostazione è attiva.",
"cancelStartCountdown": "Conto alla rovescia di inizio annullato",
"cancelStartCountdown": "Conto alla rovescia annullato",
"invalidFriendCodeKick": "{0} è stato espulso per avere un codice amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato per avere un codice amico non valido",
"language": "Lingua (Richiede il riavvio)",
"gamemode": "Modalità di gioco",
"invalidFriendCodeKick": "{0} è stato kickato per un Codice Amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato per un Codice Amico non valido",
"language": "Lingua (Richiede Riavvio)",
"gamemode": "Modalità",
"tabGroupMain": "Moderazione",
"kickLowLevelPlayer": "Espelli giocatori sotto il livello",
"tempBanLowLevelPlayer": "Banna invece di espellere",
"dontKickLevelOnes": "Non espellere i giocatori di livello 1 per lobby glitched",
"kickInvalidFriendCodes": "Espelli codici amico non validi (vuoti)",
"tempBanInvalidFriendCodes": "Banna invece di espellere",
"deniedWordsToKick": "Inviate parole proibite per espellere il giocatore",
"moderatorCanUseCommand": "I moderatori possono usare i comandi",
"autoKickStart": "Espelli i giocatori che dicono Start",
"autoKickStartAsBan": "Banna invece di espellere",
"autoKickStartTimes": "Messaggi di Start necessari per l'espulsione",
"kickLowLevelPlayer": "Kicka Giocatori Sotto il Livello",
"tempBanLowLevelPlayer": "Banna invece di kickare",
"dontKickLevelOnes": "Non kickare Giocatori Liv.1 Nelle Lobby Glitchate",
"kickInvalidFriendCodes": "Kicka Codici Amico Non Validi (Vuoti)",
"tempBanInvalidFriendCodes": "Banna invece di kickare",
"deniedWordsToKick": "Parole Vietate Inviate Per Kickare il Giocatore",
"moderatorCanUseCommand": "I Moderatori Possono Usare i Comandi",
"autoKickStart": "Kicka Giocatori Che Dicono Start",
"autoKickStartAsBan": "Banna invece di kickare",
"autoKickStartStrength": "Modalità di rilevamento rigorosa",
"tabGroupAutomation": "Automazione",
"autoSendGameInfo": "Invia automaticamente le informazioni sul vincitore",
"autoSendGameInfo": "Invia automaticamente informazioni sui vincitori",
"autoRejoinLobby": "Rientra automaticamente nella lobby",
"autoStartTimer": "Conto alla rovescia per l'Auto Start",
"waitAutoStart": "Auto Start dopo",
"playerAutoStart": "Giocatori necessari per l'Auto Start",
"enableJoinMessages": "Abilita i messaggi di benvenuto",
"messagePerPlayerNum": "Messaggio in base al numero di accessi",
"tabGroupMisc": "Varie",
"startCountdown": "Conto alla rovescia di inizio predefinito",
"colorCommandLevel": "Chi può usare i comandi colore",
"allowFortegreen": "Consenti il colore Verde Forte",
"noGameEnd": "Nessuna fine del gioco",
"autoStartTimer": "Conto alla rovescia Avvio Automatico",
"waitAutoStart": "Avvio Automatico Dopo",
"playerAutoStart": "Giocatori Necessari Per Avvio Automatico",
"enableJoinMessages": "Abilita Messaggio di Benvenuto",
"messagePerPlayerNum": "Messaggio Ogni # Ingressi",
"tabGroupMisc": "Sperimentale",
"startCountdown": "Conto alla rovescia Predefinito",
"colorCommandLevel": "Chi Può Usare i Comandi Colore",
"allowFortegreen": "Consenti Colore Fortegreen",
"noGameEnd": "Nessuna Fine Partita",
"tabGroupAccess": "Livelli di accesso",
"slashColorCmd": "Chi può usare /color",
"slashRolesAndGamemodeCmd": "Chi può usare /r e i template",
"slashLastGameCmd": "Chi può usare /l e /aur",
"slashKickCmd": "Chi può usare /kick e /ckick",
"slashBanCmd": "Chi può usare /ban e /cban",
"slashEndMeetingCmd": "Chi può usare /endmeeting",
"slashStartAndEndGameCmd": "Chi può usare /startgame e /endgame",
"tabGroupAccess": "Livelli di Accesso",
"slashColorCmd": "Chi Può Usare /color",
"slashRolesAndGamemodeCmd": "Chi Può Usare /r & Templates",
"slashLastGameCmd": "Chi Può Usare /l & /aur",
"slashKickCmd": "Chi Può Usare /kick & /ckick",
"slashBanCmd": "Chi Può Usare /ban & /cban",
"slashStartAndEndGameCmd": "Chi Può Usare /startgame & /endgame",
"tabGroupCrewmate": "Ruoli degli astronauti",
"tabGroupNeutral": "Ruoli dei neutrali",
"tabGroupImpostor": "Ruoli degli impostori",
"tabGroupCrewmate": "Ruoli Astronauti",
"tabGroupNeutral": "Ruoli Neutrali",
"tabGroupImpostor": "Ruoli Impostori",
"tabGroupStandard": "Standard",
"tabGroupHNS": "Nascondino",
"numSeekers": "# Cercatori",
"tabGroup0Kcd": "Ricarica uccisione a 0",
"noKcdSettingsOverride": "Aggiorna automaticamente le impostazioni",
"tabGroupSNS": "Mutaforma e cerca",
"snsChatInGame": "Chat durante il gioco (sperimentale)",
"snsSettingsOverride": "Aggiorna automaticamente le impostazioni",
"cantKillTime": "Dopo un errore, non può uccidere per",
"misfiresToSuicide": "Suicidio dopo un numero di errori",
"crewAutoWinsGameAfter": "Gli astronauti vincono automaticamente dopo",
"snsDisableSabotage": "Disabilita i sabotaggi critici SnS",
"snsDisableReactor": "Disabilita il sabotaggio del reattore",
"snsDisableOxygen": "Disabilita il sabotaggio dell'ossigeno",
"snsDisableLights": "Disabilita il sabotaggio delle luci",
"snsDisableComms": "Disabilita il sabotaggio delle comunicazioni",
"snsDisableHeli": "Disabilita il sabotaggio della rotta di collisione",
"snsDisableMushroomMixup": "Disabilita il sabotaggio della miscela di funghi",
"snsDisableCloseDoor": "Disabilita i sabotaggi delle porte SnS",
"tabGroup0Kcd": "0 Cooldown Uccisione",
"noKcdSettingsOverride": "Aggiorna Automaticamente Impostazioni",
"tabGroupSNS": "Clone",
"snsChatInGame": "Chat in gioco (sperimentale)",
"snsSettingsOverride": "Aggiorna Automaticamente Impostazioni",
"cantKillTime": "Dopo un Mancato Bersaglio Non Puoi Uccidere Per",
"misfiresToSuicide": "Suicidio Dopo Numero di Mancati Bersagli",
"crewAutoWinsGameAfter": "Gli Astronauti Vincono Automaticamente Dopo",
"snsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Clone",
"snsDisableReactor": "Disabilita Sabotaggio Reattore",
"snsDisableOxygen": "Disabilita Sabotaggio O2",
"snsDisableLights": "Disabilita Sabotaggio Luci",
"snsDisableComms": "Disabilita Sabotaggio Comunicazioni",
"snsDisableHeli": "Disabilita Sabotaggio Collisione",
"snsDisableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi",
"snsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Clone",
"tabGroupSpeedrun": "Speedrun",
"speedrunSettingsOverride": "Aggiorna automaticamente le impostazioni",
"gameAutoEndsAfter": "Il gioco termina automaticamente dopo",
"engineerMode": "Tutti sono ingegneri",
"speedrunSettingsOverride": "Aggiorna Automaticamente Impostazioni",
"gameAutoEndsAfter": "La partita finisce automaticamente dopo",
"engineerMode": "Tutti Ingegneri",
"tabGroupSabotages": "Sabotaggi",
"deadImpostorsCanSabotage": "Gli impostori morti possono sabotare",
"disableSabotage": "Disabilita i sabotaggi critici",
"disableReactor": "Disabilita il sabotaggio del reattore",
"disableOxygen": "Disabilita il sabotaggio dell'ossigeno",
"disableLights": "Disabilita il sabotaggio delle luci",
"disableComms": "Disabilita il sabotaggio delle comunicazioni",
"disableHeli": "Disabilita il sabotaggio della rotta di collisione",
"disableMushroomMixup": "Disabilita il sabotaggio della miscela di funghi",
"disableCloseDoor": "Disabilita i sabotaggi delle porte",
"deadImpostorsCanSabotage": "Gli Impostori Morti Possono Sabotare",
"disableSabotage": "Disabilita Sabotaggi Critici",
"disableReactor": "Disabilita Sabotaggio Reattore",
"disableOxygen": "Disabilita Sabotaggio O2",
"disableLights": "Disabilita Sabotaggio Luci",
"disableComms": "Disabilita Sabotaggio Comunicazioni",
"disableHeli": "Disabilita Sabotaggio Collisione",
"disableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi",
"disableCloseDoor": "Disabilita Sabotaggio Porte",
"tabGroupGameplayGeneral": "Generale",
"disableAnnoyingMeetingCalls": "Disabilita le chiamate di riunione nei primi 30s",
"disableReport": "Disabilita le segnalazioni dei corpi",
"changeDecontaminationTime": "Ignora il tempo di decontaminazione (Solo standard)",
"decontaminationTimeOnMiraHQ": "Durata decontaminazione Mira HQ",
"decontaminationDoorOpenTimeOnMiraHQ": "Durata apertura porte decontaminazione Mira HQ",
"decontaminationTimeOnPolus": "Durata decontaminazione Polus",
"decontaminationDoorOpenTimeOnPolus": "Durata apertura porte decontaminazione Polus",
"disableSporeTrigger": "Disabilita le spore su The Fungle",
"disableAnnoyingMeetingCalls": "Nei primi 30 secondi non si possono chiamare riunioni",
"disableReport": "Disabilita Report dei Cadaveri",
"changeDecontaminationTime": "Cambia Tempo di Decontaminazione (Solo Modalità Standard)",
"decontaminationTimeOnMiraHQ": "Tempo di decontaminazione su Mira HQ",
"decontaminationDoorOpenTimeOnMiraHQ": "Tempo di apertura porte su Mira HQ",
"decontaminationTimeOnPolus": "Tempo di decontaminazione su Polus",
"decontaminationDoorOpenTimeOnPolus": "Tempo di apertura porte su Polus",
"disableSporeTrigger": "Disabilita spore su Fungle",
"disableDevices": "Disabilita i dispositivi",
"disableSkeldDevices": "Disabilita i dispositivi di The Skeld",
"disableSkeldAdmin": "Disabilita l'amministrazione di The Skeld",
"disableSkeldCamera": "Disabilita le telecamere di The Skeld",
"disableMiraHQDevices": "Disabilita i dispositivi di Mira HQ",
"disableMiraHQAdmin": "Disabilita l'amministrazione di Mira HQ",
"disableMiraHQDoorLog": "Disabilita il registro delle porte di Mira HQ",
"disablePolusDevices": "Disabilita i dispositivi di Polus",
"disablePolusAdmin": "Disabilita l'amministrazione di Polus",
"disablePolusCamera": "Disabilita le telecamere di Polus",
"disablePolusVital": "Disabilita i parametri vitali di Polus",
"disableAirshipDevices": "Disabilita i dispositivi di Airship",
"disableAirshipCockpitAdmin": "Disabilita l'amministrazione della cabina di pilotaggio di Airship",
"disableAirshipRecordsAdmin": "Disabilita l'amministrazione degli archivi di Airship",
"disableAirshipCamera": "Disabilita le telecamere di Airship",
"disableAirshipVital": "Disabilita i parametri vitali di Airship",
"disableFungleDevices": "Disabilita i dispositivi di The Fungle",
"disableFungleVital": "Disabilita i parametri vitali di The Fungle",
"disableDevices": "Disabilita Dispositivi",
"disableSkeldDevices": "Disabilita Dispositivi su Skeld",
"disableSkeldAdmin": "Disabilita Admin su Skeld",
"disableSkeldCamera": "Disabilita Telecamere su Skeld",
"disableMiraHQDevices": "Disabilita Dispositivi su Mira HQ",
"disableMiraHQAdmin": "Disabilita Admin su Mira HQ",
"disableMiraHQDoorLog": "Disabilita Registri Porte su Mira HQ",
"disablePolusDevices": "Disabilita Dispositivi su Polus",
"disablePolusAdmin": "Disabilita Admin su Polus",
"disablePolusCamera": "Disabilita Telecamere su Polus",
"disablePolusVital": "Disabilita Segni Vitali su Polus",
"disableAirshipDevices": "Disabilita Dispositivi su Airship",
"disableAirshipCockpitAdmin": "Disabilita Admin nella Cabina su Airship",
"disableAirshipRecordsAdmin": "Disabilita Admin nell'Archivio su Airship",
"disableAirshipCamera": "Disabilita Telecamere su Airship",
"disableAirshipVital": "Disabilita Segni Vitali su Airship",
"disableFungleDevices": "Disabilita Dispositivi su Fungle",
"disableFungleVital": "Disabilita Segni Vitali su Fungle",
"tabGroupTasks": "Incarichi",
"allPlayersSameTasks": "Tutti hanno gli stessi incarichi",
"overrideTaskSettings": "Disabilita gli incarichi",
"taskPercentNeededToWin": "% Incarichi completati per la vittoria degli astronauti",
"allPlayersSameTasks": "Stessi incarichi per tutti",
"overrideTaskSettings": "Disabilita incarichi",
"taskPercentNeededToWin": "% di Incarichi completati per la vittoria degli astronauti",
"disableMiraTasks": "Disabilita gli incarichi di Mira HQ",
"disableBuyBeverage": "Disabilita Acquista bevanda",
"disableMeasureWeather": "Disabilita Misura il tempo",
"disableProcessData": "Disabilita Elabora dati",
"disableRunDiagnostics": "Disabilita Esegui diagnostica",
"disableSortSamples": "Disabilita Ordina i campioni",
"disableMiraTasks": "Disabilita Incarichi su Mira HQ",
"disableBuyBeverage": "Disabilita Compra Bevanda",
"disableMeasureWeather": "Disabilita Misura Condizioni Meteo",
"disableProcessData": "Disabilita Elabora Dati",
"disableRunDiagnostics": "Disabilita Esegui Diagnostica",
"disableSortSamples": "Disabilita Smista Campioni",
"disablePolusTasks": "Disabilita gli incarichi di Polus",
"disableActivateWeatherNodes": "Disabilita Attiva i nodi meteo",
"disableAlignTelescope": "Disabilita Allinea il telescopio",
"disableFillCanisters": "Disabilita Riempi le bombole",
"disableInsertKeys": "Disabilita Inserisci le chiavi",
"disableOpenWaterways": "Disabilita Apri i canali dell'acqua",
"disableRebootWifi": "Disabilita Riavvia il Wi-Fi",
"disableRepairDrill": "Disabilita Ripara il trapano",
"disableScanBoardingPass": "Disabilita Scansiona la carta d'imbarco",
"disablePolusTasks": "Disabilita Incarichi su Polus",
"disableActivateWeatherNodes": "Disabilita Ripara Nodo Atmosferico",
"disableAlignTelescope": "Disabilita Allinea Telescopio",
"disableFillCanisters": "Disabilita Riempi Bombole",
"disableInsertKeys": "Disabilita Inserisci Chiavi",
"disableOpenWaterways": "Disabilita Apri Condotti dell'Acqua",
"disableRebootWifi": "Disabilita Riavvia Wi-Fi",
"disableRepairDrill": "Disabilita Ripara Trivella",
"disableScanBoardingPass": "Disabilita Scansiona Carta d'Imbarco",
"disableAirshipTasks": "Disabilita gli incarichi di Airship",
"disableCleanToilet": "Disabilita Pulisci il bagno",
"disableAirshipTasks": "Disabilita Incarichi su Airship",
"disableCleanToilet": "Disabilita Pulisci Bagno",
"disableDecontaminate": "Disabilita Decontamina",
"disableDevelopPhotos": "Disabilita Sviluppa le foto",
"disableDressMannequin": "Disabilita Vesti il manichino",
"disableFixShower": "Disabilita Ripara la doccia",
"disableMakeBurger": "Disabilita Prepara un hamburger",
"disablePickUpTowels": "Disabilita Raccogli gli asciugamani",
"disablePolishRuby": "Disabilita Lucida il rubino",
"disablePutAwayPistols": "Disabilita Metti via le pistole",
"disablePutAwayRifles": "Disabilita Metti via i fucili",
"disableRewindTapes": "Disabilita Riavvolgi i nastri",
"disableResetBreaker": "Disabilita Ripristina gli interruttori",
"disableSortRecords": "Disabilita Ordina i record",
"disableStartFans": "Disabilita Avvia i ventilatori",
"disableUnlockSafe": "Disabilita Sblocca la cassaforte",
"disableDevelopPhotos": "Disabilita Sviluppa Foto",
"disableDressMannequin": "Disabilita Vesti Manichino",
"disableFixShower": "Disabilita Ripara Doccia",
"disableMakeBurger": "Disabilita Prepara Burger",
"disablePickUpTowels": "Disabilita Raccogli Asciugamani",
"disablePolishRuby": "Disabilita Lucida Rubino",
"disablePutAwayPistols": "Disabilita Metti a Posto Pistole",
"disablePutAwayRifles": "Disabilita Metti a Posto Fucili",
"disableRewindTapes": "Disabilita Riavvolgi Nastri",
"disableResetBreaker": "Disabilita Resetta Interruttore",
"disableSortRecords": "Disabilita Smista Documenti",
"disableStartFans": "Disabilita Avvia Ventilatori",
"disableUnlockSafe": "Disabilita Apri Cassaforte",
"disableFungleTasks": "Disabilita gli incarichi di The Fungle",
"disableBuildSandcastle": "Disabilita Costruisci il castello di sabbia",
"disableCatchFish": "Disabilita Pesca i pesci",
"disableCollectSamples": "Disabilita Raccogli i campioni",
"disableCollectShells": "Disabilita Raccogli le conchiglie",
"disableCollectVegetables": "Disabilita Raccogli le verdure",
"disableCrankGenerator": "Disabilita Gira la manovella del generatore",
"disableExtractFuel": "Disabilita Estrai il carburante",
"disableFixAntenna": "Disabilita Ripara l'antenna",
"disableHelpCritter": "Disabilita Aiuta la creatura",
"disableHoistSupplies": "Disabilita Solleva le provviste",
"disableLiftWeights": "Disabilita Solleva i pesi",
"disableMineOres": "Disabilita Estrai i minerali",
"disablePlayVideoGame": "Disabilita Gioca al videogioco",
"disablePolishGem": "Disabilita Lucida la gemma",
"disableReplaceParts": "Disabilita Sostituisci le parti",
"disableRoastMarshmallow": "Disabilita Arrostisci il marshmallow",
"disableThrowFisbee": "Disabilita Lancia il frisbee",
"disableFindSignal": "Disabilita Trova il segnale",
"disableFungleTasks": "Disabilita Incarichi su Fungle",
"disableBuildSandcastle": "Disabilita Costruisci Castello di Sabbia",
"disableCatchFish": "Disabilita Pesca",
"disableCollectSamples": "Disabilita Raccogli Campioni",
"disableCollectShells": "Disabilita Raccogli Conchiglie",
"disableCollectVegetables": "Disabilita Raccogli Verdure",
"disableCrankGenerator": "Disabilita Avvia Generatore a Manovella",
"disableExtractFuel": "Disabilita Estrai Carburante",
"disableFixAntenna": "Disabilita Ripara Antenna",
"disableHelpCritter": "Disabilita Aiuta la Creatura",
"disableHoistSupplies": "Disabilita Solleva Provviste",
"disableLiftWeights": "Disabilita Solleva Pesi",
"disableMineOres": "Disabilita Estrai Minerali",
"disablePlayVideoGame": "Disabilita Gioca ai Videogiochi",
"disablePolishGem": "Disabilita Lucida Gemma",
"disableReplaceParts": "Disabilita Sostituisci Parti",
"disableRoastMarshmallow": "Disabilita Arrostisci Marshmallow",
"disableThrowFisbee": "Disabilita Lancia Frisbee",
"disableFindSignal": "Disabilita Trova Segnale",
"disableMiscCommonTasks": "Disabilita gli incarichi comuni globali",
"disableEnterIdCode": "Disabilita Inserisci il codice ID",
"disableFixWiring": "Disabilita Ripara i cavi elettrici",
"disableSwipeCard": "Disabilita Striscia la tessera",
"disableMiscCommonTasks": "Disabilita Incarichi Comuni",
"disableEnterIdCode": "Disabilita Inserisci Codice ID",
"disableFixWiring": "Disabilita Ripara Cavi",
"disableSwipeCard": "Disabilita Passa la Carta",
"disableMiscShortTasks": "Disabilita gli incarichi brevi globali",
"disableAssembleArtifact": "Disabilita Assembla l'artefatto",
"disableChartCourse": "Disabilita Traccia la rotta",
"disableCleanO2Filter": "Disabilita Pulisci il filtro dell'O2",
"disableCleanVent": "Disabilita Pulisci il condotto",
"disableMonitorMushroom": "Disabilita Monitora il fungo",
"disableMonitorTree": "Disabilita Monitora l'albero",
"disablePrimeShields": "Disabilita Attiva gli scudi",
"disableRecordTemperature": "Disabilita Registra la temperatura",
"disableStabilizeSteering": "Disabilita Stabilizza la guida",
"disableStoreArtifacts": "Disabilita Conserva gli artefatti",
"disableUnlockManifolds": "Disabilita Sblocca i collettori",
"disableMiscShortTasks": "Disabilita Incarichi Corti",
"disableAssembleArtifact": "Disabilita Assembla Manufatto",
"disableChartCourse": "Disabilita Traccia la Rotta",
"disableCleanO2Filter": "Disabilita Pulisci Filtro O2",
"disableCleanVent": "Disabilita Pulisci Condotto",
"disableMonitorMushroom": "Disabilita Monitora Fungo",
"disableMonitorTree": "Disabilita Controlla Albero",
"disablePrimeShields": "Disabilita Innesca Scudi",
"disableRecordTemperature": "Disabilita Registra Temperatura",
"disableStabilizeSteering": "Disabilita Stabilizza Rotta",
"disableStoreArtifacts": "Disabilita Conserva Manufatti",
"disableUnlockManifolds": "Disabilita Sblocca Collettori",
"disableMiscLongTasks": "Disabilita gli incarichi lunghi globali",
"disableAlignEngineOutput": "Disabilita Allinea l'uscita del motore",
"disableClearAsteroids": "Disabilita Distruggi gli asteroidi",
"disableEmptyChute": "Disabilita Svuota lo scivolo",
"disableInspectSample": "Disabilita Ispeziona il campione",
"disableReplaceWaterJug": "Disabilita Sostituisci il boccione dell'acqua",
"disableStartReactor": "Disabilita Avvia il reattore",
"disableWaterPlants": "Disabilita Annaffia le piante",
"disableMiscLongTasks": "Disabilita Incarichi Lunghi",
"disableAlignEngineOutput": "Disabilita Allinea Uscita Motore",
"disableClearAsteroids": "Disabilita Distruggi Asteroidi",
"disableEmptyChute": "Disabilita Svuota Scivolo",
"disableInspectSample": "Disabilita Ispeziona Campione",
"disableReplaceWaterJug": "Disabilita Sostituisci Boccione d'Acqua",
"disableStartReactor": "Disabilita Avvia Reattore",
"disableWaterPlants": "Disabilita Innaffia Piante",
"disableMiscMixedTasks": "Disabilita gli incarichi misti globali",
"disableCalibrateDistributor": "Disabilita Calibra il distributore",
"disableDivertPower": "Disabilita Devia l'energia",
"disableEmptyGarbage": "Disabilita Svuota la spazzatura",
"disableFuelEngines": "Disabilita Rifornisci i motori",
"disableSubmitScan": "Disabilita Invia la scansione",
"disableUploadData": "Disabilita Carica i dati",
"disableMiscMixedTasks": "Disabilita Incarichi Misti",
"disableCalibrateDistributor": "Disabilita Calibra Distributore",
"disableDivertPower": "Disabilita Devia Energia",
"disableEmptyGarbage": "Disabilita Svuota Spazzatura",
"disableFuelEngines": "Disabilita Fai Rifornimento Motori",
"disableSubmitScan": "Disabilita Esegui Scansione",
"disableUploadData": "Disabilita Carica Dati",
"allCommandsFull": "<b>TUTTI I COMANDI:</b>\n\n<b>/help</b>\nMostra questo messaggio.\n<b>/aur, /socials</b>\nInvia i link social di Among Us Revamped.\n\n<b>/r, /gm</b>\nInvia la descrizione della modalità corrente o l'elenco delle abilità.\n<b>/l, /lastgame</b>\nInvia le informazioni sull'ultimo vincitore.\n\n<b>/0kc, /0killcooldown</b>\nInvia la descrizione della modalità Ricarica uccisione a 0.\n<b>/sns, /shiftandseek</b>\nInvia la descrizione della modalità Mutaforma e cerca.\n<b>/sp, /speedrun</b>\nInvia la descrizione della modalità Speedrun.\n\n/<b>kick, /ban</b>\nEspelli o banna un giocatore per nome.\n<b>/ckick, /cban</b>\nEspelli o banna un giocatore per colore.\n\n<b>/vip /moderator /admin</b>\nAggiungi un giocatore come VIP, Moderatore o Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRimuovi VIP, Moderatore o Admin da un giocatore.\n\n<b>/eg, /endgame</b>\nTermina la partita corrente.\n<b>/em, /endmeeting</b>\nTermina la riunione corrente.\n<b>/s, /start</b>\nAvvia il conto alla rovescia di inizio partita.\n\n<b>/t {template}</b>\nInvia un template da AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nImposta il tuo colore, può essere usato per aggirare i limiti.",
"allCommandsFull": "<b>TUTTI I COMANDI:</b>\n\n<b>/help</b>\nMostra questo messaggio.\n<b>/aur, /socials</b>\nInvia i link di Among Us Revamped.\n\n<b>/r, /gm</b>\nInvia la descrizione della modalità attuale o la lista delle abilità.\n<b>/l, /lastgame</b>\nInvia le informazioni sull'ultimo vincitore.\n\n<b>/0kc, /0killcooldown</b>\nInvia la descrizione della modalità 0 Cooldown Uccisione.\n<b>/sns, /shiftandseek</b>\nInvia la descrizione della modalità Clone.\n<b>/sp, /speedrun</b>\nInvia la descrizione della modalità Speedrun.\n\n/<b>kick, /ban</b>\nKicka o banna un giocatore tramite nome.\n<b>/ckick, /cban</b>\nKicka o banna un giocatore tramite colore.\n\n<b>/vip /moderator /admin</b>\nAggiunge un giocatore come VIP, Moderatore o Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRimuove lo stato di VIP, Moderatore o Admin a un giocatore.\n\n<b>/eg, /endgame</b>\nTermina la partita attuale.\n<b>/em, /endmeeting</b>\nTermina la riunione attuale.\n<b>/s, /start</b>\nInizia il conto alla rovescia per l'avvio.\n\n<b>/t {template}</b>\nInvia un template da AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nCambia il tuo colore, può essere usato per aggirare le restrizioni sui colori.",
"translationReloaded": "Il tuo file è stato ripristinato con successo.\nPer applicare tutte le modifiche, riavvia il gioco.",
"translationReloaded": "Il tuo file di lingua è stato ricaricato con successo.\nPer applicare tutte le modifiche, riavvia il gioco.",
"templateWelcome": "# In questo file puoi aggiungere i Template, che fungono da comode alternative per il copia-incolla.\n# Per creare un template, scrivi una nuova riga con la stessa formattazione del Template di prova qui sotto.\n# Nota che i Template non possono superare i 120 caratteri e non possono contenere caratteri speciali. In caso contrario verrai espulso.\n\ntest: questo è un esempio di template. Digita '/t test' per vederlo.\n\nwelcome: Benvenuto! Questa lobby utilizza Among Us Revamped {ModVersion} di MV. Buon divertimento!",
"moderatorWelcome": "# In questo file puoi aggiungere i Moderatori tramite Codice Amico.\n# Se aggiungi qualcuno, otterrà un nome viola all'interno del gioco.\n# Vai su 'Impostazioni di sistema' nel gioco per personalizzare i permessi dei Moderatori. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000",
"vipWelcome": "# In questo file puoi aggiungere i VIP tramite Codice Amico.\n# Se aggiungi qualcuno, otterrà un nome giallo all'interno del gioco.\n# Vai su 'Impostazioni di sistema' nel gioco per personalizzare i permessi dei VIP. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"adminWelcome": "# In questo file puoi aggiungere gli Admin tramite Codice Amico.\n# Se aggiungi qualcuno, otterrà un nome rosso all'interno del gioco.\n# Vai su 'Impostazioni di sistema' nel gioco per personalizzare i permessi degli Admin. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"banlistWelcome": "# In questo file puoi bannare i giocatori dalla tua lobby tramite Codice Amico.\n# Bannare qualcuno nel gioco lo aggiungerà automaticamente anche qui. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"banwordWelcome": "# In questo file puoi impostare le parole proibite, espellendo automaticamente chiunque invii nel gioco le parole elencate qui.\n# Assicurati di separare le parole usando le nuove righe.",
"bannameWelcome": "# In questo file puoi impostare i nomi proibiti, espellendo automaticamente chiunque utilizzi nel gioco i nomi elencati qui.\n# Assicurati di separare i nomi usando le nuove righe.",
"templateWelcome": "# In questo file puoi creare dei template che fungono da semplice alternativa al copia-incolla.\n# Per creare un template, scrivi una nuova riga con la stessa formattazione del template di prova qui sotto.\n# I template non possono essere più lunghi di 120 caratteri e non possono contenere caratteri speciali. In caso contrario verrai kickato.\n\ntest: questo è un esempio di template. Scrivi '/t test' per vederlo.\n\nwelcome: Benvenuti! Questa Lobby Utilizza Among Us Revamped {ModVersion} di MV. Buon divertimento!",
"moderatorWelcome": "# In questo file puoi aggiungere Moderatori tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome viola in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi dei Moderatori. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000",
"vipWelcome": "# In questo file puoi aggiungere VIP tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome giallo in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi dei VIP. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"adminWelcome": "# In questo file puoi aggiungere Admin tramite il Codice Amico.\n# Se aggiungi qualcuno, riceverà un nome rosso in gioco.\n# Vai nelle 'Impostazioni di Sistema' nel gioco per modificare i permessi degli Admin. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"banlistWelcome": "# In questo file puoi bannare i giocatori dalle tue lobby tramite il Codice Amico.\n# Se banni qualcuno in gioco, verrà aggiunto automaticamente a questo file. Di seguito è riportato un esempio di Codice Amico.\n\nfriendcode#0000\n",
"banwordWelcome": "# In questo file puoi impostare le parole vietate, kickando automaticamente chi pronuncia le parole scritte qui.\n# Nota bene: per separare le parole devi usare nuove righe.",
"bannameWelcome": "# In questo file puoi impostare i nomi vietati, kickando automaticamente chi utilizza i nomi scritti qui.\n# Nota bene: per separare i nomi devi usare nuove righe.",
"languageWelcome": "# In questo file puoi impostare la tua lingua per Among Us Revamped.\n# Per impostare la lingua, scrivi una delle lingue supportate in una nuova riga. Quella predefinita è English.\n# Lingue supportate: English, Spanish, SimplifiedChinese, Italian\n\nItalian",
"noGameEndWarning": "AVVISO: La modalità Nessuna fine del gioco è attiva",
"noGameEndWarning": "ATTENZIONE: L'impostazione 'Nessuna Fine Partita' è Abilitata",
"tooLongTemplate": "Il tuo Template supera i 120 caratteri e comporterebbe la tua espulsione al momento dell'invio. Per favore, riducine la lunghezza.",
"tooLongTemplate": "Il tuo template supera i 120 caratteri e verrai kickato se viene inviato. Per favore, riducine la lunghezza.",
"vipAdd": "Aggiunto con successo {0} come VIP.",
"moderatorAdd": "Aggiunto con successo {0} come Moderatore.",
"adminAdd": "Aggiunto con successo {0} come Admin.",
"vipRemove": "Rimosso con successo VIP da {0}.",
"moderatorRemove": "Rimosso con successo Moderatore da {0}.",
"adminRemove": "Rimosso con successo Admin da {0}.",
"permFail": "Impossibile trovare l'utente '{0}'. Lo hai scritto correttamente?",
"vipAdd": "{0} aggiunto con successo come VIP.",
"moderatorAdd": "{0} aggiunto con successo come Moderatore.",
"adminAdd": "{0} aggiunto con successo come Admin.",
"vipRemove": "VIP rimosso con successo a {0}.",
"moderatorRemove": "Moderatore rimosso con successo a {0}.",
"adminRemove": "Admin rimosso con successo a {0}.",
"permFail": "Impossibile trovare il giocatore '{0}'. Assicurati di aver scritto il nome correttamente",
"helpDesc": "Mostra tutti i comandi e la loro funzione.",
"snsDesc": "Invia la descrizione della modalità di gioco Mutaforma e cerca.",
"0kcDesc": "Invia la descrizione della modalità di gioco Ricarica uccisione a 0.",
"SrDesc": "Invia la descrizione della modalità di gioco Speedrun.",
"egDesc": "Termina la partita corrente.",
"emDesc": "Termina la riunione corrente.",
"aurDesc": "Invia i link social di Among Us Revamped.",
"sDesc": "Avvia il conto alla rovescia del gioco.",
"rDesc": "/r invia le abilità attive o la modalità di gioco corrente.",
"rolesDesc": "Invia una panoramica di tutte le abilità/modalità di gioco.",
"kickDesc": "Espelli un giocatore per nome.",
"ckickDesc": "Espelli un giocatore per colore.",
"banDesc": "Banna un giocatore per nome.",
"cbanDesc": "Banna un giocatore per colore.",
"helpDesc": "Mostra tutti i Comandi e cosa fanno.",
"snsDesc": "Invia la descrizione della modalità Clone.",
"0kcDesc": "Invia la descrizione della modalità 0 Cooldown Uccisione.",
"SrDesc": "Invia la descrizione della modalità Speedrun.",
"egDesc": "Termina la partita attuale.",
"emDesc": "Termina la riunione attuale.",
"aurDesc": "Invia i Link di Among Us Revamped.",
"sDesc": "Inizia il Conto alla rovescia per l'avvio.",
"rDesc": "/r Invia le abilità abilitate o la modalità attuale.",
"rolesDesc": "Invia una panoramica di tutte le abilità/modalità.",
"kickDesc": "Kicka un giocatore tramite nome.",
"ckickDesc": "Kicka un giocatore tramite colore.",
"banDesc": "Banna un giocatore tramite nome.",
"cbanDesc": "Banna un giocatore tramite colore.",
"dumpDesc": "Copia il LogOutput in un file separato.",
"colDesc": "Imposta il tuo colore.",
"reloadDesc": "Ricarica il file della lingua.",
"vipDesc": "Aggiungi utente come VIP.",
"moderatorDesc": "Aggiungi utente come Moderatore.",
"adminDesc": "Aggiungi utente come admin.",
"cremoveVipDesc": "Rimuovi VIP dall'utente.",
"removeModeratorDesc": "Rimuovi Moderatore dall'utente.",
"removeAdminDesc": "Rimuovi Admin dall'utente.",
"lastgameDesc": "Invia le informazioni dell'ultima partita.",
"templateDesc": "Invia un template specificato da AUR-DATA/templates.txt.",
"colDesc": "Cambia il tuo colore.",
"reloadDesc": "Ricarica il file di lingua.",
"vipDesc": "Aggiunge un giocatore come VIP.",
"moderatorDesc": "Aggiunge un giocatore come Moderatore.",
"adminDesc": "Aggiunge un giocatore come Admin.",
"cremoveVipDesc": "Rimuove lo stato VIP a un giocatore.",
"removeModeratorDesc": "Rimuove lo stato di Moderatore a un giocatore.",
"removeAdminDesc": "Rimuove lo stato di Admin a un giocatore.",
"lastgameDesc": "Invia le informazioni sull'ultima partita.",
"templateDesc": "Invia un template specifico da AUR-DATA/templates.txt.",
"banWordKick": "{0} è stato espulso perché ha inviato una parola proibita {1} volta/e",
"banWordKick": "{0} è stato kickato per aver inviato una parola vietata {1} volta/e",
"pluginWarning": "<color=red><size=5><b>AVVISO:</color></b></size>\n<size=3><b>Hai 2 o più Plugin rilevati.</size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod.\nSe riscontri dei bug, molto probabilmente sono dovuti all'incompatibilità.",
"pluginWarning": "<color=red><size=5><b>ATTENZIONE:</color></b></size>\n<size=3><b>Hai 2 o più plugin attivi rilevati.</size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod.\nSe riscontri dei bug, molto probabilmente sono dovuti a incompatibilità.",
"systemSettings": "Impostazioni di sistema",
"gameplaySettings": "Impostazioni di gioco",
"gamemodeSettings": "Impostazioni modalità di gioco",
"systemSettings": "Impostazioni di Sistema",
"gameplaySettings": "Impostazioni di Gioco",
"gamemodeSettings": "Impostazioni Modalità",
"systemSettingsDesc": "Impostazioni di qualità per migliorare il comfort e i test.",
"gameplaySettingsDesc": "Impostazioni di gioco per migliorare l'esperienza in partita.",
"gamemodeSettingsDesc": "Impostazioni situazionali da applicare per specifiche modalità di gioco.",
"systemSettingsDesc": "Impostazioni di Sistema Per Migliorare il Comfort e Semplificare i Test.",
"gameplaySettingsDesc": "Impostazioni di Gioco Per Migliorare l'Esperienza di Gioco.",
"gamemodeSettingsDesc": "Impostazioni Aggiuntive Per Specifiche Modalità di Gioco.",
"everyone": "Tutti",
"vipAndAbove": "<color=yellow>VIP</color> e superiori",
"moderatorAndAbove": "<color=purple>Moderatori</color> e superiori",
"vipAndAbove": "<color=yellow>VIP</color> E Superiori",
"moderatorAndAbove": "<color=purple>Moderatore</color> E Superiori",
"admin": "<color=red>Admin</color>",
"onlyYou": "Solo tu"
"onlyYou": "Solo Tu",
"seekerDesc": "Aggiunge un giocatore come cercatore a nascondino",
"seekersDesc": "Mostra tutti i cercatori scelti manualmente.",
"clearSeekerDesc": "Pulisce la lista di tutti i cercatori scelti manualmente",
"slashEndMeetingCmd": "Chi Può Usare /endmeeting & /seeker",
"gameMasterWarning":"Osserverai le partite finché la modalità spettatore è attiva. ATTENZIONE: L'assegnazione dei ruoli potrebbe essere errata se questa impostazione è abilitata.",
"startWordsWelcome": "# In questo file puoi impostare le parole per 'Kicka Giocatori Che Dicono Start'.\n# 'Modalità di rilevamento rigorosa' OFF = I messaggi devono coincidere perfettamente con le parole impostate. 'Modalità di rilevamento rigorosa' ON = I messaggi necessitano solo di contenere le parole impostate.\n# Puoi anche aggiungere parole non correlate, che verranno rilevate solo nella lobby..\n\nstart\nbegin\ncommence\ninizia\nstartate\n",
"gameMasterWarningTwo": "ATTENZIONE: Modalità Spettatore Attivata",
"startWordKick": "{0} è stato kickato per aver inviato una parola presente in StartWords.txt {1} volta/e",
"seekers": "Cercatori: ",
"clearedSeekers": "Lista dei cercatori scelti manualmente pulita con successo.",
"tabGroupLevelKick": "Moderazione Livelli",
"enableKickLowLevelPlayer": "Kicka Giocatori di Basso Livello",
"tabGroupKickInvalidFriendCodes": "Codici Amico Non Validi",
"tabGroupAutoKickStart": "Parole di Start",
"autoKickStartTimes": "Messaggi di Start inviati necessari per il kick",
"tabGroupAutostart": "AutoHost",
"rehost": "Ricrea Automaticamente Lobby In Caso di Crash",
"public": "Rendi Automaticamente la Nuova Lobby Pubblica",
"mapVoteDuration": "Durata della Votazione per le Mappe",
"tabGroupDeniedWords": "Parole Vietate",
"enableDeniedWords": "Kicka Giocatori Che Pronunciano Parole Vietate",
"slashMapAndSeekerCmd": "Chi Può Usare /seeker & /mapvote",
"snsChatInGameExtend": "Invia informazioni sulla modalità dopo l'inizio del gioco",
"mapVoteDesc": "Inizia una votazione tra le 5 mappe principali.",
"allMapVoteDesc": "Inizia una votazione tra tutte e 6 le mappe, inclusa Eht Dleks.",
"banWordBan": "{0} è stato bannato per aver inviato una parola di DeniedWords.txt {1} volta/e",
"startWordBan": "{0} è stato bannato per aver inviato una parola di StartWords.txt {1} volta/e",
"moderationSettings": "Impostazioni di Moderazione",
"moderationSettingsDesc": "Impostazioni di Moderazione per combattere tossicità e cattivo comportamento.",
"rehostSuccess": "La Lobby è Stata Ricreata Con Successo",
"enableKickHighLevelPlayer": "Kicka Giocatori di Alto Livello",
"kickHighLevelPlayer": "Kicka Giocatori Sopra il Livello",
"kick": "Kick",
"ban": "Ban",
"notifyMe": "Notificami",
"tabGroupAfk": "Rilevamento AFK",
"enableAfkDetection": "Abilita Rilevamento AFK",
"afkTimer": "Soglia di Rilevamento",
"afkPenalty": "Penalità Per AFK",
"onlyDetectSpawn": "Rileva Solo i Giocatori allo Spawn",
"afkNotify": "{0} è stato AFK {1}sec",
"afkKick": "{0} è stato AFK {1}sec, kickiamo il giocatore",
"afkBan": "{0} è stato AFK {1}sec, banniamo il giocatore",
"automaticMapPoll": "/mapvote Automatico Dopo il Rientro",
"automaticAllMapPoll": "/allmapvote Automatico Dopo il Rientro",
"timeBeforeMapPoll": "Tempo Prima Inizio Votazione Mappe",
"pnsDisableSabotage": "Disable PnS Critical Sabotages",
"pnsDisableCloseDoor": "Disable PnS Door Sabotages",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
"snsImpostorCanVent": "Impostors can vent"
}
+331 -265
View File
@@ -1,287 +1,353 @@
{
"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",
"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": "<b>全コマンド一覧:</b>\n\n<b>/help</b>\nこのヘルプメッセージを表示します。\n<b>/aur, /socials</b>\nAmong Us Revamped のSNSリンクを送信します。\n\n<b>/r, /gm</b>\n現在のゲームモードの説明を送信します。\n<b>/l, /lastgame</b>\n前回の勝者情報を送信します。\n\n<b>/0kc, /0killcooldown</b>\nキルクール0秒モードの説明を送信します。\n<b>/sns, /shiftandseek</b>\nシェイプ&シークモードの説明を送信します。\n<b>/sp, /speedrun</b>\nスピードランモードの説明を送信します。\n\n/<b>kick, /ban</b>\n名前指定でプレイヤーをキック/BANします。\n<b>/ckick, /cban</b>\n色指定でプレイヤーをキック/BANします。\n\n<b>/vip /moderator /admin</b>\nプレイヤーをVIP、モデレーター、管理人に設定します。\n<b>/removevip, /removemoderator, /removeadmin</b>\nプレイヤーの権限を削除します。\n\n<b>/eg, /endgame</b>\n現在のゲームを強制終了します。\n<b>/em, /endmeeting</b>\n現在の会議を強制終了します。\n<b>/s, /start</b>\nゲーム開始のカウントダウンを開始します。\n\n<b>/t {template}</b>\nAUR-DATA/templates.txt から定型文を送信します。\n\n<b>/col, /color, /colour</b>\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# 名前ごとに改行して区切ってください。",
"noGameEndWarning": "警告: 「ゲーム終了なし」が有効になっています",
"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)に指定します。",
"banWordKick": "{0} は DeniedWords.txt に登録されたNGワードを {1} 回送信したためキックされました",
"pluginWarning": "<color=red><size=5><b>警告:</color></b></size>\n<size=3><b>複数のプラグイン(Mod)が検出されました。</size></b>\nAmong Us Revamped は他の多くのMODと互換性がありません。\nバグが発生する場合、そのほとんどはMod間の競合によるものです。",
"systemSettings": "システム設定",
"gameplaySettings": "ゲームプレイ設定",
"gamemodeSettings": "モード設定",
"gamemodeSettings": "ゲームモード設定",
"systemSettingsDesc": "快適性の向上やテスト目的の画質・システム設定。",
"gameplaySettingsDesc": "ゲーム内体験を改善するための設定。",
"gamemodeSettingsDesc": "特定のゲームモードに適したシチュエーション設定。",
"systemSettingsDesc": "快適性やテスト作業を向上させる各種設定。",
"gameplaySettingsDesc": "局内の体験を向上させるゲームプレイ設定。",
"gamemodeSettingsDesc": "特定モード用に適用する状況別の設定。",
"everyone": "全員",
"vipAndAbove": "<color=yellow>VIP</color> 以上",
"moderatorAndAbove": "<color=purple>モデレーター</color> 以上",
"admin": "<color=red>管理者</color>",
"onlyYou": "自分のみ",
"gameMaster": "管理者",
"showFPS": "FPSを表示",
"autoStart": "自動開始",
"enableDarkTheme": "ダークテーマを有効化",
"enableLobbyMusic": "ロビーBGM",
"disableInfoWhenDead": "死亡後に情報を非表示",
"disableCommandHelper": "コマンドヘルパーを無効化",
"gameMasterWarning": "ゲーム管理者をオフにするまで、観戦モードに入ります。警告:この設定を有効にすると、スキルのメッセージが送信されなくなったり、配役の割り当てが不正確になったりする可能性があります。",
"cancelStartCountdown": "開始カウントダウンがキャンセルされました",
"admin": "<color=red>管理人</color>",
"onlyYou": "あなたのみ",
"seekersDesc": "手動で選択されたシーカーをすべて表示します。",
"clearSeekerDesc": "手動シーカーリストをクリアします。",
"startWordsWelcome": "# このファイルでは、「Start」と発言したプレイヤーをキックする機能で検出する単語を設定できます。\n# 「厳格検出モード」OFF = メッセージが単語と完全に一致する必要があります。\n# 「厳格検出モード」ON = メッセージに単語が含まれているだけで検出されます。\n# ロビー内でのみ検出したい無関係な単語を追加することもできます。\n\nstart\nbegin\ncommence",
"gameMasterWarningTwo": "警告:ゲームマスターが有効になっています",
"startWordKick": "{0} は StartWords.txt に設定された単語を送信したためキックされました(回数:{1}回)",
"seekers": "シーカー:",
"clearedSeekers": "手動シーカーリストを正常にクリアしました。",
"autoKickStartTimes": "StartWordsを送信した回数でキック",
"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 を使用できる権限",
"tabGroupLevelKick": "レベル管理",
"enableKickLowLevelPlayer": "低レベルのプレイヤーをキック",
"tabGroupKickInvalidFriendCodes": "無効なフレンドコード",
"tabGroupAutoKickStart": "StartWords",
"tabGroupAutostart": "自動ホスト",
"rehost": "切断時にロビーを自動で再作成",
"public": "新しいロビーを自動で公開",
"mapVoteDuration": "マップ投票時間",
"tabGroupDeniedWords": "禁止ワード",
"enableDeniedWords": "禁止ワードを送信したプレイヤーをキック",
"slashMapAndSeekerCmd": "/seeker と /mapvote を使用できる人",
"snsChatInGameExtend": "ゲーム開始後にゲームモード情報を送信",
"tabGroupCrewmate": "クルーメイトの役職",
"tabGroupNeutral": "ニュートラルの役職",
"tabGroupImpostor": "インポスターの役職",
"mapVoteDesc": "5つの通常マップで投票を開始します。",
"allMapVoteDesc": "Eht Dleks を含む全6マップで投票を開始します。",
"tabGroupStandard": "スタンダードモード",
"banWordBan": "{0} は DeniedWords.txt の単語を {1} 回送信したためBANされました",
"startWordBan": "{0} は StartWords.txt の単語を {1} 回送信したためBANされました",
"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": "全員がエンジニア",
"moderationSettings": "モデレーション設定",
"moderationSettingsDesc": "荒らしや迷惑行為を防止するための設定です。",
"tabGroupSabotages": "サボタージュ設定",
"deadImpostorsCanSabotage": "死亡したインポスターもサボタージュ可能",
"disableSabotage": "緊急サボタージュを無効化",
"disableReactor": "リアクター妨害を無効化",
"disableOxygen": "酸素妨害を無効化",
"disableLights": "停電妨害を無効化",
"disableComms": "通信妨害を無効化",
"disableHeli": "墜落危機妨害を無効化",
"disableMushroomMixup": "キノコまぜまぜ妨害を無効化",
"disableCloseDoor": "ドア閉め妨害を無効化",
"rehostSuccess": "ロビーの再作成に成功しました",
"enableKickHighLevelPlayer": "高レベルプレイヤーのキックを有効化",
"kickHighLevelPlayer": "指定レベル以上のプレイヤーをキック",
"kick": "キック",
"ban": "BAN",
"notifyMe": "通知する",
"tabGroupGameplayGeneral": "全般的なゲームプレイ",
"disableAnnoyingMeetingCalls": "ゲーム開始後30秒間は緊急会議の招集を禁止",
"disableReport": "死体通報を無効化",
"changeDecontaminationTime": "除染室の時間を上書き (スタンダードモードのみ)",
"decontaminationTimeOnMiraHQ": "Mira HQの除染持続時間",
"decontaminationDoorOpenTimeOnMiraHQ": "Mira HQのドア開放持続時間",
"decontaminationTimeOnPolus": "Polusの除染持続時間",
"decontaminationDoorOpenTimeOnPolus": "Polusのドア開放持続時間",
"disableSporeTrigger": "The Fungleの胞子トリガーを無効化",
"tabGroupAfk": "AFK検知",
"enableAfkDetection": "AFK検知を有効化",
"afkTimer": "検知までの時間",
"afkPenalty": "AFK時のペナルティ",
"onlyDetectSpawn": "スポーン地点のプレイヤーのみ検知",
"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のバイタルを無効化",
"afkNotify": "{0} は {1}秒間AFKです",
"afkKick": "{0} は {1}秒間AFKのため、キックします",
"afkBan": "{0} は {1}秒間AFKのため、BANします",
"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": "<b>すべてのコマンド:</b>\n\n<b>/help</b>\nこのヘルプメッセージを表示します。\n<b>/aur, /socials</b>\nAmong Us RevampedのSNSリンクを送信します。\n\n<b>/r, /gm</b>\n現在のモード紹介またはスキルリストを送信します。\n<b>/l, /lastgame</b>\n前回のゲームの勝者情報を送信します。\n\n<b>/0kc, /0killcooldown</b>\nキルクールダウン0秒モードの紹介を送信します。\n<b>/sns, /shiftandseek</b>\nシフト&シークモードの紹介を送信します。\n<b>/sp, /speedrun</b>\nタイムアタックモードの紹介を送信します。\n\n/<b>kick, /ban</b>\n名前を指定してプレイヤーをキックまたはBANします。\n<b>/ckick, /cban</b>\n色を指定してプレイヤーをキックまたはBANします。\n\n<b>/vip /moderator /admin</b>\nプレイヤーをVIP、モデレーター、または管理者に設定します。\n<b>/removevip, /removemoderator, /removeadmin</b>\nプレイヤーのVIP、モデレーター、または管理者権限を剥奪します。\n\n<b>/eg, /endgame</b>\n現在のゲームを終了します。\n<b>/em, /endmeeting</b>\n現在の会議を終了します。\n<b>/s, /start</b>\nゲーム開始のカウントダウンを始めます。\n\n<b>/t {template}</b>\nAUR-DATA/templates.txt内の指定されたテンプレートを送信します。\n\n<b>/col, /color, /colour</b>\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": "<color=red><size=5><b>警告:</color></b></size>\n<size=3><b>2つ以上のプラグインが有効化されていることを検出しました。</size></b>\nAmong Us RevampedはほとんどのModと互換性がありません。\n不具合が発生した場合、競合が原因である可能性が非常に高いです。"
"automaticMapPoll": "再参加後に /mapvote を自動実行",
"automaticAllMapPoll": "再参加後に /allmapvote を自動実行",
"timeBeforeMapPoll": "投票開始までの待機時間",
"pnsDesc": "Poof and Seekゲームモードの説明を送信します。",
"pnsDisableSabotage": "PnSの重大なサボタージュを無効にする",
"pnsDisableCloseDoor": "PnSのドア閉鎖サボタージュを無効にする",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "幻象師が明らかに移動した後、自殺するまでの時間",
"snsImpostorCanVent": "インポスターはベントを使用できる",
"modeVoteDuration": "ゲームモード投票時間",
"snsChatInGameExtendTwo": "ゲーム開始後に拡張情報を送信",
"snsChatInGameFast": "高速会議(実験的+)",
"shieldFirstDeath": "最初に死亡したプレイヤーをシールドで保護",
"shieldFirstDeathDuration": "シールド持続時間",
"snsTwoDesc": "Shift and Seekの拡張説明を送信。",
"modeVoteDesc": "すべてのゲームモードから投票を開始します。",
"automaticModePoll": "再参加後に自動で /gmvote を実行"
}
+96 -29
View File
@@ -10,9 +10,7 @@
"disableCommandHelper": "Выключить Командного Помощника",
"disableCompatibilityWarning": "Выключить Предупреждение Совместимости",
"gameMasterWarning":"Вы будете наблюдать игры пока включён режим спектатора. ВНИМАНИЕ: Сообщения со способностями не будут отправлены и назначение ролей может быть неправильным если эта настройка включена.",
"cancelStartCountdown": "Отсчет до старта отменён",
"cancelStartCountdown": "Отсчёт до старта отменён",
"invalidFriendCodeKick": "{0} был кикнут из-за неправильного Кода друга",
"invalidFriendCodeBan": "{0} был забанен из-за неправильного Кода друга",
@@ -28,18 +26,17 @@
"moderatorCanUseCommand": "Модераторы Могут Использовать Команды",
"autoKickStart": "Кикать Игроков Которые Говорят Start",
"autoKickStartAsBan": "Банить вместо кика",
"autoKickStartTimes": "Start сообщений нужно для кика",
"autoKickStartStrength": "Режим строго обнаружения",
"autoKickStartStrength": "Режим строгого обнаружения",
"tabGroupAutomation": "Автоматизация",
"autoSendGameInfo": "Автоматически отправлять информацию о победителе",
"autoSendGameInfo": "Автоматически отправлять информацию о победителях",
"autoRejoinLobby": "Автоматически перезаходить в лобби",
"autoStartTimer": "Отсчет Для Авто Старта",
"autoStartTimer": "Отсчёт Для Авто Старта",
"waitAutoStart": "Авто Старт После",
"playerAutoStart": "Игроков Нужно Для Авто Старта",
"enableJoinMessages": "Включить Сообщение С Приветствиями",
"messagePerPlayerNum": "Сообщение Каждое Количество Заходов",
"tabGroupMisc": "Разное",
"startCountdown": "Отсчет Для Старта По Умолчанию",
"messagePerPlayerNum": "Сообщение Каждые # Заходов",
"tabGroupMisc": "Экспериментальное",
"startCountdown": "Отсчёт Для Старта По Умолчанию",
"colorCommandLevel": "Кто Может использовать Команды Цветов",
"allowFortegreen": "Разрешить Фортезелёный Цвет",
"noGameEnd": "Без Конца Игры",
@@ -50,7 +47,6 @@
"slashLastGameCmd": "Кто Может Использовать /l & /aur",
"slashKickCmd": "Кто Может Использовать /kick & /ckick",
"slashBanCmd": "Кто Может Использовать /ban & /cban",
"slashEndMeetingCmd": "Кто Может Использовать /endmeeting",
"slashStartAndEndGameCmd": "Кто Может Использовать /startgame & /endgame",
"tabGroupCrewmate": "Роли Экипажа",
@@ -69,7 +65,7 @@
"cantKillTime": "После Осечки Нельзя Убивать В Течение",
"misfiresToSuicide": "Самоубийство После Количества Осечек",
"crewAutoWinsGameAfter": "Экипаж Автоматически Побеждает После",
"snsDisableSabotage": "Выключить Критические Сабботажи в Режиме Клона",
"snsDisableSabotage": "Выключить Критические Саботажи в Режиме Клона",
"snsDisableReactor": "Выключить Сабботаж Реактора",
"snsDisableOxygen": "Выключить Сабботаж O2",
"snsDisableLights": "Выключить Сабботаж Света",
@@ -82,9 +78,9 @@
"gameAutoEndsAfter": "Игра автоматически заканчивается после",
"engineerMode": "Все Инженеры",
"tabGroupSabotages": "Сабботажи",
"deadImpostorsCanSabotage": "Умершие Предатели Могут Сабботировать",
"disableSabotage": "Выключить Критические Сабботажи",
"tabGroupSabotages": "Саботажи",
"deadImpostorsCanSabotage": "Умершие Предатели Могут Саботировать",
"disableSabotage": "Выключить Критические Саботажи",
"disableReactor": "Выключить Сабботаж Реактора",
"disableOxygen": "Выключить Сабботаж O2",
"disableLights": "Выключить Сабботаж Света",
@@ -216,30 +212,30 @@
"disableSubmitScan": "Выключить Пройти Скан",
"disableUploadData": "Выключить Загрузить Данные",
"allCommandsFull": "<b>ВСЕ КОМАНДЫ:</b>\n\n<b>/help</b>\nПоказать это сообщение.\n<b>/aur, /socials</b>\nОтправляет ссылки Among Us Revamped.\n\n<b>/r, /gm</b>\nОтправляет описание текущего режима или списка способностей.\n<b>/l, /lastgame</b>\nОтправляет информацию о последнем победителе.\n\n<b>/0kc, /0killcooldown</b>\nОтправляет описание режима 0 Перезарядки Убийств.\n<b>/sns, /shiftandseek</b>\nОтправляет описание режима Клона.\n<b>/sp, /speedrun</b>\nОтправляет описание режима Спидрана.\n\n/<b>kick, /ban</b>\nКикает или банит игрока по нику.\n<b>/ckick, /cban</b>\nКикает или банит игрока по цвету.\n\n<b>/vip /moderator /admin</b>\nДобавляет игрока как VIP, Модератора или Админа.\n<b>/removevip, /removemoderator, /removeadmin</b>\nУбирает VIP, Модератора или Админа у игрока.\n\n<b>/eg, /endgame</b>\nЗаканчивает текущую игру.\n<b>/em, /endmeeting</b>\nЗаканчивает текущее собрание.\n<b>/s, /start</b>\nНачинает отсчет для старта.\n\n<b>/t {template}</b>\nОтправляет шаблон из AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nМеняет ваш цвет, может быть использована чтобы обойти ограничения по цветам.",
"allCommandsFull": "<b>ВСЕ КОМАНДЫ:</b>\n\n<b>/help</b>\nПоказать это сообщение.\n<b>/aur, /socials</b>\nОтправляет ссылки Among Us Revamped.\n\n<b>/r, /gm</b>\nОтправляет описание текущего режима или списка способностей.\n<b>/l, /lastgame</b>\nОтправляет информацию о последнем победителе.\n\n<b>/0kc, /0killcooldown</b>\nОтправляет описание режима 0 Перезарядки Убийств.\n<b>/sns, /shiftandseek</b>\nОтправляет описание режима Клона.\n<b>/sp, /speedrun</b>\nОтправляет описание режима Спидрана.\n\n/<b>kick, /ban</b>\nКикает или банит игрока по нику.\n<b>/ckick, /cban</b>\nКикает или банит игрока по цвету.\n\n<b>/vip /moderator /admin</b>\nДобавляет игрока как VIP, Модератора или Админа.\n<b>/removevip, /removemoderator, /removeadmin</b>\nУбирает VIP, Модератора или Админа у игрока.\n\n<b>/eg, /endgame</b>\nЗаканчивает текущую игру.\n<b>/em, /endmeeting</b>\nЗаканчивает текущее собрание.\n<b>/s, /start</b>\nНачинает Отсчёт для старта.\n\n<b>/t {template}</b>\nОтправляет шаблон из AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\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 +244,7 @@
"egDesc": "Заканчивает текущую игру.",
"emDesc": "Заканчивает текущее собрание.",
"aurDesc": "Отправляет Ссылки Us Revamped.",
"sDesc": "Начинает отсчет для старта.",
"sDesc": "Начинает Отсчёт для старта.",
"rDesc": "/r Отправляет включеные способности или текущий режим.",
"rolesDesc": "Отправляет обзор всех способностей/режимов.",
"kickDesc": "Кикает игрока по нику.",
@@ -259,8 +255,8 @@
"colDesc": "Меняет ваш цвет.",
"reloadDesc": "Перезагружает языковой файл.",
"vipDesc": "Добавляет игрока как VIP.",
"moderatorDesc": "Добавляет игрока как Модератор.",
"adminDesc": "Добавляет игрока как Админ.",
"moderatorDesc": "Добавляет игрока как Модератора.",
"adminDesc": "Добавляет игрока как Админа.",
"cremoveVipDesc": "Убирает VIP у игрока.",
"removeModeratorDesc": "Убирает Модератора у игрока.",
"removeAdminDesc": "Убирает Админа у игрока.",
@@ -283,5 +279,76 @@
"vipAndAbove": "<color=yellow>VIP</color> И Выше",
"moderatorAndAbove": "<color=purple>Модератор</color> И Выше",
"admin": "<color=red>Админ</color>",
"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": "Успешно очищен список вручную выбранных искателей.",
"tabGroupLevelKick": "Уровневая Модерация",
"enableKickLowLevelPlayer": "Кикать Игроков С Низким Уровнем",
"tabGroupKickInvalidFriendCodes": "Неправильные Коды Друзей",
"tabGroupAutoKickStart": "Старт Слова",
"autoKickStartTimes": "Отправленных Cтарт сообщений нужно для кика",
"tabGroupAutostart": "АвтоХост",
"rehost": "Автоматически Пересоздавать Лобби При Вылете",
"public": "Автоматически Делать Новое Лобби Публичным",
"mapVoteDuration": "Продолжительность Голосования За Карты",
"tabGroupDeniedWords": "Запрещенные Слова",
"enableDeniedWords": "Кикать Игроков Которые Говорят Запрещенные Слова",
"slashMapAndSeekerCmd": "Кто Может Использовать /seeker & /mapvote",
"snsChatInGameExtend": "Отправлять информацию о режиме после начала игры",
"mapVoteDesc": "Начинает голосование между 5 основными картами.",
"allMapVoteDesc": "Начинает голосование между всеми 6 картами, включая Eht Dleks.",
"banWordBan": "{0} Были забанены потому что они отправили слово из DeniedWords.txt {1} раз(а)",
"startWordBan": "{0} Были забанены потому что они отправили слово из StartWords.txt {1} раз(а)",
"moderationSettings": "Настройки Модерации",
"moderationSettingsDesc": "Настройки Модерации чтобы бороться с токсичностью и плохим поведением.",
"rehostSuccess": "Лобби Было Успешно Пересоздано",
"enableKickHighLevelPlayer": "Кикать Игроков С Высоким Уровнем",
"kickHighLevelPlayer": "Кикать Игроков Больше Уровня",
"kick": "Кик",
"ban": "Бан",
"notifyMe": "Уведомить Меня",
"tabGroupAfk": "АФК Обнаружение",
"enableAfkDetection": "Включить АФК Обнаружение",
"afkTimer": "Порог Обнаружения",
"afkPenalty": "Наказание За АФК",
"onlyDetectSpawn": "Только Обнаруживать Игроков На Спавне",
"afkNotify": "{0} Был АФК {1}сек",
"afkKick": "{0} Был АФК {1}сек, кикаем игрока",
"afkBan": "{0} Был АФК {1}сек, баним игрока",
"automaticMapPoll": "Автоматический /mapvote После Перезахода",
"automaticAllMapPoll": "Автоматический /allmapvote После Перезахода",
"timeBeforeMapPoll": "Время До Начала Голосования За Карты",
"pnsDisableSabotage": "Выключить Критические Саботажи В Режиме Фантомные Прятки",
"pnsDisableCloseDoor": "Выключить Саботажи Дверей В Режиме Фантомные Прятки",
"tabGroupPNS": "Фантомные Прятки",
"badMoveTimeToSuicide": "Файнтомы Самоубиваются После Видимого Движения После",
"snsImpostorCanVent": "Предатели Могут Уходить в Люк",
"pnsDesc": "Отправляет Информацию о Режиме Фантомных Прятках.",
"modeVoteDuration": "Врямя Голосования За Режим",
"snsChatInGameExtendTwo": "Отправить увеличенную инфо после начала игры",
"snsChatInGameFast": "Быстрые Собрания (экспериментальное+)",
"shieldFirstDeath": "Защищать Игрока Который Умер Первым",
"shieldFirstDeathDuration": "Длительность Щита",
"snsTwoDesc": "Отправить Увеличенное Описание Клона.",
"modeVoteDesc": "Начать Голосование между всеми режимами.",
"automaticModePoll": "Автоматический /gmvote После Перезахода"
}
+69 -15
View File
@@ -1,7 +1,7 @@
{
"LanguageID": "2",
"gameMaster": "游戏大师(Game Master)",
"gameMaster": "游戏主管(Game Master)",
"showFPS": "显示帧率 (FPS)",
"autoStart": "自动开始",
"enableDarkTheme": "启用深色主题",
@@ -28,7 +28,6 @@
"moderatorCanUseCommand": "管理人员可以使用命令",
"autoKickStart": "自动踢出发送“Start”的玩家",
"autoKickStartAsBan": "改为封禁而非踢出",
"autoKickStartTimes": "踢出所需的“Start”消息次数",
"autoKickStartStrength": "严格检测模式",
"tabGroupAutomation": "自动化",
"autoSendGameInfo": "自动发送获胜者信息",
@@ -38,20 +37,20 @@
"playerAutoStart": "自动开始所需人数",
"enableJoinMessages": "启用欢迎消息",
"messagePerPlayerNum": "每达到指定加入人数发送消息",
"tabGroupMisc": "杂项设置",
"tabGroupMisc": "实验性",
"startCountdown": "默认开始倒计时",
"colorCommandLevel": "谁可以使用颜色命令",
"allowFortegreen": "允许军绿色",
"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": "中立职业",
@@ -239,7 +238,6 @@
"moderatorRemove": "已成功移除 {0} 的管理员 (Moderator) 权限。",
"adminRemove": "已成功移除 {0} 的超级管理员 (Admin) 权限。",
"permFail": "找不到用户 '{0}'。请检查拼写是否正确?",
"helpDesc": "显示所有命令及其功能。",
"snsDesc": "发送 变形与搜寻 (Shift and Seek) 游戏模式介绍。",
"0kcDesc": "发送 0秒击杀冷却 (0 Kill Cooldown) 游戏模式介绍。",
@@ -265,15 +263,11 @@
"removeAdminDesc": "移除用户的超级管理员 (Admin) 权限。",
"lastgameDesc": "发送上一局游戏信息。",
"templateDesc": "发送 AUR-DATA/templates.txt 中指定的模板。",
"banWordKick": "{0} 因发送违禁词被踢出,累计次数:{1} 次",
"pluginWarning": "<color=red><size=5><b>警告:</color></b></size>\n<size=3><b>检测到您启用了 2 个或更多插件。</size></b>\nAmong Us Revamped 与大多数模组不兼容。\n如果遇到 Bug,极有可能是因为冲突所致。",
"systemSettings": "系统设置",
"gameplaySettings": "游戏设置",
"gamemodeSettings": "模式设置",
"systemSettingsDesc": "用于提升舒适度与测试的画质/系统设置。",
"gameplaySettingsDesc": "用于改善游戏内体验的设置。",
"gamemodeSettingsDesc": "适用于特定游戏模式的情境设置。",
@@ -282,5 +276,65 @@
"vipAndAbove": "<color=yellow>VIP</color> 及以上",
"moderatorAndAbove": "<color=purple>管理员</color> 及以上",
"admin": "<color=red>管理员</color>",
"onlyYou": "仅自己"
"onlyYou": "仅自己",
"seekersDesc": "显示所有手动选择的搜寻者。",
"clearSeekerDesc": "清除手动搜寻者列表。",
"startWordsWelcome": "# 在此文件中,您可以设置检查发送 “Start” 并踢出该玩家的功能。\n# 严格检测关闭 = 消息必须完全匹配关键词。\n# 严格检测开启 = 消息只需包含关键词即可。\n# 也可以添加无关词语,仅用于大厅检测。\n\nstart\nbegin\ncommence",
"gameMasterWarningTwo": "警告:游戏主管已启用",
"startWordKick": "{0} 因发送 StartWords.txt 中的关键词被踢出,累计次数:{1} 次",
"seekers": "搜寻者:",
"clearedSeekers": "已成功清除手动搜寻者列表。",
"autoKickStartTimes": "发送 StartWords 文本关键词并在达到某个次数时踢出该玩家",
"tabGroupLevelKick": "等级管理",
"enableKickLowLevelPlayer": "启用低等级玩家踢出",
"tabGroupKickInvalidFriendCodes": "无效好友代码",
"tabGroupAutoKickStart": "StartWords",
"tabGroupAutostart": "自动开房",
"rehost": "断线后自动重新创建大厅",
"public": "自动将新大厅设为公开",
"mapVoteDuration": "地图投票持续时间",
"tabGroupDeniedWords": "违禁词",
"enableDeniedWords": "踢出发送违禁词的玩家",
"slashMapAndSeekerCmd": "谁可以使用 /seeker 与 /mapvote",
"snsChatInGameExtend": "游戏开始后发送游戏模式介绍",
"mapVoteDesc": "发起包含 5 张官方地图的地图投票。",
"allMapVoteDesc": "发起包含全部 6 张地图(包括 Eht Dleks)的地图投票。",
"banWordBan": "{0} 因发送了 DeniedWords.txt 中的关键词,第 {1} 次违规,已被封禁。",
"startWordBan": "{0} 因发送了 StartWords.txt 中的关键词,第 {1} 次违规,已被封禁。",
"moderationSettings": "管理设置",
"moderationSettingsDesc": "用于防止恶意行为和不当行为的管理设置。",
"rehostSuccess": "已成功重新创建大厅。",
"enableKickHighLevelPlayer": "启用踢出高等級玩家",
"kickHighLevelPlayer": "踢出高于指定等級的玩家",
"kick": "踢出",
"ban": "封锁",
"notifyMe": "通知我",
"tabGroupAfk": "AFK 侦测",
"enableAfkDetection": "启用 AFK 侦测",
"afkTimer": "检测门槛",
"afkPenalty": "AFK 处罚",
"onlyDetectSpawn": "仅侦测出生点玩家",
"afkNotify": "{0} 已 AFK {1} 秒",
"afkKick": "{0} 已 AFK {1} 秒,正在踢出玩家",
"afkBan": "{0} 已 AFK {1} 秒,正在封锁玩家",
"automaticMapPoll": "重新加入后自发起起 /mapvote",
"automaticAllMapPoll": "重新加入后自动发起 /allmapvote",
"timeBeforeMapPoll": "投票开始前等待時間",
"pnsDesc": "发送 Poof and Seek 幻象与躲藏 游戏模式说明。",
"pnsDisableSabotage": "禁用 PnS 紧急破坏。",
"pnsDisableCloseDoor": "禁用 PnS 关门破坏。",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "幻象师在明显移动后自杀的时间。",
"snsImpostorCanVent": "内鬼可以使用通风管。",
"modeVoteDuration": "游戏模式投票时长",
"snsChatInGameExtendTwo": "游戏开始后发送扩展信息",
"snsChatInGameFast": "快速会议(实验性+)",
"shieldFirstDeath": "护盾保护第一个死亡的玩家",
"shieldFirstDeathDuration": "护盾持续时间",
"snsTwoDesc": "发送 Shift and Seek 扩展说明。",
"modeVoteDesc": "在所有游戏模式之间发起投票。",
"automaticModePoll": "重新加入后自动执行 /gmvote"
}
+68 -15
View File
@@ -9,29 +9,50 @@
"disableCommandHelper": "Desactivar ayuda para comandos",
"disableCompatibilityWarning": "Desactivar advertencia de compatibilidad",
"gameMasterWarning": "Ahora observarás las partidas hasta que se desactive el Maestro del Juego. ADVERTENCIA: No se enviarán mensajes de habilidades y la asignación de roles podría ser inexacta si esta opción está activada.",
"gameMasterWarningTwo": "ADVERTENCIA: El Maestro del Juego está activado",
"cancelStartCountdown": "La cuenta regresiva de inicio fue cancelada",
"invalidFriendCodeKick": "{0} fue expulsado por tener un código de amigo no válido",
"invalidFriendCodeBan": "{0} fue bloqueado por tener un código de amigo no válido",
"invalidFriendCodeBan": "{0} fue baneado por tener un código de amigo no válido",
"language": "Idioma (requiere reiniciar)",
"gamemode": "Modo de juego",
"tabGroupMain": "Moderación",
"tabGroupLevelKick": "Moderación por nivel",
"enableKickLowLevelPlayer": "Expulsar jugadores de nivel bajo",
"kickLowLevelPlayer": "Expulsar jugadores cuyo nivel sea menor que",
"tempBanLowLevelPlayer": "Bloquear en lugar de expulsar",
"tempBanLowLevelPlayer": "Banear en lugar de expulsar",
"enableKickHighLevelPlayer": "Expulsar jugadores de nivel alto",
"kickHighLevelPlayer": "Expulsar jugadores por encima del nivel",
"dontKickLevelOnes": "No expulsar jugadores Nv.1 por salas bugueadas",
"tabGroupKickInvalidFriendCodes": "Códigos de amigo no válidos",
"kickInvalidFriendCodes": "Expulsar códigos de amigo no válidos (vacíos)",
"tempBanInvalidFriendCodes": "Bloquear en lugar de expulsar",
"tempBanInvalidFriendCodes": "Banear en lugar de expulsar",
"tabGroupDeniedWords": "Palabras prohibidas",
"enableDeniedWords": "Expulsar jugadores que digan palabras prohibidas",
"deniedWordsToKick": "Palabras prohibidas para expulsar jugadores",
"moderatorCanUseCommand": "Los moderadores pueden usar comandos",
"tabGroupAutoKickStart": "Palabras de start",
"autoKickStart": "Expulsar jugadores que digan \"start\"",
"autoKickStartAsBan": "Bloquear en lugar de expulsar",
"autoKickStartAsBan": "Banear en lugar de expulsar",
"autoKickStartTimes": "Mensajes de \"start\" necesarios para expulsar",
"autoKickStartStrength": "Modo de detección estricto",
"tabGroupAfk": "Detección AFK",
"enableAfkDetection": "Detectar AFK",
"afkTimer": "Tiempo para marcar AFK",
"afkPenalty": "Castigo por AFK",
"onlyDetectSpawn": "Detectar solo jugadores en spawn",
"tabGroupAutomation": "Automatización",
"tabGroupAutostart": "Autohost",
"rehost": "Recrear la sala automáticamente al desconectarse",
"public": "Poner la sala nueva en público automáticamente",
"autoSendGameInfo": "Enviar automáticamente información del ganador",
"autoRejoinLobby": "Volver automáticamente a la sala",
"automaticMapPoll": "/mapvote automático al volver a la sala",
"automaticAllMapPoll": "/allmapvote automático al volver a la sala",
"timeBeforeMapPoll": "Tiempo antes de iniciar la votación",
"autoStartTimer": "Cuenta regresiva para inicio automático",
"waitAutoStart": "Inicio automático después de",
"playerAutoStart": "Jugadores mínimos para inicio automático",
"mapVoteDuration": "Duración de la votación de mapa",
"enableJoinMessages": "Activar mensajes de bienvenida",
"messagePerPlayerNum": "Mensaje cada X jugadores que entren",
"tabGroupMisc": "Varios",
@@ -45,7 +66,8 @@
"slashLastGameCmd": "Quién puede usar /l y /aur",
"slashKickCmd": "Quién puede usar /kick y /ckick",
"slashBanCmd": "Quién puede usar /ban y /cban",
"slashEndMeetingCmd": "Quién puede usar /endmeeting",
"slashEndMeetingCmd": "Quién puede usar /endmeeting y /seeker",
"slashMapAndSeekerCmd": "Quién puede usar /seeker y /mapvote",
"slashStartAndEndGameCmd": "Quién puede usar /startgame y /endgame",
"tabGroupCrewmate": "Roles de tripulante",
"tabGroupNeutral": "Roles neutrales",
@@ -53,10 +75,13 @@
"tabGroupStandard": "Estándar",
"tabGroupHNS": "Escondite",
"numSeekers": "# Buscadores",
"seekers": "Buscadores: ",
"clearedSeekers": "Lista manual de buscadores borrada correctamente.",
"tabGroup0Kcd": "0 de enfriamiento para matar",
"noKcdSettingsOverride": "Actualizar configuración automáticamente",
"tabGroupSNS": "Shift and Seek",
"snsChatInGame": "Chat durante la partida (experimental)",
"snsChatInGameExtend": "Enviar info del modo al empezar la partida",
"snsSettingsOverride": "Actualizar configuración automáticamente",
"cantKillTime": "Después de fallar, no puede matar durante",
"misfiresToSuicide": "Suicidarse después de cierta cantidad de fallos",
@@ -149,7 +174,7 @@
"disableBuildSandcastle": "Desactivar Construir Castillo de Arena",
"disableCatchFish": "Desactivar Atrapar Peces",
"disableCollectSamples": "Desactivar Recolectar Muestras",
"disableCollectShells": "Desactivar Recolectar Caracoles",
"disableCollectShells": "Desactivar Recolectar conchas",
"disableCollectVegetables": "Desactivar Recolectar Vegetales",
"disableCrankGenerator": "Desactivar Activar Generador",
"disableExtractFuel": "Desactivar Extraer Combustible",
@@ -173,7 +198,7 @@
"disableChartCourse": "Desactivar Tarea Trazar Ruta",
"disableCleanO2Filter": "Desactivar Tarea Limpiar Filtro de O2",
"disableCleanVent": "Desactivar Tarea Limpiar Ventila",
"disableMonitorMushroom": "Desactivar monitorear hongo",
"disableMonitorMushroom": "Desactivar Tarea Monitorear Hongos",
"disableMonitorTree": "Desactivar Tarea Monitorizar Árbol",
"disablePrimeShields": "Desactivar Tarea Preparar Escudos",
"disableRecordTemperature": "Desactivar Tarea Registrar Temperatura",
@@ -195,15 +220,16 @@
"disableFuelEngines": "Desactivar Tarea Recargar Motores",
"disableSubmitScan": "Desactivar Tarea Enviar Escaneo",
"disableUploadData": "Desactivar Tarea Subir Datos",
"allCommandsFull": "<b>TODOS LOS COMANDOS:</b>\n\n<b>/help</b>\nMuestra este mensaje.\n<b>/aur, /socials</b>\nEnviar los enlaces sociales de Among Us Revamped.\n\n<b>/r, /gm</b>\nEnviar la descripción del modo actual o la lista de habilidades.\n<b>/l, /lastgame</b>\nEnviar la información del ganador anterior.\n\n<b>/0kc, /0killcooldown</b>\nEnviar la descripción del modo 0 de enfriamiento para matar.\n<b>/sns, /shiftandseek</b>\nEnviar la descripción del modo Shift and Seek.\n<b>/sp, /speedrun</b>\nEnviar la descripción del modo Speedrun.\n\n/<b>kick, /ban</b>\nExpulsa o bloquea a un jugador por nombre.\n<b>/ckick, /cban</b>\nExpulsa o bloquea a un jugador por color.\n\n<b>/vip /moderator /admin</b>\nAgrega a un jugador como VIP, moderador o administrador.\n<b>/removevip, /removemoderator, /removeadmin</b>\nElimina VIP, moderador o administrador de un jugador.\n\n<b>/eg, /endgame</b>\nTermina la partida actual.\n<b>/em, /endmeeting</b>\nTermina la reunión actual.\n<b>/s, /start</b>\nInicia la cuenta regresiva de la partida.\n\n<b>/t {template}</b>\nEnviar una plantilla de AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nCambia tu color; puede usarse para evitar límites.",
"allCommandsFull": "<b>TODOS LOS COMANDOS:</b>\n\n<b>/help</b>\nMuestra este mensaje.\n<b>/aur, /socials</b>\nEnviar los enlaces sociales de Among Us Revamped.\n\n<b>/r, /gm</b>\nEnviar la descripción del modo actual o la lista de habilidades.\n<b>/l, /lastgame</b>\nEnviar la información del ganador anterior.\n\n<b>/0kc, /0killcooldown</b>\nEnviar la descripción del modo 0 de enfriamiento para matar.\n<b>/sns, /shiftandseek</b>\nEnviar la descripción del modo Shift and Seek.\n<b>/sp, /speedrun</b>\nEnviar la descripción del modo Speedrun.\n\n/<b>kick, /ban</b>\nExpulsa o banea a un jugador por nombre.\n<b>/ckick, /cban</b>\nExpulsa o banea a un jugador por color.\n\n<b>/vip /moderator /admin</b>\nAgrega a un jugador como VIP, moderador o administrador.\n<b>/removevip, /removemoderator, /removeadmin</b>\nElimina VIP, moderador o administrador de un jugador.\n\n<b>/eg, /endgame</b>\nTermina la partida actual.\n<b>/em, /endmeeting</b>\nTermina la reunión actual.\n<b>/s, /start</b>\nInicia la cuenta regresiva de la partida.\n\n<b>/t {template}</b>\nEnviar una plantilla de AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nCambia tu color; puede usarse para evitar límites.",
"translationReloaded": "Tu archivo se reinició correctamente.\nPara aplicar todos los cambios, reinicia el juego.",
"templateWelcome": "# En este archivo puedes agregar plantillas, que sirven como alternativas fáciles de copiar y pegar.\n# Para crear una plantilla, escribe una nueva línea con el mismo formato que la plantilla de prueba de abajo.\n# Ten en cuenta que las plantillas no pueden tener más de 120 caracteres ni contener caracteres especiales. Si los tienen, te expulsarán.\n\ntest: esta es una plantilla de ejemplo. Escribe '/t test' para verla.\n\nwelcome: ¡Bienvenido! Esta sala usa Among Us Revamped {ModVersion} por MV. ¡Diviértete!",
"moderatorWelcome": "# En este archivo puedes agregar moderadores por código de amigo.\n# Si agregas a alguien, tendrá un nombre morado dentro del juego.\n# Ve a \"Configuración del sistema\" dentro del juego para personalizar los permisos de moderador. Abajo hay un ejemplo de código de amigo.\n\nfriendcode#0000",
"vipWelcome": "# En este archivo puedes agregar VIPs por código de amigo.\n# Si agregas a alguien, tendrá un nombre amarillo dentro del juego.\n# Ve a \"Configuración del sistema\" dentro del juego para personalizar los permisos de VIP. Abajo hay un ejemplo de código de amigo.\n\nfriendcode#0000\n",
"adminWelcome": "# En este archivo puedes agregar administradores por código de amigo.\n# Si agregas a alguien, tendrá un nombre rojo dentro del juego.\n# Ve a \"Configuración del sistema\" dentro del juego para personalizar los permisos de administrador. Abajo hay un ejemplo de código de amigo.\n\nfriendcode#0000\n",
"banlistWelcome": "# En este archivo puedes bloquear a jugadores en tu sala por código de amigo.\n# Bloquear a alguien dentro del juego también lo agregará aquí automáticamente. Abajo hay un ejemplo de código de amigo.\n\nfriendcode#0000\n",
"banlistWelcome": "# En este archivo puedes banear jugadores de tu sala por código de amigo.\n# Banear a alguien dentro del juego también lo agregará aquí automáticamente. Abajo hay un ejemplo de código de amigo.\n\nfriendcode#0000\n",
"banwordWelcome": "# En este archivo puedes establecer palabras prohibidas para expulsar automáticamente a cualquiera que las envíe dentro del juego.\n# Asegúrate de separar las palabras usando líneas nuevas.",
"bannameWelcome": "# En este archivo puedes establecer nombres prohibidos para expulsar automáticamente a cualquiera que los use dentro del juego.\n# Asegúrate de separar los nombres usando líneas nuevas.",
"startWordsWelcome": "# En este archivo puedes configurar las palabras detectadas para 'Expulsar jugadores que digan start'.\n# 'Modo de detección estricto' DESACTIVADO = los mensajes deben coincidir exactamente con las palabras.\n# 'Modo de detección estricto' ACTIVADO = los mensajes solo deben contener las palabras.\n# También puedes agregar palabras no relacionadas para detectarlas solo en la sala.\n\nstart\nbegin\ncommence",
"noGameEndWarning": "ADVERTENCIA: Sin fin de partida está activado",
"tooLongTemplate": "Tu plantilla tiene más de 120 caracteres y te expulsaría al enviarla. Reduce su longitud.",
"vipAdd": "Se agregó correctamente a {0} como VIP.",
@@ -219,14 +245,19 @@
"SrDesc": "Enviar la descripción del modo de juego Speedrun.",
"egDesc": "Termina la partida actual.",
"emDesc": "Termina la reunión actual.",
"seekerDesc": "Marca al jugador como buscador en HnS.",
"seekersDesc": "Muestra los buscadores elegidos manualmente.",
"clearSeekerDesc": "Borra la lista manual de buscadores.",
"mapVoteDesc": "Inicia una votación entre los 5 mapas principales.",
"allMapVoteDesc": "Inicia una votación entre los 6 mapas, incluido Eht Dleks.",
"aurDesc": "Envía los enlaces sociales de Among Us Revamped.",
"sDesc": "Inicia la cuenta regresiva de la partida.",
"rDesc": "/r envía las habilidades activas o el modo de juego actual.",
"rolesDesc": "Enviar el resumen de todas las habilidades/modo de juego.",
"kickDesc": "Expulsa a un jugador por nombre.",
"ckickDesc": "Expulsa a un jugador por color.",
"banDesc": "Bloquea a un jugador por nombre.",
"cbanDesc": "Bloquea a un jugador por color.",
"banDesc": "Banea a un jugador por nombre.",
"cbanDesc": "Banea a un jugador por color.",
"dumpDesc": "Copia LogOutput en un archivo separado.",
"colDesc": "Cambia tu color.",
"reloadDesc": "Recarga el archivo de idioma.",
@@ -239,19 +270,41 @@
"lastgameDesc": "Enviar información de la última partida.",
"templateDesc": "Enviar una plantilla especificada de AUR-DATA/templates.txt.",
"banWordKick": "{0} fue expulsado porque envió una palabra prohibida {1} veces",
"banWordBan": "{0} fue baneado por escribir una palabra de DeniedWords.txt {1} veces",
"startWordKick": "{0} fue expulsado por escribir una palabra de StartWords.txt {1} veces",
"startWordBan": "{0} fue baneado por escribir una palabra de StartWords.txt {1} veces",
"afkNotify": "{0} lleva {1}s AFK",
"afkKick": "{0} lleva {1}s AFK, expulsando",
"afkBan": "{0} lleva {1}s AFK, baneando",
"rehostSuccess": "Sala recreada correctamente",
"kick": "Expulsar",
"ban": "Banear",
"notifyMe": "Avisarme",
"pluginWarning": "<color=red><size=5><b>ADVERTENCIA:</color></b></size>\n<size=3><b>Se han detectado 2 o más plugins.</size></b>\nAmong Us Revamped no es compatible con la mayoría de mods.\nSi encuentras errores, probablemente se deban a incompatibilidad.",
"systemSettings": "Configuración del sistema",
"gameplaySettings": "Configuración de la partida",
"gamemodeSettings": "Configuración del modo de juego",
"moderationSettings": "Moderación",
"systemSettingsDesc": "Ajustes de calidad para mejorar la comodidad y facilitar las pruebas.",
"gameplaySettingsDesc": "Ajustes de la partida para mejorar la experiencia de juego.",
"gamemodeSettingsDesc": "Ajustes específicos para determinados modos de juego.",
"moderationSettingsDesc": "Ajustes para controlar toxicidad y mal comportamiento en la sala.",
"everyone": "Todos",
"vipAndAbove": "<color=yellow>VIP</color> o superior",
"moderatorAndAbove": "<color=purple>Moderador</color> o superior",
"admin": "<color=red>Administrador</color>",
"onlyYou": "Solo tú"
"onlyYou": "Solo tú",
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
"snsImpostorCanVent": "Los impostores pueden usar conductos",
"modeVoteDuration": "Duración de la votación de modo de juego",
"snsChatInGameExtendTwo": "Enviar información ampliada al iniciar la partida",
"snsChatInGameFast": "Reunión más rápida (experimental+)",
"shieldFirstDeath": " Proteger al primer jugador que murió",
"shieldFirstDeathDuration": "Duración de la protección",
"snsTwoDesc": "Enviar la descripción ampliada de Shift and Seek.",
"modeVoteDesc": "Inicia una votación entre todos los modos de juego.",
"automaticModePoll": "/gmvote automático al volver a la sala"
}