diff --git a/AmongUsRevamped.cs b/AmongUsRevamped.cs
index 0060401..32c0555 100644
--- a/AmongUsRevamped.cs
+++ b/AmongUsRevamped.cs
@@ -42,7 +42,7 @@ public partial class Main : BasePlugin
public static bool HasArgumentException;
public static string CredentialsText;
- public const string ModVersion = "v1.7.3";
+ public const string ModVersion = "v1.7.4";
public static float GameTimer;
@@ -95,6 +95,8 @@ public partial class Main : BasePlugin
BanManager.Init();
Harmony.PatchAll();
+
+ ConsoleManager.DetachConsole();
}
[HarmonyPatch(typeof(ModManager), nameof(ModManager.LateUpdate))]
diff --git a/Modules/BanManager.cs b/Modules/BanManager.cs
index b22e087..8a1da27 100644
--- a/Modules/BanManager.cs
+++ b/Modules/BanManager.cs
@@ -35,48 +35,13 @@ public static class BanManager
{
if (!Directory.Exists($"{DataPath}/AUR-DATA")) Directory.CreateDirectory($"{DataPath}/AUR-DATA");
- if (!File.Exists(DenyNameListPath))
- {
- Logger.Warn("Creating a new DenyNameList.txt file", "BanManager");
- File.Create(DenyNameListPath).Close();
- File.WriteAllText(DenyNameListPath, Translator.Get("bannameWelcome"));
- }
- if (!File.Exists(BanListPath))
- {
- Logger.Warn("Creating a new Banlist.txt file", "BanManager");
- File.Create(BanListPath).Close();
- File.WriteAllText(BanListPath, Translator.Get("banlistWelcome"));
- }
- if (!File.Exists(BanWordPath))
- {
- Logger.Warn("Creating a new Banlist.txt file", "BanManager");
- File.Create(BanWordPath).Close();
- File.WriteAllText(BanWordPath, Translator.Get("banwordWelcome"));
- }
- if (!File.Exists(VipListPath))
- {
- Logger.Warn("Creating a new VIP.txt file", "BanManager");
- File.Create(VipListPath).Close();
- File.WriteAllText(VipListPath, Translator.Get("vipWelcome"));
- }
- if (!File.Exists(ModeratorListPath))
- {
- Logger.Warn("Creating a new Moderator.txt file", "BanManager");
- File.Create(ModeratorListPath).Close();
- File.WriteAllText(ModeratorListPath, Translator.Get("moderatorWelcome"));
- }
- if (!File.Exists(AdminListPath))
- {
- Logger.Warn("Creating a new Admin.txt file", "BanManager");
- File.Create(AdminListPath).Close();
- File.WriteAllText(AdminListPath, Translator.Get("adminWelcome"));
- }
- if (!File.Exists(TemplatePath))
- {
- Logger.Warn("Creating a new Templates.txt file", "BanManager");
- File.Create(TemplatePath).Close();
- File.WriteAllText(TemplatePath, Translator.Get("templateWelcome"));
- }
+ CheckFile(DenyNameListPath, Translator.Get("bannameWelcome"), "DeniedNames.txt");
+ CheckFile(BanListPath, Translator.Get("banlistWelcome"), "Banlist.txt");
+ CheckFile(BanWordPath, Translator.Get("banwordWelcome"), "DeniedWords.txt");
+ CheckFile(VipListPath, Translator.Get("vipWelcome"), "VIP.txt");
+ CheckFile(ModeratorListPath, Translator.Get("moderatorWelcome"), "Moderator.txt");
+ CheckFile(AdminListPath, Translator.Get("adminWelcome"), "Admin.txt");
+ CheckFile(TemplatePath, Translator.Get("templateWelcome"), "Templates.txt");
LoadTemplates();
@@ -252,4 +217,20 @@ public static class BanManager
if (!Templates.ContainsKey(key)) Templates.Add(key, value);
}
}
+
+ private static void CheckFile(string path, string defaultContent, string name)
+ {
+ try
+ {
+ if (!File.Exists(path))
+ {
+ Logger.Warn($"Creating a new {name} file", "BanManager");
+ File.WriteAllText(path, defaultContent);
+ }
+ }
+ catch (Exception ex)
+ {
+ Logger.Exception(ex, "BanManager");
+ }
+ }
}
diff --git a/Modules/CustomOptionsHolder.cs b/Modules/CustomOptionsHolder.cs
index 93983d9..0824343 100644
--- a/Modules/CustomOptionsHolder.cs
+++ b/Modules/CustomOptionsHolder.cs
@@ -71,6 +71,7 @@ namespace AmongUsRevamped
public static OptionItem TabGroupMain;
public static OptionItem KickLowLevelPlayer;
+ public static OptionItem DontKickLevelOnes;
public static OptionItem TempBanLowLevelPlayer;
public static OptionItem KickInvalidFriendCodes;
@@ -356,6 +357,8 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Level);
TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.SystemSettings, false)
.SetParent(KickLowLevelPlayer);
+ DontKickLevelOnes = BooleanOptionItem.Create(60052, Translator.Get("dontKickLevelOnes"), false, TabGroup.SystemSettings, false)
+ .SetParent(KickLowLevelPlayer);
KickInvalidFriendCodes = BooleanOptionItem.Create(60080, Translator.Get("kickInvalidFriendCodes"), true, TabGroup.SystemSettings, false);
TempBanInvalidFriendCodes = BooleanOptionItem.Create(60081, Translator.Get("tempBanInvalidFriendCodes"), false, TabGroup.SystemSettings, false)
@@ -405,7 +408,7 @@ namespace AmongUsRevamped
TabGroupCrewmate = TextOptionItem.Create(100000, Translator.Get("tabGroupCrewmate"), TabGroup.AbilitySettings)
.SetColor(CL.Hex("#8cffff"));
- CrewmateAbility = StringOptionItem.Create(100002, Translator.Get("crewmateAbility"), crewmateAbilities, 4, TabGroup.AbilitySettings, false)
+ CrewmateAbility = StringOptionItem.Create(100001, Translator.Get("crewmateAbility"), crewmateAbilities, 4, TabGroup.AbilitySettings, false)
.SetColor(CL.Hex("#8cffff"));
ScientistAbility = StringOptionItem.Create(100101, Translator.Get("scientistAbility"), crewmateAbilities, 4, TabGroup.AbilitySettings, false)
@@ -429,9 +432,9 @@ namespace AmongUsRevamped
.SetValueFormat(OptionFormat.Level);
ExtraVotesPerTask = FloatOptionItem.Create(101002, Translator.Get("extraVotesPerTask"), new(0.25f, 3f, 0.25f), 0.5f, TabGroup.AbilitySettings, false)
.SetValueFormat(OptionFormat.Level);
- SpeedrunnerShortTasks = IntegerOptionItem.Create(101003, Translator.Get("speedrunnerShortTasks"), new(0, 15, 1), 1, TabGroup.AbilitySettings, false)
+ SpeedrunnerShortTasks = IntegerOptionItem.Create(101003, Translator.Get("speedrunnerShortTasks"), new(0, 15, 1), 4, TabGroup.AbilitySettings, false)
.SetValueFormat(OptionFormat.Level);
- SpeedrunnerLongTasks = IntegerOptionItem.Create(101004, Translator.Get("speedrunnerLongTasks"), new(0, 15, 1), 1, TabGroup.AbilitySettings, false)
+ SpeedrunnerLongTasks = IntegerOptionItem.Create(101004, Translator.Get("speedrunnerLongTasks"), new(0, 15, 1), 3, TabGroup.AbilitySettings, false)
.SetValueFormat(OptionFormat.Level);
TabGroupImpostor = TextOptionItem.Create(102000, Translator.Get("tabGroupImpostor"), TabGroup.AbilitySettings)
diff --git a/Modules/CustomRoleManagement.cs b/Modules/CustomRoleManagement.cs
index 00d61dd..6e1337b 100644
--- a/Modules/CustomRoleManagement.cs
+++ b/Modules/CustomRoleManagement.cs
@@ -128,6 +128,8 @@ public static class AbilityManagement
public static void SendRoleList(ChatController c, string text, bool moderator)
{
+ if (string.IsNullOrEmpty(AbilityManagement.RoleList())) return;
+
if (text.Length <= 120)
{
if (moderator) Utils.ModeratorChatCommand(text, "", false);
diff --git a/Modules/Utils.cs b/Modules/Utils.cs
index f20524d..a0aef15 100644
--- a/Modules/Utils.cs
+++ b/Modules/Utils.cs
@@ -569,4 +569,15 @@ public static class Utils
Logger.Info($"Found {methodName}.MoveNext", "GetStateMachineMoveNext");
return moveNext;
}
+
+ public static string GetRoleText(PlayerControl p)
+ {
+ if (p == null) return "";
+
+ if (p.Data.RoleType == RoleTypes.Impostor || p.Data.RoleType == RoleTypes.Shapeshifter || p.Data.RoleType == RoleTypes.Phantom || p.Data.RoleType == RoleTypes.Viper)
+ {
+ return $"{p.Data.RoleType}";
+ }
+ else return $"{p.Data.RoleType}";
+ }
}
\ No newline at end of file
diff --git a/Patches/ChatPatches.cs b/Patches/ChatPatches.cs
index 573fcd8..5bcaab0 100644
--- a/Patches/ChatPatches.cs
+++ b/Patches/ChatPatches.cs
@@ -236,7 +236,14 @@ internal static class SendChatPatch
if (BanManager.Templates.TryGetValue(templateName, out string templateMessage))
{
- Utils.ChatCommand(__instance, templateMessage, "", false);
+ if (templateMessage.Length < 121)
+ {
+ Utils.ChatCommand(__instance, templateMessage, "", false);
+ }
+ else
+ {
+ HudManager.Instance.Chat.AddChat(PlayerControl.LocalPlayer, Translator.Get("tooLongTemplate"));
+ }
}
else
{
@@ -560,7 +567,14 @@ public static class RPCHandlerPatch
if (BanManager.Templates.TryGetValue(templateName, out string templateMessage))
{
- Utils.ModeratorChatCommand(templateMessage, "", false);
+ if (templateMessage.Length < 121)
+ {
+ Utils.ModeratorChatCommand(templateMessage, "", false);
+ }
+ else
+ {
+ HudManager.Instance.Chat.AddChat(PlayerControl.LocalPlayer, Translator.Get("tooLongTemplate"));
+ }
}
}
diff --git a/Patches/IntroPatch.cs b/Patches/IntroPatch.cs
index 503bc53..49e4a44 100644
--- a/Patches/IntroPatch.cs
+++ b/Patches/IntroPatch.cs
@@ -15,7 +15,7 @@ internal static class CoShowIntroPatch
if (!AmongUsClient.Instance.AmHost) return;
- //Utils.ModeratorChatCommand(Translator.Get("abilitiesGenericOne", Options.CrewmateAbility.GetString(), Options.ScientistAbility.GetString(), Options.EngineerAbility.GetString(), Options.NoisemakerAbility.GetString(), Options.TrackerAbility.GetString()), Translator.Get("abilitiesGenericTwo", Options.DetectiveAbility.GetString(), Options.ImpostorAbility.GetString(), Options.ShapeshifterAbility.GetString(), Options.PhantomAbility.GetString(), Options.ViperAbility.GetString()), true);
+ AbilityManagement.SendRoleList(DestroyableSingleton.Instance.Chat, AbilityManagement.RoleList(), true);
foreach (var p in PlayerControl.AllPlayerControls)
{
diff --git a/Patches/JoinAndLeavePatches.cs b/Patches/JoinAndLeavePatches.cs
index 2e3ca67..0a7e341 100644
--- a/Patches/JoinAndLeavePatches.cs
+++ b/Patches/JoinAndLeavePatches.cs
@@ -121,6 +121,7 @@ public static class SetLevelPatch
{
if (AmongUsClient.Instance.AmHost && level < Options.KickLowLevelPlayer.GetInt() - 1 && __instance.Data.ClientId != AmongUsClient.Instance.HostId)
{
+ if (level == 0 && Options.DontKickLevelOnes.GetBool()) return;
if (HandledLevelKicks.Contains(__instance)) return;
if (!Options.TempBanLowLevelPlayer.GetBool())
diff --git a/Patches/MeetingPatches.cs b/Patches/MeetingPatches.cs
index 7d67926..98d3e85 100644
--- a/Patches/MeetingPatches.cs
+++ b/Patches/MeetingPatches.cs
@@ -107,11 +107,11 @@ class MeetingHudStartPatch
totalTasks++;
if (task.Complete) tasksCompleted++;
}
- return $"({tasksCompleted}/{totalTasks})";
+ return $"({tasksCompleted}/{totalTasks}) - {Utils.GetRoleText(player)}";
}
else
{
- return $"({MurderPlayerPatch.killCount[player.Data.PlayerId]}†)";
+ return $"({MurderPlayerPatch.killCount[player.Data.PlayerId]}†) - {Utils.GetRoleText(player)}";
}
}
}
\ No newline at end of file
diff --git a/Patches/PlayerControlPatches.cs b/Patches/PlayerControlPatches.cs
index b94df3e..c615608 100644
--- a/Patches/PlayerControlPatches.cs
+++ b/Patches/PlayerControlPatches.cs
@@ -63,11 +63,11 @@ internal static class MurderPlayerPatch
{
if (p.Data.Role.IsImpostor)
{
- p.cosmetics.nameText.text = $"{p.Data.PlayerName}({killCount[p.Data.PlayerId]}†)";
+ p.cosmetics.nameText.text = $"{p.Data.PlayerName}({killCount[p.Data.PlayerId]}†) - {Utils.GetRoleText(p)}";
}
else
{
- p.cosmetics.nameText.text = $"{p.Data.PlayerName}({PlayerControlCompleteTaskPatch.playerTasksCompleted[p]}/{PlayerControlCompleteTaskPatch.tasksPerPlayer[p]})";
+ p.cosmetics.nameText.text = $"{p.Data.PlayerName}({PlayerControlCompleteTaskPatch.playerTasksCompleted[p]}/{PlayerControlCompleteTaskPatch.tasksPerPlayer[p]}) - {Utils.GetRoleText(p)}";
}
}
}
@@ -206,7 +206,7 @@ class PlayerControlCompleteTaskPatch
if (PlayerControl.LocalPlayer.Data.IsDead && !Main.DisableInfoWhenDead.Value)
{
TMP_Text nameText = __instance.cosmetics.nameText;
- nameText.text = $"{__instance.Data.PlayerName}({playerTasksCompleted[__instance]}/{tasksPerPlayer[__instance]})";
+ nameText.text = $"{__instance.Data.PlayerName}({playerTasksCompleted[__instance]}/{tasksPerPlayer[__instance]}) - {Utils.GetRoleText(__instance)}";
}
}
diff --git a/README.md b/README.md
index 4b5789d..2d31f50 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
****
-# 🎮 Features (v1.7.3):
+# 🎮 Features (v1.7.4):
## 🌟 Custom Abilities:
- Mayor (Crewmate)
- The Mayor has a configurable amount of extra votes
diff --git a/Resources/Language/English.json b/Resources/Language/English.json
index 3bd4a97..d17f757 100644
--- a/Resources/Language/English.json
+++ b/Resources/Language/English.json
@@ -17,6 +17,7 @@
"tabGroupMain": "Moderation",
"kickLowLevelPlayer": "Kick Players Under Level",
"tempBanLowLevelPlayer": "Ban Instead Of Kick",
+ "dontKickLevelOnes": "Don't Kick Lv.1 Players For Glitched Lobbies",
"kickInvalidFriendCodes": "Kick Invalid FriendCodes",
"tempBanInvalidFriendCodes": "Ban Instead Of Kick",
"applyBanList": "Apply BanList",
@@ -270,5 +271,7 @@
"banwordWelcome": "# In this file you can set denied words, automatically kicking anyone in-game who sends words listed here.\n# Make sure to separate words by using new lines.",
"bannameWelcome": "# In this file you can set denied names, automatically kicking anyone in-game who uses names listed here.\n# Make sure to separate names by using new lines.",
- "noGameEndWarning": "WARNING: No Game End is enabled"
+ "noGameEndWarning": "WARNING: No Game End is enabled",
+
+ "tooLongTemplate": "Your Template is longer than 120 characters and would kick you upon sending. Please reduce the length."
}