diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-03-27 12:54:42 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-03-27 12:54:42 +0200 |
commit | 0fbde6782469569c5e33ecddc9e8ceafb42db6b0 (patch) | |
tree | b96f7a3b7f3f8f29e9ab59183ca1113831af2cf0 /src | |
parent | 9fea7d9a85b4f0fb7653a3f2f53a8ad73b0063d4 (diff) |
Core/AI: Some code style cleanup
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/AI/CoreAI/UnitAI.h | 18 | ||||
-rwxr-xr-x | src/server/game/AI/CreatureAI.h | 12 | ||||
-rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.h | 2 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 14 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 344 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.h | 33 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 4 |
7 files changed, 222 insertions, 205 deletions
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 9246bbd3e34..f64f25250c2 100755 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -49,9 +49,9 @@ enum SelectAggroTarget }; // default predicate function to select target based on distance, player and/or aura criteria -struct DefaultTargetSelector : public std::unary_function<Unit *, bool> +struct DefaultTargetSelector : public std::unary_function<Unit* , bool> { - const Unit *me; + const Unit* me; float m_dist; bool m_playerOnly; int32 m_aura; @@ -60,9 +60,9 @@ struct DefaultTargetSelector : public std::unary_function<Unit *, bool> // dist: if 0: ignored, if > 0: maximum distance to the reference unit, if < 0: minimum distance to the reference unit // playerOnly: self explaining // aura: if 0: ignored, if > 0: the target shall have the aura, if < 0, the target shall NOT have the aura - DefaultTargetSelector(const Unit *pUnit, float dist, bool playerOnly, int32 aura) : me(pUnit), m_dist(dist), m_playerOnly(playerOnly), m_aura(aura) {} + DefaultTargetSelector(Unit const* pUnit, float dist, bool playerOnly, int32 aura) : me(pUnit), m_dist(dist), m_playerOnly(playerOnly), m_aura(aura) {} - bool operator() (const Unit *pTarget) + bool operator() (Unit const* pTarget) { if (!me) return false; @@ -125,10 +125,10 @@ class UnitAI Unit* SelectTarget(SelectAggroTarget targetType, uint32 position = 0, float dist = 0.0f, bool playerOnly = false, int32 aura = 0); // Select the targets satifying the predicate. - // predicate shall extend std::unary_function<Unit *, bool> + // predicate shall extend std::unary_function<Unit* , bool> template <class PREDICATE> Unit* SelectTarget(SelectAggroTarget targetType, uint32 position, PREDICATE predicate) { - const std::list<HostileReference *> &threatlist = me->getThreatManager().getThreatList(); + const std::list<HostileReference* > &threatlist = me->getThreatManager().getThreatList(); if (position >= threatlist.size()) return NULL; @@ -175,7 +175,7 @@ class UnitAI void SelectTargetList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget targetType, float dist = 0.0f, bool playerOnly = false, int32 aura = 0); // Select the targets satifying the predicate. - // predicate shall extend std::unary_function<Unit *, bool> + // predicate shall extend std::unary_function<Unit* , bool> template <class PREDICATE> void SelectTargetList(std::list<Unit*> &targetList, PREDICATE predicate, uint32 maxTargets, SelectAggroTarget targetType) { std::list<HostileReference*> const& threatlist = me->getThreatManager().getThreatList(); @@ -229,7 +229,7 @@ class UnitAI void DoMeleeAttackIfReady(); bool DoSpellAttackIfReady(uint32 spell); - static AISpellInfoType *AISpellInfo; + static AISpellInfoType* AISpellInfo; static void FillAISpellInfo(); virtual void sGossipHello(Player* /*player*/) {} @@ -247,7 +247,7 @@ class PlayerAI : public UnitAI protected: Player* const me; public: - explicit PlayerAI(Player *p) : UnitAI((Unit*)p), me(p) {} + explicit PlayerAI(Player* p) : UnitAI((Unit*)p), me(p) {} void OnCharmed(bool apply); }; diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index e266ce14e80..db7442df3ca 100755 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -74,8 +74,8 @@ class CreatureAI : public UnitAI void SetGazeOn(Unit* target); Creature* DoSummon(uint32 entry, Position const& pos, uint32 despawnTime = 30000, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); - Creature* DoSummon(uint32 entry, WorldObject *obj, float radius = 5.0f, uint32 despawnTime = 30000, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); - Creature* DoSummonFlyer(uint32 entry, WorldObject *obj, float flightZ, float radius = 5.0f, uint32 despawnTime = 30000, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); + Creature* DoSummon(uint32 entry, WorldObject* obj, float radius = 5.0f, uint32 despawnTime = 30000, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); + Creature* DoSummonFlyer(uint32 entry, WorldObject* obj, float flightZ, float radius = 5.0f, uint32 despawnTime = 30000, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); public: void Talk(uint8 id, uint64 WhisperGuid = 0); @@ -85,7 +85,7 @@ class CreatureAI : public UnitAI /// == Reactions At ================================= - // Called if IsVisible(Unit *who) is true at each *who move, reaction at visibility zone enter + // Called if IsVisible(Unit* who) is true at each who move, reaction at visibility zone enter void MoveInLineOfSight_Safe(Unit* who); // Called in Creature::Update when deathstate = DEAD. Inherited classes may maniuplate the ability to respawn based on scripted events. @@ -131,7 +131,7 @@ class CreatureAI : public UnitAI void OnCharmed(bool apply); - //virtual void SpellClick(Player *player) {} + //virtual void SpellClick(Player* player) {} // Called at reaching home after evade virtual void JustReachedHome() {} @@ -145,7 +145,7 @@ class CreatureAI : public UnitAI // Called when creature attack expected (if creature can and no have current victim) // Note: for reaction at hostile action must be called AttackedBy function. - //virtual void AttackStart(Unit *) {} + //virtual void AttackStart(Unit* ) {} // Called at World update tick //virtual void UpdateAI(const uint32 /*diff*/) {} @@ -153,7 +153,7 @@ class CreatureAI : public UnitAI /// == State checks ================================= // Is unit visible for MoveInLineOfSight - //virtual bool IsVisible(Unit *) const { return false; } + //virtual bool IsVisible(Unit* ) const { return false; } // called when the corpse of this creature gets removed virtual void CorpseRemoved(uint32& /*respawnDelay*/) {} diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 2c34b5bad74..d60e5defa33 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -294,7 +294,7 @@ class BossAI : public ScriptedAI }; // SD2 grid searchers. -Creature *GetClosestCreatureWithEntry(WorldObject* source, uint32 entry, float maxSearchRange, bool alive = true); +Creature* GetClosestCreatureWithEntry(WorldObject* source, uint32 entry, float maxSearchRange, bool alive = true); GameObject* GetClosestGameObjectWithEntry(WorldObject* source, uint32 entry, float maxSearchRange); void GetCreatureListWithEntryInGrid(std::list<Creature*>& list, WorldObject* source, uint32 entry, float maxSearchRange); void GetGameObjectListWithEntryInGrid(std::list<GameObject*>& list, WorldObject* source, uint32 entry, float maxSearchRange); diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index c88494f9c4b..4186f5e7565 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -32,7 +32,7 @@ #include "SmartAI.h" #include "ScriptPCH.h" -SmartAI::SmartAI(Creature *c) : CreatureAI(c) +SmartAI::SmartAI(Creature* c) : CreatureAI(c) { // copy script to local (protection for table reload) @@ -222,11 +222,11 @@ void SmartAI::EndPath(bool fail) if(fail && plr->GetQuestStatus(mEscortQuestID) == QUEST_STATUS_INCOMPLETE) plr->FailQuest(mEscortQuestID); - if (Group *pGroup = plr->GetGroup()) + if (Group* pGroup = plr->GetGroup()) { - for (GroupReference *gr = pGroup->GetFirstMember(); gr != NULL; gr = gr->next()) + for (GroupReference* gr = pGroup->GetFirstMember(); gr != NULL; gr = gr->next()) { - Player *pGroupGuy = gr->getSource(); + Player* pGroupGuy = gr->getSource(); if(!fail && pGroupGuy->IsAtGroupRewardDistance(me) && !pGroupGuy->GetCorpse()) pGroupGuy->AreaExploredOrEventHappens(mEscortQuestID); @@ -390,11 +390,11 @@ bool SmartAI::IsEscortInvokerInRange() if (me->GetDistance(plr) <= SMART_ESCORT_MAX_PLAYER_DIST) return true; - if (Group *pGroup = plr->GetGroup()) + if (Group* pGroup = plr->GetGroup()) { - for (GroupReference *gr = pGroup->GetFirstMember(); gr != NULL; gr = gr->next()) + for (GroupReference* gr = pGroup->GetFirstMember(); gr != NULL; gr = gr->next()) { - Player *pGroupGuy = gr->getSource(); + Player* pGroupGuy = gr->getSource(); if (me->GetDistance(pGroupGuy) <= SMART_ESCORT_MAX_PLAYER_DIST) return true; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 3fda7ebbe26..91e34d83a5c 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -104,7 +104,7 @@ void SmartScript::ProcessEventsFor(SMART_EVENT e, Unit* unit, uint32 var0, uint3 } } -void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, uint32 var1, bool bvar, const SpellEntry* spell, GameObject* gob) +void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, uint32 var1, bool bvar, const SpellEntry* spell, GameObject* gob) { //calc random if (e.GetEventType() != SMART_EVENT_LINK && e.event.event_chance < 100 && e.event.event_chance) @@ -138,7 +138,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u talker = me; if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature((*itr))) { @@ -155,10 +155,8 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u mTextGUID = IsPlayer(GetLastInvoker()) ? GetLastInvoker()->GetGUID() : NULL;//invoker, used for $vars in texts mUseTextTimer = true; sCreatureTextMgr->SendChat(talker, uint8(e.action.talk.textGroupID), mTextGUID); - sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript::ProcessAction: SMART_ACTION_TALK: talker: %s (GuidLow: %u), textGuid: %u", talker->GetName(), talker->GetGUIDLow(), mTextGUID); - break; } case SMART_ACTION_SIMPLE_TALK: @@ -166,7 +164,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature((*itr))) sCreatureTextMgr->SendChat((*itr)->ToCreature(), uint8(e.action.talk.textGroupID), IsPlayer(GetLastInvoker())? GetLastInvoker()->GetGUID() : NULL); @@ -188,7 +186,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit((*itr))) { (*itr)->ToUnit()->HandleEmoteCommand(e.action.emote.emote); @@ -205,7 +203,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature((*itr))) { @@ -224,7 +222,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature((*itr))) { @@ -258,7 +256,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsCreature((*itr))) continue; @@ -300,7 +298,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer((*itr))) { @@ -318,7 +316,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer((*itr))) if (const Quest* q = sObjectMgr->GetQuestTemplate(e.action.quest.quest)) @@ -338,7 +336,6 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u return; me->SetReactState(ReactStates(e.action.react.state)); - sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript::ProcessAction:: SMART_ACTION_SET_REACT_STATE: Creature guidLow %u set reactstate %u", me->GetGUIDLow(), e.action.react.state); break; @@ -366,7 +363,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u } } - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -406,7 +403,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -425,7 +422,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer((*itr))) { @@ -447,7 +444,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer((*itr))) { @@ -469,7 +466,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -495,7 +492,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -517,7 +514,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -536,7 +533,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsGameObject((*itr))) { @@ -556,7 +553,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsGameObject((*itr))) { @@ -575,7 +572,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -593,7 +590,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -612,7 +609,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -657,7 +654,6 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u { IncPhase(e.action.incEventPhase.inc); DecPhase(e.action.incEventPhase.dec); - sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript::ProcessAction:: SMART_ACTION_INC_EVENT_PHASE: Creature %u inc event phase by %u, " "decrease by %u", me->GetGUIDLow(), e.action.incEventPhase.inc, e.action.incEventPhase.dec); break; @@ -699,7 +695,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer((*itr))) { @@ -718,7 +714,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsUnit((*itr))) continue; @@ -740,7 +736,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit((*itr))) { @@ -803,7 +799,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsPlayer((*itr))) continue; @@ -937,7 +933,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if(!IsUnit((*itr))) continue; if (e.action.morphOrMount.creature || e.action.morphOrMount.model) @@ -964,8 +960,8 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u { if (!GetBaseObject()) return; - if (e.action.invincHP.minHP) - mInvinceabilityHpLevel = me->CountPctFromMaxHealth(e.action.invincHP.minHP); + if (e.action.invincHP.percent) + mInvinceabilityHpLevel = me->CountPctFromMaxHealth(e.action.invincHP.percent); else mInvinceabilityHpLevel = e.action.invincHP.minHP; break; @@ -976,11 +972,11 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { - if (IsCreature((*itr))) + if (IsCreature(*itr)) (*itr)->ToCreature()->AI()->SetData(e.action.setData.field, e.action.setData.data); - else if (IsGameObject((*itr))) + else if (IsGameObject(*itr)) (*itr)->ToGameObject()->AI()->SetData(e.action.setData.field, e.action.setData.data); } @@ -1017,7 +1013,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit(*itr)) { @@ -1037,7 +1033,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsUnit(*itr)) continue; @@ -1068,7 +1064,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsUnit(*itr)) continue; @@ -1091,7 +1087,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsUnit(*itr)) continue; @@ -1113,7 +1109,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsPlayer(*itr)) continue; @@ -1130,7 +1126,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsPlayer(*itr)) continue; @@ -1160,7 +1156,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsPlayer(*itr)) continue; @@ -1257,10 +1253,11 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsPlayer(*itr)) continue; + (*itr)->ToPlayer()->SendMovieStart(e.action.movie.entry); } @@ -1282,7 +1279,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature(*itr)) (*itr)->ToCreature()->Respawn(); @@ -1299,7 +1296,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsPlayer(*itr)) (*itr)->ToPlayer()->PlayerTalkClass->CloseGossip(); @@ -1312,14 +1309,14 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if(Creature* npc = (*itr)->ToCreature()) { uint32 slot[3]; if (e.action.equip.entry) { - EquipmentInfo const *einfo = sObjectMgr->GetEquipmentInfo(e.action.equip.entry); + EquipmentInfo const* einfo = sObjectMgr->GetEquipmentInfo(e.action.equip.entry); if (!einfo) { sLog->outErrorDb("SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info entry %u", e.action.equip.entry); @@ -1389,7 +1386,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature(*itr)) { @@ -1435,7 +1432,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsUnit(*itr) && (*itr)->ToUnit()->GetVehicleKit()) { @@ -1459,7 +1456,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (Creature* target = (*itr)->ToCreature()) { @@ -1483,7 +1480,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->SetUInt32Value(UNIT_NPC_FLAGS, e.action.unitFlag.flag); @@ -1496,7 +1493,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->SetFlag(UNIT_NPC_FLAGS, e.action.unitFlag.flag); @@ -1509,7 +1506,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->RemoveFlag(UNIT_NPC_FLAGS, e.action.unitFlag.flag); @@ -1529,7 +1526,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u return; } - for (ObjectList::const_iterator itr = casters->begin(); itr != casters->end(); itr++) + for (ObjectList::const_iterator itr = casters->begin(); itr != casters->end(); ++itr) { if (IsUnit(*itr)) { @@ -1576,7 +1573,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (Creature* target = (*itr)->ToCreature()) { @@ -1606,7 +1603,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (targets) { - for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (Creature* target = (*itr)->ToCreature()) { @@ -1629,7 +1626,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsPlayer(*itr)) (*itr)->ToPlayer()->ActivateTaxiPathTo(e.action.taxi.id); @@ -1642,7 +1639,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsCreature((*itr))) { @@ -1661,7 +1658,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->SetByteFlag(UNIT_FIELD_BYTES_1, 0, e.action.setunitByte.byte1); @@ -1673,7 +1670,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u ObjectList* targets = GetTargets(e, unit); if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->RemoveByteFlag(UNIT_FIELD_BYTES_1, 0, e.action.delunitByte.byte1); @@ -1686,7 +1683,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) (*itr)->ToUnit()->InterruptNonMeleeSpells(e.action.interruptSpellCasting.withDelayed, e.action.interruptSpellCasting.spell_id, e.action.interruptSpellCasting.withInstant); @@ -1699,7 +1696,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u if (!targets) return; - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsGameObject(*itr)) (*itr)->ToGameObject()->SendCustomAnim(e.action.sendGoCustomAnim.anim); @@ -1871,7 +1868,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker) { l->push_back(trigger); if (Player* plr = trigger->ToPlayer()) - if (Group *pGroup = plr->GetGroup()) + if (Group* pGroup = plr->GetGroup()) for (GroupReference* groupRef = pGroup->GetFirstMember(); groupRef != NULL; groupRef = groupRef->next()) if (Player* member = groupRef->getSource()) l->push_back(member); @@ -2015,7 +2012,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker) { // will always return a valid pointer, even if empty list ObjectList* units = GetWorldObjectsInDist((float)e.target.playerDistance.dist); - for (ObjectList::const_iterator itr = units->begin(); itr != units->end(); itr++) + for (ObjectList::const_iterator itr = units->begin(); itr != units->end(); ++itr) if (IsPlayer(*itr)) l->push_back(*itr); @@ -2089,7 +2086,7 @@ ObjectList* SmartScript::GetWorldObjectsInDist(float dist) return targets; } -void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, uint32 var1, bool bvar, const SpellEntry* spell, GameObject* gob) +void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, uint32 var1, bool bvar, const SpellEntry* spell, GameObject* gob) { if (!e.active && e.GetEventType() != SMART_EVENT_LINK) return; @@ -2120,68 +2117,68 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui ProcessAction(e); break; case SMART_EVENT_HEALT_PCT: - { - if (!me || !me->isInCombat() || !me->GetMaxHealth()) - return; - uint32 perc = (uint32)me->GetHealthPct(); - if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) - return; - RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); - ProcessAction(e); - break; - } + { + if (!me || !me->isInCombat() || !me->GetMaxHealth()) + return; + uint32 perc = (uint32)me->GetHealthPct(); + if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) + return; + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); + ProcessAction(e); + break; + } case SMART_EVENT_TARGET_HEALTH_PCT: - { - if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->GetMaxHealth()) - return; - uint32 perc = (uint32)me->getVictim()->GetHealthPct(); - if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) - return; - RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); - ProcessAction(e, me->getVictim()); - break; - } + { + if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->GetMaxHealth()) + return; + uint32 perc = (uint32)me->getVictim()->GetHealthPct(); + if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) + return; + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); + ProcessAction(e, me->getVictim()); + break; + } case SMART_EVENT_MANA_PCT: - { - if (!me || !me->isInCombat() || !me->GetMaxPower(POWER_MANA)) - return; - uint32 perc = uint32(100.0f * me->GetPower(POWER_MANA) / me->GetMaxPower(POWER_MANA)); - if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) - return; - RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); - ProcessAction(e); - break; - } + { + if (!me || !me->isInCombat() || !me->GetMaxPower(POWER_MANA)) + return; + uint32 perc = uint32(100.0f * me->GetPower(POWER_MANA) / me->GetMaxPower(POWER_MANA)); + if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) + return; + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); + ProcessAction(e); + break; + } case SMART_EVENT_TARGET_MANA_PCT: - { - if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->GetMaxPower(POWER_MANA)) - return; - uint32 perc = uint32(100.0f * me->getVictim()->GetPower(POWER_MANA) / me->getVictim()->GetMaxPower(POWER_MANA)); - if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) - return; - RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); - ProcessAction(e, me->getVictim()); - break; - } + { + if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->GetMaxPower(POWER_MANA)) + return; + uint32 perc = uint32(100.0f * me->getVictim()->GetPower(POWER_MANA) / me->getVictim()->GetMaxPower(POWER_MANA)); + if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min) + return; + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); + ProcessAction(e, me->getVictim()); + break; + } case SMART_EVENT_RANGE: - { - if (!me || !me->isInCombat() || !me->getVictim()) - return; + { + if (!me || !me->isInCombat() || !me->getVictim()) + return; - if (me->IsInRange(me->getVictim(), (float)e.event.minMaxRepeat.min, (float)e.event.minMaxRepeat.max)) - { - ProcessAction(e, me->getVictim()); - RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); - } - break; - } - case SMART_EVENT_TARGET_CASTING: + if (me->IsInRange(me->getVictim(), (float)e.event.minMaxRepeat.min, (float)e.event.minMaxRepeat.max)) { - if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->IsNonMeleeSpellCasted(false, false, true)) - return; ProcessAction(e, me->getVictim()); - RecalcTimer(e, e.event.minMax.repeatMin, e.event.minMax.repeatMax); + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); } + break; + } + case SMART_EVENT_TARGET_CASTING: + { + if (!me || !me->isInCombat() || !me->getVictim() || !me->getVictim()->IsNonMeleeSpellCasted(false, false, true)) + return; + ProcessAction(e, me->getVictim()); + RecalcTimer(e, e.event.minMax.repeatMin, e.event.minMax.repeatMax); + } case SMART_EVENT_FRIENDLY_HEALTH: { if (!me || !me->isInCombat()) @@ -2220,7 +2217,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_HAS_AURA: { - if (!me) return; + if (!me) + return; uint32 count = me->GetAuraCount(e.event.aura.spell); if ((!e.event.aura.count && !count) || (e.event.aura.count && count >= e.event.aura.count)) { @@ -2231,8 +2229,10 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_TARGET_BUFFED: { - if (!me || !me->getVictim()) return; - if (!me) return; + if (!me || !me->getVictim()) + return; + if (!me) + return; uint32 count = me->getVictim()->GetAuraCount(e.event.aura.spell); if (count < e.event.aura.count) return; @@ -2272,7 +2272,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui break; case SMART_EVENT_KILL: { - if (!me || !unit) return; + if (!me || !unit) + return; if (e.event.kill.playerOnly && unit->GetTypeId() != TYPEID_PLAYER) return; if (e.event.kill.creature && unit->GetEntry() != e.event.kill.creature) @@ -2284,9 +2285,10 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui case SMART_EVENT_SPELLHIT_TARGET: case SMART_EVENT_SPELLHIT: { - if (!spell) return; - if (!e.event.spellHit.spell || spell->Id == e.event.spellHit.spell) - if (!e.event.spellHit.school || (spell->SchoolMask & e.event.spellHit.school)) + if (!spell) + return; + if ((!e.event.spellHit.spell || spell->Id == e.event.spellHit.spell) && + (!e.event.spellHit.school || (spell->SchoolMask & e.event.spellHit.school))) { ProcessAction(e, unit, 0, 0, bvar, spell); RecalcTimer(e, e.event.spellHit.cooldownMin, e.event.spellHit.cooldownMax); @@ -2295,7 +2297,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_OOC_LOS: { - if (!me || me->isInCombat()) return; + if (!me || me->isInCombat()) + return; //can trigger if closer than fMaxAllowedRange float range = (float)e.event.los.maxDist; @@ -2314,7 +2317,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_IC_LOS: { - if (!me || !me->isInCombat()) return; + if (!me || !me->isInCombat()) + return; //can trigger if closer than fMaxAllowedRange float range = (float)e.event.los.maxDist; @@ -2333,7 +2337,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_RESPAWN: { - if (!GetBaseObject()) return; + if (!GetBaseObject()) + return; if (e.event.respawn.type == SMART_SCRIPT_RESPAWN_CONDITION_MAP && GetBaseObject()->GetMapId() != e.event.respawn.map) return; if (e.event.respawn.type == SMART_SCRIPT_RESPAWN_CONDITION_AREA && GetBaseObject()->GetZoneId() != e.event.respawn.area) @@ -2343,7 +2348,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui } case SMART_EVENT_SUMMONED_UNIT: { - if (!IsCreature(unit)) return; + if (!IsCreature(unit)) + return; if (e.event.summoned.creature && unit->GetEntry() != e.event.summoned.creature) return; ProcessAction(e, unit); @@ -2435,42 +2441,44 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui case SMART_EVENT_PASSENGER_REMOVED: case SMART_EVENT_PASSENGER_BOARDED: { - if (!unit) return; + if (!unit) + return; ProcessAction(e, unit); RecalcTimer(e, e.event.minMax.repeatMin, e.event.minMax.repeatMax); break; } case SMART_EVENT_TIMED_EVENT_TRIGGERED: - { - if (e.event.timedEvent.id == var0) - ProcessAction(e, unit); - break; - } + { + if (e.event.timedEvent.id == var0) + ProcessAction(e, unit); + break; + } case SMART_EVENT_GOSSIP_SELECT: - { - sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript: Gossip Select: menu %u action %u", var0, var1);//little help for scripters - if (e.event.gossip.sender != var0 || e.event.gossip.action != var1) - return; - ProcessAction(e, unit, var0, var1); - break; - } + { + sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript: Gossip Select: menu %u action %u", var0, var1);//little help for scripters + if (e.event.gossip.sender != var0 || e.event.gossip.action != var1) + return; + ProcessAction(e, unit, var0, var1); + break; + } case SMART_EVENT_DUMMY_EFFECT: - { - if (e.event.dummy.spell != var0 || e.event.dummy.effIndex != var1) - return; - ProcessAction(e, unit, var0, var1); - break; - } + { + if (e.event.dummy.spell != var0 || e.event.dummy.effIndex != var1) + return; + ProcessAction(e, unit, var0, var1); + break; + } default: sLog->outErrorDb("SmartScript::ProcessEvent: Unhandled Event type %u", e.GetEventType()); break; } } -void SmartScript::InitTimer(SmartScriptHolder &e) +void SmartScript::InitTimer(SmartScriptHolder& e) { switch (e.GetEventType()) - {//set only events which have initial timers + { + //set only events which have initial timers case SMART_EVENT_UPDATE: case SMART_EVENT_UPDATE_IC: case SMART_EVENT_UPDATE_OOC: @@ -2483,24 +2491,27 @@ void SmartScript::InitTimer(SmartScriptHolder &e) break; } } -void SmartScript::RecalcTimer(SmartScriptHolder &e, uint32 min, uint32 max) +void SmartScript::RecalcTimer(SmartScriptHolder& e, uint32 min, uint32 max) { // min/max was checked at loading! e.timer = urand(uint32(min), uint32(max)); e.active = e.timer ? false : true; } -void SmartScript::UpdateTimer(SmartScriptHolder &e, const uint32 diff) +void SmartScript::UpdateTimer(SmartScriptHolder& e, uint32 const diff) { if (e.GetEventType() == SMART_EVENT_LINK) return; + if (e.event.event_phase_mask && !IsInPhase(e.event.event_phase_mask)) return; if (e.GetEventType() == SMART_EVENT_UPDATE_IC && (!me || !me->isInCombat())) return; + if (e.GetEventType() == SMART_EVENT_UPDATE_OOC && (me && me->isInCombat()))//can be used with me=NULL (go script) return; + if (e.timer < diff) { e.active = true;//activate events with cooldown @@ -2538,10 +2549,12 @@ void SmartScript::UpdateTimer(SmartScriptHolder &e, const uint32 diff) break; } } - } else e.timer -= diff; + } + else + e.timer -= diff; } -bool SmartScript::CheckTimer(SmartScriptHolder &e) +bool SmartScript::CheckTimer(SmartScriptHolder const& e) const { return e.active; } @@ -2551,29 +2564,26 @@ void SmartScript::InstallEvents() if (!mInstallEvents.empty()) { for (SmartAIEventList::iterator i = mInstallEvents.begin(); i != mInstallEvents.end(); ++i) - { - mEvents.push_back((*i));//must be before UpdateTimers - } + mEvents.push_back(*i);//must be before UpdateTimers + mInstallEvents.clear(); } } -void SmartScript::OnUpdate(const uint32 diff) +void SmartScript::OnUpdate(uint32 const diff) { if ((mScriptType == SMART_SCRIPT_TYPE_CREATURE || mScriptType == SMART_SCRIPT_TYPE_GAMEOBJECT) && !GetBaseObject()) return; + InstallEvents();//before UpdateTimers for (SmartAIEventList::iterator i = mEvents.begin(); i != mEvents.end(); ++i) - UpdateTimer((*i), diff); + UpdateTimer(*i, diff); if (!mStoredEvents.empty()) - { for (SmartAIEventList::iterator i = mStoredEvents.begin(); i != mStoredEvents.end(); ++i) - { - UpdateTimer((*i), diff); - } - } + UpdateTimer(*i, diff); + bool needCleanup = true; if (!mTimedActionList.empty()) { @@ -2581,7 +2591,7 @@ void SmartScript::OnUpdate(const uint32 diff) { if ((*i).enableTimed) { - UpdateTimer((*i), diff); + UpdateTimer(*i, diff); needCleanup = false; } } @@ -2821,7 +2831,7 @@ void SmartScript::DoFindFriendlyMissingBuff(std::list<Creature*>& _list, float r cell.Visit(p, grid_creature_searcher, *me->GetMap()); } -void SmartScript::SetScript9(SmartScriptHolder &e, uint32 entry) +void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry) { mTimedActionList.clear(); mTimedActionList = sSmartScriptMgr->GetScript(entry, SMART_SCRIPT_TYPE_TIMED_ACTIONLIST); diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h index 34e1faf9696..8b0fb3bbca3 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.h +++ b/src/server/game/AI/SmartScripts/SmartScript.h @@ -41,12 +41,12 @@ class SmartScript void FillScript(SmartAIEventList e, WorldObject* obj, AreaTriggerEntry const* at); void ProcessEventsFor(SMART_EVENT e, Unit* unit = NULL, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, const SpellEntry* spell = NULL, GameObject* gob = NULL); - void ProcessEvent(SmartScriptHolder &e, Unit* unit = NULL, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, const SpellEntry* spell = NULL, GameObject* gob = NULL); - bool CheckTimer(SmartScriptHolder &e); - void RecalcTimer(SmartScriptHolder &e, uint32 min, uint32 max); - void UpdateTimer(SmartScriptHolder &e, const uint32 diff); - void InitTimer(SmartScriptHolder &e); - void ProcessAction(SmartScriptHolder &e, Unit* unit = NULL, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, const SpellEntry* spell = NULL, GameObject* gob = NULL); + void ProcessEvent(SmartScriptHolder& e, Unit* unit = NULL, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, const SpellEntry* spell = NULL, GameObject* gob = NULL); + bool CheckTimer(SmartScriptHolder const& e) const; + void RecalcTimer(SmartScriptHolder& e, uint32 min, uint32 max); + void UpdateTimer(SmartScriptHolder& e, uint32 const diff); + void InitTimer(SmartScriptHolder& e); + void ProcessAction(SmartScriptHolder& e, Unit* unit = NULL, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, const SpellEntry* spell = NULL, GameObject* gob = NULL); ObjectList* GetTargets(SmartScriptHolder e, Unit* invoker = NULL); ObjectList* GetWorldObjectsInDist(float dist); void InstallTemplate(SmartScriptHolder e); @@ -63,22 +63,27 @@ class SmartScript obj = go; return obj; } + bool IsUnit(WorldObject* obj) { return obj && (obj->GetTypeId() == TYPEID_UNIT || obj->GetTypeId() == TYPEID_PLAYER); } + bool IsPlayer(WorldObject* obj) { return obj && obj->GetTypeId() == TYPEID_PLAYER; } + bool IsCreature(WorldObject* obj) { return obj && obj->GetTypeId() == TYPEID_UNIT; } + bool IsGameObject(WorldObject* obj) { return obj && obj->GetTypeId() == TYPEID_GAMEOBJECT; } + bool ConditionValid(Unit* u, int32 c, int32 v1, int32 v2, int32 v3) { if (c == 0) return true; @@ -92,7 +97,7 @@ class SmartScript } void OnUpdate(const uint32 diff); - void OnMoveInLineOfSight(Unit *who); + void OnMoveInLineOfSight(Unit* who); Unit* DoSelectLowestHpFriendly(float range, uint32 MinHPDiff); void DoFindFriendlyCC(std::list<Creature*>& _list, float range); @@ -145,9 +150,9 @@ class SmartScript return NULL; } - inline GameObject* FindGameObjectNear(WorldObject* pSearchObject, uint32 guid) const + GameObject* FindGameObjectNear(WorldObject* pSearchObject, uint32 guid) const { - GameObject *pGameObject = NULL; + GameObject* pGameObject = NULL; CellPair p(Trinity::ComputeCellPair(pSearchObject->GetPositionX(), pSearchObject->GetPositionY())); Cell cell(p); @@ -162,9 +167,9 @@ class SmartScript return pGameObject; } - inline Creature* FindCreatureNear(WorldObject* pSearchObject, uint32 guid) const + Creature* FindCreatureNear(WorldObject* pSearchObject, uint32 guid) const { - Creature *crea = NULL; + Creature* crea = NULL; CellPair p(Trinity::ComputeCellPair(pSearchObject->GetPositionX(), pSearchObject->GetPositionY())); Cell cell(p); cell.data.Part.reserved = ALL_DISTRICT; @@ -204,17 +209,19 @@ class SmartScript } //TIMED_ACTIONLIST (script type 9 aka script9) - void SetScript9(SmartScriptHolder &e, uint32 entry); + void SetScript9(SmartScriptHolder& e, uint32 entry); Unit* GetLastInvoker(); uint64 mLastInvoker; private: - void IncPhase(int32 p = 1) { + void IncPhase(int32 p = 1) + { if(p >= 0) mEventPhase += (uint32)p; else DecPhase(abs(p)); } + void DecPhase(int32 p = 1) { mEventPhase -= (mEventPhase < (uint32)p ? (uint32)p - mEventPhase : (uint32)p); } bool IsInPhase(uint32 p) const { return mEventPhase & p; } void SetPhase(uint32 p = 0) { mEventPhase = p; } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 7d274448f39..58e3dde547e 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -54,7 +54,7 @@ void SmartWaypointMgr::LoadFromDB() do { - Field *fields = result->Fetch(); + Field* fields = result->Fetch(); uint32 entry = fields[0].GetUInt32(); uint32 id = fields[1].GetUInt32(); float x,y,z; @@ -62,7 +62,7 @@ void SmartWaypointMgr::LoadFromDB() y = fields[3].GetFloat(); z = fields[4].GetFloat(); - WayPoint *wp = new WayPoint(id, x, y, z); + WayPoint* wp = new WayPoint(id, x, y, z); if (last_entry != entry) { |