Core: Add new system for parallelizing client packet processing. Handle WorldSession updates in Map::Update() where we are safe to proceed. Patch by Ambal.
(And clean up tabs and whitespace while rummaging around in there) Closes issue 5084. --HG-- branch : trunk
This commit is contained in:
@@ -52,7 +52,7 @@ SmartAI::SmartAI(Creature *c) : CreatureAI(c)
|
||||
mRun = true;
|
||||
|
||||
me->GetPosition(&mLastOOCPos);
|
||||
|
||||
|
||||
mCanAutoAttack = true;
|
||||
mCanCombatMove = true;
|
||||
|
||||
@@ -206,7 +206,7 @@ void SmartAI::EndPath(bool fail)
|
||||
mCurrentWPID = 0;
|
||||
mWPPauseTimer = 0;
|
||||
mLastWP = NULL;
|
||||
|
||||
|
||||
if (mCanRepeatPath)
|
||||
StartPath(mRun, GetScript()->GetPathId(), mCanRepeatPath);
|
||||
else
|
||||
@@ -333,7 +333,7 @@ void SmartAI::UpdatePath(const uint32 diff)
|
||||
me->GetMotionMaster()->MovePoint(wp->id, wp->x, wp->y, wp->z);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,7 +461,7 @@ void SmartAI::EnterEvadeMode()
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
|
||||
Reset();
|
||||
Reset();
|
||||
}
|
||||
|
||||
void SmartAI::MoveInLineOfSight(Unit* who)
|
||||
@@ -667,7 +667,7 @@ void SmartAI::PassengerBoarded(Unit* who, int8 seatId, bool apply)
|
||||
void SmartAI::InitializeAI()
|
||||
{
|
||||
GetScript()->OnInitialize(me);
|
||||
if (!me->isDead())
|
||||
if (!me->isDead())
|
||||
Reset();
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_RESPAWN);
|
||||
}
|
||||
@@ -843,7 +843,7 @@ void SmartGameObjectAI::Reset()
|
||||
}
|
||||
|
||||
// Called when a player opens a gossip dialog with the gameobject.
|
||||
bool SmartGameObjectAI::GossipHello(Player* player)
|
||||
bool SmartGameObjectAI::GossipHello(Player* player)
|
||||
{
|
||||
sLog.outDebug("SmartGameObjectAI::GossipHello");
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_GOSSIP_HELLO, player, 0 ,0 , false, NULL, go);
|
||||
|
||||
@@ -92,7 +92,7 @@ void SmartScript::ProcessEventsFor(SMART_EVENT e, Unit* unit, uint32 var0, uint3
|
||||
SMART_EVENT eventType = SMART_EVENT((*i).GetEventType());
|
||||
if (eventType == SMART_EVENT_LINK)//special handling
|
||||
continue;
|
||||
|
||||
|
||||
if (eventType == e/* && (!(*i).event.event_phase_mask || IsInPhase((*i).event.event_phase_mask)) && !((*i).event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE && (*i).runOnce)*/)
|
||||
ProcessEvent(*i, unit, var0, var1, bvar, spell, gob);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
{
|
||||
if (!IsCreature((*itr)))
|
||||
continue;
|
||||
|
||||
|
||||
if (e.action.morphOrMount.creature || e.action.morphOrMount.model)
|
||||
{
|
||||
//set model based on entry from creature_template
|
||||
@@ -530,7 +530,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
pPlayer = me->GetLootRecipient();
|
||||
if (me && pPlayer)
|
||||
pPlayer->RewardPlayerAndGroupAtEvent(e.action.killedMonster.creature, pPlayer);
|
||||
else if (GetBaseObject())
|
||||
else if (GetBaseObject())
|
||||
{
|
||||
ObjectList* targets = GetTargets(e, unit);
|
||||
if (!targets) return;
|
||||
@@ -581,7 +581,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
pInst->SetData64(e.action.setInstanceData64.field, (*itr)->GetGUID());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_UPDATE_TEMPLATE:
|
||||
@@ -833,7 +833,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
CAST_AI(SmartAI, me->AI())->SetRun(e.action.setRun.run ? true : false);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case SMART_ACTION_SET_SWIMM:
|
||||
{
|
||||
if (!IsSmart()) return;
|
||||
@@ -979,7 +979,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
ne.type = (SMART_EVENT)SMART_EVENT_UPDATE;
|
||||
ne.event_chance = e.action.timeEvent.chance;
|
||||
if (!ne.event_chance) ne.event_chance = 100;
|
||||
|
||||
|
||||
ne.minMaxRepeat.min = e.action.timeEvent.min;
|
||||
ne.minMaxRepeat.max = e.action.timeEvent.max;
|
||||
ne.minMaxRepeat.repeatMin = e.action.timeEvent.repeatMin;
|
||||
@@ -999,7 +999,7 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
ev.action = ac;
|
||||
InitTimer(ev);
|
||||
mStoredEvents.push_back(ev);
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_TRIGGER_TIMED_EVENT:
|
||||
@@ -1270,7 +1270,7 @@ void SmartScript::InstallTemplate(SmartScriptHolder e)
|
||||
|
||||
//reset(close) cage on hostage(me) respawn
|
||||
AddEvent(SMART_EVENT_UPDATE,SMART_EVENT_FLAG_NOT_REPEATABLE,0,0,0,0,SMART_ACTION_RESET_GOBJECT,0,0,0,0,0,0,SMART_TARGET_GAMEOBJECT_DISTANCE,e.action.installTtemplate.param1,5,0,0);
|
||||
|
||||
|
||||
AddEvent(SMART_EVENT_DATA_SET,0,0,0,0,0,SMART_ACTION_SET_RUN,e.action.installTtemplate.param3,0,0,0,0,0,SMART_TARGET_NONE,0,0,0,0);
|
||||
AddEvent(SMART_EVENT_DATA_SET,0,0,0,0,0,SMART_ACTION_SET_EVENT_PHASE,1,0,0,0,0,0,SMART_TARGET_NONE,0,0,0,0);
|
||||
|
||||
@@ -1402,7 +1402,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker)
|
||||
if (Player *pGroupGuy = gr->getSource())
|
||||
l->push_back(pGroupGuy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1475,7 +1475,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker)
|
||||
{
|
||||
uint64 guid = MAKE_NEW_GUID(e.target.unitGUID.guid, e.target.unitGUID.entry, HIGHGUID_UNIT);
|
||||
target = HashMapHolder<Creature>::Find(guid);
|
||||
} else
|
||||
} else
|
||||
{
|
||||
if (!trigger && !GetBaseObject())
|
||||
{
|
||||
@@ -1497,7 +1497,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker)
|
||||
{
|
||||
uint64 guid = MAKE_NEW_GUID(e.target.goGUID.guid, e.target.goGUID.entry, HIGHGUID_GAMEOBJECT);
|
||||
target = HashMapHolder<GameObject>::Find(guid);
|
||||
} else
|
||||
} else
|
||||
{
|
||||
if (!trigger && !GetBaseObject())
|
||||
{
|
||||
@@ -1599,7 +1599,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui
|
||||
|
||||
if ((e.event.event_phase_mask && !IsInPhase(e.event.event_phase_mask)) || ((e.event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE) && e.runOnce))
|
||||
return;
|
||||
|
||||
|
||||
switch (e.GetEventType())
|
||||
{
|
||||
case SMART_EVENT_LINK://special handling
|
||||
@@ -1999,7 +1999,7 @@ void SmartScript::UpdateTimer(SmartScriptHolder &e, const uint32 diff)
|
||||
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)
|
||||
@@ -2016,11 +2016,11 @@ void SmartScript::UpdateTimer(SmartScriptHolder &e, const uint32 diff)
|
||||
case SMART_EVENT_TARGET_HEALTH_PCT:
|
||||
case SMART_EVENT_MANA_PCT:
|
||||
case SMART_EVENT_TARGET_MANA_PCT:
|
||||
case SMART_EVENT_RANGE:
|
||||
case SMART_EVENT_RANGE:
|
||||
case SMART_EVENT_TARGET_CASTING:
|
||||
case SMART_EVENT_FRIENDLY_HEALTH:
|
||||
case SMART_EVENT_FRIENDLY_IS_CC:
|
||||
case SMART_EVENT_FRIENDLY_MISSING_BUFF:
|
||||
case SMART_EVENT_FRIENDLY_MISSING_BUFF:
|
||||
case SMART_EVENT_HAS_AURA:
|
||||
case SMART_EVENT_TARGET_BUFFED:
|
||||
{
|
||||
@@ -2225,7 +2225,7 @@ void SmartScript::OnMoveInLineOfSight(Unit* who)
|
||||
return;
|
||||
|
||||
ProcessEventsFor(SMART_EVENT_IC_LOS, who);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2339,7 +2339,7 @@ void SmartScript::SetScript9(SmartScriptHolder &e, uint32 entry)
|
||||
i->enableTimed = true;//enable processing only for the first action
|
||||
}
|
||||
else i->enableTimed = false;
|
||||
|
||||
|
||||
if (e.action.timedActionList.timerType == 1)
|
||||
i->event.type = SMART_EVENT_UPDATE_IC;
|
||||
else if (e.action.timedActionList.timerType > 1)
|
||||
|
||||
@@ -194,11 +194,11 @@ class SmartScript
|
||||
Unit* mLastInvoker;
|
||||
|
||||
private:
|
||||
void IncPhase(int32 p = 1) {
|
||||
void IncPhase(int32 p = 1) {
|
||||
if(p >= 0)
|
||||
mEventPhase += (uint32)p;
|
||||
else
|
||||
DecPhase(abs(p));
|
||||
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; }
|
||||
@@ -215,7 +215,7 @@ class SmartScript
|
||||
AreaTriggerEntry const* trigger;
|
||||
SmartScriptType mScriptType;
|
||||
uint32 mEventPhase;
|
||||
|
||||
|
||||
uint32 mInvinceabilityHpLevel;
|
||||
UNORDERED_MAP<int32, int32> mStoredDecimals;
|
||||
uint32 mPathId;
|
||||
@@ -242,7 +242,7 @@ class SmartScript
|
||||
mStoredEvents.erase(i);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -256,7 +256,7 @@ class SmartScript
|
||||
{
|
||||
return (*i);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
SmartScriptHolder s;
|
||||
|
||||
@@ -65,8 +65,8 @@ void SmartWaypointMgr::LoadFromDB()
|
||||
x = fields[2].GetFloat();
|
||||
y = fields[3].GetFloat();
|
||||
z = fields[4].GetFloat();
|
||||
|
||||
|
||||
|
||||
|
||||
WayPoint *wp = new WayPoint(id, x, y, z);
|
||||
|
||||
if (last_entry != entry)
|
||||
@@ -486,7 +486,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder &e)
|
||||
case SMART_EVENT_JUST_CREATED:
|
||||
case SMART_EVENT_FOLLOW_COMPLETED:
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
sLog.outErrorDb("SmartAIMgr: Not handled event_type(%u), Entry %d SourceType %u Event %u Action %u, skipped.", e.GetEventType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
@@ -710,7 +710,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder &e)
|
||||
}
|
||||
case SMART_ACTION_CREATE_TIMED_EVENT:
|
||||
{
|
||||
if (!IsMinMaxValid(e, e.action.timeEvent.min, e.action.timeEvent.max)) return false;
|
||||
if (!IsMinMaxValid(e, e.action.timeEvent.min, e.action.timeEvent.max)) return false;
|
||||
if (!IsMinMaxValid(e, e.action.timeEvent.repeatMin, e.action.timeEvent.repeatMax)) return false;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -100,16 +100,16 @@ enum SMART_EVENT
|
||||
SMART_EVENT_FRIENDLY_HEALTH = 14, //1 // HPDeficit, Radius, RepeatMin, RepeatMax
|
||||
SMART_EVENT_FRIENDLY_IS_CC = 15, //1 // Radius, RepeatMin, RepeatMax
|
||||
SMART_EVENT_FRIENDLY_MISSING_BUFF = 16, //1 // SpellId, Radius, RepeatMin, RepeatMax
|
||||
SMART_EVENT_SUMMONED_UNIT = 17, //1 // CreatureId(0 all), CooldownMin, CooldownMax
|
||||
SMART_EVENT_SUMMONED_UNIT = 17, //1 // CreatureId(0 all), CooldownMin, CooldownMax
|
||||
SMART_EVENT_TARGET_MANA_PCT = 18, //1 // ManaMin%, ManaMax%, RepeatMin, RepeatMax
|
||||
SMART_EVENT_ACCEPTED_QUEST = 19, //1 // QuestID(0any)
|
||||
SMART_EVENT_REWARD_QUEST = 20, //1 // QuestID(0any)
|
||||
SMART_EVENT_REACHED_HOME = 21, //1 // NONE
|
||||
SMART_EVENT_RECEIVE_EMOTE = 22, //1 // EmoteId, CooldownMin, CooldownMax, condition, val1,val2,val3
|
||||
SMART_EVENT_RECEIVE_EMOTE = 22, //1 // EmoteId, CooldownMin, CooldownMax, condition, val1,val2,val3
|
||||
SMART_EVENT_HAS_AURA = 23, //1 // Param1 = SpellID, Param2 = Number of Time STacked, Param3/4 RepeatMin, RepeatMax
|
||||
SMART_EVENT_TARGET_BUFFED = 24, //1 // Param1 = SpellID, Param2 = Number of Time STacked, Param3/4 RepeatMin, RepeatMax
|
||||
SMART_EVENT_RESET = 25, //1 // Called after combat, when the creature respawn and spawn.
|
||||
|
||||
|
||||
SMART_EVENT_IC_LOS = 26, //1 // NoHostile, MaxRnage, CooldownMin, CooldownMax
|
||||
SMART_EVENT_PASSENGER_BOARDED = 27, //1 // CooldownMin, CooldownMax
|
||||
SMART_EVENT_PASSENGER_REMOVED = 28, //1 // CooldownMin, CooldownMax
|
||||
@@ -360,7 +360,7 @@ enum SMART_ACTION
|
||||
SMART_ACTION_FAIL_QUEST = 6, // QuestID
|
||||
SMART_ACTION_ADD_QUEST = 7, // QuestID
|
||||
SMART_ACTION_SET_REACT_STATE = 8, // state
|
||||
SMART_ACTION_ACTIVATE_GOBJECT = 9, //
|
||||
SMART_ACTION_ACTIVATE_GOBJECT = 9, //
|
||||
SMART_ACTION_RANDOM_EMOTE = 10, // EmoteId1, EmoteId2, EmoteId3...
|
||||
SMART_ACTION_CAST = 11, // SpellId, CastFlags
|
||||
SMART_ACTION_SUMMON_CREATURE = 12, // CreatureID,summonType, duration in ms, storageID, attackInvoker,
|
||||
@@ -377,16 +377,16 @@ enum SMART_ACTION
|
||||
SMART_ACTION_INC_EVENT_PHASE = 23, // Value (may be negative to decrement phase, should not be 0)
|
||||
SMART_ACTION_EVADE = 24, // No Params
|
||||
SMART_ACTION_FLEE_FOR_ASSIST = 25, // No Params
|
||||
SMART_ACTION_CALL_GROUPEVENTHAPPENS = 26, // QuestID
|
||||
SMART_ACTION_CALL_GROUPEVENTHAPPENS = 26, // QuestID
|
||||
SMART_ACTION_CALL_CASTEDCREATUREORGO = 27, // CreatureId, SpellId
|
||||
SMART_ACTION_REMOVEAURASFROMSPELL = 28, // Spellid
|
||||
SMART_ACTION_FOLLOW = 29, // Distance, Angle, EndCreatureEntry, credit, creditType (0monsterkill,1event)
|
||||
SMART_ACTION_RANDOM_PHASE = 30, // PhaseId1, PhaseId2, PhaseId3...
|
||||
SMART_ACTION_RANDOM_PHASE_RANGE = 31, // PhaseMin, PhaseMax
|
||||
SMART_ACTION_RESET_GOBJECT = 32, //
|
||||
SMART_ACTION_CALL_KILLEDMONSTER = 33, // CreatureId,
|
||||
SMART_ACTION_RESET_GOBJECT = 32, //
|
||||
SMART_ACTION_CALL_KILLEDMONSTER = 33, // CreatureId,
|
||||
SMART_ACTION_SET_INST_DATA = 34, // Field, Data
|
||||
SMART_ACTION_SET_INST_DATA64 = 35, // Field,
|
||||
SMART_ACTION_SET_INST_DATA64 = 35, // Field,
|
||||
SMART_ACTION_UPDATE_TEMPLATE = 36, // Entry, Team
|
||||
SMART_ACTION_DIE = 37, // No Params
|
||||
SMART_ACTION_SET_IN_COMBAT_WITH_ZONE = 38, // No Params
|
||||
@@ -400,10 +400,10 @@ enum SMART_ACTION
|
||||
SMART_ACTION_SET_DATA = 45, // Field, Data (only creature TODO)
|
||||
SMART_ACTION_MOVE_FORWARD = 46, // distance
|
||||
SMART_ACTION_SET_VISIBILITY = 47, // on/off
|
||||
SMART_ACTION_SET_ACTIVE = 48, // No Params
|
||||
SMART_ACTION_ATTACK_START = 49, //
|
||||
SMART_ACTION_SUMMON_GO = 50, // GameObjectID, DespawnTime in ms,
|
||||
SMART_ACTION_KILL_UNIT = 51, //
|
||||
SMART_ACTION_SET_ACTIVE = 48, // No Params
|
||||
SMART_ACTION_ATTACK_START = 49, //
|
||||
SMART_ACTION_SUMMON_GO = 50, // GameObjectID, DespawnTime in ms,
|
||||
SMART_ACTION_KILL_UNIT = 51, //
|
||||
SMART_ACTION_ACTIVATE_TAXI = 52, // TaxiID
|
||||
SMART_ACTION_WP_START = 53, // run/walk, pathID, canRepeat, quest, despawntime, reactState
|
||||
SMART_ACTION_WP_PAUSE = 54, // time
|
||||
@@ -418,12 +418,12 @@ enum SMART_ACTION
|
||||
SMART_ACTION_STORE_VARIABLE_DECIMAL = 63, // varID, number
|
||||
SMART_ACTION_STORE_TARGET_LIST = 64, // varID,
|
||||
SMART_ACTION_WP_RESUME = 65, // none
|
||||
SMART_ACTION_SET_ORIENTATION = 66, //
|
||||
|
||||
SMART_ACTION_SET_ORIENTATION = 66, //
|
||||
|
||||
SMART_ACTION_CREATE_TIMED_EVENT = 67, // id, InitialMin, InitialMax, RepeatMin(only if it repeats), RepeatMax(only if it repeats), chance
|
||||
SMART_ACTION_PLAYMOVIE = 68, // entry
|
||||
SMART_ACTION_MOVE_TO_POS = 69, // xyz
|
||||
SMART_ACTION_RESPAWN_TARGET = 70, //
|
||||
SMART_ACTION_RESPAWN_TARGET = 70, //
|
||||
SMART_ACTION_EQUIP = 71, // entry, slotmask slot1,slot2,slot3 ,only slots with mask set will be sent to client, bits are 1,2,4, leaving mask 0 is defaulted to mask 7 (send all), slots1-3 are only used if no entry is set
|
||||
SMART_ACTION_CLOSE_GOSSIP = 72, // none
|
||||
SMART_ACTION_TRIGGER_TIMED_EVENT = 73, // id(>1)
|
||||
@@ -443,7 +443,7 @@ enum SMART_ACTION
|
||||
SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST = 87, // script9 ids 1-9
|
||||
SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST = 88, // script9 id min, max
|
||||
SMART_ACTION_RANDOM_MOVE = 89, // maxDist
|
||||
|
||||
|
||||
SMART_ACTION_END = 90,
|
||||
};
|
||||
|
||||
@@ -463,7 +463,7 @@ struct SmartAction
|
||||
{
|
||||
uint32 factionID;
|
||||
} faction;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 creature;
|
||||
@@ -493,7 +493,7 @@ struct SmartAction
|
||||
|
||||
struct
|
||||
{
|
||||
|
||||
|
||||
uint32 emote1;
|
||||
uint32 emote2;
|
||||
uint32 emote3;
|
||||
@@ -684,7 +684,7 @@ struct SmartAction
|
||||
{
|
||||
uint32 id;
|
||||
} taxi;
|
||||
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
@@ -754,7 +754,7 @@ struct SmartAction
|
||||
{
|
||||
uint32 id;
|
||||
} storeTargets;
|
||||
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
@@ -779,17 +779,17 @@ struct SmartAction
|
||||
uint32 slot2;
|
||||
uint32 slot3;
|
||||
} equip;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 flag;
|
||||
} unitFlag;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 seat;
|
||||
} enterVehicle;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 id;
|
||||
@@ -824,8 +824,8 @@ enum SMARTAI_TEMPLATE
|
||||
SMARTAI_TEMPLATE_BASIC = 0, //nothing is preset
|
||||
SMARTAI_TEMPLATE_CASTER = 1, //spellid, repeatMin, repeatMax, range, manaPCT +JOIN: target_param1 as castFlag
|
||||
SMARTAI_TEMPLATE_TURRET = 2, //spellid, repeatMin, repeatMax +JOIN: target_param1 as castFlag
|
||||
SMARTAI_TEMPLATE_PASSIVE = 3,
|
||||
SMARTAI_TEMPLATE_CAGED_GO_PART = 4, //creatureID, give credit at point end?,
|
||||
SMARTAI_TEMPLATE_PASSIVE = 3,
|
||||
SMARTAI_TEMPLATE_CAGED_GO_PART = 4, //creatureID, give credit at point end?,
|
||||
SMARTAI_TEMPLATE_CAGED_NPC_PART = 5, //gameObjectID, despawntime, run?, dist, TextGroupID
|
||||
SMARTAI_TEMPLATE_END = 6,
|
||||
};
|
||||
@@ -963,7 +963,7 @@ enum SmartScriptType
|
||||
SMART_SCRIPT_TYPE_CREATURE = 0,//done
|
||||
SMART_SCRIPT_TYPE_GAMEOBJECT = 1,//done
|
||||
SMART_SCRIPT_TYPE_AREATRIGGER = 2,//done
|
||||
SMART_SCRIPT_TYPE_EVENT = 3,//
|
||||
SMART_SCRIPT_TYPE_EVENT = 3,//
|
||||
SMART_SCRIPT_TYPE_GOSSIP = 4,//
|
||||
SMART_SCRIPT_TYPE_QUEST = 5,//
|
||||
SMART_SCRIPT_TYPE_SPELL = 6,//
|
||||
@@ -1028,7 +1028,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
|
||||
{SMART_EVENT_RECEIVE_EMOTE, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_HAS_AURA, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_TARGET_BUFFED, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
|
||||
{SMART_EVENT_RESET, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_RESET, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_IC_LOS, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_PASSENGER_BOARDED, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
{SMART_EVENT_PASSENGER_REMOVED, SMART_SCRIPT_TYPE_MASK_CREATURE },
|
||||
@@ -1101,7 +1101,7 @@ enum SmartCastFlags
|
||||
struct SmartScriptHolder
|
||||
{
|
||||
SmartScriptHolder()
|
||||
{
|
||||
{
|
||||
timer = 0;
|
||||
active = false;
|
||||
runOnce = false;
|
||||
@@ -1130,7 +1130,7 @@ struct SmartScriptHolder
|
||||
bool active;
|
||||
bool runOnce;
|
||||
bool enableTimed;
|
||||
|
||||
|
||||
};
|
||||
|
||||
typedef UNORDERED_MAP<uint32, WayPoint*> WPPath;
|
||||
@@ -1178,7 +1178,7 @@ class SmartAIMgr
|
||||
SmartAIEventList temp;
|
||||
if (mEventMap[uint32(type)].find(entry) != mEventMap[uint32(type)].end())
|
||||
return mEventMap[uint32(type)][entry];
|
||||
else
|
||||
else
|
||||
{
|
||||
if(entry > 0)//first search is for guid (negative), do not drop error if not found
|
||||
sLog.outDebug("SmartAIMgr::GetScript: Could not load Script for Entry %d ScriptType %u.", entry, uint32(type));
|
||||
|
||||
Reference in New Issue
Block a user