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 8f3ccbb555..961d5fe483 100644 --- a/BossMod/Data/ActorState.cs +++ b/BossMod/Data/ActorState.cs @@ -418,9 +418,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 4b7376300d..a8bfc04ae0 100644 --- a/BossMod/Framework/WorldStateGameSync.cs +++ b/BossMod/Framework/WorldStateGameSync.cs @@ -813,6 +813,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/Replay/ReplayParserLog.cs b/BossMod/Replay/ReplayParserLog.cs index 44fe72dfb6..caa97deaca 100644 --- a/BossMod/Replay/ReplayParserLog.cs +++ b/BossMod/Replay/ReplayParserLog.cs @@ -528,6 +528,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);