From 654f2e8f8fdddc0cd358610f63760e8651b82fae Mon Sep 17 00:00:00 2001 From: mxyx0412 Date: Sun, 2 Feb 2025 16:59:28 +0800 Subject: [PATCH] Update v1.1.2.1 --- Strings.xlsx | Bin 85877 -> 86970 bytes TheOtherRoles/Buttons/Buttons.cs | 289 ++++++++++-- TheOtherRoles/Helper/Helpers.cs | 35 +- TheOtherRoles/Main.cs | 3 +- TheOtherRoles/Modules/ChatCommands.cs | 4 +- TheOtherRoles/Options/CustomOptionHolder.cs | 10 +- TheOtherRoles/Patches/EndGamePatch.cs | 2 +- TheOtherRoles/Patches/ExileControllerPatch.cs | 119 ++--- TheOtherRoles/Patches/PlayerControlPatch.cs | 426 +----------------- TheOtherRoles/Patches/ShipStatusPatch.cs | 10 +- TheOtherRoles/Patches/UpdatePatch.cs | 5 + TheOtherRoles/RPC.cs | 44 +- TheOtherRoles/Resources/stringData.json | 15 +- TheOtherRoles/Roles/Ghost/Specter.cs | 33 +- TheOtherRoles/Roles/Impostor/Grenadier.cs | 3 - TheOtherRoles/Roles/Neutral/Amnisiac.cs | 5 +- TheOtherRoles/Roles/Neutral/Arsonist.cs | 11 +- TheOtherRoles/Roles/Neutral/Jackal.cs | 2 +- TheOtherRoles/Roles/RoleHelpers.cs | 6 +- TheOtherRoles/TheOtherRoles.csproj | 2 +- TheOtherRoles/Utilities/MapData.cs | 24 +- 21 files changed, 446 insertions(+), 602 deletions(-) diff --git a/Strings.xlsx b/Strings.xlsx index ce3e974e32cf9eaf6f5874955c8fbe7f112e7bc6..d6ff9b4f4c51c71026ab201ed2ceb1fc6fdc24d8 100644 GIT binary patch delta 74006 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

