From: EoF-1141 <61620805+EoF-1141@users.noreply.github.com> Date: Sun, 25 Jul 2021 03:33:22 +0000 (+0200) Subject: Fix swap going through when swapper is dead X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=58fc37efe483c7bd6c53cf152265bbc2cb16e032;p=rhonda%2Ftheotherroles.git Fix swap going through when swapper is dead --- diff --git a/TheOtherRoles/Patches/MeetingPatch.cs b/TheOtherRoles/Patches/MeetingPatch.cs index c0a8a00..7e92806 100644 --- a/TheOtherRoles/Patches/MeetingPatch.cs +++ b/TheOtherRoles/Patches/MeetingPatch.cs @@ -38,19 +38,21 @@ namespace TheOtherRoles.Patches { } } // Swapper swap votes - PlayerVoteArea swapped1 = null; - PlayerVoteArea swapped2 = null; - foreach (PlayerVoteArea playerVoteArea in __instance.playerStates) { - if (playerVoteArea.TargetPlayerId == Swapper.playerId1) swapped1 = playerVoteArea; - if (playerVoteArea.TargetPlayerId == Swapper.playerId2) swapped2 = playerVoteArea; - } + if (Swapper.swapper != null && !Swapper.swapper.isDead) { // Don't swap if swapper is dead + PlayerVoteArea swapped1 = null; + PlayerVoteArea swapped2 = null; + foreach (PlayerVoteArea playerVoteArea in __instance.playerStates) { + if (playerVoteArea.TargetPlayerId == Swapper.playerId1) swapped1 = playerVoteArea; + if (playerVoteArea.TargetPlayerId == Swapper.playerId2) swapped2 = playerVoteArea; + } - if (swapped1 != null && swapped2 != null) { - if (!dictionary.ContainsKey(swapped1.TargetPlayerId)) dictionary[swapped1.TargetPlayerId] = 0; - if (!dictionary.ContainsKey(swapped2.TargetPlayerId)) dictionary[swapped2.TargetPlayerId] = 0; - int tmp = dictionary[swapped1.TargetPlayerId]; - dictionary[swapped1.TargetPlayerId] = dictionary[swapped2.TargetPlayerId]; - dictionary[swapped2.TargetPlayerId] = tmp; + if (swapped1 != null && swapped2 != null) { + if (!dictionary.ContainsKey(swapped1.TargetPlayerId)) dictionary[swapped1.TargetPlayerId] = 0; + if (!dictionary.ContainsKey(swapped2.TargetPlayerId)) dictionary[swapped2.TargetPlayerId] = 0; + int tmp = dictionary[swapped1.TargetPlayerId]; + dictionary[swapped1.TargetPlayerId] = dictionary[swapped2.TargetPlayerId]; + dictionary[swapped2.TargetPlayerId] = tmp; + } } return dictionary; @@ -109,16 +111,18 @@ namespace TheOtherRoles.Patches { static bool Prefix(MeetingHud __instance, Il2CppStructArray states) { // Swapper swap - PlayerVoteArea swapped1 = null; - PlayerVoteArea swapped2 = null; - foreach (PlayerVoteArea playerVoteArea in __instance.playerStates) { - if (playerVoteArea.TargetPlayerId == Swapper.playerId1) swapped1 = playerVoteArea; - if (playerVoteArea.TargetPlayerId == Swapper.playerId2) swapped2 = playerVoteArea; - } - bool doSwap = swapped1 != null && swapped2 != null; - if (doSwap) { - __instance.StartCoroutine(Effects.Slide3D(swapped1.transform, swapped1.transform.localPosition, swapped2.transform.localPosition, 1.5f)); - __instance.StartCoroutine(Effects.Slide3D(swapped2.transform, swapped2.transform.localPosition, swapped1.transform.localPosition, 1.5f)); + if (Swapper.swapper != null && !Swapper.swapper.isDead) { // Don'T swap if dead + PlayerVoteArea swapped1 = null; + PlayerVoteArea swapped2 = null; + foreach (PlayerVoteArea playerVoteArea in __instance.playerStates) { + if (playerVoteArea.TargetPlayerId == Swapper.playerId1) swapped1 = playerVoteArea; + if (playerVoteArea.TargetPlayerId == Swapper.playerId2) swapped2 = playerVoteArea; + } + bool doSwap = swapped1 != null && swapped2 != null; + if (doSwap) { + __instance.StartCoroutine(Effects.Slide3D(swapped1.transform, swapped1.transform.localPosition, swapped2.transform.localPosition, 1.5f)); + __instance.StartCoroutine(Effects.Slide3D(swapped2.transform, swapped2.transform.localPosition, swapped1.transform.localPosition, 1.5f)); + } } @@ -394,4 +398,4 @@ namespace TheOtherRoles.Patches { } } } -} \ No newline at end of file +}