Compare commits

...
10 Commits
Author SHA1 Message Date
MV 688998fc47 Yes 2026-10-19 20:27:52 +02:00
Ape dfa6836d70 Merge branch 'main' of https://github.com/ApeMV/AmongUsRevamped 2026-10-10 10:28:34 +02:00
Ape 5afb0bcb20 Fix some small issues 2026-10-10 10:26:16 +02:00
MV 645ff86660 v2.2.1 2026-10-08 10:20:49 +02:00
Ape 11fb96ccc2 GA fixes, disable peace period, bugfixes 2026-10-08 10:19:58 +02:00
MV ae1f4c7290 Forgot this 2026-10-02 08:28:45 +02:00
Ape 744da1b726 Suicide option, fix vent issues 2026-09-18 20:08:31 +02:00
Ape 00e2a384c9 Not even gonna try summing this up 2026-09-11 23:00:09 +02:00
Ape 7dafbcf479 Customize Sabotages, fixes, anticheat upgrades 2026-09-05 14:58:27 +02:00
Ape 2e9d32b50d I think this should work 2026-08-30 19:25:14 +02:00
35 changed files with 1455 additions and 488 deletions

No files matched your search

+78
View File
@@ -0,0 +1,78 @@
name: Bug Report
description: Report a bug/crash for Among Us Revamped.
labels: ["type: bug"]
body:
- type: markdown
attributes:
value: |
**Attachments**
- Please upload logs to help diagnose the issue (retrieved using /dump command).
- If applicable, include screenshots or videos to provide more context.
- type: textarea
id: description
attributes:
label: Description
description: Describe the bug in detail.
placeholder: |
A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: Describe what you expected to happen.
placeholder: |
A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to Reproduce
description: Provide a minimal set of steps to reproduce the issue.
placeholder: |
1. Step one
2. Step two
3. Step three
validations:
required: true
- type: dropdown
id: game-platform
attributes:
label: Game Platform
description: Select the platform you are using Among Us on.
options:
- Steam
- Itch.io
- Epic Games Store
- Microsoft Store
- Xbox App
validations:
required: true
- type: input
id: other-mods
attributes:
label: Other Mods
description: List any other Among Us mods you are using (e.g., AUnlocker v1.3.1).
validations:
required: false
- type: checkboxes
id: verification
attributes:
label: Verification
description: Make sure that you have checked the following before submitting your bug report
options:
- label: I confirm that this issue does not occur in the vanilla game (without Among Us Revamped or BepInEx installed).
required: true
- label: I confirm that I have searched existing issues and this is not a duplicate.
required: true
- label: I confirm that I am using the latest version of Among Us Revamped and Among Us.
required: true
+1
View File
@@ -0,0 +1 @@
blank_issues_enabled: false
-26
View File
@@ -1,26 +0,0 @@
---
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:
+29
View File
@@ -0,0 +1,29 @@
name: Other
description: For anything outside the main categories
labels: ["type: other"]
body:
- type: markdown
attributes:
value: |
**Attachments**
- Please don't use this issue category to bypass requirements.
- type: textarea
id: otherdescription
attributes:
label: Description
description: Describe your issue in detail.
placeholder: |
A clear and concise description of your issue.
validations:
required: true
- type: checkboxes
id: otherverification
attributes:
label: Verification
description: Make sure that you have checked the following before submitting your issue
options:
- label: I confirm that this issue does not fall under any other categories.
required: true
+42
View File
@@ -0,0 +1,42 @@
name: Suggestion
description: Create a suggestion for Among Us Revamped
labels: ["type: suggestion"]
body:
- type: markdown
attributes:
value: |
**Note**
- Please share as much detail as you can.
- Please consider that Among Us Revamped is a Host-Only mod.
- type: textarea
id: suggestiondescription
attributes:
label: Description
description: Describe the suggestion in detail.
placeholder: |
A clear and concise description of what the suggestion is.
validations:
required: true
- type: textarea
id: suggestionrelevancy
attributes:
label: Reason
description: Describe what makes the suggestion relevant.
placeholder: |
A clear and concise description of what makes the suggestion relevant.
validations:
required: true
- type: checkboxes
id: suggestionverification
attributes:
label: Verification
description: Make sure that you have checked the following before submitting your suggestion
options:
- label: I confirm that this suggestion is not a previously denied duplicate.
required: true
- label: I confirm that this feature does not exist yet.
required: true
+32
View File
@@ -0,0 +1,32 @@
name: Support
description: Ask support for Among Us Revamped
labels: ["type: support"]
body:
- type: markdown
attributes:
value: |
**Attachments**
- Please join our Discord for support if possible, as giving it is easier there.
- Please only ask support related to Among Us Revamped.
- type: textarea
id: supportdescription
attributes:
label: Description
description: Describe the question in detail.
placeholder: |
A clear and concise description of what the question is.
validations:
required: true
- type: checkboxes
id: supportverification
attributes:
label: Verification
description: Make sure that you have checked the following before submitting your question
options:
- label: I confirm that my question isn't answered on the GitHub main page.
required: true
- label: I confirm that I have searched for answers before asking here.
required: true
-17
View File
@@ -1,17 +0,0 @@
### 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:
@@ -0,0 +1,21 @@
<!--- Please provide a general summary of your changes in the Title above -->
### Requirements
<!--- Do not post a pull request if any requirement is not met. -->
* [ ] I confirm this PR was not generated by AI
* [ ] I confirm this PR has been tested and functions as intended
### Classification
<!--- Put an `x` in all the boxes that apply -->
* [ ] Bug Fix
* [ ] New Feature
* [ ] Refactor/Optimization
* [ ] Other
## Description
<!--- Describe your changes in detail. You can also include screenshots here. -->
+5 -3
View File
@@ -37,14 +37,15 @@ public partial class Main : BasePlugin
public static ConfigEntry<bool> DisableInfoWhenDead { get; private set; }
public static ConfigEntry<bool> DisableCommandHelper { get; private set; }
public static ConfigEntry<bool> DisableCompatibilityWarning { get; private set; }
public static ConfigEntry<bool> DisableChatModifier { get; private set; }
public static NormalGameOptionsV11 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static NormalGameOptionsV12 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV12 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static MapNames CurrentMap => (MapNames)NormalOptions.MapId;
public static bool HasArgumentException;
public static string CredentialsText;
public const string ModVersion = "v2.0.3";
public const string ModVersion = "v2.2.2";
public static float GameTimer;
public static float AfkTimer;
@@ -96,6 +97,7 @@ public partial class Main : BasePlugin
DisableInfoWhenDead = Config.Bind("Client Options", "Disable Task/Kill View", false);
DisableCommandHelper = Config.Bind("Client Options", "Disable Command Helper", false);
DisableCompatibilityWarning = Config.Bind("Client Options", "Disable Compatibility Warning", false);
DisableChatModifier = Config.Bind("Client Options", "Disable Chat Modifications", false);
Translator.Init();
Translator.Reload();
+1 -1
View File
@@ -18,7 +18,7 @@
<ItemGroup>
<PackageReference Include="BepInEx.Unity.IL2CPP" Version="6.0.0-be.735" ExcludeAssets="runtime;native" />
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.9.29" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Android" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
<PackageReference Include="BepInEx.AutoPlugin" Version="1.1.0" PrivateAssets="all" />
+2 -1
View File
@@ -287,7 +287,8 @@ public static class BanManager
Dictionary<string, string> variables = new()
{
{ "ModVersion", Main.ModVersion },
{ "\\n", Environment.NewLine }
{ "\\n", Environment.NewLine },
{ "FirstDeath", NormalGameEndChecker.firstDeath }
};
foreach (var kvp in variables)
+4 -2
View File
@@ -83,8 +83,10 @@ internal static class CommandHelper
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 }
new Cmd { Name = new[] { "/gmvote" }, Prompt = "/gmvote", Description = Translator.Get("modeVoteDesc"), HasVariable = false },
new Cmd { Name = new[] { "/private" }, Prompt = "/private", Description = Translator.Get("privateDesc"), HasVariable = false },
new Cmd { Name = new[] { "/public" }, Prompt = "/public", Description = Translator.Get("publicDesc"), HasVariable = false }
};
[HarmonyPostfix]
+147 -15
View File
@@ -61,6 +61,11 @@ namespace AmongUsRevamped
Translator.Get("kick"), Translator.Get("ban"), Translator.Get("notifyMe")
};
public static readonly string[] cheatingPenalties =
{
Translator.Get("ban"), Translator.Get("kick"), Translator.Get("notifyMe")
};
//System
@@ -102,8 +107,6 @@ namespace AmongUsRevamped
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;
@@ -123,12 +126,37 @@ namespace AmongUsRevamped
public static OptionItem TabGroupMisc;
public static OptionItem MapVoteDuration;
public static OptionItem CustomizeMapVote;
public static OptionItem IncludeSkeld;
public static OptionItem IncludeMira;
public static OptionItem IncludePolus;
public static OptionItem IncludeAirship;
public static OptionItem IncludeFungle;
public static OptionItem IncludeDleks;
public static OptionItem ModeVoteDuration;
public static OptionItem CustomizeModeVote;
public static OptionItem IncludeStandard;
public static OptionItem IncludeNoKillCooldown;
public static OptionItem IncludeShiftAndSeek;
public static OptionItem IncludePoofAndSeek;
public static OptionItem IncludeSpeedrun;
public static OptionItem StartCountdown;
public static OptionItem ColorCommandLevel;
public static OptionItem AllowFortegreen;
public static OptionItem NoGameEnd;
public static OptionItem TabGroupAnticheat;
public static OptionItem HackingPunishment;
public static OptionItem DetectBadRPC;
public static OptionItem DetectBadSabotage;
public static OptionItem DetectBadVent;
public static OptionItem DetectBadTask;
public static OptionItem DetectBadKill;
public static OptionItem DetectBadAnimation;
public static OptionItem DetectBadMeeting;
public static OptionItem TabGroupAccess;
public static OptionItem SlashColorCmd;
public static OptionItem SlashRolesAndGamemodeCmd;
@@ -151,10 +179,24 @@ namespace AmongUsRevamped
public static OptionItem DisableMushroomMixup;
public static OptionItem DisableCloseDoor;
public static OptionItem TabGroupCustomizeSabotages;
public static OptionItem CustomizeSabotages;
public static OptionItem SabotageCooldown;
public static OptionItem SkeldReactorDuration;
public static OptionItem SkeldO2Duration;
public static OptionItem MiraReactorDuration;
public static OptionItem MiraO2Duration;
public static OptionItem PolusReactorDuration;
public static OptionItem AirshipReactorDuration;
public static OptionItem FungleReactorDuration;
public static OptionItem FungleMushroomMixupDuration;
public static OptionItem TabGroupGameplayGeneral;
public static OptionItem ShieldFirstDeath;
public static OptionItem ShieldFirstDeathDuration;
public static OptionItem DisableAnnoyingMeetingCalls;
public static OptionItem TabGroupGameplayMapModifications;
public static OptionItem ChangeDecontaminationTime;
public static OptionItem DecontaminationTimeOnMiraHQ;
public static OptionItem DecontaminationDoorOpenTimeOnMiraHQ;
@@ -295,6 +337,9 @@ namespace AmongUsRevamped
public static OptionItem TabGroupHNS;
public static OptionItem NumSeekers;
public static OptionItem TabGroupNoKcd;
public static OptionItem DisablePeacePeriod;
public static OptionItem TabGroupSNS;
public static OptionItem SNSChatInGame;
public static OptionItem SNSChatInGameExtend;
@@ -310,6 +355,7 @@ namespace AmongUsRevamped
public static OptionItem SNSDisableMushroomMixup;
public static OptionItem SNSDisableCloseDoor;
public static OptionItem SNSImpostorsCanVent;
public static OptionItem SNSSuicideMode;
public static OptionItem TabGroupSpeedrun;
public static OptionItem GameAutoEndsAfter;
@@ -412,18 +458,14 @@ namespace AmongUsRevamped
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)
AutomaticModePoll = BooleanOptionItem.Create(60156, Translator.Get("automaticModePoll"), false, TabGroup.SystemSettings, false);
TimeBeforeModePoll = IntegerOptionItem.Create(60157, Translator.Get("timeBeforeMapPoll"), new(10, 300, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(AutomaticModePoll);
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)
AutoStartTimer = IntegerOptionItem.Create(64426, Translator.Get("autoStartTimer"), new(2, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
WaitAutoStart = IntegerOptionItem.Create(64427, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
@@ -445,19 +487,64 @@ namespace AmongUsRevamped
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);
CustomizeMapVote = BooleanOptionItem.Create(60380, Translator.Get("customizeMapVote"), false, TabGroup.SystemSettings, false);
IncludeSkeld = BooleanOptionItem.Create(60381, Translator.Get("includeSkeld"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeMira = BooleanOptionItem.Create(60382, Translator.Get("includeMira"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludePolus = BooleanOptionItem.Create(60383, Translator.Get("includePolus"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeAirship = BooleanOptionItem.Create(60384, Translator.Get("includeAirship"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeFungle = BooleanOptionItem.Create(60385, Translator.Get("includeFungle"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
IncludeDleks = BooleanOptionItem.Create(60386, Translator.Get("includeDleks"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeMapVote);
ModeVoteDuration = IntegerOptionItem.Create(60389, Translator.Get("modeVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds);
CustomizeModeVote = BooleanOptionItem.Create(60390, Translator.Get("customizeModeVote"), false, TabGroup.SystemSettings, false);
IncludeStandard = BooleanOptionItem.Create(60391, Translator.Get("includeStandard"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeNoKillCooldown = BooleanOptionItem.Create(60392, Translator.Get("includeNoKillCooldown"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeShiftAndSeek = BooleanOptionItem.Create(60393, Translator.Get("includeShiftAndSeek"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludePoofAndSeek = BooleanOptionItem.Create(60394, Translator.Get("includePoofAndSeek"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
IncludeSpeedrun = BooleanOptionItem.Create(60395, Translator.Get("includeSpeedrun"), true, TabGroup.SystemSettings, false)
.SetParent(CustomizeModeVote);
StartCountdown = IntegerOptionItem.Create(60396, Translator.Get("startCountdown"), new(2, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(Color.red);
ModeVoteDuration = IntegerOptionItem.Create(60380, Translator.Get("modeVoteDuration"), new(5, 60, 5), 20, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
AllowFortegreen = BooleanOptionItem.Create(60397, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false)
.SetColor(Color.red);
StartCountdown = IntegerOptionItem.Create(60381, Translator.Get("startCountdown"), new(1, 5, 1), 5, TabGroup.SystemSettings, false)
.SetValueFormat(OptionFormat.Seconds)
NoGameEnd = BooleanOptionItem.Create(60398, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false)
.SetColor(Color.red);
AllowFortegreen = BooleanOptionItem.Create(60382, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false)
TabGroupAnticheat = TextOptionItem.Create(60400, Translator.Get("tabGroupAnticheat"), TabGroup.SystemSettings)
.SetColor(Color.yellow);
HackingPunishment = StringOptionItem.Create(60401, Translator.Get("hackingPunishment"), cheatingPenalties, 0, TabGroup.SystemSettings, false)
.SetColor(Color.red);
NoGameEnd = BooleanOptionItem.Create(60383, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false)
DetectBadRPC = BooleanOptionItem.Create(60402, Translator.Get("detectBadRPC"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadSabotage = BooleanOptionItem.Create(60403, Translator.Get("detectBadSabotage"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadVent = BooleanOptionItem.Create(60404, Translator.Get("detectBadVent"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadTask = BooleanOptionItem.Create(60405, Translator.Get("detectBadTask"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadKill = BooleanOptionItem.Create(60406, Translator.Get("detectBadKill"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadAnimation = BooleanOptionItem.Create(60407, Translator.Get("detectBadAnimation"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
DetectBadMeeting = BooleanOptionItem.Create(60408, Translator.Get("detectBadMeeting"), true, TabGroup.SystemSettings, false)
.SetColor(Color.red);
// Gamemode Settings
@@ -466,6 +553,10 @@ namespace AmongUsRevamped
NumSeekers = IntegerOptionItem.Create(70001, Translator.Get("numSeekers"), new(1, 15, 1), 1, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Level);
TabGroupNoKcd = TextOptionItem.Create(70010, Translator.Get("tabGroupNoKcd"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
DisablePeacePeriod = BooleanOptionItem.Create(70011, Translator.Get("disablePeacePeriod"), false, TabGroup.GamemodeSettings, false);
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
SNSChatInGame = BooleanOptionItem.Create(70051, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
@@ -500,6 +591,7 @@ namespace AmongUsRevamped
SNSDisableCloseDoor = BooleanOptionItem.Create(70064, Translator.Get("snsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
.SetColor(Color.red);
SNSImpostorsCanVent = BooleanOptionItem.Create(70065, Translator.Get("snsImpostorCanVent"), true, TabGroup.GamemodeSettings, false);
SNSSuicideMode = BooleanOptionItem.Create(70066, Translator.Get("snsSuicideMode"), false, TabGroup.GamemodeSettings, false);
TabGroupSpeedrun = TextOptionItem.Create(70076, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
@@ -570,6 +662,44 @@ namespace AmongUsRevamped
DisableCloseDoor = BooleanOptionItem.Create(60463, Translator.Get("disableCloseDoor"), false, TabGroup.ModSettings, false)
.SetColor(Color.red);
TabGroupCustomizeSabotages = TextOptionItem.Create(60500, Translator.Get("tabGroupCustomizeSabotages"), TabGroup.ModSettings)
.SetColor(Color.blue);
CustomizeSabotages = BooleanOptionItem.Create(60501, Translator.Get("customizeSabotages"), false, TabGroup.ModSettings, false);
SabotageCooldown = IntegerOptionItem.Create(60502, Translator.Get("sabotageCooldown"), new(5, 60, 5), 30, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
SkeldReactorDuration = IntegerOptionItem.Create(60503, Translator.Get("skeldReactorDuration"), new(15, 60, 5), 30, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
SkeldO2Duration = IntegerOptionItem.Create(60504, Translator.Get("skeldO2Duration"), new(15, 60, 5), 30, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
MiraReactorDuration = IntegerOptionItem.Create(60505, Translator.Get("miraReactorDuration"), new(15, 90, 5), 45, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
MiraO2Duration = IntegerOptionItem.Create(60506, Translator.Get("miraO2Duration"), new(15, 90, 5), 45, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
PolusReactorDuration = IntegerOptionItem.Create(60507, Translator.Get("polusReactorDuration"), new(20, 90, 5), 60, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
AirshipReactorDuration = IntegerOptionItem.Create(60508, Translator.Get("airshipReactorDuration"), new(30, 90, 5), 90, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
FungleReactorDuration = IntegerOptionItem.Create(60509, Translator.Get("fungleReactorDuration"), new(15, 90, 5), 60, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
FungleMushroomMixupDuration = IntegerOptionItem.Create(60510, Translator.Get("fungleMushroomMixupDuration"), new(5, 30, 5), 10, TabGroup.ModSettings, false)
.SetValueFormat(OptionFormat.Seconds)
.SetParent(CustomizeSabotages);
TabGroupGameplayGeneral = TextOptionItem.Create(60564, Translator.Get("tabGroupGameplayGeneral"), TabGroup.ModSettings)
.SetColor(Color.blue);
ShieldFirstDeath = BooleanOptionItem.Create(60565, Translator.Get("shieldFirstDeath"), false, TabGroup.ModSettings, false);
@@ -578,6 +708,8 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Seconds);
DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60567, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false);
TabGroupGameplayMapModifications = TextOptionItem.Create(60549, Translator.Get("tabGroupGameplayMapModifications"), TabGroup.ModSettings)
.SetColor(Color.blue);
ChangeDecontaminationTime = BooleanOptionItem.Create(60550, Translator.Get("changeDecontaminationTime"), false, TabGroup.ModSettings, false);
DecontaminationTimeOnMiraHQ = FloatOptionItem.Create(60551, Translator.Get("decontaminationTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
.SetParent(ChangeDecontaminationTime)
+119 -66
View File
@@ -8,23 +8,13 @@ internal class EACR
{
public static bool PlayerControlReceiveRpc(PlayerControl pc, byte callId, MessageReader reader)
{
if (!AmongUsClient.Instance.AmHost) return false;
if (pc == null || reader == null) return false;
if (!AmongUsClient.Instance.AmHost || pc == null || reader == null) return false;
try
{
MessageReader sr = MessageReader.Get(reader);
var rpc = (RpcCalls)callId;
switch (rpc)
{
case RpcCalls.StartMeeting:
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for being calling an invalid meeting (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for being calling an invalid meeting (cheating)", "EACR");
return true;
}
}
switch (callId)
{
case 101: // Aum Chat
@@ -38,9 +28,7 @@ internal class EACR
if (!flag)
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for AUM chat CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for AUM chat CallId (cheating)", "EACR");
RPCCheat(pc, "Among Us Menu Chat");
return true;
}
}
@@ -56,9 +44,7 @@ internal class EACR
if (aumid == pc.PlayerId)
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for AUM CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for AUM CallId (cheating)", "EACR");
RPCCheat(pc, "Among Us Menu");
return true;
}
}
@@ -78,9 +64,7 @@ internal class EACR
if (!flag)
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for KN chat CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for KN chat CallId (cheating)", "EACR");
RPCCheat(pc, "KillNetwork Chat");
return true;
}
}
@@ -92,22 +76,53 @@ internal class EACR
case 250: // KN
if (sr.BytesRemaining == 0)
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for KN CallId (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for KN CallId (cheating)", "EACR");
RPCCheat(pc, "KillNetwork");
return true;
}
break;
case unchecked((byte)420): // 164 Sicko
if (sr.BytesRemaining == 0)
try
{
AmongUsClient.Instance.KickPlayer(pc.Data.ClientId, true);
Logger.SendInGame($"{pc.Data.PlayerName} was banned for Sickomenu RPC (cheating)");
Logger.Info($" {pc.Data.PlayerName} was banned for Sickomenu RPC (cheating)", "EACR");
RPCCheat(pc, "SickoMenu");
return true;
}
catch
{
}
break;
}
case 202: // SMC
try
{
RPCCheat(pc, "SlopMenuCrew");
return true;
}
catch
{
}
break;
case 201: // SMC Chat
try
{
var firstString = sr.ReadString();
var secondString = sr.ReadString();
sr.ReadInt32();
var flag = string.IsNullOrEmpty(firstString) && string.IsNullOrEmpty(secondString);
if (!flag)
{
RPCCheat(pc, "SlopMenuCrew Chat");
return true;
}
}
catch
{
}
break;
}
}
catch (Exception e)
{
@@ -115,6 +130,7 @@ internal class EACR
}
return false;
}
public static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, byte amount)
{
var Mapid = Utils.GetActiveMapId();
@@ -132,94 +148,131 @@ internal class EACR
if (systemType == SystemTypes.Sabotage)
{
if (!player.Data.Role.IsImpostor && !player.isNew)
if (!player.Data.Role.IsImpostor)
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
Logger.SendInGame($"{player.Data.PlayerName} was banned for invalid sabotage (cheating)");
Logger.Info($" {player.Data.PlayerName} was banned for invalid sabotage", "EACR");
SabotageCheat(player);
}
}
else if (systemType == SystemTypes.LifeSupp)
{
if (Mapid != 0 && Mapid != 1 && Mapid != 3) goto YesCheat;
else if (amount != 64 && amount != 65) goto YesCheat;
if (Mapid != 0 && Mapid != 1 && Mapid != 3) SabotageCheat(player);
else if (amount != 64 && amount != 65) SabotageCheat(player);
}
else if (systemType == SystemTypes.Comms)
{
if (amount == 0)
{
if (Mapid == 1 || Mapid == 5) goto YesCheat;
if (Mapid == 1 || Mapid == 5) SabotageCheat(player);
}
else if (amount == 64 || amount == 65 || amount == 32 || amount == 33 || amount == 16 || amount == 17)
{
if (!(Mapid == 1 || Mapid == 5)) goto YesCheat;
if (!(Mapid == 1 || Mapid == 5)) SabotageCheat(player);
}
else goto YesCheat;
else SabotageCheat(player);
}
else if (systemType == SystemTypes.Electrical)
{
if (Mapid == 5) goto YesCheat;
if (amount >= 5)
{
goto YesCheat;
}
if (Mapid == 5 || amount >= 5) SabotageCheat(player);
}
else if (systemType == SystemTypes.Laboratory)
{
if (Mapid != 2) goto YesCheat;
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) goto YesCheat;
if (Mapid != 2) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) SabotageCheat(player);
}
else if (systemType == SystemTypes.Reactor)
{
if (Mapid == 2 || Mapid == 4) goto YesCheat;
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) goto YesCheat;
if (Mapid == 2 || Mapid == 4) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 32 || amount == 33)) SabotageCheat(player);
}
else if (systemType == SystemTypes.HeliSabotage)
{
if (Mapid != 4) goto YesCheat;
else if (!(amount == 64 || amount == 65 || amount == 16 || amount == 17 || amount == 32 || amount == 33)) goto YesCheat;
if (Mapid != 4) SabotageCheat(player);
else if (!(amount == 64 || amount == 65 || amount == 16 || amount == 17 || amount == 32 || amount == 33)) SabotageCheat(player);
}
else if (systemType == SystemTypes.MushroomMixupSabotage)
{
goto YesCheat;
SabotageCheat(player);
}
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");
SabotageCheat(player);
return true;
}
return false;
YesCheat:
}
public static void RPCCheat(PlayerControl player, string input)
{
if (Options.DetectBadRPC.GetBool())
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
Logger.SendInGame($"{player.Data.PlayerName} was banned for an invalid sabotage (cheating)");
Logger.Info($" {player.Data.PlayerName} was banned for an invalid sabotage", "EACR");
return true;
HackingPunishment(player, $"{player.Data.PlayerName} Sent invalid RPC: {input} (hacking)");
}
}
public static void SabotageCheat(PlayerControl player)
{
if (Options.DetectBadSabotage.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly sabotaged (hacking)");
}
}
public static void VentCheat(PlayerControl player, Vent __instance)
{
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");
if (Options.DetectBadVent.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly vented (hacking)");
}
}
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");
if (Options.DetectBadAnimation.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} sent an invalid animation (hacking)");
}
}
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");
if (Options.DetectBadTask.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly completed a task (hacking)");
}
}
public static void MurderCheat(PlayerControl player)
{
if (Options.DetectBadKill.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly murdered a player (hacking)");
}
}
public static void MeetingCheat(PlayerControl player)
{
if (Options.DetectBadMeeting.GetBool())
{
HackingPunishment(player, $"{player.Data.PlayerName} invalidly called a meeting (hacking)");
}
}
public static void HackingPunishment(PlayerControl player, string input)
{
if (Options.HackingPunishment.GetValue() == 0)
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, true);
}
if (Options.HackingPunishment.GetValue() == 1)
{
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, false);
}
Logger.SendInGame($"{input}");
Logger.Info($" {input}", "EACR");
}
}
+1 -1
View File
@@ -119,7 +119,7 @@ public static class FixedUpdate
}
}
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !Utils.IsLobby)
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !Utils.IsLobby && !Options.SNSSuicideMode.GetBool())
{
foreach (var p in PlayerControl.AllPlayerControls)
{
+10
View File
@@ -8,6 +8,7 @@ namespace AmongUsRevamped;
public static class OptionManager
{
private static float OldKillCooldown;
private static float OldGuardianCooldown;
public static void SyncGameOptions()
{
@@ -31,6 +32,10 @@ public static class OptionManager
if (!AmongUsClient.Instance.AmHost) return;
OldKillCooldown = Main.NormalOptions.KillCooldown;
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
OldGuardianCooldown = GuardianAngelOptions.ProtectionDurationSeconds;
}
}
public static void RestoreOptions()
@@ -42,6 +47,11 @@ public static class OptionManager
Main.NormalOptions.KillCooldown = OldKillCooldown;
Logger.Info("Force overrided Kill Cooldown back to original", "RestoreOptions");
}
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions) && GuardianAngelOptions.ProtectionDurationSeconds != OldGuardianCooldown)
{
GuardianAngelOptions.ProtectionDurationSeconds = OldGuardianCooldown;
Logger.Info("Force overrided Guardian Angel Cooldown back to original", "RestoreOptions");
}
SyncGameOptions();
}
+106 -31
View File
@@ -605,25 +605,30 @@ public static class Utils
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)
public static void MapVote(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);
string voteMessage = "A map vote is active!\n\n";
if (!Options.CustomizeMapVote.GetBool()) voteMessage += "A: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Dleks\n";
if (Options.IncludeSkeld.GetBool()) voteMessage += "A: Skeld\n";
if (Options.IncludeMira.GetBool()) voteMessage += "B: Mira\n";
if (Options.IncludePolus.GetBool()) voteMessage += "C: Polus\n";
if (Options.IncludeAirship.GetBool()) voteMessage += "D: Airship\n";
if (Options.IncludeFungle.GetBool()) voteMessage += "E: Fungle\n";
if (Options.IncludeDleks.GetBool()) voteMessage += "F: Dleks\n";
voteMessage += "\nType /vote 'letter' to vote.";
if (dleks && !moderator) Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "A map vote is active!\n\nA: Skeld\nB: Mira\nC: Polus\nD: Airship\nE: Fungle\nF: Eht Dleks\n\nType /vote 'letter' to vote.", "", false);
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);
if (moderator) Utils.ModeratorChatCommand(voteMessage, "", false);
else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, voteMessage, "", false);
new LateTask(() =>
{
int highest = skeldVotes;
string winner = "Skeld";
int highest = -1;
string winner = "";
byte mapId = 0;
bool tie = false;
@@ -642,16 +647,47 @@ public static class Utils
}
}
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);
if (!Options.CustomizeMapVote.GetBool())
{
Check(skeldVotes, "Skeld", 0);
Check(miraVotes, "Mira", 1);
Check(polusVotes, "Polus", 2);
Check(airshipVotes, "Airship", 4);
Check(fungleVotes, "Fungle", 5);
Check(dleksVotes, "Dleks", 3);
}
else
{
if (Options.IncludeSkeld.GetBool()) Check(skeldVotes, "Skeld", 0);
if (Options.IncludeMira.GetBool()) Check(miraVotes, "Mira", 1);
if (Options.IncludePolus.GetBool()) Check(polusVotes, "Polus", 2);
if (Options.IncludeAirship.GetBool()) Check(airshipVotes, "Airship", 4);
if (Options.IncludeFungle.GetBool()) Check(fungleVotes, "Fungle", 5);
if (Options.IncludeDleks.GetBool()) Check(dleksVotes, "Dleks", 3);
}
string voteResults = $"Skeld: {skeldVotes}\n" + $"Mira: {miraVotes}\n" + $"Polus: {polusVotes}\n" + $"Airship: {airshipVotes}\n" + $"Fungle: {fungleVotes}";
if (DleksEnabled) voteResults += $"\nEht Dleks: {dleksVotes}";
string voteResults = "";
if (!Options.CustomizeMapVote.GetBool())
{
voteResults += $"Skeld: {skeldVotes}\n";
voteResults += $"Mira: {miraVotes}\n";
voteResults += $"Polus: {polusVotes}\n";
voteResults += $"Airship: {airshipVotes}\n";
voteResults += $"Fungle: {fungleVotes}\n";
voteResults += $"Dleks: {dleksVotes}\n";
}
else
{
if (Options.IncludeSkeld.GetBool()) voteResults += $"Skeld: {skeldVotes}\n";
if (Options.IncludeMira.GetBool()) voteResults += $"Mira: {miraVotes}\n";
if (Options.IncludePolus.GetBool()) voteResults += $"Polus: {polusVotes}\n";
if (Options.IncludeAirship.GetBool()) voteResults += $"Airship: {airshipVotes}\n";
if (Options.IncludeFungle.GetBool()) voteResults += $"Fungle: {fungleVotes}\n";
if (Options.IncludeDleks.GetBool()) voteResults += $"Dleks: {dleksVotes}\n";
}
voteResults = voteResults.TrimEnd();
if (highest == 0)
if (highest <= 0)
{
ModeratorChatCommand("Lol, no one voted. Hooray for democracy?", "", false);
}
@@ -663,7 +699,7 @@ public static class Utils
{
ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
if (winner == "Eht Dleks")
if (winner == "Dleks")
{
CreateOptionsPickerPatch.ApplyDleks(Utils.isHideNSeek);
}
@@ -701,13 +737,22 @@ public static class Utils
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);
string voteMessage = "A Gamemode vote is active!\n\n";
if (!Options.CustomizeModeVote.GetBool()) voteMessage += "A: None\nB: No Kill Cooldown\nC: Speedrun\nD: SnS\nE: PnS\n";
if (Options.IncludeStandard.GetBool()) voteMessage += "A: None\n";
if (Options.IncludeNoKillCooldown.GetBool()) voteMessage += "B: No Kill Cooldown\n";
if (Options.IncludeSpeedrun.GetBool()) voteMessage += "C: Speedrun\n";
if (Options.IncludeShiftAndSeek.GetBool()) voteMessage += "D: SnS\n";
if (Options.IncludePoofAndSeek.GetBool()) voteMessage += "E: PnS\n";
voteMessage += "\nType /vote 'letter' to vote.";
if (moderator) Utils.ModeratorChatCommand(voteMessage, "", false);
else Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, voteMessage, "", false);
new LateTask(() =>
{
int highest = standardVotes;
string winner = "None";
int highest = -1;
string winner = "";
byte modeId = 0;
bool tie = false;
@@ -726,13 +771,43 @@ public static class Utils
}
}
Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
Check(speedrunVotes, "Speedrun", 2);
Check(shiftAndSeekVotes, "Shift and Seek", 1);
Check(poofAndSeekVotes, "Poof and Seek", 3);
if (!Options.CustomizeModeVote.GetBool())
{
Check(standardVotes, "None", 0);
Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
Check(speedrunVotes, "Speedrun", 2);
Check(shiftAndSeekVotes, "Shift and Seek", 1);
Check(poofAndSeekVotes, "Poof and Seek", 3);
}
else
{
if (Options.IncludeStandard.GetBool()) Check(standardVotes, "None", 0);
if (Options.IncludeNoKillCooldown.GetBool()) Check(noKillCooldownVotes, "0 Kill Cooldown", 0);
if (Options.IncludeSpeedrun.GetBool()) Check(speedrunVotes, "Speedrun", 2);
if (Options.IncludeShiftAndSeek.GetBool()) Check(shiftAndSeekVotes, "Shift and Seek", 1);
if (Options.IncludePoofAndSeek.GetBool()) Check(poofAndSeekVotes, "Poof and Seek", 3);
}
string voteResults = $"Standard: {standardVotes}\n" + $"No Kill Cooldown: {noKillCooldownVotes}\n" + $"Speedrun: {speedrunVotes}\n" + $"Shift and Seek: {shiftAndSeekVotes}\n" + $"Poof and Seek: {poofAndSeekVotes}";
if (highest == 0)
string voteResults = "";
if (!Options.CustomizeModeVote.GetBool())
{
voteResults += $"Standard: {standardVotes}\n";
voteResults += $"No Kill Cooldown: {noKillCooldownVotes}\n";
voteResults += $"Speedrun: {speedrunVotes}\n";
voteResults += $"Shift and Seek: {shiftAndSeekVotes}\n";
voteResults += $"Poof and Seek: {poofAndSeekVotes}\n";
}
else
{
if (Options.IncludeStandard.GetBool()) voteResults += $"Standard: {standardVotes}\n";
if (Options.IncludeNoKillCooldown.GetBool()) voteResults += $"No Kill Cooldown: {noKillCooldownVotes}\n";
if (Options.IncludeSpeedrun.GetBool()) voteResults += $"Speedrun: {speedrunVotes}\n";
if (Options.IncludeShiftAndSeek.GetBool()) voteResults += $"Shift and Seek: {shiftAndSeekVotes}\n";
if (Options.IncludePoofAndSeek.GetBool()) voteResults += $"Poof and Seek: {poofAndSeekVotes}\n";
}
voteResults = voteResults.TrimEnd();
if (highest <= 0)
{
ModeratorChatCommand("We have a winner! Just kidding. No one voted.", "", false);
}
@@ -744,10 +819,10 @@ public static class Utils
{
ModeratorChatCommand(SendChatPatch.ConvertNum($"Winner: {winner} ({highest})\n\n{voteResults}"), "", false);
Options.Gamemode.SetValue(modeId);
if (winner == "0 Kill Cooldown")
{
Main.NormalOptions.KillCooldown = 0.01f;
Main.NormalOptions.KillCooldown = 0.001f;
}
}
@@ -756,7 +831,7 @@ public static class Utils
speedrunVotes = 0;
shiftAndSeekVotes = 0;
poofAndSeekVotes = 0;
HasVoted.Clear();
HasModeVoted.Clear();
ModeVoteActive = false;
}, Options.ModeVoteDuration.GetInt(), "ModePoll");
+157 -71
View File
@@ -36,6 +36,24 @@ internal static class ChatControllerUpdatePatch
__instance.quickChatField.background.color = Color.white;
__instance.quickChatField.text.color = Color.black;
}
if (Main.DisableChatModifier.Value && !__instance.freeChatField.textArea.allowAllCharacters)
{
__instance.freeChatField.textArea.AllowSymbols = false;
__instance.freeChatField.textArea.AllowEmail = false;
__instance.freeChatField.textArea.characterLimit = 100;
}
if (!Main.DisableChatModifier.Value)
{
if (__instance.timeSinceLastMessage < 0.9f)
{
__instance.timeSinceLastMessage = 0.9f;
}
__instance.freeChatField.textArea.AllowSymbols = true;
__instance.freeChatField.textArea.AllowEmail = true;
__instance.freeChatField.textArea.characterLimit = 120;
}
}
}
@@ -147,6 +165,24 @@ internal static class SendChatPatch
return false;
}
if (text == "/private")
{
__instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty);
if (Utils.InGame) return false;
AmongUsClient.Instance.ChangeGamePublic(false);
}
if (text == "/public")
{
__instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty);
if (Utils.InGame) return false;
AmongUsClient.Instance.ChangeGamePublic(true);
}
if (text.StartsWith("/vip "))
{
PlayerControl target = null;
@@ -400,19 +436,7 @@ internal static class SendChatPatch
{
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);
Utils.MapVote(false);
__instance.freeChatField.textArea.Clear();
__instance.freeChatField.textArea.SetText(string.Empty);
@@ -434,77 +458,87 @@ internal static class SendChatPatch
if (text == "/vote a")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive && !Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId))
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.skeldVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.standardVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote b")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.miraVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.noKillCooldownVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote c")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.polusVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.speedrunVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote d")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.airshipVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.shiftAndSeekVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/vote e")
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.fungleVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.poofAndSeekVotes++;
Utils.HasModeVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
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)
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(PlayerControl.LocalPlayer.Data.PlayerId)) return true;
Utils.dleksVotes++;
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
Utils.HasVoted.Add(PlayerControl.LocalPlayer.Data.PlayerId);
}
if (text == "/l" || text == "/lastgame")
@@ -525,13 +559,13 @@ internal static class SendChatPatch
if (text == "/0kc" || text == "/0killcooldown")
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
return false;
}
if (text == "/sns" || text == "/shiftandseek")
{
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
return false;
}
if (text == "/sns2" || text == "/shiftandseek2")
@@ -557,14 +591,14 @@ internal static class SendChatPatch
switch (Options.Gamemode.GetValue())
{
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
break;
case 1:
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
Utils.ChatCommand(__instance, "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
break;
case 2:
@@ -831,6 +865,18 @@ public static class RPCHandlerPatch
}
}
if (text == "/private")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashStartAndEndGameCmd.GetValue() || Utils.InGame) return;
AmongUsClient.Instance.ChangeGamePublic(false);
}
if (text == "/public")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashStartAndEndGameCmd.GetValue() || Utils.InGame) return;
AmongUsClient.Instance.ChangeGamePublic(true);
}
if (text == "/s" || text == "/start")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashStartAndEndGameCmd.GetValue()) return;
@@ -844,16 +890,7 @@ public static class RPCHandlerPatch
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);
Utils.MapVote(true);
}
}
@@ -865,80 +902,90 @@ public static class RPCHandlerPatch
Utils.ModeVote(true);
}
}
if (text == "/vote a")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.skeldVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.standardVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote b")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.miraVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.noKillCooldownVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote c")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.polusVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.speedrunVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote d")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.airshipVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.shiftAndSeekVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote e")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.fungleVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (Utils.ModeVoteActive)
else if (Utils.ModeVoteActive)
{
if (Utils.HasModeVoted.Contains(__instance.Data.PlayerId)) return;
Utils.poofAndSeekVotes++;
Utils.HasModeVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/vote f")
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
if (Utils.MapVoteActive && Utils.DleksEnabled)
if (Utils.MapVoteActive)
{
if (Utils.HasVoted.Contains(__instance.Data.PlayerId)) return;
Utils.dleksVotes++;
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
Utils.HasVoted.Add(__instance.Data.PlayerId);
}
if (text == "/l" || text == "/lastgame")
@@ -957,12 +1004,12 @@ public static class RPCHandlerPatch
if (text == "/0kc" || text == "/0killcooldown")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
if (text == "/sns" || text == "/shiftandseek")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
}
if (text == "/sns2" || text == "/shiftandseek2")
{
@@ -988,14 +1035,14 @@ public static class RPCHandlerPatch
switch (Options.Gamemode.GetValue())
{
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
{
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
break;
case 1:
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
break;
case 2:
@@ -1033,4 +1080,43 @@ public static class RPCHandlerPatch
}
}
}
}
[HarmonyPatch(typeof(FreeChatInputField), nameof(FreeChatInputField.UpdateCharCount))]
public static class FreeChatInputFieldUpdateCharCountPatch
{
public static void Postfix(FreeChatInputField __instance)
{
if (!Main.DisableChatModifier.Value)
{
__instance.charCountText.SetText($"{__instance.textArea.text.Length}/120");
}
}
}
// https://github.com/astra1dev/AUnlocker/blob/main/src/Patches/ChatPatches.cs
[HarmonyPatch(typeof(TextBoxTMP), nameof(TextBoxTMP.Update))]
public static class TextBoxTMPUpdatePatch
{
public static void Postfix(TextBoxTMP __instance)
{
if (!Main.DisableChatModifier.Value && __instance.hasFocus)
{
if (!Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.RightControl)) return;
if (Input.GetKeyDown(KeyCode.C))
{
GUIUtility.systemCopyBuffer = __instance.text;
}
if (Input.GetKeyDown(KeyCode.V))
{
__instance.SetText(__instance.text + GUIUtility.systemCopyBuffer);
}
if (Input.GetKeyDown(KeyCode.X))
{
GUIUtility.systemCopyBuffer = __instance.text;
__instance.SetText("");
}
}
}
}
+4
View File
@@ -17,6 +17,7 @@ namespace AmongUsRevamped
private static ClientOptionItem DisableInfoWhenDead;
private static ClientOptionItem DisableCommandHelper;
private static ClientOptionItem DisableCompatibilityWarning;
private static ClientOptionItem DisableChatModifier;
public static void Postfix(OptionsMenuBehaviour __instance)
{
@@ -64,6 +65,9 @@ namespace AmongUsRevamped
if (DisableCompatibilityWarning == null || DisableCompatibilityWarning.ToggleButton == null)
DisableCompatibilityWarning = ClientOptionItem.Create(Translator.Get("disableCompatibilityWarning"), Main.DisableCompatibilityWarning, __instance);
if (DisableChatModifier == null || DisableChatModifier.ToggleButton == null)
DisableChatModifier = ClientOptionItem.Create(Translator.Get("disableChatModifier"), Main.DisableChatModifier, __instance);
}
}
+29 -5
View File
@@ -1,4 +1,5 @@
using BepInEx.Unity.IL2CPP;
using AmongUs.Data.Player;
using BepInEx.Unity.IL2CPP;
using System;
using System.Text;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
@@ -62,7 +63,7 @@ namespace AmongUsRevamped
var credentials = UnityEngine.Object.Instantiate(__instance.text);
credentials.text = Main.CredentialsText;
credentials.alignment = TextAlignmentOptions.Right;
credentials.transform.position = new Vector3(1f, 2.67f, -2f);
credentials.transform.position = new Vector3(-4.1f, -2.68f, -2f);
credentials.fontSize = credentials.fontSizeMax = credentials.fontSizeMin = 2f;
ErrorText.Create(__instance.text);
@@ -181,6 +182,7 @@ namespace AmongUsRevamped
private static PassiveButton template;
private static PassiveButton discordButton;
private static PassiveButton gitHubButton;
private static PassiveButton latestButton;
private static PassiveButton animationSceneButton;
private static Transform buttonParent;
public static void Postfix(MainMenuManager __instance)
@@ -195,7 +197,7 @@ namespace AmongUsRevamped
discordButton = CreateButton(
__instance,
"DiscordButton",
new(2.1f, 4.05f, 1f),
new(2.3f, 4.05f, 1f),
new(88, 101, 242, byte.MaxValue),
new(148, 161, byte.MaxValue, byte.MaxValue),
() => Application.OpenURL("https://discord.gg/83Zhzhyhya"),
@@ -207,13 +209,25 @@ namespace AmongUsRevamped
gitHubButton = CreateButton(
__instance,
"GitHubButton",
new(3.8f, 4.05f, 1f),
new(4.0f, 4.05f, 1f),
new(153, 153, 153, byte.MaxValue),
new(209, 209, 209, byte.MaxValue),
() => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped"),
"GitHub");
}
if (latestButton == null)
{
latestButton = CreateButton(
__instance,
"LatestButton",
new(5.7f, 4.05f, 1f),
new(255, 215, 0, byte.MaxValue),
new(255, 255, 30, byte.MaxValue),
() => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped/releases/latest"),
"Latest");
}
if (animationSceneButton == null)
{
animationSceneButton = CreateButton(
@@ -322,7 +336,7 @@ namespace AmongUsRevamped
button.name = name;
button.transform.localPosition = localPosition;
if (name == "GitHubButton" || name == "DiscordButton")
if (name == "GitHubButton" || name == "DiscordButton" || name == "LatestButton")
{
button.transform.localScale = new Vector3(0.8f, 1f, 1f);
}
@@ -373,6 +387,16 @@ namespace AmongUsRevamped
}
}
}
[HarmonyPatch(typeof(PlayerBanData), nameof(PlayerBanData.BanMinutesLeft), MethodType.Getter)]
public static class PlayerBanDataGetterPatch
{
public static void Postfix(PlayerBanData __instance, ref int __result)
{
__instance.BanPoints = 0f;
__result = 0;
}
}
}
#if !ANDROID
+9 -8
View File
@@ -28,7 +28,7 @@ class NormalGameEndChecker
public static string LastWinReason = "";
public static List<PlayerControl> imps = new List<PlayerControl>();
public static string firstDeath;
public static string firstDeathString => firstDeath != null ? $"\n\nFirst death: {firstDeath}" : "";
public static string firstDeathString => firstDeath != "" ? $"\n\n1st death: {firstDeath}" : "";
public static bool Prefix()
{
@@ -50,20 +50,21 @@ class NormalGameEndChecker
public static string customRoles { get; set; }
public static void CheckWinnerText(string Winner)
{
var impostorList = string.Join(", ", imps.Select(p => p.Data.PlayerName));
string impostorList = string.Join("\n", imps.Select(p => $"{p.Data.PlayerName} {p.Data.ColorName}"));
string impostorString = impostorList != "" ? $"\n\n{impostorList}" : "";
if (!canUpdateWinnerText) return;
if (Winner == "SnSTimer")
{
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)\n\n Impostors: " + impostorList + firstDeathString;
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)" + impostorString + firstDeathString;
canUpdateWinnerText = false;
return;
}
if (Winner == "PnSTimer")
{
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)\n\n Impostors: " + impostorList + firstDeathString;
LastWinReason = $"Crewmates Win! (Survived {Options.CrewAutoWinsGameAfter.GetInt()}s)" + impostorString + firstDeathString;
canUpdateWinnerText = false;
return;
}
@@ -77,22 +78,22 @@ class NormalGameEndChecker
if ((Options.Gamemode.GetValue() != 2 && Utils.AliveImpostors == 0) || Winner == "Crewmate")
{
LastWinReason = "Crewmates Win!\n\nImpostors: " + impostorList + firstDeathString;
LastWinReason = "Crewmates Win!" + impostorString + firstDeathString;
canUpdateWinnerText = false;
}
else if ((Options.Gamemode.GetValue() != 2 && Utils.AliveImpostors >= Utils.AliveCrewmates) || Winner == "Impostor")
{
LastWinReason = "Impostors Win!\n\nImpostors: " + impostorList + firstDeathString;
LastWinReason = "Impostors Win!" + impostorString + 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 + firstDeathString;
LastWinReason = $"Crewmates Win! ({Options.TaskPercentNeededToWin.GetInt()}% tasks completed)" + impostorString + firstDeathString;
canUpdateWinnerText = false;
}
else if (Options.Gamemode.GetValue() < 1 || Winner == "ImpostorSabotage")
{
LastWinReason = "Impostors Win! (Sabotage)\n\n Impostors: " + impostorList + firstDeathString;
LastWinReason = "Impostors Win! (Sabotage)" + impostorString + firstDeathString;
}
}
}
+10
View File
@@ -30,6 +30,16 @@ class ExileControllerWrapUpPatch
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
}
}
if (Options.Gamemode.GetValue() == 1 && !Options.SNSSuicideMode.GetBool())
{
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 (ejectedPlayer == null) return;
+29 -25
View File
@@ -23,7 +23,7 @@ internal static class CoShowIntroPatch
if (NormalGameEndChecker.firstDeath != null && NormalGameEndChecker.firstDeath == p.Data.PlayerName && Options.ShieldFirstDeath.GetBool() && Options.Gamemode.GetValue() != 1)
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
var oldGA = GuardianAngelOptions.ImpostorsCanSeeProtect;
var oldGAProt = GuardianAngelOptions.ProtectionDurationSeconds;
@@ -64,40 +64,44 @@ internal static class CoShowIntroPatch
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
}
OptionManager.SyncGameOptions();
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
p.Data.MarkDirty();
}
if (Options.SNSChatInGameExtend.GetBool())
{
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing\nWrong kills are blocked. Kill animations are off", true);
}
if (Options.SNSChatInGameExtend2.GetBool())
Utils.ModeratorChatCommand("Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nMeetings & Reports = Off", $"Crewmates win by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\nImpostors win by killing Crewmates", true);
}
if (!Options.SNSSuicideMode.GetBool())
{
_ = new LateTask(() =>
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
}, 6.6f, "SNSChatInGameExtend2");
}
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
}
OptionManager.SyncGameOptions();
foreach (var p in PlayerControl.AllPlayerControls)
{
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
p.Data.MarkDirty();
}
if (Options.SNSChatInGameExtend2.GetBool())
{
_ = new LateTask(() =>
{
Utils.ChatCommand(DestroyableSingleton<HudManager>.Instance.Chat, "Correctly killing a target will directly turn them into a ghost and leave no dead body", "", false);
}, 6.6f, "SNSChatInGameExtend2");
}
}
}
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f))
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f) && !Options.DisablePeacePeriod.GetBool())
{
Main.NormalOptions.KillCooldown = 5f;
OptionManager.SyncGameOptions();
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled");
}
@@ -111,7 +115,7 @@ internal static class CoShowIntroPatch
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions();
}, 18f, "NoKcdEnabled");
}
@@ -122,7 +126,7 @@ internal static class CoShowIntroPatch
_ = new LateTask(() =>
{
Main.NormalOptions.KillCooldown = 0.01f;
Main.NormalOptions.KillCooldown = 0.001f;
OptionManager.SyncGameOptions();
}, 13f, "NoKcdEnabled");
}
+1 -8
View File
@@ -50,16 +50,9 @@ internal static class OnGameJoinedPatch
{
new LateTask(() =>
{
Utils.MapVote(false, true);
Utils.MapVote(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(() =>
+12
View File
@@ -112,4 +112,16 @@ class MeetingHudStartPatch
return $"<color=red>({MurderPlayerPatch.killCount[player.Data.PlayerId]}†)</color> - {Utils.GetRoleText(player)}";
}
}
[HarmonyPatch(typeof(LogicOptionsNormal), nameof(LogicOptionsNormal.GetAnonymousVotes))]
public static class LogicOptionsNormalGetAnonymousVotesPatch
{
public static void Postfix(ref bool __result)
{
if (Utils.IsDead)
{
__result = false;
}
}
}
}
+2 -2
View File
@@ -19,7 +19,7 @@ public static class NumberOption_Increase
{
if (__instance.Title == StringNames.GameKillCooldown)
{
if (__instance.Value == 0.01f)
if (__instance.Value == 0.001f)
{
__instance.Value = 0.5f;
__instance.UpdateValue();
@@ -114,7 +114,7 @@ public static class NumberOption_Initialize
case StringNames.GameKillCooldown:
__instance.Increment = 0.5f;
__instance.ValidRange = new FloatRange(0.01f, 900f);
__instance.ValidRange = new FloatRange(0.001f, 900f);
break;
case StringNames.GamePlayerSpeed:
+29 -7
View File
@@ -23,6 +23,12 @@ class ReportDeadBodyPatch
return false;
}
if (!OnGameStartPatch.PastStartScreen && __instance != PlayerControl.LocalPlayer)
{
EACR.MeetingCheat(__instance);
return false;
}
// target == null means meeting
if (Options.Gamemode.GetValue() == 1 || Options.Gamemode.GetValue() == 2 || Options.Gamemode.GetValue() == 3)
@@ -62,11 +68,11 @@ internal static class MurderPlayerPatch
if (resultFlags.HasFlag(MurderResultFlags.Succeeded))
{
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && target.Data.PlayerId != __instance.shapeshiftTargetPlayerId)
{
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId) return;
Logger.Info($" {__instance.Data.PlayerName} directly killed {target.Data.PlayerName} in SnS, forcing suicide. (Are they hacking?)", "MurderPlayer");
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
Logger.SendInGame($"{__instance.Data.PlayerName} directly misfired, forcing suicide");
Logger.Info($" {__instance.Data.PlayerName} directly misfired, forcing suicide", "MurderPlayer");
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
}
else
{
@@ -78,6 +84,16 @@ internal static class MurderPlayerPatch
Utils.HasMurdered = true;
}
}
if (target.Data.RoleType == RoleTypes.Impostor ||
target.Data.RoleType == RoleTypes.Shapeshifter ||
target.Data.RoleType == RoleTypes.Phantom ||
target.Data.RoleType == RoleTypes.Viper ||
target.Data.IsDead)
{
if (__instance != PlayerControl.LocalPlayer) return;
EACR.MurderCheat(__instance);
}
}
if ((target == PlayerControl.LocalPlayer || PlayerControl.LocalPlayer.Data.IsDead) && !Main.DisableInfoWhenDead.Value && resultFlags.HasFlag(MurderResultFlags.Succeeded))
@@ -96,7 +112,7 @@ internal static class MurderPlayerPatch
}
//1 = Shift and Seek
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !resultFlags.HasFlag(MurderResultFlags.Succeeded))
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && resultFlags.HasFlag(MurderResultFlags.FailedProtected))
{
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId)
{
@@ -166,14 +182,20 @@ class PlayerControlCompleteTaskPatch
__instance.Data.RoleType == RoleTypes.Phantom ||
__instance.Data.RoleType == RoleTypes.Viper)
{
EACR.TaskCheat(__instance);
if (__instance != PlayerControl.LocalPlayer)
{
EACR.TaskCheat(__instance);
}
}
playerTasksCompleted[__instance.PlayerId]++;
if (playerTasksCompleted[__instance.PlayerId] > __instance.Data.Tasks.Count)
{
EACR.TaskCheat(__instance);
if (__instance != PlayerControl.LocalPlayer)
{
EACR.TaskCheat(__instance);
}
}
Logger.Info($" {__instance.Data.PlayerName} completed {idx}", "TaskPatch");
+159
View File
@@ -70,6 +70,14 @@ public static class SabotageSystemTypeRepairDamagePatch
}
else return true;
}
public static void Postfix(SabotageSystemType __instance)
{
if (!Options.CustomizeSabotages.GetBool() || !AmongUsClient.Instance.AmHost) return;
__instance.Timer = Options.SabotageCooldown.GetInt();
__instance.IsDirty = true;
}
}
[HarmonyPatch(typeof(ShipStatus), nameof(ShipStatus.CloseDoorsOfType))]
@@ -113,4 +121,155 @@ public static class MessageReaderUpdateSystemPatch
}
else return true;
}
}
[HarmonyPatch(typeof(ReactorSystemType))]
public static class ReactorSystemTypePatch
{
private static bool SetDuration = true;
[HarmonyPatch(nameof(ReactorSystemType.Deteriorate))]
[HarmonyPrefix]
public static void Deteriorate_Prefix(ReactorSystemType __instance)
{
if (!AmongUsClient.Instance.AmHost || Main.NormalOptions.MapId == 4 || !Options.CustomizeSabotages.GetBool()) return;
if (!__instance.IsActive || !ShipStatus.Instance || !SetDuration)
{
if (!SetDuration && !__instance.IsActive) SetDuration = true;
return;
}
Logger.Info($" {ShipStatus.Instance.Type} - {SetDuration}", "ReactorSystemTypePatch");
SetDuration = false;
switch (ShipStatus.Instance.Type)
{
case ShipStatus.MapType.Ship:
__instance.Countdown = Options.SkeldReactorDuration.GetFloat();
return;
case ShipStatus.MapType.Hq:
__instance.Countdown = Options.MiraReactorDuration.GetFloat();
return;
case ShipStatus.MapType.Pb:
__instance.Countdown = Options.PolusReactorDuration.GetFloat();
return;
case ShipStatus.MapType.Fungle:
__instance.Countdown = Options.FungleReactorDuration.GetFloat();
return;
default:
return;
}
}
[HarmonyPatch(nameof(ReactorSystemType.Deteriorate))]
[HarmonyPostfix]
public static void Deteriorate_Postfix(ReactorSystemType __instance)
{
if (__instance.IsActive && __instance.Countdown <= 0 && !Utils.HandlingGameEnd)
{
Utils.ContinueEndGame((byte)GameOverReason.ImpostorsBySabotage);
NormalGameEndChecker.CheckWinnerText("ImpostorSabotage");
}
}
}
[HarmonyPatch(typeof(HeliSabotageSystem))]
public static class HeliSabotageSystemPatch
{
private static bool SetDuration = true;
[HarmonyPatch(nameof(HeliSabotageSystem.Deteriorate))]
[HarmonyPrefix]
public static void Deteriorate_Prefix(HeliSabotageSystem __instance)
{
if (!AmongUsClient.Instance.AmHost || Main.NormalOptions.MapId != 4 || !Options.CustomizeSabotages.GetBool()) return;
if (!__instance.IsActive || !ShipStatus.Instance || !SetDuration)
{
if (!SetDuration && !__instance.IsActive) SetDuration = true;
return;
}
Logger.Info($" {ShipStatus.Instance.Type} - {SetDuration}", "HeliSabotageSystemPatch");
SetDuration = false;
__instance.Countdown = Options.AirshipReactorDuration.GetFloat();
}
[HarmonyPatch(nameof(HeliSabotageSystem.Deteriorate))]
[HarmonyPostfix]
public static void Deteriorate_Postfix(HeliSabotageSystem __instance)
{
if (__instance.IsActive && __instance.Countdown <= 0 && !Utils.HandlingGameEnd)
{
Utils.ContinueEndGame((byte)GameOverReason.ImpostorsBySabotage);
NormalGameEndChecker.CheckWinnerText("ImpostorSabotage");
}
}
}
[HarmonyPatch(typeof(LifeSuppSystemType))]
public static class LifeSuppSystemTypePatch
{
private static bool SetDuration = true;
[HarmonyPatch(nameof(LifeSuppSystemType.Deteriorate))]
[HarmonyPrefix]
public static void Deteriorate_Prefix(LifeSuppSystemType __instance)
{
if (!AmongUsClient.Instance.AmHost || Main.NormalOptions.MapId == 2 || Main.NormalOptions.MapId == 4 || Main.NormalOptions.MapId == 5 || !Options.CustomizeSabotages.GetBool()) return;
if (!__instance.IsActive || !ShipStatus.Instance || !SetDuration)
{
if (!SetDuration && !__instance.IsActive) SetDuration = true;
return;
}
Logger.Info($" {ShipStatus.Instance.Type} - {SetDuration}", "LifeSuppSystemType");
SetDuration = false;
switch (ShipStatus.Instance.Type)
{
case ShipStatus.MapType.Ship:
__instance.Countdown = Options.SkeldO2Duration.GetFloat();
return;
case ShipStatus.MapType.Hq:
__instance.Countdown = Options.MiraO2Duration.GetFloat();
return;
default:
return;
}
}
[HarmonyPatch(nameof(LifeSuppSystemType.Deteriorate))]
[HarmonyPostfix]
public static void Deteriorate_Postfix(LifeSuppSystemType __instance)
{
if (__instance.IsActive && __instance.Countdown <= 0 && !Utils.HandlingGameEnd)
{
Utils.ContinueEndGame((byte)GameOverReason.ImpostorsBySabotage);
NormalGameEndChecker.CheckWinnerText("ImpostorSabotage");
}
}
}
[HarmonyPatch(typeof(MushroomMixupSabotageSystem), nameof(MushroomMixupSabotageSystem.Deteriorate))]
public static class MushroomMixupSabotageSystemPatch
{
private static bool SetDuration = true;
public static void Prefix(MushroomMixupSabotageSystem __instance, ref bool __state)
{
__state = __instance.IsActive;
if (!AmongUsClient.Instance.AmHost || Main.NormalOptions.MapId != 5 || !Options.CustomizeSabotages.GetBool()) return;
if (!__instance.IsActive || !ShipStatus.Instance || !SetDuration)
{
if (!SetDuration && !__instance.IsActive) SetDuration = true;
return;
}
Logger.Info($" {ShipStatus.Instance.Type} - {SetDuration}", "MushroomMixupSabotageSystem");
SetDuration = false;
__instance.currentSecondsUntilHeal = Options.FungleMushroomMixupDuration.GetFloat();
}
}
+14 -8
View File
@@ -36,7 +36,7 @@
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
‎
# 🎮 Features (v2.0.3):
# 🎮 Features (v2.2.2):
## <b>♠️ Client Side settings:</b>
- Toggle Game Master (Spectator)
@@ -45,6 +45,7 @@
- Toggle Lobby Music
- Toggle Info When Dead
- Toggle Command Helper
- Toggle Chat Modifications
## <b>⚙️ Technical settings:</b>
- Advanced AFK Detection system
- Kick/Ban players under/above a certain level
@@ -63,8 +64,9 @@
- Automatically Send Map Votes
- Enable (configurable) Welcome Messages from Templates.txt
## <b>🔧 Gameplay Settings:</b>
- Change sabotage cooldown and durations
- Dead impostors can sabotage
- Disable critical sabotages (invividual)
- Disable critical sabotages (individual)
- Disable door sabotages
- Disable meeting calls first 30s
- Disable devices (per map, individual)
@@ -76,7 +78,7 @@
- Shield player who died first
- Hide and Seek: Custom Seeker count
## <b>🏆 Custom Gamemodes:</b>
- 0 Kill Cooldown -> Set Kill Cooldown to 0.01
- 0Kcd -> Set Kill Cooldown to 0.0
- Shift and Seek
- Poof and Seek
- Speedrun
@@ -84,13 +86,13 @@
- Detect invalid sabotages
- Detect malformed RPC's
- Detect invalid venting
- Detect Invalid animations
- Detect Invalid task completions
- Detect invalid animations
- Detect invalid task completions
- Detect invalid kills
- Detect immortality cheats
- Block attempted votekicks
- These are all enabled by default
## <b>❓ Other Improvements:</b>
- Lanuage support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
- Language support: English, Italian, Japanese, Russian, Simplified Chinese, Spanish
- Select a language in Language/YourLanguage.txt
- Preset system for mod settings
- Creatable and customizable Templates
@@ -102,6 +104,8 @@
- Higher and more accurate Option ranges
- Always visible lobby timer
- Access experimental animation test scene
- Faster chat cooldown (2.2s)
- 120 character chat limit, copy pasting
- <b>🎉 And this all works in public lobbies!</b>
### Hotkeys
@@ -141,16 +145,18 @@
| /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 |
| /private | Sets lobby to private |
| /public | Sets lobby to public |
‎
**Credit to these mods and their developers for their code:**
### :star: [AUnlocker](https://github.com/astra1dev/AUnlocker)
> - Original NumberOptionsPatch
> - Always Show Lobby Timer
> - Copy Pasting & Character Increase
### :star: [EHR (Formerly TOHE+)](https://github.com/Gurge44/EndlessHostRoles)
> - Task Patching
### :star: [TOH](https://github.com/tukasa0001/TownOfHost) :
> - Ban Manager
> - OptionHolder & ClientOptionItem
### :star: [Super New Roles](https://github.com/ykundesu/SuperNewRoles) (SNR):
> - Credentials menu
+57 -8
View File
@@ -39,7 +39,7 @@
"tabGroupAutomation": "Automation",
"autoSendGameInfo": "Automatically send winner info",
"autoRejoinLobby": "Auto Rejoin Lobby",
"autoRejoinLobby": "Automatically Rejoin Lobby",
"tabGroupAutostart": "Autohost",
"autoStartTimer": "Countdown For Auto Start",
@@ -69,7 +69,7 @@
"slashKickCmd": "Who Can Use /kick & /ckick",
"slashBanCmd": "Who Can Use /ban & /cban",
"slashEndMeetingCmd": "Who Can Use /endmeeting",
"slashStartAndEndGameCmd": "Who Can Use /startgame & /endgame",
"slashStartAndEndGameCmd": "Who Can Use /start & /endgame",
"tabGroupCrewmate": "Crewmate Roles",
"tabGroupNeutral": "Neutral Roles",
@@ -98,12 +98,25 @@
"snsDisableHeli": "Disable Crash Course Sabotage",
"snsDisableMushroomMixup": "Disable Mushroom Mixup Sabotage",
"snsDisableCloseDoor": "Disable SnS Door Sabotages",
"tabGroupCustomizeSabotages": "Customize Sabotages",
"customizeSabotages": "Enable Sabotage Customizations",
"sabotageCooldown": "Critical Sabotage Cooldown",
"skeldReactorDuration": "Skeld Reactor Duration",
"skeldO2Duration": "Skeld O2 Duration",
"miraReactorDuration": "Mira Reactor Duration",
"miraO2Duration": "Mira O2 Duration",
"polusReactorDuration": "Polus Reactor Duration",
"airshipReactorDuration": "Airship Reactor Duration",
"fungleReactorDuration": "Fungle Reactor Duration",
"fungleMushroomMixupDuration": "Fungle Mixup Duration",
"tabGroupSpeedrun": "Speedrun",
"speedrunSettingsOverride": "Auto Update Settings",
"gameAutoEndsAfter": "Game automatically ends after",
"engineerMode": "Everyone Is Engineer",
"tabGroupSabotages": "Sabotages",
"tabGroupSabotages": "Disable Sabotages",
"deadImpostorsCanSabotage": "Dead Impostors Can Sabotage",
"disableSabotage": "Disable Critical Sabotages",
"disableReactor": "Disable Reactor Sabotage",
@@ -146,7 +159,7 @@
"disableFungleVital": "Disable Fungle Vitals",
"tabGroupTasks": "Tasks",
"allPlayersSameTasks": "Everyone has same tasks",
"allPlayersSameTasks": "Everyone Has Same Tasks",
"overrideTaskSettings": "Disable Tasks",
"taskPercentNeededToWin": "% Tasks completed for crewmates to win",
@@ -239,7 +252,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>/sns2</b>\nSend extended Shift and Seek mode description\n<b>/pns, /poofandseek</b>\nSend Poof and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.\n\n<b>/seeker {name}</b>\nForce someone as Seeker in HnS.\n<b>/seekers</b>\nShow forced seeker list.\n<b>/clearseeker</b>\nClear forced seeker list.\n\n<b>/mapvote</b>\nStarts a map vote containing default maps.\n<b>/allmapvote</b>\nStarts a map vote that includes Eht Dleks.\n<b>/gmvote</b>\nStarts a gamemode vote.",
"allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r</b>\nSend current mode description.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sns2</b>\nSend extended Shift and Seek mode description\n<b>/pns, /poofandseek</b>\nSend Poof and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip /removemoderator /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.\n\n<b>/seeker {name}</b>\nForce someone as Seeker in HnS.\n<b>/seekers</b>\nShow forced Seeker list.\n<b>/clearseeker</b>\nClear forced Seeker list.\n\n<b>/mapvote</b>\nStarts a customizable map vote maps.\n<b>/gmvote</b>\nStarts a customizable gamemode vote.\n\n<b>/private</b>\nSets lobby to private.\n<b>/public</b>\nSets lobby to public.",
"translationReloaded": "Your file has successfully been reset.\nTo apply all changes, restart your game.",
@@ -295,9 +308,11 @@
"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.",
"mapVoteDesc": "Starts a vote between selected maps.",
"allMapVoteDesc": "Starts a vote between all 6 maps, including Eht Dleks.",
"modeVoteDesc": "Starts a vote between all gamemodes.",
"modeVoteDesc": "Starts a vote between selected gamemodes.",
"privateDesc": "Changes lobby visibility to private.",
"publicDesc": "Changes lobby visibility to public.",
"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)",
@@ -350,5 +365,39 @@
"pnsDisableCloseDoor": "Disable PnS Door Sabotages",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
"snsImpostorCanVent": "Impostors Can Vent"
"snsImpostorCanVent": "Impostors Can Vent",
"tabGroupAnticheat": "Anticheat",
"hackingPunishment": "Hacking Punishment",
"detectBadRPC": "Detect Invalid RPC's",
"detectBadSabotage": "Detect Invalid Sabotages",
"detectBadVent": "Detect Invalid Venting",
"detectBadTask": "Detect Invalid Task Completions",
"detectBadKill": "Detect Invalid Kills",
"detectBadAnimation": "Detect Invalid Animations",
"detectBadMeeting": "Detect Invalid Meetings",
"customizeMapVote": "Customize Map Votes",
"includeSkeld": "Include Skeld",
"includeMira": "Include Mira",
"includePolus": "Include Polus",
"includeAirship": "Include Airship",
"includeFungle": "Include Fungle",
"includeDleks": "Include Dleks",
"customizeModeVote": "Customize Gamemode Votes",
"includeStandard": "Include Standard",
"includeNoKillCooldown": "Include 0 Kill Cooldown",
"includeShiftAndSeek": "Include Shift And Seek",
"includePoofAndSeek": "Include Poof And Seek",
"includeSpeedrun": "Include Speedrun",
"tabGroupGameplayMapModifications": "Map Modifications",
"disableChatModifier": "Disable Chat Modifications",
"snsSuicideMode": "Disable Shield System",
"tabGroupNoKcd": "0 Kill Cooldown",
"disablePeacePeriod": "Disable 5s Peace Period"
}
+155 -175
View File
@@ -1,46 +1,42 @@
{
"LanguageID": "1",
"gameMaster": "Spettatore",
"showFPS": "Mostra FPS",
"autoStart": "Avvio Automatico",
"enableDarkTheme": "Abilita Tema Scuro",
"enableLobbyMusic": "Musica della Lobby",
"disableInfoWhenDead": "Nascondi Informazioni Dopo la Morte",
"disableCommandHelper": "Disabilita Aiutante Comandi",
"disableCommandHelper": "Disabilita Aiutante dei Comandi",
"disableCompatibilityWarning": "Disabilita Avviso di Compatibilità",
"cancelStartCountdown": "Conto alla rovescia annullato",
"invalidFriendCodeKick": "{0} è stato kickato per un Codice Amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato per un Codice Amico non valido",
"cancelStartCountdown": "Conto alla rovescia per l'avvio annullato",
"invalidFriendCodeKick": "{0} è stato espulso a causa di un Codice Amico non valido",
"invalidFriendCodeBan": "{0} è stato bannato a causa di un Codice Amico non valido",
"language": "Lingua (Richiede Riavvio)",
"gamemode": "Modalità",
"tabGroupMain": "Moderazione",
"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",
"kickLowLevelPlayer": "Espelli Giocatori Sotto il Livello",
"tempBanLowLevelPlayer": "Banna invece di espellere",
"dontKickLevelOnes": "Non espellere i Giocatori di Liv. 1 Nelle Lobby Glitchate",
"kickInvalidFriendCodes": "Espelli Codici Amico Non Validi (Vuoti)",
"tempBanInvalidFriendCodes": "Banna invece di espellere",
"deniedWordsToKick": "Parole Vietate Inviate Per Espellere il Giocatore",
"moderatorCanUseCommand": "I Moderatori Possono Usare i Comandi",
"autoKickStart": "Kicka Giocatori Che Dicono Start",
"autoKickStartAsBan": "Banna invece di kickare",
"autoKickStart": "Espelli i Giocatori Che Dicono Start",
"autoKickStartAsBan": "Banna invece di espellere",
"autoKickStartStrength": "Modalità di rilevamento rigorosa",
"tabGroupAutomation": "Automazione",
"autoSendGameInfo": "Invia automaticamente informazioni sui vincitori",
"autoRejoinLobby": "Rientra automaticamente nella lobby",
"autoStartTimer": "Conto alla rovescia Avvio Automatico",
"autoStartTimer": "Conto alla rovescia Per l'Avvio Automatico",
"waitAutoStart": "Avvio Automatico Dopo",
"playerAutoStart": "Giocatori Necessari Per Avvio Automatico",
"enableJoinMessages": "Abilita Messaggio di Benvenuto",
"playerAutoStart": "Giocatori Necessari Per l'Avvio Automatico",
"enableJoinMessages": "Abilita Messaggi di Benvenuto",
"messagePerPlayerNum": "Messaggio Ogni # Ingressi",
"tabGroupMisc": "Sperimentale",
"startCountdown": "Conto alla rovescia Predefinito",
"colorCommandLevel": "Chi Può Usare i Comandi Colore",
"startCountdown": "Conto alla Rovescia Per l'Avvio 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 & Templates",
@@ -48,22 +44,19 @@
"slashKickCmd": "Chi Può Usare /kick & /ckick",
"slashBanCmd": "Chi Può Usare /ban & /cban",
"slashStartAndEndGameCmd": "Chi Può Usare /startgame & /endgame",
"tabGroupCrewmate": "Ruoli Astronauti",
"tabGroupNeutral": "Ruoli Neutrali",
"tabGroupImpostor": "Ruoli Impostori",
"tabGroupStandard": "Standard",
"tabGroupHNS": "Nascondino",
"numSeekers": "# Cercatori",
"tabGroup0Kcd": "0 Cooldown Uccisione",
"noKcdSettingsOverride": "Aggiorna Automaticamente Impostazioni",
"tabGroup0Kcd": "0 Ricarica Uccisioni",
"noKcdSettingsOverride": "Aggiorna Automaticamente le 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",
"snsChatInGame": "Chat durante il gioco (sperimentale)",
"snsSettingsOverride": "Aggiorna Automaticamente le Impostazioni",
"cantKillTime": "Dopo una Cilecca Non Puoi Uccidere Per",
"misfiresToSuicide": "Suicidio Dopo Numero di Cilecche",
"crewAutoWinsGameAfter": "Gli Astronauti Vincono Automaticamente Dopo",
"snsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Clone",
"snsDisableReactor": "Disabilita Sabotaggio Reattore",
@@ -71,13 +64,12 @@
"snsDisableLights": "Disabilita Sabotaggio Luci",
"snsDisableComms": "Disabilita Sabotaggio Comunicazioni",
"snsDisableHeli": "Disabilita Sabotaggio Collisione",
"snsDisableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi",
"snsDisableMushroomMixup": "Disabilita Sabotaggio Mixup Fungo",
"snsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Clone",
"tabGroupSpeedrun": "Speedrun",
"speedrunSettingsOverride": "Aggiorna Automaticamente Impostazioni",
"speedrunSettingsOverride": "Aggiorna Automaticamente le Impostazioni",
"gameAutoEndsAfter": "La partita finisce automaticamente dopo",
"engineerMode": "Tutti Ingegneri",
"tabGroupSabotages": "Sabotaggi",
"deadImpostorsCanSabotage": "Gli Impostori Morti Possono Sabotare",
"disableSabotage": "Disabilita Sabotaggi Critici",
@@ -86,11 +78,10 @@
"disableLights": "Disabilita Sabotaggio Luci",
"disableComms": "Disabilita Sabotaggio Comunicazioni",
"disableHeli": "Disabilita Sabotaggio Collisione",
"disableMushroomMixup": "Disabilita Sabotaggio Caos dei Funghi",
"disableMushroomMixup": "Disabilita Sabotaggio Mixup Fungo",
"disableCloseDoor": "Disabilita Sabotaggio Porte",
"tabGroupGameplayGeneral": "Generale",
"disableAnnoyingMeetingCalls": "Nei primi 30 secondi non si possono chiamare riunioni",
"disableAnnoyingMeetingCalls": "Nei primi 30 secondi non è possibile convocare riunioni",
"disableReport": "Disabilita Report dei Cadaveri",
"changeDecontaminationTime": "Cambia Tempo di Decontaminazione (Solo Modalità Standard)",
"decontaminationTimeOnMiraHQ": "Tempo di decontaminazione su Mira HQ",
@@ -98,38 +89,34 @@
"decontaminationTimeOnPolus": "Tempo di decontaminazione su Polus",
"decontaminationDoorOpenTimeOnPolus": "Tempo di apertura porte su Polus",
"disableSporeTrigger": "Disabilita spore su Fungle",
"disableDevices": "Disabilita Dispositivi",
"disableSkeldDevices": "Disabilita Dispositivi su Skeld",
"disableSkeldAdmin": "Disabilita Admin su Skeld",
"disableSkeldAdmin": "Disabilita Amministrazione 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",
"disableMiraHQAdmin": "Disabilita Amministrazione su Mira HQ",
"disableMiraHQDoorLog": "Disabilita Log Porte su Mira HQ",
"disablePolusDevices": "Disabilita Dispositivi su Polus",
"disablePolusAdmin": "Disabilita Admin su Polus",
"disablePolusAdmin": "Disabilita Amministrazione 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",
"disableAirshipCockpitAdmin": "Disabilita Amministrazione Cabina su Airship",
"disableAirshipRecordsAdmin": "Disabilita Amministrazione Archivi 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": "Stessi incarichi per tutti",
"overrideTaskSettings": "Disabilita incarichi",
"taskPercentNeededToWin": "% di Incarichi completati per la vittoria degli astronauti",
"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 Incarichi su Polus",
"disableActivateWeatherNodes": "Disabilita Ripara Nodo Atmosferico",
"disableAlignTelescope": "Disabilita Allinea Telescopio",
@@ -139,207 +126,200 @@
"disableRebootWifi": "Disabilita Riavvia Wi-Fi",
"disableRepairDrill": "Disabilita Ripara Trivella",
"disableScanBoardingPass": "Disabilita Scansiona Carta d'Imbarco",
"disableAirshipTasks": "Disabilita Incarichi su Airship",
"disableCleanToilet": "Disabilita Pulisci Bagno",
"disableDecontaminate": "Disabilita Decontamina",
"disableDevelopPhotos": "Disabilita Sviluppa Foto",
"disableDressMannequin": "Disabilita Vesti Manichino",
"disableFixShower": "Disabilita Ripara Doccia",
"disableMakeBurger": "Disabilita Prepara Burger",
"disableMakeBurger": "Disabilita Prepara Hamburger",
"disablePickUpTowels": "Disabilita Raccogli Asciugamani",
"disablePolishRuby": "Disabilita Lucida Rubino",
"disablePutAwayPistols": "Disabilita Metti a Posto Pistole",
"disablePutAwayRifles": "Disabilita Metti a Posto Fucili",
"disablePutAwayPistols": "Disabilita Metti a Posto le Pistole",
"disablePutAwayRifles": "Disabilita Metti a Posto i Fucili",
"disableRewindTapes": "Disabilita Riavvolgi Nastri",
"disableResetBreaker": "Disabilita Resetta Interruttore",
"disableSortRecords": "Disabilita Smista Documenti",
"disableResetBreaker": "Disabilita Ripristina Interruttori",
"disableSortRecords": "Disabilita Smista Registri",
"disableStartFans": "Disabilita Avvia Ventilatori",
"disableUnlockSafe": "Disabilita Apri Cassaforte",
"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",
"disableCrankGenerator": "Disabilita Gira Generatore",
"disableExtractFuel": "Disabilita Estrai Carburante",
"disableFixAntenna": "Disabilita Ripara Antenna",
"disableHelpCritter": "Disabilita Aiuta la Creatura",
"disableHelpCritter": "Disabilita Aiuta l'Animale",
"disableHoistSupplies": "Disabilita Solleva Provviste",
"disableLiftWeights": "Disabilita Solleva Pesi",
"disableMineOres": "Disabilita Estrai Minerali",
"disablePlayVideoGame": "Disabilita Gioca ai Videogiochi",
"disablePlayVideoGame": "Disabilita Gioca al Videogioco",
"disablePolishGem": "Disabilita Lucida Gemma",
"disableReplaceParts": "Disabilita Sostituisci Parti",
"disableRoastMarshmallow": "Disabilita Arrostisci Marshmallow",
"disableThrowFisbee": "Disabilita Lancia Frisbee",
"disableFindSignal": "Disabilita Trova Segnale",
"disableMiscCommonTasks": "Disabilita Incarichi Comuni",
"disableEnterIdCode": "Disabilita Inserisci Codice ID",
"disableFixWiring": "Disabilita Ripara Cavi",
"disableSwipeCard": "Disabilita Passa la Carta",
"disableSwipeCard": "Disabilita Striscia Carta",
"disableMiscShortTasks": "Disabilita Incarichi Corti",
"disableAssembleArtifact": "Disabilita Assembla Manufatto",
"disableChartCourse": "Disabilita Traccia la Rotta",
"disableChartCourse": "Disabilita Traccia Rotta",
"disableCleanO2Filter": "Disabilita Pulisci Filtro O2",
"disableCleanVent": "Disabilita Pulisci Condotto",
"disableMonitorMushroom": "Disabilita Monitora Fungo",
"disableMonitorTree": "Disabilita Controlla Albero",
"disablePrimeShields": "Disabilita Innesca Scudi",
"disablePrimeShields": "Disabilita Avvia Scudi",
"disableRecordTemperature": "Disabilita Registra Temperatura",
"disableStabilizeSteering": "Disabilita Stabilizza Rotta",
"disableStabilizeSteering": "Disabilita Stabilizza Timone",
"disableStoreArtifacts": "Disabilita Conserva Manufatti",
"disableUnlockManifolds": "Disabilita Sblocca Collettori",
"disableMiscLongTasks": "Disabilita Incarichi Lunghi",
"disableAlignEngineOutput": "Disabilita Allinea Uscita Motore",
"disableAlignEngineOutput": "Disabilita Allinea Potenza Motori",
"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 Incarichi Misti",
"disableCalibrateDistributor": "Disabilita Calibra Distributore",
"disableDivertPower": "Disabilita Devia Energia",
"disableEmptyGarbage": "Disabilita Svuota Spazzatura",
"disableFuelEngines": "Disabilita Fai Rifornimento Motori",
"disableSubmitScan": "Disabilita Esegui Scansione",
"disableFuelEngines": "Disabilita Rifornisci Motori",
"disableSubmitScan": "Disabilita Invia 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 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 di lingua è stato ricaricato con successo.\nPer applicare tutte le modifiche, riavvia il gioco.",
"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": "ATTENZIONE: L'impostazione 'Nessuna Fine Partita' è Abilitata",
"tooLongTemplate": "Il tuo template supera i 120 caratteri e verrai kickato se viene inviato. Per favore, riducine la lunghezza.",
"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 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": "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 kickato per aver inviato una parola vietata {1} volta/e",
"pluginWarning": "<color=red><size=5><b>ATTENZIONE:</color></b></size>\n<size=3><b>Hai 2 o più plugin attivi rilevati.</size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod.\nSe riscontri dei bug, molto probabilmente sono dovuti a incompatibilità.",
"allCommandsFull": "<b>TUTTI I COMANDI:</b>\n\n<b>/help</b>\nMostra questo messaggio. \n<b>/aur, /socials</b>\nInvia i link di Among Us Revamped. \n\n<b>/r, /gm</b>\nInvia la descrizione della modalità corrente o l'elenco delle abilità. \n<b>/l, /lastgame</b>\nInvia informazioni sull'ultimo vincitore. \n\n<b>/0kc, /0killcooldown</b>\nInvia la descrizione della modalità 0 Ricarica Uccisioni. \n<b>/sns, /shiftandseek</b>\nInvia la descrizione della modalità Clone. \n<b>/sp, /speedrun</b>\nInvia la descrizione della modalità Speedrun. \n\n/<b>kick, /ban</b>\nEspelle o banna un giocatore dal nome. \n<b>/ckick, /cban</b>\nEspelle o banna un giocatore dal colore. \n\n<b>/vip /moderator /admin</b>\nAggiunge un giocatore come VIP, Moderatore o Amministratore. \n<b>/removevip, /removemoderator, /removeadmin</b>\nRimuove VIP, Moderatore o Amministratore da un giocatore. \n\n<b>/eg, /endgame</b>\nTermina la partita in corso. \n<b>/em, /endmeeting</b>\nTermina la riunione in corso. \n<b>/s, /start</b>\nInizia il conto alla rovescia per l'avvio. \n\n<b>/t {template}</b>\nInvia un template da AUR-DATA/templates.txt. \n\n<b>/col, /color, /colour</b>\nCambia il tuo colore, può essere usato per aggirare le restrizioni di colore. ",
"translationReloaded": "Il tuo file della lingua è stato ripristinato con successo. \nPer applicare tutte le modifiche, riavvia il gioco. ",
"templateWelcome": "# In questo file puoi creare template, che possono servire come semplice alternativa al copia-incolla. \n# Per creare un template, scrivi una nuova riga con la stessa formattazione del template di test qui sotto. \n# I template non possono essere più lunghi di 120 caratteri e non possono contenere caratteri speciali. In caso contrario, verrai espulso. \n\ntest: questo è un esempio di template. Scrivi '/t test', per vederlo. \n\nwelcome: Benvenuti! Questa Lobby Utilizza Among Us Revamped {ModVersion} di MV. Divertitevi! ",
"moderatorWelcome": "# In questo file puoi aggiungere Moderatori tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome viola nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi dei Moderatori. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000",
"vipWelcome": "# In questo file puoi aggiungere VIP tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome giallo nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi dei VIP. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"adminWelcome": "# In questo file puoi aggiungere Amministratori tramite Codice Amico. \n# Se aggiungi qualcuno, riceverà un nome rosso nel gioco. \n# Vai su 'Impostazioni di Sistema' nel gioco per modificare i permessi degli Amministratori. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"banlistWelcome": "# In questo file puoi bannare i giocatori dalle tue lobby tramite Codice Amico. \n# Se banni qualcuno in gioco, verrà automaticamente aggiunto a questo file. Di seguito è riportato un esempio di Codice Amico. \n\nfriendcode#0000\n",
"banwordWelcome": "# In questo file puoi creare parole vietate, espellendo automaticamente chi dice queste parole scritte qui. \n# Nota bene, per separare le parole devi usare delle nuove righe. ",
"bannameWelcome": "# In questo file puoi creare nomi vietati, espellendo automaticamente chi utilizza i nomi scritti qui. \n# Nota bene, per separare i nomi devi usare delle nuove righe. ",
"languageWelcome": "# In questo file puoi impostare la lingua del tuo Among Us Revamped. \n# Per impostare la lingua, scrivi una delle lingue supportate in una nuova riga. L'impostazione predefinita è l'inglese. \n# Lingue supportate: English, Spanish, SimplifiedChinese, Italian\n\nItalian",
"noGameEndWarning": "ATTENZIONE: Impostazione 'Nessuna Fine Partita' Attivata",
"tooLongTemplate": "Il tuo template è più lungo di 120 caratteri e verrai espulso 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 Amministratore. ",
"vipRemove": "VIP rimosso con successo da {0}. ",
"moderatorRemove": "Moderatore rimosso con successo da {0}. ",
"adminRemove": "Amministratore rimosso con successo da {0}. ",
"permFail": "Impossibile trovare il giocatore '{0}'. Assicurati di aver scritto il nome correttamente. ",
"helpDesc": "Mostra tutti i Comandi e cosa fanno. ",
"snsDesc": "Invia la descrizione della modalità Clone. ",
"0kcDesc": "Invia la descrizione della modalità 0 Ricarica Uccisioni. ",
"SrDesc": "Invia la descrizione della modalità Speedrun. ",
"egDesc": "Termina la partita in corso. ",
"emDesc": "Termina la riunione in corso. ",
"aurDesc": "Invia i Link di Among Us Revamped. ",
"sDesc": "Inizia il conto alla rovescia per l'avvio. ",
"rDesc": "/r Invia le abilità attivate o la modalità corrente. ",
"rolesDesc": "Invia una panoramica di tutte le abilità/modalità. ",
"kickDesc": "Espelle il giocatore dal nome. ",
"ckickDesc": "Espelle il giocatore dal colore. ",
"banDesc": "Banna il giocatore dal nome. ",
"cbanDesc": "Banna il giocatore dal colore. ",
"dumpDesc": "Copia LogOutput in un file separato. ",
"colDesc": "Cambia il tuo colore. ",
"reloadDesc": "Ricarica il file della lingua. ",
"vipDesc": "Aggiunge il giocatore come VIP. ",
"moderatorDesc": "Aggiunge il giocatore come Moderatore. ",
"adminDesc": "Aggiunge il giocatore come Amministratore. ",
"cremoveVipDesc": "Rimuove il VIP dal giocatore. ",
"removeModeratorDesc": "Rimuove il Moderatore dal giocatore. ",
"removeAdminDesc": "Rimuove l'Amministratore dal giocatore. ",
"lastgameDesc": "Invia informazioni sull'ultima partita. ",
"templateDesc": "Invia un template specifico da AUR-DATA/templates.txt. ",
"banWordKick": "{0} è stato espulso perché ha inviato una parola vietata {1} volta/e. ",
"pluginWarning": "<color=red><size=5><b>ATTENZIONE:</color></b></size>\n<size=3><b>Hai 2 o più plugin attivi rilevati. </size></b>\nAmong Us Revamped non è compatibile con la maggior parte delle mod. \nSe riscontri dei bug, quasi certamente sono dovuti a incompatibilità. ",
"systemSettings": "Impostazioni di Sistema",
"gameplaySettings": "Impostazioni di Gioco",
"gamemodeSettings": "Impostazioni Modalità",
"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.",
"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 Determinate Modalità di Gioco. ",
"everyone": "Tutti",
"vipAndAbove": "<color=yellow>VIP</color> E Superiori",
"moderatorAndAbove": "<color=purple>Moderatore</color> E Superiori",
"admin": "<color=red>Admin</color>",
"admin": "<color=red>Amministratore</color>",
"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",
"seekerDesc": "Aggiunge il giocatore come cercatore in nascondino. ",
"seekersDesc": "Mostra tutti i cercatori selezionati manualmente. ",
"clearSeekerDesc": "Pulisce l'elenco di tutti i cercatori selezionati 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",
"gameMasterWarning": "Osserverai le partite mentre la modalità spettatore è attiva. ATTENZIONE: L'assegnazione dei ruoli potrebbe essere errata se questa impostazione è attivata. ",
"startWordsWelcome": "# In questo file puoi creare parole che serviranno a 'Espellere i Giocatori Che Dicono Start'. \n# 'Modalità di rilevamento rigorosa' OFF = I messaggi devono corrispondere perfettamente alle parole specificate. 'Modalità di rilevamento rigorosa' ON = I messaggi richiedono solo determinate parole. \n# Puoi anche aggiungere parole non correlate, che verranno rilevate solo nella lobby. \n\nstart\nbegin\ncommence\nstart\ninizia\n",
"gameMasterWarningTwo": "ATTENZIONE: Modalità Game Master Attivata",
"startWordKick": "{0} è stato espulso perché ha 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",
"clearedSeekers": "Elenco dei cercatori selezionati manualmente pulito con successo. ",
"tabGroupLevelKick": "Moderazione per Livello",
"enableKickLowLevelPlayer": "Espelli Giocatori di Basso Livello",
"tabGroupKickInvalidFriendCodes": "Codici Amico Non Validi",
"tabGroupAutoKickStart": "Parole di Start",
"autoKickStartTimes": "Messaggi di Start inviati necessari per il kick",
"tabGroupAutoKickStart": "Parola Start",
"autoKickStartTimes": "Messaggi Start inviati necessari per l'espulsione",
"tabGroupAutostart": "AutoHost",
"rehost": "Ricrea Automaticamente Lobby In Caso di Crash",
"public": "Rendi Automaticamente la Nuova Lobby Pubblica",
"mapVoteDuration": "Durata della Votazione per le Mappe",
"rehost": "Ricrea Automaticamente la Lobby al Crash",
"public": "Rendi Automaticamente Pubblica la Nuova Lobby",
"mapVoteDuration": "Durata Votazione Mappe",
"tabGroupDeniedWords": "Parole Vietate",
"enableDeniedWords": "Kicka Giocatori Che Pronunciano Parole Vietate",
"enableDeniedWords": "Espelli i Giocatori Che Dicono 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",
"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 perché ha inviato una parola da DeniedWords.txt {1} volta/e. ",
"startWordBan": "{0} è stato bannato perché ha inviato una parola da 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",
"moderationSettingsDesc": "Impostazioni di Moderazione per combattere tossicità e cattivi comportamenti. ",
"rehostSuccess": "La Lobby È Stata Ricreata Con Successo",
"enableKickHighLevelPlayer": "Espelli Giocatori di Alto Livello",
"kickHighLevelPlayer": "Espelli Giocatori Sopra il Livello",
"kick": "Espelli",
"ban": "Banna",
"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",
"afkNotify": "{0} È Stato AFK per {1}sec",
"afkKick": "{0} È Stato AFK per {1}sec, espulsione giocatore",
"afkBan": "{0} È Stato AFK per {1}sec, ban 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"
"timeBeforeMapPoll": "Tempo Prima dell'Inizio Votazione Mappe",
"pnsDisableSabotage": "Disabilita Sabotaggi Critici in Modalità Nascondino Fantasma",
"pnsDisableCloseDoor": "Disabilita Sabotaggio Porte in Modalità Nascondino Fantasma",
"tabGroupPNS": "Nascondino Fantasma",
"badMoveTimeToSuicide": "I Fantasmi Si Suicidano Dopo Movimento Visibile Dopo",
"snsImpostorCanVent": "Gli Impostori Possono Entrare nelle Botole",
"pnsDesc": "Invia Informazioni sulla Modalità Nascondino Fantasma. ",
"modeVoteDuration": "Tempo di Votazione per la Modalità",
"snsChatInGameExtendTwo": "Invia info ampliate dopo l'inizio del gioco",
"snsChatInGameFast": "Riunioni Veloci (sperimentale+)",
"shieldFirstDeath": "Proteggi il Giocatore Morto Per Primo",
"shieldFirstDeathDuration": "Durata dello Scudo",
"snsTwoDesc": "Invia Descrizione Ampliata di Clone. ",
"modeVoteDesc": "Inizia la Votazione tra tutte le modalità. ",
"automaticModePoll": "/gmvote Automatico Dopo il Rientro",
"tabGroupCustomizeSabotages": "Personalizza Sabotaggi",
"customizeSabotages": "Abilita Personalizzazione Sabotaggi",
"sabotageCooldown": "Ricarica Sabotaggi Critici",
"skeldReactorDuration": "Durata Sabotaggio Reattore su Skeld",
"skeldO2Duration": "Durata Sabotaggio O2 su Skeld",
"miraReactorDuration": "Durata Sabotaggio Reattore su Mira",
"miraO2Duration": "Durata Sabotaggio O2 su Mira",
"polusReactorDuration": "Durata Sabotaggio Reattore su Polus",
"airshipReactorDuration": "Durata Sabotaggio Reattore su Airship",
"fungleReactorDuration": "Durata Sabotaggio Reattore su Fungle",
"fungleMushroomMixupDuration": "Durata Sabotaggio Mixup Fungo",
"privateDesc": "Cambia la Visibilità della Lobby in Privata. ",
"publicDesc": "Cambia la Visibilità della Lobby in Pubblica. "
}
+49 -1
View File
@@ -349,5 +349,53 @@
"shieldFirstDeathDuration": "シールド持続時間",
"snsTwoDesc": "Shift and Seekの拡張説明を送信。",
"modeVoteDesc": "すべてのゲームモードから投票を開始します。",
"automaticModePoll": "再参加後に自動で /gmvote を実行"
"automaticModePoll": "再参加後に自動で /gmvote を実行",
"tabGroupCustomizeSabotages": "サボタージュのカスタマイズ",
"customizeSabotages": "サボタージュのカスタマイズを有効にする",
"sabotageCooldown": "緊急サボタージュのクールダウン",
"skeldReactorDuration": "Skeld 原子炉サボタージュの持続時間",
"skeldO2Duration": "Skeld 酸素サボタージュの持続時間",
"miraReactorDuration": "Mira 原子炉サボタージュの持続時間",
"miraO2Duration": "Mira 酸素サボタージュの持続時間",
"polusReactorDuration": "Polus 原子炉サボタージュの持続時間",
"airshipReactorDuration": "Airship 原子炉サボタージュの持続時間",
"fungleReactorDuration": "Fungle 原子炉サボタージュの持続時間",
"fungleMushroomMixupDuration": "Fungle キノコ幻覚の持続時間",
"privateDesc": "ロビーを非公開に設定します。",
"publicDesc": "ロビーを公開に設定します。",
"mapVoteDesc": "選択したマップの中から投票を開始します。",
"modeVoteDesc": "選択したゲームモードの中から投票を開始します。",
"tabGroupAnticheat": "アンチチート",
"hackingPunishment": "チートへの処罰",
"detectBadRPC": "無効な RPC を検出",
"detectBadSabotage": "無効なサボタージュを検出",
"detectBadVent": "無効なベントを検出",
"detectBadTask": "無効なタスク完了を検出",
"detectBadKill": "無効なキルを検出",
"detectBadAnimation": "無効なアニメーションを検出",
"detectBadMeeting": "無効な会議を検出",
"customizeMapVote": "マップ投票をカスタマイズ",
"includeSkeld": "Skeld を含める",
"includeMira": "Mira を含める",
"includePolus": "Polus を含める",
"includeAirship": "Airship を含める",
"includeFungle": "Fungle を含める",
"includeDleks": "Dleks を含める",
"customizeModeVote": "ゲームモード投票をカスタマイズ",
"includeStandard": "スタンダードを含める",
"includeNoKillCooldown": "キルクールダウン 0 を含める",
"includeShiftAndSeek": "Shift And Seek を含める",
"includePoofAndSeek": "Poof And Seek を含める",
"includeSpeedrun": "Speedrun を含める",
"tabGroupGameplayMapModifications": "マップの変更",
"disableChatModifier": "チャット変更を無効化",
"snsSuicideMode": "シールドシステムを無効化",
"tabGroupNoKcd": "キルクールダウン0秒",
"disablePeacePeriod": "5秒間の平和時間を無効化"
}
+46 -1
View File
@@ -350,5 +350,50 @@
"shieldFirstDeathDuration": "Длительность Щита",
"snsTwoDesc": "Отправить Увеличенное Описание Клона.",
"modeVoteDesc": "Начать Голосование между всеми режимами.",
"automaticModePoll": "Автоматический /gmvote После Перезахода"
"automaticModePoll": "Автоматический /gmvote После Перезахода",
"tabGroupCustomizeSabotages": "Кастомизировать Саботажи",
"customizeSabotages": "Включить Кастомизацию Сабботажей",
"sabotageCooldown": "Перезарядка Критических Сабботажей",
"skeldReactorDuration": "Длительность Сабботажа Реактора на Skeld",
"skeldO2Duration": "Длительность Сабботажа O2 на Skeld",
"miraReactorDuration": "Длительность Сабботажа Реактора на Mira",
"miraO2Duration": "Длительность Сабботажа O2 на Mira",
"polusReactorDuration": "Длительность Сабботажа Реактора на Polus",
"airshipReactorDuration": "Длительность Сабботажа Реактора на Airship",
"fungleReactorDuration": "Длительность Сабботажа Реактора на Fungle",
"fungleMushroomMixupDuration": "Длительность Сабботажа Грибного Переполоха",
"privateDesc": "Изменяет Публичность Лобби на Приватный.",
"publicDesc": "Изменяет Публичность Лобби на Публичный.",
"tabGroupAnticheat": "Античит",
"hackingPunishment": "Наказание за Читерство",
"detectBadRPC": "Обнаруживать Неправильные RPC",
"detectBadSabotage": "Обнаруживать Неправильные Sabotages",
"detectBadVent": "Обнаруживать Неправильные Уходы в Люк",
"detectBadTask": "Обнаруживать Неправильные Выполнения Заданий",
"detectBadKill": "Обнаруживать Неправильные Убийства",
"detectBadAnimation": "Обнаруживать Неправильные Анимации",
"detectBadMeeting": "Обнаруживать Неправильные Собрания",
"customizeMapVote": "Кастомизировать Голосование За Карты",
"includeSkeld": "Включить Skeld",
"includeMira": "Включить Mira",
"includePolus": "Включить Polus",
"includeAirship": "Включить Airship",
"includeFungle": "Включить Fungle",
"includeDleks": "Включить Dleks",
"customizeModeVote": "Кастомизировать Голосование За Режим",
"includeStandard": "Включить Стандарт",
"includeNoKillCooldown": "Включить 0 Перезарядка Убийств",
"includeShiftAndSeek": "Включить Клона",
"includePoofAndSeek": "Включить Фантомные Прятки",
"includeSpeedrun": "Включить Спидран",
"tabGroupGameplayMapModifications": "Модификации Карт",
"disableChatModifier": "Выключить Модификации Чата",
"snsSuicideMode": "Выключить Систему Щитов",
"tabGroupNoKcd": "0 Перезарядка Убийств",
"disablePeacePeriod": "Выключить Мирный Период Первые 5 секунд"
}
+49 -1
View File
@@ -336,5 +336,53 @@
"shieldFirstDeathDuration": "护盾持续时间",
"snsTwoDesc": "发送 Shift and Seek 扩展说明。",
"modeVoteDesc": "在所有游戏模式之间发起投票。",
"automaticModePoll": "重新加入后自动执行 /gmvote"
"automaticModePoll": "重新加入后自动执行 /gmvote",
"tabGroupCustomizeSabotages": "自定义破坏",
"customizeSabotages": "启用自定义破坏",
"sabotageCooldown": "紧急破坏冷却时间",
"skeldReactorDuration": "Skeld 反应堆破坏持续时间",
"skeldO2Duration": "Skeld 氧气破坏持续时间",
"miraReactorDuration": "Mira 反应堆破坏持续时间",
"miraO2Duration": "Mira 氧气破坏持续时间",
"polusReactorDuration": "Polus 反应堆破坏持续时间",
"airshipReactorDuration": "Airship 反应堆破坏持续时间",
"fungleReactorDuration": "Fungle 反应堆破坏持续时间",
"fungleMushroomMixupDuration": "Fungle 蘑菇幻觉持续时间",
"privateDesc": "将房间改为私人。",
"publicDesc": "将房间改为公开。",
"mapVoteDesc": "在选定的地图之间发起投票。",
"modeVoteDesc": "在选定的游戏模式之间发起投票。",
"tabGroupAnticheat": "反作弊",
"hackingPunishment": "作弊惩罚",
"detectBadRPC": "检测无效 RPC",
"detectBadSabotage": "检测无效破坏",
"detectBadVent": "检测无效钻管",
"detectBadTask": "检测无效任务完成",
"detectBadKill": "检测无效击杀",
"detectBadAnimation": "检测无效动画",
"detectBadMeeting": "检测无效会议",
"customizeMapVote": "自定义地图投票",
"includeSkeld": "包含 Skeld",
"includeMira": "包含 Mira",
"includePolus": "包含 Polus",
"includeAirship": "包含 Airship",
"includeFungle": "包含 Fungle",
"includeDleks": "包含 Dleks",
"customizeModeVote": "自定义游戏模式投票",
"includeStandard": "包含标准模式",
"includeNoKillCooldown": "包含 0 击杀冷却",
"includeShiftAndSeek": "包含SnS",
"includePoofAndSeek": "包含PnS",
"includeSpeedrun": "包含速通",
"tabGroupGameplayMapModifications": "地图修改",
"disableChatModifier": "禁用聊天修改",
"snsSuicideMode": "禁用护盾系统",
"tabGroupNoKcd": "0 秒击杀冷却",
"disablePeacePeriod": "禁用 5 秒和平期"
}
+46 -5
View File
@@ -248,7 +248,6 @@
"seekerDesc": "Marca al jugador como buscador en HnS.",
"seekersDesc": "Muestra los buscadores elegidos manualmente.",
"clearSeekerDesc": "Borra la lista manual de buscadores.",
"mapVoteDesc": "Inicia una votación entre los 5 mapas principales.",
"allMapVoteDesc": "Inicia una votación entre los 6 mapas, incluido Eht Dleks.",
"aurDesc": "Envía los enlaces sociales de Among Us Revamped.",
"sDesc": "Inicia la cuenta regresiva de la partida.",
@@ -294,17 +293,59 @@
"moderatorAndAbove": "<color=purple>Moderador</color> o superior",
"admin": "<color=red>Administrador</color>",
"onlyYou": "Solo tú",
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
"snsImpostorCanVent": "Los impostores pueden usar conductos",
"snsImpostorCanVent": "Los impostores pueden usar conductos"
"modeVoteDuration": "Duración de la votación de modo de juego",
"snsChatInGameExtendTwo": "Enviar información ampliada al iniciar la partida",
"snsChatInGameFast": "Reunión más rápida (experimental+)",
"snsChatInGameFast": "Reunión más rápida (experimental+),
"shieldFirstDeath": " Proteger al primer jugador que murió",
"shieldFirstDeathDuration": "Duración de la protección",
"snsTwoDesc": "Enviar la descripción ampliada de Shift and Seek.",
"modeVoteDesc": "Inicia una votación entre todos los modos de juego.",
"automaticModePoll": "/gmvote automático al volver a la sala"
"automaticModePoll": "/gmvote automático al volver a la sala",
"tabGroupCustomizeSabotages": "Personalizar sabotajes",
"customizeSabotages": "Activar personalización de sabotajes",
"sabotageCooldown": "Tiempo de espera de sabotajes críticos",
"skeldReactorDuration": "Duración del reactor en Skeld",
"skeldO2Duration": "Duración del O2 en Skeld",
"miraReactorDuration": "Duración del reactor en Mira HQ",
"miraO2Duration": "Duración del O2 en Mira HQ",
"polusReactorDuration": "Duración del reactor en Polus",
"airshipReactorDuration": "Duración del reactor en Airship",
"fungleReactorDuration": "Duración del reactor en Fungle",
"fungleMushroomMixupDuration": "Duración de la mezcla de hongos en Fungle",
"privateDesc": "Cambia la visibilidad de la sala a privada.",
"publicDesc": "Cambia la visibilidad de la sala a pública.",
"mapVoteDesc": "Inicia una votación entre los mapas seleccionados.",
"modeVoteDesc": "Inicia una votación entre los modos de juego seleccionados.",
"tabGroupAnticheat": "Antitrampas",
"hackingPunishment": "Castigo por hacer trampa",
"detectBadRPC": "Detectar RPC inválidos",
"detectBadSabotage": "Detectar sabotajes inválidos",
"detectBadVent": "Detectar uso inválido de ventilas",
"detectBadTask": "Detectar tareas completadas de forma inválida",
"detectBadKill": "Detectar asesinatos inválidos",
"detectBadAnimation": "Detectar animaciones inválidas",
"detectBadMeeting": "Detectar reuniones inválidas",
"customizeMapVote": "Personalizar votación de mapas",
"includeSkeld": "Incluir Skeld",
"includeMira": "Incluir Mira HQ",
"includePolus": "Incluir Polus",
"includeAirship": "Incluir Airship",
"includeFungle": "Incluir Fungle",
"includeDleks": "Incluir Dleks",
"customizeModeVote": "Personalizar votación de modos de juego",
"includeStandard": "Incluir Estándar",
"includeNoKillCooldown": "Incluir 0 s de espera para matar",
"includeShiftAndSeek": "Incluir Shift and Seek",
"includePoofAndSeek": "Incluir Poof and Seek",
"includeSpeedrun": "Incluir Speedrun",
"tabGroupGameplayMapModifications": "Modificaciones de mapas",
"disableChatModifier": "Desactivar modificaciones del chat",
"snsSuicideMode": "Desactivar sistema de escudos",
"tabGroupNoKcd": "0 s de espera para matar",
"disablePeacePeriod": "Desactivar período de paz de 5 s"
}