Core/AI: Add DamageEffectType and SpellInfo parameters to UnitAI::DamageTaken (#26787)

* Core/AI: Add DamageEffectType and SpellInfo parameters to UnitAI::DamageTaken

* Update scripts

(cherry picked from commit 0800ab20a8039620fd271a43c173c008af68c22a)
This commit is contained in:
Giacomo Pozzoni
2022-03-12 14:45:04 +01:00
committed by Shauren
parent 5f38fd2f2d
commit 71c2f0af46
141 changed files with 198 additions and 198 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ class TC_GAME_API PetAI : public CreatureAI
void MovementInform(uint32 type, uint32 id) override;
void OwnerAttackedBy(Unit* attacker) override;
void OwnerAttacked(Unit* target) override;
void DamageTaken(Unit* attacker, uint32& /*damage*/) override { AttackStart(attacker); }
void DamageTaken(Unit* attacker, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override { AttackStart(attacker); }
void ReceiveEmote(Player* player, uint32 textEmote) override;
void JustEnteredCombat(Unit* who) override { EngagementStart(who); }
void JustExitedCombat() override { EngagementOver(); }
+1 -1
View File
@@ -302,7 +302,7 @@ class TC_GAME_API UnitAI
// Called at any Damage from any attacker (before damage apply)
// Note: it for recalculation damage or special reaction at damage
virtual void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) { }
virtual void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) { }
// Called when the creature receives heal
virtual void HealReceived(Unit* /*done_by*/, uint32& /*addhealth*/) { }
+1 -1
View File
@@ -625,7 +625,7 @@ void SmartAI::SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo)
GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT_TARGET, target->ToUnit(), 0, 0, false, spellInfo, target->ToGameObject());
}
void SmartAI::DamageTaken(Unit* doneBy, uint32& damage)
void SmartAI::DamageTaken(Unit* doneBy, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/)
{
GetScript()->ProcessEventsFor(SMART_EVENT_DAMAGED, doneBy, damage);
+1 -1
View File
@@ -125,7 +125,7 @@ class TC_GAME_API SmartAI : public CreatureAI
void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override;
// Called at any Damage from any attacker (before damage apply)
void DamageTaken(Unit* doneBy, uint32& damage) override;
void DamageTaken(Unit* doneBy, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override;
// Called when the creature receives heal
void HealReceived(Unit* doneBy, uint32& addhealth) override;
+1 -1
View File
@@ -715,7 +715,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons
/*static*/ uint32 Unit::DealDamage(Unit* attacker, Unit* victim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellInfo const* spellProto, bool durabilityLoss)
{
if (UnitAI* victimAI = victim->GetAI())
victimAI->DamageTaken(attacker, damage);
victimAI->DamageTaken(attacker, damage, damagetype, spellProto);
if (UnitAI* attackerAI = attacker ? attacker->GetAI() : nullptr)
attackerAI->DamageDealt(victim, damage, damagetype);
@@ -266,7 +266,7 @@ struct boss_garothi_worldbreaker : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(_apocalypseDriveHealthLimit[_apocalypseDriveCount], damage))
{
@@ -107,7 +107,7 @@ struct boss_balinda : public ScriptedAI
Talk(SAY_AGGRO);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(40, damage) && !HasCastIceblock)
{
@@ -66,7 +66,7 @@ class boss_pit_lord_argaloth : public CreatureScript
_DespawnAtEvade();
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(33, damage) ||
me->HealthBelowPctDamaged(66, damage))
@@ -179,7 +179,7 @@ struct boss_coren_direbrew : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(66, damage) && events.IsInPhase(PHASE_ONE))
{
@@ -63,7 +63,7 @@ class boss_general_angerforge : public CreatureScript
_events.ScheduleEvent(EVENT_CLEAVE, 16s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(20, damage) && _events.IsInPhase(PHASE_ONE))
{
@@ -60,7 +60,7 @@ class boss_magmus : public CreatureScript
_events.ScheduleEvent(EVENT_FIERY_BURST, 5s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(50, damage) && _events.IsInPhase(PHASE_ONE))
{
@@ -172,7 +172,7 @@ class boss_doomrel : public CreatureScript
_events.ScheduleEvent(EVENT_DEMONARMOR, 16s);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_voidwalkers && !HealthAbovePct(50))
{
@@ -53,7 +53,7 @@ struct boss_mother_smolderweb : public BossAI
_JustDied();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->GetHealth() <= damage)
DoCast(me, SPELL_SUMMON_SPIRE_SPIDERLING, true);
@@ -110,7 +110,7 @@ struct boss_razorgore : public BossAI
DoChangePhase();
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// @todo this is wrong - razorgore should still take damage, he should just nuke the whole room and respawn if he dies during P1
if (!secondPhase)
@@ -128,7 +128,7 @@ struct npc_firesworn : public ScriptedAI
ScheduleTasks();
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
uint32 const health10pct = me->CountPctFromMaxHealth(10);
uint32 health = me->GetHealth();
@@ -68,7 +68,7 @@ struct boss_golemagg : public BossAI
events.ScheduleEvent(EVENT_PYROBLAST, 7s);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!HealthBelowPct(10) || me->HasAura(SPELL_ENRAGE))
return;
@@ -133,7 +133,7 @@ struct npc_core_rager : public ScriptedAI
});
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (HealthAbovePct(50) || !_instance)
return;
@@ -86,7 +86,7 @@ public:
events.ScheduleEvent(EVENT_BERSERK, 12min);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!HealthAbovePct(15) && !_infused)
{
@@ -122,7 +122,7 @@ public:
});
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// Attumen does not die until he mounts Midnight, let health fall to 1 and prevent further damage.
if (damage >= me->GetHealth() && _phase != PHASE_MOUNTED)
@@ -305,7 +305,7 @@ public:
me->SetReactState(REACT_DEFENSIVE);
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// Midnight never dies, let health fall to 1 and prevent further damage.
if (damage >= me->GetHealth())
@@ -188,7 +188,7 @@ public:
SetupGroundPhase();
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (events.IsInPhase(PHASE_FLY))
{
@@ -164,7 +164,7 @@ public:
}
}
void DamageTaken(Unit* done_by, uint32 &damage) override
void DamageTaken(Unit* done_by, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!done_by || done_by->GetGUID() != malchezaar)
damage = 0;
@@ -492,7 +492,7 @@ public:
DoMeleeAttackIfReady();
}
void DamageTaken(Unit* /*pAttacker*/, uint32 &damage) override
void DamageTaken(Unit* /*pAttacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!DrinkInturrupted && Drinking && damage)
DrinkInturrupted = true;
@@ -1144,7 +1144,7 @@ public:
}
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override;
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override;
void JustDied(Unit* /*killer*/) override
{
@@ -1222,7 +1222,7 @@ public:
me->DespawnOrUnsummon();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage < me->GetHealth())
return;
@@ -1484,7 +1484,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
DoMeleeAttackIfReady();
}
void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32 &damage)
void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/)
{
if (damage < me->GetHealth())
return;
@@ -171,7 +171,7 @@ struct boss_felblood_kaelthas : public BossAI
_DespawnAtEvade();
}
void DamageTaken(Unit* attacker, uint32 &damage) override
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// Checking for lethal damage first so we trigger the outro phase without triggering phase two in case of oneshot attacks
if (damage >= me->GetHealth() && !events.IsInPhase(PHASE_OUTRO))
@@ -401,7 +401,7 @@ struct npc_felblood_kaelthas_phoenix : public ScriptedAI
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -100,7 +100,7 @@ class boss_vexallus : public CreatureScript
summons.Summon(summoned);
}
void DamageTaken(Unit* /*who*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*who*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_enraged)
return;
@@ -586,7 +586,7 @@ public:
}
}
void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) override
void DamageTaken(Unit* pDoneBy, uint32 &uiDamage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (m_bIsDuelInProgress && pDoneBy && pDoneBy->IsControlledByPlayer())
{
@@ -53,7 +53,7 @@ struct boss_azshir_the_sleepless : public BossAI
events.ScheduleEvent(EVENT_TERRIFY, 20s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_siphon && me->HealthBelowPctDamaged(50, damage))
{
@@ -71,7 +71,7 @@ struct boss_bloodmage_thalnos : public BossAI
Talk(SAY_KILL);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_hpYell && me->HealthBelowPctDamaged(35, damage))
{
@@ -454,7 +454,7 @@ struct boss_headless_horseman : public ScriptedAI
}
}
void DamageTaken(Unit* who, uint32& damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && who != me)
{
@@ -92,7 +92,7 @@ struct boss_herod : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_enrage && me->HealthBelowPctDamaged(30, damage))
{
@@ -83,7 +83,7 @@ struct boss_high_inquisitor_fairbanks : public BossAI
me->SetStandState(UNIT_STAND_STATE_STAND);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(25, damage))
{
@@ -80,7 +80,7 @@ struct boss_interrogator_vishas : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(60, damage) && _yellCount < 1)
{
@@ -148,7 +148,7 @@ public:
}
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && !_fakeDeath)
{
@@ -346,7 +346,7 @@ public:
DoMeleeAttackIfReady();
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// When Whitemane falls below 50% cast Deep sleep and schedule to ressurrect
if (me->HealthBelowPctDamaged(50, damage) && !_ressurectionInProgress)
@@ -44,7 +44,7 @@ public:
{
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->GetHealth() <= damage)
DoCast(me, 23261, true); //Summon Darkreaver's Fallen Charger
@@ -77,7 +77,7 @@ public:
summoned->AI()->AttackStart(me->GetVictim());
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(25, damage) && !Mages)
{
@@ -59,7 +59,7 @@ public:
events.ScheduleEvent(EVENT_BLAST_WAVE, 14s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(25, damage))
{
@@ -137,7 +137,7 @@ struct boss_apothecary_hummel : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
if (_deadCount < 2)
@@ -241,7 +241,7 @@ public:
events.ScheduleEvent(EVENT_FLIGHT_SEQUENCE, 1ms);
}
void DamageTaken(Unit*, uint32 &damage) override
void DamageTaken(Unit*, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (phase != PHASE_GROUND && damage >= me->GetHealth())
damage = 0;
@@ -201,7 +201,7 @@ struct boss_kalecgos : public BossAI
}
}
void DamageTaken(Unit* who, uint32 &damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && (!who || who->GetGUID() != me->GetGUID()))
damage = 0;
@@ -369,7 +369,7 @@ struct boss_kalecgos_human : public ScriptedAI
Talk(SAY_GOOD_DEATH);
}
void DamageTaken(Unit* who, uint32 &damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!who || who->GetGUID() != _sathGUID)
damage = 0;
@@ -486,7 +486,7 @@ struct boss_sathrovarr : public BossAI
}
}
void DamageTaken(Unit* who, uint32 &damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && (!who || who->GetGUID() != me->GetGUID()))
damage = 0;
@@ -1095,7 +1095,7 @@ public:
Initialize();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage > me->GetHealth())
DoCast(me, SPELL_FELFIRE_FISSION, true);
@@ -268,7 +268,7 @@ struct boss_muru : public BossAI
DoCast(me, SPELL_NEGATIVE_ENERGY_PERIODIC, true);
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -110,7 +110,7 @@ struct boss_hogger : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(30, damage) && !_hasEnraged)
{
@@ -127,7 +127,7 @@ struct boss_randolph_moloch : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(71, damage) && me->HealthAbovePct(59) && !_firstVanish)
{
@@ -165,7 +165,7 @@ struct boss_mandokir : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(20, damage) && !me->HasAura(SPELL_FRENZY))
{
@@ -301,7 +301,7 @@ struct npc_ohgan : public ScriptedAI
DoCastAOE(SPELL_OHGAN_ORDERS, true);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -64,7 +64,7 @@ public:
});
}
void DamageTaken(Unit* who, uint32& damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if ((!who || who->GetTypeId() == TYPEID_UNIT) && me->HealthBelowPctDamaged(82, damage))
damage = 0;
@@ -99,7 +99,7 @@ public:
{
npc_big_earlAI(Creature* creature) : ScriptedAI(creature) { }
void DamageTaken(Unit* who, uint32& damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if ((!who || who->GetTypeId() == TYPEID_UNIT) && me->HealthBelowPctDamaged(82, damage))
damage = 0;
@@ -108,7 +108,7 @@ struct npc_blackfathom_deeps_event : public ScriptedAI
_instance->SetData(DATA_EVENT, _instance->GetData(DATA_EVENT) + 1);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->GetEntry() != NPC_MURKSHALLOW_SOFTSHELL && me->GetEntry() != NPC_BARBED_CRUSTACEAN)
return;
@@ -55,7 +55,7 @@ struct boss_aku_mai : public BossAI
events.ScheduleEvent(EVENT_POISON_CLOUD, 5s, 9s);
}
void DamageTaken(Unit* /*atacker*/, uint32 &damage) override
void DamageTaken(Unit* /*atacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!IsEnraged && me->HealthBelowPctDamaged(30, damage))
{
@@ -132,7 +132,7 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
damage = 0;
}
@@ -176,7 +176,7 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
damage = 0;
}
@@ -226,7 +226,7 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
damage = 0;
}
@@ -398,7 +398,7 @@ public:
}
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(10, damage))
{
@@ -191,7 +191,7 @@ hyjal_trashAI::hyjal_trashAI(Creature* creature) : EscortAI(creature)
Reset();
}
void hyjal_trashAI::DamageTaken(Unit* done_by, uint32 &damage)
void hyjal_trashAI::DamageTaken(Unit* done_by, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/)
{
if (!done_by || done_by->GetTypeId() == TYPEID_PLAYER || done_by->IsPet())
{
@@ -28,7 +28,7 @@ struct hyjal_trashAI : public EscortAI
void JustDied(Unit* /*killer*/) override;
void DamageTaken(Unit* done_by, uint32 &damage) override;
void DamageTaken(Unit* done_by, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override;
public:
InstanceScript* instance;
@@ -74,7 +74,7 @@ class boss_mal_ganis : public CreatureScript
instance->SetBossState(DATA_MAL_GANIS, NOT_STARTED);
}
void DamageTaken(Unit* /*source*/, uint32 &damage) override
void DamageTaken(Unit* /*source*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -126,7 +126,7 @@ public:
events.ScheduleEvent(EVENT_EARTH_SPIKE, 16s, 21s, 0, PHASE_NORMAL);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(50, damage) && (events.GetPhaseMask() & PHASE_MASK_NORMAL) && !_hasDispersed)
{
@@ -114,7 +114,7 @@ public:
events.ScheduleEvent(EVENT_BURNING_LIGHT, 12s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if ((me->HealthBelowPctDamaged(66, damage) && _phase == PHASE_FIRST_SHIELD) ||
(me->HealthBelowPctDamaged(33, damage) && _phase == PHASE_SECOND_SHIELD))
@@ -72,7 +72,7 @@ class boss_kurinnaxx : public CreatureScript
events.ScheduleEvent(EVENT_WIDE_SLASH, 11s);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_enraged && HealthBelowPct(30))
{
@@ -77,7 +77,7 @@ class boss_moam : public CreatureScript
//events.ScheduleEvent(EVENT_WIDE_SLASH, 11s);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_isStonePhase && HealthBelowPct(45))
{
@@ -403,7 +403,7 @@ public:
}
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
switch (instance->GetData(DATA_CTHUN_PHASE))
{
@@ -841,7 +841,7 @@ public:
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_DONE);
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
switch (instance->GetData(DATA_CTHUN_PHASE))
{
@@ -108,7 +108,7 @@ struct boss_twinemperorsAI : public BossAI
return instance->GetCreature(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR);
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
Unit* pOtherBoss = GetOtherBoss();
if (pOtherBoss)
@@ -111,7 +111,7 @@ class boss_viscidus : public CreatureScript
Initialize();
}
void DamageTaken(Unit* attacker, uint32& /*damage*/) override
void DamageTaken(Unit* attacker, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_phase != PHASE_MELEE)
return;
@@ -110,7 +110,7 @@ class boss_ozruk : public CreatureScript
BossAI::JustSummoned(summon);
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
void DamageTaken(Unit* /*attacker*/, uint32 &damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!me->HealthBelowPctDamaged(25, damage) || me->HasAura(SPELL_ENRAGE))
return;
@@ -146,7 +146,7 @@ class boss_slabhide : public CreatureScript
events.ScheduleEvent(EVENT_AIR_PHASE, 10s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_isFlying && damage >= me->GetHealth())
damage = me->GetHealth() - 1; // Let creature health fall to 1 hp but prevent it from dying during air phase.
@@ -117,7 +117,7 @@ class npc_sc_millhouse_manastorm : public CreatureScript
events.ScheduleEvent(EVENT_FEAR, 8s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
damage = me->GetHealth() - 1;
@@ -141,7 +141,7 @@ struct boss_volazj : public BossAI
return 100*(me->GetHealth()-damage)/me->GetMaxHealth();
}
void DamageTaken(Unit* /*pAttacker*/, uint32 &damage) override
void DamageTaken(Unit* /*pAttacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
damage = 0;
@@ -205,7 +205,7 @@ struct boss_jedoga_shadowseeker : public BossAI
return 0;
}
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (HealthBelowPct(55) && events.IsInPhase(PHASE_ONE))
{
@@ -220,7 +220,7 @@ struct boss_prince_taldaram : public BossAI
DoMeleeAttackIfReady();
}
void DamageTaken(Unit* /*doneBy*/, uint32& damage) override
void DamageTaken(Unit* /*doneBy*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
Unit* embraceTarget = GetEmbraceTarget();
@@ -342,7 +342,7 @@ struct boss_anub_arak : public BossAI
}
}
void DamageTaken(Unit* /*source*/, uint32& damage) override
void DamageTaken(Unit* /*source*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HasAura(SPELL_SUBMERGE))
damage = 0;
@@ -353,7 +353,7 @@ struct boss_hadronox : public BossAI
}
// Safeguard to prevent Hadronox dying to NPCs
void DamageTaken(Unit* who, uint32& damage) override
void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if ((!who || !who->IsControlledByPlayer()) && me->HealthBelowPct(70))
{
@@ -514,7 +514,7 @@ struct npc_anub_ar_crusher : public npc_hadronox_crusherPackAI
Talk(CRUSHER_SAY_AGGRO);
}
void DamageTaken(Unit* /*source*/, uint32& damage) override
void DamageTaken(Unit* /*source*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_hadFrenzy || !me->HealthBelowPctDamaged(25, damage))
return;
@@ -135,7 +135,7 @@ struct boss_baltharus_the_warborn : public BossAI
events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 2s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (GetDifficulty() == DIFFICULTY_10_N)
{
@@ -247,7 +247,7 @@ struct npc_baltharus_the_warborn_clone : public BossAI
void EnterEvadeMode(EvadeReason /*why*/) override { }
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// Setting DATA_BALTHARUS_SHARED_HEALTH to 0 when killed would bug the boss.
if (me->GetHealth() > damage)
@@ -279,7 +279,7 @@ class boss_halion : public CreatureScript
Position const* GetMeteorStrikePosition() const { return &_meteorStrikePos; }
void DamageTaken(Unit* attacker, uint32& damage) override
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && !events.IsInPhase(PHASE_THREE))
damage = me->GetHealth() - 1;
@@ -466,7 +466,7 @@ class boss_twilight_halion : public CreatureScript
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
}
void DamageTaken(Unit* attacker, uint32& damage) override
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && !events.IsInPhase(PHASE_THREE))
damage = me->GetHealth() - 1;
@@ -190,7 +190,7 @@ public:
Initialize();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -318,7 +318,7 @@ public:
me->RemoveAura(SPELL_SHIELD);
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -265,7 +265,7 @@ public:
DoMeleeAttackIfReady();
}
void DamageTaken(Unit* /*pDoneBy*/, uint32& uiDamage) override
void DamageTaken(Unit* /*pDoneBy*/, uint32& uiDamage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (uiDamage > me->GetHealth() && uiPhase <= PHASE_SKELETON)
{
@@ -593,7 +593,7 @@ struct npc_frost_sphere : public ScriptedAI
me->GetMotionMaster()->MoveRandom(20.0f);
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->GetHealth() <= damage)
{
@@ -676,7 +676,7 @@ struct npc_anubarak_spike : public ScriptedAI
}
}
void DamageTaken(Unit* /*who*/, uint32& uiDamage) override
void DamageTaken(Unit* /*who*/, uint32& uiDamage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
uiDamage = 0;
}
@@ -109,7 +109,7 @@ struct boss_bronjahm : public BossAI
Talk(SAY_SLAY);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (events.IsInPhase(PHASE_1) && !HealthAbovePct(30))
{
@@ -83,7 +83,7 @@ class boss_falric : public CreatureScript
events.ScheduleEvent(EVENT_DEFILING_HORROR, 21s, 39s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if ((_hopelessnessCount < 1 && me->HealthBelowPctDamaged(66, damage))
|| (_hopelessnessCount < 2 && me->HealthBelowPctDamaged(33, damage))
@@ -845,7 +845,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
lichking->AI()->EnterEvadeMode(); // event failed
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth() && _invincibility)
damage = me->GetHealth() - 1;
@@ -1195,7 +1195,7 @@ class npc_the_lich_king_escape_hor : public CreatureScript
_despawn = false;
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
damage = me->GetHealth() - 1;
@@ -2476,7 +2476,7 @@ class npc_uther_quel_delar : public CreatureScript
_events.ScheduleEvent(EVENT_UTHER_1, 1ms);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
damage = me->GetHealth() - 1;
@@ -124,7 +124,7 @@ struct boss_garfrost : public BossAI
tyrannus->AI()->Talk(SAY_TYRANNUS_DEATH);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (events.IsInPhase(PHASE_ONE) && !HealthAbovePct(66))
{
@@ -153,7 +153,7 @@ struct boss_drakkari_colossus : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->IsImmuneToPC())
damage = 0;
@@ -295,7 +295,7 @@ struct boss_drakkari_elemental : public ScriptedAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (HealthBelowPct(50))
{
@@ -69,7 +69,7 @@ struct boss_eck : public BossAI
events.ScheduleEvent(EVENT_BERSERK, 60s, 90s); // 60-90 secs according to wowwiki
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_berserk && me->HealthBelowPctDamaged(20, damage))
{
@@ -139,7 +139,7 @@ struct boss_slad_ran : public BossAI
});
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_phase == Phase::PHASE_NONE && HealthBelowPct(30))
{
@@ -493,7 +493,7 @@ struct BloodPrincesBossAI : public BossAI
me->SetHealth(_spawnHealth);
}
void DamageTaken(Unit* attacker, uint32& damage) override
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_isEmpowered)
{
@@ -1068,7 +1068,7 @@ struct npc_dark_nucleus : public ScriptedAI
DoCast(who, SPELL_SHADOW_RESONANCE_RESIST);
}
void DamageTaken(Unit* attacker, uint32& /*damage*/) override
void DamageTaken(Unit* attacker, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (attacker == me)
return;
@@ -347,7 +347,7 @@ struct boss_deathbringer_saurfang : public BossAI
Talk(SAY_KILL);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
damage = me->GetHealth() - 1;
@@ -675,7 +675,7 @@ class npc_gunship : public CreatureScript
me->SetRegenerateHealth(false);
}
void DamageTaken(Unit* /*source*/, uint32& damage) override
void DamageTaken(Unit* /*source*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -960,7 +960,7 @@ struct npc_high_overlord_saurfang_igb : public ScriptedAI
return false;
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(65, damage) && !me->HasAura(SPELL_TASTE_OF_BLOOD))
DoCast(me, SPELL_TASTE_OF_BLOOD, true);
@@ -1214,7 +1214,7 @@ struct npc_muradin_bronzebeard_igb : public ScriptedAI
return false;
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(65, damage) && me->HasAura(SPELL_TASTE_OF_BLOOD))
DoCast(me, SPELL_TASTE_OF_BLOOD, true);
@@ -1445,7 +1445,7 @@ struct npc_gunship_boarding_addAI : public gunship_npc_AI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_usedDesperateResolve)
return;
@@ -403,7 +403,7 @@ struct boss_lady_deathwhisper : public BossAI
Talk(SAY_KILL);
}
void DamageTaken(Unit* /*damageDealer*/, uint32& damage) override
void DamageTaken(Unit* /*damageDealer*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// phase transition
if (_phase == PHASE_ONE && damage > uint32(me->GetPower(POWER_MANA)))
@@ -340,7 +340,7 @@ struct boss_professor_putricide : public BossAI
DoZoneInCombat(summon);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@@ -402,7 +402,7 @@ struct boss_sindragosa : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_isThirdPhase && !HealthAbovePct(35))
{
@@ -677,7 +677,7 @@ struct npc_crok_scourgebane : public EscortAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// check wipe
if (!_wipeCheckTimer)
@@ -659,7 +659,7 @@ struct boss_the_lich_king : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (events.IsInPhase(PHASE_ONE) && !HealthAbovePct(70))
{
@@ -1281,7 +1281,7 @@ struct npc_shambling_horror_icc : public ScriptedAI
_events.ScheduleEvent(EVENT_ENRAGE, 11s, 14s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_frenzied && IsHeroic() && me->HealthBelowPctDamaged(20, damage))
{
@@ -1438,7 +1438,7 @@ struct npc_valkyr_shadowguard : public ScriptedAI
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2500ms);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!IsHeroic())
return;
@@ -1707,7 +1707,7 @@ struct npc_terenas_menethil : public ScriptedAI
EngagementOver();
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -347,7 +347,7 @@ struct boss_valithria_dreamwalker : public ScriptedAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(25, damage))
{
@@ -372,7 +372,7 @@ struct boss_gothik : public BossAI
}
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!events.IsInPhase(PHASE_TWO))
damage = 0;
@@ -561,7 +561,7 @@ struct npc_gothik_minion_baseAI : public ScriptedAI
return IsOnSameSide(me, who);
}
void DamageTaken(Unit* attacker, uint32 &damage) override
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{ // do not allow minions to take damage before the gate is opened
if (!_gateIsOpen && (!attacker || !isOnSameSide(attacker)))
damage = 0;
@@ -793,7 +793,7 @@ struct npc_gothik_trigger : public ScriptedAI
void EnterEvadeMode(EvadeReason /*why*/) override { }
void UpdateAI(uint32 /*diff*/) override { }
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*who*/, uint32& damage) override { damage = 0; }
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override { damage = 0; }
Creature* SelectRandomSkullPile()
{
@@ -272,7 +272,7 @@ struct boss_kelthuzad : public BossAI
Talk(SAY_DEATH);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (events.IsInPhase(PHASE_ONE))
damage = 0;
@@ -163,7 +163,7 @@ struct boss_noth : public BossAI
Talk(SAY_DEATH);
}
void DamageTaken(Unit* /*who*/, uint32& damage) override // prevent noth from somehow dying in the balcony phase
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override // prevent noth from somehow dying in the balcony phase
{
if (!events.IsInPhase(PHASE_BALCONY))
return;
@@ -163,7 +163,7 @@ struct boss_sapphiron : public BossAI
Initialize();
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage < me->GetHealth() || !events.IsInPhase(PHASE_FLIGHT))
return;
@@ -557,7 +557,7 @@ public:
AddThreat(who, 0.0f, feugen);
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage < me->GetHealth())
return;
@@ -796,7 +796,7 @@ public:
AddThreat(who, 0.0f, stalagg);
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage < me->GetHealth())
return;
@@ -936,7 +936,7 @@ struct npc_tesla : public ScriptedAI
void EnterEvadeMode(EvadeReason /*why*/) override { } // never stop casting due to evade
void UpdateAI(uint32 /*diff*/) override { } // never do anything unless told
void JustEngagedWith(Unit* /*who*/) override { }
void DamageTaken(Unit* /*who*/, uint32& damage) override { damage = 0; } // no, you can't kill it
void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override { damage = 0; } // no, you can't kill it
};
// 28062 - Positive Charge
@@ -716,7 +716,7 @@ struct boss_malygos : public BossAI
}
}
void DamageTaken(Unit* /*cause*/, uint32& damage) override
void DamageTaken(Unit* /*cause*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage > me->GetHealth() && _phase != PHASE_THREE)
damage = me->GetHealth() - 1;
@@ -147,7 +147,7 @@ struct boss_keristrasza : public BossAI
_intenseColdList.push_back(guid);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!_enrage && me->HealthBelowPctDamaged(25, damage))
{
@@ -92,7 +92,7 @@ struct boss_ormorok : public BossAI
Talk(SAY_AGGRO);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!frenzy && HealthBelowPct(25))
{
@@ -173,7 +173,7 @@ struct boss_eregos : public BossAI
summon->CastSpell(summon, SPELL_PLANAR_BLAST, true);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!IsHeroic())
return;
@@ -315,7 +315,7 @@ struct boss_urom : public BossAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
// If killed while in center, teleport to a valid ground position before dying
if (damage >= me->GetHealth())
@@ -181,7 +181,7 @@ struct boss_ionar : public ScriptedAI
}
}
void DamageTaken(Unit* /*pDoneBy*/, uint32 &uiDamage) override
void DamageTaken(Unit* /*pDoneBy*/, uint32 &uiDamage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (!me->IsVisible())
uiDamage = 0;
@@ -172,7 +172,7 @@ struct boss_loken : public BossAI
DoMeleeAttackIfReady();
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (me->HealthBelowPctDamaged(100 - 25 * _healthAmountModifier, damage))
{
@@ -401,7 +401,7 @@ struct npc_molten_golem : public ScriptedAI
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (damage >= me->GetHealth())
{
@@ -386,7 +386,7 @@ struct npc_brann_hos : public EscortAI
Start();
}
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (instance->GetBossState(DATA_TRIBUNAL_OF_AGES) == IN_PROGRESS)
brannSparklinNews = false;

Some files were not shown because too many files have changed in this diff Show More