From 967057992eeac1d77680a2539845208306a51e7e Mon Sep 17 00:00:00 2001 From: Andrew Gilewsky Date: Wed, 20 Nov 2024 22:00:49 +0000 Subject: [PATCH] Fix stay/move activation times. --- BossMod/Components/StayMove.cs | 2 ++ .../Modules/Dawntrail/Extreme/Ex1Valigarmanda/Triscourge.cs | 2 +- BossMod/Modules/Dawntrail/Hunt/RankS/ArchAethereater.cs | 2 +- .../Endwalker/Alliance/A22AlthykNymeia/SpinnersWheel.cs | 4 ++-- .../Foray/DelubrumReginae/DRS8Queen/FieryIcyPortent.cs | 2 +- .../Shadowbringers/Foray/Duel/Duel5Menenius/Duel5Menenius.cs | 4 ++-- .../Shadowbringers/Ultimate/TEA/P4FateCalibrationAlpha.cs | 2 +- BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FinalWord.cs | 4 ++-- 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/BossMod/Components/StayMove.cs b/BossMod/Components/StayMove.cs index 17c10f3c2e..f1637d3711 100644 --- a/BossMod/Components/StayMove.cs +++ b/BossMod/Components/StayMove.cs @@ -27,6 +27,8 @@ public override void AddHints(int slot, Actor actor, TextHints hints) public override void AddAIHints(int slot, Actor actor, PartyRolesConfig.Assignment assignment, AIHints hints) { + if (PlayerStates[slot].Activation == default) + return; switch (PlayerStates[slot].Requirement) { case Requirement.Stay: diff --git a/BossMod/Modules/Dawntrail/Extreme/Ex1Valigarmanda/Triscourge.cs b/BossMod/Modules/Dawntrail/Extreme/Ex1Valigarmanda/Triscourge.cs index e4c4ecefcd..eeda52f003 100644 --- a/BossMod/Modules/Dawntrail/Extreme/Ex1Valigarmanda/Triscourge.cs +++ b/BossMod/Modules/Dawntrail/Extreme/Ex1Valigarmanda/Triscourge.cs @@ -61,7 +61,7 @@ public override void OnEventIcon(Actor actor, uint iconID, ulong targetID) { if (iconID == (uint)IconID.CalamitysChill && Raid.FindSlot(actor.InstanceID) is var slot && slot >= 0) { - PlayerStates[slot] = new(Requirement.Move, default); + PlayerStates[slot] = new(Requirement.Move, WorldState.FutureTime(7)); ++NumImminent; } } diff --git a/BossMod/Modules/Dawntrail/Hunt/RankS/ArchAethereater.cs b/BossMod/Modules/Dawntrail/Hunt/RankS/ArchAethereater.cs index 4dd39dee39..09dc0c655e 100644 --- a/BossMod/Modules/Dawntrail/Hunt/RankS/ArchAethereater.cs +++ b/BossMod/Modules/Dawntrail/Hunt/RankS/ArchAethereater.cs @@ -72,7 +72,7 @@ public override void OnStatusLose(Actor actor, ActorStatus status) SID.Heatstroke => new(Requirement.Stay, status.ExpireAt), SID.Pyretic => new(Requirement.Stay, WorldState.CurrentTime, 1), SID.ColdSweats => new(Requirement.Move, status.ExpireAt.AddSeconds(1)), - SID.FreezingUp => new(Requirement.Move, status.ExpireAt, 1), + SID.FreezingUp => new(Requirement.Move, WorldState.CurrentTime, 1), _ => default }; } diff --git a/BossMod/Modules/Endwalker/Alliance/A22AlthykNymeia/SpinnersWheel.cs b/BossMod/Modules/Endwalker/Alliance/A22AlthykNymeia/SpinnersWheel.cs index c4b2a6ce34..c8cd344cef 100644 --- a/BossMod/Modules/Endwalker/Alliance/A22AlthykNymeia/SpinnersWheel.cs +++ b/BossMod/Modules/Endwalker/Alliance/A22AlthykNymeia/SpinnersWheel.cs @@ -54,11 +54,11 @@ public override void OnStatusGain(Actor actor, ActorStatus status) { case SID.ArcaneFever: if (Raid.FindSlot(actor.InstanceID) is var feverSlot && feverSlot >= 0) - PlayerStates[feverSlot] = new(Requirement.Stay, default); + PlayerStates[feverSlot] = new(Requirement.Stay, status.ExpireAt); break; case SID.FeverReversed: if (Raid.FindSlot(actor.InstanceID) is var revSlot && revSlot >= 0) - PlayerStates[revSlot] = new(Requirement.Move, default); + PlayerStates[revSlot] = new(Requirement.Move, status.ExpireAt); break; case SID.Pyretic: case SID.FreezingUp: diff --git a/BossMod/Modules/Shadowbringers/Foray/DelubrumReginae/DRS8Queen/FieryIcyPortent.cs b/BossMod/Modules/Shadowbringers/Foray/DelubrumReginae/DRS8Queen/FieryIcyPortent.cs index b799a73626..01afe70b5f 100644 --- a/BossMod/Modules/Shadowbringers/Foray/DelubrumReginae/DRS8Queen/FieryIcyPortent.cs +++ b/BossMod/Modules/Shadowbringers/Foray/DelubrumReginae/DRS8Queen/FieryIcyPortent.cs @@ -12,7 +12,7 @@ public override void OnCastStarted(Actor caster, ActorCastInfo spell) }; if (req != Requirement.None) { - Array.Fill(PlayerStates, new(req, default)); + Array.Fill(PlayerStates, new(req, Module.CastFinishAt(spell))); } } diff --git a/BossMod/Modules/Shadowbringers/Foray/Duel/Duel5Menenius/Duel5Menenius.cs b/BossMod/Modules/Shadowbringers/Foray/Duel/Duel5Menenius/Duel5Menenius.cs index cecb0249e6..aef2a93101 100644 --- a/BossMod/Modules/Shadowbringers/Foray/Duel/Duel5Menenius/Duel5Menenius.cs +++ b/BossMod/Modules/Shadowbringers/Foray/Duel/Duel5Menenius/Duel5Menenius.cs @@ -10,7 +10,7 @@ public override void OnStatusGain(Actor actor, ActorStatus status) if ((SID)status.ID is SID.AccelerationBomb) { if (Raid.FindSlot(actor.InstanceID) is var slot && slot >= 0) - PlayerStates[slot] = new(Requirement.Stay, default); + PlayerStates[slot] = new(Requirement.Stay, status.ExpireAt); } } @@ -31,7 +31,7 @@ public override void OnCastStarted(Actor caster, ActorCastInfo spell) if ((AID)spell.Action.ID == AID.SenseWeakness) { if (Raid.FindSlot(caster.TargetID) is var slot && slot >= 0) - PlayerStates[slot] = new(Requirement.Move, default); + PlayerStates[slot] = new(Requirement.Move, Module.CastFinishAt(spell)); } } diff --git a/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FateCalibrationAlpha.cs b/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FateCalibrationAlpha.cs index 9c702d9ab9..1b8caadbf2 100644 --- a/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FateCalibrationAlpha.cs +++ b/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FateCalibrationAlpha.cs @@ -45,7 +45,7 @@ public void ApplyNextRequirement() 1 => _second, _ => Requirement.None }; - Array.Fill(PlayerStates, new(req, default)); + Array.Fill(PlayerStates, new(req, WorldState.FutureTime(4.1f))); } } diff --git a/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FinalWord.cs b/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FinalWord.cs index 4b06715b82..bb54675ec6 100644 --- a/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FinalWord.cs +++ b/BossMod/Modules/Shadowbringers/Ultimate/TEA/P4FinalWord.cs @@ -62,7 +62,7 @@ public override void OnCastStarted(Actor caster, ActorCastInfo spell) if (req != Requirement.None) { _first = req; - Array.Fill(PlayerStates, new(req, default)); + Array.Fill(PlayerStates, new(req, Module.CastFinishAt(spell))); } } @@ -73,7 +73,7 @@ public override void OnEventCast(Actor caster, ActorCastEvent spell) var slot = Raid.FindSlot(spell.MainTargetID); if (slot >= 0) { - PlayerStates[slot].Requirement = PlayerStates[slot].Requirement != _first ? Requirement.None : _first == Requirement.Move ? Requirement.Stay : Requirement.Move; + PlayerStates[slot] = PlayerStates[slot].Requirement != _first ? default : new(_first == Requirement.Move ? Requirement.Stay : Requirement.Move, WorldState.FutureTime(11)); } } }