*implement new creatureAI called: AOEAI
-it takes the spell1 from creature_template and casts on him self if aura not found, it can not attack or move -creature becomes unattackable and invisible NOTE: flag 128 should not be set in flags_extra field in creature_template, otherwise spells will be only visible to GMs --HG-- branch : trunk
This commit is contained in:
@@ -54,6 +54,11 @@ int TurretAI::Permissible(const Creature *creature)
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
int AOEAI::Permissible(const Creature *creature)
|
||||
{
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
void CombatAI::InitializeAI()
|
||||
{
|
||||
for (uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i)
|
||||
@@ -246,3 +251,32 @@ void TurretAI::UpdateAI(const uint32 diff)
|
||||
//if(HostilReference *ref = me->getThreatManager().getCurrentVictim())
|
||||
//ref->removeReference();
|
||||
}
|
||||
|
||||
//////////////
|
||||
//AOEAI
|
||||
//////////////
|
||||
|
||||
AOEAI::AOEAI(Creature *c) : CreatureAI(c)
|
||||
{
|
||||
ASSERT(me->m_spells[0]);
|
||||
me->SetVisibility(VISIBILITY_ON);//visible to see all spell anims
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);//can't be targeted
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_1);//can't be damaged
|
||||
me->SetDisplayId(11686);//invisible model,around a size of a player
|
||||
}
|
||||
|
||||
bool AOEAI::CanAIAttack(const Unit *who) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void AOEAI::AttackStart(Unit *who)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void AOEAI::UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(!me->HasAura(me->m_spells[0]))
|
||||
me->CastSpell(me, me->m_spells[0],false);
|
||||
}
|
||||
@@ -90,4 +90,15 @@ struct TRINITY_DLL_SPEC TurretAI : public CreatureAI
|
||||
float m_minRange;
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_SPEC AOEAI : public CreatureAI
|
||||
{
|
||||
public:
|
||||
explicit AOEAI(Creature *c);
|
||||
bool CanAIAttack(const Unit *who) const;
|
||||
void AttackStart(Unit *who);
|
||||
void UpdateAI(const uint32 diff);
|
||||
|
||||
static int Permissible(const Creature *);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -49,6 +49,7 @@ namespace AIRegistry
|
||||
(new CreatureAIFactory<ArchorAI>("ArchorAI"))->RegisterSelf();
|
||||
(new CreatureAIFactory<TurretAI>("TurretAI"))->RegisterSelf();
|
||||
(new CreatureAIFactory<CreatureEventAI>("EventAI"))->RegisterSelf();
|
||||
(new CreatureAIFactory<AOEAI>("AOEAI"))->RegisterSelf();
|
||||
|
||||
(new MovementGeneratorFactory<RandomMovementGenerator<Creature> >(RANDOM_MOTION_TYPE))->RegisterSelf();
|
||||
(new MovementGeneratorFactory<WaypointMovementGenerator<Creature> >(WAYPOINT_MOTION_TYPE))->RegisterSelf();
|
||||
|
||||
Reference in New Issue
Block a user