diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index dab5216ca9c..df7e30d014a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -720,21 +720,18 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons // Hook for OnDamage Event sScriptMgr->OnDamage(attacker, victim, damage); - if (victim->GetTypeId() == TYPEID_PLAYER) + // Signal to pets that their owner was attacked - except when DOT. + if (attacker != victim && damagetype != DOT) { - // Signal to pets that their owner was attacked - except when DOT. - if (attacker != victim && damagetype != DOT) - { - for (Unit* controlled : victim->m_Controlled) - if (Creature* cControlled = controlled->ToCreature()) - if (CreatureAI* controlledAI = cControlled->AI()) - controlledAI->OwnerAttackedBy(attacker); - } - - if (victim->ToPlayer()->GetCommandStatus(CHEAT_GOD)) - return 0; + for (Unit* controlled : victim->m_Controlled) + if (Creature* cControlled = controlled->ToCreature()) + if (CreatureAI* controlledAI = cControlled->AI()) + controlledAI->OwnerAttackedBy(attacker); } + if (Player* player = victim->ToPlayer(); player && player->GetCommandStatus(CHEAT_GOD)) + return 0; + if (damagetype != NODAMAGE) { // interrupting auras with SpellAuraInterruptFlags::Damage before checking !damage (absorbed damage breaks that type of auras) |