*Use ai function issummonedby to handle creature trigger spells.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-08-22 21:26:48 -05:00
parent 39accddb5f
commit 5c82ba864d
4 changed files with 14 additions and 19 deletions

View File

@@ -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*/) {}

View File

@@ -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());
}

View File

@@ -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

View File

@@ -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)