Delete Retributionist

This commit is contained in:
Gurge44 committed 2023-12-23 17:58:20 +01:00
1 parent a902cdf29f
commit caa4a10dc6
12 files changed
+211 -213

No files matched your search

-4
View File
@@ -13,7 +13,6 @@ internal class CustomRoleSelector
public static void SelectCustomRoles()
{
// 开始职业抽取
RoleResult = [];
var rd = IRandom.Instance;
int playerCount = Main.AllAlivePlayerControls.Length;
@@ -38,7 +37,6 @@ internal class CustomRoleSelector
int readyRoleNum = 0;
int readyNonNeutralKillingNum = 0;
int readyNeutralKillingNum = 0;
// int readyCovenNum = 0;
List<CustomRoles> rolesToAssign = [];
List<CustomRoles> roleList = [];
@@ -49,11 +47,9 @@ internal class CustomRoleSelector
List<CustomRoles> NonNeutralKillingOnList = [];
List<CustomRoles> NonNeutralKillingRateList = [];
// List<CustomRoles> CovenOnList = new();
List<CustomRoles> NeutralKillingOnList = [];
List<CustomRoles> NeutralKillingRateList = [];
// List<CustomRoles> CovenRateList = new();
List<CustomRoles> roleRateList = [];
+3 -3
View File
@@ -176,7 +176,7 @@ internal static class CustomRolesHelper
CustomRoles.Tracker => CustomRoles.Crewmate,
CustomRoles.Merchant => CustomRoles.Crewmate,
CustomRoles.Lookout => CustomRoles.Crewmate,
CustomRoles.Retributionist => CustomRoles.Crewmate,
//CustomRoles.Retributionist => CustomRoles.Crewmate,
CustomRoles.Guardian => CustomRoles.Crewmate,
CustomRoles.Enigma => CustomRoles.Crewmate,
CustomRoles.Addict => CustomRoles.Engineer,
@@ -270,7 +270,7 @@ internal static class CustomRolesHelper
CustomRoles.Snitch => CustomRoles.CrewmateTOHE,
CustomRoles.Marshall => CustomRoles.CrewmateTOHE,
CustomRoles.SabotageMaster => CustomRoles.EngineerTOHE,
CustomRoles.Retributionist => CustomRoles.Crewmate,
//CustomRoles.Retributionist => CustomRoles.Crewmate,
CustomRoles.Witness => CustomRoles.CrewmateTOHE,
CustomRoles.Guardian => CustomRoles.CrewmateTOHE,
CustomRoles.Addict => CustomRoles.EngineerTOHE,
@@ -751,7 +751,7 @@ internal static class CustomRolesHelper
CustomRoles.Crusader or
CustomRoles.NiceGuesser or
//CustomRoles.Counterfeiter or
CustomRoles.Retributionist or
//CustomRoles.Retributionist or
CustomRoles.Sheriff or
CustomRoles.Jailor;
}
+12 -12
View File
@@ -1789,17 +1789,17 @@ public static class Options
RoleLoadingText = "Crewmate roles\nVigilante";
SwordsMan.SetupCustomOption();
//Reverie.SetupCustomOption();
RoleLoadingText = "Crewmate roles\nRetributionist";
SetupRoleOptions(8700, TabGroup.CrewmateRoles, CustomRoles.Retributionist);
RetributionistCanKillNum = IntegerOptionItem.Create(8710, "RetributionistCanKillNum", new(0, 15, 1), 1, TabGroup.CrewmateRoles, false)
.SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist])
.SetValueFormat(OptionFormat.Players);
MinimumPlayersAliveToRetri = IntegerOptionItem.Create(8718, "MinimumPlayersAliveToRetri", new(0, 15, 1), 5, TabGroup.CrewmateRoles, false)
.SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist])
.SetValueFormat(OptionFormat.Players);
CanOnlyRetributeWithTasksDone = BooleanOptionItem.Create(8715, "CanOnlyRetributeWithTasksDone", true, TabGroup.CrewmateRoles, false)
.SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist]);
RetributionistTasks = OverrideTasksData.Create(8720, TabGroup.CrewmateRoles, CustomRoles.Retributionist);
//RoleLoadingText = "Crewmate roles\nRetributionist";
//SetupRoleOptions(8700, TabGroup.CrewmateRoles, CustomRoles.Retributionist);
//RetributionistCanKillNum = IntegerOptionItem.Create(8710, "RetributionistCanKillNum", new(0, 15, 1), 1, TabGroup.CrewmateRoles, false)
// .SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist])
// .SetValueFormat(OptionFormat.Players);
//MinimumPlayersAliveToRetri = IntegerOptionItem.Create(8718, "MinimumPlayersAliveToRetri", new(0, 15, 1), 5, TabGroup.CrewmateRoles, false)
// .SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist])
// .SetValueFormat(OptionFormat.Players);
//CanOnlyRetributeWithTasksDone = BooleanOptionItem.Create(8715, "CanOnlyRetributeWithTasksDone", true, TabGroup.CrewmateRoles, false)
// .SetParent(CustomRoleSpawnChances[CustomRoles.Retributionist]);
//RetributionistTasks = OverrideTasksData.Create(8720, TabGroup.CrewmateRoles, CustomRoles.Retributionist);
LoadingPercentage = 25;
RoleLoadingText = "Crewmate roles\nSheriff";
@@ -3640,7 +3640,7 @@ public static class Options
.SetHeader(true)
.SetGameMode(customGameMode) as StringOptionItem;
var countOption = IntegerOptionItem.Create(id + 1, "Maximum", new(1, 15, 1), 1, tab, false)
.SetParent(spawnOption)
.SetParent(spawnOption)
.SetValueFormat(OptionFormat.Players)
.SetGameMode(customGameMode);
+167 -167
View File
@@ -1,188 +1,188 @@
using HarmonyLib;
using Hazel;
using System;
using System.Linq;
using TOHE.Modules;
using UnityEngine;
using static TOHE.Translator;
//using HarmonyLib;
//using Hazel;
//using System;
//using System.Linq;
//using TOHE.Modules;
//using UnityEngine;
//using static TOHE.Translator;
namespace TOHE;
//namespace TOHE;
public static class RetributionistRevengeManager
{
public static bool RetributionistMsgCheck(PlayerControl pc, string msg, bool isUI = false)
{
if (!AmongUsClient.Instance.AmHost) return false;
if (!GameStates.IsInGame || pc == null) return false;
if (!pc.Is(CustomRoles.Retributionist)) return false;
msg = msg.Trim().ToLower();
if (msg.Length < 4 || msg[..4] != "/ret") return false;
if (Options.RetributionistCanKillNum.GetInt() < 1)
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillDisable"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillDisable"));
return true;
}
int playerCount = Main.AllAlivePlayerControls.Length;
{
if (playerCount <= Options.MinimumPlayersAliveToRetri.GetInt())
{
if (pc.Data.IsDead)
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillTooManyDead"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillTooManyDead"));
return true;
}
}
//public static class RetributionistRevengeManager
//{
// public static bool RetributionistMsgCheck(PlayerControl pc, string msg, bool isUI = false)
// {
// if (!AmongUsClient.Instance.AmHost) return false;
// if (!GameStates.IsInGame || pc == null) return false;
// //if (!pc.Is(CustomRoles.Retributionist)) return false;
// msg = msg.Trim().ToLower();
// if (msg.Length < 4 || msg[..4] != "/ret") return false;
// if (Options.RetributionistCanKillNum.GetInt() < 1)
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillDisable"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillDisable"));
// return true;
// }
// int playerCount = Main.AllAlivePlayerControls.Length;
// {
// if (playerCount <= Options.MinimumPlayersAliveToRetri.GetInt())
// {
// if (pc.Data.IsDead)
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillTooManyDead"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillTooManyDead"));
// return true;
// }
// }
}
if (Options.CanOnlyRetributeWithTasksDone.GetBool())
{
if (!pc.GetPlayerTaskState().IsTaskFinished && pc.Data.IsDead)
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillDisable"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillDisable"));
return true;
}
}
if (!pc.Data.IsDead)
{
Utils.SendMessage(GetString("RetributionistAliveKill"), pc.PlayerId);
return true;
}
// }
// if (Options.CanOnlyRetributeWithTasksDone.GetBool())
// {
// if (!pc.GetPlayerTaskState().IsTaskFinished && pc.Data.IsDead)
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillDisable"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillDisable"));
// return true;
// }
// }
// if (!pc.Data.IsDead)
// {
// Utils.SendMessage(GetString("RetributionistAliveKill"), pc.PlayerId);
// return true;
// }
if (msg == "/ret")
{
string text = GetString("PlayerIdList");
foreach (PlayerControl npc in Main.AllAlivePlayerControls)
{
text += "\n" + npc.PlayerId.ToString() + " → (" + npc.GetDisplayRoleName() + ") " + npc.GetRealName();
}
// if (msg == "/ret")
// {
// string text = GetString("PlayerIdList");
// foreach (PlayerControl npc in Main.AllAlivePlayerControls)
// {
// text += "\n" + npc.PlayerId.ToString() + " → (" + npc.GetDisplayRoleName() + ") " + npc.GetRealName();
// }
Utils.SendMessage(text, pc.PlayerId);
return true;
}
// Utils.SendMessage(text, pc.PlayerId);
// return true;
// }
if (Main.RetributionistRevenged.ContainsKey(pc.PlayerId))
{
if (Main.RetributionistRevenged[pc.PlayerId] >= Options.RetributionistCanKillNum.GetInt())
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillMax"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillMax"));
return true;
}
}
else
{
Main.RetributionistRevenged.Add(pc.PlayerId, 0);
}
// if (Main.RetributionistRevenged.ContainsKey(pc.PlayerId))
// {
// if (Main.RetributionistRevenged[pc.PlayerId] >= Options.RetributionistCanKillNum.GetInt())
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillMax"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillMax"));
// return true;
// }
// }
// else
// {
// Main.RetributionistRevenged.Add(pc.PlayerId, 0);
// }
int targetId;
PlayerControl target;
try
{
targetId = int.Parse(msg.Replace("/ret", string.Empty));
target = Utils.GetPlayerById(targetId);
}
catch
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillDead"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillDead"));
return true;
}
// int targetId;
// PlayerControl target;
// try
// {
// targetId = int.Parse(msg.Replace("/ret", string.Empty));
// target = Utils.GetPlayerById(targetId);
// }
// catch
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillDead"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillDead"));
// return true;
// }
if (target == null || target.Data.IsDead)
{
if (!isUI) Utils.SendMessage(GetString("RetributionistKillDead"), pc.PlayerId);
else pc.ShowPopUp(GetString("RetributionistKillDead"));
return true;
}
if (target.Is(CustomRoles.Pestilence))
{
if (!isUI) Utils.SendMessage(GetString("PestilenceImmune"), pc.PlayerId);
else pc.ShowPopUp(GetString("PestilenceImmune"));
return true;
}
// if (target == null || target.Data.IsDead)
// {
// if (!isUI) Utils.SendMessage(GetString("RetributionistKillDead"), pc.PlayerId);
// else pc.ShowPopUp(GetString("RetributionistKillDead"));
// return true;
// }
// if (target.Is(CustomRoles.Pestilence))
// {
// if (!isUI) Utils.SendMessage(GetString("PestilenceImmune"), pc.PlayerId);
// else pc.ShowPopUp(GetString("PestilenceImmune"));
// return true;
// }
Logger.Info($"{pc.GetNameWithRole().RemoveHtmlTags()} 复仇了 {target.GetNameWithRole().RemoveHtmlTags()}", "Retributionist");
// Logger.Info($"{pc.GetNameWithRole().RemoveHtmlTags()} 复仇了 {target.GetNameWithRole().RemoveHtmlTags()}", "Retributionist");
string Name = target.GetRealName();
// string Name = target.GetRealName();
Main.RetributionistRevenged[pc.PlayerId]++;
// Main.RetributionistRevenged[pc.PlayerId]++;
CustomSoundsManager.RPCPlayCustomSoundAll("AWP");
// CustomSoundsManager.RPCPlayCustomSoundAll("AWP");
_ = new LateTask(() =>
{
Main.PlayerStates[target.PlayerId].deathReason = PlayerState.DeathReason.Revenge;
target.SetRealKiller(pc);
// _ = new LateTask(() =>
// {
// Main.PlayerStates[target.PlayerId].deathReason = PlayerState.DeathReason.Revenge;
// target.SetRealKiller(pc);
if (GameStates.IsMeeting)
{
GuessManager.RpcGuesserMurderPlayer(target);
// if (GameStates.IsMeeting)
// {
// GuessManager.RpcGuesserMurderPlayer(target);
//死者检查
Utils.AfterPlayerDeathTasks(target, true);
// //死者检查
// Utils.AfterPlayerDeathTasks(target, true);
Utils.NotifyRoles(isForMeeting: GameStates.IsMeeting, NoCache: true);
}
else
{
target.Kill(target);
Main.PlayerStates[target.PlayerId].SetDead();
}
// Utils.NotifyRoles(isForMeeting: GameStates.IsMeeting, NoCache: true);
// }
// else
// {
// target.Kill(target);
// Main.PlayerStates[target.PlayerId].SetDead();
// }
_ = new LateTask(() => { Utils.SendMessage(string.Format(GetString("RetributionistKillSucceed"), Name), 255, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Retributionist), GetString("RetributionistRevengeTitle"))); }, 0.6f, "Retributionist Kill");
// _ = new LateTask(() => { Utils.SendMessage(string.Format(GetString("RetributionistKillSucceed"), Name), 255, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Retributionist), GetString("RetributionistRevengeTitle"))); }, 0.6f, "Retributionist Kill");
}, 0.2f, "Retributionist Kill");
return true;
}
// }, 0.2f, "Retributionist Kill");
// return true;
// }
private static void SendRPC(byte playerId)
{
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.RetributionistRevenge, SendOption.Reliable, -1);
writer.Write(playerId);
AmongUsClient.Instance.FinishRpcImmediately(writer);
}
public static void ReceiveRPC(MessageReader reader, PlayerControl pc)
{
int PlayerId = reader.ReadByte();
RetributionistMsgCheck(pc, $"/ret {PlayerId}", true);
}
// private static void SendRPC(byte playerId)
// {
// MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.RetributionistRevenge, SendOption.Reliable, -1);
// writer.Write(playerId);
// AmongUsClient.Instance.FinishRpcImmediately(writer);
// }
// public static void ReceiveRPC(MessageReader reader, PlayerControl pc)
// {
// int PlayerId = reader.ReadByte();
// RetributionistMsgCheck(pc, $"/ret {PlayerId}", true);
// }
private static void RetributionistOnClick(byte playerId, MeetingHud __instance)
{
Logger.Msg($"Click: ID {playerId}", "Retributionist UI");
var pc = Utils.GetPlayerById(playerId);
if (pc == null || !pc.IsAlive() || !GameStates.IsVoting) return;
if (AmongUsClient.Instance.AmHost) RetributionistMsgCheck(PlayerControl.LocalPlayer, $"/ret {playerId}", true);
else SendRPC(playerId);
}
// private static void RetributionistOnClick(byte playerId, MeetingHud __instance)
// {
// Logger.Msg($"Click: ID {playerId}", "Retributionist UI");
// var pc = Utils.GetPlayerById(playerId);
// if (pc == null || !pc.IsAlive() || !GameStates.IsVoting) return;
// if (AmongUsClient.Instance.AmHost) RetributionistMsgCheck(PlayerControl.LocalPlayer, $"/ret {playerId}", true);
// else SendRPC(playerId);
// }
[HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.Start))]
class StartMeetingPatch
{
public static void Postfix(MeetingHud __instance)
{
if (PlayerControl.LocalPlayer.Is(CustomRoles.Retributionist) && !PlayerControl.LocalPlayer.IsAlive())
CreateJudgeButton(__instance);
}
}
public static void CreateJudgeButton(MeetingHud __instance)
{
foreach (PlayerVoteArea pva in __instance.playerStates.ToArray())
{
var pc = Utils.GetPlayerById(pva.TargetPlayerId);
if (pc == null || !pc.IsAlive()) continue;
GameObject template = pva.Buttons.transform.Find("CancelButton").gameObject;
GameObject targetBox = UnityEngine.Object.Instantiate(template, pva.transform);
targetBox.name = "ShootButton";
targetBox.transform.localPosition = new Vector3(-0.95f, 0.03f, -1.31f);
SpriteRenderer renderer = targetBox.GetComponent<SpriteRenderer>();
renderer.sprite = CustomButton.Get("TargetIcon");
PassiveButton button = targetBox.GetComponent<PassiveButton>();
button.OnClick.RemoveAllListeners();
button.OnClick.AddListener((Action)(() => RetributionistOnClick(pva.TargetPlayerId, __instance)));
}
}
}
// [HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.Start))]
// class StartMeetingPatch
// {
// public static void Postfix(MeetingHud __instance)
// {
// if (PlayerControl.LocalPlayer.Is(CustomRoles.Retributionist) && !PlayerControl.LocalPlayer.IsAlive())
// CreateJudgeButton(__instance);
// }
// }
// public static void CreateJudgeButton(MeetingHud __instance)
// {
// foreach (PlayerVoteArea pva in __instance.playerStates.ToArray())
// {
// var pc = Utils.GetPlayerById(pva.TargetPlayerId);
// if (pc == null || !pc.IsAlive()) continue;
// GameObject template = pva.Buttons.transform.Find("CancelButton").gameObject;
// GameObject targetBox = UnityEngine.Object.Instantiate(template, pva.transform);
// targetBox.name = "ShootButton";
// targetBox.transform.localPosition = new Vector3(-0.95f, 0.03f, -1.31f);
// SpriteRenderer renderer = targetBox.GetComponent<SpriteRenderer>();
// renderer.sprite = CustomButton.Get("TargetIcon");
// PassiveButton button = targetBox.GetComponent<PassiveButton>();
// button.OnClick.RemoveAllListeners();
// button.OnClick.AddListener((Action)(() => RetributionistOnClick(pva.TargetPlayerId, __instance)));
// }
// }
//}
+4 -4
View File
@@ -638,7 +638,7 @@ public static class Utils
(pc.Is(CustomRoles.Judge) && !Options.JudgeCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Marshall) && !Options.MarshallCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Farseer) && !Options.FarseerCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Retributionist) && !Options.RetributionistCanBeMadmate.GetBool()) ||
//(pc.Is(CustomRoles.Retributionist) && !Options.RetributionistCanBeMadmate.GetBool()) ||
pc.Is(CustomRoles.Needy) ||
pc.Is(CustomRoles.Lazy) ||
pc.Is(CustomRoles.Loyal) ||
@@ -2355,9 +2355,9 @@ public static class Utils
case CustomRoles.Mafia when !seer.IsAlive() && target.IsAlive():
TargetPlayerName = ColorString(GetRoleColor(CustomRoles.Mafia), target.PlayerId.ToString()) + ' ' + TargetPlayerName;
break;
case CustomRoles.Retributionist when !seer.IsAlive() && target.IsAlive():
TargetPlayerName = ColorString(GetRoleColor(CustomRoles.Retributionist), target.PlayerId.ToString()) + ' ' + TargetPlayerName;
break;
//case CustomRoles.Retributionist when !seer.IsAlive() && target.IsAlive():
// TargetPlayerName = ColorString(GetRoleColor(CustomRoles.Retributionist), target.PlayerId.ToString()) + ' ' + TargetPlayerName;
// break;
case CustomRoles.Judge when seer.IsAlive() && target.IsAlive() && GuesserIsForMeeting:
TargetPlayerName = ColorString(GetRoleColor(CustomRoles.Judge), target.PlayerId.ToString()) + ' ' + TargetPlayerName;
break;
+8 -8
View File
@@ -757,8 +757,8 @@ class MeetingHudStartPatch
//黑手党死后技能提示
if (pc.Is(CustomRoles.Mafia) && !pc.IsAlive())
AddMsg(GetString("MafiaDeadMsg"), pc.PlayerId);
if (pc.Is(CustomRoles.Retributionist) && !pc.IsAlive())
AddMsg(GetString("RetributionistDeadMsg"), pc.PlayerId);
//if (pc.Is(CustomRoles.Retributionist) && !pc.IsAlive())
// AddMsg(GetString("RetributionistDeadMsg"), pc.PlayerId);
//网红死亡消息提示
for (int i = 0; i < Main.CyberStarDead.Count; i++)
{
@@ -1087,10 +1087,10 @@ class MeetingHudStartPatch
if (seer.Data.IsDead && !target.Data.IsDead)
pva.NameText.text = Utils.ColorString(Utils.GetRoleColor(CustomRoles.Mafia), target.PlayerId.ToString()) + " " + pva.NameText.text;
break;
case CustomRoles.Retributionist:
if (seer.Data.IsDead && !target.Data.IsDead)
pva.NameText.text = Utils.ColorString(Utils.GetRoleColor(CustomRoles.Retributionist), target.PlayerId.ToString()) + " " + pva.NameText.text;
break;
//case CustomRoles.Retributionist:
// if (seer.Data.IsDead && !target.Data.IsDead)
// pva.NameText.text = Utils.ColorString(Utils.GetRoleColor(CustomRoles.Retributionist), target.PlayerId.ToString()) + " " + pva.NameText.text;
// break;
case CustomRoles.NiceGuesser:
case CustomRoles.EvilGuesser:
if (!seer.Data.IsDead && !target.Data.IsDead)
@@ -1283,8 +1283,8 @@ class MeetingHudUpdatePatch
//若黑手党死亡则创建技能按钮
if (myRole is CustomRoles.Mafia && !PlayerControl.LocalPlayer.IsAlive() && GameObject.Find("ShootButton") == null)
MafiaRevengeManager.CreateJudgeButton(__instance);
if (myRole is CustomRoles.Retributionist && !PlayerControl.LocalPlayer.IsAlive() && GameObject.Find("ShootButton") == null)
RetributionistRevengeManager.CreateJudgeButton(__instance);
//if (myRole is CustomRoles.Retributionist && !PlayerControl.LocalPlayer.IsAlive() && GameObject.Find("ShootButton") == null)
// RetributionistRevengeManager.CreateJudgeButton(__instance);
//if (myRole is CustomRoles.NiceSwapper && PlayerControl.LocalPlayer.IsAlive())
// NiceSwapper.CreateSwapperButton(__instance);
+1 -1
View File
@@ -2521,7 +2521,7 @@
"DivinatorCheck.Result15","<b>{0}</b>是传染性的、病毒的、君主的、革命者的或魅魔的其中之一","<b>{0}</b> is either Infectious, Detour, Virus, Agitater, Monarch, Revolutionist, Express, or Cultist","","",""
"DivinatorCheck.Result16","<b>{0}</b>是冤罪师、受虐狂、抑制者、修理工或破坏者其中之一","<b>{0}</b> is either Innocent, Gaulois, Sapper, Refugee, Bandit, Inhibitor, Mechanic, or Saboteur","","",""
"DivinatorCheck.Result17","<b>{0}</b>是医生、马里奥、小丑、潜伏者还是阳光开朗大男孩其中之一","<b>{0}</b> is either Medic, Vector, Analyzer, RiftMaker, Jester, The Glitch, Lurker, or Sunnyboy","","",""
"DivinatorCheck.Result18","<b>{0}</b>是黑手党、惩罚者、教父、缺点者、幸运儿或失败者其中之一","<b>{0}</b> is either Nemesis, Hitman, Retributionist, Gangster, Glitch, Luckey, or Underdog","","",""
"DivinatorCheck.Result18","<b>{0}</b>是黑手党、惩罚者、教父、缺点者、幸运儿或失败者其中之一","<b>{0}</b> is either Nemesis, Hitman, Gangster, Glitch, Luckey, or Underdog","","",""
"DivinatorCheck.Result19","<b>{0}</b>是邪恶赌怪、正义赌怪、潜藏者、梦魇、隐蔽者或变色龙其中之一","<b>{0}</b> is either Evil Guesser, Nice Guesser, Blackmailer, Eclipse, Reckless, Stalker, Camouflager, or Chameleon","","",""
"DivinatorCheck.Result20","<b>{0}</b>是豺狼、跟班、独行者、投机者、追击者或自爆卡车其中之一","<b>{0}</b> is either Jackal, Sidekick, Duellist, WeaponMaster, Maverick, Opportunist, Pursuer, or Provocateur","","",""
"DivinatorCheck.Result21","<b>{0}</b>是投毒者、吸血鬼、和平之鸽、灵魂论者或背叛者其中之一","<b>{0}</b> is either Poisoner, Magician, Yin Yanger, Vampire, Pacifist, Head Hunter, Soul Catcher, or Traitor","","",""
Can't render this file because it is too large.
+11 -9
View File
@@ -223,15 +223,17 @@ public static class CopyCat
}
if (CopyCrewVar.GetBool())
{
if (role == CustomRoles.Eraser) role = CustomRoles.Cleanser;
if (role == CustomRoles.Mafia) role = CustomRoles.Retributionist;
if (role == CustomRoles.Visionary) role = CustomRoles.Oracle;
if (role == CustomRoles.Workaholic) role = CustomRoles.Snitch;
if (role == CustomRoles.Sunnyboy) role = CustomRoles.Doctor;
if (role == CustomRoles.Vindicator || role == CustomRoles.Pickpocket) role = CustomRoles.Mayor;
else if (role == CustomRoles.Councillor) role = CustomRoles.Judge;
//else if (role == CustomRoles.Sans || role == CustomRoles.Juggernaut) role = CustomRoles.Reverie;
else if (role == CustomRoles.EvilGuesser || role == CustomRoles.Doomsayer || role == CustomRoles.Ritualist) role = CustomRoles.NiceGuesser;
role = role switch
{
CustomRoles.Eraser => CustomRoles.Cleanser,
CustomRoles.Visionary => CustomRoles.Oracle,
CustomRoles.Workaholic => CustomRoles.Snitch,
CustomRoles.Sunnyboy => CustomRoles.Doctor,
CustomRoles.Vindicator or CustomRoles.Pickpocket => CustomRoles.Mayor,
CustomRoles.Councillor => CustomRoles.Judge,
CustomRoles.EvilGuesser or CustomRoles.Doomsayer or CustomRoles.Ritualist => CustomRoles.NiceGuesser,
_ => role,
};
}
if (role.IsCrewmate() && (!tpc.GetCustomSubRoles().Any(x => x == CustomRoles.Rascal)))
{
+1 -1
View File
@@ -269,7 +269,7 @@ public static class Divinator
=> "Result17",
CustomRoles.Mafia or
CustomRoles.Retributionist or
//CustomRoles.Retributionist or
CustomRoles.Gangster or
CustomRoles.Glitch or
CustomRoles.Doppelganger or
+1 -1
View File
@@ -91,7 +91,7 @@ namespace TOHE.Roles.Crewmate
CustomRoles.Observer,
CustomRoles.DovesOfNeace,
CustomRoles.Bloodhound,
CustomRoles.Retributionist,
//CustomRoles.Retributionist,
CustomRoles.Guardian,
CustomRoles.Spiritualist,
CustomRoles.Tracker,
+1 -1
View File
@@ -236,7 +236,7 @@ public static class Gangster
(pc.Is(CustomRoles.Judge) && !JudgeCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Marshall) && !MarshallCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Farseer) && !FarseerCanBeMadmate.GetBool()) ||
(pc.Is(CustomRoles.Retributionist) && !RetributionistCanBeMadmate.GetBool()) ||
//(pc.Is(CustomRoles.Retributionist) && !RetributionistCanBeMadmate.GetBool()) ||
pc.Is(CustomRoles.Snitch) ||
pc.Is(CustomRoles.Needy) ||
pc.Is(CustomRoles.Lazy) ||
+2 -2
View File
@@ -402,7 +402,7 @@ public class Main : BasePlugin
{CustomRoles.Tracker, "#3CB371"},
{CustomRoles.CameraMan, "#000930"},
{CustomRoles.Merchant, "#D27D2D"},
{CustomRoles.Retributionist, "#228B22"},
//{CustomRoles.Retributionist, "#228B22"},
{CustomRoles.Monitor, "#7223DA"},
{CustomRoles.Deputy, "#df9026"},
{CustomRoles.Cleanser,"#98FF98" },
@@ -810,7 +810,7 @@ public enum CustomRoles
Bloodhound,
Tracker,
Merchant,
Retributionist,
//Retributionist,
Deputy,
Guardian,
Addict,