Core/AI: Some code style cleanup

This commit is contained in:
Shauren
2011-03-27 12:54:42 +02:00
parent 9fea7d9a85
commit 0fbde67824
7 changed files with 222 additions and 205 deletions
+9 -9
View File
@@ -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);
};
+6 -6
View File
@@ -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*/) {}
@@ -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);
+7 -7
View File
@@ -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;
+177 -167
View File
@@ -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);
+20 -13
View File
@@ -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; }
@@ -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)
{