diff options
author | megamage <none@none> | 2009-08-22 21:26:48 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-22 21:26:48 -0500 |
commit | 5c82ba864d4f9989f1d8898857f445a976793665 (patch) | |
tree | 65d1e29579932bb1743218ed56ea963d35892093 | |
parent | 39accddb5f4d7d53fb465b525e812c6989c1c38d (diff) |
*Use ai function issummonedby to handle creature trigger spells.
--HG--
branch : trunk
-rw-r--r-- | src/game/CreatureAI.h | 1 | ||||
-rw-r--r-- | src/game/NullCreatureAI.cpp | 17 | ||||
-rw-r--r-- | src/game/NullCreatureAI.h | 14 | ||||
-rw-r--r-- | src/game/TemporarySummon.cpp | 1 |
4 files changed, 14 insertions, 19 deletions
diff --git a/src/game/CreatureAI.h b/src/game/CreatureAI.h index 6f8a14afbe1..1ec04a2e3c9 100644 --- a/src/game/CreatureAI.h +++ b/src/game/CreatureAI.h @@ -104,6 +104,7 @@ class TRINITY_DLL_SPEC CreatureAI : public UnitAI // Called when the creature summon successfully other creature virtual void JustSummoned(Creature* ) {} + virtual void IsSummonedBy(Unit *summoner) {} virtual void SummonedCreatureDespawn(Creature* /*unit*/) {} diff --git a/src/game/NullCreatureAI.cpp b/src/game/NullCreatureAI.cpp index a92e7125eaf..cb06e1918ad 100644 --- a/src/game/NullCreatureAI.cpp +++ b/src/game/NullCreatureAI.cpp @@ -22,10 +22,9 @@ #include "Creature.h" #include "TemporarySummon.h" -PassiveAI::PassiveAI(Creature *c) : CreatureAI(c) -{ - me->SetReactState(REACT_PASSIVE); -} +PassiveAI::PassiveAI(Creature *c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); } +PossessedAI::PossessedAI(Creature *c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); } +NullCreatureAI::NullCreatureAI(Creature *c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); } void PassiveAI::UpdateAI(const uint32) { @@ -75,12 +74,8 @@ void CritterAI::EnterEvadeMode() CreatureAI::EnterEvadeMode(); } -void TriggerAI::UpdateAI(const uint32 diff) +void TriggerAI::IsSummonedBy(Unit *summoner) { - if(!casted) - { - casted = true; - if(me->m_spells[0] && me->isSummon()) - me->CastSpell(me, me->m_spells[0], false, 0, 0, ((TempSummon*)me)->GetSummonerGUID()); - } + if(me->m_spells[0]) + me->CastSpell(me, me->m_spells[0], false, 0, 0, summoner->GetGUID()); } diff --git a/src/game/NullCreatureAI.h b/src/game/NullCreatureAI.h index 7357af627b1..edc19f5cf57 100644 --- a/src/game/NullCreatureAI.h +++ b/src/game/NullCreatureAI.h @@ -39,7 +39,7 @@ class TRINITY_DLL_SPEC PassiveAI : public CreatureAI class TRINITY_DLL_DECL PossessedAI : public CreatureAI { public: - explicit PossessedAI(Creature *c) : CreatureAI(c) {} + explicit PossessedAI(Creature *c); void MoveInLineOfSight(Unit *) {} void AttackStart(Unit *target); @@ -52,10 +52,10 @@ class TRINITY_DLL_DECL PossessedAI : public CreatureAI static int Permissible(const Creature *) { return PERMIT_BASE_IDLE; } }; -class TRINITY_DLL_DECL NullCreatureAI : public CreatureAI +class TRINITY_DLL_SPEC NullCreatureAI : public CreatureAI { public: - explicit NullCreatureAI(Creature *c) : CreatureAI(c) {} + explicit NullCreatureAI(Creature *c); void MoveInLineOfSight(Unit *) {} void AttackStart(Unit *) {} @@ -75,13 +75,11 @@ class TRINITY_DLL_DECL CritterAI : public PassiveAI void EnterEvadeMode(); }; -class TRINITY_DLL_DECL TriggerAI : public NullCreatureAI +class TRINITY_DLL_SPEC TriggerAI : public NullCreatureAI { public: - explicit TriggerAI(Creature *c) : NullCreatureAI(c), casted(false) {} - void UpdateAI(const uint32); - private: - bool casted; + explicit TriggerAI(Creature *c) : NullCreatureAI(c) {} + void IsSummonedBy(Unit *summoner); }; #endif diff --git a/src/game/TemporarySummon.cpp b/src/game/TemporarySummon.cpp index 434750c8744..70d55cc55fb 100644 --- a/src/game/TemporarySummon.cpp +++ b/src/game/TemporarySummon.cpp @@ -215,6 +215,7 @@ void TempSummon::InitSummon() if(owner->GetTypeId()==TYPEID_UNIT && ((Creature*)owner)->IsAIEnabled) ((Creature*)owner)->AI()->JustSummoned(this); } + AI()->IsSummonedBy(owner); } void TempSummon::SetTempSummonType(TempSummonType type) |