From 042f5515e4f3e52b0d2e23d9b9e147041849ce12 Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 23 Aug 2018 14:33:28 +0200 Subject: Core/AI: Clean up charm AI handling, we now have two unique_ptr instead of a crapton of booleans --- src/server/game/Spells/Spell.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 58c2fa7755a..ec8b1202208 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2541,18 +2541,16 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) if (_spellHitTarget) { //AI functions - if (_spellHitTarget->GetTypeId() == TYPEID_UNIT) - { - if (_spellHitTarget->ToCreature()->IsAIEnabled) + if (Creature* cHitTarget = _spellHitTarget->ToCreature()) + if (CreatureAI* hitTargetAI = cHitTarget->AI()) { if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT) - _spellHitTarget->ToCreature()->AI()->SpellHit(spell->m_caster->ToGameObject(), spell->m_spellInfo); + hitTargetAI->SpellHit(spell->m_caster->ToGameObject(), spell->m_spellInfo); else - _spellHitTarget->ToCreature()->AI()->SpellHit(spell->m_caster->ToUnit(), spell->m_spellInfo); + hitTargetAI->SpellHit(spell->m_caster->ToUnit(), spell->m_spellInfo); } - } - if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled) + if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled()) spell->m_caster->ToCreature()->AI()->SpellHitTarget(_spellHitTarget, spell->m_spellInfo); else if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT && spell->m_caster->ToGameObject()->AI()) spell->m_caster->ToGameObject()->AI()->SpellHitTarget(_spellHitTarget, spell->m_spellInfo); @@ -2601,7 +2599,7 @@ void Spell::GOTargetInfo::DoTargetSpellHit(Spell* spell, uint8 effIndex) go->AI()->SpellHit(spell->m_caster->ToUnit(), spell->m_spellInfo); } - if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled) + if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled()) spell->m_caster->ToCreature()->AI()->SpellHitTarget(go, spell->m_spellInfo); else if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT && spell->m_caster->ToGameObject()->AI()) spell->m_caster->ToGameObject()->AI()->SpellHitTarget(go, spell->m_spellInfo); @@ -3222,8 +3220,8 @@ void Spell::_cast(bool skipCheck) if (Unit* target = m_targets.GetUnitTarget()) for (Unit* controlled : playerCaster->m_Controlled) if (Creature* cControlled = controlled->ToCreature()) - if (cControlled->IsAIEnabled) - cControlled->AI()->OwnerAttacked(target); + if (CreatureAI* controlledAI = cControlled->AI()) + controlledAI->OwnerAttacked(target); } SetExecutedCurrently(true); -- cgit v1.2.3