aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-22 21:26:48 -0500
committermegamage <none@none>2009-08-22 21:26:48 -0500
commit5c82ba864d4f9989f1d8898857f445a976793665 (patch)
tree65d1e29579932bb1743218ed56ea963d35892093
parent39accddb5f4d7d53fb465b525e812c6989c1c38d (diff)
*Use ai function issummonedby to handle creature trigger spells.
--HG-- branch : trunk
-rw-r--r--src/game/CreatureAI.h1
-rw-r--r--src/game/NullCreatureAI.cpp17
-rw-r--r--src/game/NullCreatureAI.h14
-rw-r--r--src/game/TemporarySummon.cpp1
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)