1;PV1}sLk|^2U`c(V< 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

T}$C#cE1t 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 delta 73036 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 OKrapeywSar0sjXpAZuU% diff --git a/TheOtherRoles/Buttons/Buttons.cs b/TheOtherRoles/Buttons/Buttons.cs index a1c05e85..2757c253 100644 --- a/TheOtherRoles/Buttons/Buttons.cs +++ b/TheOtherRoles/Buttons/Buttons.cs @@ -257,10 +257,21 @@ public static void resetTimeMasterButton() SoundEffectsManager.stop("timemasterShield"); } + public static PlayerControl SetTarget(IEnumerable untarget = null, bool onlyCrewmates = false, + bool targetInVents = false, float distances = 0f, PlayerControl targetingPlayer = null) + { + return PlayerControlFixedUpdatePatch.SetTarget(onlyCrewmates, targetInVents, untarget, KillDistances: distances, targetingPlayer: targetingPlayer); + } + + public static void SetPlayerOutline(PlayerControl target, Color color) + { + PlayerControlFixedUpdatePatch.SetPlayerOutline(target, color); + } + private static void addReplacementHandcuffedButton(CustomButton button, Vector3? positionOffset = null, Func couldUse = null) { - var positionOffsetValue = - positionOffset ?? button.PositionOffset; // For non custom buttons, we can set these manually. + // For non custom buttons, we can set these manually. + var positionOffsetValue = positionOffset ?? button.PositionOffset; positionOffsetValue.z = -0.1f; couldUse ??= button.CouldUse; var replacementHandcuffedButton = new CustomButton(() => { }, () => { return true; }, couldUse, () => { }, @@ -626,6 +637,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Sheriff.currentTarget = SetTarget(); + SetPlayerOutline(Sheriff.currentTarget, Sheriff.color); + showTargetNameOnButton(Sheriff.currentTarget, sheriffKillButton, GetString("killButtonText")); return Sheriff.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, @@ -658,6 +672,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Sheriff.currentTarget = SetTarget(); + SetPlayerOutline(Sheriff.currentTarget, Sheriff.color); + showTargetNameOnButton(Sheriff.currentTarget, deputyHandcuffButton, GetString("HandcuffText")); if (deputyButtonHandcuffsText != null) deputyButtonHandcuffsText.text = $"{Sheriff.remainingHandcuffs}"; return Sheriff.remainingHandcuffs > 0 && Sheriff.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; @@ -772,7 +789,12 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { - showTargetNameOnButton(Medic.currentTarget, medicShieldButton, GetString("ShieldText")); + Medic.currentTarget = SetTarget(); + if (!Medic.usedShield) + { + SetPlayerOutline(Medic.currentTarget, Medic.shieldedColor); + showTargetNameOnButton(Medic.currentTarget, medicShieldButton, GetString("ShieldText")); + } return !Medic.usedShield && Medic.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, () => @@ -801,6 +823,7 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Doomsayer.currentTarget = SetTarget(); showTargetNameOnButton(Doomsayer.currentTarget, doomsayerButton, GetString("doomsayerText")); return CachedPlayer.LocalPlayer.PlayerControl.CanMove && Doomsayer.currentTarget != null; }, @@ -831,7 +854,7 @@ public static void createButtonsPostfix(HudManager __instance) akujoHonmeiButton = new CustomButton( () => { - if (checkAndDoVetKill(Doomsayer.currentTarget)) return; + if (checkAndDoVetKill(Akujo.currentTarget)) return; var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.AkujoSetHonmei, SendOption.Reliable, -1); writer.Write(Akujo.akujo.PlayerId); @@ -871,7 +894,7 @@ public static void createButtonsPostfix(HudManager __instance) akujoBackupButton = new CustomButton( () => { - if (checkAndDoVetKill(Doomsayer.currentTarget)) return; + if (checkAndDoVetKill(Akujo.currentTarget)) return; var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.AkujoSetKeep, SendOption.Reliable, -1); @@ -951,7 +974,12 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { - showTargetNameOnButton(Shifter.currentTarget, shifterShiftButton, GetString("ShiftText")); + Shifter.currentTarget = SetTarget(); + if (Shifter.futureShift == null) + { + SetPlayerOutline(Shifter.currentTarget, Color.yellow); + showTargetNameOnButton(Shifter.currentTarget, shifterShiftButton, GetString("ShiftText")); + } return Shifter.currentTarget && Shifter.futureShift == null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, @@ -1125,6 +1153,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Morphling.currentTarget = SetTarget(); + SetPlayerOutline(Morphling.currentTarget, Morphling.color); + if (Morphling.sampledTarget == null) showTargetNameOnButton(Morphling.currentTarget, morphlingButton, GetString("SampleText")); return (Morphling.currentTarget || Morphling.sampledTarget) && !isActiveCamoComms && CachedPlayer.LocalPlayer.PlayerControl.CanMove && !MushroomSabotageActive; @@ -1386,7 +1417,13 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { - if (!Tracker.usedTracker) showTargetNameOnButton(Tracker.currentTarget, trackerTrackPlayerButton, GetString("TrackerText")); + Tracker.currentTarget = SetTarget(); + if (!Tracker.usedTracker) + { + SetPlayerOutline(Tracker.currentTarget, Tracker.color); + showTargetNameOnButton(Tracker.currentTarget, trackerTrackPlayerButton, GetString("TrackerText")); + } + return CachedPlayer.LocalPlayer.PlayerControl.CanMove && Tracker.currentTarget != null && !Tracker.usedTracker; }, () => @@ -1410,7 +1447,10 @@ public static void createButtonsPostfix(HudManager __instance) return Tracker.tracker != null && Tracker.tracker == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead && Tracker.canTrackCorpses; }, - () => { return CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, + () => + { + return CachedPlayer.LocalPlayer.PlayerControl.CanMove; + }, () => { trackerTrackCorpsesButton.Timer = trackerTrackCorpsesButton.MaxTimer; @@ -1445,8 +1485,12 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + BodyGuard.currentTarget = SetTarget(); if (!BodyGuard.usedGuard) + { + SetPlayerOutline(Medic.currentTarget, Medic.shieldedColor); showTargetNameOnButton(BodyGuard.currentTarget, bodyGuardGuardButton, GetString("bodyGuardText")); + } return CachedPlayer.LocalPlayer.PlayerControl.CanMove && BodyGuard.currentTarget != null && !BodyGuard.usedGuard; }, @@ -1469,15 +1513,12 @@ public static void createButtonsPostfix(HudManager __instance) { if (Vampire.targetNearGarlic) { - var writer = AmongUsClient.Instance.StartRpcImmediately( - CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.UncheckedMurderPlayer, - SendOption.Reliable); + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.UncheckedMurderPlayer); writer.Write(Vampire.vampire.PlayerId); writer.Write(Vampire.currentTarget.PlayerId); writer.Write(byte.MaxValue); - AmongUsClient.Instance.FinishRpcImmediately(writer); - RPCProcedure.uncheckedMurderPlayer(Vampire.vampire.PlayerId, Vampire.currentTarget.PlayerId, - byte.MaxValue); + writer.EndRPC(); + RPCProcedure.uncheckedMurderPlayer(Vampire.vampire.PlayerId, Vampire.currentTarget.PlayerId, byte.MaxValue); vampireKillButton.HasEffect = false; // Block effect on this click vampireKillButton.Timer = vampireKillButton.MaxTimer; @@ -1486,12 +1527,10 @@ public static void createButtonsPostfix(HudManager __instance) { Vampire.bitten = Vampire.currentTarget; // Notify players about bitten - var writer = AmongUsClient.Instance.StartRpcImmediately( - CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.VampireSetBitten, - SendOption.Reliable); + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.VampireSetBitten); writer.Write(Vampire.bitten.PlayerId); writer.Write((byte)0); - AmongUsClient.Instance.FinishRpcImmediately(writer); + writer.EndRPC(); RPCProcedure.vampireSetBitten(Vampire.bitten.PlayerId, 0); var lastTimer = (byte)Vampire.delay; @@ -1505,12 +1544,11 @@ public static void createButtonsPostfix(HudManager __instance) if (timer != lastTimer) { lastTimer = timer; - var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, - (byte)CustomRPC.ShareGhostInfo, SendOption.Reliable); + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.ShareGhostInfo); writer.Write(CachedPlayer.LocalPlayer.PlayerId); writer.Write((byte)RPCProcedure.GhostInfoTypes.VampireTimer); writer.Write(timer); - AmongUsClient.Instance.FinishRpcImmediately(writer); + writer.EndRPC(); } } @@ -1521,12 +1559,10 @@ public static void createButtonsPostfix(HudManager __instance) showAnimation: false); if (res == MurderAttemptResult.PerformKill) { - var writer = AmongUsClient.Instance.StartRpcImmediately( - CachedPlayer.LocalPlayer.PlayerControl.NetId, - (byte)CustomRPC.VampireSetBitten, SendOption.Reliable); + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.VampireSetBitten); writer.Write(byte.MaxValue); writer.Write(byte.MaxValue); - AmongUsClient.Instance.FinishRpcImmediately(writer); + writer.EndRPC(); RPCProcedure.vampireSetBitten(byte.MaxValue, byte.MaxValue); } } @@ -1557,6 +1593,26 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + + PlayerControl target; + if (Spy.spy != null) + { + target = Spy.impostorsCanKillAnyone ? SetTarget(null, false, true) : SetTarget(null, true, true); + } + else + { + target = SetTarget(null, true, true); + } + + bool targetNearGarlic = false; + if (target != null) + foreach (var garlic in Garlic.garlics) + if (Vector2.Distance(garlic.garlic.transform.position, target.transform.position) <= 1.95f) + targetNearGarlic = true; + Vampire.targetNearGarlic = targetNearGarlic; + Vampire.currentTarget = target; + SetPlayerOutline(Vampire.currentTarget, Vampire.color); + if (Vampire.targetNearGarlic) showTargetNameOnButton(Vampire.currentTarget, vampireKillButton, GetString("killButtonText")); else @@ -1639,9 +1695,16 @@ public static void createButtonsPostfix(HudManager __instance) prophetButton.Timer = prophetButton.MaxTimer; } }, - () => { return Prophet.prophet != null && CachedPlayer.LocalPlayer.PlayerControl == Prophet.prophet && !CachedPlayer.LocalPlayer.PlayerControl.Data.IsDead && Prophet.examinesLeft > 0; }, () => { + return Prophet.prophet != null && CachedPlayer.LocalPlayer.PlayerControl == Prophet.prophet + && !CachedPlayer.LocalPlayer.PlayerControl.Data.IsDead && Prophet.examinesLeft > 0; + }, + () => + { + Prophet.currentTarget = SetTarget(); + SetPlayerOutline(Prophet.currentTarget, Prophet.color); + if (prophetButtonText != null) { if (Prophet.examinesLeft > 0) @@ -1892,10 +1955,18 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + var untargetablePlayers = new List(); + untargetablePlayers.AddRange(Jackal.jackal); + if (Jackal.Sidekick != null) untargetablePlayers.Add(Jackal.Sidekick); + if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); + Jackal.currentTarget = SetTarget(untarget: untargetablePlayers); + SetPlayerOutline(Jackal.currentTarget, Palette.ImpostorRed); + return Jackal.canCreateSidekick && Jackal.jackal.Any(x => x.IsAlive() && x == CachedPlayer.LocalPlayer.PlayerControl); }, () => { + // Show now text since the button already says sidekick showTargetNameOnButton(Jackal.currentTarget, jackalSidekickButton, GetString("jackalSidekickText")); return Jackal.canCreateSidekick && Jackal.currentTarget != null && @@ -1974,7 +2045,17 @@ public static void createButtonsPostfix(HudManager __instance) RPCProcedure.setSwoop(Swooper.swooper.PlayerId, byte.MinValue); }, () => { /* Can See */ return Swooper.swooper != null && Swooper.swooper == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead; }, - () => { /* On Click */ return CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, + () => + { + /* On Click */ + // Exclude Jackal from targeting the Mini unless it has grown up + var untargetablePlayers = new List(); + if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); + Swooper.currentTarget = SetTarget(untarget: untargetablePlayers); + SetPlayerOutline(Swooper.currentTarget, Palette.ImpostorRed); + + return CachedPlayer.LocalPlayer.PlayerControl.CanMove; + }, () => { /* On Meeting End */ swooperSwoopButton.Timer = swooperSwoopButton.MaxTimer; @@ -2022,6 +2103,14 @@ public static void createButtonsPostfix(HudManager __instance) if (Pavlovsdogs.deathTime <= 0) PlayerControl.LocalPlayer.RpcMurderPlayer(PlayerControl.LocalPlayer, true); } + + var untargetablePlayers = new List(); + untargetablePlayers.AddRange(Pavlovsdogs.pavlovsdogs); + if (Pavlovsdogs.pavlovsowner != null) untargetablePlayers.Add(Pavlovsdogs.pavlovsowner); + if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); + Pavlovsdogs.killTarget = SetTarget(untarget: untargetablePlayers); + SetPlayerOutline(Pavlovsdogs.killTarget, Palette.ImpostorRed); + showTargetNameOnButton(Pavlovsdogs.killTarget, pavlovsdogsKillButton, GetString("killButtonText")); return Pavlovsdogs.killTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, () => @@ -2072,8 +2161,13 @@ public static void createButtonsPostfix(HudManager __instance) if (PavlovsdogCreateNumText != null) PavlovsdogCreateNumText.text = $"{Pavlovsdogs.createDogNum}"; - showTargetNameOnButton(Pavlovsdogs.currentTarget, pavlovsownerCreateDogButton, GetString("pavlovsCreateDogText")); + var untargetablePlayers = new List(); + if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); + Pavlovsdogs.currentTarget = SetTarget(untarget: untargetablePlayers); + SetPlayerOutline(Pavlovsdogs.currentTarget, Palette.ImpostorRed); + // Show now text since the button already says sidekick + showTargetNameOnButton(Pavlovsdogs.currentTarget, pavlovsownerCreateDogButton, GetString("pavlovsCreateDogText")); return Pavlovsdogs.currentTarget != null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, () => { pavlovsownerCreateDogButton.Timer = pavlovsownerCreateDogButton.MaxTimer; }, @@ -2170,6 +2264,8 @@ public static void createButtonsPostfix(HudManager __instance) () => { /* On Click */ + Bomber.currentBombTarget = SetTarget(); + if (Bomber.hasBombPlayer == null) SetPlayerOutline(Bomber.currentTarget, Bomber.color); return Bomber.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, () => @@ -2240,6 +2336,8 @@ public static void createButtonsPostfix(HudManager __instance) () => { /* Can Click */ + Bomber.currentBombTarget = SetTarget(); + if (Bomber.hasBombPlayer == null) SetPlayerOutline(Bomber.currentTarget, Bomber.color); return Bomber.currentBombTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, () => @@ -2318,6 +2416,7 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Werewolf.currentTarget = SetTarget(); showTargetNameOnButton(Werewolf.currentTarget, werewolfKillButton, GetString("killButtonText")); return Werewolf.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, @@ -2396,6 +2495,7 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Juggernaut.currentTarget = SetTarget(); showTargetNameOnButton(Juggernaut.currentTarget, juggernautKillButton, GetString("killButtonText")); return Juggernaut.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, @@ -2434,6 +2534,11 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + var untargetablePlayers = new List(); + if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); + Pelican.currentTarget = SetTarget(untarget: untargetablePlayers); + SetPlayerOutline(Pelican.currentTarget, Palette.ImpostorRed); + showTargetNameOnButton(Pelican.currentTarget, pelicanKillButton, GetString("VultureText")); return Pelican.currentTarget && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, @@ -2470,6 +2575,11 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + var untargetables = new List(); + if (Spy.spy != null) untargetables.Add(Spy.spy); + Eraser.currentTarget = SetTarget(untarget: Eraser.canEraseAnyone ? [] : untargetables, !Eraser.canEraseAnyone); + SetPlayerOutline(Eraser.currentTarget, Eraser.color); + showTargetNameOnButton(Eraser.currentTarget, eraserButton, GetString("EraserText")); return CachedPlayer.LocalPlayer.PlayerControl.CanMove && Eraser.currentTarget != null; }, @@ -2502,6 +2612,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + PartTimer.currentTarget = SetTarget(); + if (PartTimer.target != null) SetPlayerOutline(PartTimer.currentTarget, PartTimer.color); + showTargetNameOnButton(PartTimer.currentTarget, partTimerButton, GetString("partTimerButton")); return CachedPlayer.LocalPlayer.PlayerControl.CanMove && PartTimer.currentTarget != null; ; }, @@ -2846,6 +2959,21 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + + // If the cursed victim is disconnected or dead reset the curse so a new curse can be applied + if (Warlock.curseVictim != null && (Warlock.curseVictim.Data.Disconnected || Warlock.curseVictim.Data.IsDead)) + Warlock.resetCurse(); + if (Warlock.curseVictim == null) + { + Warlock.currentTarget = SetTarget(); + SetPlayerOutline(Warlock.currentTarget, Warlock.color); + } + else + { + Warlock.curseVictimTarget = SetTarget(targetingPlayer: Warlock.curseVictim); + SetPlayerOutline(Warlock.curseVictimTarget, Warlock.color); + } + if (Warlock.curseVictim != null) showTargetNameOnButton(Warlock.currentTarget, warlockCurseButton, GetString("CurseKillText")); else @@ -2901,10 +3029,8 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { - return SecurityGuard.securityGuard != null && - SecurityGuard.securityGuard == CachedPlayer.LocalPlayer.PlayerControl && - !CachedPlayer.LocalPlayer.Data.IsDead && SecurityGuard.remainingScrews >= - Mathf.Min(SecurityGuard.ventPrice, SecurityGuard.camPrice); + return SecurityGuard.securityGuard.IsAlive() && SecurityGuard.securityGuard == CachedPlayer.LocalPlayer.PlayerControl && + SecurityGuard.remainingScrews >= Mathf.Min(SecurityGuard.ventPrice, SecurityGuard.camPrice); }, () => { @@ -2916,6 +3042,27 @@ public static void createButtonsPostfix(HudManager __instance) if (securityGuardButtonScrewsText != null) securityGuardButtonScrewsText.text = $"{SecurityGuard.remainingScrews}/{SecurityGuard.totalScrews}"; + + Vent target = null; + var truePosition = CachedPlayer.LocalPlayer.PlayerControl.GetTruePosition(); + var closestDistance = float.MaxValue; + for (var i = 0; i < MapUtilities.CachedShipStatus.AllVents.Length; i++) + { + var vent = MapUtilities.CachedShipStatus.AllVents[i]; + if (vent.gameObject.name.StartsWith("JackInTheBoxVent_") || + vent.gameObject.name.StartsWith("SealedVent_") || + vent.gameObject.name.StartsWith("FutureSealedVent_")) continue; + if (SubmergedCompatibility.IsSubmerged && vent.Id == 9) continue; // cannot seal submergeds exit only vent! + var distance = Vector2.Distance(vent.transform.position, truePosition); + if (distance <= vent.UsableDistance && distance < closestDistance) + { + closestDistance = distance; + target = vent; + } + } + + SecurityGuard.ventTarget = target; + if (SecurityGuard.ventTarget != null) return SecurityGuard.remainingScrews >= SecurityGuard.ventPrice && CachedPlayer.LocalPlayer.PlayerControl.CanMove; @@ -3047,9 +3194,23 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { - var dousedEveryoneAlive = Arsonist.dousedEveryoneAlive(); - if (!dousedEveryoneAlive) - showTargetNameOnButton(Arsonist.currentTarget, arsonistButton, GetString("DouseText")); + List untargetables; + if (Arsonist.douseTarget != null) + { + untargetables = new(); + foreach (var cachedPlayer in CachedPlayer.AllPlayers) + if (cachedPlayer.PlayerId != Arsonist.douseTarget.PlayerId) + untargetables.Add(cachedPlayer); + } + else + { + untargetables = Arsonist.dousedPlayers; + } + + Arsonist.currentTarget = SetTarget(untarget: untargetables, distances: 0.5f); + if (Arsonist.currentTarget != null) SetPlayerOutline(Arsonist.currentTarget, Arsonist.color); + + showTargetNameOnButton(Arsonist.currentTarget, arsonistButton, GetString("DouseText")); if (arsonistButton.isEffectActive && Arsonist.douseTarget != Arsonist.currentTarget) { @@ -3113,6 +3274,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Arsonist.currentTarget2 = SetTarget(distances: 0.5f); + if (Arsonist.currentTarget2 != null) SetPlayerOutline(Arsonist.currentTarget2, Arsonist.color); + showTargetNameOnButton(Arsonist.currentTarget2, arsonistKillButton, GetString("IgniteText")); return PlayerControl.LocalPlayer.CanMove && Arsonist.currentTarget2 != null && Arsonist.dousedPlayers.Contains(Arsonist.currentTarget2); }, @@ -3310,6 +3474,22 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + + DeadPlayer target = null; + var truePosition = CachedPlayer.LocalPlayer.PlayerControl.GetTruePosition(); + var closestDistance = float.MaxValue; + var usableDistance = MapUtilities.CachedShipStatus.AllVents.FirstOrDefault().UsableDistance; + foreach (var (dp, ps) in Medium.deadBodies) + { + var distance = Vector2.Distance(ps, truePosition); + if (distance <= usableDistance && distance < closestDistance) + { + closestDistance = distance; + target = dp; + } + } + Medium.target = target; + if (mediumButton.isEffectActive && Medium.target != Medium.soulTarget) { Medium.soulTarget = null; @@ -3419,6 +3599,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Pursuer.target = SetTarget(); + SetPlayerOutline(Pursuer.target, Pursuer.color); + showTargetNameOnButton(Pursuer.target, pursuerButton, GetString("PursuerText")); if (pursuerButtonBlanksText != null) pursuerButtonBlanksText.text = $"{Pursuer.blanksNumber - Pursuer.blanks}"; @@ -3514,6 +3697,9 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + Survivor.target = SetTarget(); + SetPlayerOutline(Survivor.target, Survivor.color); + showTargetNameOnButton(Survivor.target, survivorBlanksButton, GetString("PursuerText")); if (survivorBlanksButtonText != null) survivorBlanksButtonText.text = $"{Survivor.remainingBlanks} / {Survivor.blanksNumber}"; @@ -3553,6 +3739,20 @@ public static void createButtonsPostfix(HudManager __instance) }, () => { + List untargetables; + if (Witch.spellCastingTarget != null) + { + untargetables = PlayerControl.AllPlayerControls.ToArray().Where(x => x.PlayerId != Witch.spellCastingTarget.PlayerId).ToList(); + } + else + { + untargetables = new(); + if (Spy.spy != null && !Witch.canSpellAnyone) untargetables.Add(Spy.spy); + } + + Witch.currentTarget = SetTarget(untargetables, !Witch.canSpellAnyone); + SetPlayerOutline(Witch.currentTarget, Witch.color); + showTargetNameOnButton(Witch.currentTarget, witchSpellButton, GetString("WitchText")); if (witchSpellButton.isEffectActive && Witch.spellCastingTarget != Witch.currentTarget) { @@ -3833,6 +4033,12 @@ public static void createButtonsPostfix(HudManager __instance) () => { // CouldUse + var untargetables = new List(); + if (Spy.spy != null && !Spy.impostorsCanKillAnyone) untargetables.Add(Spy.spy); + if (Mini.mini != null && !Mini.isGrownUp()) untargetables.Add(Mini.mini); + Ninja.currentTarget = SetTarget(untargetables, Spy.spy == null || !Spy.impostorsCanKillAnyone); + SetPlayerOutline(Ninja.currentTarget, Ninja.color); + showTargetNameOnButton(Ninja.currentTarget, ninjaButton, GetString("NinjaText")); ninjaButton.Sprite = Ninja.ninjaMarked != null ? Ninja.killButtonSprite @@ -3877,6 +4083,9 @@ public static void createButtonsPostfix(HudManager __instance) () => { // Could Use + Blackmailer.currentTarget = SetTarget(); + SetPlayerOutline(Medic.currentTarget, Blackmailer.blackmailedColor); + var text = GetString("BlackmailerText"); if (Blackmailer.blackmailed != null) text = Blackmailer.blackmailed.Data.PlayerName; //Show target name under button if setting is true @@ -4083,7 +4292,15 @@ public static void createButtonsPostfix(HudManager __instance) { return Thief.thief != null && CachedPlayer.LocalPlayer.PlayerControl == Thief.thief && CachedPlayer.LocalPlayer.PlayerControl.IsAlive(); }, - () => { return Thief.currentTarget != null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; }, + () => + { + var untargetables = new List(); + if (Mini.mini != null && !Mini.isGrownUp()) untargetables.Add(Mini.mini); + Thief.currentTarget = SetTarget(untarget: untargetables); + SetPlayerOutline(Thief.currentTarget, Thief.color); + + return Thief.currentTarget != null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; + }, () => { thiefKillButton.Timer = thiefKillButton.MaxTimer; }, __instance.KillButton.graphic.sprite, ButtonPositions.upperRowRight, diff --git a/TheOtherRoles/Helper/Helpers.cs b/TheOtherRoles/Helper/Helpers.cs index bbe816bd..e1118dd4 100644 --- a/TheOtherRoles/Helper/Helpers.cs +++ b/TheOtherRoles/Helper/Helpers.cs @@ -584,15 +584,20 @@ public static bool Any(this List list, Func func) return false; } - public static bool TryAdd(this IEnumerable list, T item) + public static bool TryAdd(this List list, T item) { if (list == null || item == null) return false; try { - list.AddItem(item); + list.Add(item); + Message("complete", "TryAdd"); return true; } - catch { return false; } + catch (Exception e) + { + Message(e, "TryAdd"); + return false; + } } public static TKey GetKeyByValue(this Dictionary dictionary, TValue value, TKey defaultvalue = default) @@ -811,28 +816,6 @@ public static void SetActiveAllObject(this GameObject[] trans, string notdelete, } } - public static Vector3 GetCloseSpawnPosition(this PlayerControl player) - { - var list = new List(); - list.AddRange(MapData.MapSpawnPosition(false)); - list.AddRange(MapData.FindVentSpawnPositions(false)); - - var closePos = list[0]; - float closeDistance = Vector3.Distance(player.transform.position, closePos); - - foreach (var pos in list) - { - float distance = Vector3.Distance(player.transform.position, pos); - if (distance < closeDistance) - { - closePos = pos; - closeDistance = distance; - } - } - Message($"Revive Player{player.Data.PlayerName} To Vector3 {closePos}"); - return closePos; - } - public static GameObject[] GetChildren(this GameObject ParentObject) { GameObject[] ChildObject = new GameObject[ParentObject.transform.childCount]; @@ -867,7 +850,7 @@ public static void clearAllTasks(this PlayerControl player) public static void shareGameVersion() { - var writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.VersionHandshake, + var writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.VersionHandshake, SendOption.Reliable, -1); writer.Write((byte)Main.Version.Major); writer.Write((byte)Main.Version.Minor); diff --git a/TheOtherRoles/Main.cs b/TheOtherRoles/Main.cs index cb311612..33f64276 100644 --- a/TheOtherRoles/Main.cs +++ b/TheOtherRoles/Main.cs @@ -1,4 +1,4 @@ -using System; +using System; using AmongUs.Data; using BepInEx; using BepInEx.Configuration; @@ -102,6 +102,7 @@ public override void Load() SubmergedCompatibility.Initialize(); MainMenuPatch.addSceneChangeCallbacks(); AddToKillDistanceSetting.addKillDistance(); + Info($"\n---------------\n Loading TheOtherUs completed!\n TheOtherUs-Edited v{VersionString}-Lite\n---------------"); } } diff --git a/TheOtherRoles/Modules/ChatCommands.cs b/TheOtherRoles/Modules/ChatCommands.cs index f86b7851..3198bd2b 100644 --- a/TheOtherRoles/Modules/ChatCommands.cs +++ b/TheOtherRoles/Modules/ChatCommands.cs @@ -116,10 +116,10 @@ private static bool Prefix(ChatController __instance) if (target != null) { var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, - (byte)CustomRPC.HostRevive, SendOption.Reliable); + (byte)CustomRPC.RevivePlayer, SendOption.Reliable); writer.Write(target.PlayerId); AmongUsClient.Instance.FinishRpcImmediately(writer); - RPCProcedure.hostRevive(target.PlayerId); + RPCProcedure.RevivePlayer(target.PlayerId); } handled = true; } diff --git a/TheOtherRoles/Options/CustomOptionHolder.cs b/TheOtherRoles/Options/CustomOptionHolder.cs index b72e02c6..88c148f3 100644 --- a/TheOtherRoles/Options/CustomOptionHolder.cs +++ b/TheOtherRoles/Options/CustomOptionHolder.cs @@ -236,7 +236,8 @@ public class CustomOptionHolder public static CustomOption specterSpawnRate; public static CustomOption specterResetRole; public static CustomOption specterDuration; - public static CustomOption specterAfterMeeting; + public static CustomOption specterAfterMeetingTakeRole; + public static CustomOption specterAfterMeetingRevived; public static CustomOption sheriffSpawnRate; public static CustomOption sheriffMisfireKills; @@ -933,7 +934,8 @@ public static void Load() specterSpawnRate = Create(50020, Types.Neutral, cs(Specter.color, "SpecterOptions"), rates, null, true); specterResetRole = Create(50021, Types.Neutral, "amnisiacResetRole", true, specterSpawnRate); specterDuration = Create(50022, Types.Neutral, "specterDuration", 1.5f, 0.25f, 5f, 0.25f, specterSpawnRate); - specterAfterMeeting = Create(50023, Types.Neutral, "specterAfterMeeting", false, specterSpawnRate); + specterAfterMeetingTakeRole = Create(50023, Types.Neutral, "specterAfterMeetingTakeRole", false, specterSpawnRate); + specterAfterMeetingRevived = Create(50024, Types.Neutral, "specterAfterMeetingRevived", false, specterSpawnRate); survivorSpawnRate = Create(20280, Types.Neutral, cs(Survivor.color, "Survivor"), rates, null, true); survivorVestEnable = Create(20281, Types.Neutral, "survivorVestEnable", true, survivorSpawnRate); @@ -1153,12 +1155,12 @@ public static void Load() bodyGuardFlash = Create(30342, Types.Crewmate, "bodyGuardFlash", true, bodyGuardSpawnRate); timeMasterSpawnRate = Create(30210, Types.Crewmate, cs(TimeMaster.color, "TimeMaster"), rates, null, true); - timeMasterCooldown = Create(30211, Types.Crewmate, "timeMasterCooldown", 20f, 10f, 60f, 2.5f, timeMasterSpawnRate); + timeMasterCooldown = Create(30211, Types.Crewmate, "timeMasterCooldown", 20f, 5f, 60f, 2.5f, timeMasterSpawnRate); timeMasterShieldDuration = Create(30213, Types.Crewmate, "timeMasterShieldDuration", 15f, 2.5f, 20f, 0.5f, timeMasterSpawnRate); timeMasterRewindTime = Create(30212, Types.Crewmate, "timeMasterRewindTime", 9f, 1f, 10f, 1f, timeMasterSpawnRate); veteranSpawnRate = Create(30220, Types.Crewmate, cs(Veteran.color, "Veteran"), rates, null, true); - veteranCooldown = Create(30221, Types.Crewmate, "veteranCooldown", 25f, 10f, 60f, 2.5f, veteranSpawnRate); + veteranCooldown = Create(30221, Types.Crewmate, "veteranCooldown", 25f, 5f, 60f, 2.5f, veteranSpawnRate); veteranAlertDuration = Create(30222, Types.Crewmate, "veteranAlertDuration", 12.5f, 2.5f, 20f, 0.5f, veteranSpawnRate); swapperSpawnRate = Create(30230, Types.Crewmate, cs(Swapper.color, "Swapper"), rates, null, true); diff --git a/TheOtherRoles/Patches/EndGamePatch.cs b/TheOtherRoles/Patches/EndGamePatch.cs index a6053bc2..f7666777 100644 --- a/TheOtherRoles/Patches/EndGamePatch.cs +++ b/TheOtherRoles/Patches/EndGamePatch.cs @@ -206,7 +206,7 @@ public static void Postfix(AmongUsClient __instance, [HarmonyArgument(0)] ref En var executionerWin = Executioner.executioner != null && gameOverReason == (GameOverReason)CustomGameOverReason.ExecutionerWin; var lawyerSoloWin = Lawyer.lawyer != null && gameOverReason == (GameOverReason)CustomGameOverReason.LawyerSoloWin; var akujoWin = Akujo.akujo.IsAlive() && Akujo.honmei.IsAlive() && (gameOverReason == (GameOverReason)CustomGameOverReason.AkujoWin || - (GameManager.Instance.DidHumansWin(gameOverReason) && Akujo.honmeiOptimizeWin && !Akujo.existingWithKiller())); + GameManager.Instance.DidHumansWin(gameOverReason)); bool isPursurerLose = jesterWin || witnessWin || arsonistWin || miniLose || isCanceled || executionerWin; diff --git a/TheOtherRoles/Patches/ExileControllerPatch.cs b/TheOtherRoles/Patches/ExileControllerPatch.cs index f8b68085..cfa476cd 100644 --- a/TheOtherRoles/Patches/ExileControllerPatch.cs +++ b/TheOtherRoles/Patches/ExileControllerPatch.cs @@ -5,6 +5,7 @@ using AmongUs.GameOptions; using Hazel; using PowerTools; +using Sentry.Protocol; using TheOtherRoles.Buttons; using TheOtherRoles.Objects; using TheOtherRoles.Utilities; @@ -359,70 +360,80 @@ private static void WrapUpPostfix(GameData.PlayerInfo exiled) if (BountyHunter.bountyHunter != null && BountyHunter.bountyHunter == CachedPlayer.LocalPlayer.PlayerControl) BountyHunter.bountyUpdateTimer = 0f; - // Eraser erase - if (Eraser.eraser != null && AmongUsClient.Instance.AmHost && Eraser.futureErased != null) + if (AmongUsClient.Instance.AmHost) { - var rasePlayerList = new List(Eraser.futureErased); - foreach (var target in rasePlayerList) + LastImpostor.promoteToLastImpostor(); + + // Eraser erase + if (Eraser.eraser != null && Eraser.futureErased != null) { - var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.ErasePlayerRoles); - writer.Write(target.PlayerId); - writer.EndRPC(); - RPCProcedure.erasePlayerRoles(target.PlayerId); - Eraser.alreadyErased.Add(target.PlayerId); + var rasePlayerList = new List(Eraser.futureErased); + foreach (var target in rasePlayerList) + { + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl.NetId, CustomRPC.ErasePlayerRoles); + writer.Write(target.PlayerId); + writer.EndRPC(); + RPCProcedure.erasePlayerRoles(target.PlayerId); + Eraser.alreadyErased.Add(target.PlayerId); + } } - } - Eraser.futureErased = new List(); - - // Shifter shift - if (Shifter.shifter != null && AmongUsClient.Instance.AmHost && Shifter.futureShift != null) - { - var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.ShifterShift); - writer.Write(Shifter.futureShift.PlayerId); - writer.EndRPC(); - RPCProcedure.shifterShift(Shifter.futureShift.PlayerId); - } - Shifter.futureShift = null; + // Shifter shift + if (Shifter.shifter != null && Shifter.futureShift != null) + { + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.ShifterShift); + writer.Write(Shifter.futureShift.PlayerId); + writer.EndRPC(); + RPCProcedure.shifterShift(Shifter.futureShift.PlayerId); + } - // Witch execute casted spells - if (Witch.witch != null && Witch.futureSpelled != null && AmongUsClient.Instance.AmHost) - { - var partner = exiled?.Object?.getPartner(); + // Witch execute casted spells + if (Witch.witch != null && Witch.futureSpelled != null) + { + var partner = exiled?.Object?.getPartner(); - var exiledIsWitch = exiled?.PlayerId == Witch.witch.PlayerId; - var witchDiesWithExiledLover = partner?.PlayerId == Witch.witch.PlayerId || exiled?.PlayerId == Witch.witch.PlayerId; + var exiledIsWitch = exiled?.PlayerId == Witch.witch.PlayerId; + var witchDiesWithExiledLover = partner?.PlayerId == Witch.witch.PlayerId || exiled?.PlayerId == Witch.witch.PlayerId; - if (((witchDiesWithExiledLover || exiledIsWitch) && Witch.witchVoteSavesTargets) || Witch.witchWasGuessed) - Witch.futureSpelled = new List(); + if (((witchDiesWithExiledLover || exiledIsWitch) && Witch.witchVoteSavesTargets) || Witch.witchWasGuessed) + Witch.futureSpelled = new List(); - foreach (var target in Witch.futureSpelled.Where(x => x.IsAlive())) - { - if (Lawyer.lawyer != null && target == Lawyer.target) + foreach (var target in Witch.futureSpelled.Where(x => x.IsAlive())) { - var writer2 = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.LawyerPromotesToPursuer); - writer2.EndRPC(); - Lawyer.PromotesToPursuer(); - } + if (Lawyer.lawyer != null && target == Lawyer.target) + { + var writer2 = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.LawyerPromotesToPursuer); + writer2.EndRPC(); + Lawyer.PromotesToPursuer(); + } - if (Executioner.executioner.IsAlive() && target == Executioner.target) - { - var writer2 = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.ExecutionerPromotesRole); - writer2.EndRPC(); - Executioner.PromotesRole(); - } + if (Executioner.executioner.IsAlive() && target == Executioner.target) + { + var writer2 = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.ExecutionerPromotesRole); + writer2.EndRPC(); + Executioner.PromotesRole(); + } - var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.UncheckedExilePlayer); - writer.Write(target.PlayerId); - writer.EndRPC(); - RPCProcedure.uncheckedExilePlayer(target.PlayerId); + var writer = StartRPC(CachedPlayer.LocalPlayer.PlayerControl, CustomRPC.UncheckedExilePlayer); + writer.Write(target.PlayerId); + writer.EndRPC(); + RPCProcedure.uncheckedExilePlayer(target.PlayerId); - GameHistory.RpcOverrideDeathReasonAndKiller(target, CustomDeathReason.WitchExile, Witch.witch); + GameHistory.RpcOverrideDeathReasonAndKiller(target, CustomDeathReason.WitchExile, Witch.witch); + } } } + Eraser.futureErased = new List(); + Shifter.futureShift = null; Witch.futureSpelled = new List(); + if (Specter.Player != null && Specter.Player?.Data?.IsDead == true && Specter.revive) + { + Specter.Player.Revive(); + Specter.revive = false; + } + // Medium spawn souls if (Medium.medium != null && CachedPlayer.LocalPlayer.PlayerControl == Medium.medium) { @@ -451,11 +462,6 @@ private static void WrapUpPostfix(GameData.PlayerInfo exiled) } } - // AntiTeleport set position - AntiTeleport.setPosition(); - - if (CustomOptionHolder.randomGameStartPosition.GetBool()) MapData.RandomSpawnPlayers(); - if (InfoSleuth.infoSleuth != null && InfoSleuth.target != null && InfoSleuth.infoSleuth == PlayerControl.LocalPlayer) { var isNotCrew = (isNeutral(InfoSleuth.target) || InfoSleuth.target.isImpostor()) ^ Vortox.Reversal; @@ -507,10 +513,11 @@ static string getTeam(PlayerControl player) if (!Yoyo.markStaysOverMeeting) Silhouette.clearSilhouettes(); - if (AmongUsClient.Instance.AmHost) - { - LastImpostor.promoteToLastImpostor(); - } + // AntiTeleport set position + AntiTeleport.setPosition(); + + if (CustomOptionHolder.randomGameStartPosition.GetBool()) MapData.RandomSpawnPlayers(); + } [HarmonyPatch(typeof(ExileController), nameof(ExileController.WrapUp))] diff --git a/TheOtherRoles/Patches/PlayerControlPatch.cs b/TheOtherRoles/Patches/PlayerControlPatch.cs index 07978629..8ff3994b 100644 --- a/TheOtherRoles/Patches/PlayerControlPatch.cs +++ b/TheOtherRoles/Patches/PlayerControlPatch.cs @@ -22,15 +22,15 @@ public static class PlayerControlFixedUpdatePatch private static bool mushroomSaboWasActive; // Helpers - private static PlayerControl setTarget(bool onlyCrewmates = false, bool targetPlayersInVents = false, - List untargetablePlayers = null, PlayerControl targetingPlayer = null) + public static PlayerControl SetTarget(bool onlyCrewmates = false, bool targetPlayersInVents = false, + IEnumerable untargetablePlayers = null, PlayerControl targetingPlayer = null, float KillDistances = 0f) { PlayerControl result = null; var num = GameOptionsData.KillDistances[Mathf.Clamp(GameOptionsManager.Instance.currentNormalGameOptions.KillDistance, 0, 3)]; if (!MapUtilities.CachedShipStatus) return result; if (targetingPlayer == null) targetingPlayer = CachedPlayer.LocalPlayer.PlayerControl; if (targetingPlayer.Data.IsDead) return result; - if (PlayerControl.LocalPlayer == Arsonist.arsonist) num += 0.5f; + num += KillDistances; var truePosition = targetingPlayer.GetTruePosition(); foreach (var playerInfo in GameData.Instance.AllPlayers.GetFastEnumerator()) @@ -58,7 +58,7 @@ private static PlayerControl setTarget(bool onlyCrewmates = false, bool targetPl return result; } - private static void setPlayerOutline(PlayerControl target, Color color) + public static void SetPlayerOutline(PlayerControl target, Color color) { if (target == null || target.cosmetics?.currentBodySprite?.BodySprite == null) return; @@ -1388,7 +1388,10 @@ public static void Postfix(PlayerControl __instance) if (!InGame) return; - UpdateSetTarget(); + impostorSetTarget(); + jackalSetTarget(); + akujoSetTarget(); + // EvilTrapper evilTrapperUpdate(); // Time Master @@ -1467,160 +1470,17 @@ public static void Postfix(PlayerControl __instance) } } - public static void UpdateSetTarget() - { - if (InMeeting) return; - - impostorSetTarget(); - morphlingSetTarget(); - vampireSetTarget(); - eraserSetTarget(); - blackMailerSetTarget(); - ninjaSetTarget(); - witchSetTarget(); - warlockSetTarget(); - bomberSetTarget(); - - jackalSetTarget(); - sidekickSetTarget(); - pavlovsownerSetTarget(); - pavlovsdogsSetTarget(); - arsonistSetTarget(); - werewolfSetTarget(); - juggernautSetTarget(); - doomsayerSetTarget(); - swooperSetTarget(); - pursuerSetTarget(); - survivorSetTarget(); - thiefSetTarget(); - partTimerSetTarget(); - akujoSetTarget(); - PelicanSetTarget(); - - securityGuardSetTarget(); - bodyGuardSetTarget(); - mediumSetTarget(); - trackerSetTarget(); - sheriffSetTarget(); - prophetSetTarget(); - medicSetTarget(); - - shifterSetTarget(); - } - - - private static void medicSetTarget() - { - if (Medic.medic == null || Medic.medic != CachedPlayer.LocalPlayer.PlayerControl) return; - Medic.currentTarget = setTarget(); - if (!Medic.usedShield) setPlayerOutline(Medic.currentTarget, Medic.shieldedColor); - } - - private static void prophetSetTarget() - { - if (Prophet.prophet == null || CachedPlayer.LocalPlayer.PlayerControl != Prophet.prophet) return; - Prophet.currentTarget = setTarget(); - if (Prophet.examinesLeft > 0) setPlayerOutline(Prophet.currentTarget, Prophet.color); - } - - private static void partTimerSetTarget() - { - if (PartTimer.partTimer == null || PartTimer.partTimer != CachedPlayer.LocalPlayer.PlayerControl) return; - PartTimer.currentTarget = setTarget(); - if (PartTimer.target != null) setPlayerOutline(PartTimer.currentTarget, PartTimer.color); - } - - private static void bomberSetTarget() - { - setBomberBombTarget(); - if (Bomber.bomber == null || Bomber.bomber != CachedPlayer.LocalPlayer.PlayerControl) return; - Bomber.currentTarget = setTarget(); - if (Bomber.hasBombPlayer == null) setPlayerOutline(Bomber.currentTarget, Bomber.color); - } - - private static void trackerSetTarget() - { - if (Tracker.tracker == null || Tracker.tracker != CachedPlayer.LocalPlayer.PlayerControl) return; - Tracker.currentTarget = setTarget(); - if (!Tracker.usedTracker) setPlayerOutline(Tracker.currentTarget, Tracker.color); - } - - private static void vampireSetTarget() - { - if (Vampire.vampire == null || Vampire.vampire != CachedPlayer.LocalPlayer.PlayerControl) return; - - PlayerControl target = null; - - var untargetablePlayers = new List(); - - if (Spy.spy != null) - { - if (Spy.impostorsCanKillAnyone) - { - target = setTarget(false, true); - } - else - { - target = setTarget(true, true); - } - } - else - { - target = setTarget(true, true); - } - - bool targetNearGarlic = false; - if (target != null) - foreach (var garlic in Garlic.garlics) - if (Vector2.Distance(garlic.garlic.transform.position, target.transform.position) <= 1.91f) - targetNearGarlic = true; - Vampire.targetNearGarlic = targetNearGarlic; - Vampire.currentTarget = target; - setPlayerOutline(Vampire.currentTarget, Vampire.color); - } - private static void jackalSetTarget() { if (Jackal.jackal.Any(x => x.IsAlive() && x.PlayerId == CachedPlayer.LocalId)) { var untargetablePlayers = new List(); - foreach (var p in Jackal.jackal) - { - untargetablePlayers.Add(p); - } + untargetablePlayers.AddRange(Jackal.jackal); if (Jackal.Sidekick != null) untargetablePlayers.Add(Jackal.Sidekick); if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); - Jackal.currentTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Jackal.currentTarget, Palette.ImpostorRed); - } - } - - private static void sidekickSetTarget() - { - if (Jackal.Sidekick == null || Jackal.Sidekick != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetablePlayers = new List(); - foreach (var p in Jackal.jackal) - { - untargetablePlayers.Add(p); + Jackal.currentTarget = SetTarget(untargetablePlayers: untargetablePlayers); + SetPlayerOutline(Jackal.currentTarget, Palette.ImpostorRed); } - if (Jackal.Sidekick != null) untargetablePlayers.Add(Jackal.Sidekick); - if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); - Jackal.currentTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Jackal.currentTarget, Palette.ImpostorRed); - } - - private static void setBomberBombTarget() - { - if (Bomber.bomber == null || Bomber.hasBombPlayer != CachedPlayer.LocalPlayer.PlayerControl) return; - Bomber.currentBombTarget = setTarget(); - //if (Bomber.hasBomb != null) setPlayerOutline(Bomber.currentBombTarget, Bomber.color); - } - - private static void bodyGuardSetTarget() - { - if (BodyGuard.bodyguard == null || BodyGuard.bodyguard != CachedPlayer.LocalPlayer.PlayerControl) return; - BodyGuard.currentTarget = setTarget(); - if (!BodyGuard.usedGuard) setPlayerOutline(Medic.currentTarget, Medic.shieldedColor); } public static void akujoSetTarget() @@ -1629,37 +1489,8 @@ public static void akujoSetTarget() var untargetables = new List(); if (Akujo.honmei != null) untargetables.Add(Akujo.honmei); if (Akujo.keeps != null) untargetables.AddRange(Akujo.keeps); - Akujo.currentTarget = setTarget(untargetablePlayers: untargetables); - if (Akujo.honmei == null || Akujo.keepsLeft > 0) setPlayerOutline(Akujo.currentTarget, Akujo.color); - } - - private static void PelicanSetTarget() - { - if (Pelican.Player == null || Pelican.Player != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetablePlayers = new List(); - if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); // Exclude Jackal from targeting the Mini unless it has grown up - Pelican.currentTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Pelican.currentTarget, Palette.ImpostorRed); - } - - private static void swooperSetTarget() - { - if (Swooper.swooper == null || Swooper.swooper != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetablePlayers = new List(); - if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); // Exclude Jackal from targeting the Mini unless it has grown up - Swooper.currentTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Swooper.currentTarget, Palette.ImpostorRed); - } - - private static void eraserSetTarget() - { - if (Eraser.eraser == null || Eraser.eraser != CachedPlayer.LocalPlayer.PlayerControl) return; - - var untargetables = new List(); - if (Spy.spy != null) untargetables.Add(Spy.spy); - Eraser.currentTarget = setTarget(!Eraser.canEraseAnyone, - untargetablePlayers: Eraser.canEraseAnyone ? [] : untargetables); - setPlayerOutline(Eraser.currentTarget, Eraser.color); + Akujo.currentTarget = SetTarget(untargetablePlayers: untargetables); + if (Akujo.honmei == null || Akujo.keepsLeft > 0) SetPlayerOutline(Akujo.currentTarget, Akujo.color); } private static void impostorSetTarget() @@ -1667,7 +1498,6 @@ private static void impostorSetTarget() if (!CachedPlayer.LocalPlayer.Data.Role.IsImpostor || !CachedPlayer.LocalPlayer.PlayerControl.CanMove || CachedPlayer.LocalPlayer.Data.IsDead) { - // !isImpostor || !canMove || isDead FastDestroyableSingleton.Instance.KillButton.SetTarget(null); return; } @@ -1677,244 +1507,20 @@ private static void impostorSetTarget() { if (Spy.impostorsCanKillAnyone) { - target = setTarget(false, true); + target = SetTarget(false, true); } else { - target = setTarget(true, true, [Spy.spy]); + target = SetTarget(true, true, [Spy.spy]); } } else { - target = setTarget(true, true); + target = SetTarget(true, true); } FastDestroyableSingleton.Instance.KillButton.SetTarget(target); // Includes setPlayerOutline(target, Palette.ImpstorRed); } - - private static void warlockSetTarget() - { - if (Warlock.warlock == null || Warlock.warlock != CachedPlayer.LocalPlayer.PlayerControl) return; - if (Warlock.curseVictim != null && (Warlock.curseVictim.Data.Disconnected || Warlock.curseVictim.Data.IsDead)) - // If the cursed victim is disconnected or dead reset the curse so a new curse can be applied - Warlock.resetCurse(); - if (Warlock.curseVictim == null) - { - Warlock.currentTarget = setTarget(); - setPlayerOutline(Warlock.currentTarget, Warlock.color); - } - else - { - Warlock.curseVictimTarget = setTarget(targetingPlayer: Warlock.curseVictim); - setPlayerOutline(Warlock.curseVictimTarget, Warlock.color); - } - } - - public static void securityGuardSetTarget() - { - if (SecurityGuard.securityGuard == null || SecurityGuard.securityGuard != CachedPlayer.LocalPlayer.PlayerControl || - MapUtilities.CachedShipStatus == null || MapUtilities.CachedShipStatus.AllVents == null) return; - - Vent target = null; - var truePosition = CachedPlayer.LocalPlayer.PlayerControl.GetTruePosition(); - var closestDistance = float.MaxValue; - for (var i = 0; i < MapUtilities.CachedShipStatus.AllVents.Length; i++) - { - var vent = MapUtilities.CachedShipStatus.AllVents[i]; - if (vent.gameObject.name.StartsWith("JackInTheBoxVent_") || - vent.gameObject.name.StartsWith("SealedVent_") || - vent.gameObject.name.StartsWith("FutureSealedVent_")) continue; - if (SubmergedCompatibility.IsSubmerged && vent.Id == 9) continue; // cannot seal submergeds exit only vent! - var distance = Vector2.Distance(vent.transform.position, truePosition); - if (distance <= vent.UsableDistance && distance < closestDistance) - { - closestDistance = distance; - target = vent; - } - } - - SecurityGuard.ventTarget = target; - } - - private static void pavlovsownerSetTarget() - { - if (Pavlovsdogs.pavlovsowner == null || Pavlovsdogs.pavlovsowner != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetablePlayers = new List(); - if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); - Pavlovsdogs.currentTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Pavlovsdogs.currentTarget, Palette.ImpostorRed); - } - - public static void mediumSetTarget() - { - if (Medium.medium == null || Medium.medium != CachedPlayer.LocalPlayer.PlayerControl || - Medium.medium.Data.IsDead || Medium.deadBodies == null || - MapUtilities.CachedShipStatus?.AllVents == null) return; - - DeadPlayer target = null; - var truePosition = CachedPlayer.LocalPlayer.PlayerControl.GetTruePosition(); - var closestDistance = float.MaxValue; - var usableDistance = MapUtilities.CachedShipStatus.AllVents.FirstOrDefault().UsableDistance; - foreach (var (dp, ps) in Medium.deadBodies) - { - var distance = Vector2.Distance(ps, truePosition); - if (distance <= usableDistance && distance < closestDistance) - { - closestDistance = distance; - target = dp; - } - } - - Medium.target = target; - } - - private static void pavlovsdogsSetTarget() - { - if (Pavlovsdogs.pavlovsdogs == null || !Pavlovsdogs.pavlovsdogs.Any(p => p == CachedPlayer.LocalPlayer.PlayerControl)) return; - var untargetablePlayers = new List(); - foreach (var p in Pavlovsdogs.pavlovsdogs) - { - untargetablePlayers.Add(p); - } - if (Pavlovsdogs.pavlovsowner != null) untargetablePlayers.Add(Pavlovsdogs.pavlovsowner); - if (Mini.mini != null && !Mini.isGrownUp()) untargetablePlayers.Add(Mini.mini); - Pavlovsdogs.killTarget = setTarget(untargetablePlayers: untargetablePlayers); - setPlayerOutline(Pavlovsdogs.killTarget, Palette.ImpostorRed); - } - - private static void werewolfSetTarget() - { - if (Werewolf.werewolf == null || Werewolf.werewolf != CachedPlayer.LocalPlayer.PlayerControl) return; - Werewolf.currentTarget = setTarget(); - } - - private static void juggernautSetTarget() - { - if (Juggernaut.juggernaut == null || Juggernaut.juggernaut != CachedPlayer.LocalPlayer.PlayerControl) return; - Juggernaut.currentTarget = setTarget(); - } - - - private static void doomsayerSetTarget() - { - if (Doomsayer.doomsayer == null || Doomsayer.doomsayer != CachedPlayer.LocalPlayer.PlayerControl) return; - Doomsayer.currentTarget = setTarget(); - } - - private static void blackMailerSetTarget() - { - if (Blackmailer.blackmailer == null || - Blackmailer.blackmailer != CachedPlayer.LocalPlayer.PlayerControl) return; - Blackmailer.currentTarget = setTarget(); - setPlayerOutline(Medic.currentTarget, Blackmailer.blackmailedColor); - } - - private static void pursuerSetTarget() - { - if (Pursuer.Player == null || !Pursuer.Player.Contains(CachedPlayer.LocalPlayer.PlayerControl)) return; - Pursuer.target = setTarget(); - setPlayerOutline(Pursuer.target, Pursuer.color); - } - - private static void survivorSetTarget() - { - if (Survivor.Player == null || !Survivor.Player.Contains(CachedPlayer.LocalPlayer.PlayerControl)) return; - Survivor.target = setTarget(); - setPlayerOutline(Survivor.target, Survivor.color); - } - - private static void witchSetTarget() - { - if (Witch.witch == null || Witch.witch != CachedPlayer.LocalPlayer.PlayerControl) return; - List untargetables; - if (Witch.spellCastingTarget != null) - { - // Don't switch the target from the the one you're currently casting a spell on - untargetables = PlayerControl.AllPlayerControls.ToArray().Where(x => x.PlayerId != Witch.spellCastingTarget.PlayerId).ToList(); - } - else - { - // Also target players that have already been spelled, to hide spells that were blanks/blocked by shields - untargetables = new(); - if (Spy.spy != null && !Witch.canSpellAnyone) untargetables.Add(Spy.spy); - } - - Witch.currentTarget = setTarget(!Witch.canSpellAnyone, untargetablePlayers: untargetables); - setPlayerOutline(Witch.currentTarget, Witch.color); - } - - private static void ninjaSetTarget() - { - if (Ninja.ninja == null || Ninja.ninja != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetables = new List(); - if (Spy.spy != null && !Spy.impostorsCanKillAnyone) untargetables.Add(Spy.spy); - if (Mini.mini != null && !Mini.isGrownUp()) untargetables.Add(Mini.mini); - Ninja.currentTarget = - setTarget(Spy.spy == null || !Spy.impostorsCanKillAnyone, untargetablePlayers: untargetables); - setPlayerOutline(Ninja.currentTarget, Ninja.color); - } - - private static void thiefSetTarget() - { - if (Thief.thief == null || Thief.thief != CachedPlayer.LocalPlayer.PlayerControl) return; - var untargetables = new List(); - if (Mini.mini != null && !Mini.isGrownUp()) untargetables.Add(Mini.mini); - Thief.currentTarget = setTarget(untargetablePlayers: untargetables); - setPlayerOutline(Thief.currentTarget, Thief.color); - } - - private static void shifterSetTarget() - { - if (Shifter.shifter == null || Shifter.shifter != CachedPlayer.LocalPlayer.PlayerControl) return; - Shifter.currentTarget = setTarget(); - if (Shifter.futureShift == null) setPlayerOutline(Shifter.currentTarget, Color.yellow); - } - - private static void morphlingSetTarget() - { - if (Morphling.morphling == null || Morphling.morphling != CachedPlayer.LocalPlayer.PlayerControl) return; - Morphling.currentTarget = setTarget(); - setPlayerOutline(Morphling.currentTarget, Morphling.color); - } - - private static void sheriffSetTarget() - { - if (Sheriff.Player?.Any(x => x.IsAlive() && x == PlayerControl.LocalPlayer) == true) - { - Sheriff.currentTarget = setTarget(); - setPlayerOutline(Sheriff.currentTarget, Sheriff.color); - } - - if (Sheriff.Deputy != null && Sheriff.Deputy == PlayerControl.LocalPlayer) - { - Sheriff.currentTarget = setTarget(); - setPlayerOutline(Sheriff.currentTarget, Sheriff.color); - } - } - - public static void arsonistSetTarget() - { - if (Arsonist.arsonist == null || Arsonist.arsonist != CachedPlayer.LocalPlayer.PlayerControl) return; - List untargetables; - if (Arsonist.douseTarget != null) - { - untargetables = new(); - foreach (var cachedPlayer in CachedPlayer.AllPlayers) - if (cachedPlayer.PlayerId != Arsonist.douseTarget.PlayerId) - untargetables.Add(cachedPlayer); - } - else - { - untargetables = Arsonist.dousedPlayers; - } - - Arsonist.currentTarget = setTarget(untargetablePlayers: untargetables); - if (Arsonist.currentTarget != null) setPlayerOutline(Arsonist.currentTarget, Arsonist.color); - - Arsonist.currentTarget2 = setTarget(false, true); - if (Arsonist.currentTarget2 != null) setPlayerOutline(Arsonist.currentTarget2, Arsonist.color); - } - } [HarmonyPatch(typeof(PlayerPhysics), nameof(PlayerPhysics.WalkPlayerTo))] diff --git a/TheOtherRoles/Patches/ShipStatusPatch.cs b/TheOtherRoles/Patches/ShipStatusPatch.cs index 2af1cf38..01e5d84d 100644 --- a/TheOtherRoles/Patches/ShipStatusPatch.cs +++ b/TheOtherRoles/Patches/ShipStatusPatch.cs @@ -62,15 +62,15 @@ public static bool Prefix(ref float __result, ShipStatus __instance, [HarmonyArg __result = __instance.MaxLightRadius * GameOptionsManager.Instance.currentNormalGameOptions.CrewLightMod * Torch.vision; } - if (Specter.Player?.PlayerId == player.PlayerId) + if (Mayor.mayor.IsAlive() && Mayor.mayor.PlayerId == player.PlayerId && Mayor.Revealed) // Mayor Vision { - __result = __instance.MaxLightRadius * GameOptionsManager.Instance.currentNormalGameOptions.CrewLightMod; + __result = Mathf.Lerp(__instance.MinLightRadius, __instance.MaxLightRadius * (1f - (Mayor.vision * 0.1f)), t) * + GameOptionsManager.Instance.currentNormalGameOptions.CrewLightMod; } - if (Mayor.mayor != null && Mayor.mayor.PlayerId == player.PlayerId && Mayor.Revealed) // Mayor Vision + if (Specter.Player?.PlayerId == player.PlayerId) { - __result = Mathf.Lerp(__instance.MinLightRadius, __instance.MaxLightRadius * (1f - (Mayor.vision * 0.1f)), t) * - GameOptionsManager.Instance.currentNormalGameOptions.CrewLightMod; + __result = __instance.MaxLightRadius * GameOptionsManager.Instance.currentNormalGameOptions.CrewLightMod; } return false; diff --git a/TheOtherRoles/Patches/UpdatePatch.cs b/TheOtherRoles/Patches/UpdatePatch.cs index 70196f8d..f31b8a67 100644 --- a/TheOtherRoles/Patches/UpdatePatch.cs +++ b/TheOtherRoles/Patches/UpdatePatch.cs @@ -509,6 +509,11 @@ private static void Postfix(HudManager __instance) updateMapButton(__instance); if (!MeetingHud.Instance) __instance.AbilityButton?.Update(); + if (Specter.Player != null && PlayerControl.LocalPlayer == Specter.Player && InGame && !InMeeting) + { + __instance.ShadowQuad?.gameObject?.SetActive(true); + } + // Fix dead player's pets being visible by just always updating whether the pet should be visible at all. foreach (PlayerControl target in CachedPlayer.AllPlayers) { diff --git a/TheOtherRoles/RPC.cs b/TheOtherRoles/RPC.cs index 085bccc2..c4ce30aa 100644 --- a/TheOtherRoles/RPC.cs +++ b/TheOtherRoles/RPC.cs @@ -35,16 +35,19 @@ public enum CustomRPC SetGhostRole, VersionHandshake, UseUncheckedVent, - UncheckedMurderPlayer, - UncheckedCmdReportDeadBody, - UncheckedExilePlayer, DynamicMapOption, SetGameStarting, StopStart, ShareGameMode = 95, + UncheckedMurderPlayer, + UncheckedCmdReportDeadBody, + UncheckedExilePlayer, + RevivePlayer, + HostKill, + // Role functionality - FixLights = 100, + FixLights = 110, FixSubmergedOxygen, CleanBody, DissectionBody, @@ -65,7 +68,6 @@ public enum CustomRPC SwapperSwap, MorphlingMorph, CamouflagerCamouflage, - //DoomsayerMeeting, AkujoSetHonmei, AkujoSetKeep, AkujoSuicide, @@ -149,9 +151,6 @@ public enum CustomRPC // Gamemode SetGuesserGm, - SetRevealed, - HostKill, - HostRevive, // Other functionality ShareGhostInfo, @@ -583,10 +582,6 @@ public static void setGhostRole(byte playerId, byte roleId) break; case RoleId.Specter: Specter.Player = player; - if (PlayerControl.LocalPlayer == player) - { - DestroyableSingleton.Instance.ShadowQuad.gameObject.SetActive(true); - } break; } } @@ -859,19 +854,10 @@ public static void hostKill(byte targetId) } } - public static void hostRevive(byte targetId) + public static void RevivePlayer(byte targetId) { var target = playerById(targetId); - target.Revive(); - DeadBody[] array = Object.FindObjectsOfType(); - foreach (var body in array) - { - if (body.ParentId != targetId) continue; - - Object.Destroy(body.gameObject); - target.Data.IsDead = false; - break; - } + target?.Revive(); } public static void shifterShift(byte targetId) @@ -924,6 +910,12 @@ public static void swapperSwap(byte playerId1, byte playerId2) public static void grenadierFlash(bool clear = false) { + if (clear) + { + Grenadier.controls.Clear(); + return; + } + var closestPlayers = GetClosestPlayers(Grenadier.Player.GetTruePosition(), Grenadier.radius, true); Grenadier.controls = closestPlayers; foreach (var player in closestPlayers) @@ -2472,7 +2464,7 @@ private static bool Prefix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1) break; case CustomRPC.JackalCanSwooper: - RPCProcedure.jackalCanSwooper(reader.ReadByte() == byte.MaxValue); + RPCProcedure.jackalCanSwooper(reader.ReadBoolean()); break; case CustomRPC.InfoSleuthSetTarget: @@ -2483,8 +2475,8 @@ private static bool Prefix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1) RPCProcedure.balancerBalance(reader.ReadByte(), reader.ReadByte(), reader.ReadByte()); break; - case CustomRPC.HostRevive: - RPCProcedure.hostRevive(reader.ReadByte()); + case CustomRPC.RevivePlayer: + RPCProcedure.RevivePlayer(reader.ReadByte()); break; case CustomRPC.HostKill: RPCProcedure.hostKill(reader.ReadByte()); diff --git a/TheOtherRoles/Resources/stringData.json b/TheOtherRoles/Resources/stringData.json index 7e218e1f..b9ac25f7 100644 --- a/TheOtherRoles/Resources/stringData.json +++ b/TheOtherRoles/Resources/stringData.json @@ -371,6 +371,10 @@ "0": "Block Skipping In Emergency Meetings", "13": "紧急会议禁止跳过" }, + "disableMeeting": { + "0": "Disable Meeting", + "13": "禁用报告功能" + }, "noVoteIsSelfVote": { "0": "No Vote Is Self Vote", "13": "不投票默认投自己" @@ -1261,12 +1265,15 @@ "0": "Specter (Ghost)", "13": "怨灵 (幽灵职业)" }, - "specterAfterMeeting": { - "13": "下一轮会议结束才可复活" - }, "specterDuration": { "13": "复活前摇" }, + "specterAfterMeetingTakeRole": { + "13": "本轮会议结束后才可拾取尸体" + }, + "specterAfterMeetingRevived": { + "13": "拾取尸体后本轮会议结束才可复活" + }, "jesterCanCallEmergency": { "0": "Jester Can Call Emergency Meeting", "13": "小丑可召开会议" @@ -2363,7 +2370,7 @@ }, "TouTitle": { "0": "TheOtherUs-Edited", - "13": "TheOtherUs-Edited" + "13": "我们的超多职业" }, "inGameTitle": { "0": "Modified by mxyx.club\nBased on TheOtherUs", diff --git a/TheOtherRoles/Roles/Ghost/Specter.cs b/TheOtherRoles/Roles/Ghost/Specter.cs index 41a06cbc..0ddee364 100644 --- a/TheOtherRoles/Roles/Ghost/Specter.cs +++ b/TheOtherRoles/Roles/Ghost/Specter.cs @@ -7,27 +7,32 @@ public class Specter { public static PlayerControl Player; public static Color color = new Color32(154, 147, 80, byte.MaxValue); - public static bool remember; - public static float duration; + public static float duration; public static bool resetRole; + public static bool afterMeetingRevived; + + public static bool revive; + public static bool remember; public static void ClearAndReload() { Player = null; - remember = !CustomOptionHolder.specterAfterMeeting.GetBool(); + revive = false; + remember = !CustomOptionHolder.specterAfterMeetingTakeRole.GetBool(); + afterMeetingRevived = CustomOptionHolder.specterAfterMeetingRevived.GetBool(); resetRole = CustomOptionHolder.specterResetRole.GetBool(); duration = CustomOptionHolder.specterDuration.GetFloat(); } public static void TakeRole(byte targetId) { - var target = playerById(targetId); - if (Player == null || target == null) return; var local = Player; + var target = playerById(targetId); + if (local == null || target == null) return; + RPCProcedure.erasePlayerRoles(local.PlayerId); - var targetInfo = RoleInfo.getRoleInfoForPlayer(target); - var roleInfo = targetInfo.FirstOrDefault(info => info.roleType is not RoleType.Modifier and not RoleType.Ghost); + var roleInfo = RoleInfo.getRoleInfoForPlayer(target).FirstOrDefault(x => x.roleType is not RoleType.Modifier and not RoleType.Ghost); if (target.isImpostor()) turnToImpostor(local); DeadBody[] array = Object.FindObjectsOfType(); @@ -40,7 +45,9 @@ public static void TakeRole(byte targetId) } } - if (roleInfo != null) switch (roleInfo.roleId) + if (roleInfo != null) + { + switch (roleInfo.roleId) { case RoleId.Amnisiac: Amnisiac.Player.Add(local); @@ -64,6 +71,7 @@ public static void TakeRole(byte targetId) Butcher.butcher = local; break; case RoleId.Mimic: + if (Mimic.mimic != null) RPCProcedure.erasePlayerRoles(Mimic.mimic.PlayerId); if (resetRole) Mimic.clearAndReload(); Mimic.mimic = local; break; @@ -323,8 +331,13 @@ public static void TakeRole(byte targetId) Balancer.balancer = local; break; } - AntiTeleport.antiTeleport.RemoveAll(x => x.PlayerId == local.PlayerId); - RPCProcedure.clearGhostRoles(local.PlayerId); + } + + if (afterMeetingRevived) + { + revive = true; + return; + } local.Revive(); } } \ No newline at end of file diff --git a/TheOtherRoles/Roles/Impostor/Grenadier.cs b/TheOtherRoles/Roles/Impostor/Grenadier.cs index 7bbe377a..455a3bef 100644 --- a/TheOtherRoles/Roles/Impostor/Grenadier.cs +++ b/TheOtherRoles/Roles/Impostor/Grenadier.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Hazel; using TheOtherRoles.Utilities; using UnityEngine; @@ -43,7 +42,6 @@ public static void showFlash(Color color, float duration = 10f, float alpha = 1f writer.Write(true); writer.EndRPC(); RPCProcedure.grenadierFlash(true); - controls.Clear(); } return; } @@ -64,7 +62,6 @@ public static void showFlash(Color color, float duration = 10f, float alpha = 1f writer.Write(true); writer.EndRPC(); RPCProcedure.grenadierFlash(true); - controls.Clear(); } } else diff --git a/TheOtherRoles/Roles/Neutral/Amnisiac.cs b/TheOtherRoles/Roles/Neutral/Amnisiac.cs index 7f435721..235490a5 100644 --- a/TheOtherRoles/Roles/Neutral/Amnisiac.cs +++ b/TheOtherRoles/Roles/Neutral/Amnisiac.cs @@ -13,7 +13,6 @@ public class Amnisiac public static List Player = new(); public static List localArrows = new(); public static Color color = new(0.5f, 0.7f, 1f, 1f); - public static List poolIcons = new(); public static bool showArrows = true; public static bool resetRole; @@ -380,8 +379,10 @@ public static void TakeRole(byte targetId, byte playerId) Balancer.balancer = local; break; } - Player.RemoveAll(x => x.PlayerId == local.PlayerId); + foreach (var arrow in localArrows) + Object.Destroy(arrow.arrow); + localArrows.Clear(); } } diff --git a/TheOtherRoles/Roles/Neutral/Arsonist.cs b/TheOtherRoles/Roles/Neutral/Arsonist.cs index 16ac2894..8ab56b8b 100644 --- a/TheOtherRoles/Roles/Neutral/Arsonist.cs +++ b/TheOtherRoles/Roles/Neutral/Arsonist.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using TheOtherRoles.Utilities; using UnityEngine; @@ -23,15 +23,6 @@ public static class Arsonist public static ResourceSprite igniteSprite = new("IgniteButton.png"); - public static bool dousedEveryoneAlive() - { - return CachedPlayer.AllPlayers.All(x => - { - return x.PlayerControl == arsonist || x.Data.IsDead || x.Data.Disconnected || - dousedPlayers.Any(y => y.PlayerId == x.PlayerId); - }); - } - public static void clearAndReload() { arsonist = null; diff --git a/TheOtherRoles/Roles/Neutral/Jackal.cs b/TheOtherRoles/Roles/Neutral/Jackal.cs index e5b67581..1fe57aee 100644 --- a/TheOtherRoles/Roles/Neutral/Jackal.cs +++ b/TheOtherRoles/Roles/Neutral/Jackal.cs @@ -40,7 +40,7 @@ public static void setSwoop() var chance = canSwoop = rnd.NextDouble() < chanceSwoop; var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.JackalCanSwooper, SendOption.Reliable); - writer.Write(chance ? byte.MaxValue : 0); + writer.Write(chance); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.jackalCanSwooper(chance); } diff --git a/TheOtherRoles/Roles/RoleHelpers.cs b/TheOtherRoles/Roles/RoleHelpers.cs index f92898bf..4f248361 100644 --- a/TheOtherRoles/Roles/RoleHelpers.cs +++ b/TheOtherRoles/Roles/RoleHelpers.cs @@ -421,12 +421,12 @@ public static void Postfix([HarmonyArgument(0)] PlayerControl player) public static bool otherNeutral(PlayerControl player) { + if (Pelican.Player == player) return false; + if (PartTimer.partTimer == player && PartTimer.target == null) return true; + if (Lawyer.lawyer == player && Lawyer.target.IsDead()) return true; if (isNeutral(player) && !Jackal.jackal.Contains(player) && player != Jackal.Sidekick && player != Pavlovsdogs.pavlovsowner && !Pavlovsdogs.pavlovsdogs.Contains(player)) return true; - if (Pelican.Player == player) return true; - if (PartTimer.partTimer == player && PartTimer.target == null) return true; - if (Lawyer.lawyer == player && Lawyer.target.IsDead()) return true; return false; } diff --git a/TheOtherRoles/TheOtherRoles.csproj b/TheOtherRoles/TheOtherRoles.csproj index eb5a0b07..75bd9f01 100644 --- a/TheOtherRoles/TheOtherRoles.csproj +++ b/TheOtherRoles/TheOtherRoles.csproj @@ -1,7 +1,7 @@  net6.0 - 1.1.2.0 + 1.1.2.1 TheOtherUs mxyx-club latest diff --git a/TheOtherRoles/Utilities/MapData.cs b/TheOtherRoles/Utilities/MapData.cs index 46832e4f..6c4e27b6 100644 --- a/TheOtherRoles/Utilities/MapData.cs +++ b/TheOtherRoles/Utilities/MapData.cs @@ -4,7 +4,7 @@ namespace TheOtherRoles.Utilities; -public class MapData +public static class MapData { public static List PositionCached = new(); public static List VentCached = new(); @@ -251,6 +251,28 @@ public static void RandomSpawnPlayers() Message($"Span to Vector3: {newPosition.x}, {newPosition.y}, {newPosition.z}"); } + public static Vector3 GetCloseSpawnPosition(this PlayerControl player) + { + var list = new List(); + list.AddRange(MapSpawnPosition(false)); + list.AddRange(FindVentSpawnPositions(false)); + + var closePos = list[0]; + float closeDistance = Vector3.Distance(player.transform.position, closePos); + + foreach (var pos in list) + { + float distance = Vector3.Distance(player.transform.position, pos); + if (distance < closeDistance) + { + closePos = pos; + closeDistance = distance; + } + } + Message($"Revive Player {player.Data.PlayerName} To Vector3 {closePos}"); + return closePos; + } + public static void Clear() { VentCached.Clear();