mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-19 15:51:58 +00:00
Try to fix Loop Wanted issue (#632)
* Add new Gamemode and fix SettingMenu button order issue * back path * Fix * Try to ban Crewmate Kill * Rename LoopWanted to DoomTag & fix double suffix * Rename * Fix gurge said
This commit is contained in:
1 parent
0cde09fcb6
commit
6a4d5cb4d5
22 files changed
+139
-143
No files matched your search
@@ -504,8 +504,8 @@ public enum CustomRoles
|
||||
// Snowdown
|
||||
SnowdownPlayer,
|
||||
|
||||
// LoopWanted
|
||||
LoopHunter,
|
||||
// DoomTag
|
||||
Tagger,
|
||||
|
||||
// GM
|
||||
GM,
|
||||
|
||||
+2
-2
@@ -504,8 +504,8 @@ public enum CustomRoles
|
||||
// Snowdown
|
||||
SnowdownPlayer,
|
||||
|
||||
// LoopWanted
|
||||
LoopHunter,
|
||||
// DoomTag
|
||||
Tagger,
|
||||
|
||||
// GM
|
||||
GM,
|
||||
|
||||
@@ -8,7 +8,7 @@ using static EHR.Translator;
|
||||
|
||||
namespace EHR.Gamemodes;
|
||||
|
||||
internal static class LoopWanted
|
||||
internal static class DoomTag
|
||||
{
|
||||
private static Dictionary<byte, byte> TargetMap = [];
|
||||
private static Dictionary<byte, long> LowerVisionList = [];
|
||||
@@ -23,47 +23,47 @@ internal static class LoopWanted
|
||||
private static OptionItem CarnivalSpeedMultiplier;
|
||||
private static OptionItem ShowTargetArrow;
|
||||
|
||||
private static readonly string[] PunishmentModeOptions = ["LoopWanted.PunishSuicide", "LoopWanted.PunishLowerVision"];
|
||||
private static readonly string[] PunishmentModeOptions = ["DoomTag.PunishSuicide", "DoomTag.PunishLowerVision"];
|
||||
|
||||
public static void SetupCustomOption()
|
||||
{
|
||||
var id = 69_226_001;
|
||||
Color color = Utils.GetRoleColor(CustomRoles.LoopHunter);
|
||||
const CustomGameMode gameMode = CustomGameMode.LoopWanted;
|
||||
Color color = Utils.GetRoleColor(CustomRoles.Tagger);
|
||||
const CustomGameMode gameMode = CustomGameMode.DoomTag;
|
||||
const TabGroup tab = TabGroup.GameSettings;
|
||||
|
||||
BaseKillCooldown = new FloatOptionItem(id++, "LoopWanted.BaseKillCooldown", new(2.5f, 60f, 2.5f), 15f, tab)
|
||||
BaseKillCooldown = new FloatOptionItem(id++, "DoomTag.BaseKillCooldown", new(2.5f, 60f, 2.5f), 15f, tab)
|
||||
.SetHeader(true)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
|
||||
PunishmentMode = new StringOptionItem(id++, "LoopWanted.PunishmentMode", PunishmentModeOptions, 0, tab)
|
||||
PunishmentMode = new StringOptionItem(id++, "DoomTag.PunishmentMode", PunishmentModeOptions, 0, tab)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color);
|
||||
|
||||
LowerVisionMultiplier = new FloatOptionItem(id++, "LoopWanted.LowerVisionMultiplier", new(0f, 10f, 0.5f), 0.5f, tab)
|
||||
LowerVisionMultiplier = new FloatOptionItem(id++, "DoomTag.LowerVisionMultiplier", new(0f, 10f, 0.5f), 0.5f, tab)
|
||||
.SetParent(PunishmentMode)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color)
|
||||
.SetValueFormat(OptionFormat.Multiplier);
|
||||
|
||||
CarnivalPlayerCount = new IntegerOptionItem(id++, "LoopWanted.CarnivalPlayerCount", new(1, 127, 1), 3, tab)
|
||||
CarnivalPlayerCount = new IntegerOptionItem(id++, "DoomTag.CarnivalPlayerCount", new(1, 127, 1), 3, tab)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color)
|
||||
.SetValueFormat(OptionFormat.Players);
|
||||
|
||||
CarnivalKillCooldown = new FloatOptionItem(id++, "LoopWanted.CarnivalKillCooldown", new(2.5f, 60f, 2.5f), 5f, tab)
|
||||
CarnivalKillCooldown = new FloatOptionItem(id++, "DoomTag.CarnivalKillCooldown", new(2.5f, 60f, 2.5f), 5f, tab)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
|
||||
CarnivalSpeedMultiplier = new FloatOptionItem(id++, "LoopWanted.CarnivalSpeedMultiplier", new(0.25f, 10f, 0.25f), 2.0f, tab)
|
||||
CarnivalSpeedMultiplier = new FloatOptionItem(id++, "DoomTag.CarnivalSpeedMultiplier", new(0.25f, 10f, 0.25f), 2.0f, tab)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color)
|
||||
.SetValueFormat(OptionFormat.Multiplier);
|
||||
|
||||
ShowTargetArrow = new BooleanOptionItem(id, "LoopWanted.ShowTargetArrow", false, tab)
|
||||
ShowTargetArrow = new BooleanOptionItem(id, "DoomTag.ShowTargetArrow", false, tab)
|
||||
.SetGameMode(gameMode)
|
||||
.SetColor(color);
|
||||
}
|
||||
@@ -75,16 +75,16 @@ internal static class LoopWanted
|
||||
LowerVisionList = [];
|
||||
CarnivalMode = false;
|
||||
|
||||
if (Options.CurrentGameMode != CustomGameMode.LoopWanted) return;
|
||||
if (Options.CurrentGameMode != CustomGameMode.DoomTag) return;
|
||||
|
||||
DefaultSpeed = Main.RealOptionsData.GetFloat(FloatOptionNames.PlayerSpeedMod);
|
||||
|
||||
Utils.SendRPC(CustomRPC.LoopWantedSync, 1, false);
|
||||
Utils.SendRPC(CustomRPC.DoomTagSync, 1, false);
|
||||
}
|
||||
|
||||
public static void OnGameStart()
|
||||
{
|
||||
if (Options.CurrentGameMode != CustomGameMode.LoopWanted) return;
|
||||
if (Options.CurrentGameMode != CustomGameMode.DoomTag) return;
|
||||
AssignTargets();
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ internal static class LoopWanted
|
||||
|
||||
if (playerIds.Count < 2)
|
||||
{
|
||||
Logger.Warn("Not enough players for LoopWanted", "LoopWanted");
|
||||
Logger.Warn("Not enough players for DoomTag", "DoomTag");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ internal static class LoopWanted
|
||||
TargetMap.Remove(TargetMap.GetKeyByValue(targetId));
|
||||
TargetMap[hunterId] = targetId;
|
||||
if (ShowTargetArrow.GetBool()) TargetArrow.Add(hunterId, targetId);
|
||||
Logger.Info($"{hunterId.ColoredPlayerName()} 2 targets 2 {targetId.ColoredPlayerName()}", "LoopWanted");
|
||||
Logger.Info($"{hunterId.ColoredPlayerName()} 2 targets 2 {targetId.ColoredPlayerName()}", "DoomTag");
|
||||
}
|
||||
|
||||
SyncTargetMapRPC();
|
||||
@@ -138,7 +138,7 @@ internal static class LoopWanted
|
||||
|
||||
if (expectedTarget == targetId)
|
||||
{
|
||||
Logger.Info($"{killer.GetRealName()} correctly killed their target {target.GetRealName()}", "LoopWanted");
|
||||
Logger.Info($"{killer.GetRealName()} correctly killed their target {target.GetRealName()}", "DoomTag");
|
||||
|
||||
byte nextTarget = GetTarget(targetId);
|
||||
|
||||
@@ -151,7 +151,7 @@ internal static class LoopWanted
|
||||
TargetMap.Remove(TargetMap.GetKeyByValue(nextTarget));
|
||||
TargetMap[killerId] = nextTarget;
|
||||
if (ShowTargetArrow.GetBool()) TargetArrow.Add(killerId, nextTarget);
|
||||
Logger.Info($"{killer.GetRealName()}'s new target is {nextTarget.ColoredPlayerName()}", "LoopWanted");
|
||||
Logger.Info($"{killer.GetRealName()}'s new target is {nextTarget.ColoredPlayerName()}", "DoomTag");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -165,13 +165,13 @@ internal static class LoopWanted
|
||||
Utils.NotifyRoles(SpecifySeer: killer, SpecifyTarget: killer);
|
||||
|
||||
SyncTargetMapRPC();
|
||||
Utils.SendRPC(CustomRPC.LoopWantedSync, 1, CarnivalMode);
|
||||
Utils.SendRPC(CustomRPC.DoomTagSync, 1, CarnivalMode);
|
||||
|
||||
killer.Kill(target);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Info($"{killer.GetRealName()} killed wrong target {target.GetRealName()} (expected: {expectedTarget.ColoredPlayerName()})", "LoopWanted");
|
||||
Logger.Info($"{killer.GetRealName()} killed wrong target {target.GetRealName()} (expected: {expectedTarget.ColoredPlayerName()})", "DoomTag");
|
||||
|
||||
if (PunishmentMode.GetInt() == 0)
|
||||
killer.Kill(target);
|
||||
@@ -194,21 +194,21 @@ internal static class LoopWanted
|
||||
switch (PunishmentMode.GetInt())
|
||||
{
|
||||
case 0:
|
||||
Logger.Info($"{killer.GetRealName()} is committing suicide for wrong kill", "LoopWanted");
|
||||
killer.Notify(GetString("LoopWanted.WrongKillSuicide"));
|
||||
Logger.Info($"{killer.GetRealName()} is committing suicide for wrong kill", "DoomTag");
|
||||
killer.Notify(GetString("DoomTag.WrongKillSuicide"));
|
||||
LateTask.New(() =>
|
||||
{
|
||||
if (!killer || !killer.IsAlive() || GameStates.IsEnded) return;
|
||||
killer.Suicide();
|
||||
HandleDeadPlayer(killer.PlayerId);
|
||||
}, 0.5f, "LoopWanted Suicide Punishment");
|
||||
}, 0.5f, "DoomTag Suicide Punishment");
|
||||
break;
|
||||
|
||||
case 1:
|
||||
float visionMultiplier = LowerVisionMultiplier.GetFloat();
|
||||
LowerVisionList[killer.PlayerId] = Utils.TimeStamp;
|
||||
killer.MarkDirtySettings();
|
||||
killer.Notify(string.Format(GetString("LoopWanted.WrongKillLowerVision"), visionMultiplier));
|
||||
killer.Notify(string.Format(GetString("DoomTag.WrongKillLowerVision"), visionMultiplier));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -232,11 +232,8 @@ internal static class LoopWanted
|
||||
TargetMap[hunterId] = nextTarget;
|
||||
if (ShowTargetArrow.GetBool()) TargetArrow.Add(hunterId, nextTarget);
|
||||
|
||||
LateTask.New(() =>
|
||||
{
|
||||
PlayerControl hunter = Utils.GetPlayerById(hunterId);
|
||||
if (hunter) Utils.NotifyRoles(SpecifySeer: hunter, SpecifyTarget: hunter);
|
||||
}, 0.2f);
|
||||
PlayerControl hunter = Utils.GetPlayerById(hunterId);
|
||||
if (hunter) Utils.NotifyRoles(SpecifySeer: hunter, SpecifyTarget: hunter);
|
||||
}
|
||||
else if (hunterId != byte.MaxValue)
|
||||
{
|
||||
@@ -256,7 +253,7 @@ internal static class LoopWanted
|
||||
if (!CarnivalMode && aliveCount <= threshold && aliveCount > 1)
|
||||
{
|
||||
CarnivalMode = true;
|
||||
Utils.SendRPC(CustomRPC.LoopWantedSync, 1, true);
|
||||
Utils.SendRPC(CustomRPC.DoomTagSync, 1, true);
|
||||
|
||||
foreach (PlayerControl pc in Main.CachedAlivePlayerControls())
|
||||
{
|
||||
@@ -264,12 +261,12 @@ internal static class LoopWanted
|
||||
Main.AllPlayerKillCooldown[pc.PlayerId] = CarnivalKillCooldown.GetFloat();
|
||||
if (!pc.AmOwner) pc.ReactorFlash();
|
||||
pc.MarkDirtySettings();
|
||||
pc.Notify(GetString("LoopWanted.CarnivalModeActivated"));
|
||||
pc.Notify(GetString("DoomTag.CarnivalModeActivated"));
|
||||
}
|
||||
|
||||
SoundManager.Instance.PlaySound(HudManager.Instance.LobbyTimerExtensionUI.lobbyTimerPopUpSound, false);
|
||||
Utils.FlashColor(new(1f, 0.5f, 0f, 0.4f), 1.4f);
|
||||
Logger.Info($"Carnival Mode activated! {aliveCount} players remaining.", "LoopWanted");
|
||||
Logger.Info($"Carnival Mode activated! {aliveCount} players remaining.", "DoomTag");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,11 +283,11 @@ internal static class LoopWanted
|
||||
case 1:
|
||||
PlayerControl winner = alivePlayers[0];
|
||||
CustomWinnerHolder.WinnerIds = [winner.PlayerId];
|
||||
Logger.Info($"LoopWanted Winner: {winner.GetRealName()}", "LoopWanted");
|
||||
Logger.Info($"DoomTag Winner: {winner.GetRealName()}", "DoomTag");
|
||||
return true;
|
||||
case 0:
|
||||
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.None);
|
||||
Logger.Info("No players alive, force ending the game", "LoopWanted");
|
||||
Logger.Info("No players alive, force ending the game", "DoomTag");
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -301,7 +298,7 @@ internal static class LoopWanted
|
||||
|
||||
public static string GetSuffix(PlayerControl seer, PlayerControl target, bool hud = false)
|
||||
{
|
||||
if (seer.PlayerId != target.PlayerId || GameStates.IsMeeting || (seer.IsModdedClient() && !hud)) return string.Empty;
|
||||
if (seer.PlayerId != target.PlayerId || GameStates.IsMeeting) return string.Empty;
|
||||
|
||||
byte targetId = GetTarget(seer.PlayerId);
|
||||
if (targetId == byte.MaxValue) return string.Empty;
|
||||
@@ -309,7 +306,7 @@ internal static class LoopWanted
|
||||
Suffix.Clear();
|
||||
|
||||
Suffix.Append("<#D9BAA5>");
|
||||
Suffix.Append(hud ? GetString("LoopWanted.CurrentTarget") : GetString("Target"));
|
||||
Suffix.Append(hud ? GetString("DoomTag.CurrentTarget") : GetString("Target"));
|
||||
Suffix.Append(": <b>");
|
||||
Suffix.Append(targetId.ColoredPlayerName());
|
||||
Suffix.Append("</b>");
|
||||
@@ -325,7 +322,7 @@ internal static class LoopWanted
|
||||
if (CarnivalMode)
|
||||
{
|
||||
Suffix.Append("\n<#ff6600>");
|
||||
Suffix.Append(GetString("LoopWanted.CarnivalModeHUD"));
|
||||
Suffix.Append(GetString("DoomTag.CarnivalModeHUD"));
|
||||
Suffix.Append("</color>");
|
||||
}
|
||||
|
||||
@@ -336,8 +333,8 @@ internal static class LoopWanted
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
var writer = Utils.CreateRPC(CustomRPC.LoopWantedSync);
|
||||
writer.WritePacked(2);
|
||||
var writer = Utils.CreateRPC(CustomRPC.DoomTagSync);
|
||||
writer.Write(2);
|
||||
writer.Write(TargetMap.Count);
|
||||
foreach (var kvp in TargetMap)
|
||||
{
|
||||
@@ -391,7 +388,7 @@ internal static class LoopWanted
|
||||
|
||||
public static void Postfix()
|
||||
{
|
||||
if (!Main.IntroDestroyed || !GameStates.IsInTask || ExileController.Instance || Options.CurrentGameMode != CustomGameMode.LoopWanted || !AmongUsClient.Instance.AmHost) return;
|
||||
if (!Main.IntroDestroyed || !GameStates.IsInTask || ExileController.Instance || Options.CurrentGameMode != CustomGameMode.DoomTag || !AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
long now = Utils.TimeStamp;
|
||||
if (IntroCutsceneDestroyPatch.IntroDestroyTS + 10 > now || LastFixedUpdate == now) return;
|
||||
@@ -148,7 +148,7 @@ public class Main : BasePlugin
|
||||
[CustomGameMode.CaptureTheFlag] = [],
|
||||
[CustomGameMode.NaturalDisasters] = [],
|
||||
[CustomGameMode.Snowdown] = [],
|
||||
[CustomGameMode.LoopWanted] = []
|
||||
[CustomGameMode.DoomTag] = []
|
||||
};
|
||||
|
||||
public static Dictionary<CustomGameMode, Color> GameModeColors = [];
|
||||
@@ -885,7 +885,7 @@ public class Main : BasePlugin
|
||||
// Snowdown
|
||||
{ CustomRoles.SnowdownPlayer, "#e4fdff" },
|
||||
// Loop Wanted
|
||||
{ CustomRoles.LoopHunter, "#D9BAA5" },
|
||||
{ CustomRoles.Tagger, "#D9BAA5" },
|
||||
// Hide And Seek
|
||||
{ CustomRoles.Seeker, "#ff1919" },
|
||||
{ CustomRoles.Hider, "#345eeb" },
|
||||
@@ -976,7 +976,7 @@ public class Main : BasePlugin
|
||||
[CustomGameMode.Deathrace] = Utils.GetRoleColor(CustomRoles.Racer),
|
||||
[CustomGameMode.Mingle] = Utils.GetRoleColor(CustomRoles.MinglePlayer),
|
||||
[CustomGameMode.Snowdown] = Utils.GetRoleColor(CustomRoles.SnowdownPlayer),
|
||||
[CustomGameMode.LoopWanted] = Utils.GetRoleColor(CustomRoles.LoopHunter)
|
||||
[CustomGameMode.DoomTag] = Utils.GetRoleColor(CustomRoles.Tagger)
|
||||
};
|
||||
|
||||
IL2CPPChainloader.Instance.Finished += () =>
|
||||
|
||||
@@ -37,7 +37,7 @@ internal static class CustomRoleSelector
|
||||
{ CustomGameMode.Deathrace, CustomRoles.Racer },
|
||||
{ CustomGameMode.Mingle, CustomRoles.MinglePlayer },
|
||||
{ CustomGameMode.Snowdown, CustomRoles.SnowdownPlayer },
|
||||
{ CustomGameMode.LoopWanted, CustomRoles.LoopHunter }
|
||||
{ CustomGameMode.DoomTag, CustomRoles.Tagger }
|
||||
};
|
||||
|
||||
public static void SelectCustomRoles()
|
||||
|
||||
@@ -75,7 +75,7 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.Racer or
|
||||
CustomRoles.MinglePlayer or
|
||||
CustomRoles.SnowdownPlayer or
|
||||
CustomRoles.LoopHunter;
|
||||
CustomRoles.Tagger;
|
||||
}
|
||||
|
||||
public RoleBase GetRoleClass()
|
||||
@@ -435,7 +435,6 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.TMGPlayer => CustomRoles.Crewmate,
|
||||
// Mingle
|
||||
CustomRoles.MinglePlayer => CustomRoles.Crewmate,
|
||||
|
||||
_ => role.IsImpostor() ? CustomRoles.Impostor : CustomRoles.Crewmate
|
||||
};
|
||||
}
|
||||
@@ -487,8 +486,8 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.Racer => RoleTypes.Phantom,
|
||||
// Snowdown
|
||||
CustomRoles.SnowdownPlayer => RoleTypes.Phantom,
|
||||
// LoopWanted
|
||||
CustomRoles.LoopHunter => RoleTypes.Impostor,
|
||||
// DoomTag
|
||||
CustomRoles.Tagger => RoleTypes.Impostor,
|
||||
// Standard
|
||||
CustomRoles.Sheriff => UsePets && Sheriff.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
|
||||
CustomRoles.Crusader => UsePets && Crusader.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
|
||||
|
||||
@@ -373,7 +373,7 @@ internal static class ExtendedPlayerControl
|
||||
RoleTypes newRoleType = state.MainRole.GetRoleTypes();
|
||||
CustomGameMode gameMode = Options.CurrentGameMode;
|
||||
|
||||
if (gameMode is CustomGameMode.SoloPVP or CustomGameMode.FFA or CustomGameMode.CaptureTheFlag or CustomGameMode.KingOfTheZones or CustomGameMode.BedWars or CustomGameMode.Snowdown or CustomGameMode.LoopWanted)
|
||||
if (gameMode is CustomGameMode.SoloPVP or CustomGameMode.FFA or CustomGameMode.CaptureTheFlag or CustomGameMode.KingOfTheZones or CustomGameMode.BedWars or CustomGameMode.Snowdown or CustomGameMode.DoomTag)
|
||||
hasValue |= sender.RpcSetRole(player, newRoleType, player.OwnerId);
|
||||
|
||||
player.ResetKillCooldown();
|
||||
@@ -1339,7 +1339,7 @@ internal static class ExtendedPlayerControl
|
||||
case CustomGameMode.BedWars:
|
||||
case CustomGameMode.Deathrace:
|
||||
case CustomGameMode.Snowdown:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1400,7 +1400,7 @@ internal static class ExtendedPlayerControl
|
||||
CustomGameMode.TheMindGame => false,
|
||||
CustomGameMode.Mingle => false,
|
||||
CustomGameMode.Snowdown => true,
|
||||
CustomGameMode.LoopWanted => false,
|
||||
CustomGameMode.DoomTag => false,
|
||||
CustomGameMode.Deathrace => Deathrace.CanUseVent(player, player.GetClosestVent().Id),
|
||||
|
||||
CustomGameMode.Standard when CopyCat.PlayerIdList.Contains(player.PlayerId) => true,
|
||||
@@ -1786,7 +1786,7 @@ internal static class ExtendedPlayerControl
|
||||
CustomRoles.BedWarsPlayer => 1f,
|
||||
CustomRoles.Racer => 3f,
|
||||
CustomRoles.SnowdownPlayer => 10f,
|
||||
CustomRoles.LoopHunter => LoopWanted.BaseKillCooldown.GetFloat(),
|
||||
CustomRoles.Tagger => DoomTag.BaseKillCooldown.GetFloat(),
|
||||
_ when player.Is(CustomRoles.Underdog) => Main.AllAlivePlayerControlsCount <= Underdog.UnderdogMaximumPlayersNeededToKill.GetInt() ? Underdog.UnderdogKillCooldownWithLessPlayersAlive.GetInt() : Underdog.UnderdogKillCooldownWithMorePlayersAlive.GetInt(),
|
||||
_ => Main.AllPlayerKillCooldown[player.PlayerId]
|
||||
};
|
||||
|
||||
@@ -199,8 +199,8 @@ public static class FixedUpdateCaller
|
||||
case CustomGameMode.Mingle:
|
||||
Mingle.FixedUpdatePatch.Postfix();
|
||||
goto default;
|
||||
case CustomGameMode.LoopWanted:
|
||||
LoopWanted.FixedUpdatePatch.Postfix();
|
||||
case CustomGameMode.DoomTag:
|
||||
DoomTag.FixedUpdatePatch.Postfix();
|
||||
goto default;
|
||||
default:
|
||||
if (Options.IntegrateNaturalDisasters.GetBool()) goto case CustomGameMode.NaturalDisasters;
|
||||
|
||||
@@ -391,9 +391,9 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
|
||||
Snowdown.ApplyGameOptions();
|
||||
goto case CustomGameMode.RoomRush;
|
||||
}
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
{
|
||||
LoopWanted.ApplyGameOptions(opt, player.PlayerId);
|
||||
DoomTag.ApplyGameOptions(opt, player.PlayerId);
|
||||
break;
|
||||
}
|
||||
case CustomGameMode.NaturalDisasters:
|
||||
|
||||
@@ -43,7 +43,7 @@ public static class NameColorManager
|
||||
color = FreeForAll.TeamColors.GetValueOrDefault(team, "#00ffff");
|
||||
return true;
|
||||
case CustomGameMode.Snowdown:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
case CustomGameMode.Mingle:
|
||||
case CustomGameMode.RoomRush:
|
||||
case CustomGameMode.NaturalDisasters:
|
||||
|
||||
@@ -35,7 +35,7 @@ public enum CustomGameMode
|
||||
Deathrace = 0x0F,
|
||||
Mingle = 0x10,
|
||||
Snowdown = 0x11,
|
||||
LoopWanted = 0x12,
|
||||
DoomTag = 0x12,
|
||||
All = int.MaxValue
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ public static class Options
|
||||
"Deathrace",
|
||||
"Mingle",
|
||||
"Snowdown",
|
||||
"LoopWanted"
|
||||
"DoomTag"
|
||||
];
|
||||
|
||||
private static Dictionary<CustomRoles, int> roleCounts;
|
||||
@@ -931,7 +931,7 @@ public static class Options
|
||||
14 => CustomGameMode.Deathrace,
|
||||
15 => CustomGameMode.Mingle,
|
||||
16 => CustomGameMode.Snowdown,
|
||||
17 => CustomGameMode.LoopWanted,
|
||||
17 => CustomGameMode.DoomTag,
|
||||
_ => CustomGameMode.Standard
|
||||
};
|
||||
|
||||
@@ -1862,8 +1862,8 @@ public static class Options
|
||||
Mingle.SetupCustomOption();
|
||||
// Snowdown
|
||||
Snowdown.SetupCustomOption();
|
||||
// LoopWanted
|
||||
LoopWanted.SetupCustomOption();
|
||||
// DoomTag
|
||||
DoomTag.SetupCustomOption();
|
||||
|
||||
yield return null;
|
||||
|
||||
|
||||
+3
-3
@@ -180,7 +180,7 @@ public enum CustomRPC
|
||||
TMGSync,
|
||||
BedWarsSync,
|
||||
DeathraceSync,
|
||||
LoopWantedSync
|
||||
DoomTagSync
|
||||
|
||||
// The total number of RPCs must not exceed 255
|
||||
// Because HandleRpc accepts Rpc in byte (max 255) system, and it will be impossible to use int
|
||||
@@ -1275,9 +1275,9 @@ internal static class RPCHandlerPatch
|
||||
|
||||
break;
|
||||
}
|
||||
case CustomRPC.LoopWantedSync:
|
||||
case CustomRPC.DoomTagSync:
|
||||
{
|
||||
LoopWanted.ReceiveRPC(reader);
|
||||
DoomTag.ReceiveRPC(reader);
|
||||
break;
|
||||
}
|
||||
case CustomRPC.InspectorCommand:
|
||||
|
||||
+9
-9
@@ -849,7 +849,7 @@ public static class Utils
|
||||
case CustomGameMode.Deathrace:
|
||||
case CustomGameMode.Mingle:
|
||||
case CustomGameMode.Snowdown:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
return false;
|
||||
case CustomGameMode.HideAndSeek:
|
||||
return CustomHnS.HasTasks(p);
|
||||
@@ -1517,7 +1517,7 @@ public static class Utils
|
||||
|
||||
break;
|
||||
case CustomGameMode.Snowdown:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
case CustomGameMode.Mingle:
|
||||
case CustomGameMode.Deathrace:
|
||||
case CustomGameMode.BedWars:
|
||||
@@ -2546,7 +2546,7 @@ public static class Utils
|
||||
CustomGameMode.Deathrace => CustomRoles.Racer.ColoredTextByRole($"{modeText}\r\n") + name,
|
||||
CustomGameMode.Mingle => CustomRoles.MinglePlayer.ColoredTextByRole($"{modeText}\r\n") + name,
|
||||
CustomGameMode.Snowdown => CustomRoles.SnowdownPlayer.ColoredTextByRole($"{modeText}\r\n") + name,
|
||||
CustomGameMode.LoopWanted => CustomRoles.LoopHunter.ColoredTextByRole($"{modeText}\r\n") + name,
|
||||
CustomGameMode.DoomTag => CustomRoles.Tagger.ColoredTextByRole($"{modeText}\r\n") + name,
|
||||
_ => name
|
||||
};
|
||||
}
|
||||
@@ -3045,8 +3045,8 @@ public static class Utils
|
||||
case CustomGameMode.Snowdown:
|
||||
AdditionalSuffixes.Add(Snowdown.GetSuffix(seer, seer));
|
||||
break;
|
||||
case CustomGameMode.LoopWanted:
|
||||
AdditionalSuffixes.Add(LoopWanted.GetSuffix(seer, seer));
|
||||
case CustomGameMode.DoomTag:
|
||||
AdditionalSuffixes.Add(DoomTag.GetSuffix(seer, seer));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3115,7 +3115,7 @@ public static class Utils
|
||||
SelfSuffix.Append($"\n\n<#ffffff>{GetString($"GameModeTutorial.{Options.CurrentGameMode}")}</color>\n");
|
||||
}
|
||||
|
||||
bool noRoleText = GameStates.IsLobby || Options.CurrentGameMode is CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.LoopWanted;
|
||||
bool noRoleText = GameStates.IsLobby || Options.CurrentGameMode is CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.DoomTag;
|
||||
|
||||
// Combine the seer's job title and SelfTaskText with the seer's player name and SelfMark
|
||||
string selfRoleName = noRoleText ? string.Empty : $"<size={fontSize}>{seer.GetDisplayRoleName()}{selfTaskText}</size>";
|
||||
@@ -3207,7 +3207,7 @@ public static class Utils
|
||||
CustomGameMode.Quiz => true,
|
||||
CustomGameMode.Deathrace => true,
|
||||
CustomGameMode.Mingle => true,
|
||||
CustomGameMode.LoopWanted => true,
|
||||
CustomGameMode.DoomTag => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
@@ -3315,7 +3315,7 @@ public static class Utils
|
||||
if (IsRevivingRoleAlive() && Main.DiedThisRound.Contains(seer.PlayerId))
|
||||
targetRoleText = string.Empty;
|
||||
|
||||
if (Options.CurrentGameMode is CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.LoopWanted)
|
||||
if (Options.CurrentGameMode is CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.DoomTag)
|
||||
targetRoleText = string.Empty;
|
||||
|
||||
if (!GameStates.IsLobby)
|
||||
@@ -3651,7 +3651,7 @@ public static class Utils
|
||||
case CustomGameMode.Deathrace:
|
||||
case CustomGameMode.Mingle:
|
||||
case CustomGameMode.Snowdown:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
return local.Is(CustomRoles.GM);
|
||||
|
||||
case CustomGameMode.Standard:
|
||||
|
||||
@@ -605,9 +605,9 @@ internal static class GameEndChecker
|
||||
Predicate = new SnowdownGameEndPredicate();
|
||||
}
|
||||
|
||||
public static void SetPredicateToLoopWanted()
|
||||
public static void SetPredicateToDoomTag()
|
||||
{
|
||||
Predicate = new LoopWantedGameEndPredicate();
|
||||
Predicate = new DoomTagGameEndPredicate();
|
||||
}
|
||||
|
||||
private class NormalGameEndPredicate : GameEndPredicate
|
||||
@@ -1386,7 +1386,7 @@ internal static class GameEndChecker
|
||||
}
|
||||
}
|
||||
|
||||
private class LoopWantedGameEndPredicate : GameEndPredicate
|
||||
private class DoomTagGameEndPredicate : GameEndPredicate
|
||||
{
|
||||
public override bool CheckForGameEnd(out GameOverReason reason)
|
||||
{
|
||||
@@ -1396,7 +1396,7 @@ internal static class GameEndChecker
|
||||
|
||||
private static bool CheckGameEndByLivingPlayers(out GameOverReason reason)
|
||||
{
|
||||
return LoopWanted.CheckForGameEnd(out reason);
|
||||
return DoomTag.CheckForGameEnd(out reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -332,7 +332,7 @@ internal static class HudManagerPatch
|
||||
CustomGameMode.NaturalDisasters when AmongUsClient.Instance.AmHost => NaturalDisasters.SuffixText,
|
||||
CustomGameMode.Deathrace => Deathrace.GetSuffix(player, player, true),
|
||||
CustomGameMode.Snowdown => Snowdown.GetHudText(),
|
||||
CustomGameMode.LoopWanted => LoopWanted.GetSuffix(player, player, true),
|
||||
CustomGameMode.DoomTag => DoomTag.GetSuffix(player, player, true),
|
||||
CustomGameMode.Standard => state.Role.GetSuffix(player, player, true, GameStates.IsMeeting) + GetAddonSuffixes(),
|
||||
_ => string.Empty
|
||||
};
|
||||
@@ -705,7 +705,7 @@ internal static class SetHudActivePatch
|
||||
case CustomGameMode.RoomRush:
|
||||
__instance.ImpostorVentButton?.ToggleVisible(false);
|
||||
goto case CustomGameMode.HideAndSeek;
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
case CustomGameMode.KingOfTheZones:
|
||||
__instance.ReportButton?.ToggleVisible(false);
|
||||
__instance.SabotageButton?.ToggleVisible(false);
|
||||
|
||||
@@ -310,11 +310,11 @@ internal static class SetUpRoleTextPatch
|
||||
__instance.RoleBlurbText.text = GetString("SnowdownPlayerInfo");
|
||||
break;
|
||||
}
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
{
|
||||
Color color = Utils.GetRoleColor(CustomRoles.LoopHunter);
|
||||
Color color = Utils.GetRoleColor(CustomRoles.Tagger);
|
||||
__instance.YouAreText.transform.gameObject.SetActive(false);
|
||||
__instance.RoleText.text = GetString("LoopHunter");
|
||||
__instance.RoleText.text = GetString("Tagger");
|
||||
__instance.RoleText.color = color;
|
||||
__instance.RoleBlurbText.color = color;
|
||||
__instance.RoleBlurbText.text = GetString("LoopHunterInfo");
|
||||
@@ -1027,10 +1027,10 @@ internal static class BeginCrewmatePatch
|
||||
__instance.ImpostorText.text = GetString("SnowdownPlayerInfo");
|
||||
break;
|
||||
}
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
{
|
||||
__instance.TeamTitle.text = GetString("LoopHunter");
|
||||
__instance.TeamTitle.color = __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.LoopHunter);
|
||||
__instance.TeamTitle.text = GetString("Tagger");
|
||||
__instance.TeamTitle.color = __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.Tagger);
|
||||
PlayerControl.LocalPlayer.Data.Role.IntroSound = GetIntroSound(RoleTypes.Impostor);
|
||||
__instance.ImpostorText.gameObject.SetActive(true);
|
||||
__instance.ImpostorText.text = GetString("LoopHunterInfo");
|
||||
@@ -1388,8 +1388,8 @@ internal static class IntroCutsceneDestroyPatch
|
||||
case CustomGameMode.Snowdown:
|
||||
Snowdown.GameStart();
|
||||
break;
|
||||
case CustomGameMode.LoopWanted:
|
||||
LoopWanted.OnGameStart();
|
||||
case CustomGameMode.DoomTag:
|
||||
DoomTag.OnGameStart();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -316,7 +316,7 @@ internal static class ChangeRoleSettings
|
||||
HotPotato.Init();
|
||||
CustomHnS.Init();
|
||||
Speedrun.Init();
|
||||
LoopWanted.Init();
|
||||
DoomTag.Init();
|
||||
}
|
||||
catch (Exception e) { Utils.ThrowException(e); }
|
||||
|
||||
@@ -952,8 +952,8 @@ internal static class StartGameHostPatch
|
||||
case CustomGameMode.Snowdown:
|
||||
Snowdown.Init();
|
||||
goto default;
|
||||
case CustomGameMode.LoopWanted:
|
||||
LoopWanted.OnGameStart();
|
||||
case CustomGameMode.DoomTag:
|
||||
DoomTag.OnGameStart();
|
||||
goto default;
|
||||
default:
|
||||
if (Options.IntegrateNaturalDisasters.GetBool()) goto case CustomGameMode.NaturalDisasters;
|
||||
@@ -1027,8 +1027,8 @@ internal static class StartGameHostPatch
|
||||
case CustomGameMode.Snowdown:
|
||||
GameEndChecker.SetPredicateToSnowdown();
|
||||
break;
|
||||
case CustomGameMode.LoopWanted:
|
||||
GameEndChecker.SetPredicateToLoopWanted();
|
||||
case CustomGameMode.DoomTag:
|
||||
GameEndChecker.SetPredicateToDoomTag();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ internal static class EndGamePatch
|
||||
long secondsIn = new DateTimeOffset(date.ToUniversalTime()).ToUnixTimeSeconds() - IntroCutsceneDestroyPatch.IntroDestroyTS;
|
||||
byte killerId = value.GetRealKiller();
|
||||
bool gmIsFm = Options.CurrentGameMode is CustomGameMode.FFA or CustomGameMode.StopAndGo;
|
||||
bool gmIsFmhh = gmIsFm || Options.CurrentGameMode is CustomGameMode.HotPotato or CustomGameMode.HideAndSeek or CustomGameMode.Speedrun or CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.LoopWanted;
|
||||
bool gmIsFmhh = gmIsFm || Options.CurrentGameMode is CustomGameMode.HotPotato or CustomGameMode.HideAndSeek or CustomGameMode.Speedrun or CustomGameMode.CaptureTheFlag or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.KingOfTheZones or CustomGameMode.Quiz or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle or CustomGameMode.Snowdown or CustomGameMode.DoomTag;
|
||||
sb.Append($"\n{secondsIn / 60:00}:{secondsIn % 60:00} {Main.AllPlayerNames[key]} ({(gmIsFmhh ? string.Empty : Utils.GetDisplayRoleName(key, pure: true))}{(gmIsFm ? string.Empty : Utils.GetSubRolesText(key, summary: true))}) [{Utils.GetVitalText(key)}]");
|
||||
if (killerId != byte.MaxValue && killerId != key) sb.Append($"\n\t⇐ {Main.AllPlayerNames[killerId]} ({(gmIsFmhh ? string.Empty : Utils.GetDisplayRoleName(killerId, pure: true))}{(gmIsFm ? string.Empty : Utils.GetSubRolesText(killerId, summary: true))})");
|
||||
}
|
||||
@@ -601,7 +601,7 @@ internal static class SetEverythingUpPatch
|
||||
case CustomGameMode.Deathrace:
|
||||
case CustomGameMode.BedWars:
|
||||
case CustomGameMode.Quiz:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
{
|
||||
foreach (byte id in cloneRoles.Where(EndGamePatch.SummaryText.ContainsKey))
|
||||
sb.Append('\n').Append(EndGamePatch.SummaryText[id]);
|
||||
|
||||
@@ -258,8 +258,8 @@ internal static class CheckMurderPatch
|
||||
case CustomGameMode.Snowdown:
|
||||
Snowdown.OnCheckMurder(killer, target);
|
||||
return false;
|
||||
case CustomGameMode.LoopWanted:
|
||||
LoopWanted.OnCheckMurder(killer, target);
|
||||
case CustomGameMode.DoomTag:
|
||||
DoomTag.OnCheckMurder(killer, target);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2311,7 +2311,7 @@ internal static class EnterVentPatch
|
||||
case CustomGameMode.TheMindGame:
|
||||
case CustomGameMode.Quiz:
|
||||
case CustomGameMode.SoloPVP when !SoloPVP.CanVent:
|
||||
case CustomGameMode.LoopWanted:
|
||||
case CustomGameMode.DoomTag:
|
||||
pc.MyPhysics?.RpcBootFromVent(__instance.Id);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ internal static class CloseDoorsPatch
|
||||
{
|
||||
public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] SystemTypes room)
|
||||
{
|
||||
bool allow = !AntiBlackout.SkipTasks && Options.CurrentGameMode is not CustomGameMode.SoloPVP and not CustomGameMode.FFA and not CustomGameMode.StopAndGo and not CustomGameMode.HotPotato and not CustomGameMode.Speedrun and not CustomGameMode.CaptureTheFlag and not CustomGameMode.NaturalDisasters and not CustomGameMode.RoomRush and not CustomGameMode.KingOfTheZones and not CustomGameMode.Quiz and not CustomGameMode.TheMindGame and not CustomGameMode.BedWars and not CustomGameMode.Deathrace and not CustomGameMode.Mingle and not CustomGameMode.Snowdown and not CustomGameMode.LoopWanted;
|
||||
bool allow = !AntiBlackout.SkipTasks && Options.CurrentGameMode is not CustomGameMode.SoloPVP and not CustomGameMode.FFA and not CustomGameMode.StopAndGo and not CustomGameMode.HotPotato and not CustomGameMode.Speedrun and not CustomGameMode.CaptureTheFlag and not CustomGameMode.NaturalDisasters and not CustomGameMode.RoomRush and not CustomGameMode.KingOfTheZones and not CustomGameMode.Quiz and not CustomGameMode.TheMindGame and not CustomGameMode.BedWars and not CustomGameMode.Deathrace and not CustomGameMode.Mingle and not CustomGameMode.Snowdown and not CustomGameMode.DoomTag;
|
||||
|
||||
if (Doorjammer.JammedRooms.Contains(room)) allow = false;
|
||||
if (SecurityGuard.BlockSabo.Count > 0) allow = false;
|
||||
|
||||
+21
-21
@@ -4090,9 +4090,9 @@
|
||||
"SnowdownPlayer": "SNOWDOWN",
|
||||
"SnowdownPlayerInfo": "THROW SNOWBALLS AT PLAYERS",
|
||||
"SnowdownPlayerInfoLong": "THROW SNOWBALLS AT PLAYERS",
|
||||
"LoopHunter": "LOOP HUNTER",
|
||||
"LoopHunterInfo": "KILL YOUR ASSIGNED TARGET AND SURVIVE",
|
||||
"LoopHunterInfoLong": "KILL YOUR ASSIGNED TARGET AND SURVIVE",
|
||||
"Tagger": "TAGGER",
|
||||
"TaggerInfo": "KILL YOUR ASSIGNED TARGET AND SURVIVE",
|
||||
"TaggerInfoLong": "KILL YOUR ASSIGNED TARGET AND SURVIVE",
|
||||
"TMGPlayer": "THE MIND GAME",
|
||||
"TMGPlayerInfo": "THINK WITH OTHERS' BRAINS TO WIN",
|
||||
"TMGPlayerInfoLong": "THINK WITH OTHERS' BRAINS TO WIN",
|
||||
@@ -8164,24 +8164,24 @@
|
||||
"Snowdown.SnowballThrowSpeedOption": "Snowball Throwing Speed",
|
||||
"SnowdownButtonText": "THROW",
|
||||
|
||||
"LoopWanted": "LOOP WANTED",
|
||||
"ModeLoopWanted": "Gamemode: Loop Wanted",
|
||||
"ModeDescribe.LoopWanted": "In the Loop Wanted gamemode, every player has an assigned assassination target marked with an arrow. You can ONLY kill your designated target. Killing the wrong target results in a punishment (suicide / lower vision). When you kill your target, you inherit their target. When only a few players remain, Carnival Mode activates: everyone gets a speed boost and reduced kill cooldown. Last player alive wins!",
|
||||
"GameModeTutorial.LoopWanted": "<size=90%>The current game mode is <#D9BAA5>Loop Wanted</color>.</size>\\n<size=80%>Each player has a target marked with an arrow.\\nYou can ONLY kill your target.\\nKilling the wrong target will punish you.\\nYour target transfers when you kill correctly.\\nCarnival mode activates when few remain!</size>",
|
||||
"LoopWanted.BaseKillCooldown": "Base Kill Cooldown",
|
||||
"LoopWanted.PunishmentMode": "Wrong Kill Punishment",
|
||||
"LoopWanted.PunishSuicide": "Suicide",
|
||||
"LoopWanted.PunishLowerVision": "Lower Vision",
|
||||
"LoopWanted.LowerVisionMultiplier": "Lowered Vision Multiplier",
|
||||
"LoopWanted.CarnivalPlayerCount": "Players to Trigger Carnival Mode",
|
||||
"LoopWanted.CarnivalKillCooldown": "Carnival Mode Kill Cooldown",
|
||||
"LoopWanted.CarnivalSpeedMultiplier": "Carnival Mode Speed Multiplier",
|
||||
"LoopWanted.ShowTargetArrow": "Show Target Arrow",
|
||||
"LoopWanted.CurrentTarget": "Current Target",
|
||||
"LoopWanted.CarnivalModeActivated": "<color=#ff6600>Carnival Mode! Speed up and kill faster!</color>",
|
||||
"LoopWanted.CarnivalModeHUD": "CARNIVAL",
|
||||
"LoopWanted.WrongKillSuicide": "<color=#ff0000>Wrong target! You committed suicide.</color>",
|
||||
"LoopWanted.WrongKillLowerVision": "<color=#ff0000>Wrong target! Your vision has been reduced.</color>",
|
||||
"DoomTag": "DOOM TAG",
|
||||
"ModeDoomTag": "Gamemode: Doom Tag",
|
||||
"ModeDescribe.DoomTag": "In the Doom Tag gamemode, every player has an assigned assassination target marked with an arrow. You can ONLY kill your designated target. Killing the wrong target results in a punishment (suicide / lower vision). When you kill your target, you inherit their target. When only a few players remain, Carnival Mode activates: everyone gets a speed boost and reduced kill cooldown. Last player alive wins!",
|
||||
"GameModeTutorial.DoomTag": "<size=90%>The current game mode is <#D9BAA5>Doom Tag</color>.</size>\\n<size=80%>Each player has a target marked with an arrow.\\nYou can ONLY kill your target.\\nKilling the wrong target will punish you.\\nYour target transfers when you kill correctly.\\nCarnival mode activates when few remain!</size>",
|
||||
"DoomTag.BaseKillCooldown": "Base Kill Cooldown",
|
||||
"DoomTag.PunishmentMode": "Wrong Kill Punishment",
|
||||
"DoomTag.PunishSuicide": "Suicide",
|
||||
"DoomTag.PunishLowerVision": "Lower Vision",
|
||||
"DoomTag.LowerVisionMultiplier": "Lowered Vision Multiplier",
|
||||
"DoomTag.CarnivalPlayerCount": "Players to Trigger Carnival Mode",
|
||||
"DoomTag.CarnivalKillCooldown": "Carnival Mode Kill Cooldown",
|
||||
"DoomTag.CarnivalSpeedMultiplier": "Carnival Mode Speed Multiplier",
|
||||
"DoomTag.ShowTargetArrow": "Show Target Arrow",
|
||||
"DoomTag.CurrentTarget": "Current Target",
|
||||
"DoomTag.CarnivalModeActivated": "<color=#ff6600>Carnival Mode! Speed up and kill faster!</color>",
|
||||
"DoomTag.CarnivalModeHUD": "CARNIVAL",
|
||||
"DoomTag.WrongKillSuicide": "<color=#ff0000>Wrong target! You committed suicide.</color>",
|
||||
"DoomTag.WrongKillLowerVision": "<color=#ff0000>Wrong target! Your vision has been reduced.</color>",
|
||||
|
||||
"SoloPVP": "SOLO PVP",
|
||||
"ModeSoloPVP": "Gamemode: Solo PVP",
|
||||
|
||||
+19
-19
@@ -4089,7 +4089,7 @@
|
||||
"SnowdownPlayer": "大雪纷飞",
|
||||
"SnowdownPlayerInfo": "吃我一记雪球",
|
||||
"SnowdownPlayerInfoLong": "吃我一记雪球",
|
||||
"LoopHunter": "循环追猎者",
|
||||
"Tagger": "循环追猎者",
|
||||
"LoopHunterInfo": "追杀你的指定目标并活到最后",
|
||||
"LoopHunterInfoLong": "追杀你的指定目标并活到最后",
|
||||
"TMGPlayer": "心理游戏",
|
||||
@@ -8163,24 +8163,24 @@
|
||||
"Snowdown.SnowballThrowSpeedOption": "丢雪球的速度",
|
||||
"SnowdownButtonText": "丢",
|
||||
|
||||
"LoopWanted": "循环追捕令",
|
||||
"ModeLoopWanted": "游戏模式:循环追捕令",
|
||||
"ModeDescribe.LoopWanted": "在循环追捕令游戏模式中,每个玩家都有一个带有箭头的追杀目标。你只能击杀你被指定的目标。击杀错误目标会受到惩罚(自杀 / 冷却增加 / 视野降低)。当你击杀目标后,目标的追杀对象将转移到你身上。当剩余人数足够少时,将进入狂欢状态——全员加速且击杀冷却减少。活到最后的人获胜!",
|
||||
"GameModeTutorial.LoopWanted": "<size=90%>当前游戏模式为:<#ffb432>循环追捕令</color>。</size>\\n<size=80%>每个玩家都有一个带箭头的追杀目标。\\n你只能击杀你所指定目标!\\n击杀错误目标会受到惩罚。\\n击杀正确目标后目标转移。\\n剩余人数过少时将进入狂欢状态!</size>",
|
||||
"LoopWanted.BaseKillCooldown": "基础击杀冷却",
|
||||
"LoopWanted.PunishmentMode": "击杀错误后的惩罚",
|
||||
"LoopWanted.PunishSuicide": "自杀",
|
||||
"LoopWanted.PunishLowerVision": "视野降低",
|
||||
"LoopWanted.LowerVisionMultiplier": "降低视野倍率",
|
||||
"LoopWanted.CarnivalPlayerCount": "进入狂欢模式的人数",
|
||||
"LoopWanted.CarnivalKillCooldown": "狂欢状态击杀冷却",
|
||||
"LoopWanted.CarnivalSpeedMultiplier": "狂欢状态下加速倍率",
|
||||
"LoopWanted.ShowTargetArrow": "显示目标箭头",
|
||||
"LoopWanted.CurrentTarget": "当前目标",
|
||||
"LoopWanted.CarnivalModeActivated": "<color=#ff6600>进入狂欢状态!全速前进,击杀加速!</color>",
|
||||
"LoopWanted.CarnivalModeHUD": "狂欢中",
|
||||
"LoopWanted.WrongKillSuicide": "<color=#ff0000>目标是错误的!你自杀了。</color>",
|
||||
"LoopWanted.WrongKillLowerVision": "<color=#ff0000>目标是错误的!你的视野降低了。</color>",
|
||||
"DoomTag": "循环追捕令",
|
||||
"ModeDoomTag": "游戏模式:循环追捕令",
|
||||
"ModeDescribe.DoomTag": "在循环追捕令游戏模式中,每个玩家都有一个带有箭头的追杀目标。你只能击杀你被指定的目标。击杀错误目标会受到惩罚(自杀 / 冷却增加 / 视野降低)。当你击杀目标后,目标的追杀对象将转移到你身上。当剩余人数足够少时,将进入狂欢状态——全员加速且击杀冷却减少。活到最后的人获胜!",
|
||||
"GameModeTutorial.DoomTag": "<size=90%>当前游戏模式为:<#ffb432>循环追捕令</color>。</size>\\n<size=80%>每个玩家都有一个带箭头的追杀目标。\\n你只能击杀你所指定目标!\\n击杀错误目标会受到惩罚。\\n击杀正确目标后目标转移。\\n剩余人数过少时将进入狂欢状态!</size>",
|
||||
"DoomTag.BaseKillCooldown": "基础击杀冷却",
|
||||
"DoomTag.PunishmentMode": "击杀错误后的惩罚",
|
||||
"DoomTag.PunishSuicide": "自杀",
|
||||
"DoomTag.PunishLowerVision": "视野降低",
|
||||
"DoomTag.LowerVisionMultiplier": "降低视野倍率",
|
||||
"DoomTag.CarnivalPlayerCount": "进入狂欢模式的人数",
|
||||
"DoomTag.CarnivalKillCooldown": "狂欢状态击杀冷却",
|
||||
"DoomTag.CarnivalSpeedMultiplier": "狂欢状态下加速倍率",
|
||||
"DoomTag.ShowTargetArrow": "显示目标箭头",
|
||||
"DoomTag.CurrentTarget": "当前目标",
|
||||
"DoomTag.CarnivalModeActivated": "<color=#ff6600>进入狂欢状态!全速前进,击杀加速!</color>",
|
||||
"DoomTag.CarnivalModeHUD": "狂欢中",
|
||||
"DoomTag.WrongKillSuicide": "<color=#ff0000>目标是错误的!你自杀了。</color>",
|
||||
"DoomTag.WrongKillLowerVision": "<color=#ff0000>目标是错误的!你的视野降低了。</color>",
|
||||
|
||||
"SoloPVP": "角逐竞技",
|
||||
"ModeSoloPVP": "游戏模式:角逐竞技",
|
||||
|
||||
Reference in new issue
Block a user