diff --git a/CustomRoles.cs b/CustomRoles.cs index f05e923d0..e7a802f91 100644 --- a/CustomRoles.cs +++ b/CustomRoles.cs @@ -508,6 +508,7 @@ public enum CustomRoles Commited, Compelled, Composter, + Concealer, Contagious, Damocles, Deadlined, diff --git a/Main.cs b/Main.cs index b66c9d1e7..668951f19 100644 --- a/Main.cs +++ b/Main.cs @@ -657,6 +657,7 @@ public class Main : BasePlugin { CustomRoles.Listener, "#060270" }, { CustomRoles.Unbound, "#DFC57B" }, { CustomRoles.AntiTP, "#fcba03" }, + { CustomRoles.Concealer, "#595959" }, { CustomRoles.Composter, "#8D6F64" }, { CustomRoles.TaskMaster, "#00ffa5" }, { CustomRoles.Compelled, "#D2E44C" }, diff --git a/Modules/CustomRoleSelector.cs b/Modules/CustomRoleSelector.cs index 91c078740..b088e569d 100644 --- a/Modules/CustomRoleSelector.cs +++ b/Modules/CustomRoleSelector.cs @@ -971,6 +971,7 @@ internal static class CustomRoleSelector switch (role) { + case CustomRoles.Concealer when Options.AnonymousBodies.GetBool(): case CustomRoles.Autopsy when Options.EveryoneSeesDeathReasons.GetBool(): case CustomRoles.Gravestone when Options.EveryoneSeesDeadPlayersRoles.GetBool(): case CustomRoles.Mare or CustomRoles.Glow or CustomRoles.Sleep when Main.CurrentMap == MapNames.Fungle: diff --git a/Modules/ExtendedPlayerControl.cs b/Modules/ExtendedPlayerControl.cs index 67859fb7f..8aa755dfe 100644 --- a/Modules/ExtendedPlayerControl.cs +++ b/Modules/ExtendedPlayerControl.cs @@ -1946,12 +1946,12 @@ internal static class ExtendedPlayerControl IncreaseAbilityUseLimitOnKill(killer); target.SetRealKiller(killer, true); + + PlayerControl realKiller = Main.PlayerStates.TryGetValue(target.PlayerId, out PlayerState state) ? state.RealKiller.ID.GetPlayer() ?? killer : killer; + if (realKiller == null) realKiller = killer; if (target.PlayerId == Godfather.GodfatherTarget) - { - PlayerControl realKiller = Main.PlayerStates.TryGetValue(target.PlayerId, out PlayerState state) ? state.RealKiller.ID.GetPlayer() ?? killer : killer; realKiller.RpcSetCustomRole(CustomRoles.Refugee); - } if (target.Is(CustomRoles.Jackal)) Jackal.Instances.Do(x => x.PromoteSidekick()); @@ -1960,7 +1960,7 @@ internal static class ExtendedPlayerControl if (killer.IsLocalPlayer() && !killer.HasKillButton() && killer.PlayerId != target.PlayerId && Options.CurrentGameMode == CustomGameMode.Standard) Achievements.Type.InnocentKiller.Complete(); - if (Options.AnonymousBodies.GetBool()) + if (Options.AnonymousBodies.GetBool() || realKiller.Is(CustomRoles.Concealer)) { Main.AllPlayerSpeed[target.PlayerId] = Main.MinSpeed; target.SyncSettings(); @@ -2004,8 +2004,8 @@ internal static class ExtendedPlayerControl killer.RpcMurderPlayer(target, true); - if (Main.PlayerStates.TryGetValue(target.PlayerId, out var state) && !state.IsDead) - state.SetDead(); + if (Main.PlayerStates.TryGetValue(target.PlayerId, out var playerState) && !playerState.IsDead) + playerState.SetDead(); LateTask.New(() => { diff --git a/Resources/Lang/en_US.json b/Resources/Lang/en_US.json index 6eed94ba5..a1afdc452 100644 --- a/Resources/Lang/en_US.json +++ b/Resources/Lang/en_US.json @@ -9237,6 +9237,10 @@ "AgitaterTargetNotify": "<#ffff00>YOU HAVE THE BOMB!!\\n<#ffa500>Pass it to someone else or die!", "AgitaterCanGetBombed": "Agitator can get the bomb", "AgitaterAutoReportBait": "Agitator Auto Report Bait", + "Concealer": "Concealer", + "ConcealerInfo": "Your Kills are Anonymous", + "ConcealerInfoLong": "(Add-ons):\\nAs the Concealer, each body of yours will be camouflaged.", + "Prefix.Concealer": "Concealer", "Investor": "Investor", "InvestorInfo": "Invest in Players", "InvestorInfoLong": "(Neutrals):\\nAs the Investor, you can mark players using your kill button to invest in them. At the end, you win with the winning team if at least a set percentage of your marked players have won.", diff --git a/Roles/AddOns/Common/Concealer.cs b/Roles/AddOns/Common/Concealer.cs new file mode 100644 index 000000000..6add2a406 --- /dev/null +++ b/Roles/AddOns/Common/Concealer.cs @@ -0,0 +1,11 @@ +namespace EHR.AddOns.Common; + +public class Concealer : IAddon +{ + public AddonTypes Type => AddonTypes.ImpOnly; + + public void SetupCustomOption() + { + Options.SetupAdtRoleOptions(656200, CustomRoles.Concealer, canSetNum: true); + } +} \ No newline at end of file