From 928d62a0ef914d711b85203734d6502187b3fb16 Mon Sep 17 00:00:00 2001 From: Andrew Gilewsky Date: Mon, 30 Dec 2024 01:09:29 +0000 Subject: [PATCH] Fixed a bug with cancelled quest items & minor style fixes. --- BossMod/ActionTweaks/CancelCastTweak.cs | 7 +++++-- BossMod/Data/ActorState.cs | 5 +---- BossMod/Framework/WorldStateGameSync.cs | 1 + .../Endwalker/Savage/P9SKokytos/ArchaicRockbreaker.cs | 2 +- BossMod/Replay/ReplayParserLog.cs | 1 + 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/BossMod/ActionTweaks/CancelCastTweak.cs b/BossMod/ActionTweaks/CancelCastTweak.cs index feda357431..a8e99aeed0 100644 --- a/BossMod/ActionTweaks/CancelCastTweak.cs +++ b/BossMod/ActionTweaks/CancelCastTweak.cs @@ -29,11 +29,14 @@ private bool WantCancel() return false; var cast = _ws.Party.Player()?.CastInfo; - var target = _ws.Actors.Find(cast?.TargetID ?? 0); + if (cast == null || cast.Action.Type == ActionType.KeyItem) // don't auto cancel quest items, that's never a good idea + return false; + + var target = _ws.Actors.Find(cast.TargetID); if (target == null) return false; - var isRaise = Service.LuminaRow(cast?.Action.SpellId() ?? 0)?.DeadTargetBehaviour == 1; + var isRaise = Service.LuminaRow(cast.Action.SpellId())?.DeadTargetBehaviour == 1; if (!isRaise) return target.IsDead; diff --git a/BossMod/Data/ActorState.cs b/BossMod/Data/ActorState.cs index 5c47300917..0f61136fa8 100644 --- a/BossMod/Data/ActorState.cs +++ b/BossMod/Data/ActorState.cs @@ -414,9 +414,6 @@ public sealed record class OpEventNpcYell(ulong InstanceID, ushort Message) : Op public sealed record class OpEventOpenTreasure(ulong InstanceID) : Operation(InstanceID) { protected override void ExecActor(WorldState ws, Actor actor) => ws.Actors.EventOpenTreasure.Fire(actor); - public override void Write(ReplayRecorder.Output output) - { - output.EmitFourCC("OPNT"u8).EmitActor(InstanceID); - } + public override void Write(ReplayRecorder.Output output) => output.EmitFourCC("OPNT"u8).EmitActor(InstanceID); } } diff --git a/BossMod/Framework/WorldStateGameSync.cs b/BossMod/Framework/WorldStateGameSync.cs index 0d343a3642..c33b4c84fb 100644 --- a/BossMod/Framework/WorldStateGameSync.cs +++ b/BossMod/Framework/WorldStateGameSync.cs @@ -812,6 +812,7 @@ private unsafe void ProcessPacketRSVDataDetour(byte* packet) _processPacketRSVDataHook.Original(packet); _globalOps.Add(new WorldState.OpRSVData(MemoryHelper.ReadStringNullTerminated((nint)(packet + 4)), MemoryHelper.ReadString((nint)(packet + 0x34), *(int*)packet))); } + private unsafe void ProcessPacketOpenTreasureDetour(uint actorID, byte* packet) { _processPacketOpenTreasureHook.Original(actorID, packet); diff --git a/BossMod/Modules/Endwalker/Savage/P9SKokytos/ArchaicRockbreaker.cs b/BossMod/Modules/Endwalker/Savage/P9SKokytos/ArchaicRockbreaker.cs index 45e0b55a0a..1968c5ecd7 100644 --- a/BossMod/Modules/Endwalker/Savage/P9SKokytos/ArchaicRockbreaker.cs +++ b/BossMod/Modules/Endwalker/Savage/P9SKokytos/ArchaicRockbreaker.cs @@ -112,7 +112,7 @@ private IEnumerable SafeSpots() { foreach (var a in safespots.Allowed(default)) { - var mid = ((a.Item1.Rad + a.Item2.Rad) * 0.5f).Radians(); + var mid = ((a.min.Rad + a.max.Rad) * 0.5f).Radians(); yield return safespots.Center + safespots.Radius * mid.ToDirection(); } } diff --git a/BossMod/Replay/ReplayParserLog.cs b/BossMod/Replay/ReplayParserLog.cs index 178741145e..9c2f43237f 100644 --- a/BossMod/Replay/ReplayParserLog.cs +++ b/BossMod/Replay/ReplayParserLog.cs @@ -430,6 +430,7 @@ private WorldState.OpEnvControl ParseEnvControl() _input.ReadUInt(true); return new(_input.ReadByte(true), _input.ReadUInt(true)); } + private WorldState.OpSystemLogMessage ParseSystemLog() { var id = _input.ReadUInt(false);