aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-08-23 14:33:28 +0200
committerTreeston <treeston.mmoc@gmail.com>2018-08-23 16:34:42 +0200
commit042f5515e4f3e52b0d2e23d9b9e147041849ce12 (patch)
treee9bd421089edfd6098a96300393d086875f9a054 /src/server/game/Spells/Spell.cpp
parent0e4a49b0a4c86eb4a2d0d128e24bc8aaabb47e31 (diff)
Core/AI: Clean up charm AI handling, we now have two unique_ptr instead of a crapton of booleans
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp18
1 files changed, 8 insertions, 10 deletions
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);