From 798887b379167b18805129c849e3911f256fe3e9 Mon Sep 17 00:00:00 2001 From: CarnifexOptimus Date: Mon, 12 Feb 2024 08:04:11 +0100 Subject: [PATCH 1/4] added anti knockback abilities --- BossMod/Components/Knockback.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/BossMod/Components/Knockback.cs b/BossMod/Components/Knockback.cs index 78f6aadc7f..82888d2955 100644 --- a/BossMod/Components/Knockback.cs +++ b/BossMod/Components/Knockback.cs @@ -30,6 +30,7 @@ protected struct PlayerImmuneState { public DateTime ArmsLengthSurecastExpire; // 0 if not active public DateTime InnerStrengthExpire; // 0 if not active + public DateTime ManawallExpire; // 0 if not active public bool ImmuneAt(DateTime time) => ArmsLengthSurecastExpire > time || InnerStrengthExpire > time; } @@ -81,17 +82,24 @@ public override void OnStatusGain(BossModule module, Actor actor, ActorStatus st { switch (status.ID) { + case 3054: //Guard in PVP case (uint)WHM.SID.Surecast: case (uint)WAR.SID.ArmsLength: var slot1 = module.Raid.FindSlot(actor.InstanceID); if (slot1 >= 0) PlayerImmunes[slot1].ArmsLengthSurecastExpire = status.ExpireAt; break; + case 1722: //Bluemage Diamondback case (uint)WAR.SID.InnerStrength: var slot2 = module.Raid.FindSlot(actor.InstanceID); if (slot2 >= 0) PlayerImmunes[slot2].InnerStrengthExpire = status.ExpireAt; break; + case 2345: //Lost Manawall in Bozja + var slot3 = module.Raid.FindSlot(actor.InstanceID); + if (slot3 >= 0) + PlayerImmunes[slot3].ManawallExpire = status.ExpireAt; + break; } } @@ -99,17 +107,24 @@ public override void OnStatusLose(BossModule module, Actor actor, ActorStatus st { switch (status.ID) { + case 3054: //Guard in PVP case (uint)WHM.SID.Surecast: case (uint)WAR.SID.ArmsLength: var slot1 = module.Raid.FindSlot(actor.InstanceID); if (slot1 >= 0) PlayerImmunes[slot1].ArmsLengthSurecastExpire = new(); break; + case 1722: //Bluemage Diamondback case (uint)WAR.SID.InnerStrength: var slot2 = module.Raid.FindSlot(actor.InstanceID); if (slot2 >= 0) PlayerImmunes[slot2].InnerStrengthExpire = new(); break; + case 2345: //Lost Manawall in Bozja + var slot3 = module.Raid.FindSlot(actor.InstanceID); + if (slot3 >= 0) + PlayerImmunes[slot3].ManawallExpire = new(); + break; } } From 223b906a09086e43c3cedcaf49ea58246d4171d3 Mon Sep 17 00:00:00 2001 From: CarnifexOptimus Date: Mon, 12 Feb 2024 22:20:29 +0100 Subject: [PATCH 2/4] changes were made --- BossMod/Components/Knockback.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/BossMod/Components/Knockback.cs b/BossMod/Components/Knockback.cs index 82888d2955..e3f693159e 100644 --- a/BossMod/Components/Knockback.cs +++ b/BossMod/Components/Knockback.cs @@ -28,11 +28,11 @@ public record struct Source( protected struct PlayerImmuneState { - public DateTime ArmsLengthSurecastExpire; // 0 if not active - public DateTime InnerStrengthExpire; // 0 if not active - public DateTime ManawallExpire; // 0 if not active + public DateTime RoleBuffExpire; // 0 if not active + public DateTime JobBuffExpire; // 0 if not active + public DateTime DutyBuffExpire; // 0 if not active - public bool ImmuneAt(DateTime time) => ArmsLengthSurecastExpire > time || InnerStrengthExpire > time; + public bool ImmuneAt(DateTime time) => RoleBuffExpire > time || JobBuffExpire > time || DutyBuffExpire > time; } public bool IgnoreImmunes { get; private init; } @@ -87,18 +87,18 @@ public override void OnStatusGain(BossModule module, Actor actor, ActorStatus st case (uint)WAR.SID.ArmsLength: var slot1 = module.Raid.FindSlot(actor.InstanceID); if (slot1 >= 0) - PlayerImmunes[slot1].ArmsLengthSurecastExpire = status.ExpireAt; + PlayerImmunes[slot1].RoleBuffExpire = status.ExpireAt; break; case 1722: //Bluemage Diamondback case (uint)WAR.SID.InnerStrength: var slot2 = module.Raid.FindSlot(actor.InstanceID); if (slot2 >= 0) - PlayerImmunes[slot2].InnerStrengthExpire = status.ExpireAt; + PlayerImmunes[slot2].JobBuffExpire = status.ExpireAt; break; case 2345: //Lost Manawall in Bozja var slot3 = module.Raid.FindSlot(actor.InstanceID); if (slot3 >= 0) - PlayerImmunes[slot3].ManawallExpire = status.ExpireAt; + PlayerImmunes[slot3].DutyBuffExpire = status.ExpireAt; break; } } @@ -112,18 +112,18 @@ public override void OnStatusLose(BossModule module, Actor actor, ActorStatus st case (uint)WAR.SID.ArmsLength: var slot1 = module.Raid.FindSlot(actor.InstanceID); if (slot1 >= 0) - PlayerImmunes[slot1].ArmsLengthSurecastExpire = new(); + PlayerImmunes[slot1].RoleBuffExpire = new(); break; case 1722: //Bluemage Diamondback case (uint)WAR.SID.InnerStrength: var slot2 = module.Raid.FindSlot(actor.InstanceID); if (slot2 >= 0) - PlayerImmunes[slot2].InnerStrengthExpire = new(); + PlayerImmunes[slot2].JobBuffExpire = new(); break; case 2345: //Lost Manawall in Bozja var slot3 = module.Raid.FindSlot(actor.InstanceID); if (slot3 >= 0) - PlayerImmunes[slot3].ManawallExpire = new(); + PlayerImmunes[slot3].DutyBuffExpire = new(); break; } } From cd1d75083590340e896b585c61caa09384f031ce Mon Sep 17 00:00:00 2001 From: CarnifexOptimus Date: Tue, 13 Feb 2024 03:12:09 +0100 Subject: [PATCH 3/4] . --- BossMod/Components/Knockback.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BossMod/Components/Knockback.cs b/BossMod/Components/Knockback.cs index e3f693159e..804ce8a822 100644 --- a/BossMod/Components/Knockback.cs +++ b/BossMod/Components/Knockback.cs @@ -129,7 +129,7 @@ public override void OnStatusLose(BossModule module, Actor actor, ActorStatus st } protected IEnumerable<(WPos from, WPos to)> CalculateMovements(BossModule module, int slot, Actor actor) - { + { if (MaxCasts <= 0) yield break; From 722e3d2ff0a103c7549d74eaccc87a5df3460170 Mon Sep 17 00:00:00 2001 From: CarnifexOptimus Date: Tue, 13 Feb 2024 03:13:20 +0100 Subject: [PATCH 4/4] . --- BossMod/Components/Knockback.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BossMod/Components/Knockback.cs b/BossMod/Components/Knockback.cs index 804ce8a822..e3f693159e 100644 --- a/BossMod/Components/Knockback.cs +++ b/BossMod/Components/Knockback.cs @@ -129,7 +129,7 @@ public override void OnStatusLose(BossModule module, Actor actor, ActorStatus st } protected IEnumerable<(WPos from, WPos to)> CalculateMovements(BossModule module, int slot, Actor actor) - { + { if (MaxCasts <= 0) yield break;