mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
Pet/Guardian AI hook re-organizing (#19824)
* Pet/Guardian AI hook re-organizing:
- Adjust OwnerAttacked/OwnerAttackedBy hooks on CreatureAI to fire for all owned units, not just player pets. This should allow guardians to more reliably recognize valid targets.
- Kill off the AttackedBy hook. While it was defined in CreatureAI.h as virtual, it was only ever invoked for player pets in specific situations. This makes it classic developer bait.
- Adjust PetAI to use DamageTaken instead of AttackedBy.
- Adjust behavior of AttackStart on PetAI to compensate.
(cherry picked from commit 1660bb7d27)
This commit is contained in:
@@ -3170,9 +3170,11 @@ void Spell::_cast(bool skipCheck)
|
||||
// Let any pets know we've attacked something. Check DmgClass for harmful spells only
|
||||
// This prevents spells such as Hunter's Mark from triggering pet attack
|
||||
if (this->GetSpellInfo()->DmgClass != SPELL_DAMAGE_CLASS_NONE)
|
||||
if (Pet* playerPet = playerCaster->GetPet())
|
||||
if (playerPet->IsAlive() && playerPet->isControlled() && (m_targets.GetTargetMask() & TARGET_FLAG_UNIT))
|
||||
playerPet->AI()->OwnerAttacked(m_targets.GetUnitTarget());
|
||||
if (Unit* unitTarget = m_targets.GetUnitTarget())
|
||||
for (Unit* controlled : playerCaster->m_Controlled)
|
||||
if (Creature* cControlled = controlled->ToCreature())
|
||||
if (cControlled->IsAIEnabled)
|
||||
cControlled->AI()->OwnerAttacked(unitTarget);
|
||||
}
|
||||
|
||||
SetExecutedCurrently(true);
|
||||
|
||||
Reference in New Issue
Block a user