mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-22 07:36:05 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dfa6836d70 | ||
|
|
5afb0bcb20 | ||
|
|
645ff86660 | ||
|
|
11fb96ccc2 | ||
|
|
ae1f4c7290 | ||
|
|
744da1b726 | ||
|
|
00e2a384c9 | ||
|
|
7dafbcf479 | ||
|
|
2e9d32b50d | ||
|
|
cde461c4a4 | ||
|
|
62d66e170b | ||
|
|
c201211afb | ||
|
|
cc1950f543 | ||
|
|
2764e073af | ||
|
|
6f53cacb32 | ||
|
|
f4d9d8101f | ||
|
|
f18dc3fa31 | ||
|
|
0d55683088 | ||
|
|
9572c8ca53 |
No files matched your search
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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.0";
|
||||
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();
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BepInEx.Unity.IL2CPP" Version="6.0.0-be.735" ExcludeAssets="runtime;native" />
|
||||
|
||||
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
|
||||
<PackageReference Include="AmongUs.GameLibs.Android" Version="2025.10.14" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
|
||||
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.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" />
|
||||
<PackageReference Include="BepInEx.IL2CPP.MSBuild" Version="2.1.0-rc.1" PrivateAssets="all" ExcludeAssets="runtime" />
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
+148
-18
@@ -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,13 +337,15 @@ 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;
|
||||
public static OptionItem SNSChatInGameExtend2;
|
||||
public static OptionItem SNSChatInGameFast;
|
||||
public static OptionItem CrewAutoWinsGameAfter;
|
||||
public static OptionItem MisfiresToSuicide;
|
||||
public static OptionItem SNSDisableSabotage;
|
||||
public static OptionItem SNSDisableReactor;
|
||||
public static OptionItem SNSDisableOxygen;
|
||||
@@ -311,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;
|
||||
@@ -413,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);
|
||||
@@ -446,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
|
||||
|
||||
@@ -467,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);
|
||||
@@ -476,7 +566,6 @@ namespace AmongUsRevamped
|
||||
.SetParent(SNSChatInGame);
|
||||
SNSChatInGameFast = BooleanOptionItem.Create(70054, Translator.Get("snsChatInGameFast"), false, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSChatInGame);
|
||||
MisfiresToSuicide = IntegerOptionItem.Create(70055, Translator.Get("misfiresToSuicide"), new(1, 10, 1), 1, TabGroup.GamemodeSettings, false);
|
||||
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70056, Translator.Get("crewAutoWinsGameAfter"), new(60, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
SNSDisableSabotage = BooleanOptionItem.Create(70057, Translator.Get("snsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
|
||||
@@ -502,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);
|
||||
@@ -569,9 +659,47 @@ namespace AmongUsRevamped
|
||||
DisableMushroomMixup = BooleanOptionItem.Create(60462, Translator.Get("disableMushroomMixup"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableCloseDoor = BooleanOptionItem.Create(60566, Translator.Get("disableCloseDoor"), false, TabGroup.ModSettings, false)
|
||||
DisableCloseDoor = BooleanOptionItem.Create(60463, Translator.Get("disableCloseDoor"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(Color.red);
|
||||
|
||||
|
||||
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);
|
||||
@@ -580,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
@@ -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");
|
||||
}
|
||||
}
|
||||
+20
-21
@@ -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)
|
||||
{
|
||||
@@ -129,6 +129,7 @@ public static class FixedUpdate
|
||||
{
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
}
|
||||
p.Data.MarkDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,12 +166,6 @@ class FixedUpdateInGamePatch
|
||||
private static float t;
|
||||
private static GameObject settingsLabel;
|
||||
|
||||
public static bool CanUseKillButton(PlayerControl pc)
|
||||
{
|
||||
pc.Data.Role.CanUseKillButton = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void Postfix(PlayerControl __instance)
|
||||
{
|
||||
if (__instance == null || __instance.PlayerId == 255 || !AmongUsClient.Instance.AmHost) return;
|
||||
@@ -208,13 +203,15 @@ class FixedUpdateInGamePatch
|
||||
break;
|
||||
|
||||
case 1: // SnS
|
||||
if (Utils.InGame) return;
|
||||
if (Main.NormalOptions.KillCooldown != 2.5f)
|
||||
if (!Utils.InGame)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 2.5f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
if (Main.NormalOptions.KillCooldown != 2.5f)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 2.5f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -222,18 +219,20 @@ class FixedUpdateInGamePatch
|
||||
break;
|
||||
|
||||
case 3: // PnS
|
||||
if (Utils.InGame) return;
|
||||
if (Main.NormalOptions.KillCooldown != 1f)
|
||||
if (!Utils.InGame)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 1f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
if (Main.NormalOptions.KillCooldown != 1f)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 1f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance)
|
||||
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance && Main.GameTimer > 6)
|
||||
{
|
||||
// 1 = Shift and Seek
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && Options.CrewAutoWinsGameAfter.GetInt() != 0 && !Options.NoGameEnd.GetBool())
|
||||
@@ -260,7 +259,7 @@ class FixedUpdateInGamePatch
|
||||
}
|
||||
}
|
||||
// 3 = Poof and Seek
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek && !Options.NoGameEnd.GetBool())
|
||||
{
|
||||
if (Main.GameTimer > Options.PNSCrewAutoWinsGameAfter.GetInt())
|
||||
{
|
||||
|
||||
@@ -7,7 +7,9 @@ namespace AmongUsRevamped;
|
||||
|
||||
public static class OptionManager
|
||||
{
|
||||
private static OptionBackupData CachedOptions;
|
||||
private static float OldKillCooldown;
|
||||
private static float OldGuardianCooldown;
|
||||
|
||||
public static void SyncGameOptions()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
@@ -29,17 +31,28 @@ public static class OptionManager
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
CachedOptions = new OptionBackupData(GameOptionsManager.Instance.CurrentGameOptions);
|
||||
OldKillCooldown = Main.NormalOptions.KillCooldown;
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
OldGuardianCooldown = GuardianAngelOptions.ProtectionDurationSeconds;
|
||||
}
|
||||
}
|
||||
|
||||
public static void RestoreOptions()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || CachedOptions == null) return;
|
||||
|
||||
var restored = CachedOptions.Restore(GameOptionsManager.Instance.CurrentGameOptions);
|
||||
|
||||
GameOptionsManager.Instance.CurrentGameOptions = restored;
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if (Main.NormalOptions.KillCooldown != OldKillCooldown)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
+125
-33
@@ -38,7 +38,6 @@ public static class Utils
|
||||
|
||||
public static bool IsFreePlay => AmongUsClient.Instance.NetworkMode == NetworkModes.FreePlay;
|
||||
public static bool IsMeeting => InGame && (MeetingHud.Instance);
|
||||
public static bool GamePastRoleSelection => Main.GameTimer > 10f;
|
||||
public static bool HandlingGameEnd;
|
||||
public static byte CustomGameOverReason;
|
||||
public static bool CanCallMeetings;
|
||||
@@ -201,6 +200,8 @@ public static class Utils
|
||||
|
||||
public static void ClearLeftoverData()
|
||||
{
|
||||
Logger.Info(" Cleared Leftover Data", "Utils");
|
||||
|
||||
RpcSetTasksPatch.GlobalTaskIds = null;
|
||||
HandlingGameEnd = false;
|
||||
OnGameJoinedPatch.AutoStartCheck = false;
|
||||
@@ -217,7 +218,6 @@ public static class Utils
|
||||
NormalGameEndChecker.ImpCheckComplete = false;
|
||||
CreateOptionsPickerPatch.SetDleks2 = false;
|
||||
CanCallMeetings = true;
|
||||
PlayerControlSetRolePatch.FirstAssign = true;
|
||||
|
||||
PlayerControlCompleteTaskPatch.playerTasksCompleted.Clear();
|
||||
PlayerControlCompleteTaskPatch.tasksPerPlayer.Clear();
|
||||
@@ -227,6 +227,7 @@ public static class Utils
|
||||
|
||||
OnPlayerJoinedPatch.JoinNum = 0;
|
||||
|
||||
PlayerControlSetRolePatch.ProcessedPlayers.Clear();
|
||||
PlayerControlSetRolePatch.Seekers.Clear();
|
||||
PlayerControlSetRolePatch.FirstAssign = true;
|
||||
PlayerControlSetRolePatch.manualSeekers.Clear();
|
||||
@@ -604,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;
|
||||
|
||||
@@ -641,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);
|
||||
}
|
||||
@@ -662,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);
|
||||
}
|
||||
@@ -700,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;
|
||||
|
||||
@@ -725,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);
|
||||
}
|
||||
@@ -743,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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -755,9 +831,25 @@ public static class Utils
|
||||
speedrunVotes = 0;
|
||||
shiftAndSeekVotes = 0;
|
||||
poofAndSeekVotes = 0;
|
||||
HasVoted.Clear();
|
||||
HasModeVoted.Clear();
|
||||
|
||||
ModeVoteActive = false;
|
||||
}, Options.ModeVoteDuration.GetInt(), "ModePoll");
|
||||
}
|
||||
|
||||
// As of v2026.8.18, Innersloth bans the host for hacking if the start game button is pressed when any player is not Serialized (or something similar).
|
||||
// CheckValidData serves as an emergency blockage to prevent this and stop host from being kicked.
|
||||
public static bool CheckValidData()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
if (p == null || !p.hasBeenSerialized)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+157
-71
@@ -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, Crewmates have low tasks\nThink fast and pay attention!", "", 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, Crewmates have low tasks\nThink fast and pay attention!", "", 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, Crewmates have low tasks\nThink fast and pay attention!", "", 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, Crewmates have low tasks\nThink fast and pay attention!", "", 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("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -49,7 +49,7 @@ internal static class DisableDevice
|
||||
|
||||
public static void FixedUpdate()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !Utils.GamePastRoleSelection) return;
|
||||
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !OnGameStartPatch.PastStartScreen) return;
|
||||
frame = frame == 5 ? 0 : ++frame;
|
||||
if (frame != 0) return;
|
||||
|
||||
|
||||
+11
-10
@@ -11,9 +11,9 @@ public static class EndGameManagerPatch
|
||||
public static void Postfix(EndGameManager __instance)
|
||||
{
|
||||
Logger.Info(" -------- GAME ENDED --------", "EndGame");
|
||||
Utils.ClearLeftoverData();
|
||||
|
||||
//OptionManager.RestoreOptions();
|
||||
Utils.ClearLeftoverData();
|
||||
OptionManager.RestoreOptions();
|
||||
|
||||
EndGameNavigation navigation = __instance.Navigation;
|
||||
if (!AmongUsClient.Instance.AmHost || __instance == null || navigation == null || !Options.AutoRejoinLobby.GetBool()) return;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,27 @@ class ExileControllerWrapUpPatch
|
||||
public static void AfterExile(NetworkedPlayerInfo ejectedPlayer)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
|
||||
{
|
||||
if (Main.GM.Value && !Utils.IsDead)
|
||||
{
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
}
|
||||
|
||||
if (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;
|
||||
|
||||
PlayerControl pc = null;
|
||||
|
||||
@@ -20,12 +20,22 @@ public static class GameStartManagerUpdatePatch
|
||||
|
||||
__instance.MinPlayers = 1;
|
||||
|
||||
if (!Utils.CheckValidData())
|
||||
{
|
||||
__instance.StartButton.gameObject.SetActive(false);
|
||||
}
|
||||
else if (__instance.startState != GameStartManager.StartingStates.Countdown)
|
||||
{
|
||||
__instance.StartButton.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
if (Main.AutoStart.Value && OnGameJoinedPatch.AutoStartCheck && GameStartManager.InstanceExists && __instance.startState != GameStartManager.StartingStates.Countdown && GameData.Instance?.PlayerCount >= Options.PlayerAutoStart.GetInt())
|
||||
{
|
||||
__instance.startState = GameStartManager.StartingStates.Countdown;
|
||||
__instance.countDownTimer = Options.AutoStartTimer.GetFloat();
|
||||
__instance.StartButton.gameObject.SetActive(false);
|
||||
Autostarting = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (__instance.startState == GameStartManager.StartingStates.Countdown)
|
||||
|
||||
+33
-21
@@ -15,7 +15,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
//OptionManager.CacheOptions();
|
||||
OptionManager.CacheOptions();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
@@ -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;
|
||||
@@ -39,6 +39,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
OptionManager.SyncGameOptions();
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
p.Data.MarkDirty();
|
||||
Logger.Info($" {p.Data.PlayerName} has been granted a shield for {Options.ShieldFirstDeathDuration.GetInt()}s", "RoleInfo");
|
||||
}
|
||||
|
||||
@@ -63,33 +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 = 60f;
|
||||
}
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
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 = 8f;
|
||||
Main.NormalOptions.KillCooldown = 5f;
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 0.01f;
|
||||
Main.NormalOptions.KillCooldown = 0.001f;
|
||||
OptionManager.SyncGameOptions();
|
||||
}, 13f, "NoKcdEnabled");
|
||||
}
|
||||
@@ -98,12 +110,12 @@ internal static class CoShowIntroPatch
|
||||
{
|
||||
if (Options.PNSChatInGame.GetBool())
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 8f;
|
||||
Main.NormalOptions.KillCooldown = 5f;
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 0.01f;
|
||||
Main.NormalOptions.KillCooldown = 0.001f;
|
||||
OptionManager.SyncGameOptions();
|
||||
}, 18f, "NoKcdEnabled");
|
||||
}
|
||||
@@ -114,7 +126,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 0.01f;
|
||||
Main.NormalOptions.KillCooldown = 0.001f;
|
||||
OptionManager.SyncGameOptions();
|
||||
}, 13f, "NoKcdEnabled");
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ internal static class OnGameJoinedPatch
|
||||
public static bool AutoStartCheck;
|
||||
public static void Postfix()
|
||||
{
|
||||
Logger.Info(" -------- JOINED GAME --------", "OnGameJoined");
|
||||
Logger.Info(" -------- GAME JOINED --------", "OnGameJoined");
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
@@ -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(() =>
|
||||
@@ -100,7 +93,6 @@ class OnPlayerJoinedPatch
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void Postfix([HarmonyArgument(0)] ClientData Client)
|
||||
{
|
||||
Logger.Info($" {Client.PlayerName} / {Client.FriendCode} / {Client.PlatformData.Platform}", "Joined The Game");
|
||||
@@ -232,12 +224,14 @@ public static class ShowNotificationPatch
|
||||
|
||||
case DisconnectReasons.Sanctions:
|
||||
case DisconnectReasons.Hacking:
|
||||
case DisconnectReasons.Banned:
|
||||
Logger.Info($" {playerName} was banned from the game. ({reason})", "ShowNotificationPatch");
|
||||
Logger.SendInGame($" {playerName} was banned from the game. ({reason})");
|
||||
return false;
|
||||
|
||||
case DisconnectReasons.DuplicateConnectionDetected:
|
||||
case DisconnectReasons.ClientTimeout:
|
||||
case DisconnectReasons.Kicked:
|
||||
Logger.Info($" {playerName} was kicked from the game. ({reason})", "ShowNotificationPatch");
|
||||
Logger.SendInGame($" {playerName} was kicked from the game. ({reason})");
|
||||
return false;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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:
|
||||
|
||||
@@ -33,7 +33,7 @@ internal class CoStartGamePatch
|
||||
class PlayerControlSetRolePatch
|
||||
{
|
||||
public static bool FirstAssign;
|
||||
private static readonly HashSet<byte> ProcessedPlayers = new();
|
||||
public static readonly HashSet<byte> ProcessedPlayers = new();
|
||||
public static HashSet<byte> Seekers = new();
|
||||
public static HashSet<byte> manualSeekers = new();
|
||||
private static readonly System.Random rand = new System.Random();
|
||||
@@ -101,16 +101,10 @@ class PlayerControlSetRolePatch
|
||||
else roleType = RoleTypes.Crewmate;
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (roleType == RoleTypes.Impostor || roleType == RoleTypes.Phantom || roleType == RoleTypes.Viper) roleType = RoleTypes.Shapeshifter;
|
||||
}
|
||||
|
||||
if (ProcessedPlayers.Count >= PlayerControl.AllPlayerControls.Count)
|
||||
{
|
||||
Seekers.Clear();
|
||||
ProcessedPlayers.Clear();
|
||||
|
||||
FirstAssign = false;
|
||||
Logger.Info(" PCSRP successful", "RoleManaging");
|
||||
}
|
||||
|
||||
@@ -136,19 +130,21 @@ internal static class OnGameStartPatch
|
||||
if (MeetingHud.Instance != null) MeetingHud.Instance.RpcClose();
|
||||
}
|
||||
|
||||
if (AmongUsClient.Instance.AmHost && Main.GM.Value)
|
||||
{
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
Utils.StoredRoleText[p.PlayerId] = Utils.GetRoleText(p);
|
||||
}
|
||||
|
||||
PastStartScreen = true;
|
||||
|
||||
if (AmongUsClient.Instance.AmHost && Main.GM.Value)
|
||||
{
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3)) return;
|
||||
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
}
|
||||
|
||||
// All Patches below are for the speeded up Chat In Game.
|
||||
@@ -176,6 +172,7 @@ internal static class OnGameStartPatch
|
||||
public static void Postfix(IntroCutscene __instance, ref Il2CppSystem.Collections.IEnumerator __result)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
|
||||
{
|
||||
__result = SkipIntro(__instance, __result).WrapToIl2Cpp();
|
||||
@@ -203,6 +200,7 @@ internal static class OnGameStartPatch
|
||||
public static bool Prefix(ref NamePlateViewData __result)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
|
||||
{
|
||||
if (MeetingHud.Instance == null) return true;
|
||||
@@ -227,8 +225,11 @@ internal static class OnGameStartPatch
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if (meetingNameplate != null) Object.Destroy(meetingNameplate);
|
||||
meetingNameplate = null;
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
|
||||
{
|
||||
if (meetingNameplate != null) Object.Destroy(meetingNameplate);
|
||||
meetingNameplate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,19 +68,31 @@ internal static class MurderPlayerPatch
|
||||
|
||||
if (resultFlags.HasFlag(MurderResultFlags.Succeeded))
|
||||
{
|
||||
killCount[playerId]++;
|
||||
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && target.Data.PlayerId != __instance.shapeshiftTargetPlayerId)
|
||||
{
|
||||
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
|
||||
Utils.HasMurdered = true;
|
||||
Logger.SendInGame($"{__instance.Data.PlayerName} directly misfired, forcing suicide");
|
||||
Logger.Info($" {__instance.Data.PlayerName} directly misfired, forcing suicide", "MurderPlayer");
|
||||
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
|
||||
}
|
||||
else
|
||||
{
|
||||
killCount[playerId]++;
|
||||
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
|
||||
{
|
||||
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
|
||||
Utils.HasMurdered = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
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 (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);
|
||||
if (__instance != PlayerControl.LocalPlayer) return;
|
||||
EACR.MurderCheat(__instance);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +112,7 @@ internal static class MurderPlayerPatch
|
||||
}
|
||||
|
||||
//1 = Shift and Seek
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && resultFlags.HasFlag(MurderResultFlags.FailedProtected))
|
||||
{
|
||||
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId)
|
||||
{
|
||||
@@ -164,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");
|
||||
@@ -197,7 +221,7 @@ class PlayerControlCompleteTaskPatch
|
||||
|
||||
public static void CalculateTaskWin()
|
||||
{
|
||||
if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !OnGameStartPatch.PastStartScreen) return;
|
||||
if (!OnGameStartPatch.PastStartScreen || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !OnGameStartPatch.PastStartScreen) return;
|
||||
|
||||
//Logger.Info($" Checking if {GameData.Instance.CompletedTasks} - {ignoredCompletedTasks} >= ({GameData.Instance.TotalTasks} - {ignoredTasks}) * 0.01 * {Options.TaskPercentNeededToWin.GetInt()}", "TaskPatch");
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,23 @@
|
||||
# Welcome to Among Us Revamped!
|
||||
<h1 align="center">Welcome to Among Us Revamped!</h1>
|
||||
<br>
|
||||
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/83Zhzhyhya" target="_blank">
|
||||
<img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/>
|
||||
</a>
|
||||
<a href="https://ko-fi.com/apemv">
|
||||
<img src="https://img.shields.io/badge/Donate%20on-Ko--fi-ff5f5f?style=for-the-badge&logo=ko-fi&logoColor=white">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<center>
|
||||
<a href="https://discord.gg/83Zhzhyhya" target="_blank"><img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/></a>
|
||||
<a href="https://github.com/apemv/AmongUsRevamped/releases/latest" target="_blank"><img src="https://img.shields.io/badge/Latest Version%20-%231DA1F2.svg?&style=for-the-badge&logo=github&logoColor=white&color=181717"/></a>
|
||||
</center>
|
||||
|
||||
<a href="../../releases">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/total?style=for-the-badge&color=red">
|
||||
</a>
|
||||
|
||||
<a href="../../releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/latest/total?style=for-the-badge">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/ApeMV/AmongUsRevamped/releases">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/total?style=for-the-badge&color=red"/>
|
||||
</a>
|
||||
<a href="https://github.com/ApeMV/AmongUsRevamped/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/latest/total?style=for-the-badge"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
# 💡 How To Install:
|
||||
@@ -37,7 +36,7 @@
|
||||
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
|
||||
|
||||
|
||||
# 🎮 Features (v2.0.0):
|
||||
# 🎮 Features (v2.2.2):
|
||||
|
||||
## <b>♠️ Client Side settings:</b>
|
||||
- Toggle Game Master (Spectator)
|
||||
@@ -46,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
|
||||
@@ -64,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)
|
||||
@@ -77,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
|
||||
@@ -85,11 +86,11 @@
|
||||
- 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
|
||||
- Select a language in Language/YourLanguage.txt
|
||||
@@ -103,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
|
||||
@@ -142,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
|
||||
|
||||
@@ -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
@@ -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. "
|
||||
}
|
||||
@@ -341,5 +341,61 @@
|
||||
"pnsDisableCloseDoor": "PnSのドア閉鎖サボタージュを無効にする",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "幻象師が明らかに移動した後、自殺するまでの時間",
|
||||
"snsImpostorCanVent": "インポスターはベントを使用できる"
|
||||
"snsImpostorCanVent": "インポスターはベントを使用できる",
|
||||
"modeVoteDuration": "ゲームモード投票時間",
|
||||
"snsChatInGameExtendTwo": "ゲーム開始後に拡張情報を送信",
|
||||
"snsChatInGameFast": "高速会議(実験的+)",
|
||||
"shieldFirstDeath": "最初に死亡したプレイヤーをシールドで保護",
|
||||
"shieldFirstDeathDuration": "シールド持続時間",
|
||||
"snsTwoDesc": "Shift and Seekの拡張説明を送信。",
|
||||
"modeVoteDesc": "すべてのゲームモードから投票を開始します。",
|
||||
"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秒間の平和時間を無効化"
|
||||
}
|
||||
@@ -341,6 +341,59 @@
|
||||
"pnsDisableCloseDoor": "Выключить Саботажи Дверей В Режиме Фантомные Прятки",
|
||||
"tabGroupPNS": "Фантомные Прятки",
|
||||
"badMoveTimeToSuicide": "Файнтомы Самоубиваются После Видимого Движения После",
|
||||
"snsImpostorCanVent": "Предатели могут уходить в люк",
|
||||
"pnsDesc": "Отправляет информацию о Режиме Фантомных Прятках."
|
||||
"snsImpostorCanVent": "Предатели Могут Уходить в Люк",
|
||||
"pnsDesc": "Отправляет Информацию о Режиме Фантомных Прятках.",
|
||||
"modeVoteDuration": "Врямя Голосования За Режим",
|
||||
"snsChatInGameExtendTwo": "Отправить увеличенную инфо после начала игры",
|
||||
"snsChatInGameFast": "Быстрые Собрания (экспериментальное+)",
|
||||
"shieldFirstDeath": "Защищать Игрока Который Умер Первым",
|
||||
"shieldFirstDeathDuration": "Длительность Щита",
|
||||
"snsTwoDesc": "Отправить Увеличенное Описание Клона.",
|
||||
"modeVoteDesc": "Начать Голосование между всеми режимами.",
|
||||
"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 секунд"
|
||||
}
|
||||
@@ -323,10 +323,66 @@
|
||||
"automaticMapPoll": "重新加入后自发起起 /mapvote",
|
||||
"automaticAllMapPoll": "重新加入后自动发起 /allmapvote",
|
||||
"timeBeforeMapPoll": "投票开始前等待時間",
|
||||
"pnsDesc": "发送 Poof and Seek 幻象与躲藏 游戏模式说明。",
|
||||
"pnsDisableSabotage": "禁用 PnS 紧急破坏。",
|
||||
"pnsDisableCloseDoor": "禁用 PnS 关门破坏。",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "幻象师在明显移动后自杀的时间。",
|
||||
"snsImpostorCanVent": "内鬼可以使用通风管。",
|
||||
"modeVoteDuration": "游戏模式投票时长",
|
||||
"snsChatInGameExtendTwo": "游戏开始后发送扩展信息",
|
||||
"snsChatInGameFast": "快速会议(实验性+)",
|
||||
"shieldFirstDeath": "护盾保护第一个死亡的玩家",
|
||||
"shieldFirstDeathDuration": "护盾持续时间",
|
||||
"snsTwoDesc": "发送 Shift and Seek 扩展说明。",
|
||||
"modeVoteDesc": "在所有游戏模式之间发起投票。",
|
||||
"automaticModePoll": "重新加入后自动执行 /gmvote",
|
||||
"tabGroupCustomizeSabotages": "自定义破坏",
|
||||
"customizeSabotages": "启用自定义破坏",
|
||||
"sabotageCooldown": "紧急破坏冷却时间",
|
||||
"skeldReactorDuration": "Skeld 反应堆破坏持续时间",
|
||||
"skeldO2Duration": "Skeld 氧气破坏持续时间",
|
||||
"miraReactorDuration": "Mira 反应堆破坏持续时间",
|
||||
"miraO2Duration": "Mira 氧气破坏持续时间",
|
||||
"polusReactorDuration": "Polus 反应堆破坏持续时间",
|
||||
"airshipReactorDuration": "Airship 反应堆破坏持续时间",
|
||||
"fungleReactorDuration": "Fungle 反应堆破坏持续时间",
|
||||
"fungleMushroomMixupDuration": "Fungle 蘑菇幻觉持续时间",
|
||||
|
||||
"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"
|
||||
"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 秒和平期"
|
||||
}
|
||||
@@ -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.",
|
||||
@@ -295,9 +294,58 @@
|
||||
"admin": "<color=red>Administrador</color>",
|
||||
"onlyYou": "Solo tú",
|
||||
|
||||
"pnsDisableSabotage": "Disable PnS Critical Sabotages",
|
||||
"pnsDisableCloseDoor": "Disable PnS Door Sabotages",
|
||||
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
|
||||
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
|
||||
"snsImpostorCanVent": "Impostors can vent"
|
||||
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
|
||||
"snsImpostorCanVent": "Los impostores pueden usar conductos"
|
||||
"modeVoteDuration": "Duración de la votación de modo de juego",
|
||||
"snsChatInGameExtendTwo": "Enviar información ampliada al iniciar la partida",
|
||||
"snsChatInGameFast": "Reunión más rápida (experimental+),
|
||||
"shieldFirstDeath": " Proteger al primer jugador que murió",
|
||||
"shieldFirstDeathDuration": "Duración de la protección",
|
||||
"snsTwoDesc": "Enviar la descripción ampliada de Shift and Seek.",
|
||||
"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"
|
||||
}
|
||||
Reference in new issue
Block a user