aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2023-11-04 15:05:47 +0100
committerOvahlord <dreadkiller@gmx.de>2023-11-04 15:05:47 +0100
commitecd54c07d8f9a2eb84e55a62b8d4543978a66910 (patch)
tree37d68b3bd087f5164b4515740385714b7acc6054 /src
parent9bbede8a09e2c0ae3abfd237624faf258f06af88 (diff)
Scripts/Antorus: prevent the Garothi Worldbreaker from falsely initiating an Apocalypse Drive phase when dealing damage would kill him instantly
* replaced some magic numbers in setting encounter frame indexes * added a missing casting check to stay in line with current scripting standards
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
index d1400e08988..94df54aeaf5 100644
--- a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
+++ b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
@@ -125,6 +125,12 @@ enum Misc
SUMMON_GROUP_ID_SURGING_FEL = 0
};
+enum EncounterFrameIndexes
+{
+ ENCOUNTER_FRAME_INDEX_BOSS = 1,
+ ENCOUNTER_FRAME_INDEX_CANNONS = 2
+};
+
namespace TargetHandler
{
class VictimCheck
@@ -216,7 +222,7 @@ struct boss_garothi_worldbreaker : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
DoCastSelf(SPELL_MELEE);
- instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, ENCOUNTER_FRAME_INDEX_BOSS);
events.ScheduleEvent(EVENT_FEL_BOMBARDMENT, 9s);
events.ScheduleEvent(EVENT_CANNON_CHOOSER, 8s);
}
@@ -263,6 +269,9 @@ struct boss_garothi_worldbreaker : public BossAI
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
+ if (damage >= me->GetHealth())
+ return;
+
if (me->HealthBelowPctDamaged(_apocalypseDriveHealthLimit[_apocalypseDriveCount], damage))
{
me->AttackStop();
@@ -282,14 +291,14 @@ struct boss_garothi_worldbreaker : public BossAI
if (Creature* decimator = instance->GetCreature(DATA_DECIMATOR))
{
- instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, decimator, 2);
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, decimator, ENCOUNTER_FRAME_INDEX_CANNONS);
decimator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
decimator->SetUninteractible(false);
}
if (Creature* annihilator = instance->GetCreature(DATA_ANNIHILATOR))
{
- instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, annihilator, 2);
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, annihilator, ENCOUNTER_FRAME_INDEX_CANNONS);
annihilator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
annihilator->SetUninteractible(false);
}
@@ -420,6 +429,9 @@ struct boss_garothi_worldbreaker : public BossAI
default:
break;
}
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
}
if (me->GetVictim() && me->GetVictim()->IsWithinMeleeRange(me))