mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-23 10:46:57 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e53acde70a | ||
|
|
f1d98c100d | ||
|
|
44f63d6042 | ||
|
|
5f7ddf35e7 | ||
|
|
95106ddeeb | ||
|
|
f4c157153a | ||
|
|
84978edc99 | ||
|
|
23715a848d | ||
|
|
a7cec7787f |
No files matched your search
+18
-15
@@ -1,6 +1,7 @@
|
||||
global using HarmonyLib;
|
||||
global using System.Collections.Generic;
|
||||
global using System.Linq;
|
||||
global using Object = UnityEngine.Object;
|
||||
|
||||
using AmongUs.GameOptions;
|
||||
using BepInEx;
|
||||
@@ -37,9 +38,11 @@ public partial class Main : BasePlugin
|
||||
|
||||
public static NormalGameOptionsV10 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
|
||||
public static HideNSeekGameOptionsV10 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
|
||||
public static MapNames CurrentMap => (MapNames)NormalOptions.MapId;
|
||||
|
||||
public static bool HasArgumentException;
|
||||
public static string CredentialsText;
|
||||
public const string ModVersion = "v1.5.1";
|
||||
public const string ModVersion = "v1.5.3";
|
||||
|
||||
public static float GameTimer;
|
||||
|
||||
@@ -88,6 +91,7 @@ public partial class Main : BasePlugin
|
||||
DarkTheme = Config.Bind("Client Options", "Dark Theme", false);
|
||||
LobbyMusic = Config.Bind("Client Options", "Lobby Music", false);
|
||||
|
||||
Translator.Init();
|
||||
BanManager.Init();
|
||||
|
||||
Harmony.PatchAll();
|
||||
@@ -126,19 +130,18 @@ public partial class Main : BasePlugin
|
||||
Fortegreen = 18
|
||||
}
|
||||
|
||||
// Innersloth now censors messages with more than 5 numbers. This is the best bypass I can give
|
||||
public enum BasicNumberToLetter
|
||||
// Innersloth now censors messages with more than 5 numbers. Sucks to be them.
|
||||
public static readonly char[] CircledDigits =
|
||||
{
|
||||
Zero = 0,
|
||||
One = 1,
|
||||
Two = 2,
|
||||
Three = 3,
|
||||
Four = 4,
|
||||
Five = 5,
|
||||
Six = 6,
|
||||
Seven = 7,
|
||||
Eight = 8,
|
||||
Nine = 9,
|
||||
Ten = 10
|
||||
}
|
||||
'⓪', // 0
|
||||
'①', // 1
|
||||
'②', // 2
|
||||
'③', // 3
|
||||
'④', // 4
|
||||
'⑤', // 5
|
||||
'⑥', // 6
|
||||
'⑦', // 7
|
||||
'⑧', // 8
|
||||
'⑨' // 9
|
||||
};
|
||||
}
|
||||
+278
-113
@@ -38,11 +38,11 @@ namespace AmongUsRevamped
|
||||
taskOptionsLoad = Task.Run(Load);
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(MainMenuManager), nameof(MainMenuManager.Start)), HarmonyPostfix]
|
||||
public static void WaitOptionsLoad()
|
||||
{
|
||||
taskOptionsLoad.Wait();
|
||||
}
|
||||
//[HarmonyPatch(typeof(MainMenuManager), nameof(MainMenuManager.Start)), HarmonyPostfix]
|
||||
//public static void WaitOptionsLoad()
|
||||
//{
|
||||
//taskOptionsLoad.Wait();
|
||||
//}
|
||||
|
||||
public const int PresetId = 0;
|
||||
|
||||
@@ -99,12 +99,48 @@ namespace AmongUsRevamped
|
||||
public static OptionItem NoGameEnd;
|
||||
|
||||
//Gameplay
|
||||
public static OptionItem TabGroupGameplayGeneral;
|
||||
public static OptionItem TabGroupSabotages;
|
||||
public static OptionItem DeadImpostorsCanSabotage;
|
||||
public static OptionItem DisableSabotage;
|
||||
public static OptionItem DisableReactor;
|
||||
public static OptionItem DisableOxygen;
|
||||
public static OptionItem DisableLights;
|
||||
public static OptionItem DisableComms;
|
||||
public static OptionItem DisableHeli;
|
||||
public static OptionItem DisableMushroomMixup;
|
||||
public static OptionItem DisableCloseDoor;
|
||||
|
||||
public static OptionItem TabGroupGameplayGeneral;
|
||||
public static OptionItem DisableAnnoyingMeetingCalls;
|
||||
public static OptionItem DisableReport;
|
||||
|
||||
public static OptionItem ChangeDecontaminationTime;
|
||||
public static OptionItem DecontaminationTimeOnMiraHQ;
|
||||
public static OptionItem DecontaminationDoorOpenTimeOnMiraHQ;
|
||||
public static OptionItem DecontaminationTimeOnPolus;
|
||||
public static OptionItem DecontaminationDoorOpenTimeOnPolus;
|
||||
|
||||
public static OptionItem DisableDevices;
|
||||
private static OptionItem DisableSkeldDevices;
|
||||
public static OptionItem DisableSkeldAdmin;
|
||||
public static OptionItem DisableSkeldCamera;
|
||||
private static OptionItem DisableMiraHQDevices;
|
||||
public static OptionItem DisableMiraHQAdmin;
|
||||
public static OptionItem DisableMiraHQDoorLog;
|
||||
private static OptionItem DisablePolusDevices;
|
||||
public static OptionItem DisablePolusAdmin;
|
||||
public static OptionItem DisablePolusCamera;
|
||||
public static OptionItem DisablePolusVital;
|
||||
private static OptionItem DisableAirshipDevices;
|
||||
public static OptionItem DisableAirshipCockpitAdmin;
|
||||
public static OptionItem DisableAirshipRecordsAdmin;
|
||||
public static OptionItem DisableAirshipCamera;
|
||||
public static OptionItem DisableAirshipVital;
|
||||
private static OptionItem DisableFungleDevices;
|
||||
public static OptionItem DisableFungleCamera;
|
||||
public static OptionItem DisableFungleVital;
|
||||
|
||||
|
||||
public static OptionItem TabGroupTasks;
|
||||
public static OptionItem OverrideTaskSettings;
|
||||
|
||||
@@ -226,6 +262,14 @@ namespace AmongUsRevamped
|
||||
public static OptionItem CrewAutoWinsGameAfter;
|
||||
public static OptionItem CantKillTime;
|
||||
public static OptionItem MisfiresToSuicide;
|
||||
public static OptionItem SNSDisableSabotage;
|
||||
public static OptionItem SNSDisableReactor;
|
||||
public static OptionItem SNSDisableOxygen;
|
||||
public static OptionItem SNSDisableLights;
|
||||
public static OptionItem SNSDisableComms;
|
||||
public static OptionItem SNSDisableHeli;
|
||||
public static OptionItem SNSDisableMushroomMixup;
|
||||
public static OptionItem SNSDisableCloseDoor;
|
||||
|
||||
public static OptionItem TabGroupSpeedrun;
|
||||
public static OptionItem SpeedrunSettingsOverride;
|
||||
@@ -250,113 +294,239 @@ namespace AmongUsRevamped
|
||||
.SetColor(new Color32(204, 204, 0, 255))
|
||||
.SetHeader(true);
|
||||
|
||||
Gamemode = StringOptionItem.Create(1, "Gamemode", gameModes, 0, TabGroup.SystemSettings, false)
|
||||
Gamemode = StringOptionItem.Create(1, Translator.Get("gamemode"), gameModes, 0, TabGroup.SystemSettings, false)
|
||||
.SetColor(Color.green)
|
||||
.SetHeader(true);
|
||||
|
||||
TabGroupMain = TextOptionItem.Create(60000, "Moderation", TabGroup.SystemSettings)
|
||||
TabGroupMain = TextOptionItem.Create(60000, Translator.Get("tabGroupMain"), TabGroup.SystemSettings)
|
||||
.SetColor(Color.blue);
|
||||
|
||||
KickLowLevelPlayer = IntegerOptionItem.Create(60050, "Kick Players Under Level", new(0, 100, 1), 0, TabGroup.SystemSettings, false)
|
||||
KickLowLevelPlayer = IntegerOptionItem.Create(60050, Translator.Get("kickLowLevelPlayer"), new(0, 100, 1), 0, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Level);
|
||||
TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, "Ban Instead Of Kick", false, TabGroup.SystemSettings, false)
|
||||
TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.SystemSettings, false)
|
||||
.SetParent(KickLowLevelPlayer);
|
||||
|
||||
KickInvalidFriendCodes = BooleanOptionItem.Create(60080, "Kick Invalid FriendCodes", true, TabGroup.SystemSettings, false);
|
||||
TempBanInvalidFriendCodes = BooleanOptionItem.Create(60081, "Ban Instead Of Kick", false, TabGroup.SystemSettings, false)
|
||||
KickInvalidFriendCodes = BooleanOptionItem.Create(60080, Translator.Get("kickInvalidFriendCodes"), true, TabGroup.SystemSettings, false);
|
||||
TempBanInvalidFriendCodes = BooleanOptionItem.Create(60081, Translator.Get("tempBanInvalidFriendCodes"), false, TabGroup.SystemSettings, false)
|
||||
.SetParent(KickInvalidFriendCodes);
|
||||
|
||||
ApplyBanList = BooleanOptionItem.Create(60110, "Apply BanList", true, TabGroup.SystemSettings, true);
|
||||
ApplyDenyNameList = BooleanOptionItem.Create(60120, "Apply DenyName List", true, TabGroup.SystemSettings, false);
|
||||
ApplyModeratorList = BooleanOptionItem.Create(60121, "Apply Moderator List", true, TabGroup.SystemSettings, false);
|
||||
ModeratorCanUseCommand = BooleanOptionItem.Create(60122, "Moderators can use commands", true, TabGroup.SystemSettings, false);
|
||||
ApplyBanList = BooleanOptionItem.Create(60110, Translator.Get("applyBanList"), true, TabGroup.SystemSettings, true);
|
||||
ApplyDenyNameList = BooleanOptionItem.Create(60120, Translator.Get("applyDenyNameList"), true, TabGroup.SystemSettings, false);
|
||||
ApplyModeratorList = BooleanOptionItem.Create(60121, Translator.Get("applyModeratorList"), true, TabGroup.SystemSettings, false);
|
||||
ModeratorCanUseCommand = BooleanOptionItem.Create(60122, Translator.Get("moderatorCanUseCommand"), true, TabGroup.SystemSettings, false);
|
||||
|
||||
AutoKickStart = BooleanOptionItem.Create(60123, "Kick Players Who Say Start", false, TabGroup.SystemSettings, false);
|
||||
AutoKickStartAsBan = BooleanOptionItem.Create(60124, "Ban Instead Of Kick", false, TabGroup.SystemSettings, false)
|
||||
AutoKickStart = BooleanOptionItem.Create(60123, Translator.Get("autoKickStart"), false, TabGroup.SystemSettings, false);
|
||||
AutoKickStartAsBan = BooleanOptionItem.Create(60124, Translator.Get("autoKickStartAsBan"), false, TabGroup.SystemSettings, false)
|
||||
.SetParent(AutoKickStart);
|
||||
AutoKickStartTimes = IntegerOptionItem.Create(60125, "Start messages needed to kick", new(1, 10, 1), 1, TabGroup.SystemSettings, false)
|
||||
AutoKickStartTimes = IntegerOptionItem.Create(60125, Translator.Get("autoKickStartTimes"), new(1, 10, 1), 1, TabGroup.SystemSettings, false)
|
||||
.SetParent(AutoKickStart)
|
||||
.SetValueFormat(OptionFormat.Times);
|
||||
AutoKickStartStrength = BooleanOptionItem.Create(60126, "Strict detection mode", false, TabGroup.SystemSettings, false)
|
||||
AutoKickStartStrength = BooleanOptionItem.Create(60126, Translator.Get("autoKickStartStrength"), false, TabGroup.SystemSettings, false)
|
||||
.SetParent(AutoKickStart);
|
||||
|
||||
TabGroupAutomation = TextOptionItem.Create(60149, "Automation", TabGroup.SystemSettings)
|
||||
TabGroupAutomation = TextOptionItem.Create(60149, Translator.Get("tabGroupAutomation"), TabGroup.SystemSettings)
|
||||
.SetColor(Color.yellow);
|
||||
|
||||
AutoSendGameInfo = BooleanOptionItem.Create(60150, "Automatically send winner info", true, TabGroup.SystemSettings, false);
|
||||
AutoRejoinLobby = BooleanOptionItem.Create(60210, "Auto Rejoin Lobby", false, TabGroup.SystemSettings, false);
|
||||
AutoStartTimer = IntegerOptionItem.Create(64420, "Countdown For Auto Start", new(1, 600, 1), 5, TabGroup.SystemSettings, false)
|
||||
AutoSendGameInfo = BooleanOptionItem.Create(60150, Translator.Get("autoSendGameInfo"), true, TabGroup.SystemSettings, false);
|
||||
AutoRejoinLobby = BooleanOptionItem.Create(60210, Translator.Get("autoRejoinLobby"), false, TabGroup.SystemSettings, false);
|
||||
AutoStartTimer = IntegerOptionItem.Create(64420, Translator.Get("autoStartTimer"), new(1, 600, 1), 5, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
WaitAutoStart = IntegerOptionItem.Create(64421, "Auto Start After", new(10, 600, 10), 300, TabGroup.SystemSettings, false)
|
||||
WaitAutoStart = IntegerOptionItem.Create(64421, Translator.Get("waitAutoStart"), new(10, 600, 10), 300, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
PlayerAutoStart = IntegerOptionItem.Create(64422, "Players Needed To Auto Start", new(1, 15, 1), 1, TabGroup.SystemSettings, false);
|
||||
PlayerAutoStart = IntegerOptionItem.Create(64422, Translator.Get("playerAutoStart"), new(1, 15, 1), 1, TabGroup.SystemSettings, false);
|
||||
|
||||
TabGroupMisc = TextOptionItem.Create(60379, "Miscelleneous", TabGroup.SystemSettings)
|
||||
TabGroupMisc = TextOptionItem.Create(60379, Translator.Get("tabGroupMisc"), TabGroup.SystemSettings)
|
||||
.SetColor(Color.green);
|
||||
|
||||
StartCountdown = IntegerOptionItem.Create(60380, "Default Starting Countdown", new(1, 600, 1), 5, TabGroup.SystemSettings, false)
|
||||
StartCountdown = IntegerOptionItem.Create(60380, Translator.Get("startCountdown"), new(1, 600, 1), 5, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
ColorCommandLevel = StringOptionItem.Create(60381, "Who Can use Color Commands", colorLevels, 0, TabGroup.SystemSettings, false);
|
||||
AllowFortegreen = BooleanOptionItem.Create(60382, "Allow Fortegreen Color", false, TabGroup.SystemSettings, false);
|
||||
NoGameEnd = BooleanOptionItem.Create(60383, "No Game End", false, TabGroup.SystemSettings, false)
|
||||
ColorCommandLevel = StringOptionItem.Create(60381, Translator.Get("colorCommandLevel"), colorLevels, 0, TabGroup.SystemSettings, false);
|
||||
AllowFortegreen = BooleanOptionItem.Create(60382, Translator.Get("allowFortegreen"), false, TabGroup.SystemSettings, false);
|
||||
NoGameEnd = BooleanOptionItem.Create(60383, Translator.Get("noGameEnd"), false, TabGroup.SystemSettings, false)
|
||||
.SetColor(Color.red);
|
||||
|
||||
|
||||
|
||||
|
||||
// Custom role settings
|
||||
TabGroupCrewmate = TextOptionItem.Create(100000, "Crewmate Roles", TabGroup.CustomRoleSettings)
|
||||
TabGroupCrewmate = TextOptionItem.Create(100000, Translator.Get("tabGroupCrewmate"), TabGroup.CustomRoleSettings)
|
||||
.SetColor(CL.Hex("#8cffff"));
|
||||
MayorPerc = IntegerOptionItem.Create(100001, "PLACEHOLDER", new(0, 100, 5), 0, TabGroup.CustomRoleSettings, false)
|
||||
MayorPerc = IntegerOptionItem.Create(100001, Translator.Get("mayorPerc"), new(0, 100, 5), 0, TabGroup.CustomRoleSettings, false)
|
||||
.SetValueFormat(OptionFormat.Percent)
|
||||
.SetColor(CL.Hex("#204d42"));
|
||||
|
||||
TabGroupNeutral = TextOptionItem.Create(101000, "Neutral Roles", TabGroup.CustomRoleSettings)
|
||||
TabGroupNeutral = TextOptionItem.Create(101000, Translator.Get("tabGroupNeutral"), TabGroup.CustomRoleSettings)
|
||||
.SetColor(CL.Hex("#FFFF99"));
|
||||
JesterPerc = IntegerOptionItem.Create(101001, "PLACEHOLDER", new(0, 100, 5), 0, TabGroup.CustomRoleSettings, false)
|
||||
JesterPerc = IntegerOptionItem.Create(101001, Translator.Get("jesterPerc"), new(0, 100, 5), 0, TabGroup.CustomRoleSettings, false)
|
||||
.SetValueFormat(OptionFormat.Percent)
|
||||
.SetColor(CL.Hex("#ec62a5"));
|
||||
|
||||
TabGroupImpostor = TextOptionItem.Create(102000, "Impostor Roles", TabGroup.CustomRoleSettings)
|
||||
TabGroupImpostor = TextOptionItem.Create(102000, Translator.Get("tabGroupImpostor"), TabGroup.CustomRoleSettings)
|
||||
.SetColor(CL.Hex("#ff1919"));
|
||||
|
||||
|
||||
|
||||
// Gamemode Settings
|
||||
TabGroupHNS = TextOptionItem.Create(70000, "Hide and Seek", TabGroup.GamemodeSettings)
|
||||
TabGroupHNS = TextOptionItem.Create(70000, Translator.Get("tabGroupHNS"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.green);
|
||||
NumSeekers = IntegerOptionItem.Create(70001, "# Seekers", new(0, 15, 1), 1, TabGroup.GamemodeSettings, false)
|
||||
NumSeekers = IntegerOptionItem.Create(70001, Translator.Get("numSeekers"), new(1, 15, 1), 1, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Level);
|
||||
|
||||
|
||||
TabGroup0Kcd = TextOptionItem.Create(70025, "0 Kill Cooldown", TabGroup.GamemodeSettings)
|
||||
TabGroup0Kcd = TextOptionItem.Create(70025, Translator.Get("tabGroup0Kcd"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.red);
|
||||
NoKcdSettingsOverride = BooleanOptionItem.Create(70026, "Auto Update Settings", true, TabGroup.GamemodeSettings, false);
|
||||
NoKcdSettingsOverride = BooleanOptionItem.Create(70026, Translator.Get("noKcdSettingsOverride"), true, TabGroup.GamemodeSettings, false);
|
||||
|
||||
TabGroupSNS = TextOptionItem.Create(70050, "Shift and Seek", TabGroup.GamemodeSettings)
|
||||
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.yellow);
|
||||
SNSSettingsOverride = BooleanOptionItem.Create(70051, "Auto Update Settings", true, TabGroup.GamemodeSettings, false);
|
||||
CantKillTime = IntegerOptionItem.Create(70053, "After Misfiring, Can't kill for", new(0, 60, 5), 20, TabGroup.GamemodeSettings, false)
|
||||
SNSSettingsOverride = BooleanOptionItem.Create(70051, Translator.Get("snsSettingsOverride"), true, TabGroup.GamemodeSettings, false);
|
||||
CantKillTime = IntegerOptionItem.Create(70053, Translator.Get("cantKillTime"), new(0, 60, 5), 20, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
MisfiresToSuicide = IntegerOptionItem.Create(70052, "Suicide After Amount Of Misfires", new(1, 10, 1), 2, TabGroup.GamemodeSettings, false);
|
||||
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70054, "Crewmates Automatically Win After", new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
MisfiresToSuicide = IntegerOptionItem.Create(70052, Translator.Get("misfiresToSuicide"), new(1, 10, 1), 2, TabGroup.GamemodeSettings, false);
|
||||
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70054, Translator.Get("crewAutoWinsGameAfter"), new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
SNSDisableSabotage = BooleanOptionItem.Create(70055, Translator.Get("snsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetColor(Color.red);
|
||||
SNSDisableReactor = BooleanOptionItem.Create(70056, Translator.Get("snsDisableReactor"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableOxygen = BooleanOptionItem.Create(70057, Translator.Get("snsDisableOxygen"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableLights = BooleanOptionItem.Create(70058, Translator.Get("snsDisableLights"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableComms = BooleanOptionItem.Create(70059, Translator.Get("snsDisableComms"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableHeli = BooleanOptionItem.Create(70060, Translator.Get("snsDisableHeli"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableMushroomMixup = BooleanOptionItem.Create(70061, Translator.Get("snsDisableMushroomMixup"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSDisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
SNSDisableCloseDoor = BooleanOptionItem.Create(70062, Translator.Get("snsDisableCloseDoor"), true, TabGroup.GamemodeSettings, false)
|
||||
.SetColor(Color.red);
|
||||
|
||||
TabGroupSpeedrun = TextOptionItem.Create(70075, "Speedrun", TabGroup.GamemodeSettings)
|
||||
TabGroupSpeedrun = TextOptionItem.Create(70075, Translator.Get("tabGroupSpeedrun"), TabGroup.GamemodeSettings)
|
||||
.SetColor(Color.blue);
|
||||
SpeedrunSettingsOverride = BooleanOptionItem.Create(70076, "Auto Update Settings", true, TabGroup.GamemodeSettings, false);
|
||||
GameAutoEndsAfter = IntegerOptionItem.Create(70077, "Game automatically ends after", new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
SpeedrunSettingsOverride = BooleanOptionItem.Create(70076, Translator.Get("speedrunSettingsOverride"), true, TabGroup.GamemodeSettings, false);
|
||||
GameAutoEndsAfter = IntegerOptionItem.Create(70077, Translator.Get("gameAutoEndsAfter"), new(0, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
|
||||
|
||||
// Gameplay Settings
|
||||
TabGroupGameplayGeneral = TextOptionItem.Create(60564, "General", TabGroup.ModSettings)
|
||||
TabGroupSabotages = TextOptionItem.Create(60450, Translator.Get("tabGroupSabotages"), TabGroup.ModSettings)
|
||||
.SetColor(Color.red);
|
||||
DeadImpostorsCanSabotage = BooleanOptionItem.Create(60455, Translator.Get("deadImpostorsCanSabotage"), true, TabGroup.ModSettings, false)
|
||||
.SetColor(Color.red);
|
||||
DisableSabotage = BooleanOptionItem.Create(60456, Translator.Get("disableSabotage"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(Color.red);
|
||||
DisableReactor = BooleanOptionItem.Create(60457, Translator.Get("disableReactor"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableOxygen = BooleanOptionItem.Create(60458, Translator.Get("disableOxygen"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableLights = BooleanOptionItem.Create(60459, Translator.Get("disableLights"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableComms = BooleanOptionItem.Create(60460, Translator.Get("disableComms"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableHeli = BooleanOptionItem.Create(60461, Translator.Get("disableHeli"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSabotage)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
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)
|
||||
.SetColor(Color.red);
|
||||
|
||||
TabGroupGameplayGeneral = TextOptionItem.Create(60564, Translator.Get("tabGroupGameplayGeneral"), TabGroup.ModSettings)
|
||||
.SetColor(Color.blue);
|
||||
DisableSabotage = BooleanOptionItem.Create(60565, "Disable Critical Sabotages", false, TabGroup.ModSettings, false)
|
||||
DisableAnnoyingMeetingCalls = BooleanOptionItem.Create(60565, Translator.Get("disableAnnoyingMeetingCalls"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
DisableReport = BooleanOptionItem.Create(60520, Translator.Get("disableReport"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
|
||||
ChangeDecontaminationTime = BooleanOptionItem.Create(60550, Translator.Get("changeDecontaminationTime"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
DecontaminationTimeOnMiraHQ = FloatOptionItem.Create(60551, Translator.Get("decontaminationTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
|
||||
.SetParent(ChangeDecontaminationTime)
|
||||
.SetValueFormat(OptionFormat.Seconds)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
DecontaminationDoorOpenTimeOnMiraHQ = FloatOptionItem.Create(60552, Translator.Get("decontaminationDoorOpenTimeOnMiraHQ"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
|
||||
.SetParent(ChangeDecontaminationTime)
|
||||
.SetValueFormat(OptionFormat.Seconds)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
DecontaminationTimeOnPolus = FloatOptionItem.Create(60553, Translator.Get("decontaminationTimeOnPolus"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
|
||||
.SetParent(ChangeDecontaminationTime)
|
||||
.SetValueFormat(OptionFormat.Seconds)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
DecontaminationDoorOpenTimeOnPolus = FloatOptionItem.Create(60554, Translator.Get("decontaminationDoorOpenTimeOnPolus"), new(0.5f, 10f, 0.25f), 3f, TabGroup.ModSettings, false)
|
||||
.SetParent(ChangeDecontaminationTime)
|
||||
.SetValueFormat(OptionFormat.Seconds)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
|
||||
DisableDevices = BooleanOptionItem.Create(22900, Translator.Get("disableDevices"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(Color.red);
|
||||
|
||||
DisableSkeldDevices = BooleanOptionItem.Create(22905, Translator.Get("disableSkeldDevices"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableCloseDoor = BooleanOptionItem.Create(60566, "Disable Door Sabotages", false, TabGroup.ModSettings, false)
|
||||
DisableSkeldAdmin = BooleanOptionItem.Create(22906, Translator.Get("disableSkeldAdmin"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSkeldDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableReport = BooleanOptionItem.Create(60520, "Disable Body Reports", false, TabGroup.ModSettings, false)
|
||||
DisableSkeldCamera = BooleanOptionItem.Create(22907, Translator.Get("disableSkeldCamera"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableSkeldDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisableMiraHQDevices = BooleanOptionItem.Create(22908, Translator.Get("disableMiraHQDevices"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableMiraHQAdmin = BooleanOptionItem.Create(22909, Translator.Get("disableMiraHQAdmin"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiraHQDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableMiraHQDoorLog = BooleanOptionItem.Create(22910, Translator.Get("disableMiraHQDoorLog"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiraHQDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisablePolusDevices = BooleanOptionItem.Create(22911, Translator.Get("disablePolusDevices"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisablePolusAdmin = BooleanOptionItem.Create(22912, Translator.Get("disablePolusAdmin"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisablePolusDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisablePolusCamera = BooleanOptionItem.Create(22913, Translator.Get("disablePolusCamera"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisablePolusDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisablePolusVital = BooleanOptionItem.Create(22914, Translator.Get("disablePolusVital"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisablePolusDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisableAirshipDevices = BooleanOptionItem.Create(22915, Translator.Get("disableAirshipDevices"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableAirshipCockpitAdmin = BooleanOptionItem.Create(22916, Translator.Get("disableAirshipCockpitAdmin"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableAirshipDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableAirshipRecordsAdmin = BooleanOptionItem.Create(22917, Translator.Get("disableAirshipRecordsAdmin"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableAirshipDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableAirshipCamera = BooleanOptionItem.Create(22918, Translator.Get("disableAirshipCamera"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableAirshipDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
DisableAirshipVital = BooleanOptionItem.Create(22919, Translator.Get("disableAirshipVital"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableAirshipDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisableFungleDevices = BooleanOptionItem.Create(22925, "Disable Fungle Devices", false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisableFungleCamera = BooleanOptionItem.Create(22926, "Disable Fungle Camera", false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
DisableFungleVital = BooleanOptionItem.Create(22927, "Disable Fungle Vitals", false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleDevices)
|
||||
.SetColor(new Color32(255, 153, 153, byte.MaxValue));
|
||||
|
||||
|
||||
@@ -444,126 +614,121 @@ namespace AmongUsRevamped
|
||||
|
||||
|
||||
|
||||
DisableFungleTasks = BooleanOptionItem.Create(23300, "Disable Fungle Tasks", false, TabGroup.ModSettings, false)
|
||||
DisableFungleTasks = BooleanOptionItem.Create(23300, Translator.Get("disableFungleTasks"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
|
||||
.SetParent(OverrideTaskSettings);
|
||||
|
||||
DisableBuildSandcastle = BooleanOptionItem.Create(23301, "Disable Build Sandcastle", false, TabGroup.ModSettings, false)
|
||||
DisableBuildSandcastle = BooleanOptionItem.Create(23301, Translator.Get("disableBuildSandcastle"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableCatchFish = BooleanOptionItem.Create(23302, "Disable Catch Fish", false, TabGroup.ModSettings, false)
|
||||
DisableCatchFish = BooleanOptionItem.Create(23302, Translator.Get("disableCatchFish"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableCollectSamples = BooleanOptionItem.Create(23303, "Disable Collect Samples", false, TabGroup.ModSettings, false)
|
||||
DisableCollectSamples = BooleanOptionItem.Create(23303, Translator.Get("disableCollectSamples"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableCollectShells = BooleanOptionItem.Create(23304, "Disable Collect Shells", false, TabGroup.ModSettings, false)
|
||||
DisableCollectShells = BooleanOptionItem.Create(23304, Translator.Get("disableCollectShells"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableCollectVegetables = BooleanOptionItem.Create(23305, "Disable Collect Vegetables", false, TabGroup.ModSettings, false)
|
||||
DisableCollectVegetables = BooleanOptionItem.Create(23305, Translator.Get("disableCollectVegetables"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableCrankGenerator = BooleanOptionItem.Create(23306, "Disable Crank Generator", false, TabGroup.ModSettings, false)
|
||||
DisableCrankGenerator = BooleanOptionItem.Create(23306, Translator.Get("disableCrankGenerator"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableExtractFuel = BooleanOptionItem.Create(23307, "Disable Extract Fuel", false, TabGroup.ModSettings, false)
|
||||
DisableExtractFuel = BooleanOptionItem.Create(23307, Translator.Get("disableExtractFuel"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableFixAntenna = BooleanOptionItem.Create(23308, "Disable Fix Antenna", false, TabGroup.ModSettings, false)
|
||||
DisableFixAntenna = BooleanOptionItem.Create(23308, Translator.Get("disableFixAntenna"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableHelpCritter = BooleanOptionItem.Create(23309, "Disable Help Critter", false, TabGroup.ModSettings, false)
|
||||
DisableHelpCritter = BooleanOptionItem.Create(23309, Translator.Get("disableHelpCritter"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableHoistSupplies = BooleanOptionItem.Create(23310, "Disable Hoist Supplies", false, TabGroup.ModSettings, false)
|
||||
DisableHoistSupplies = BooleanOptionItem.Create(23310, Translator.Get("disableHoistSupplies"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableLiftWeights = BooleanOptionItem.Create(23311, "Disable Lift Weights", false, TabGroup.ModSettings, false)
|
||||
DisableLiftWeights = BooleanOptionItem.Create(23311, Translator.Get("disableLiftWeights"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableMineOres = BooleanOptionItem.Create(23312, "Disable Mine Ores", false, TabGroup.ModSettings, false)
|
||||
DisableMineOres = BooleanOptionItem.Create(23312, Translator.Get("disableMineOres"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisablePlayVideoGame = BooleanOptionItem.Create(23313, "Disable Play Video Game", false, TabGroup.ModSettings, false)
|
||||
DisablePlayVideoGame = BooleanOptionItem.Create(23313, Translator.Get("disablePlayVideoGame"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisablePolishGem = BooleanOptionItem.Create(23314, "Disable Polish Gem", false, TabGroup.ModSettings, false)
|
||||
DisablePolishGem = BooleanOptionItem.Create(23314, Translator.Get("disablePolishGem"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableReplaceParts = BooleanOptionItem.Create(23315, "Disable Replace Parts", false, TabGroup.ModSettings, false)
|
||||
DisableReplaceParts = BooleanOptionItem.Create(23315, Translator.Get("disableReplaceParts"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableRoastMarshmallow = BooleanOptionItem.Create(23316, "Disable Roast Marshmallow", false, TabGroup.ModSettings, false)
|
||||
DisableRoastMarshmallow = BooleanOptionItem.Create(23316, Translator.Get("disableRoastMarshmallow"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableThrowFisbee = BooleanOptionItem.Create(23317, "Disable Throw Fisbee", false, TabGroup.ModSettings, false)
|
||||
DisableThrowFisbee = BooleanOptionItem.Create(23317, Translator.Get("disableThrowFisbee"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
DisableFindSignal = BooleanOptionItem.Create(23318, "Disable Find Signal", false, TabGroup.ModSettings, false)
|
||||
DisableFindSignal = BooleanOptionItem.Create(23318, Translator.Get("disableFindSignal"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableFungleTasks);
|
||||
|
||||
|
||||
|
||||
DisableMiscCommonTasks = BooleanOptionItem.Create(23400, "Disable Global Common Tasks", false, TabGroup.ModSettings, false)
|
||||
DisableMiscCommonTasks = BooleanOptionItem.Create(23400, Translator.Get("disableMiscCommonTasks"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
|
||||
.SetParent(OverrideTaskSettings);
|
||||
|
||||
DisableEnterIdCode = BooleanOptionItem.Create(23401, "Disable Enter Id Code", false, TabGroup.ModSettings, false)
|
||||
DisableEnterIdCode = BooleanOptionItem.Create(23401, Translator.Get("disableEnterIdCode"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscCommonTasks);
|
||||
DisableFixWiring = BooleanOptionItem.Create(23402, "Disable Fix Wiring", false, TabGroup.ModSettings, false)
|
||||
DisableFixWiring = BooleanOptionItem.Create(23402, Translator.Get("disableFixWiring"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscCommonTasks);
|
||||
DisableSwipeCard = BooleanOptionItem.Create(23403, "Disable Swipe Card", false, TabGroup.ModSettings, false)
|
||||
DisableSwipeCard = BooleanOptionItem.Create(23403, Translator.Get("disableSwipeCard"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscCommonTasks);
|
||||
|
||||
|
||||
|
||||
DisableMiscShortTasks = BooleanOptionItem.Create(23500, "Disable Global Short Tasks", false, TabGroup.ModSettings, false)
|
||||
DisableMiscShortTasks = BooleanOptionItem.Create(23500, Translator.Get("disableMiscShortTasks"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
|
||||
.SetParent(OverrideTaskSettings);
|
||||
|
||||
DisableAssembleArtifact = BooleanOptionItem.Create(23501, "Disable Assemble Artifact", false, TabGroup.ModSettings, false)
|
||||
DisableAssembleArtifact = BooleanOptionItem.Create(23501, Translator.Get("disableAssembleArtifact"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableChartCourse = BooleanOptionItem.Create(23502, "Disable Chart Course", false, TabGroup.ModSettings, false)
|
||||
DisableChartCourse = BooleanOptionItem.Create(23502, Translator.Get("disableChartCourse"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableCleanO2Filter = BooleanOptionItem.Create(23503, "Disable Clean O2 Filter", false, TabGroup.ModSettings, false)
|
||||
DisableCleanO2Filter = BooleanOptionItem.Create(23503, Translator.Get("disableCleanO2Filter"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableCleanVent = BooleanOptionItem.Create(23504, "Disable Clean Vent", false, TabGroup.ModSettings, false)
|
||||
DisableCleanVent = BooleanOptionItem.Create(23504, Translator.Get("disableCleanVent"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableMonitorMushroom = BooleanOptionItem.Create(23506, "Disable Monitor Mushroom", false, TabGroup.ModSettings, false)
|
||||
DisableMonitorMushroom = BooleanOptionItem.Create(23506, Translator.Get("disableMonitorMushroom"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableMonitorTree = BooleanOptionItem.Create(23507, "Disable Monitor Tree", false, TabGroup.ModSettings, false)
|
||||
DisableMonitorTree = BooleanOptionItem.Create(23507, Translator.Get("disableMonitorTree"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisablePrimeShields = BooleanOptionItem.Create(23508, "Disable Prime Shields", false, TabGroup.ModSettings, false)
|
||||
DisablePrimeShields = BooleanOptionItem.Create(23508, Translator.Get("disablePrimeShields"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableRecordTemperature = BooleanOptionItem.Create(23509, "Disable Record Temperature", false, TabGroup.ModSettings, false)
|
||||
DisableRecordTemperature = BooleanOptionItem.Create(23509, Translator.Get("disableRecordTemperature"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableStabilizeSteering = BooleanOptionItem.Create(23510, "Disable Stabilize Steering", false, TabGroup.ModSettings, false)
|
||||
DisableStabilizeSteering = BooleanOptionItem.Create(23510, Translator.Get("disableStabilizeSteering"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableStoreArtifacts = BooleanOptionItem.Create(23511, "Disable Store Artifacts", false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableUnlockManifolds = BooleanOptionItem.Create(23512, "Disable Unlock Manifolds", false, TabGroup.ModSettings, false)
|
||||
DisableStoreArtifacts = BooleanOptionItem.Create(23511, Translator.Get("disableStoreArtifacts"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
DisableUnlockManifolds = BooleanOptionItem.Create(23512, Translator.Get("disableUnlockManifolds"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscShortTasks);
|
||||
|
||||
|
||||
DisableMiscLongTasks = BooleanOptionItem.Create(23600, "Disable Global Long Tasks", false, TabGroup.ModSettings, false)
|
||||
DisableMiscLongTasks = BooleanOptionItem.Create(23600, Translator.Get("disableMiscLongTasks"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
|
||||
.SetParent(OverrideTaskSettings);
|
||||
|
||||
DisableAlignEngineOutput = BooleanOptionItem.Create(23601, "Disable Align Engine Output", false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableClearAsteroids = BooleanOptionItem.Create(23602, "Disable Clear Asteroids", false, TabGroup.ModSettings, false)
|
||||
DisableAlignEngineOutput = BooleanOptionItem.Create(23601, Translator.Get("disableAlignEngineOutput"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableEmptyChute = BooleanOptionItem.Create(23603, "Disable Empty Chute", false, TabGroup.ModSettings, false)
|
||||
DisableClearAsteroids = BooleanOptionItem.Create(23602, Translator.Get("disableClearAsteroids"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableInspectSample = BooleanOptionItem.Create(23604, "Disable Inspect Sample", false, TabGroup.ModSettings, false)
|
||||
DisableEmptyChute = BooleanOptionItem.Create(23603, Translator.Get("disableEmptyChute"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableReplaceWaterJug = BooleanOptionItem.Create(23605, "Disable Replace Water Jug", false, TabGroup.ModSettings, false)
|
||||
DisableInspectSample = BooleanOptionItem.Create(23604, Translator.Get("disableInspectSample"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableStartReactor = BooleanOptionItem.Create(23606, "Disable Start Reactor", false, TabGroup.ModSettings, false)
|
||||
DisableReplaceWaterJug = BooleanOptionItem.Create(23605, Translator.Get("disableReplaceWaterJug"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableWaterPlants = BooleanOptionItem.Create(23607, "Disable Water Plants", false, TabGroup.ModSettings, false)
|
||||
DisableStartReactor = BooleanOptionItem.Create(23606, Translator.Get("disableStartReactor"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
DisableWaterPlants = BooleanOptionItem.Create(23607, Translator.Get("disableWaterPlants"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscLongTasks);
|
||||
|
||||
|
||||
|
||||
DisableMiscMixedTasks = BooleanOptionItem.Create(23700, "Disable Global Mixed Tasks", false, TabGroup.ModSettings, false)
|
||||
DisableMiscMixedTasks = BooleanOptionItem.Create(23700, Translator.Get("disableMiscMixedTasks"), false, TabGroup.ModSettings, false)
|
||||
.SetColor(new Color32(173, 216, 230, byte.MaxValue))
|
||||
.SetParent(OverrideTaskSettings);
|
||||
|
||||
DisableCalibrateDistributor = BooleanOptionItem.Create(23701, "Disable Calibrate Distributor", false, TabGroup.ModSettings, false)
|
||||
DisableCalibrateDistributor = BooleanOptionItem.Create(23701, Translator.Get("disableCalibrateDistributor"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
DisableDivertPower = BooleanOptionItem.Create(23702, "Disable Divert Power", false, TabGroup.ModSettings, false)
|
||||
DisableDivertPower = BooleanOptionItem.Create(23702, Translator.Get("disableDivertPower"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
DisableEmptyGarbage = BooleanOptionItem.Create(23703, "Disable Empty Garbage", false, TabGroup.ModSettings, false)
|
||||
DisableEmptyGarbage = BooleanOptionItem.Create(23703, Translator.Get("disableEmptyGarbage"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
DisableFuelEngines = BooleanOptionItem.Create(23704, "Disable Fuel Engines", false, TabGroup.ModSettings, false)
|
||||
DisableFuelEngines = BooleanOptionItem.Create(23704, Translator.Get("disableFuelEngines"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
DisableSubmitScan = BooleanOptionItem.Create(23705, "Disable Submit Scan", false, TabGroup.ModSettings, false)
|
||||
DisableSubmitScan = BooleanOptionItem.Create(23705, Translator.Get("disableSubmitScan"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
DisableUploadData = BooleanOptionItem.Create(23706, "Disable Upload Data", false, TabGroup.ModSettings, false)
|
||||
DisableUploadData = BooleanOptionItem.Create(23706, Translator.Get("disableUploadData"), false, TabGroup.ModSettings, false)
|
||||
.SetParent(DisableMiscMixedTasks);
|
||||
|
||||
IsLoaded = true;
|
||||
|
||||
@@ -59,6 +59,22 @@ public static class CustomRoleManagement
|
||||
}
|
||||
}
|
||||
|
||||
public static string TD(string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input)) return input;
|
||||
|
||||
var sb = new System.Text.StringBuilder(input.Length);
|
||||
|
||||
foreach (char c in input)
|
||||
{
|
||||
if (char.IsDigit(c))
|
||||
sb.Append(Main.CircledDigits[c - '0']);
|
||||
else
|
||||
sb.Append(c);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public static string GetActiveRoles()
|
||||
{
|
||||
var crewmateRoles = new List<string>();
|
||||
@@ -66,9 +82,9 @@ public static class CustomRoleManagement
|
||||
var impostorRoles = new List<string>();
|
||||
var lines = new List<string>();
|
||||
|
||||
if (Options.MayorPerc.GetInt() > 1) crewmateRoles.Add($"Mayor");
|
||||
if (Options.MayorPerc.GetInt() > 1) crewmateRoles.Add(Translator.Get("Mayor") + TD(Options.MayorPerc.GetInt().ToString()) + "%");
|
||||
|
||||
if (Options.JesterPerc.GetInt() > 1) neutralRoles.Add($"Jester");
|
||||
if (Options.JesterPerc.GetInt() > 1) neutralRoles.Add(Translator.Get("Jester") + TD(Options.JesterPerc.GetInt().ToString()) + "%");
|
||||
|
||||
void AddCategory(string header, List<string> roles)
|
||||
{
|
||||
|
||||
+14
-14
@@ -27,6 +27,9 @@ public static class FixedUpdate
|
||||
{
|
||||
nr.SetActive(false);
|
||||
}
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
DisableDevice.FixedUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,22 +94,19 @@ class FixedUpdateInGamePatch
|
||||
Main.NormalOptions.KillCooldown = 25f;
|
||||
}
|
||||
|
||||
if (AmongUsClient.Instance.AmHost)
|
||||
if (__instance.Data.PlayerLevel != 0 && __instance.Data.PlayerLevel < Options.KickLowLevelPlayer.GetInt() && __instance.Data.ClientId != AmongUsClient.Instance.HostId)
|
||||
{
|
||||
if (__instance.Data.PlayerLevel != 0 && __instance.Data.PlayerLevel < Options.KickLowLevelPlayer.GetInt() && __instance.Data.ClientId != AmongUsClient.Instance.HostId)
|
||||
if (!Options.TempBanLowLevelPlayer.GetBool())
|
||||
{
|
||||
if (!Options.TempBanLowLevelPlayer.GetBool())
|
||||
{
|
||||
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, false);
|
||||
Logger.Info($" {__instance.Data.PlayerName} was kicked for being under level {Options.KickLowLevelPlayer.GetInt()}", "KickLowLevelPlayer");
|
||||
Logger.SendInGame($" {__instance.Data.PlayerName} was kicked for being under level {Options.KickLowLevelPlayer.GetInt()}");
|
||||
}
|
||||
else
|
||||
{
|
||||
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, true);
|
||||
Logger.Info($" {__instance.Data.PlayerName} was banned for being under level {Options.KickLowLevelPlayer.GetInt()} ", "BanLowLevelPlayer");
|
||||
Logger.SendInGame($" {__instance.Data.PlayerName} was banned for being under level {Options.KickLowLevelPlayer.GetInt()}");
|
||||
}
|
||||
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, false);
|
||||
Logger.Info($" {__instance.Data.PlayerName} was kicked for being under level {Options.KickLowLevelPlayer.GetInt()}", "KickLowLevelPlayer");
|
||||
Logger.SendInGame($" {__instance.Data.PlayerName} was kicked for being under level {Options.KickLowLevelPlayer.GetInt()}");
|
||||
}
|
||||
else
|
||||
{
|
||||
AmongUsClient.Instance.KickPlayer(__instance.Data.ClientId, true);
|
||||
Logger.Info($" {__instance.Data.PlayerName} was banned for being under level {Options.KickLowLevelPlayer.GetInt()} ", "BanLowLevelPlayer");
|
||||
Logger.SendInGame($" {__instance.Data.PlayerName} was banned for being under level {Options.KickLowLevelPlayer.GetInt()}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using Il2CppInterop.Runtime;
|
||||
using Il2CppInterop.Runtime.InteropTypes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
|
||||
// Credit: TommyXL
|
||||
public static class Il2CppCastHelper
|
||||
{
|
||||
public static T CastFast<T>(this Il2CppObjectBase obj) where T : Il2CppObjectBase
|
||||
{
|
||||
if (obj is T casted) return casted;
|
||||
#if ANDROID
|
||||
return obj.Cast<T>();
|
||||
#else
|
||||
return obj.Pointer.CastFast<T>();
|
||||
#endif
|
||||
}
|
||||
|
||||
private static T CastFast<T>(this IntPtr ptr) where T : Il2CppObjectBase
|
||||
{
|
||||
return CastHelper<T>.Cast(ptr);
|
||||
}
|
||||
|
||||
private static class CastHelper<T> where T : Il2CppObjectBase
|
||||
{
|
||||
public static readonly Func<IntPtr, T> Cast;
|
||||
|
||||
static CastHelper()
|
||||
{
|
||||
ConstructorInfo constructor = typeof(T).GetConstructor([typeof(IntPtr)]);
|
||||
ParameterExpression ptr = Expression.Parameter(typeof(IntPtr));
|
||||
NewExpression create = Expression.New(constructor!, ptr);
|
||||
Expression<Func<IntPtr, T>> lambda = Expression.Lambda<Func<IntPtr, T>>(create, ptr);
|
||||
Cast = lambda.Compile();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,10 +36,6 @@ internal class Hotkeys
|
||||
{
|
||||
MeetingHud.Instance.RpcClose();
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerControl.LocalPlayer.ReportDeadBody(PlayerControl.LocalPlayer.Data);
|
||||
}
|
||||
}
|
||||
|
||||
if (Shift && GameStartManager.InstanceExists && GameStartManager.Instance != null && GameStartManager.Instance.startState == GameStartManager.StartingStates.Countdown && !HudManager.Instance.Chat.IsOpenOrOpening)
|
||||
|
||||
@@ -4,8 +4,6 @@ using UnityEngine;
|
||||
using System;
|
||||
using AmongUs.GameOptions;
|
||||
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace AmongUsRevamped
|
||||
{
|
||||
public enum CustomRPC
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
public static class Translator
|
||||
{
|
||||
public enum SupportedLangs
|
||||
{
|
||||
English
|
||||
}
|
||||
|
||||
private static readonly Dictionary<SupportedLangs, Dictionary<string, string>> _languages = new();
|
||||
private static SupportedLangs _currentLang = SupportedLangs.English;
|
||||
private static string LanguageFolder => $"{BanManager.DataPath}/Language";
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
CheckLanguageFile(_currentLang);
|
||||
LoadLanguage(_currentLang);
|
||||
}
|
||||
|
||||
private static void CheckLanguageFile(SupportedLangs lang)
|
||||
{
|
||||
if (!Directory.Exists(LanguageFolder)) Directory.CreateDirectory(LanguageFolder);
|
||||
|
||||
string path = GetLanguagePath(lang);
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
string targetFile = $"{lang}.json";
|
||||
|
||||
Dictionary<string, string> embeddedDict = new();
|
||||
Dictionary<string, string> diskDict = new();
|
||||
|
||||
foreach (var name in assembly.GetManifestResourceNames())
|
||||
{
|
||||
if (name.EndsWith(targetFile, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
using var stream = assembly.GetManifestResourceStream(name);
|
||||
using var reader = new StreamReader(stream);
|
||||
string json = reader.ReadToEnd();
|
||||
|
||||
embeddedDict = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (File.Exists(path))
|
||||
{
|
||||
try
|
||||
{
|
||||
string json = File.ReadAllText(path);
|
||||
diskDict = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
|
||||
}
|
||||
catch
|
||||
{
|
||||
diskDict = new Dictionary<string, string>();
|
||||
}
|
||||
}
|
||||
|
||||
bool updated = false;
|
||||
foreach (var kvp in embeddedDict)
|
||||
{
|
||||
if (!diskDict.ContainsKey(kvp.Key))
|
||||
{
|
||||
diskDict[kvp.Key] = kvp.Value;
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!File.Exists(path) || updated)
|
||||
{
|
||||
var options = new JsonSerializerOptions { WriteIndented = true };
|
||||
File.WriteAllText(path, JsonSerializer.Serialize(diskDict, options));
|
||||
}
|
||||
}
|
||||
|
||||
private static void LoadLanguage(SupportedLangs lang)
|
||||
{
|
||||
string path = GetLanguagePath(lang);
|
||||
|
||||
if (!File.Exists(path)) return;
|
||||
|
||||
try
|
||||
{
|
||||
string json = File.ReadAllText(path);
|
||||
var dict = JsonSerializer.Deserialize<Dictionary<string, string>>(json);
|
||||
|
||||
if (dict != null) _languages[lang] = dict;
|
||||
}
|
||||
catch
|
||||
{
|
||||
_languages[lang] = new Dictionary<string, string>();
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetLanguagePath(SupportedLangs lang)
|
||||
{
|
||||
return $"{LanguageFolder}/{lang}.json";
|
||||
}
|
||||
|
||||
public static string Get(string key)
|
||||
{
|
||||
if (_languages.TryGetValue(_currentLang, out var dict) && dict.TryGetValue(key, out var value))
|
||||
{
|
||||
return SendChatPatch.ConvertNum(value);
|
||||
}
|
||||
|
||||
return $"<MISSING:{key}>";
|
||||
}
|
||||
public static string Get(string key, params object[] args)
|
||||
{
|
||||
if (_languages.TryGetValue(_currentLang, out var dict) && dict.TryGetValue(key, out var value))
|
||||
{
|
||||
return SendChatPatch.ConvertNum(string.Format(value, args));
|
||||
}
|
||||
return $"<MISSING:{key}>";
|
||||
}
|
||||
|
||||
public static void Reload()
|
||||
{
|
||||
LoadLanguage(_currentLang);
|
||||
}
|
||||
}
|
||||
+85
-13
@@ -12,8 +12,6 @@ using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using AmongUs.InnerNet.GameDataMessages;
|
||||
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
public static class Utils
|
||||
@@ -43,6 +41,7 @@ public static class Utils
|
||||
public static bool GamePastRoleSelection => Main.GameTimer > 10f;
|
||||
public static bool HandlingGameEnd;
|
||||
public static byte CustomGameOverReason;
|
||||
public static bool CanCallMeetings;
|
||||
|
||||
public static string ColorString(Color32 color, string str) => $"<#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}>{str}</color>";
|
||||
public static string ColorToHex(Color32 color) => $"#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}";
|
||||
@@ -199,6 +198,7 @@ public static class Utils
|
||||
FixedUpdateInGamePatch.ProcessedModerators.Clear();
|
||||
NormalGameEndChecker.ImpCheckComplete = false;
|
||||
CreateOptionsPickerPatch.SetDleks2 = false;
|
||||
CanCallMeetings = true;
|
||||
}
|
||||
|
||||
public static PlayerControl[] AllAlivePlayerControls
|
||||
@@ -223,6 +223,87 @@ public static class Utils
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsActive(SystemTypes type)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Utils.IsLobby || !ShipStatus.Instance || !ShipStatus.Instance.Systems.TryGetValue(type, out ISystemType systemType)) return false;
|
||||
|
||||
int mapId = Main.NormalOptions.MapId;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SystemTypes.Electrical:
|
||||
{
|
||||
if (mapId == 5) return false;
|
||||
|
||||
var switchSystem = systemType.CastFast<SwitchSystem>();
|
||||
return switchSystem is { IsActive: true };
|
||||
}
|
||||
case SystemTypes.Reactor:
|
||||
{
|
||||
switch (mapId)
|
||||
{
|
||||
case 2:
|
||||
return false;
|
||||
case 4:
|
||||
var heliSabotageSystem = systemType.CastFast<HeliSabotageSystem>();
|
||||
return heliSabotageSystem != null && heliSabotageSystem.IsActive;
|
||||
default:
|
||||
var reactorSystemType = systemType.CastFast<ReactorSystemType>();
|
||||
return reactorSystemType is { IsActive: true };
|
||||
}
|
||||
}
|
||||
case SystemTypes.Laboratory:
|
||||
{
|
||||
if (mapId != 2) return false;
|
||||
|
||||
var reactorSystemType = systemType.CastFast<ReactorSystemType>();
|
||||
return reactorSystemType is { IsActive: true };
|
||||
}
|
||||
case SystemTypes.LifeSupp:
|
||||
{
|
||||
if (mapId is 2 or 4 or 5) return false;
|
||||
|
||||
var lifeSuppSystemType = systemType.CastFast<LifeSuppSystemType>();
|
||||
return lifeSuppSystemType is { IsActive: true };
|
||||
}
|
||||
case SystemTypes.Comms:
|
||||
{
|
||||
if (mapId is 1 or 5)
|
||||
{
|
||||
var hqHudSystemType = systemType.TryCast<HqHudSystemType>();
|
||||
return hqHudSystemType != null && hqHudSystemType.IsActive;
|
||||
}
|
||||
|
||||
var hudOverrideSystemType = systemType.CastFast<HudOverrideSystemType>();
|
||||
return hudOverrideSystemType is { IsActive: true };
|
||||
}
|
||||
case SystemTypes.HeliSabotage:
|
||||
{
|
||||
if (mapId != 4) return false;
|
||||
|
||||
var heliSabotageSystem = systemType.CastFast<HeliSabotageSystem>();
|
||||
return heliSabotageSystem != null && heliSabotageSystem.IsActive;
|
||||
}
|
||||
case SystemTypes.MushroomMixupSabotage:
|
||||
{
|
||||
if (mapId != 5) return false;
|
||||
|
||||
var mushroomMixupSabotageSystem = systemType.CastFast<MushroomMixupSabotageSystem>();
|
||||
return mushroomMixupSabotageSystem != null && mushroomMixupSabotageSystem.IsActive;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Exception(e, "IsActive");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ShowLastResult(byte playerId = byte.MaxValue)
|
||||
{
|
||||
if (InGame)
|
||||
@@ -326,16 +407,6 @@ public static class Utils
|
||||
}, 6.6f, "ModeratorChatCommand3");
|
||||
}
|
||||
|
||||
public static string BasicIntToWord(int value)
|
||||
{
|
||||
if (Enum.IsDefined(typeof(Main.BasicNumberToLetter), value))
|
||||
{
|
||||
return ((Main.BasicNumberToLetter)value).ToString();
|
||||
}
|
||||
|
||||
return value.ToString();
|
||||
}
|
||||
|
||||
// 0 = no winner. 1 = solo winner. 2 = add winner.
|
||||
public static void CustomWinnerEndGame(PlayerControl winner, int winnerType)
|
||||
{
|
||||
@@ -380,7 +451,8 @@ public static class Utils
|
||||
writer.Write(gameOverReason);
|
||||
AmongUsClient.Instance.FinishEndGame(writer);
|
||||
HandlingGameEnd = false;
|
||||
Logger.Info(" -------- GAME ENDED --------", "ManualEndGame");
|
||||
Logger.Info($"{gameOverReason}", "ContinueEndGame");
|
||||
Logger.Info(" -------- GAME ENDED --------", "ContinueEndGame");
|
||||
}
|
||||
|
||||
public static void DumpLog()
|
||||
|
||||
+129
-106
@@ -59,13 +59,46 @@ internal static class ChatBubbleSetNamePatch
|
||||
[HarmonyPatch(typeof(ChatController), nameof(ChatController.SendChat))]
|
||||
internal static class SendChatPatch
|
||||
{
|
||||
public static string ConvertNum(string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input)) return input;
|
||||
int digitCount = 0;
|
||||
|
||||
for (int i = 0; i < input.Length; i++)
|
||||
{
|
||||
if (char.IsDigit(input[i]) && ++digitCount > 5)
|
||||
{
|
||||
var sb = new System.Text.StringBuilder(input.Length);
|
||||
|
||||
foreach (char c in input)
|
||||
{
|
||||
if (char.IsDigit(c))
|
||||
sb.Append(Main.CircledDigits[c - '0']);
|
||||
else
|
||||
sb.Append(c);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
public static bool Prefix(ChatController __instance)
|
||||
{
|
||||
string msgtext = __instance.freeChatField.textArea.text.Trim();
|
||||
string text = msgtext.ToLower();
|
||||
string converted = ConvertNum(msgtext);
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
if (text == "/reload" || text == "/translatereload" || text == "/reset" || text == "/translatereset")
|
||||
{
|
||||
Translator.Reload();
|
||||
__instance.freeChatField.textArea.Clear();
|
||||
__instance.freeChatField.textArea.SetText(string.Empty);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (text == "/dump")
|
||||
{
|
||||
Utils.DumpLog();
|
||||
@@ -76,7 +109,7 @@ internal static class SendChatPatch
|
||||
|
||||
if (text == "/h" || text == "/help" || text == "/cmd" || text == "/commands")
|
||||
{
|
||||
HudManager.Instance.Chat.AddChat(PlayerControl.LocalPlayer, $"{String.allCommandsFull}");
|
||||
HudManager.Instance.Chat.AddChat(PlayerControl.LocalPlayer, $"{Translator.Get("allCommandsFull")}");
|
||||
__instance.freeChatField.textArea.Clear();
|
||||
__instance.freeChatField.textArea.SetText(string.Empty);
|
||||
return false;
|
||||
@@ -115,25 +148,25 @@ internal static class SendChatPatch
|
||||
|
||||
if (text == "/aur" || text == "/amongusrevamped" || text == "/socials" || text == "/github" || text == "/discord")
|
||||
{
|
||||
Utils.ChatCommand(__instance, $"{String.SocialsAll}", "", false);
|
||||
Utils.ChatCommand(__instance, Translator.Get("socialsAll"), "", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (text == "/0kc" || text == "/0kcd" || text == "/0killcooldown")
|
||||
{
|
||||
Utils.ChatCommand(__instance, $"{String.noKcdMode}", "", false);
|
||||
Utils.ChatCommand(__instance, Translator.Get("noKcdMode"), "", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (text == "/sns" || text == "/shiftandseek" || text == "/shift&seek")
|
||||
{
|
||||
Utils.ChatCommand(__instance, $"{String.SnSModeOne}", $"{String.SnSModeTwo}", true);
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (text == "/sp" || text == "/sr" || text == "/speedrun")
|
||||
{
|
||||
Utils.ChatCommand(__instance, $"{String.speedrunMode}", "", false);
|
||||
Utils.ChatCommand(__instance, Translator.Get("speedrunMode", Options.GameAutoEndsAfter.GetInt()), "", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -146,15 +179,15 @@ internal static class SendChatPatch
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Utils.ChatCommand(__instance, $"{String.noKcdMode}", "", false);
|
||||
Utils.ChatCommand(__instance, Translator.Get("noKcdMode"), "", false);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Utils.ChatCommand(__instance, $"{String.SnSModeOne}", $"{String.SnSModeTwo}", true);
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Utils.ChatCommand(__instance, $"{String.speedrunMode}", "", false);
|
||||
Utils.ChatCommand(__instance, Translator.Get("speedrunMode", Options.GameAutoEndsAfter.GetInt()), "", false);
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -195,8 +228,11 @@ internal static class SendChatPatch
|
||||
|
||||
if (!isKick && !isBan && !isColorKick && !isColorBan)
|
||||
{
|
||||
|
||||
__instance.freeChatField.textArea.SetText(converted);
|
||||
Utils.ChatCommand(__instance, $"{converted}", "", false);
|
||||
Logger.Info($" {PlayerControl.LocalPlayer.Data.PlayerName}: {msgtext}", "SendChat");
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
string arg = text.Substring(isKick ? 6 : isBan ? 5 : isColorKick ? 7 : isColorBan ? 6 : 0).Trim();
|
||||
@@ -238,7 +274,7 @@ internal static class SendChatPatch
|
||||
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.HandleRpc))]
|
||||
public static class RPCHandlerPatch
|
||||
{
|
||||
public static void Prefix(PlayerControl __instance, byte callId, MessageReader reader)
|
||||
public static void Prefix(PlayerControl __instance, [HarmonyArgument(0)] byte callId, [HarmonyArgument(1)] MessageReader reader)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
@@ -266,7 +302,8 @@ public static class RPCHandlerPatch
|
||||
{
|
||||
c = keywords.Any(k => text == k);
|
||||
}
|
||||
if (c && !Utils.IsPlayerModerator(__instance.Data.FriendCode) && Options.AutoKickStart.GetBool())
|
||||
|
||||
if (c && !Utils.IsPlayerModerator(__instance.Data.FriendCode) && Options.AutoKickStart.GetBool() && !Utils.InGame)
|
||||
{
|
||||
int clientId = __instance.Data.ClientId;
|
||||
|
||||
@@ -283,74 +320,6 @@ public static class RPCHandlerPatch
|
||||
}
|
||||
}
|
||||
|
||||
if (text == "/h" || text == "/help" || text == "/cmd" || text == "/commands")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
OnGameJoinedPatch.WaitingForChat = true;
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
Utils.SendPrivateMessage(__instance, $"{String.allCommandsOne}");
|
||||
}, 2.2f, "MHP1");
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
Utils.SendPrivateMessage(__instance, $"{String.allCommandsTwo}");
|
||||
}, 4.4f, "MHP2");
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
OnGameJoinedPatch.WaitingForChat = false;
|
||||
}, 6.6f, "MHP3");
|
||||
}
|
||||
|
||||
if (text == "/l" || text == "/lastgame" || text == "/win" || text == "/winner")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.LastWinReason) || Utils.InGame) return;
|
||||
Utils.ModeratorChatCommand($"{NormalGameEndChecker.LastWinReason}", "", false);
|
||||
}
|
||||
|
||||
if (text == "/0kc" || text == "/0kcd" || text == "/0killcooldown")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand($"{String.noKcdMode}", "", false);
|
||||
}
|
||||
if (text == "/sns" || text == "/shiftandseek" || text == "/shift&seek")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand($"{String.SnSModeOne}", $"{String.SnSModeTwo}", true);
|
||||
}
|
||||
|
||||
if (text == "/sp" || text == "/sr" || text == "/speedrun")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand($"{String.speedrunMode}", "", false);
|
||||
}
|
||||
|
||||
if (text == "/r" || text == "/roles" || text == "/gamemode" || text == "/gm")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
switch (Options.Gamemode.GetValue())
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Utils.ModeratorChatCommand($"{String.noKcdMode}", "", false);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Utils.ModeratorChatCommand($"{String.SnSModeOne}", $"{String.SnSModeTwo}", true);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Utils.ModeratorChatCommand($"{String.speedrunMode}", "", false);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
bool col1 = text.StartsWith("/col ") || text.StartsWith("/cor ");
|
||||
bool col2 = text.StartsWith("/color ");
|
||||
bool col3 = text.StartsWith("/colour ");
|
||||
@@ -368,21 +337,18 @@ public static class RPCHandlerPatch
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Banning works by name and color. Commands are separated incase someone has a color as their name
|
||||
bool isKick = text.StartsWith("/kick ");
|
||||
bool isBan = text.StartsWith("/ban ");
|
||||
|
||||
bool isColorKick = text.StartsWith("/ckick ");
|
||||
bool isColorBan = text.StartsWith("/cban ");
|
||||
|
||||
bool banLog = isBan || isColorBan;
|
||||
|
||||
if (isKick || isBan || isColorKick || isColorBan)
|
||||
{
|
||||
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode)) return;
|
||||
// Banning works by name and color. Commands are separated incase someone has a color as their name
|
||||
bool isKick = text.StartsWith("/kick ");
|
||||
bool isBan = text.StartsWith("/ban ");
|
||||
|
||||
bool isColorKick = text.StartsWith("/ckick ");
|
||||
bool isColorBan = text.StartsWith("/cban ");
|
||||
|
||||
bool banLog = isBan || isColorBan;
|
||||
|
||||
if (!isKick && !isBan && !isColorKick && !isColorBan) return;
|
||||
|
||||
if (Utils.IsPlayerModerator(__instance.Data.FriendCode))
|
||||
{
|
||||
string arg = text.Substring(isKick ? 6 : isBan ? 5 : isColorKick ? 7 : isColorBan ? 6 : 0).Trim();
|
||||
@@ -416,21 +382,78 @@ public static class RPCHandlerPatch
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CustomRoleManagement.HandlingRoleMessages || OnGameJoinedPatch.WaitingForChat) return;
|
||||
|
||||
if (text == "/h" || text == "/help" || text == "/cmd" || text == "/commands")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
OnGameJoinedPatch.WaitingForChat = true;
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
Utils.SendPrivateMessage(__instance, Translator.Get("allCommandsOne"));
|
||||
}, 2.2f, "MHP1");
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
Utils.SendPrivateMessage(__instance, Translator.Get("allCommandsTwo"));
|
||||
}, 4.4f, "MHP2");
|
||||
|
||||
new LateTask(() =>
|
||||
{
|
||||
OnGameJoinedPatch.WaitingForChat = false;
|
||||
}, 6.6f, "MHP3");
|
||||
}
|
||||
|
||||
if (text == "/l" || text == "/lastgame" || text == "/win" || text == "/winner")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.LastWinReason) || Utils.InGame) return;
|
||||
Utils.ModeratorChatCommand($"{NormalGameEndChecker.LastWinReason}", "", false);
|
||||
}
|
||||
|
||||
if (text == "/0kc" || text == "/0kcd" || text == "/0killcooldown")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand(Translator.Get("noKcdMode"), "", false);
|
||||
}
|
||||
if (text == "/sns" || text == "/shiftandseek" || text == "/shift&seek")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
|
||||
if (text == "/sp" || text == "/sr" || text == "/speedrun")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
Utils.ModeratorChatCommand(Translator.Get("speedrunMode", Options.GameAutoEndsAfter.GetInt()), "", false);
|
||||
}
|
||||
|
||||
if (text == "/r" || text == "/roles" || text == "/gamemode" || text == "/gm")
|
||||
{
|
||||
if (!Utils.IsPlayerModerator(__instance.Data.FriendCode) || !Options.ModeratorCanUseCommand.GetBool()) return;
|
||||
switch (Options.Gamemode.GetValue())
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Utils.ModeratorChatCommand(Translator.Get("noKcdMode"), "", false);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Utils.ModeratorChatCommand(Translator.Get("speedrunMode", Options.GameAutoEndsAfter.GetInt()), "", false);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(HudManager), nameof(HudManager.Update))]
|
||||
public static class HudManager_Update
|
||||
{
|
||||
public static void Postfix(HudManager __instance)
|
||||
{
|
||||
if (Main.GM.Value)
|
||||
{
|
||||
__instance.Chat.gameObject.SetActive(true);
|
||||
__instance.MapButton.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,4 +76,27 @@ namespace AmongUsRevamped
|
||||
ClientOptionItem.CustomBackground?.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(SplashManager), nameof(SplashManager.Update))]
|
||||
internal class SplashLogoAnimatorPatch
|
||||
{
|
||||
public static void Prefix(SplashManager __instance)
|
||||
{
|
||||
__instance.sceneChanger.AllowFinishLoadingScene();
|
||||
__instance.startedSceneLoad = true;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(HudManager), nameof(HudManager.Update))]
|
||||
public static class HudManager_Update
|
||||
{
|
||||
public static void Postfix(HudManager __instance)
|
||||
{
|
||||
if (Main.GM.Value)
|
||||
{
|
||||
__instance.Chat.gameObject.SetActive(true);
|
||||
__instance.MapButton.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+127
-60
@@ -172,82 +172,149 @@ namespace AmongUsRevamped
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/3X3CODE/MainMenuEnhanced/blob/main/MainMenuEnhanced/VisualPatch.cs
|
||||
[HarmonyPatch(typeof(MainMenuManager), nameof(MainMenuManager.Start))]
|
||||
public static class MainMenuManagerStartPatch
|
||||
{
|
||||
public static void Postfix(MainMenuManager __instance)
|
||||
// https://github.com/3X3CODE/MainMenuEnhanced/blob/main/MainMenuEnhanced/VisualPatch.cs
|
||||
[HarmonyPatch(typeof(MainMenuManager), nameof(MainMenuManager.Start))]
|
||||
public static class MainMenuManagerStartPatch
|
||||
{
|
||||
if (__instance == null) return;
|
||||
|
||||
var bg = GameObject.Find("BackgroundTexture");
|
||||
if (bg != null)
|
||||
private static PassiveButton template;
|
||||
private static PassiveButton discordButton;
|
||||
private static PassiveButton gitHubButton;
|
||||
private static Transform buttonParent;
|
||||
public static void Postfix(MainMenuManager __instance)
|
||||
{
|
||||
bg.SetActive(false);
|
||||
}
|
||||
if (__instance == null) return;
|
||||
if (template == null) template = __instance.quitButton;
|
||||
if (template == null) return;
|
||||
|
||||
var leftPanel = GameObject.Find("LeftPanel");
|
||||
if (leftPanel != null)
|
||||
{
|
||||
leftPanel.gameObject.GetComponent<SpriteRenderer>().enabled = false;
|
||||
}
|
||||
|
||||
var div = GameObject.Find("MainUI/AspectScaler/LeftPanel/Main Buttons/Divider");
|
||||
if (div != null)
|
||||
{
|
||||
div.SetActive(false);
|
||||
}
|
||||
|
||||
|
||||
Transform tintTrans = __instance.transform.Find("MainUI/Tint");
|
||||
var tint = tintTrans.gameObject;
|
||||
if (tint != null)
|
||||
{
|
||||
tint.SetActive(false);
|
||||
}
|
||||
|
||||
DisableObject("WindowShine");
|
||||
DisableComponent("RightPanel");
|
||||
DisableComponent("MaskedBlackScreen");
|
||||
|
||||
Transform playTransform = __instance.transform.Find("MainUI/AspectScaler/LeftPanel/Main Buttons/PlayButton/FontPlacer/Text_TMP");
|
||||
if (playTransform != null)
|
||||
{
|
||||
var playbutton = playTransform.gameObject;
|
||||
if (playbutton != null)
|
||||
if (buttonParent == null) buttonParent = template.transform.parent;
|
||||
if (discordButton == null)
|
||||
{
|
||||
if (playbutton.TryGetComponent<TextTranslatorTMP>(out var tmp))
|
||||
discordButton = CreateButton(
|
||||
__instance,
|
||||
"DiscordButton",
|
||||
new(2.1f, 4.05f, 1f),
|
||||
new(88, 101, 242, byte.MaxValue),
|
||||
new(148, 161, byte.MaxValue, byte.MaxValue),
|
||||
() => Application.OpenURL("https://discord.gg/83Zhzhyhya"),
|
||||
"Discord");
|
||||
}
|
||||
|
||||
if (gitHubButton == null)
|
||||
{
|
||||
gitHubButton = CreateButton(
|
||||
__instance,
|
||||
"GitHubButton",
|
||||
new(3.8f, 4.05f, 1f),
|
||||
new(153, 153, 153, byte.MaxValue),
|
||||
new(209, 209, 209, byte.MaxValue),
|
||||
() => Application.OpenURL("https://github.com/ApeMV/AmongUsRevamped"),
|
||||
"GitHub");
|
||||
}
|
||||
|
||||
var bg = GameObject.Find("BackgroundTexture");
|
||||
if (bg != null)
|
||||
{
|
||||
bg.SetActive(false);
|
||||
}
|
||||
|
||||
var leftPanel = GameObject.Find("LeftPanel");
|
||||
if (leftPanel != null)
|
||||
{
|
||||
leftPanel.gameObject.GetComponent<SpriteRenderer>().enabled = false;
|
||||
}
|
||||
|
||||
var div = GameObject.Find("MainUI/AspectScaler/LeftPanel/Main Buttons/Divider");
|
||||
if (div != null)
|
||||
{
|
||||
div.SetActive(false);
|
||||
}
|
||||
|
||||
|
||||
Transform tintTrans = __instance.transform.Find("MainUI/Tint");
|
||||
var tint = tintTrans.gameObject;
|
||||
if (tint != null)
|
||||
{
|
||||
tint.SetActive(false);
|
||||
}
|
||||
|
||||
DisableObject("WindowShine");
|
||||
DisableComponent("RightPanel");
|
||||
DisableComponent("MaskedBlackScreen");
|
||||
|
||||
Transform playTransform = __instance.transform.Find("MainUI/AspectScaler/LeftPanel/Main Buttons/PlayButton/FontPlacer/Text_TMP");
|
||||
if (playTransform != null)
|
||||
{
|
||||
var playbutton = playTransform.gameObject;
|
||||
if (playbutton != null)
|
||||
{
|
||||
tmp.enabled = false;
|
||||
}
|
||||
if (playbutton.TryGetComponent<TextMeshPro>(out var text))
|
||||
{
|
||||
text.text = "Start";
|
||||
if (playbutton.TryGetComponent<TextTranslatorTMP>(out var tmp))
|
||||
{
|
||||
tmp.enabled = false;
|
||||
}
|
||||
if (playbutton.TryGetComponent<TextMeshPro>(out var text))
|
||||
{
|
||||
text.text = "Start";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void DisableObject(string name)
|
||||
{
|
||||
var obj = GameObject.Find(name);
|
||||
if (obj != null)
|
||||
static void DisableObject(string name)
|
||||
{
|
||||
obj.SetActive(false);
|
||||
var obj = GameObject.Find(name);
|
||||
if (obj != null)
|
||||
{
|
||||
obj.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
static void DisableComponent(string name)
|
||||
{
|
||||
var obj = GameObject.Find(name);
|
||||
if (obj != null)
|
||||
{
|
||||
if (obj.TryGetComponent<SpriteRenderer>(out var renderer))
|
||||
{
|
||||
renderer.enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void DisableComponent(string name)
|
||||
private static PassiveButton CreateButton(MainMenuManager menu, string name, Vector3 localPosition, Color32 normalColor, Color32 hoverColor, Action action, string label)
|
||||
{
|
||||
var obj = GameObject.Find(name);
|
||||
if (obj != null)
|
||||
var parent = menu.transform.Find("MainUI/AspectScaler/LeftPanel/Main Buttons");
|
||||
if (parent == null) return null;
|
||||
|
||||
var button = Object.Instantiate(menu.quitButton, parent);
|
||||
button.name = name;
|
||||
|
||||
button.transform.localPosition = localPosition;
|
||||
button.transform.localScale = new Vector3(0.8f, 1f, 1f);
|
||||
|
||||
var aspect = button.GetComponent<AspectPosition>();
|
||||
if (aspect != null)
|
||||
{
|
||||
if (obj.TryGetComponent<SpriteRenderer>(out var renderer))
|
||||
{
|
||||
renderer.enabled = false;
|
||||
}
|
||||
aspect.enabled = false;
|
||||
}
|
||||
|
||||
button.OnClick = new();
|
||||
button.OnClick.AddListener(action);
|
||||
|
||||
var buttonText = button.transform.Find("FontPlacer/Text_TMP").GetComponent<TMP_Text>();
|
||||
Utils.DestroyTranslator(buttonText);
|
||||
buttonText.text = label;
|
||||
buttonText.fontSize = buttonText.fontSizeMax = buttonText.fontSizeMin = 3.5f;
|
||||
buttonText.enableWordWrapping = false;
|
||||
buttonText.horizontalAlignment = HorizontalAlignmentOptions.Center;
|
||||
|
||||
var normalSprite = button.inactiveSprites.GetComponent<SpriteRenderer>();
|
||||
var hoverSprite = button.activeSprites.GetComponent<SpriteRenderer>();
|
||||
normalSprite.color = normalColor;
|
||||
hoverSprite.color = hoverColor;
|
||||
|
||||
button.gameObject.SetActive(true);
|
||||
return button;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
[HarmonyPatch(typeof(DeconSystem), nameof(DeconSystem.UpdateSystem))]
|
||||
public static class DeconSystemUpdateSystemPatch
|
||||
{
|
||||
public static void Prefix(DeconSystem __instance)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if (Options.ChangeDecontaminationTime.GetBool())
|
||||
{
|
||||
__instance.DoorOpenTime = Main.CurrentMap switch
|
||||
{
|
||||
MapNames.MiraHQ => Options.DecontaminationDoorOpenTimeOnMiraHQ.GetFloat(),
|
||||
MapNames.Polus => Options.DecontaminationDoorOpenTimeOnPolus.GetFloat(),
|
||||
_ => 3f
|
||||
};
|
||||
|
||||
__instance.DeconTime = Main.CurrentMap switch
|
||||
{
|
||||
MapNames.MiraHQ => Options.DecontaminationTimeOnMiraHQ.GetFloat(),
|
||||
MapNames.Polus => Options.DecontaminationTimeOnPolus.GetFloat(),
|
||||
_ => 3f
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
__instance.DoorOpenTime = 3f;
|
||||
__instance.DeconTime = 3f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,198 @@
|
||||
using System;
|
||||
using Hazel;
|
||||
using Il2CppInterop.Runtime.InteropTypes.Arrays;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
// https://github.com/ykundesu/SuperNewRoles/blob/master/SuperNewRoles/Mode/SuperHostRoles/BlockTool.cs
|
||||
internal static class DisableDevice
|
||||
{
|
||||
public static readonly List<byte> DesyncComms = [];
|
||||
private static int frame;
|
||||
|
||||
public static readonly Dictionary<string, Vector2> DevicePos = new()
|
||||
{
|
||||
["SkeldAdmin"] = new(3.48f, -8.62f),
|
||||
["SkeldCamera"] = new(-13.06f, -2.45f),
|
||||
["MiraHQAdmin"] = new(21.02f, 19.09f),
|
||||
["MiraHQDoorLog"] = new(16.22f, 5.82f),
|
||||
["PolusLeftAdmin"] = new(22.80f, -21.52f),
|
||||
["PolusRightAdmin"] = new(24.66f, -21.52f),
|
||||
["PolusCamera"] = new(2.96f, -12.74f),
|
||||
["PolusVital"] = new(26.70f, -15.94f),
|
||||
["DleksAdmin"] = new(-3.48f, -8.62f),
|
||||
["DleksCamera"] = new(13.06f, -2.45f),
|
||||
["AirshipCockpitAdmin"] = new(-22.32f, 0.91f),
|
||||
["AirshipRecordsAdmin"] = new(19.89f, 12.60f),
|
||||
["AirshipCamera"] = new(8.10f, -9.63f),
|
||||
["AirshipVital"] = new(25.24f, -7.94f),
|
||||
["FungleCamera"] = new(6.20f, 0.10f),
|
||||
["FungleVital"] = new(-2.50f, -9.80f),
|
||||
["SubmergedVital"] = new(5f, 32.54f),
|
||||
["SubmergedLeftAdmin"] = new(-9.45f, 10.16f),
|
||||
["SubmergedRightAdmin"] = new(-7.07f, 10.16f),
|
||||
["SubmergedCamera"] = new(-3.41f, -34.56f)
|
||||
};
|
||||
|
||||
public static bool DoDisable => Options.DisableDevices.GetBool();
|
||||
|
||||
public static float UsableDistance => Main.CurrentMap switch
|
||||
{
|
||||
MapNames.Skeld => 1.5f,
|
||||
MapNames.MiraHQ => 2.2f,
|
||||
MapNames.Polus => 1.4f,
|
||||
MapNames.Dleks => 1.5f,
|
||||
MapNames.Airship => 1.6f,
|
||||
MapNames.Fungle => 1.7f,
|
||||
_ => 2f
|
||||
};
|
||||
|
||||
public static void FixedUpdate()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !Utils.GamePastRoleSelection) return;
|
||||
frame = frame == 5 ? 0 : ++frame;
|
||||
if (frame != 0) return;
|
||||
|
||||
if (!DoDisable) return;
|
||||
|
||||
foreach (PlayerControl pc in Main.AllPlayerControls)
|
||||
{
|
||||
if (pc.Data.IsDead || Main.GM.Value && pc == PlayerControl.LocalPlayer) return;
|
||||
|
||||
try
|
||||
{
|
||||
var doComms = false;
|
||||
Vector2 PlayerPos = pc.GetTruePosition();
|
||||
|
||||
if (!Utils.IsActive(SystemTypes.Comms))
|
||||
{
|
||||
switch (Main.NormalOptions.MapId)
|
||||
{
|
||||
case 0:
|
||||
if (Options.DisableSkeldAdmin.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["SkeldAdmin"]) <= UsableDistance;
|
||||
if (Options.DisableSkeldCamera.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["SkeldCamera"]) <= UsableDistance;
|
||||
break;
|
||||
case 1:
|
||||
if (Options.DisableMiraHQAdmin.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["MiraHQAdmin"]) <= UsableDistance;
|
||||
if (Options.DisableMiraHQDoorLog.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["MiraHQDoorLog"]) <= UsableDistance;
|
||||
break;
|
||||
case 2:
|
||||
if (Options.DisablePolusAdmin.GetBool())
|
||||
{
|
||||
doComms |= Vector2.Distance(PlayerPos, DevicePos["PolusLeftAdmin"]) <= UsableDistance;
|
||||
doComms |= Vector2.Distance(PlayerPos, DevicePos["PolusRightAdmin"]) <= UsableDistance;
|
||||
}
|
||||
|
||||
if (Options.DisablePolusCamera.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["PolusCamera"]) <= UsableDistance;
|
||||
if (Options.DisablePolusVital.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["PolusVital"]) <= UsableDistance;
|
||||
break;
|
||||
case 3:
|
||||
if (Options.DisableSkeldAdmin.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["DleksAdmin"]) <= UsableDistance;
|
||||
if (Options.DisableSkeldCamera.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["DleksCamera"]) <= UsableDistance;
|
||||
break;
|
||||
case 4:
|
||||
if (Options.DisableAirshipCockpitAdmin.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["AirshipCockpitAdmin"]) <= UsableDistance;
|
||||
if (Options.DisableAirshipRecordsAdmin.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["AirshipRecordsAdmin"]) <= UsableDistance;
|
||||
if (Options.DisableAirshipCamera.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["AirshipCamera"]) <= UsableDistance;
|
||||
if (Options.DisableAirshipVital.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["AirshipVital"]) <= UsableDistance;
|
||||
break;
|
||||
case 5:
|
||||
if (Options.DisableFungleCamera.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["FungleCamera"]) <= UsableDistance;
|
||||
if (Options.DisableFungleVital.GetBool()) doComms |= Vector2.Distance(PlayerPos, DevicePos["FungleVital"]) <= UsableDistance;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (doComms && !pc.inVent)
|
||||
{
|
||||
if (!DesyncComms.Contains(pc.PlayerId))
|
||||
{
|
||||
DesyncComms.Add(pc.PlayerId);
|
||||
SendDesyncRepair(pc, SystemTypes.Comms, 128);
|
||||
}
|
||||
}
|
||||
else if (!doComms && DesyncComms.Contains(pc.PlayerId))
|
||||
{
|
||||
DesyncComms.Remove(pc.PlayerId);
|
||||
SendDesyncRepair(pc, SystemTypes.Comms, 16);
|
||||
|
||||
if (Main.NormalOptions.MapId is 1 or 5) SendDesyncRepair(pc, SystemTypes.Comms, 17);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) { Logger.Exception(ex, "DisableDevice"); }
|
||||
}
|
||||
}
|
||||
public static void SendDesyncRepair(PlayerControl target, SystemTypes systemType, byte amount)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
if (target == null || target.Data == null || target.Data.ClientId == AmongUsClient.Instance.HostId) return;
|
||||
|
||||
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(
|
||||
ShipStatus.Instance.NetId,
|
||||
(byte)RpcCalls.UpdateSystem,
|
||||
SendOption.Reliable,
|
||||
target.Data.ClientId
|
||||
);
|
||||
|
||||
writer.Write((byte)systemType);
|
||||
writer.WritePacked(target.NetId);
|
||||
writer.Write(amount);
|
||||
|
||||
AmongUsClient.Instance.FinishRpcImmediately(writer);
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(ShipStatus), nameof(ShipStatus.Start))]
|
||||
public class RemoveDisableDevicesPatch
|
||||
{
|
||||
public static void Postfix()
|
||||
{
|
||||
if (!Options.DisableDevices.GetBool()) return;
|
||||
|
||||
UpdateDisableDevices();
|
||||
}
|
||||
|
||||
public static void UpdateDisableDevices()
|
||||
{
|
||||
PlayerControl player = PlayerControl.LocalPlayer;
|
||||
|
||||
Il2CppArrayBase<MapConsole> admins = Object.FindObjectsOfType<MapConsole>(true);
|
||||
Il2CppArrayBase<SystemConsole> consoles = Object.FindObjectsOfType<SystemConsole>(true);
|
||||
if (admins == null || consoles == null) return;
|
||||
|
||||
switch (Main.NormalOptions.MapId)
|
||||
{
|
||||
case 3:
|
||||
case 0:
|
||||
if (Options.DisableSkeldAdmin.GetBool()) admins[0].gameObject.GetComponent<CircleCollider2D>().enabled = false;
|
||||
if (Options.DisableSkeldCamera.GetBool()) consoles.DoIf(x => x.name == "SurvConsole", x => x.gameObject.GetComponent<PolygonCollider2D>().enabled = false);
|
||||
break;
|
||||
case 1:
|
||||
if (Options.DisableMiraHQAdmin.GetBool()) admins[0].gameObject.GetComponent<CircleCollider2D>().enabled = false;
|
||||
if (Options.DisableMiraHQDoorLog.GetBool()) consoles.DoIf(x => x.name == "SurvLogConsole", x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
|
||||
break;
|
||||
case 2:
|
||||
if (Options.DisablePolusAdmin.GetBool()) admins.Do(x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
if (Options.DisablePolusCamera.GetBool()) consoles.DoIf(x => x.name == "Surv_Panel", x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
if (Options.DisablePolusVital.GetBool()) consoles.DoIf(x => x.name == "panel_vitals", x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
break;
|
||||
case 4:
|
||||
admins.Do(x =>
|
||||
{
|
||||
if ((Options.DisableAirshipCockpitAdmin.GetBool() && x.name == "panel_cockpit_map") ||
|
||||
(Options.DisableAirshipRecordsAdmin.GetBool() && x.name == "records_admin_map"))
|
||||
x.gameObject.GetComponent<BoxCollider2D>().enabled = false;
|
||||
});
|
||||
|
||||
if (Options.DisableAirshipCamera.GetBool()) consoles.DoIf(x => x.name == "task_cams", x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
if (Options.DisableAirshipVital.GetBool()) consoles.DoIf(x => x.name == "panel_vitals", x => x.gameObject.GetComponent<CircleCollider2D>().enabled = false);
|
||||
break;
|
||||
case 5:
|
||||
if (Options.DisableFungleCamera.GetBool()) consoles.DoIf(x => x.name == "BinocularsSecurityConsole", x => x.gameObject.GetComponent<PolygonCollider2D>().enabled = false);
|
||||
if (Options.DisableFungleVital.GetBool()) consoles.DoIf(x => x.name == "VitalsConsole", x => x.gameObject.GetComponent<BoxCollider2D>().enabled = false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ public class DiscordRPC
|
||||
|
||||
activity.Assets = new ActivityAssets
|
||||
{
|
||||
LargeImage = "https://i.imgur.com/cxqgNyW.png"
|
||||
LargeImage = "https://i.imgur.com/ZnC1toT.png"
|
||||
};
|
||||
|
||||
try
|
||||
|
||||
@@ -29,7 +29,7 @@ class NormalGameEndChecker
|
||||
public static bool Prefix()
|
||||
{
|
||||
|
||||
if (Options.NoGameEnd.GetBool() || Options.Gamemode.GetValue() == 3) return false;
|
||||
if (Options.NoGameEnd.GetBool() || Options.Gamemode.GetValue() == 3 || Utils.HandlingGameEnd) return false;
|
||||
|
||||
var allPlayers = PlayerControl.AllPlayerControls.ToArray();
|
||||
|
||||
|
||||
@@ -7,8 +7,6 @@ using System.Collections.Generic;
|
||||
using Il2CppSystem.Collections.Generic;
|
||||
#endif
|
||||
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
// https://github.com/Yumenopai/TownOfHost_Y/blob/main/Patches/GameOptionsPatch.cs
|
||||
namespace AmongUsRevamped
|
||||
{
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
// https://github.com/Yumenopai/TownOfHost_Y/blob/main/Patches/GameSettingMenuPatch.cs
|
||||
namespace AmongUsRevamped
|
||||
|
||||
+33
-3
@@ -1,4 +1,5 @@
|
||||
using Hazel;
|
||||
using AmongUs.GameOptions;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
@@ -21,10 +22,25 @@ internal static class CoShowIntroPatch
|
||||
|
||||
CustomRoleManagement.SendRoleMessages(new Dictionary<string, string>
|
||||
{
|
||||
{ "Jester", $"{String.Jester}"},
|
||||
{ "Mayor", $"{String.Mayor}"}
|
||||
{ "Jester", Translator.Get("JesterPriv")},
|
||||
{ "Mayor", Translator.Get("MayorPriv")}
|
||||
});
|
||||
|
||||
if (Main.GM.Value)
|
||||
{
|
||||
PlayerControl.LocalPlayer.RpcSetRole(AmongUs.GameOptions.RoleTypes.CrewmateGhost, false);
|
||||
PlayerControl.LocalPlayer.myTasks.Clear();
|
||||
}
|
||||
|
||||
if (Options.DisableAnnoyingMeetingCalls.GetBool())
|
||||
{
|
||||
Utils.CanCallMeetings = false;
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
Utils.CanCallMeetings = true;
|
||||
}, 33f, "MeetingEnabled");
|
||||
}
|
||||
|
||||
if (!Utils.isHideNSeek) return;
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
@@ -35,4 +51,18 @@ internal static class CoShowIntroPatch
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(IntroCutscene), nameof(IntroCutscene.BeginCrewmate))]
|
||||
class BeginCrewmatePatch
|
||||
{
|
||||
public static void Postfix(IntroCutscene __instance)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if (Main.GM.Value)
|
||||
{
|
||||
__instance.TeamTitle.text = "Game Master";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,6 @@ using System;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
// https://github.com/Rabek009/MoreGamemodes/blob/master/Patches/LobbyViewSettingsPatch.cs
|
||||
namespace AmongUsRevamped
|
||||
{
|
||||
|
||||
@@ -9,15 +9,27 @@ public static class NumberOption_Increase
|
||||
{
|
||||
public static bool Prefix(NumberOption __instance)
|
||||
{
|
||||
#if ANDROID
|
||||
float increment = __instance.Increment;
|
||||
#else
|
||||
float increment = Hotkeys.IncrementMultiplier * __instance.Increment;
|
||||
#endif
|
||||
|
||||
if (Utils.isHideNSeek || Utils.IsLobby && !Utils.isHideNSeek && __instance.Title != StringNames.GameNumImpostors && __instance.Title != StringNames.GamePlayerSpeed)
|
||||
{
|
||||
|
||||
if (__instance.Value + increment > __instance.ValidRange.max)
|
||||
if (__instance.Value <= __instance.ValidRange.min)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (__instance.Value + increment > __instance.ValidRange.max)
|
||||
{
|
||||
__instance.Value = __instance.ValidRange.max;
|
||||
__instance.UpdateValue();
|
||||
__instance.OnValueChanged.Invoke(__instance);
|
||||
return false;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
__instance.Value += increment;
|
||||
@@ -35,14 +47,27 @@ public static class NumberOption_Decrease
|
||||
{
|
||||
public static bool Prefix(NumberOption __instance)
|
||||
{
|
||||
#if ANDROID
|
||||
float increment = __instance.Increment;
|
||||
#else
|
||||
float increment = Hotkeys.IncrementMultiplier * __instance.Increment;
|
||||
#endif
|
||||
|
||||
if (Utils.isHideNSeek || Utils.IsLobby && !Utils.isHideNSeek && __instance.Title != StringNames.GameNumImpostors && __instance.Title != StringNames.GamePlayerSpeed)
|
||||
{
|
||||
if (__instance.Value - increment < __instance.ValidRange.min)
|
||||
if (__instance.Value >= __instance.ValidRange.max)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (__instance.Value - increment < __instance.ValidRange.min)
|
||||
{
|
||||
__instance.Value = __instance.ValidRange.min;
|
||||
__instance.UpdateValue();
|
||||
__instance.OnValueChanged.Invoke(__instance);
|
||||
return false;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
__instance.Value -= increment;
|
||||
@@ -71,17 +96,24 @@ public static class NumberOption_Initialize
|
||||
{
|
||||
case StringNames.GameVotingTime:
|
||||
case StringNames.GameDiscussTime:
|
||||
case StringNames.EscapeTime:
|
||||
case StringNames.FinalEscapeTime:
|
||||
__instance.Increment = 5f;
|
||||
break;
|
||||
|
||||
case StringNames.GameKillCooldown:
|
||||
__instance.Increment = 0.5f;
|
||||
break;
|
||||
|
||||
case StringNames.GamePlayerSpeed:
|
||||
case StringNames.SeekerFinalSpeed:
|
||||
case StringNames.GameCrewLight:
|
||||
case StringNames.GameImpostorLight:
|
||||
case StringNames.CrewmateFlashlightSize:
|
||||
case StringNames.ImpostorFlashlightSize:
|
||||
__instance.Increment = 0.05f;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
__instance.Increment = 1f;
|
||||
break;
|
||||
|
||||
@@ -16,20 +16,6 @@ internal class CoStartGamePatch
|
||||
NormalGameEndChecker.imps.Clear();
|
||||
NormalGameEndChecker.LastWinReason = "";
|
||||
|
||||
if (Main.GM.Value)
|
||||
{
|
||||
if (Options.Gamemode.GetValue() == 3)
|
||||
{
|
||||
PlayerControl.LocalPlayer.CoSetRole(AmongUs.GameOptions.RoleTypes.CrewmateGhost, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerControl.LocalPlayer.RpcSetRole(AmongUs.GameOptions.RoleTypes.CrewmateGhost, false);
|
||||
}
|
||||
|
||||
PlayerControl.LocalPlayer.myTasks.Clear();
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
|
||||
{
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
|
||||
@@ -12,7 +12,16 @@ class ReportDeadBodyPatch
|
||||
{
|
||||
public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] NetworkedPlayerInfo target)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || target == null || __instance == null) return true;
|
||||
if (!AmongUsClient.Instance.AmHost || __instance == null) return true;
|
||||
|
||||
if (Options.DisableAnnoyingMeetingCalls.GetBool() && !Utils.CanCallMeetings && target == null)
|
||||
{
|
||||
Logger.Info($" {__instance.Data.PlayerName} is calling a meeting too fast, attempt blocked", "ReportDeadBodyPatch");
|
||||
return false;
|
||||
}
|
||||
|
||||
// target == null means meeting
|
||||
if (target == null) return true;
|
||||
|
||||
if (Options.DisableReport.GetBool() || Options.Gamemode.GetValue() == 2 || Options.Gamemode.GetValue() == 3)
|
||||
{
|
||||
|
||||
@@ -9,8 +9,6 @@ public static class SabotageSystemTypeRepairDamagePatch
|
||||
{
|
||||
private static bool Prefix([HarmonyArgument(0)] PlayerControl player, [HarmonyArgument(1)] MessageReader msgReader)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
byte amount;
|
||||
{
|
||||
var newReader = MessageReader.Get(msgReader);
|
||||
@@ -18,12 +16,38 @@ public static class SabotageSystemTypeRepairDamagePatch
|
||||
newReader.Recycle();
|
||||
}
|
||||
var Sabo = (SystemTypes)amount;
|
||||
|
||||
Logger.Info($" {player.Data.PlayerName} is trying to sabotage: {Sabo}", "SabotageCheck");
|
||||
if (Options.DisableSabotage.GetBool() || Options.Gamemode.GetValue() == 2)
|
||||
|
||||
if (Options.Gamemode.GetValue() == 0 || Options.Gamemode.GetValue() == 1)
|
||||
{
|
||||
Logger.Info($" Sabotage {Sabo} by: {player.Data.PlayerName} was blocked", "SabotageCheck");
|
||||
return false;
|
||||
if (Sabo == SystemTypes.LifeSupp && Options.DisableOxygen.GetBool() ||
|
||||
Sabo == SystemTypes.Reactor && Options.DisableReactor.GetBool() ||
|
||||
Sabo == SystemTypes.Electrical && Options.DisableLights.GetBool() ||
|
||||
Sabo == SystemTypes.Comms && Options.DisableComms.GetBool() ||
|
||||
Sabo == SystemTypes.HeliSabotage && Options.DisableHeli.GetBool() ||
|
||||
Sabo == SystemTypes.MushroomMixupSabotage && Options.DisableMushroomMixup.GetBool() ||
|
||||
player.Data.IsDead && !Options.DeadImpostorsCanSabotage.GetBool())
|
||||
{
|
||||
Logger.Info($" Sabotage {Sabo} by: {player.Data.PlayerName} was blocked", "SabotageCheck");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 2)
|
||||
{
|
||||
if (Sabo == SystemTypes.LifeSupp && Options.SNSDisableOxygen.GetBool() ||
|
||||
Sabo == SystemTypes.Reactor && Options.SNSDisableReactor.GetBool() ||
|
||||
Sabo == SystemTypes.Electrical && Options.SNSDisableLights.GetBool() ||
|
||||
Sabo == SystemTypes.Comms && Options.SNSDisableComms.GetBool() ||
|
||||
Sabo == SystemTypes.HeliSabotage && Options.SNSDisableHeli.GetBool() ||
|
||||
Sabo == SystemTypes.MushroomMixupSabotage && Options.SNSDisableMushroomMixup.GetBool() ||
|
||||
player.Data.IsDead && !Options.DeadImpostorsCanSabotage.GetBool())
|
||||
{
|
||||
Logger.Info($" Sabotage {Sabo} by: {player.Data.PlayerName} was blocked", "SnSSabotageCheck");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
@@ -38,7 +62,7 @@ class ShipStatusCloseDoorsPatch
|
||||
|
||||
Logger.Info($" Trying to close the door in: {room}", "DoorCheck");
|
||||
|
||||
if (Options.DisableCloseDoor.GetBool() || Options.Gamemode.GetValue() == 2)
|
||||
if (Options.DisableCloseDoor.GetBool() && (Options.Gamemode.GetValue() == 0 || Options.Gamemode.GetValue() == 1) || Options.Gamemode.GetValue() == 2 && Options.SNSDisableCloseDoor.GetBool())
|
||||
{
|
||||
Logger.Info($" Door sabotage in: {room} was blocked", "DoorCheck");
|
||||
return false;
|
||||
@@ -60,6 +84,8 @@ public static class MessageReaderUpdateSystemPatch
|
||||
or SystemTypes.Decontamination3
|
||||
or SystemTypes.MedBay) return true;
|
||||
|
||||
if (player.Data.ClientId == AmongUsClient.Instance.HostId) return true;
|
||||
|
||||
var amount = MessageReader.Get(reader).ReadByte();
|
||||
if (EACR.RpcUpdateSystemCheck(player, systemType, amount))
|
||||
{
|
||||
|
||||
@@ -29,56 +29,64 @@
|
||||
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
|
||||
|
||||
|
||||
# 🎮 Features (v1.4.0):
|
||||
- <b>🔶 Client Side settings:</b>
|
||||
# 🎮 Features (v1.5.3):
|
||||
## <b>♠️ Client Side settings:</b>
|
||||
- Game Master
|
||||
- Unlock FPS
|
||||
- Show FPS
|
||||
- Dark Theme
|
||||
- Toggle Lobby Music
|
||||
- <b>🔷 Technical settings:</b>
|
||||
- Customizable strings
|
||||
## <b>⚙️ Technical settings:</b>
|
||||
- Kick/Ban players under a certain level
|
||||
- Kick/Ban invalid FriendCodes
|
||||
- Kick/Ban command using names
|
||||
- Ckick/Cban command using colors
|
||||
- Kick/Ban players who say "start" and conitions
|
||||
- DenyName system
|
||||
- Moderator system
|
||||
- Banlist system
|
||||
- Enable No Game End
|
||||
- Custom starting countdown
|
||||
- <b>🔶 Automation settings:</b>
|
||||
- Auto start game and conditions for it
|
||||
- Auto rejoin lobby
|
||||
- Auto send winner info
|
||||
- <b>🔷 Gameplay Settings:</b>
|
||||
- Disable critical sabotages
|
||||
## <b>♻️ Automation settings:</b>
|
||||
- Automatically start game and conditions for it
|
||||
- Automatically rejoin lobby
|
||||
- Automatically send winner info
|
||||
## <b>🔧 Gameplay Settings:</b>
|
||||
- Dead impostors can sabotage
|
||||
- Disable critical sabotages (invividual)
|
||||
- Disable door sabotages
|
||||
- Disable body reporting
|
||||
- Disable meeting calls first 30s
|
||||
- Disable body reports
|
||||
- Disable devices (per map, individual)
|
||||
- Override decontamination time (per map)
|
||||
- Enable/Disable any task
|
||||
- All players have same tasks
|
||||
- Hide and Seek: Custom Impostor count
|
||||
- <b>🔶 Custom Gamemodes:</b>
|
||||
## <b>🏆 Custom Gamemodes:</b>
|
||||
- 0 Kill Cooldown
|
||||
- Shift and Seek
|
||||
- Speedrun
|
||||
- <b>🔷 Other:</b>
|
||||
## <b>❓ Other Improvements:</b>
|
||||
- ehT dlekS map (reverse Skeld)
|
||||
- Ability to cancel starting countdown
|
||||
- Improved main menu
|
||||
- Faster startup time
|
||||
- Custom anticheat system
|
||||
- Zoom out in lobby or when dead
|
||||
- Unlimited default Option ranges
|
||||
- Near unlimited default Option ranges
|
||||
- More accurate Option incrementing
|
||||
- Logging for useful information
|
||||
|
||||
- <b>🎉 And this all without Modded Protocol!</b>
|
||||
- <b>🎉 And this all works in public lobbies!</b>
|
||||
|
||||
### Hotkeys
|
||||
| HotKey | Function | Usable Scene |
|
||||
| ------------------- | ------------------------------------------- | ---------------------------------- |
|
||||
| `Shift`+`L`+`Enter` | Force End Game | In Game |
|
||||
| `Shift`+`M`+`Enter` | Skip meeting or call meeting | In Game |
|
||||
| `C` | Cancel game start | In Countdown |
|
||||
| `Shift` | Start the game immediately | In Countdown |
|
||||
| `Shift`+`M`+`Enter` | Skip meeting when active | In Game |
|
||||
| `C` | Cancel game start | In Starting Countdown |
|
||||
| `Shift` | Start the game immediately | In Starting Countdown |
|
||||
| `Shift` | 5x Option increment | In Options Menu |
|
||||
| `Ctrl` | Noclip in lobby | In Lobby |
|
||||
| `Ctrl` | 10x Option increment | In Options Menu |
|
||||
|
||||
### Chat Commands
|
||||
| Command | Function |
|
||||
@@ -92,12 +100,16 @@
|
||||
| /cban <color> | Ban a player by color |
|
||||
| /ckick <color> | Kick a player by color |
|
||||
| /dump | Copy your LogOutput file |
|
||||
| /color <color> | Set color |
|
||||
|
||||
| /endgame | Instantly end the game |
|
||||
| /endmeeting | Instantly end an ongoing meeting |
|
||||
| /aur | Sends AUR socials (GitHub, Discord) |
|
||||
| /color | Sets color. Can be used to bypass color limit |
|
||||
| /reload | Resets the *Language*.JSON file to default |
|
||||
|
||||
|
||||
**Credit to these mods and their developers for their code:**
|
||||
### :star: [AUnlocker](https://github.com/astra1dev/AUnlocker)
|
||||
> - NumberOptionsPatch
|
||||
> - Original NumberOptionsPatch
|
||||
### :star: [EHR (Formerly TOHE+)](https://github.com/Gurge44/EndlessHostRoles)
|
||||
> - Task Patching
|
||||
### :star: [TOH](https://github.com/tukasa0001/TownOfHost) :
|
||||
@@ -108,10 +120,10 @@
|
||||
### :star: [TOHY](https://github.com/Yumenopai/TownOfHost_Y) :
|
||||
> - Zoom
|
||||
### :star: [MoreGamemodes](https://github.com/Rabek009/MoreGamemodes)
|
||||
> - Chat Patches
|
||||
> - Some Chat Patches
|
||||
> - OptionItem System
|
||||
---
|
||||
This project is licensed under the GNU General Public License version 3.0. For more details, please refer to the [LICENSE](https://github.com/0xDrLime/TownofHost-Enhanced/blob/main/LICENSE) file.
|
||||
This project is licensed under the GNU General Public License version 3.0. For more details, please refer to the [LICENSE](https://github.com/apemv/AmongUsRevamped/blob/main/LICENSE) file.
|
||||
---
|
||||
|
||||
<b>This mod is not affiliated with Among Us or Innersloth LLC, and the content contained therein is not endorsed or otherwise sponsored by Innersloth LLC. Portions of the materials contained herein are property of Innersloth LLC. © Innersloth LLC.</b>
|
||||
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"LanguageID": "0",
|
||||
|
||||
"gamemode": "Gamemode",
|
||||
"tabGroupMain": "Moderation",
|
||||
"kickLowLevelPlayer": "Kick Players Under Level",
|
||||
"tempBanLowLevelPlayer": "Ban Instead Of Kick",
|
||||
"kickInvalidFriendCodes": "Kick Invalid FriendCodes",
|
||||
"tempBanInvalidFriendCodes": "Ban Instead Of Kick",
|
||||
"applyBanList": "Apply BanList",
|
||||
"applyDenyNameList": "Apply DenyName List",
|
||||
"applyModeratorList": "Apply Moderator List",
|
||||
"moderatorCanUseCommand": "Moderators can use commands",
|
||||
"autoKickStart": "Kick Players Who Say Start",
|
||||
"autoKickStartAsBan": "Ban Instead Of Kick",
|
||||
"autoKickStartTimes": "Start messages needed to kick",
|
||||
"autoKickStartStrength": "Strict detection mode",
|
||||
"tabGroupAutomation": "Automation",
|
||||
"autoSendGameInfo": "Automatically send winner info",
|
||||
"autoRejoinLobby": "Auto Rejoin Lobby",
|
||||
"autoStartTimer": "Countdown For Auto Start",
|
||||
"waitAutoStart": "Auto Start After",
|
||||
"playerAutoStart": "Players Needed To Auto Start",
|
||||
"tabGroupMisc": "Miscelleneous",
|
||||
"startCountdown": "Default Starting Countdown",
|
||||
"colorCommandLevel": "Who Can use Color Commands",
|
||||
"allowFortegreen": "Allow Fortegreen Color",
|
||||
"noGameEnd": "No Game End",
|
||||
|
||||
"tabGroupCrewmate": "Crewmate Roles",
|
||||
"mayorPerc": "PLACEHOLDER",
|
||||
"tabGroupNeutral": "Neutral Roles",
|
||||
"jesterPerc": "PLACEHOLDER",
|
||||
"tabGroupImpostor": "Impostor Roles",
|
||||
|
||||
"tabGroupHNS": "Hide and Seek",
|
||||
"numSeekers": "# Seekers",
|
||||
"tabGroup0Kcd": "0 Kill Cooldown",
|
||||
"noKcdSettingsOverride": "Auto Update Settings",
|
||||
"tabGroupSNS": "Shift and Seek",
|
||||
"snsSettingsOverride": "Auto Update Settings",
|
||||
"cantKillTime": "After Misfiring, Can't kill for",
|
||||
"misfiresToSuicide": "Suicide After Amount Of Misfires",
|
||||
"crewAutoWinsGameAfter": "Crewmates Automatically Win After",
|
||||
"snsDisableSabotage": "Disable SnS Critical Sabotages",
|
||||
"snsDisableReactor": "Disable Reactor Sabotage",
|
||||
"snsDisableOxygen": "Disable O2 Sabotage",
|
||||
"snsDisableLights": "Disable Lights Sabotage",
|
||||
"snsDisableComms": "Disable Communications Sabotage",
|
||||
"snsDisableHeli": "Disable Crash Course Sabotage",
|
||||
"snsDisableMushroomMixup": "Disable Mushroom Mixup Sabotage",
|
||||
"snsDisableCloseDoor": "Disable SnS Door Sabotages",
|
||||
"tabGroupSpeedrun": "Speedrun",
|
||||
"speedrunSettingsOverride": "Auto Update Settings",
|
||||
"gameAutoEndsAfter": "Game automatically ends after",
|
||||
|
||||
"tabGroupSabotages": "Sabotages",
|
||||
"deadImpostorsCanSabotage": "Dead Impostors Can Sabotage",
|
||||
"disableSabotage": "Disable Critical Sabotages",
|
||||
"disableReactor": "Disable Reactor Sabotage",
|
||||
"disableOxygen": "Disable O2 Sabotage",
|
||||
"disableLights": "Disable Lights Sabotage",
|
||||
"disableComms": "Disable Communications Sabotage",
|
||||
"disableHeli": "Disable Crash Course Sabotage",
|
||||
"disableMushroomMixup": "Disable Mushroom Mixup Sabotage",
|
||||
"disableCloseDoor": "Disable Door Sabotages",
|
||||
|
||||
"tabGroupGameplayGeneral": "General",
|
||||
"disableAnnoyingMeetingCalls": "Disable Meeting Calls First 30s",
|
||||
"disableReport": "Disable Body Reports",
|
||||
"changeDecontaminationTime": "Override Decontamination Time",
|
||||
"decontaminationTimeOnMiraHQ": "Mira HQ Decon Duration",
|
||||
"decontaminationDoorOpenTimeOnMiraHQ": "Mira HQ Door Open Duration",
|
||||
"decontaminationTimeOnPolus": "Polus Decon Duration",
|
||||
"decontaminationDoorOpenTimeOnPolus": "Polus Door Open Duration",
|
||||
|
||||
"disableDevices": "Disable Devices",
|
||||
"disableSkeldDevices": "Disable Skeld Devices",
|
||||
"disableSkeldAdmin": "Disable Skeld Admin",
|
||||
"disableSkeldCamera": "Disable Skeld Camera",
|
||||
"disableMiraHQDevices": "Disable Mira HQ Devices",
|
||||
"disableMiraHQAdmin": "Disable Mira HQ Admin",
|
||||
"disableMiraHQDoorLog": "Disable Mira HQ DoorLogs",
|
||||
"disablePolusDevices": "Disable Polus Devices",
|
||||
"disablePolusAdmin": "Disable Polus Admin",
|
||||
"disablePolusCamera": "Disable Polus Camera",
|
||||
"disablePolusVital": "Disable Polus Vitals",
|
||||
"disableAirshipDevices": "Disable Airship Devices",
|
||||
"disableAirshipCockpitAdmin": "Disable Airship Cockpit Admin",
|
||||
"disableAirshipRecordsAdmin": "Disable Airship Records Admin",
|
||||
"disableAirshipCamera": "Disable Airship Camera",
|
||||
"disableAirshipVital": "Disable Airship Vitals",
|
||||
"disableFungleDevices": "Disable Fungle Devices",
|
||||
"disableFungleCamera": "Disable Fungle Camera",
|
||||
"disableFungleVital": "Disable Fungle Vitals",
|
||||
|
||||
"tabGroupTasks": "Tasks",
|
||||
"allPlayersSameTasks": "Everyone has same tasks",
|
||||
"overrideTaskSettings": "<#ffd>Di<#ffb>sa<#ff9>bl<#ffb>e T<#ffd>as<#ffb>ks",
|
||||
|
||||
"disableMiraTasks": "Disable Mira HQ Tasks",
|
||||
"disableBuyBeverage": "Disable Buy Beverage",
|
||||
"disableMeasureWeather": "Disable Measure Weather",
|
||||
"disableProcessData": "Disable Process Data",
|
||||
"disableRunDiagnostics": "Disable Run Diagnostics",
|
||||
"disableSortSamples": "Disable Sort Samples",
|
||||
|
||||
"disablePolusTasks": "Disable Polus Tasks",
|
||||
"disableActivateWeatherNodes": "Disable Activate Weather Nodes",
|
||||
"disableAlignTelescope": "Disable Align Telescope",
|
||||
"disableFillCanisters": "Disable Fill Canisters",
|
||||
"disableInsertKeys": "Disable Insert Keys",
|
||||
"disableOpenWaterways": "Disable Open Waterways",
|
||||
"disableRebootWifi": "Disable Reboot Wifi",
|
||||
"disableRepairDrill": "Disable Repair Drill",
|
||||
"disableScanBoardingPass": "Disable Scan Boarding Pass",
|
||||
|
||||
"disableAirshipTasks": "Disable Airship Tasks",
|
||||
"disableCleanToilet": "Disable Clean Toilet",
|
||||
"disableDecontaminate": "Disable Decontaminate",
|
||||
"disableDevelopPhotos": "Disable Develop Photos",
|
||||
"disableDressMannequin": "Disable Dress Mannequin",
|
||||
"disableFixShower": "Disable Fix Shower",
|
||||
"disableMakeBurger": "Disable Make Burger",
|
||||
"disablePickUpTowels": "Disable Pick Up Towels",
|
||||
"disablePolishRuby": "Disable Polish Ruby",
|
||||
"disablePutAwayPistols": "Disable Put Away Pistols",
|
||||
"disablePutAwayRifles": "Disable Put Away Rifles",
|
||||
"disableRewindTapes": "Disable Rewind Tapes",
|
||||
"disableResetBreaker": "Disable Reset Breaker Task",
|
||||
"disableSortRecords": "Disable Sort Records",
|
||||
"disableStartFans": "Disable Start Fans",
|
||||
"disableUnlockSafe": "Disable Unlock Safe Task",
|
||||
|
||||
"disableFungleTasks": "Disable Fungle Tasks",
|
||||
"disableBuildSandcastle": "Disable Build Sandcastle",
|
||||
"disableCatchFish": "Disable Catch Fish",
|
||||
"disableCollectSamples": "Disable Collect Samples",
|
||||
"disableCollectShells": "Disable Collect Shells",
|
||||
"disableCollectVegetables": "Disable Collect Vegetables",
|
||||
"disableCrankGenerator": "Disable Crank Generator",
|
||||
"disableExtractFuel": "Disable Extract Fuel",
|
||||
"disableFixAntenna": "Disable Fix Antenna",
|
||||
"disableHelpCritter": "Disable Help Critter",
|
||||
"disableHoistSupplies": "Disable Hoist Supplies",
|
||||
"disableLiftWeights": "Disable Lift Weights",
|
||||
"disableMineOres": "Disable Mine Ores",
|
||||
"disablePlayVideoGame": "Disable Play Video Game",
|
||||
"disablePolishGem": "Disable Polish Gem",
|
||||
"disableReplaceParts": "Disable Replace Parts",
|
||||
"disableRoastMarshmallow": "Disable Roast Marshmallow",
|
||||
"disableThrowFisbee": "Disable Throw Fisbee",
|
||||
"disableFindSignal": "Disable Find Signal",
|
||||
|
||||
"disableMiscCommonTasks": "Disable Global Common Tasks",
|
||||
"disableEnterIdCode": "Disable Enter Id Code",
|
||||
"disableFixWiring": "Disable Fix Wiring",
|
||||
"disableSwipeCard": "Disable Swipe Card",
|
||||
|
||||
"disableMiscShortTasks": "Disable Global Short Tasks",
|
||||
"disableAssembleArtifact": "Disable Assemble Artifact",
|
||||
"disableChartCourse": "Disable Chart Course",
|
||||
"disableCleanO2Filter": "Disable Clean O2 Filter",
|
||||
"disableCleanVent": "Disable Clean Vent",
|
||||
"disableMonitorMushroom": "Disable Monitor Mushroom",
|
||||
"disableMonitorTree": "Disable Monitor Tree",
|
||||
"disablePrimeShields": "Disable Prime Shields",
|
||||
"disableRecordTemperature": "Disable Record Temperature",
|
||||
"disableStabilizeSteering": "Disable Stabilize Steering",
|
||||
"disableStoreArtifacts": "Disable Store Artifacts",
|
||||
"disableUnlockManifolds": "Disable Unlock Manifolds",
|
||||
|
||||
"disableMiscLongTasks": "Disable Global Long Tasks",
|
||||
"disableAlignEngineOutput": "Disable Align Engine Output",
|
||||
"disableClearAsteroids": "Disable Clear Asteroids",
|
||||
"disableEmptyChute": "Disable Empty Chute",
|
||||
"disableInspectSample": "Disable Inspect Sample",
|
||||
"disableReplaceWaterJug": "Disable Replace Water Jug",
|
||||
"disableStartReactor": "Disable Start Reactor",
|
||||
"disableWaterPlants": "Disable Water Plants",
|
||||
|
||||
"disableMiscMixedTasks": "Disable Global Mixed Tasks",
|
||||
"disableCalibrateDistributor": "Disable Calibrate Distributor",
|
||||
"disableDivertPower": "Disable Divert Power",
|
||||
"disableEmptyGarbage": "Disable Empty Garbage",
|
||||
"disableFuelEngines": "Disable Fuel Engines",
|
||||
"disableSubmitScan": "Disable Submit Scan",
|
||||
"disableUploadData": "Disable Upload Data",
|
||||
|
||||
"noKcdMode": "0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!",
|
||||
"SnSModeOne": "Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nEmergency Meetings = Off",
|
||||
"SnSModeTwo": "Crew wins by tasks/surviving {0}s\nImp wins by killing\nOne wrong kill = Can't kill for {1}s\n{2} wrong kills = suicide",
|
||||
"speedrunMode": "Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {0}s",
|
||||
"allCommandsFull": "Commands:\n/r - Current mode description\n/0kc, /sns, /sp - Specific mode description\n/l - Shows last winner info\n/kick, /ban - Bans or kicks a player by name\n/ckick, /cban - Bans or kicks a player by color",
|
||||
"allCommandsOne": "Commands:\n/r - Current mode description\n/0kc, /sns, /sp - Specific mode description\n/l - Shows last winner info",
|
||||
"allCommandsTwo": "/kick, /ban - Bans or kicks a player by name\n/ckick, /cban - Bans or kicks a player by color",
|
||||
"SocialsAll": "AUR socials:\n\ng i t h u b . c o m /\nApeMV/AmongUsRevamped\n\nd i s c o r d . g g /\n83Zhzhyhya",
|
||||
|
||||
"Mayor": "Mayor",
|
||||
"MayorPriv": "PRIVATE:\n\nYour role is Mayor!\n\nYou are a crewmate with i total votes. Use your voting power to eject Impostors.",
|
||||
|
||||
"Jester": "Jester",
|
||||
"JesterPriv": "PRIVATE:\n\nYour role is Jester!\nYou are NOT a crewmate!\n\nYou win by getting voted. Act as suspicious as possible."
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
using System.Reflection;
|
||||
|
||||
namespace AmongUsRevamped;
|
||||
|
||||
// Used post-1.4.0 incase AUR ever gets translations. Not fully updated.
|
||||
|
||||
/* TEMPLATE
|
||||
|
||||
public static string x{get{
|
||||
return $"y";}}
|
||||
*/
|
||||
public static class String
|
||||
{
|
||||
public static string noKcdMode{get{
|
||||
return $"0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!";}}
|
||||
|
||||
public static string SnSModeOne{get{
|
||||
return $"Shift and Seek:\n\nImpostors can only kill someone while shapeshifted as them\nSabotages & Meetings = Off";}}
|
||||
|
||||
public static string SnSModeTwo{get{
|
||||
return $"Crew wins by tasks/surviving {Options.CrewAutoWinsGameAfter.GetInt()}s\n" + "Imp wins by killing\n" + (Options.MisfiresToSuicide.GetInt() == 1 ? "" : $"One wrong kill = Can't kill for {Options.CantKillTime.GetInt()}s\n") + $"{Utils.BasicIntToWord(Options.MisfiresToSuicide.GetInt())} wrong kill{(Options.MisfiresToSuicide.GetInt() == 1 ? "" : "s")} = suicide";}}
|
||||
|
||||
public static string speedrunMode{get{
|
||||
return $"Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {Options.GameAutoEndsAfter.GetInt()}s";}}
|
||||
|
||||
public static string allCommandsFull{get{
|
||||
return $"Commands:\n/r - Current mode description\n/0kc, /sns, /sp - Specific mode description\n/l - Shows last winner info\n/kick, /ban - Bans or kicks a player by name\n/ckick, /cban - Bans or kicks a player by color";}}
|
||||
|
||||
public static string allCommandsOne{get{
|
||||
return $"Commands:\n/r - Current mode description\n/0kc, /sns, /sp - Specific mode description\n/l - Shows last winner info";}}
|
||||
|
||||
public static string allCommandsTwo{get{
|
||||
return $"/kick, /ban - Bans or kicks a player by name\n/ckick, /cban - Bans or kicks a player by color";}}
|
||||
|
||||
public static string SocialsAll{get{
|
||||
return $"AUR socials:\n\ng i t h u b . c o m /\nApeMV/AmongUsRevamped\n\nd i s c o r d . g g /\n83Zhzhyhya";}}
|
||||
|
||||
public static string Mayor{get{
|
||||
return $"PRIVATE:\n\nYour role is Mayor!\n\nYou are a crewmate with i total votes. Use your voting power to eject Impostors.";}}
|
||||
|
||||
public static string Jester{get{
|
||||
return $"PRIVATE:\n\nYour role is Jester!\nYou are NOT a crewmate!\n\nYou win by getting voted. Act as suspicious as possible.";}}
|
||||
}
|
||||
Reference in new issue
Block a user