40 me->SetVisible(
false);
45 me->DespawnOrUnsummon();
80 SF_LOG_ERROR(
"misc",
"SmartAI::StartPath: Creature entry %u wanted to start waypoint movement while in combat, ignoring.",
me->GetEntry());
99 me->GetMotionMaster()->MovePoint(wp->id, wp->x, wp->y, wp->z);
124 SF_LOG_ERROR(
"misc",
"SmartAI::StartPath: Creature entry %u wanted to pause waypoint movement while already paused, ignoring.",
me->GetEntry());
135 me->GetMotionMaster()->MoveIdle();
152 me->GetMotionMaster()->MoveIdle();
175 if (targets->size() == 1 &&
GetScript()->IsPlayer((*targets->begin())))
186 for (
GroupReference* groupRef = group->GetFirstMember(); groupRef != NULL; groupRef = groupRef->
next())
188 Player* groupGuy = groupRef->GetSource();
199 for (ObjectList::iterator iter = targets->begin(); iter != targets->end(); ++iter)
291 me->GetMotionMaster()->MovePoint(wp->id, wp->x, wp->y, wp->z);
325 me->GetMotionMaster()->MoveIdle();
348 if (targets->size() == 1 &&
GetScript()->IsPlayer((*targets->begin())))
356 for (
GroupReference* groupRef = group->GetFirstMember(); groupRef != NULL; groupRef = groupRef->
next())
358 Player* groupGuy = groupRef->GetSource();
367 for (ObjectList::iterator iter = targets->begin(); iter != targets->end(); ++iter)
404 for (Unit::AuraApplicationMap::iterator iter = appliedAuras.begin(); iter != appliedAuras.end();)
406 Aura const* aura = iter->second->GetBase();
408 me->RemoveAura(iter);
416 if (!
me->IsAlive() ||
me->IsInEvadeMode())
422 me->DeleteThreatList();
423 me->CombatStop(
true);
424 me->LoadCreaturesAddon(
true);
425 me->SetLootRecipient(NULL);
426 me->ResetPlayerDamageReq();
442 me->GetMotionMaster()->MoveTargetedHome();
460 if (!
me->CanStartAttack(who,
false))
463 if (
me->IsHostileTo(who))
465 float fAttackRadius =
me->GetAttackDistance(who);
466 if (
me->IsWithinDistInMap(who, fAttackRadius) &&
me->IsWithinLOSInMap(who))
468 if (!
me->GetVictim())
476 me->AddThreat(who, 0.0f);
503 if (
me->IsFriendlyTo(who))
510 if (!
me->GetVictim())
518 me->AddThreat(who, 0.0f);
531 me->SetVisible(
true);
532 if (
me->getFaction() !=
me->GetCreatureTemplate()->faction_A)
533 me->RestoreFaction();
559 me->InterruptNonMeleeSpells(
false);
583 if (who &&
me->Attack(who,
true))
589 me->GetMotionMaster()->MovementExpired();
592 me->GetMotionMaster()->MoveIdle();
595 me->GetMotionMaster()->MoveChase(who);
705 me->SetDisableGravity(fly);
755 if (on &&
me->GetVictim())
760 me->GetMotionMaster()->MoveChase(
me->GetVictim());
767 me->GetMotionMaster()->MoveIdle();
809 if (g->
GetAIName() ==
"SmartGameObjectAI")
834 SF_LOG_DEBUG(
"scripts.ai",
"SmartGameObjectAI::GossipHello");
913 SF_LOG_DEBUG(
"scripts.ai",
"AreaTrigger %u is using SmartTrigger script", trigger->
id);
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define INTERACTION_DISTANCE
@ QUEST_STATUS_INCOMPLETE
@ CREATURE_TYPEFLAGS_AID_PLAYERS
void AddSC_SmartSCripts()
@ SMART_ESCORT_MAX_PLAYER_DIST
#define sSmartWaypointMgr
@ SMART_EVENT_ACTION_DONE
@ SMART_EVENT_SUMMON_DESPAWNED
@ SMART_EVENT_RECEIVE_EMOTE
@ SMART_EVENT_RECEIVE_HEAL
@ SMART_EVENT_DUMMY_EFFECT
@ SMART_EVENT_AREATRIGGER_ONTRIGGER
@ SMART_EVENT_ON_SPELLCLICK
@ SMART_EVENT_MOVEMENTINFORM
@ SMART_EVENT_PASSENGER_REMOVED
@ SMART_EVENT_WAYPOINT_PAUSED
@ SMART_EVENT_REACHED_HOME
@ SMART_EVENT_REWARD_QUEST
@ SMART_EVENT_GO_EVENT_INFORM
@ SMART_EVENT_JUST_SUMMONED
@ SMART_EVENT_WAYPOINT_START
@ SMART_EVENT_SPELLHIT_TARGET
@ SMART_EVENT_GAME_EVENT_START
@ SMART_EVENT_GOSSIP_HELLO
@ SMART_EVENT_GOSSIP_SELECT
@ SMART_EVENT_CORPSE_REMOVED
@ SMART_EVENT_PASSENGER_BOARDED
@ SMART_EVENT_WAYPOINT_ENDED
@ SMART_EVENT_ACCEPTED_QUEST
@ SMART_EVENT_WAYPOINT_RESUMED
@ SMART_EVENT_WAYPOINT_REACHED
@ SMART_EVENT_GAME_EVENT_END
@ SMART_EVENT_FOLLOW_COMPLETED
@ SMART_EVENT_WAYPOINT_STOPPED
@ SMART_EVENT_GO_STATE_CHANGED
@ SMART_EVENT_DAMAGED_TARGET
@ SMART_EVENT_SUMMONED_UNIT
@ SMART_ESCORT_LAST_OOC_POINT
std::list< WorldObject * > ObjectList
@ SPELL_AURA_CLONE_CASTER
@ SPELL_AURA_CONTROL_VEHICLE
@ UNIT_STATE_ROAMING_MOVE
AreaTriggerScript(const char *name)
uint64 GetCasterGUID() const
bool HasEffectType(AuraType type) const
CreatureAI(Creature *creature)
std::string GetAIName() const
std::string GetAIName() const
static Player * GetPlayer(WorldObject const &, uint64 guid)
static Unit * GetUnit(WorldObject const &, uint64 guid)
void GroupEventHappens(uint32 questId, WorldObject const *pEventObject)
bool IsAtGroupRewardDistance(WorldObject const *pRewardSource) const
Corpse * GetCorpse() const
void AreaExploredOrEventHappens(uint32 questId)
QuestStatus GetQuestStatus(uint32 quest_id) const
void FailQuest(uint32 quest_id)
uint32 GetQuestId() const
bool OnGossipHello(Player *player) OVERRIDE
uint32 mEscortInvokerCheckTimer
void OnSpellClick(Unit *clicker, bool &result) OVERRIDE
void RemoveEscortState(uint32 uiEscortState)
void UpdatePath(const uint32 diff)
void JustReachedHome() OVERRIDE
void IsSummonedBy(Unit *summoner) OVERRIDE
void StartPath(bool run=false, uint32 path=0, bool repeat=false, Unit *invoker=NULL)
void PausePath(uint32 delay, bool forced=false)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void MoveInLineOfSight(Unit *who) OVERRIDE
void sGossipSelect(Player *player, uint32 sender, uint32 action) OVERRIDE
void SetSwim(bool swim=true)
void AttackStart(Unit *who) OVERRIDE
uint32 mFollowArrivedTimer
void StopPath(uint32 DespawnTime=0, uint32 quest=0, bool fail=false)
void PassengerBoarded(Unit *who, int8 seatId, bool apply) OVERRIDE
== Fields =======================================
static int Permissible(const Creature *)
void UpdateAIWhileCharmed(const uint32 diff)
void InitializeAI() OVERRIDE
void SetDespawnTime(uint32 t)
bool AssistPlayerInCombat(Unit *who)
void EndPath(bool fail=false)
void SetFollow(Unit *target, float dist=0.0f, float angle=0.0f, uint32 credit=0, uint32 end=0, uint32 creditType=0)
void sQuestAccept(Player *player, Quest const *quest) OVERRIDE
void sGossipHello(Player *player) OVERRIDE
bool LoadPath(uint32 entry)
void DamageDealt(Unit *doneTo, uint32 &damage, DamageEffectType) OVERRIDE
WayPoint * GetNextWayPoint()
void MovepointReached(uint32 id)
void JustRespawned() OVERRIDE
void MovementInform(uint32 MovementType, uint32 Data) OVERRIDE
bool CanAIAttack(const Unit *who) const OVERRIDE
void CorpseRemoved(uint32 &respawnDelay) OVERRIDE
== State checks =================================
void SetGUID(uint64 guid, int32 id=0) OVERRIDE
void SpellHitTarget(Unit *target, const SpellInfo *spellInfo) OVERRIDE
uint32 GetData(uint32 id=0) const OVERRIDE
void OnCharmed(bool apply) OVERRIDE
void sQuestReward(Player *player, Quest const *quest, uint32 opt) OVERRIDE
void KilledUnit(Unit *victim) OVERRIDE
uint32 mInvincibilityHpLevel
void DamageTaken(Unit *doneBy, uint32 &damage) OVERRIDE
void sGossipSelectCode(Player *player, uint32 sender, uint32 action, const char *code) OVERRIDE
uint64 GetGUID(int32 id=0) const OVERRIDE
bool sOnDummyEffect(Unit *caster, uint32 spellId, SpellEffIndex effIndex) OVERRIDE
void SetFly(bool fly=true)
void ReturnToLastOOCPos()
void EnterEvadeMode() OVERRIDE
void JustSummoned(Creature *creature) OVERRIDE
void EnterCombat(Unit *enemy) OVERRIDE
bool HasEscortState(uint32 uiEscortState) const
void AddEscortState(uint32 uiEscortState)
uint32 mFollowArrivedEntry
void SummonedCreatureDespawn(Creature *unit) OVERRIDE
void DoAction(int32 param=0) OVERRIDE
void SpellHit(Unit *unit, const SpellInfo *spellInfo) OVERRIDE
void SetCombatMove(bool on)
void SetScript9(SmartScriptHolder &e, uint32 entry, Unit *invoker)
SmartScript * GetScript()
void ReceiveEmote(Player *player, uint32 textEmote) OVERRIDE
void SetRun(bool run=true)
void UpdateDespawn(const uint32 diff)
void JustDied(Unit *killer) OVERRIDE
void HealReceived(Unit *doneBy, uint32 &addhealth) OVERRIDE
bool IsEscortInvokerInRange()
void sOnGameEvent(bool start, uint16 eventId) OVERRIDE
void SetData(uint32 id, uint32 value) OVERRIDE
void SetData(uint32 id, uint32 value) OVERRIDE
bool GossipHello(Player *player) OVERRIDE
bool GossipSelect(Player *player, uint32 sender, uint32 action) OVERRIDE
bool QuestAccept(Player *player, Quest const *quest) OVERRIDE
void SetScript9(SmartScriptHolder &e, uint32 entry, Unit *invoker)
void OnStateChanged(uint32 state, Unit *unit) OVERRIDE
void EventInform(uint32 eventId) OVERRIDE
SmartScript * GetScript()
void UpdateAI(uint32 diff) OVERRIDE
uint32 GetDialogStatus(Player *) OVERRIDE
static int Permissible(const GameObject *g)
void OnGameEvent(bool start, uint16 eventId) OVERRIDE
void InitializeAI() OVERRIDE
void Destroyed(Player *player, uint32 eventId) OVERRIDE
bool GossipSelectCode(Player *, uint32, uint32, const char *) OVERRIDE
bool QuestReward(Player *player, Quest const *quest, uint32 opt) OVERRIDE
void OnUpdate(const uint32 diff)
void SetScript9(SmartScriptHolder &e, uint32 entry)
void ProcessEventsFor(SMART_EVENT e, Unit *unit=NULL, uint32 var0=0, uint32 var1=0, bool bvar=false, const SpellInfo *spell=NULL, GameObject *gob=NULL)
void OnInitialize(WorldObject *obj, AreaTriggerEntry const *at=NULL)
void OnMoveInLineOfSight(Unit *who)
ObjectList * GetTargetList(uint32 id)
void SetPathId(uint32 id)
bool OnTrigger(Player *player, AreaTriggerEntry const *trigger)
void DoMeleeAttackIfReady()
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
void RemoveAurasByType(AuraType auraType, uint64 casterGUID=0, Aura *except=NULL, bool negative=true, bool positive=true)
void SetInCombatWith(Unit *enemy)