mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-19 15:51:59 +00:00
Mostly bug fixes, some changes
This commit is contained in:
1 parent
3ead1b0a69
commit
0f2516fdf5
14 files changed
+168
-66
No files matched your search
@@ -48,6 +48,7 @@ public partial class Main : BasePlugin
|
||||
public static float GameTimer;
|
||||
|
||||
public static readonly Dictionary<int, int> SayStartTimes = [];
|
||||
public static readonly Dictionary<int, int> SayDeniedWordTimes = [];
|
||||
|
||||
public static PlayerControl[] AllPlayerControls
|
||||
{
|
||||
|
||||
+15
-4
@@ -170,17 +170,28 @@ public static class BanManager
|
||||
{
|
||||
if (input == "" || !AmongUsClient.Instance.AmHost || Utils.CheckAccessLevel(player.Data.FriendCode) > 0) return false;
|
||||
|
||||
int clientId = player.Data.ClientId;
|
||||
var bannedWords = File.ReadAllLines(BanWordPath).Where(x => !x.StartsWith("#"));
|
||||
|
||||
if (bannedWords.Where(code => !string.IsNullOrWhiteSpace(code)).Any(code => input.Contains(code, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
AmongUsClient.Instance.KickPlayer(player.Data.ClientId, false);
|
||||
Logger.Info($" {player.Data.PlayerName} was kicked because they sent a banned word", "Kick");
|
||||
Logger.SendInGame($"{player.Data.PlayerName} was kicked because they sent a banned word");
|
||||
|
||||
if (!Main.SayDeniedWordTimes.ContainsKey(clientId))
|
||||
{
|
||||
Main.SayDeniedWordTimes.Add(clientId, 0);
|
||||
}
|
||||
|
||||
Main.SayDeniedWordTimes[clientId]++;
|
||||
|
||||
if (Main.SayDeniedWordTimes[clientId] >= Options.DeniedWordsToKick.GetInt())
|
||||
{
|
||||
AmongUsClient.Instance.KickPlayer(clientId, false);
|
||||
Logger.Info(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()), "DeniedWordKick");
|
||||
Logger.SendInGame(Translator.Get("banWordKick", player.Data.PlayerName, Options.DeniedWordsToKick.GetInt()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(BanMenu), nameof(BanMenu.Select))]
|
||||
|
||||
@@ -80,7 +80,7 @@ internal static class CommandHelper
|
||||
{
|
||||
if (!HudManager.InstanceExists || HudManager.Instance.Chat == null || HudManager.Instance.Chat.freeChatField == null || __instance != HudManager.Instance.Chat.freeChatField.textArea) return;
|
||||
|
||||
if (Main.DisableCommandHelper.Value)
|
||||
if (Main.DisableCommandHelper.Value || !AmongUsClient.Instance.AmHost)
|
||||
{
|
||||
HelperText.enabled = false;
|
||||
return;
|
||||
|
||||
@@ -77,6 +77,8 @@ namespace AmongUsRevamped
|
||||
public static OptionItem KickInvalidFriendCodes;
|
||||
public static OptionItem TempBanInvalidFriendCodes;
|
||||
|
||||
public static OptionItem DeniedWordsToKick;
|
||||
|
||||
public static OptionItem AutoKickStart;
|
||||
public static OptionItem AutoKickStartAsBan;
|
||||
public static OptionItem AutoKickStartTimes;
|
||||
@@ -103,7 +105,6 @@ namespace AmongUsRevamped
|
||||
public static OptionItem SlashColorCmd;
|
||||
public static OptionItem SlashRolesAndGamemodeCmd;
|
||||
public static OptionItem SlashLastGameCmd;
|
||||
public static OptionItem SlashHelpAndAurCmd;
|
||||
public static OptionItem SlashKickCmd;
|
||||
public static OptionItem SlashBanCmd;
|
||||
public static OptionItem SlashEndMeetingCmd;
|
||||
@@ -350,6 +351,9 @@ namespace AmongUsRevamped
|
||||
TabGroupMain = TextOptionItem.Create(60000, Translator.Get("tabGroupMain"), TabGroup.SystemSettings)
|
||||
.SetColor(Color.blue);
|
||||
|
||||
DeniedWordsToKick = IntegerOptionItem.Create(60049, Translator.Get("deniedWordsToKick"), new(1, 5, 1), 1, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Level);
|
||||
|
||||
KickLowLevelPlayer = IntegerOptionItem.Create(60050, Translator.Get("kickLowLevelPlayer"), new(0, 100, 1), 0, TabGroup.SystemSettings, false)
|
||||
.SetValueFormat(OptionFormat.Level);
|
||||
TempBanLowLevelPlayer = BooleanOptionItem.Create(60051, Translator.Get("tempBanLowLevelPlayer"), false, TabGroup.SystemSettings, false)
|
||||
@@ -398,7 +402,6 @@ namespace AmongUsRevamped
|
||||
SlashColorCmd = StringOptionItem.Create(60401, Translator.Get("slashColorCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
|
||||
SlashRolesAndGamemodeCmd = StringOptionItem.Create(60402, Translator.Get("slashRolesAndGamemodeCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
|
||||
SlashLastGameCmd = StringOptionItem.Create(60403, Translator.Get("slashLastGameCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
|
||||
SlashHelpAndAurCmd = StringOptionItem.Create(60404, Translator.Get("slashHelpAndAurCmd"), accessLevels, 1, TabGroup.SystemSettings, false);
|
||||
SlashKickCmd = StringOptionItem.Create(60405, Translator.Get("slashKickCmd"), accessLevels, 2, TabGroup.SystemSettings, false);
|
||||
SlashBanCmd = StringOptionItem.Create(60406, Translator.Get("slashBanCmd"), accessLevels, 2, TabGroup.SystemSettings, false);
|
||||
SlashEndMeetingCmd = StringOptionItem.Create(60407, Translator.Get("slashEndMeetingCmd"), accessLevels, 3, TabGroup.SystemSettings, false);
|
||||
|
||||
@@ -111,7 +111,7 @@ class FixedUpdateInGamePatch
|
||||
|
||||
Utils.ContinueEndGame((byte)GameOverReason.CrewmatesByVote);
|
||||
Logger.Info($" Crewmates won because the game took longer than {Options.CrewAutoWinsGameAfter.GetInt()}s", "SNSManager");
|
||||
NormalGameEndChecker.LastWinReason = $"Crewmates win! (Timer)\n\nImpostors:\n" + string.Join("\n", NormalGameEndChecker.imps.Select(p => p.Data.PlayerName));
|
||||
NormalGameEndChecker.CheckWinnerText("SnSTimer");
|
||||
}
|
||||
}
|
||||
// 3 = Speedrun
|
||||
@@ -123,7 +123,7 @@ class FixedUpdateInGamePatch
|
||||
|
||||
Utils.CustomWinnerEndGame(PlayerControl.LocalPlayer, 0);
|
||||
Logger.Info($" No one won because the game took longer than {Options.GameAutoEndsAfter.GetInt()}s", "SpeedrunManager");
|
||||
NormalGameEndChecker.LastWinReason = $"No one wins! (Timer)";
|
||||
NormalGameEndChecker.CheckWinnerText("NoOneWin");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,6 +228,12 @@ public static class Utils
|
||||
|
||||
OnPlayerJoinedPatch.JoinNum = 0;
|
||||
|
||||
PlayerControlSetRolePatch.Seekers.Clear();
|
||||
PlayerControlSetRolePatch.Jesters.Clear();
|
||||
PlayerControlSetRolePatch.FirstAssign = true;
|
||||
CoShowIntroPatch.ScheduleExile = false;
|
||||
|
||||
CoShowIntroPatch.IntroInitiated = false;
|
||||
}
|
||||
|
||||
public static PlayerControl[] AllAlivePlayerControls
|
||||
|
||||
+39
-4
@@ -373,7 +373,14 @@ internal static class SendChatPatch
|
||||
|
||||
if (text == "/sns" || text == "/shiftandseek")
|
||||
{
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
|
||||
{
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeThree", Options.CrewAutoWinsGameAfter.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -396,7 +403,14 @@ internal static class SendChatPatch
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
|
||||
{
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeThree", Options.CrewAutoWinsGameAfter.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Utils.ChatCommand(__instance, Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
@@ -656,6 +670,12 @@ public static class RPCHandlerPatch
|
||||
Utils.ModeratorChatCommand($"{NormalGameEndChecker.LastWinReason}", "", false);
|
||||
}
|
||||
|
||||
if (text == "/aur" || text == "/socials")
|
||||
{
|
||||
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashLastGameCmd.GetValue()) return;
|
||||
Utils.ModeratorChatCommand(Translator.Get("socialsAll"), "", false);
|
||||
}
|
||||
|
||||
if (text == "/0kc" || text == "/0killcooldown")
|
||||
{
|
||||
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
|
||||
@@ -664,7 +684,15 @@ public static class RPCHandlerPatch
|
||||
if (text == "/sns" || text == "/shiftandseek")
|
||||
{
|
||||
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
|
||||
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
|
||||
{
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeThree", Options.CrewAutoWinsGameAfter.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
}
|
||||
|
||||
if (text == "/sr" || text == "/speedrun")
|
||||
@@ -687,7 +715,14 @@ public static class RPCHandlerPatch
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
if (Options.MisfiresToSuicide.GetInt() == 1 || Options.CantKillTime.GetInt() == 0)
|
||||
{
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeThree", Options.CrewAutoWinsGameAfter.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Utils.ModeratorChatCommand(Translator.Get("SnSModeOne"), Translator.Get("SnSModeTwo", Options.CrewAutoWinsGameAfter.GetInt(), Options.CantKillTime.GetInt(), Options.MisfiresToSuicide.GetInt()), true);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
@@ -72,6 +72,20 @@ class NormalGameEndChecker
|
||||
return;
|
||||
}
|
||||
|
||||
if (Winner == "SnSTimer")
|
||||
{
|
||||
LastWinReason = Translator.Get("crewmateWinTimer", Options.CrewAutoWinsGameAfter.GetInt()) + impostorList;
|
||||
canUpdateWinnerText = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Winner == "NoOneWinsSpeedrun")
|
||||
{
|
||||
LastWinReason = Translator.Get("noOneWin", Options.GameAutoEndsAfter.GetInt());
|
||||
canUpdateWinnerText = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Utils.AliveImpostors == 0 || Winner == "Crewmate")
|
||||
{
|
||||
LastWinReason = Translator.Get("crewmateWin") + impostorList;
|
||||
|
||||
+11
-1
@@ -9,12 +9,16 @@ namespace AmongUsRevamped;
|
||||
[HarmonyPatch(typeof(HudManager), nameof(HudManager.CoShowIntro))]
|
||||
internal static class CoShowIntroPatch
|
||||
{
|
||||
public static bool IntroInitiated;
|
||||
public static bool ScheduleExile;
|
||||
public static void Postfix(IntroCutscene __instance)
|
||||
{
|
||||
Logger.Info(" Intro initiated", "CoShowIntro");
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
IntroInitiated = true;
|
||||
|
||||
AbilityManagement.SendRoleMessages();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
@@ -28,6 +32,12 @@ internal static class CoShowIntroPatch
|
||||
|
||||
Logger.Info($" {p.Data.PlayerName} -> {p.Data.RoleType}", "RoleInfo");
|
||||
}
|
||||
|
||||
if (ScheduleExile)
|
||||
{
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
ScheduleExile = false;
|
||||
}
|
||||
|
||||
Logger.Info($" {AbilityManagement.RoleList()}", "AbilityInfo");
|
||||
|
||||
@@ -40,7 +50,7 @@ internal static class CoShowIntroPatch
|
||||
}, 33f, "MeetingEnabled");
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 2 && Options.SNSChatInGame.GetBool() /*|| Options.Gamemode.GetValue() == 0 && Options.ChatBeforeFirstMeeting.GetBool()*/)
|
||||
if (Options.Gamemode.GetValue() == 2 && Options.SNSChatInGame.GetBool())
|
||||
{
|
||||
_ = new LateTask(() =>
|
||||
{
|
||||
|
||||
@@ -153,4 +153,15 @@ public static class SetLevelPatch
|
||||
HandledLevelKicks.Add(__instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(GameStartManager), nameof(GameStartManager.Start))]
|
||||
public static class ShowLobbyTimer_GameStartManager_Start_Postfix
|
||||
{
|
||||
public static void Postfix(GameStartManager __instance)
|
||||
{
|
||||
if (__instance == null || !GameData.Instance || !AmongUsClient.Instance || AmongUsClient.Instance.NetworkMode == NetworkModes.LocalGame || !AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
HudManager.Instance.ShowLobbyTimer(600);
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,9 @@ internal class CoStartGamePatch
|
||||
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.RpcSetRole))]
|
||||
class PlayerControlSetRolePatch
|
||||
{
|
||||
private static int i;
|
||||
public static bool FirstAssign;
|
||||
private static HashSet<byte> Seekers = new();
|
||||
private static readonly HashSet<byte> ProcessedPlayers = new();
|
||||
public static HashSet<byte> Seekers = new();
|
||||
public static HashSet<PlayerControl> Jesters = new();
|
||||
private static readonly System.Random rand = new System.Random();
|
||||
|
||||
@@ -35,17 +35,17 @@ class PlayerControlSetRolePatch
|
||||
{
|
||||
if (!FirstAssign || !AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
var oldRole = roleType;
|
||||
if (!ProcessedPlayers.Add(__instance.PlayerId)) return true;
|
||||
|
||||
canOverrideRole = false;
|
||||
|
||||
if (Main.GM.Value && __instance == PlayerControl.LocalPlayer)
|
||||
{
|
||||
roleType = RoleTypes.CrewmateGhost;
|
||||
return true;
|
||||
roleType = RoleTypes.Crewmate;
|
||||
CoShowIntroPatch.ScheduleExile = true;
|
||||
}
|
||||
|
||||
if (Utils.isHideNSeek && i == 0)
|
||||
if (Utils.isHideNSeek && Seekers.Count() == 0)
|
||||
{
|
||||
int seekersCount = Options.NumSeekers.GetInt();
|
||||
|
||||
@@ -77,22 +77,21 @@ class PlayerControlSetRolePatch
|
||||
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (__instance == PlayerControl.LocalPlayer && Main.GM.Value)
|
||||
{
|
||||
PlayerControl.LocalPlayer.myTasks.Clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Options.EngineerMode.GetBool()) roleType = RoleTypes.Engineer;
|
||||
else roleType = RoleTypes.Crewmate;
|
||||
}
|
||||
|
||||
i++;
|
||||
if (i >= PlayerControl.AllPlayerControls.Count)
|
||||
if (Options.Gamemode.GetValue() == 2 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (roleType == RoleTypes.Impostor || roleType == RoleTypes.Phantom || roleType == RoleTypes.Viper) roleType = RoleTypes.Shapeshifter;
|
||||
}
|
||||
|
||||
if (ProcessedPlayers.Count >= PlayerControl.AllPlayerControls.Count)
|
||||
{
|
||||
Seekers.Clear();
|
||||
ProcessedPlayers.Clear();
|
||||
FirstAssign = false;
|
||||
i = 0;
|
||||
|
||||
Logger.Info("PCSRP successful", "RoleManaging");
|
||||
}
|
||||
|
||||
@@ -105,7 +104,7 @@ class PlayerControlSetRolePatch
|
||||
{
|
||||
Jesters.Add(__instance);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ class ReportDeadBodyPatch
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || __instance == null) return true;
|
||||
|
||||
if (Options.DisableAnnoyingMeetingCalls.GetBool() && !Utils.CanCallMeetings /*&& !Options.ChatBeforeFirstMeeting.GetBool()*/ && target == null)
|
||||
if (Options.DisableAnnoyingMeetingCalls.GetBool() && !Utils.CanCallMeetings && target == null && Options.Gamemode.GetValue() < 2)
|
||||
{
|
||||
Logger.Info($" {__instance.Data.PlayerName} is calling a meeting too fast, attempt blocked", "ReportDeadBodyPatch");
|
||||
return false;
|
||||
@@ -26,10 +26,17 @@ class ReportDeadBodyPatch
|
||||
|
||||
if (Options.Gamemode.GetValue() == 2 || Options.Gamemode.GetValue() == 3)
|
||||
{
|
||||
if (target != null) Logger.Info($" Stopped {__instance.Data.PlayerName} reporting the body of {target.PlayerName}", "ReportDeadBodyPatch");
|
||||
else Logger.Info($" Stopped {__instance.Data.PlayerName} trying to call a meeting", "ReportDeadBodyPatch");
|
||||
|
||||
return false;
|
||||
if (target != null)
|
||||
{
|
||||
Logger.Info($" Stopped {__instance.Data.PlayerName} reporting the body of {target.PlayerName}", "ReportDeadBodyPatch");
|
||||
return false;
|
||||
}
|
||||
if (__instance != PlayerControl.LocalPlayer)
|
||||
{
|
||||
Logger.Info($" Stopped {__instance.Data.PlayerName} trying to call a meeting", "ReportDeadBodyPatch");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
@@ -211,9 +218,9 @@ class PlayerControlCompleteTaskPatch
|
||||
|
||||
public static void CalculateTaskWin()
|
||||
{
|
||||
if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool()) return;
|
||||
if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !CoShowIntroPatch.IntroInitiated) return;
|
||||
|
||||
//Logger.Info($" Checking if {GameData.Instance.CompletedTasks} - {ignoredCompletedTasks} >= ({GameData.Instance.TotalTasks} - {ignoredTasks}) * 0.01 * {Options.TaskPercentNeededToWin.GetInt()}", "TaskPatch");
|
||||
Logger.Info($" Checking if {GameData.Instance.CompletedTasks} - {ignoredCompletedTasks} >= ({GameData.Instance.TotalTasks} - {ignoredTasks}) * 0.01 * {Options.TaskPercentNeededToWin.GetInt()}", "TaskPatch");
|
||||
|
||||
if ((GameData.Instance.CompletedTasks - ignoredCompletedTasks) >= (GameData.Instance.TotalTasks - ignoredTasks)*0.01*Options.TaskPercentNeededToWin.GetInt())
|
||||
{
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
- Dark Theme
|
||||
- Toggle Lobby Music
|
||||
- Show/Hide Info When Dead
|
||||
- Customizable strings
|
||||
## <b>⚙️ Technical settings:</b>
|
||||
- Kick/Ban players under a certain level
|
||||
- Kick/Ban invalid FriendCodes
|
||||
@@ -115,29 +114,30 @@
|
||||
### Chat Commands
|
||||
| Command | Function |
|
||||
| ------------------------------------------- | ------------------------------------------------- |
|
||||
| /help | Show command help |
|
||||
| /l<br>/lastgame | Send last game info |
|
||||
| /r | Send current gamemode/roles description |
|
||||
| /r <ability> | Send specific Ability info |
|
||||
| /0kc<br>/sns</br>/sp | Send respective gamemode description |
|
||||
| /ban <name> | Ban a player by name |
|
||||
| /kick <name> | Kick a player by name |
|
||||
| /cban <color> | Ban a player by color |
|
||||
| /ckick <color> | Kick a player by color |
|
||||
| /dump | Copy your LogOutput file |
|
||||
| /eg<br>/endgame | Instantly end an ongoing game |
|
||||
| /em<br>/endmeeting | Instantly end an ongoing meeting |
|
||||
| /aur<br>/socials | Send AUR socials (GitHub, Discord) |
|
||||
| /col<br>/color | Set color. Can be used to bypass color limit |
|
||||
| /reload | Reset the *Language*.JSON file to default |
|
||||
| /s<br/start | Start game countdown |
|
||||
| /vip<br>/moderator<br>/admin | Add a user to respective list by name |
|
||||
| /t <template> | Send a Template from Templates.txt |
|
||||
| '/help' | Show command help |
|
||||
| '/l<br>/lastgame' | Send last game info |
|
||||
| '/r' | Send current gamemode/roles description |
|
||||
| '/r {ability}' | Send specific Ability info |
|
||||
| '/0kc<br>/sns</br>/sp' | Send respective gamemode description |
|
||||
| '/ban {name}' | Ban a player by name |
|
||||
| '/kick {name}' | Kick a player by name |
|
||||
| '/cban {color}' | Ban a player by color |
|
||||
| '/ckick {color}' | Kick a player by color |
|
||||
| '/dump' | Copy your LogOutput file |
|
||||
| '/eg<br>/endgame' | Instantly end an ongoing game |
|
||||
| '/em<br>/endmeeting' | Instantly end an ongoing meeting |
|
||||
| '/aur<br>/socials' | Send AUR socials (GitHub, Discord) |
|
||||
| '/col<br>/color' | Set color. Can be used to bypass color limit |
|
||||
| '/reload' | Reset the *Language*.JSON file to default |
|
||||
| '/s<br>/start' | Start game countdown |
|
||||
| '/vip<br>/moderator<br>/admin' | Add a user to respective list by name |
|
||||
| '/t {template}' | Send a Template from Templates.txt |
|
||||
|
||||
|
||||
**Credit to these mods and their developers for their code:**
|
||||
### :star: [AUnlocker](https://github.com/astra1dev/AUnlocker)
|
||||
> - Original NumberOptionsPatch
|
||||
> - Always Show Lobby Timer
|
||||
### :star: [EHR (Formerly TOHE+)](https://github.com/Gurge44/EndlessHostRoles)
|
||||
> - Task Patching
|
||||
### :star: [TOH](https://github.com/tukasa0001/TownOfHost) :
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"disableInfoWhenDead": "Hide Info When Dead",
|
||||
"disableCommandHelper": "Disable Command Helper",
|
||||
|
||||
"gameMasterWarning":"You will now spectate games until Game Master is turned off.",
|
||||
"gameMasterWarning":"You will now spectate games until Game Master is turned off. WARNING: Ability messages will not be sent if this setting is enabled.",
|
||||
|
||||
"cancelStartCountdown": "Start countdown canceled",
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"dontKickLevelOnes": "Don't Kick Lv.1 Players For Glitched Lobbies",
|
||||
"kickInvalidFriendCodes": "Kick Invalid FriendCodes",
|
||||
"tempBanInvalidFriendCodes": "Ban Instead Of Kick",
|
||||
"deniedWordsToKick": "Sent Denied Words To Kick Player",
|
||||
"applyBanList": "Apply BanList",
|
||||
"applyDenyNameList": "Apply DenyName List",
|
||||
"applyModeratorList": "Apply Moderator List",
|
||||
@@ -45,13 +46,12 @@
|
||||
|
||||
"tabGroupAccess": "Access Levels",
|
||||
"slashColorCmd": "Who Can Use /color",
|
||||
"slashRolesAndGamemodeCmd": "Who Can Use /r And Templates",
|
||||
"slashLastGameCmd": "Who Can Use /l",
|
||||
"slashHelpAndAurCmd": "Who Can Use /help And /aur",
|
||||
"slashKickCmd": "Who Can Use /kick And /ckick",
|
||||
"slashBanCmd": "Who Can Use /ban And /cban",
|
||||
"slashRolesAndGamemodeCmd": "Who Can Use /r & Templates",
|
||||
"slashLastGameCmd": "Who Can Use /l & /aur",
|
||||
"slashKickCmd": "Who Can Use /kick & /ckick",
|
||||
"slashBanCmd": "Who Can Use /ban & /cban",
|
||||
"slashEndMeetingCmd": "Who Can Use /endmeeting",
|
||||
"slashStartAndEndGameCmd": "Who Can Use /startgame And /endgame",
|
||||
"slashStartAndEndGameCmd": "Who Can Use /startgame & /endgame",
|
||||
|
||||
"tabGroupCrewmate": "Crewmate Roles",
|
||||
"tabGroupNeutral": "Neutral Roles",
|
||||
@@ -220,7 +220,8 @@
|
||||
|
||||
"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 kill(s) = suicide",
|
||||
"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",
|
||||
"SnSModeThree": "Crewmates win by doing tasks or surviving {0}s\nImpostors win by killing everyone\n{1} wrong kill(s) = suicide",
|
||||
"speedrunMode": "Speedrun:\n\nEveryone is a crewmate. The 1st player to finish tasks wins the game. Game auto ends after {0}s",
|
||||
|
||||
"allCommandsFull": "<b>ALL COMMANDS:</b>\n\n<b>/help</b>\nShow this message.\n<b>/aur, /socials</b>\nSend Among Us Revamped social links.\n\n<b>/r, /gm</b>\nSend current mode description or ability list.\n<b>/r {ability}</b>\nSend specific ability info.\n<b>/l, /lastgame</b>\nSend last winner info.\n\n<b>/0kc, /0killcooldown</b>\nSend 0 Kill Cooldown mode description.\n<b>/sns, /shiftandseek</b>\nSend Shift and Seek mode description.\n<b>/sp, /speedrun</b>\nSend Speedrun mode description.\n\n/<b>kick, /ban</b>\nKick or ban a player by name.\n<b>/ckick, /cban</b>\nKick or ban a player by color.\n\n<b>/vip /moderator /admin</b>\nAdd a player as VIP, Moderator, or Admin.\n<b>/removevip, /removemoderator, /removeadmin</b>\nRemove VIP, Moderator, or Admin from a player.\n\n<b>/eg, /endgame</b>\nEnd the current game.\n<b>/em, /endmeeting</b>\nEnd the current meeting.\n<b>/s, /start</b>\nBegin the game starting countdown.\n\n<b>/t {template}</b>\nSend a template from AUR-DATA/templates.txt.\n\n<b>/col, /color, /colour</b>\nSet your color, can be used to bypass limits.",
|
||||
@@ -279,6 +280,8 @@
|
||||
"impostorWin": "Impostors Win!\n\nImpostors: ",
|
||||
"crewmateWinTasks": "Crewmates Win! ({0}% tasks completed)\n\nImpostors: ",
|
||||
"impostorWinMisc": "Impostors Win! (Sabotage)\n\n Impostors: ",
|
||||
"crewmateWinTimer": "Crewmates Win! (Survived {0}s)\n\n Impostors: ",
|
||||
"noOneWin": "No one wins. ({0}s Timer)",
|
||||
|
||||
"ability": "Ability",
|
||||
|
||||
@@ -310,7 +313,7 @@
|
||||
"emDesc": "End the current meeting.",
|
||||
"aurDesc": "Send Among Us Revamped social links.",
|
||||
"sDesc": "Start the game countdown.",
|
||||
"rDesc": "/r send active abilities or current gamemode. /r {ability} send specific ability info",
|
||||
"rDesc": "/r sends active abilities or current gamemode. /r {ability} sends specific ability info",
|
||||
"rolesDesc": "Send all abilities/gamemode overview.",
|
||||
"kickDesc": "Kick a player by name.",
|
||||
"ckickDesc": "Kick a player by color.",
|
||||
@@ -326,5 +329,7 @@
|
||||
"removeModeratorDesc": "Remove Moderator from user.",
|
||||
"removeAdminDesc": "Remove Admin from user.",
|
||||
"lastgameDesc": "Send last game info.",
|
||||
"templateDesc": "Send a specified template from AUR-DATA/templates.txt."
|
||||
"templateDesc": "Send a specified template from AUR-DATA/templates.txt.",
|
||||
|
||||
"banWordKick": "{0} was kicked because they sent a banned word {1} time(s)"
|
||||
}
|
||||
Reference in new issue
Block a user