diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index c03d3dd09d..c257af0fbe 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -95,6 +95,9 @@ class CreatureAI : public UnitAI // Called for reaction at enter to combat if not in combat yet (enemy can be NULL) virtual void EnterCombat(Unit* /*enemy*/) {} + // Called at any Damage to any victim (before damage apply) + virtual void DamageDealt(Unit * /*done_to*/, uint32 & /*damage*/) { } + // Called at any Damage from any attacker (before damage apply) // Note: it for recalculation damage or special reaction at damage // for attack reaction use AttackedBy called for not DOT damage in Unit::DealDamage also diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 97a97a2afb..f465b687e1 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -567,6 +567,9 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa if (pVictim->GetTypeId() == TYPEID_UNIT && pVictim->ToCreature()->IsAIEnabled) pVictim->ToCreature()->AI()->DamageTaken(this, damage); + if (GetTypeId() == TYPEID_UNIT && this->ToCreature()->IsAIEnabled) + this->ToCreature()->AI()->DamageDealt(pVictim, damage); + if (damagetype != NODAMAGE) { // interrupting auras with AURA_INTERRUPT_FLAG_DAMAGE before checking !damage (absorbed damage breaks that type of auras) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp index 073fff6045..fffe1a2eb7 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp @@ -179,7 +179,7 @@ struct boss_janalaiAI : public ScriptedAI // DoZoneInCombat(); } - void DamageDeal(Unit *pTarget, uint32 &damage) + void DamageDealt(Unit *pTarget, uint32 &damage) { if (isFlameBreathing) {