27 time_t currenttime = time(NULL);
44 time_t currenttime = time(NULL);
45 for (std::set<uint16>::const_iterator itr =
mGameEvent[entry].prerequisite_events.begin(); itr !=
mGameEvent[entry].prerequisite_events.end(); ++itr)
53 return !(
mGameEvent[entry].prerequisite_events.empty());
60 time_t currenttime = time(NULL);
91 if (
mGameEvent[entry].end < time_t(currenttime + delay))
99 if (event_id < 1 || event_id >=
mGameEvent.size())
144 if (overwrite && conditions_met)
145 sWorld->ForceGameEventUpdate();
147 return conditions_met;
159 if (overwrite && !serverwide_evt)
165 else if (serverwide_evt)
173 GameEventConditionMap::iterator itr;
175 itr->second.done = 0;
196 QueryResult result =
WorldDatabase.Query(
"SELECT eventEntry, UNIX_TIMESTAMP(start_time), UNIX_TIMESTAMP(end_time), occurence, length, holiday, description, world_event, announce FROM game_event");
200 SF_LOG_ERROR(
"server.loading",
">> Loaded 0 game events. DB table `game_event` is empty.");
207 Field* fields = result->Fetch();
212 SF_LOG_ERROR(
"sql.sql",
"`game_event` game event entry 0 is reserved and can't be used.");
218 pGameEvent.
start = time_t(starttime);
220 pGameEvent.
end = time_t(endtime);
231 SF_LOG_ERROR(
"sql.sql",
"`game_event` game event id (%i) isn't a world event and has length = 0, thus it can't be used.", event_id);
247 }
while (result->NextRow());
252 SF_LOG_INFO(
"server.loading",
"Loading Game Event Saves Data...");
260 SF_LOG_INFO(
"server.loading",
">> Loaded 0 game event saves in game events. DB table `game_event_save` is empty.");
266 Field* fields = result->Fetch();
272 SF_LOG_ERROR(
"sql.sql",
"`game_event_save` game event entry (%i) is out of range compared to max event entry in `game_event`", event_id);
279 mGameEvent[event_id].nextstart = time_t(fields[2].GetUInt32());
283 SF_LOG_ERROR(
"sql.sql",
"game_event_save includes event save for non-worldevent id %u", event_id);
288 }
while (result->NextRow());
294 SF_LOG_INFO(
"server.loading",
"Loading Game Event Prerequisite Data...");
301 SF_LOG_INFO(
"server.loading",
">> Loaded 0 game event prerequisites in game events. DB table `game_event_prerequisite` is empty.");
307 Field* fields = result->Fetch();
313 SF_LOG_ERROR(
"sql.sql",
"`game_event_prerequisite` game event id (%i) is out of range compared to max event id in `game_event`", event_id);
322 SF_LOG_ERROR(
"sql.sql",
"`game_event_prerequisite` game event prerequisite id (%i) is out of range compared to max event id in `game_event`", prerequisite_event);
325 mGameEvent[event_id].prerequisite_events.insert(prerequisite_event);
329 SF_LOG_ERROR(
"sql.sql",
"game_event_prerequisiste includes event entry for non-worldevent id %u", event_id);
334 }
while (result->NextRow());
340 SF_LOG_INFO(
"server.loading",
"Loading Game Event Creature Data...");
348 SF_LOG_INFO(
"server.loading",
">> Loaded 0 creatures in game events. DB table `game_event_creature` is empty");
354 Field* fields = result->Fetch();
364 SF_LOG_ERROR(
"sql.sql",
"`game_event_creature` contains creature (GUID: %u) not found in `creature` table.", guid);
370 SF_LOG_ERROR(
"sql.sql",
"`game_event_creature` game event id (%i) is out of range compared to max event id in `game_event`", event_id);
375 crelist.push_back(guid);
378 }
while (result->NextRow());
384 SF_LOG_INFO(
"server.loading",
"Loading Game Event GO Data...");
392 SF_LOG_INFO(
"server.loading",
">> Loaded 0 gameobjects in game events. DB table `game_event_gameobject` is empty.");
398 Field* fields = result->Fetch();
408 SF_LOG_ERROR(
"sql.sql",
"`game_event_gameobject` contains gameobject (GUID: %u) not found in `gameobject` table.", guid);
414 SF_LOG_ERROR(
"sql.sql",
"`game_event_gameobject` game event id (%i) is out of range compared to max event id in `game_event`", event_id);
419 golist.push_back(guid);
422 }
while (result->NextRow());
428 SF_LOG_INFO(
"server.loading",
"Loading Game Event Model/Equipment Change Data...");
433 QueryResult result =
WorldDatabase.Query(
"SELECT creature.guid, creature.id, game_event_model_equip.eventEntry, game_event_model_equip.modelid, game_event_model_equip.equipment_id "
434 "FROM creature JOIN game_event_model_equip ON creature.guid=game_event_model_equip.guid");
437 SF_LOG_INFO(
"server.loading",
">> Loaded 0 model/equipment changes in game events. DB table `game_event_model_equip` is empty.");
443 Field* fields = result->Fetch();
451 SF_LOG_ERROR(
"sql.sql",
"`game_event_model_equip` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
465 if (!
sObjectMgr->GetEquipmentInfo(entry, equipId))
467 SF_LOG_ERROR(
"sql.sql",
"Table `game_event_model_equip` have creature (Guid: %u, entry: %u) with equipment_id %u not found in table `creature_equip_template`, set to no equipment.",
473 equiplist.push_back(std::pair<uint32, ModelEquip>(guid, newModelEquipSet));
476 }
while (result->NextRow());
482 SF_LOG_INFO(
"server.loading",
"Loading Game Event Quest Data...");
490 SF_LOG_INFO(
"server.loading",
">> Loaded 0 quests additions in game events. DB table `game_event_creature_quest` is empty.");
496 Field* fields = result->Fetch();
504 SF_LOG_ERROR(
"sql.sql",
"`game_event_creature_quest` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
512 }
while (result->NextRow());
518 SF_LOG_INFO(
"server.loading",
"Loading Game Event GO Quest Data...");
526 SF_LOG_INFO(
"server.loading",
">> Loaded 0 go quests additions in game events. DB table `game_event_gameobject_quest` is empty.");
532 Field* fields = result->Fetch();
540 SF_LOG_ERROR(
"sql.sql",
"`game_event_gameobject_quest` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
548 }
while (result->NextRow());
554 SF_LOG_INFO(
"server.loading",
"Loading Game Event Quest Condition Data...");
559 QueryResult result =
WorldDatabase.Query(
"SELECT quest, eventEntry, condition_id, num FROM game_event_quest_condition");
562 SF_LOG_INFO(
"server.loading",
">> Loaded 0 quest event conditions in game events. DB table `game_event_quest_condition` is empty.");
568 Field* fields = result->Fetch();
577 SF_LOG_ERROR(
"sql.sql",
"`game_event_quest_condition` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
586 }
while (result->NextRow());
592 SF_LOG_INFO(
"server.loading",
"Loading Game Event Condition Data...");
597 QueryResult result =
WorldDatabase.Query(
"SELECT eventEntry, condition_id, req_num, max_world_state_field, done_world_state_field FROM game_event_condition");
600 SF_LOG_INFO(
"server.loading",
">> Loaded 0 conditions in game events. DB table `game_event_condition` is empty.");
606 Field* fields = result->Fetch();
613 SF_LOG_ERROR(
"sql.sql",
"`game_event_condition` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
618 mGameEvent[event_id].conditions[condition].done = 0;
623 }
while (result->NextRow());
629 SF_LOG_INFO(
"server.loading",
"Loading Game Event Condition Save Data...");
637 SF_LOG_INFO(
"server.loading",
">> Loaded 0 condition saves in game events. DB table `game_event_condition_save` is empty.");
643 Field* fields = result->Fetch();
650 SF_LOG_ERROR(
"sql.sql",
"`game_event_condition_save` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
654 GameEventConditionMap::iterator itr =
mGameEvent[event_id].conditions.find(condition);
655 if (itr !=
mGameEvent[event_id].conditions.end())
657 itr->second.done = fields[2].
GetFloat();
661 SF_LOG_ERROR(
"sql.sql",
"game_event_condition_save contains not present condition evt id %u cond id %u", event_id, condition);
666 }
while (result->NextRow());
672 SF_LOG_INFO(
"server.loading",
"Loading Game Event NPCflag Data...");
680 SF_LOG_INFO(
"server.loading",
">> Loaded 0 npcflags in game events. DB table `game_event_npcflag` is empty.");
686 Field* fields = result->Fetch();
694 SF_LOG_ERROR(
"sql.sql",
"`game_event_npcflag` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
701 }
while (result->NextRow());
707 SF_LOG_INFO(
"server.loading",
"Loading Game Event Seasonal Quest Relations...");
715 SF_LOG_INFO(
"server.loading",
">> Loaded 0 seasonal quests additions in game events. DB table `game_event_seasonal_questrelation` is empty.");
721 Field* fields = result->Fetch();
728 SF_LOG_ERROR(
"sql.sql",
"`game_event_seasonal_questrelation` quest id (%u) does not exist in `quest_template`", questId);
734 SF_LOG_ERROR(
"sql.sql",
"`game_event_seasonal_questrelation` event id (%u) is out of range compared to max event in `game_event`", eventEntry);
740 }
while (result->NextRow());
746 SF_LOG_INFO(
"server.loading",
"Loading Game Event Vendor Additions Data...");
751 QueryResult result =
WorldDatabase.Query(
"SELECT eventEntry, guid, item, maxcount, incrtime, ExtendedCost, type FROM game_event_npc_vendor ORDER BY guid, slot ASC");
754 SF_LOG_INFO(
"server.loading",
">> Loaded 0 vendor additions in game events. DB table `game_event_npc_vendor` is empty.");
760 Field* fields = result->Fetch();
766 SF_LOG_ERROR(
"sql.sql",
"`game_event_npc_vendor` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
779 uint32 event_npc_flag = 0;
781 for (NPCFlagList::const_iterator itr = flist.begin(); itr != flist.end(); ++itr)
783 if (itr->first == guid)
785 event_npc_flag = itr->second;
793 newEntry.
entry = data->id;
799 vendors.push_back(newEntry);
802 }
while (result->NextRow());
808 SF_LOG_INFO(
"server.loading",
"Loading Game Event Battleground Data...");
816 SF_LOG_INFO(
"server.loading",
">> Loaded 0 battleground holidays in game events. DB table `game_event_battleground_holiday` is empty.");
822 Field* fields = result->Fetch();
828 SF_LOG_ERROR(
"sql.sql",
"`game_event_battleground_holiday` game event id (%u) is out of range compared to max event id in `game_event`", event_id);
835 }
while (result->NextRow());
841 SF_LOG_INFO(
"server.loading",
"Loading Game Event Pool Data...");
846 QueryResult result =
WorldDatabase.Query(
"SELECT pool_template.entry, game_event_pool.eventEntry FROM pool_template"
847 " JOIN game_event_pool ON pool_template.entry = game_event_pool.pool_entry");
850 SF_LOG_INFO(
"server.loading",
">> Loaded 0 pools for game events. DB table `game_event_pool` is empty.");
856 Field* fields = result->Fetch();
865 SF_LOG_ERROR(
"sql.sql",
"`game_event_pool` game event id (%i) is out of range compared to max event id in `game_event`", event_id);
871 SF_LOG_ERROR(
"sql.sql",
"Pool Id (%u) has all creatures or gameobjects with explicit chance sum <>100 and no equal chance defined. The pool system cannot pick one to spawn.", entry);
876 poollist.push_back(entry);
879 }
while (result->NextRow());
896 if (itr->first == guid)
908 Field* fields = result->Fetch();
939 QueryResult result =
WorldDatabase.PQuery(
"SELECT eventEntry FROM game_event_arena_seasons WHERE season = '%i'", season);
943 SF_LOG_ERROR(
"gameevent",
"ArenaSeason (%u) must be an existant Arena Season", season);
947 Field* fields = result->Fetch();
952 SF_LOG_ERROR(
"gameevent",
"EventEntry %u for ArenaSeason (%u) does not exists", eventId, season);
957 SF_LOG_INFO(
"gameevent",
"Arena Season %u started...", season);
962 time_t currenttime = time(NULL);
965 std::set<uint16> activate, deactivate;
983 deactivate.insert(itr);
994 activate.insert(itr);
1000 deactivate.insert(itr);
1005 int16 event_nid = (-1) * (itr);
1012 if (calcDelay < nextEventDelay)
1013 nextEventDelay = calcDelay;
1018 for (std::set<uint16>::iterator itr = activate.begin(); itr != activate.end(); ++itr)
1024 for (std::set<uint16>::iterator itr = deactivate.begin(); itr != deactivate.end(); ++itr)
1026 SF_LOG_INFO(
"gameevent",
"Next game event check in %u seconds.", nextEventDelay + 1);
1032 SF_LOG_INFO(
"gameevent",
"GameEvent %u \"%s\" removed.", event_id,
mGameEvent[event_id].description.c_str());
1038 int16 event_nid = (-1) * event_id;
1059 SF_LOG_INFO(
"gameevent",
"GameEvent %u \"%s\" started.", event_id,
mGameEvent[event_id].description.c_str());
1067 int16 event_nid = (-1) * event_id;
1081 sWorld->ResetEventSeasonalQuests(event_id);
1098 npcflag |= ci->npcflag;
1121 sObjectMgr->AddVendorItem(itr->entry, itr->item, itr->maxcount, itr->incrtime, itr->ExtendedCost, itr->Type,
false);
1123 sObjectMgr->RemoveVendorItem(itr->entry, itr->item, itr->Type,
false);
1133 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventSpawn attempt access to out of range mGameEventCreatureGuids element %i (size: " SIZEFMTD ")",
1146 Map* map =
sMapMgr->CreateBaseMap(data->mapid);
1160 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventSpawn attempt access to out of range mGameEventGameobjectGuids element %i (size: " SIZEFMTD ")",
1173 Map* map =
sMapMgr->CreateBaseMap(data->mapid);
1193 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventSpawn attempt access to out of range mGameEventPoolIds element %u (size: " SIZEFMTD ")",
1208 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventUnspawn attempt access to out of range mGameEventCreatureGuids element %i (size: " SIZEFMTD ")",
1221 sObjectMgr->RemoveCreatureFromGrid(*itr, data);
1224 creature->AddObjectToRemoveList();
1230 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventUnspawn attempt access to out of range mGameEventGameobjectGuids element %i (size: " SIZEFMTD ")",
1243 sObjectMgr->RemoveGameobjectFromGrid(*itr, data);
1246 pGameobject->AddObjectToRemoveList();
1251 SF_LOG_ERROR(
"gameevent",
"GameEventMgr::GameEventUnspawn attempt access to out of range mGameEventPoolIds element %u (size: " SIZEFMTD ")", internal_event_id,
mGameEventPoolIds.size());
1279 if (itr->second.modelid > 0 && itr->second.modelid_prev != itr->second.modelid &&
1280 sObjectMgr->GetCreatureModelInfo(itr->second.modelid))
1288 creature->
LoadEquipment(itr->second.equipement_id_prev,
true);
1289 if (itr->second.modelid_prev > 0 && itr->second.modelid_prev != itr->second.modelid &&
1290 sObjectMgr->GetCreatureModelInfo(itr->second.modelid_prev))
1300 if (data2 && activate)
1304 sObjectMgr->GetCreatureModelRandomGender(&displayID);
1307 itr->second.equipement_id_prev = 0;
1309 itr->second.equipement_id_prev = data->
equipmentId;
1310 itr->second.modelid_prev = displayID;
1323 data2.
displayid = itr->second.modelid_prev;
1324 data2.
equipmentId = itr->second.equipement_id_prev;
1333 if ((*e_itr) != event_id)
1337 if (itr->second == quest_id)
1347 if ((*e_itr) != event_id)
1351 if (itr->second == quest_id)
1360 if ((*e_itr) != event_id)
1366 if (*itr == creature_id)
1376 if ((*e_itr) != event_id)
1391 QuestRelList::iterator itr;
1396 CreatureQuestMap->insert(QuestRelations::value_type(itr->first, itr->second));
1402 QuestRelations::iterator qitr = CreatureQuestMap->find(itr->first);
1403 if (qitr == CreatureQuestMap->end())
1405 QuestRelations::iterator lastElement = CreatureQuestMap->upper_bound(itr->first);
1406 for (; qitr != lastElement; ++qitr)
1408 if (qitr->second == itr->second)
1410 CreatureQuestMap->erase(qitr);
1421 GameObjectQuestMap->insert(QuestRelations::value_type(itr->first, itr->second));
1427 QuestRelations::iterator qitr = GameObjectQuestMap->find(itr->first);
1428 if (qitr == GameObjectQuestMap->end())
1430 QuestRelations::iterator lastElement = GameObjectQuestMap->upper_bound(itr->first);
1431 for (; qitr != lastElement; ++qitr)
1433 if (qitr->second == itr->second)
1435 GameObjectQuestMap->erase(qitr);
1457 sWorld->SendGlobalMessage(&data);
1472 uint16 event_id = itr->second.event_id;
1473 uint32 condition = itr->second.condition;
1474 float num = itr->second.num;
1482 GameEventConditionMap::iterator citr =
mGameEvent[event_id].conditions.find(condition);
1484 if (citr !=
mGameEvent[event_id].conditions.end())
1487 if (citr->second.done < citr->second.reqNum)
1489 citr->second.done += num;
1491 if (citr->second.done > citr->second.reqNum)
1492 citr->second.done = citr->second.reqNum;
1499 trans->Append(stmt);
1504 stmt->
setFloat(2, citr->second.done);
1505 trans->Append(stmt);
1513 sWorld->ForceGameEventUpdate();
1522 for (GameEventConditionMap::const_iterator itr =
mGameEvent[event_id].conditions.begin(); itr !=
mGameEvent[event_id].conditions.end(); ++itr)
1523 if (itr->second.done < itr->second.reqNum)
1531 time_t currenttime = time(NULL);
1543 trans->Append(stmt);
1549 trans->Append(stmt);
1555 GameEventConditionMap::const_iterator itr;
1556 for (itr =
mGameEvent[event_id].conditions.begin(); itr !=
mGameEvent[event_id].conditions.end(); ++itr)
1558 if (itr->second.done_world_state)
1560 if (itr->second.max_world_state)
1573 if (iter->second->IsInWorld())
1574 iter->second->AI()->sOnGameEvent(activate, event_id);
1580 if (iter->second->IsInWorld())
1581 iter->second->AI()->OnGameEvent(activate, event_id);
1605 for (GameEventMgr::ActiveEvents::const_iterator itr = ae.begin(); itr != ae.end(); ++itr)
1606 if (events[*itr].holiday_id ==
id)
1615 return ae.find(event_id) != ae.end();
@ CHAR_DEL_GAME_EVENT_SAVE
@ CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE
@ CHAR_INS_GAME_EVENT_SAVE
@ CHAR_DEL_GAME_EVENT_CONDITION_SAVE
@ CHAR_INS_GAME_EVENT_CONDITION_SAVE
DBCStorage< BattlemasterListEntry > sBattlemasterListStore(BattlemasterListEntryfmt)
DBCStorage< HolidaysEntry > sHolidaysStore(Holidaysfmt)
bool IsHolidayActive(HolidayIds id)
bool IsEventActive(uint16 event_id)
#define max_ge_check_delay
@ GAMEEVENT_WORLD_FINISHED
@ GAMEEVENT_WORLD_CONDITIONS
@ GAMEEVENT_WORLD_NEXTPHASE
@ GAMEEVENT_WORLD_INACTIVE
#define SF_LOG_ERROR(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
std::multimap< uint32, uint32 > QuestRelations
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
static BattlegroundTypeId WeekendHolidayIdToBGType(HolidayIds holiday)
uint32 GetDBTableGUIDLow() const
void LoadEquipment(int8 id=1, bool force=false)
void SetDisplayId(uint32 modelId) OVERRIDE
CreatureTemplate const * GetCreatureTemplate() const
uint8 GetCurrentEquipmentId() const
bool LoadCreatureFromDB(uint32 guid, Map *map, bool addToMap=true)
std::string GetString() const
uint32 NextCheck(uint16 entry) const
void HandleQuestComplete(uint32 quest_id)
ActiveEvents m_ActiveEvents
bool StartEvent(uint16 event_id, bool overwrite=false)
GameEventDataMap mGameEvent
uint16 GetEventIdForQuest(Quest const *quest) const
GameEventNPCFlagMap mGameEventNPCFlags
std::list< uint32 > GuidList
bool IsActiveEvent(uint16 event_id)
GameEventIdMap mGameEventPoolIds
std::vector< GameEventData > GameEventDataMap
void GameEventSpawn(int16 event_id)
void GameEventUnspawn(int16 event_id)
GameEventGuidMap mGameEventCreatureGuids
void RemoveActiveEvent(uint16 event_id)
void UnApplyEvent(uint16 event_id)
void UpdateEventQuests(uint16 event_id, bool activate)
void UpdateEventNPCVendor(uint16 event_id, bool activate)
void UpdateWorldStates(uint16 event_id, bool Activate)
void AddActiveEvent(uint16 event_id)
void StartInternalEvent(uint16 event_id)
void ApplyNewEvent(uint16 event_id)
GameEventModelEquipMap mGameEventModelEquip
std::list< ModelEquipPair > ModelEquipList
void UpdateBattlegroundSettings()
GameEventBitmask mGameEventBattlegroundHolidays
GameEventNPCVendorMap mGameEventVendors
GameEventQuestMap mGameEventCreatureQuests
std::pair< uint32, uint32 > GuidNPCFlagPair
GameEventGuidMap mGameEventGameobjectGuids
void SaveWorldEventStateToDB(uint16 event_id)
UNORDERED_MAP< uint32, uint16 > _questToEventLinks
void UpdateEventNPCFlags(uint16 event_id)
bool CheckOneGameEventConditions(uint16 event_id)
Runs SMART_EVENT_GAME_EVENT_START/_END SAI.
void ChangeEquipOrModel(int16 event_id, bool activate)
void RunSmartAIScripts(uint16 event_id, bool activate)
std::set< uint16 > ActiveEvents
QuestIdToEventConditionMap mQuestToEventConditions
bool hasCreatureQuestActiveEventExcept(uint32 quest_id, uint16 event_id)
std::list< GuidNPCFlagPair > NPCFlagList
std::list< uint32 > IdList
GameEventQuestMap mGameEventGameObjectQuests
std::list< QuestRelation > QuestRelList
void SendWorldStateUpdate(Player *player, uint16 event_id)
uint32 GetNPCFlag(Creature *cr)
bool CheckOneGameEvent(uint16 entry) const
void StopEvent(uint16 event_id, bool overwrite=false)
std::list< NPCVendorEntry > NPCVendorList
bool hasGameObjectQuestActiveEventExcept(uint32 quest_id, uint16 event_id)
std::pair< uint32, uint32 > QuestRelation
bool hasGameObjectActiveEventExcept(uint32 go_guid, uint16 event_id)
bool hasCreatureActiveEventExcept(uint32 creature_guid, uint16 event_id)
bool isSpawnedByDefault() const
bool LoadGameObjectFromDB(uint32 guid, Map *map, bool addToMap=true)
static SF_SHARED_MUTEX * GetLock()
static T * Find(uint64 guid)
UNORDERED_MAP< uint64, T * > MapType
bool Instanceable() const
bool IsGridLoaded(float x, float y) const
static HashMapHolder< GameObject >::MapType const & GetGameObjects()
static T * GetObjectInWorld(uint64 guid, T *)
static HashMapHolder< Creature >::MapType const & GetCreatures()
void SetUInt32Value(uint16 index, uint32 value)
static uint32 ChooseDisplayId(CreatureTemplate const *cinfo, CreatureData const *data=NULL)
void SendUpdateWorldState(uint32 Field, uint32 Value)
void setFloat(const uint8 index, const float value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
uint32 GetQuestId() const
uint32 GetDisplayId() const
void SetNativeDisplayId(uint32 modelId)
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
uint32 HolidayWorldStateId
GameEventConditionMap conditions