mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-20 01:46:25 +00:00
Delete Retributionist
This commit is contained in:
1 parent
a902cdf29f
commit
caa4a10dc6
12 files changed
+211
-213
No files matched your search
@@ -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 = [];
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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.
|
@@ -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)))
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace TOHE.Roles.Crewmate
|
||||
CustomRoles.Observer,
|
||||
CustomRoles.DovesOfNeace,
|
||||
CustomRoles.Bloodhound,
|
||||
CustomRoles.Retributionist,
|
||||
//CustomRoles.Retributionist,
|
||||
CustomRoles.Guardian,
|
||||
CustomRoles.Spiritualist,
|
||||
CustomRoles.Tracker,
|
||||
|
||||
@@ -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) ||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user