TrinityCore
Loading...
Searching...
No Matches
ObjectMgr.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef _OBJECTMGR_H
19#define _OBJECTMGR_H
20
21#include "Common.h"
22#include "ConditionMgr.h"
23#include "CreatureData.h"
24#include "DatabaseEnvFwd.h"
25#include "GameObjectData.h"
26#include "ItemTemplate.h"
27#include "IteratorPair.h"
28#include "MovementDefines.h"
29#include "NPCHandler.h"
30#include "ObjectDefines.h"
31#include "ObjectGuid.h"
33#include "PlayerChoice.h"
34#include "Position.h"
35#include "QuestDef.h"
36#include "RaceMask.h"
37#include "SceneDefines.h"
38#include "SharedDefines.h"
39#include "Trainer.h"
40#include "VehicleDefines.h"
41#include "UniqueTrackablePtr.h"
42#include <atomic>
43#include <iterator>
44#include <map>
45#include <unordered_map>
46
47class Item;
48class Unit;
49class Vehicle;
50class Map;
51enum class GossipOptionFlags : int32;
52enum class GossipOptionNpc : uint8;
54struct DeclinedName;
55struct FactionEntry;
56struct PlayerChoice;
57struct PlayerInfo;
58struct PlayerLevelInfo;
61
69
76
79{
80 std::strong_ordering operator<=>(TempSummonGroupKey const& right) const = default;
81
85};
86
95
96// DB scripting commands
98{
99 SCRIPT_COMMAND_TALK = 0, // source/target = Creature, target = any, datalong = talk type (see ChatType enum), datalong2 & 1 = player talk (instead of creature), dataint = string_id
100 SCRIPT_COMMAND_EMOTE = 1, // source/target = Creature, datalong = emote id, datalong2 = 0: set emote state; > 0: play emote state
102 SCRIPT_COMMAND_MOVE_TO = 3, // source/target = Creature, datalong2 = time to reach, x/y/z = destination
105 SCRIPT_COMMAND_TELEPORT_TO = 6, // source/target = Creature/Player (see datalong2), datalong = map_id, datalong2 = 0: Player; 1: Creature, x/y/z = destination, o = orientation
106 SCRIPT_COMMAND_QUEST_EXPLORED = 7, // target/source = Player, target/source = GO/Creature, datalong = quest id, datalong2 = distance or 0
107 SCRIPT_COMMAND_KILL_CREDIT = 8, // target/source = Player, datalong = creature entry, datalong2 = 0: personal credit, 1: group credit
108 SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9, // source = WorldObject (summoner), datalong = GO guid, datalong2 = despawn delay
109 SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10, // source = WorldObject (summoner), datalong = creature entry, datalong2 = despawn delay, x/y/z = summon position, o = orientation
110 SCRIPT_COMMAND_OPEN_DOOR = 11, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
111 SCRIPT_COMMAND_CLOSE_DOOR = 12, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
112 SCRIPT_COMMAND_ACTIVATE_OBJECT = 13, // source = Unit, target = GO
113 SCRIPT_COMMAND_REMOVE_AURA = 14, // source (datalong2 != 0) or target (datalong2 == 0) = Unit, datalong = spell id
114 SCRIPT_COMMAND_CAST_SPELL = 15, // source and/or target = Unit, datalong2 = cast direction (0: s->t 1: s->s 2: t->t 3: t->s 4: s->creature with dataint entry), dataint & 1 = triggered flag
115 SCRIPT_COMMAND_PLAY_SOUND = 16, // source = WorldObject, target = none/Player, datalong = sound id, datalong2 (bitmask: 0/1=anyone/player, 0/2=without/with distance dependency, so 1|2 = 3 is target with distance dependency)
116 SCRIPT_COMMAND_CREATE_ITEM = 17, // target/source = Player, datalong = item entry, datalong2 = amount
117 SCRIPT_COMMAND_DESPAWN_SELF = 18, // target/source = Creature, datalong = despawn delay
118
119 SCRIPT_COMMAND_LOAD_PATH = 20, // source = Unit, datalong = path id, datalong2 = is repeatable
120 SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT = 21, // source = WorldObject (if present used as a search center), datalong = script id, datalong2 = unit lowguid, dataint = script table to use (see ScriptsType)
121 SCRIPT_COMMAND_KILL = 22, // source/target = Creature, dataint = remove corpse attribute
122
123 // TrinityCore only
124 SCRIPT_COMMAND_ORIENTATION = 30, // source = Unit, target (datalong > 0) = Unit, datalong = > 0 turn source to face target, o = orientation
125 SCRIPT_COMMAND_EQUIP = 31, // soucre = Creature, datalong = equipment id
126 SCRIPT_COMMAND_MODEL = 32, // source = Creature, datalong = model id
127 SCRIPT_COMMAND_CLOSE_GOSSIP = 33, // source = Player
128 SCRIPT_COMMAND_PLAYMOVIE = 34, // source = Player, datalong = movie id
129 SCRIPT_COMMAND_MOVEMENT = 35, // source = Creature, datalong = MovementType, datalong2 = MovementDistance (wander_distance f.ex.), dataint = pathid
130 SCRIPT_COMMAND_PLAY_ANIMKIT = 36 // source = Creature, datalong = AnimKit id
132
144
145typedef std::map<uint32, PageText> PageTextContainer;
146
152
153typedef std::unordered_map<uint16, InstanceTemplate> InstanceTemplateContainer;
154
156{
162 std::string name;
163 std::wstring wnameLow;
164};
165
166typedef std::unordered_map<uint32, GameTele> GameTeleContainer;
167
178
180{
181 // Talk Flags
183
184 // Emote flags
186
187 // TeleportTo flags
189
190 // KillCredit flags
192
193 // RemoveAura flags
195
196 // CastSpell flags
203
204 // PlaySound flags
207
208 // Orientation flags
211
213{
218
219 union
220 {
221 struct
222 {
224 float fData[4];
226
227 struct // SCRIPT_COMMAND_TALK (0)
228 {
229 uint32 ChatType; // datalong
230 uint32 Flags; // datalong2
231 int32 TextID; // dataint
233
234 struct // SCRIPT_COMMAND_EMOTE (1)
235 {
236 uint32 EmoteID; // datalong
237 uint32 Flags; // datalong2
239
240 struct // SCRIPT_COMMAND_FIELD_SET (2)
241 {
242 uint32 FieldID; // datalong
243 uint32 FieldValue; // datalong2
245
246 struct // SCRIPT_COMMAND_MOVE_TO (3)
247 {
248 uint32 Unused1; // datalong
249 uint32 TravelTime; // datalong2
250 int32 Unused2; // dataint
251
252 float DestX;
253 float DestY;
254 float DestZ;
256
257 struct // SCRIPT_COMMAND_FLAG_SET (4)
258 // SCRIPT_COMMAND_FLAG_REMOVE (5)
259 {
260 uint32 FieldID; // datalong
261 uint32 FieldValue; // datalong2
263
264 struct // SCRIPT_COMMAND_TELEPORT_TO (6)
265 {
266 uint32 MapID; // datalong
267 uint32 Flags; // datalong2
268 int32 Unused1; // dataint
269
270 float DestX;
271 float DestY;
272 float DestZ;
275
276 struct // SCRIPT_COMMAND_QUEST_EXPLORED (7)
277 {
278 uint32 QuestID; // datalong
279 uint32 Distance; // datalong2
281
282 struct // SCRIPT_COMMAND_KILL_CREDIT (8)
283 {
285 uint32 Flags; // datalong2
287
288 struct // SCRIPT_COMMAND_RESPAWN_GAMEOBJECT (9)
289 {
290 uint32 GOGuid; // datalong
291 uint32 DespawnDelay; // datalong2
293
294 struct // SCRIPT_COMMAND_TEMP_SUMMON_CREATURE (10)
295 {
296 uint32 CreatureEntry; // datalong
297 uint32 DespawnDelay; // datalong2
298 int32 Unused1; // dataint
299
300 float PosX;
301 float PosY;
302 float PosZ;
303 float Orientation;
305
306 struct // SCRIPT_COMMAND_CLOSE_DOOR (12)
307 // SCRIPT_COMMAND_OPEN_DOOR (11)
308 {
309 uint32 GOGuid; // datalong
310 uint32 ResetDelay; // datalong2
312
313 // SCRIPT_COMMAND_ACTIVATE_OBJECT (13)
314
315 struct // SCRIPT_COMMAND_REMOVE_AURA (14)
316 {
317 uint32 SpellID; // datalong
318 uint32 Flags; // datalong2
320
321 struct // SCRIPT_COMMAND_CAST_SPELL (15)
322 {
323 uint32 SpellID; // datalong
324 uint32 Flags; // datalong2
326
329
330 struct // SCRIPT_COMMAND_PLAY_SOUND (16)
331 {
332 uint32 SoundID; // datalong
333 uint32 Flags; // datalong2
335
336 struct // SCRIPT_COMMAND_CREATE_ITEM (17)
337 {
338 uint32 ItemEntry; // datalong
339 uint32 Amount; // datalong2
341
342 struct // SCRIPT_COMMAND_DESPAWN_SELF (18)
343 {
344 uint32 DespawnDelay; // datalong
346
347 struct // SCRIPT_COMMAND_LOAD_PATH (20)
348 {
349 uint32 PathID; // datalong
350 uint32 IsRepeatable; // datalong2
352
353 struct // SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT (21)
354 {
355 uint32 CreatureEntry; // datalong
356 uint32 ScriptID; // datalong2
357 uint32 ScriptType; // dataint
359
360 struct // SCRIPT_COMMAND_KILL (22)
361 {
362 uint32 Unused1; // datalong
363 uint32 Unused2; // datalong2
364 int32 RemoveCorpse; // dataint
366
367 struct // SCRIPT_COMMAND_ORIENTATION (30)
368 {
369 uint32 Flags; // datalong
370 uint32 Unused1; // datalong2
371 int32 Unused2; // dataint
372
373 float Unused3;
374 float Unused4;
375 float Unused5;
376 float Orientation;
378
379 struct // SCRIPT_COMMAND_EQUIP (31)
380 {
381 uint32 EquipmentID; // datalong
383
384 struct // SCRIPT_COMMAND_MODEL (32)
385 {
386 uint32 ModelID; // datalong
388
389 // SCRIPT_COMMAND_CLOSE_GOSSIP (33)
390
391 struct // SCRIPT_COMMAND_PLAYMOVIE (34)
392 {
393 uint32 MovieID; // datalong
395
396 struct // SCRIPT_COMMAND_MOVEMENT (35)
397 {
398 uint32 MovementType; // datalong
400 int32 Path; // dataint
402
403 struct // SCRIPT_COMMAND_PLAY_ANIMKIT (36)
404 {
405 uint32 AnimKitID; // datalong
407 };
408
409 std::string GetDebugInfo() const;
410};
411
412typedef std::multimap<uint32, ScriptInfo> ScriptMap;
413typedef std::map<uint32, ScriptMap> ScriptMapMap;
414typedef std::multimap<uint32 /*spell id*/, std::pair<uint32 /*script id*/, bool /*enabled*/>> SpellScriptsContainer;
415typedef std::pair<SpellScriptsContainer::iterator, SpellScriptsContainer::iterator> SpellScriptsBounds;
418
419std::string GetScriptsTableNameByType(ScriptsType type);
421std::string GetScriptCommandName(ScriptCommands command);
422
424{
425 enum
426 {
427 FLAG_ACTIVATE_SPAWN = 0x01,
428 FLAG_BLOCK_SPAWN = 0x02,
429 FLAG_ALLIANCE_ONLY = 0x04,
430 FLAG_HORDE_ONLY = 0x08,
431
432 FLAG_ALL = (FLAG_ACTIVATE_SPAWN | FLAG_BLOCK_SPAWN | FLAG_ALLIANCE_ONLY | FLAG_HORDE_ONLY)
433 };
438};
439
441{
445
446 // helpers
447 bool IsFitToRequirements(Unit const* clicker, Unit const* clickee) const;
448};
449
450typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoContainer;
451
453
455{
456 std::vector<Position> Vertices;
458};
459
471
472typedef std::set<ObjectGuid::LowType> CellGuidSet;
478typedef std::unordered_map<uint32/*cell_id*/, CellObjectGuids> CellObjectGuidsMap;
479typedef std::unordered_map<std::pair<uint32 /*mapId*/, Difficulty>, CellObjectGuidsMap> MapObjectGuids;
480typedef std::map<std::tuple<uint32/*mapId*/, Difficulty, uint32 /*phaseId*/>, CellObjectGuidsMap> MapPersonalObjectGuids;
481
483{
484 std::vector<std::string> Content;
485};
486
487typedef std::map<ObjectGuid, ObjectGuid> LinkedRespawnContainer;
488typedef std::unordered_map<uint32, CreatureTemplate> CreatureTemplateContainer;
489typedef std::unordered_map<uint32, CreatureAddon> CreatureTemplateAddonContainer;
490typedef std::unordered_map<uint32, std::vector<float>> CreatureTemplateSparringContainer;
491typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer;
492typedef std::unordered_map<ObjectGuid::LowType, CreatureAddon> CreatureAddonContainer;
493typedef std::unordered_map<uint16, CreatureBaseStats> CreatureBaseStatsContainer;
494typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal;
495typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer;
496typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer;
497typedef std::unordered_map<std::pair<uint32, Difficulty>, std::vector<uint32>> CreatureQuestItemMap;
498typedef std::unordered_map<uint32, std::vector<int32>> CreatureQuestCurrenciesMap;
499typedef std::unordered_map<std::pair<ObjectGuid::LowType, Difficulty>, CreatureStaticFlagsOverride> CreatureStaticFlagsOverrideMap;
500typedef std::unordered_map<uint32, DestructibleHitpoint> DestructibleHitpointContainer;
501typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer;
502typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer;
503typedef std::unordered_map<ObjectGuid::LowType, GameObjectOverride> GameObjectOverrideContainer;
504typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer;
505typedef std::unordered_map<ObjectGuid::LowType, GameObjectAddon> GameObjectAddonContainer;
506typedef std::unordered_map<uint32, std::vector<uint32>> GameObjectQuestItemMap;
507typedef std::unordered_map<uint32, SpawnGroupTemplateData> SpawnGroupDataContainer;
508typedef std::multimap<uint32, SpawnMetadata const*> SpawnGroupLinkContainer;
509typedef std::unordered_map<uint16, std::vector<InstanceSpawnGroupInfo>> InstanceSpawnGroupContainer;
510typedef std::unordered_map<uint32, SpawnTrackingTemplateData> SpawnTrackingTemplateContainer;
511typedef std::multimap<uint32, SpawnMetadata const*> SpawnTrackingLinkContainer;
512typedef std::unordered_map<uint32 /*spawnTrackingId*/, std::vector<QuestObjective const*>> SpawnTrackingQuestObjectiveContainer;
513typedef std::map<TempSummonGroupKey, std::vector<TempSummonData>> TempSummonDataContainer;
514typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
515typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
516typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer;
517typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer;
518typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer;
519typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
520typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;
521typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
522typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestLinesMap;
523typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestsMap;
524typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
525
527{
528 std::vector<std::string> OptionText;
529 std::vector<std::string> BoxText;
530};
531
532typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
533
535{
536 std::vector<std::string> Name;
537};
538
539typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
540
542{
543 std::vector<std::string> Answer;
544 std::vector<std::string> Header;
545 std::vector<std::string> SubHeader;
546 std::vector<std::string> ButtonTooltip;
547 std::vector<std::string> Description;
548 std::vector<std::string> Confirmation;
549};
550
552{
553 std::vector<std::string> Question;
554 std::unordered_map<int32 /*ResponseId*/, PlayerChoiceResponseLocale> Responses;
555};
556
557typedef std::unordered_map<uint32, TrinityString> TrinityStringContainer;
558
559typedef std::multimap<uint32, uint32> QuestRelations; // unit/go -> quest
560typedef std::multimap<uint32, uint32> QuestRelationsReverse; // quest -> unit/go
561
563{
564 public:
565 struct Iterator
566 {
567 public:
568 using iterator_category = std::forward_iterator_tag;
569 using value_type = QuestRelations::mapped_type;
570 using pointer = value_type const*;
571 using reference = value_type const&;
572 using difference_type = void;
573
574 Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
575 : _it(it), _end(end), _onlyActive(onlyActive)
576 {
577 skip();
578 }
579
580 bool operator==(Iterator const& other) const { return _it == other._it; }
581
582 Iterator& operator++() { ++_it; skip(); return *this; }
583 Iterator operator++(int) { Iterator t = *this; ++*this; return t; }
584
585 value_type operator*() const { return _it->second; }
586
587 private:
588 void skip() { if (_onlyActive) _skip(); }
589 void _skip();
590
591 QuestRelations::const_iterator _it, _end;
593 };
594
596 QuestRelationResult(std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> range, bool onlyActive)
597 : _begin(range.first), _end(range.second), _onlyActive(onlyActive) {}
598
599 Iterator begin() const { return { _begin, _end, _onlyActive }; }
600 Iterator end() const { return { _end, _end, _onlyActive }; }
601
602 bool HasQuest(uint32 questId) const;
603
604 private:
605 QuestRelations::const_iterator _begin, _end;
607};
608
609typedef std::multimap<int32, uint32> ExclusiveQuestGroups; // exclusiveGroupId -> quest
610typedef std::pair<ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator> ExclusiveQuestGroupsBounds;
611
613{
614 Normal = 0,
615 NPE = 1,
616
617 Max
618};
619
627
628typedef std::vector<PlayerCreateInfoItem> PlayerCreateInfoItems;
629
631{
633};
634
635typedef std::vector<uint32> PlayerCreateInfoSpells;
636
638{
639 PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) { }
640
644};
645
646typedef std::vector<PlayerCreateInfoAction> PlayerCreateInfoActions;
647
648typedef std::vector<SkillRaceClassInfoEntry const*> PlayerCreateInfoSkills;
649
650// existence checked by displayId != 0
676
684
694
695typedef std::list<MailLevelReward> MailLevelRewardList;
696typedef std::unordered_map<uint8, MailLevelRewardList> MailLevelRewardContainer;
697
698// We assume the rate is in general the same for all three types below, but chose to keep three for scalability and customization
700{
701 float questRate; // We allow rate = 0.0 in database. For this case, it means that
706 float creatureRate; // no reputation are given at all for this faction/rate type.
708};
709
722
729
740
762
769
775
776typedef std::multimap<uint32, GossipMenus> GossipMenusContainer;
777typedef std::pair<GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator> GossipMenusMapBounds;
778typedef std::pair<GossipMenusContainer::iterator, GossipMenusContainer::iterator> GossipMenusMapBoundsNonConst;
779typedef std::multimap<uint32, GossipMenuItems> GossipMenuItemsContainer;
780typedef std::unordered_map<uint32, GossipMenuAddon> GossipMenuAddonContainer;
781
783{
787
788 QuestPOIBlobPoint() : X(0), Y(0), Z(0) { }
789 QuestPOIBlobPoint(int32 x, int32 y, int32 z) : X(x), Y(y), Z(z) { }
790};
791
793{
806 std::vector<QuestPOIBlobPoint> Points;
808
811 QuestPOIBlobData(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority,
812 int32 flags, int32 worldEffectID, int32 playerConditionID, int32 navigationPlayerConditionID, int32 spawnTrackingID, std::vector<QuestPOIBlobPoint> points,
813 bool alwaysAllowMergingBlobs) : BlobIndex(blobIndex), ObjectiveIndex(objectiveIndex), QuestObjectiveID(questObjectiveID),
814 QuestObjectID(questObjectID), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
815 PlayerConditionID(playerConditionID), NavigationPlayerConditionID(navigationPlayerConditionID), SpawnTrackingID(spawnTrackingID), Points(std::move(points)),
816 AlwaysAllowMergingBlobs(alwaysAllowMergingBlobs) { }
817};
818
820{
822 std::vector<QuestPOIBlobData> Blobs;
823
824 void InitializeQueryData();
825 std::vector<uint8> QueryDataBuffer;
826};
827
828typedef std::unordered_map<uint32, QuestPOIData> QuestPOIContainer;
829
830typedef std::array<std::unordered_map<uint32, QuestGreeting>, 2> QuestGreetingContainer;
831typedef std::array<std::unordered_map<uint32, QuestGreetingLocale>, 2> QuestGreetingLocaleContainer;
832
839
845
846typedef std::multimap<uint32, GraveyardData> GraveyardContainer;
847typedef std::pair<GraveyardContainer::const_iterator, GraveyardContainer::const_iterator> GraveyardMapBounds;
848typedef std::pair<GraveyardContainer::iterator, GraveyardContainer::iterator> GraveyardMapBoundsNonConst;
849
850typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
851
852typedef std::unordered_map<uint32, std::string> RealmNameContainer;
853
862
863typedef std::unordered_map<uint32, SceneTemplate> SceneTemplateContainer;
864
865typedef std::unordered_map<uint32, std::string> PhaseNameContainer;
866
868{
870 SKILL_RANGE_LEVEL, // 1..max skill for level
871 SKILL_RANGE_MONO, // 1..1, grey monolite bar
872 SKILL_RANGE_RANK, // 1..skill for known rank
873 SKILL_RANGE_NONE // 0..0 always
875
876#define MAX_SKILL_STEP 16
877
879{
880 uint32 ID; // 0
882
883 uint32 GetValueForTierIndex(uint32 tierIndex) const;
884};
885
887
888#define MAX_PLAYER_NAME 12 // max allowed by client name length
889#define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
890#define MAX_PET_NAME 12 // max allowed by client name length
891#define MAX_CHARTER_NAME 24 // max allowed by client name length
892
893TC_GAME_API bool normalizePlayerName(std::string& name);
894#define SPAWNGROUP_MAP_UNSET 0xFFFFFFFF
895
897{
898 ExtendedPlayerName(std::string const& name, std::string const& realmName) : Name(name), Realm(realmName) { }
899 std::string Name;
900 std::string Realm;
901};
902
903ExtendedPlayerName ExtractExtendedPlayerName(std::string const& name);
904
906{
908 std::vector<uint32> UiMapPhaseIDs;
909};
910
912{
914 std::unordered_set<uint32> Areas;
915
916 bool IsAllowedInArea(uint32 areaId) const;
917};
918
920{
921 PhaseAreaInfo(PhaseInfoStruct const* phaseInfo) : PhaseInfo(phaseInfo) { }
922
924 std::unordered_set<uint32> SubAreaExclusions;
926};
927
935
937{
939 std::vector<ClassAvailability> Classes;
940};
941
947
958
959class PlayerDumpReader;
960
962{
963 friend class PlayerDumpReader;
964 friend class UnitTestDataLoader;
965
966 private:
967 ObjectMgr();
968 ~ObjectMgr();
969
970 public:
971 ObjectMgr(ObjectMgr const&) = delete;
972 ObjectMgr(ObjectMgr&&) = delete;
973
974 ObjectMgr& operator= (ObjectMgr const&) = delete;
975 ObjectMgr& operator= (ObjectMgr&&) = delete;
976
977 static ObjectMgr* instance();
978
979 typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Quest>> QuestContainer;
980 typedef std::unordered_map<uint32 /*questObjectiveId*/, QuestObjective const*> QuestObjectivesByIdContainer;
981
982 typedef std::unordered_map<uint32, AreaTriggerTeleport const*> AreaTriggerContainer;
983
984 typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer;
985
986 typedef std::unordered_map<uint64, AccessRequirement> AccessRequirementContainer;
987
988 typedef std::set<uint32> EventContainer;
989 typedef std::unordered_map<uint32, uint32> EventScriptContainer;
990
991 typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer;
992 typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer;
993 typedef std::unordered_map<uint32, RepSpilloverTemplate> RepSpilloverTemplateContainer;
994
995 typedef std::unordered_map<uint32, PointOfInterest> PointOfInterestContainer;
996
998 {
999 public:
1000 struct Entry
1001 {
1002 Entry() = default;
1003 Entry(uint32 id, bool isScriptDatabaseBound) : Id(id), IsScriptDatabaseBound(isScriptDatabaseBound) { }
1004
1005 uint32 Id = 0;
1006 bool IsScriptDatabaseBound = false;
1007 };
1008
1009 private:
1010 using NameMap = std::map<std::string, Entry, std::less<>>;
1011
1013 std::vector<NameMap::const_iterator> IndexToName;
1014
1015 public:
1017
1018 void reserve(size_t capacity);
1019 uint32 insert(std::string_view scriptName, bool isScriptNameBound = true);
1020 size_t size() const;
1021 NameMap::const_iterator find(size_t index) const;
1022 NameMap::const_iterator find(std::string_view name) const;
1023 NameMap::const_iterator end() const;
1024
1025 std::unordered_set<std::string> GetAllDBScriptNames() const;
1026 };
1027
1028 typedef std::map<uint32, uint32> CharacterConversionMap;
1029
1030 DestructibleHitpoint const* GetDestructibleHitpoint(uint32 entry) const;
1031 GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const;
1032 GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; }
1033 uint32 LoadReferenceVendor(int32 vendor, int32 item_id, std::set<uint32>* skip_vendors);
1034
1035 void LoadDestructibleHitpoints();
1036 void LoadGameObjectTemplate();
1037 void LoadGameObjectTemplateAddons();
1038 void LoadGameObjectOverrides();
1039
1040 CreatureTemplate const* GetCreatureTemplate(uint32 entry) const;
1041 CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; }
1042 CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const;
1043 CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const;
1044 CreatureSummonedData const* GetCreatureSummonedData(uint32 entryId) const;
1045 static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr);
1046 static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* unitFlags3, CreatureStaticFlagsHolder const& staticFlags, CreatureData const* data = nullptr);
1047 EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const;
1048 CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const;
1049 GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const;
1050 GameObjectTemplateAddon const* GetGameObjectTemplateAddon(uint32 entry) const;
1051 GameObjectOverride const* GetGameObjectOverride(ObjectGuid::LowType spawnId) const;
1052 CreatureAddon const* GetCreatureTemplateAddon(uint32 entry) const;
1053 std::vector<float> const* GetCreatureTemplateSparringValues(uint32 entry) const;
1054 CreatureMovementData const* GetCreatureMovementOverride(ObjectGuid::LowType spawnId) const;
1055 ItemTemplate const* GetItemTemplate(uint32 entry) const;
1056 ItemTemplateContainer const& GetItemTemplateStore() const { return _itemTemplateStore; }
1057
1058 InstanceTemplateContainer const& GetInstanceTemplates() const { return _instanceTemplateStore; }
1059 InstanceTemplate const* GetInstanceTemplate(uint32 mapId) const;
1060
1061 PetLevelInfo const* GetPetLevelInfo(uint32 creature_id, uint8 level) const;
1062
1063 void GetPlayerClassLevelInfo(uint32 class_, uint8 level, uint32& baseMana) const;
1064
1065 PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const;
1066
1067 void GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const;
1068
1069 std::vector<uint32> const* GetGameObjectQuestItemList(uint32 id) const
1070 {
1071 GameObjectQuestItemMap::const_iterator itr = _gameObjectQuestItemStore.find(id);
1072 if (itr != _gameObjectQuestItemStore.end())
1073 return &itr->second;
1074 return nullptr;
1075 }
1076 GameObjectQuestItemMap const* GetGameObjectQuestItemMap() const { return &_gameObjectQuestItemStore; }
1077
1078 std::vector<uint32> const* GetCreatureQuestItemList(uint32 creatureEntry, Difficulty difficulty) const;
1079 std::vector<int32> const* GetCreatureQuestCurrencyList(uint32 creatureId) const;
1080
1081 uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
1082 void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
1083 void GetTaxiPath(uint32 source, uint32 destination, std::vector<uint32>& path, uint32& cost);
1084 uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false);
1085
1086 Quest const* GetQuestTemplate(uint32 quest_id) const;
1087
1088 QuestContainer const& GetQuestTemplates() const { return _questTemplates; }
1089 std::vector<Quest const*> const& GetQuestTemplatesAutoPush() const { return _questTemplatesAutoPush; }
1090
1091 QuestObjective const* GetQuestObjective(uint32 questObjectiveId) const
1092 {
1093 auto itr = _questObjectives.find(questObjectiveId);
1094 return itr != _questObjectives.end() ? itr->second : nullptr;
1095 }
1096
1097 std::unordered_set<uint32> const* GetQuestsForAreaTrigger(uint32 Trigger_ID) const
1098 {
1099 auto itr = _questAreaTriggerStore.find(Trigger_ID);
1100 if (itr != _questAreaTriggerStore.end())
1101 return &itr->second;
1102 return nullptr;
1103 }
1104
1105 AreaTriggerPolygon const* GetAreaTriggerPolygon(uint32 areaTriggerId) const;
1106
1107 bool IsTavernAreaTrigger(uint32 Trigger_ID) const
1108 {
1109 return _tavernAreaTriggerStore.find(Trigger_ID) != _tavernAreaTriggerStore.end();
1110 }
1111
1113 {
1114 return _gameObjectForQuestStore.find(entry) != _gameObjectForQuestStore.end();
1115 }
1116
1117 bool IsValidEvent(uint32 eventId) const
1118 {
1119 return _eventStore.find(eventId) != _eventStore.end();
1120 }
1121
1122 NpcText const* GetNpcText(uint32 textID) const;
1123 QuestGreeting const* GetQuestGreeting(TypeID type, uint32 id) const;
1124 QuestGreetingLocale const* GetQuestGreetingLocale(TypeID type, uint32 id) const;
1125
1126 WorldSafeLocsEntry const* GetDefaultGraveyard(uint32 team) const;
1127 WorldSafeLocsEntry const* GetClosestGraveyard(WorldLocation const& location, uint32 team, WorldObject* conditionObject) const;
1128 WorldSafeLocsEntry const* GetClosestGraveyardInZone(WorldLocation const& location, uint32 team, WorldObject* conditionObject, uint32 zoneId) const;
1129 bool AddGraveyardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = true);
1130 void LoadGraveyardZones();
1131 GraveyardData const* FindGraveyardData(uint32 id, uint32 zone) const;
1132 void LoadWorldSafeLocs();
1133 WorldSafeLocsEntry const* GetWorldSafeLoc(uint32 id) const;
1135
1136 AreaTriggerTeleport const* GetAreaTrigger(uint32 trigger) const;
1137 AccessRequirement const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const;
1138 AreaTriggerTeleport const* GetGoBackTrigger(uint32 Map) const;
1139 AreaTriggerTeleport const* GetMapEntranceTrigger(uint32 Map) const;
1140
1141 uint32 GetAreaTriggerScriptId(uint32 trigger_id) const;
1142 uint32 GetEventScriptId(uint32 eventId) const;
1143 SpellScriptsBounds GetSpellScriptsBounds(uint32 spellId);
1144
1145 RepRewardRate const* GetRepRewardRate(uint32 factionId) const
1146 {
1147 RepRewardRateContainer::const_iterator itr = _repRewardRateStore.find(factionId);
1148 if (itr != _repRewardRateStore.end())
1149 return &itr->second;
1150
1151 return nullptr;
1152 }
1153
1155 {
1156 RepOnKillContainer::const_iterator itr = _repOnKillStore.find(id);
1157 if (itr != _repOnKillStore.end())
1158 return &itr->second;
1159 return nullptr;
1160 }
1161
1162 int32 GetBaseReputationOf(FactionEntry const* factionEntry, uint8 race, uint8 playerClass) const;
1163
1165 {
1166 RepSpilloverTemplateContainer::const_iterator itr = _repSpilloverTemplateStore.find(factionId);
1167 if (itr != _repSpilloverTemplateStore.end())
1168 return &itr->second;
1169
1170 return nullptr;
1171 }
1172
1174 {
1175 PointOfInterestContainer::const_iterator itr = _pointsOfInterestStore.find(id);
1176 if (itr != _pointsOfInterestStore.end())
1177 return &itr->second;
1178 return nullptr;
1179 }
1180
1181 QuestPOIData const* GetQuestPOIData(int32 questId);
1182
1183 std::vector<uint32> const* GetUiMapQuestLinesList(uint32 uiMapId) const;
1184 std::vector<uint32> const* GetUiMapQuestsList(uint32 uiMapId) const;
1185
1186 VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const;
1187 VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
1188
1189 void LoadQuests();
1190 void LoadQuestStartersAndEnders();
1191 void LoadGameobjectQuestStarters();
1192 void LoadGameobjectQuestEnders();
1193 void LoadCreatureQuestStarters();
1194 void LoadCreatureQuestEnders();
1195
1196 QuestRelations* GetGOQuestRelationMapHACK() { return &_goQuestRelations; }
1197 QuestRelationResult GetGOQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestRelations, entry, true); }
1198 QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestInvolvedRelations, entry, false); }
1199 Trinity::IteratorPair<QuestRelationsReverse::const_iterator> GetGOQuestInvolvedRelationReverseBounds(uint32 questId) const { return _goQuestInvolvedRelationsReverse.equal_range(questId); }
1200 QuestRelations* GetCreatureQuestRelationMapHACK() { return &_creatureQuestRelations; }
1201 QuestRelationResult GetCreatureQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestRelations, entry, true); }
1202 QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestInvolvedRelations, entry, false); }
1203 Trinity::IteratorPair<QuestRelationsReverse::const_iterator> GetCreatureQuestInvolvedRelationReverseBounds(uint32 questId) const { return _creatureQuestInvolvedRelationsReverse.equal_range(questId); }
1204
1206 {
1207 return _exclusiveQuestGroups.equal_range(exclusiveGroupId);
1208 }
1209
1210 std::vector<Difficulty> ParseSpawnDifficulties(std::string_view difficultyString, std::string_view table, ObjectGuid::LowType spawnId, uint32 mapId, std::set<Difficulty> const& mapDifficulties);
1211
1212 bool LoadTrinityStrings();
1213
1214 void LoadEventScripts();
1215 void LoadSpellScripts();
1216
1217 void LoadSpellScriptNames();
1218 void ValidateSpellScripts();
1219
1220 void LoadCreatureClassLevelStats();
1221 void LoadCreatureLocales();
1222 void LoadCreatureTemplates();
1223 void LoadCreatureTemplateAddons();
1224 void LoadCreatureTemplateSparring();
1225 void LoadCreatureTemplate(Field* fields);
1226 void LoadCreatureTemplateDifficulty();
1227 void LoadCreatureTemplateGossip();
1228 void LoadCreatureTemplateResistances();
1229 void LoadCreatureTemplateSpells();
1230 void LoadCreatureTemplateModels();
1231 void LoadCreatureSummonedData();
1232 void CheckCreatureTemplate(CreatureTemplate const* cInfo);
1233 void CheckCreatureMovement(char const* table, uint64 id, CreatureMovementData& creatureMovement);
1234 void LoadGameObjectQuestItems();
1235 void LoadCreatureQuestItems();
1236 void LoadCreatureQuestCurrencies();
1237 void LoadCreatureStaticFlagsOverride();
1238 void LoadTempSummons();
1239 void LoadCreatures();
1240 void LoadLinkedRespawn();
1241 bool SetCreatureLinkedRespawn(ObjectGuid::LowType guid, ObjectGuid::LowType linkedGuid);
1242 void LoadCreatureAddons();
1243 void LoadGameObjectAddons();
1244 void LoadCreatureModelInfo();
1245 void LoadEquipmentTemplates();
1246 void LoadCreatureMovementOverrides();
1247 void LoadGameObjectLocales();
1248 void LoadGameObjects();
1249 void LoadSpawnGroupTemplates();
1250 void LoadSpawnGroups();
1251 void LoadInstanceSpawnGroups();
1252 void LoadItemTemplates();
1253 void LoadItemTemplateAddon();
1254 void LoadItemScriptNames();
1255 void LoadQuestTemplateLocale();
1256 void LoadQuestObjectivesLocale();
1257 void LoadQuestGreetingLocales();
1258 void LoadQuestOfferRewardLocale();
1259 void LoadQuestRequestItemsLocale();
1260 void LoadPageTextLocales();
1261 void LoadGossipMenuItemsLocales();
1262 void LoadPointOfInterestLocales();
1263 void LoadInstanceTemplate();
1264 void LoadMailLevelRewards();
1265 void LoadVehicleTemplateAccessories();
1266 void LoadVehicleTemplate();
1267 void LoadVehicleAccessories();
1268 void LoadVehicleSeatAddon();
1269
1270 void LoadNPCText();
1271
1272 void LoadAreaTriggerTeleports();
1273 void LoadAreaTriggerPolygons();
1274 void LoadAccessRequirements();
1275 void LoadQuestAreaTriggers();
1276 void LoadQuestGreetings();
1277 void LoadAreaTriggerScripts();
1278 void LoadTavernAreaTriggers();
1279 void LoadGameObjectForQuests();
1280
1281 void LoadPageTexts();
1282 PageText const* GetPageText(uint32 pageEntry);
1283
1284 void LoadPlayerInfo();
1285 void LoadPetLevelInfo();
1286 void LoadExplorationBaseXP();
1287 void LoadPetNames();
1288 void LoadPetNumber();
1289 void LoadFishingBaseSkillLevel();
1290 void LoadSkillTiers();
1291
1292 void LoadReputationRewardRate();
1293 void LoadReputationOnKill();
1294 void LoadReputationSpilloverTemplate();
1295
1296 void LoadPointsOfInterest();
1297 void LoadQuestPOI();
1298
1299 void LoadNPCSpellClickSpells();
1300
1301 void LoadGameTele();
1302
1303 void LoadGossipMenu();
1304 void LoadGossipMenuItems();
1305 void LoadGossipMenuAddon();
1306
1307 void LoadVendors();
1308 void LoadTrainers();
1309 void LoadCreatureTrainers();
1310
1311 void LoadPhases();
1312 void UnloadPhaseConditions();
1313
1314 void LoadTerrainSwapDefaults();
1315 void LoadTerrainWorldMaps();
1316 void LoadAreaPhases();
1317
1318 void LoadSceneTemplates();
1319
1320 void LoadPlayerChoices();
1321 void LoadPlayerChoicesLocale();
1322
1323 void LoadUiMapQuestLines();
1324 void LoadUiMapQuests();
1325
1326 void LoadSpawnTrackingTemplates();
1327 void LoadSpawnTrackingQuestObjectives();
1328 void LoadSpawnTrackings();
1329 void LoadSpawnTrackingStates();
1330
1331 void LoadJumpChargeParams();
1332 void LoadPhaseNames();
1333
1334 void InitializeQueriesData(QueryDataGroup mask);
1335
1336 std::string GeneratePetName(uint32 entry);
1337 uint32 GetBaseXP(uint8 level);
1338 uint32 GetXPForLevel(uint8 level) const;
1339
1340 int32 GetFishingBaseSkillLevel(AreaTableEntry const* areaEntry) const;
1341
1342 SkillTiersEntry const* GetSkillTier(uint32 skillTierId) const;
1343
1344 void ReturnOrDeleteOldMails(bool serverUp);
1345
1346 CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
1347
1348 void SetHighestGuids();
1349
1350 template<HighGuid type>
1352 {
1354 "Only global guid can be generated in ObjectMgr context");
1355 return GetGuidSequenceGenerator(type);
1356 }
1357
1358 uint32 GenerateAuctionID();
1359 uint64 GenerateEquipmentSetGuid();
1360 uint64 GenerateMailID();
1361 uint32 GeneratePetNumber();
1362 ObjectGuid::LowType GenerateCreatureSpawnId();
1363 ObjectGuid::LowType GenerateGameObjectSpawnId();
1364
1365 SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const { auto it = _spawnGroupDataStore.find(groupId); return it != _spawnGroupDataStore.end() ? &it->second : nullptr; }
1366 SpawnGroupTemplateData const* GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const { SpawnMetadata const* data = GetSpawnMetadata(type, spawnId); return data ? data->spawnGroupData : nullptr; }
1367 SpawnGroupTemplateData const* GetDefaultSpawnGroup() const { return &_spawnGroupDataStore.at(0); }
1368 SpawnGroupTemplateData const* GetLegacySpawnGroup() const { return &_spawnGroupDataStore.at(1); }
1370 std::vector<uint32> const* GetSpawnGroupsForMap(uint32 mapId) const { auto it = _spawnGroupsByMap.find(mapId); return it != _spawnGroupsByMap.end() ? &it->second : nullptr; }
1371 std::vector<InstanceSpawnGroupInfo> const* GetInstanceSpawnGroupsForMap(uint32 mapId) const { auto it = _instanceSpawnGroupStore.find(mapId); return it != _instanceSpawnGroupStore.end() ? &it->second : nullptr; }
1372
1373 SpawnTrackingTemplateData const* GetSpawnTrackingData(uint32 spawnTrackingId) const;
1375 std::vector<QuestObjective const*> const* GetSpawnTrackingQuestObjectiveList(uint32 spawnTrackingId) const { auto it = _spawnTrackingQuestObjectiveStore.find(spawnTrackingId); return it != _spawnTrackingQuestObjectiveStore.end() ? &it->second : nullptr; }
1376 bool IsQuestObjectiveForSpawnTracking(uint32 spawnTrackingId, uint32 questObjectiveId) const;
1377
1379 {
1380 MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
1381 if (map_itr == _mailLevelRewardStore.end())
1382 return nullptr;
1383
1384 for (auto const& mailLevelReward : map_itr->second)
1385 if (mailLevelReward.raceMask.HasRace(race))
1386 return &mailLevelReward;
1387
1388 return nullptr;
1389 }
1390
1391 CellObjectGuids const* GetCellObjectGuids(uint32 mapid, Difficulty spawnMode, uint32 cell_id);
1392
1393 CellObjectGuidsMap const* GetMapObjectGuids(uint32 mapid, Difficulty spawnMode);
1394
1395 bool HasPersonalSpawns(uint32 mapid, Difficulty spawnMode, uint32 phaseId) const;
1396 CellObjectGuids const* GetCellPersonalObjectGuids(uint32 mapid, Difficulty spawnMode, uint32 phaseId, uint32 cell_id) const;
1397
1407 std::vector<TempSummonData> const* GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
1408 {
1409 auto itr = _tempSummonDataStore.find({ .SummonerEntry = summonerId, .Type = summonerType, .SummonGroup = group });
1410 if (itr != _tempSummonDataStore.end())
1411 return &itr->second;
1412
1413 return nullptr;
1414 }
1415
1417 {
1418 if (SpawnData::TypeHasData(type))
1419 return GetSpawnData(type, spawnId);
1420 else
1421 return nullptr;
1422 }
1423
1424 SpawnData const* GetSpawnData(SpawnObjectType type, ObjectGuid::LowType spawnId) const;
1425 void OnDeleteSpawnData(SpawnData const* data);
1426 CreatureDataContainer const& GetAllCreatureData() const { return _creatureDataStore; }
1428 {
1429 CreatureDataContainer::const_iterator itr = _creatureDataStore.find(spawnId);
1430 if (itr == _creatureDataStore.end()) return nullptr;
1431 return &itr->second;
1432 }
1433 CreatureData& NewOrExistCreatureData(ObjectGuid::LowType spawnId);
1434 void DeleteCreatureData(ObjectGuid::LowType spawnId);
1436 {
1437 LinkedRespawnContainer::const_iterator itr = _linkedRespawnStore.find(spawnId);
1438 if (itr == _linkedRespawnStore.end()) return ObjectGuid::Empty;
1439 return itr->second;
1440 }
1442 {
1443 CreatureLocaleContainer::const_iterator itr = _creatureLocaleStore.find(entry);
1444 if (itr == _creatureLocaleStore.end()) return nullptr;
1445 return &itr->second;
1446 }
1447 GameObjectDataContainer const& GetAllGameObjectData() const { return _gameObjectDataStore; }
1449 {
1450 GameObjectDataContainer::const_iterator itr = _gameObjectDataStore.find(spawnId);
1451 if (itr == _gameObjectDataStore.end()) return nullptr;
1452 return &itr->second;
1453 }
1454 GameObjectData& NewOrExistGameObjectData(ObjectGuid::LowType spawnId);
1455 void DeleteGameObjectData(ObjectGuid::LowType spawnId);
1457 {
1458 GameObjectLocaleContainer::const_iterator itr = _gameObjectLocaleStore.find(entry);
1459 if (itr == _gameObjectLocaleStore.end()) return nullptr;
1460 return &itr->second;
1461 }
1463 {
1464 QuestTemplateLocaleContainer::const_iterator itr = _questTemplateLocaleStore.find(entry);
1465 if (itr == _questTemplateLocaleStore.end()) return nullptr;
1466 return &itr->second;
1467 }
1469 {
1470 auto itr = _questOfferRewardLocaleStore.find(entry);
1471 if (itr == _questOfferRewardLocaleStore.end()) return nullptr;
1472 return &itr->second;
1473 }
1475 {
1476 auto itr = _questRequestItemsLocaleStore.find(entry);
1477 if (itr == _questRequestItemsLocaleStore.end()) return nullptr;
1478 return &itr->second;
1479 }
1481 {
1482 QuestObjectivesLocaleContainer::const_iterator itr = _questObjectivesLocaleStore.find(entry);
1483 if (itr == _questObjectivesLocaleStore.end()) return nullptr;
1484 return &itr->second;
1485 }
1487 {
1488 PageTextLocaleContainer::const_iterator itr = _pageTextLocaleStore.find(entry);
1489 if (itr == _pageTextLocaleStore.end()) return nullptr;
1490 return &itr->second;
1491 }
1493 {
1494 auto itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionId));
1495 if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr;
1496 return &itr->second;
1497 }
1499 {
1500 PointOfInterestLocaleContainer::const_iterator itr = _pointOfInterestLocaleStore.find(id);
1501 if (itr == _pointOfInterestLocaleStore.end()) return nullptr;
1502 return &itr->second;
1503 }
1505 {
1506 auto itr = _playerChoiceLocales.find(ChoiceID);
1507 if (itr == _playerChoiceLocales.end()) return nullptr;
1508 return &itr->second;
1509 }
1511 {
1512 TrinityStringContainer::const_iterator itr = _trinityStringStore.find(entry);
1513 if (itr == _trinityStringStore.end())
1514 return nullptr;
1515 return &itr->second;
1516 }
1517 char const* GetTrinityString(uint32 entry, LocaleConstant locale) const;
1518 char const* GetTrinityStringForDBCLocale(uint32 entry) const { return GetTrinityString(entry, DBCLocaleIndex); }
1519 LocaleConstant GetDBCLocaleIndex() const { return DBCLocaleIndex; }
1520 void SetDBCLocaleIndex(LocaleConstant locale) { DBCLocaleIndex = locale; }
1521
1522 // grid objects
1523 void AddCreatureToGrid(CreatureData const* data);
1524 void RemoveCreatureFromGrid(CreatureData const* data);
1525 void AddGameobjectToGrid(GameObjectData const* data);
1526 void RemoveGameobjectFromGrid(GameObjectData const* data);
1527
1528 // reserved names
1529 void LoadReservedPlayersNames();
1530 bool IsReservedName(std::string_view name) const;
1531
1532 // name with valid structure and symbols
1533 static ResponseCodes CheckPlayerName(std::string_view name, LocaleConstant locale, bool create = false);
1534 static PetNameInvalidReason CheckPetName(std::string_view name);
1535 static bool IsValidCharterName(std::string_view name);
1536
1537 static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names);
1538
1539 GameTele const* GetGameTele(uint32 id) const
1540 {
1541 GameTeleContainer::const_iterator itr = _gameTeleStore.find(id);
1542 if (itr == _gameTeleStore.end()) return nullptr;
1543 return &itr->second;
1544 }
1545 GameTele const* GetGameTele(std::string_view name) const;
1546 GameTele const* GetGameTeleExactName(std::string_view name) const;
1547 GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; }
1548 bool AddGameTele(GameTele& data);
1549 bool DeleteGameTele(std::string_view name);
1550
1551 Trainer::Trainer const* GetTrainer(uint32 trainerId) const;
1553 {
1554 return GetCreatureTrainerForGossipOption(creatureId, 0, 0);
1555 }
1556 uint32 GetCreatureTrainerForGossipOption(uint32 creatureId, uint32 gossipMenuId, uint32 gossipOptionId) const;
1557
1559 {
1560 CacheVendorItemContainer::const_iterator iter = _cacheVendorItemStore.find(entry);
1561 if (iter == _cacheVendorItemStore.end())
1562 return nullptr;
1563
1564 return &iter->second;
1565 }
1566
1567 void AddVendorItem(uint32 entry, VendorItem const& vItem, bool persist = true); // for event
1568 bool RemoveVendorItem(uint32 entry, uint32 item, uint8 type, bool persist = true); // for event
1569 bool IsVendorItemValid(uint32 vendor_entry, VendorItem const& vItem, Player* player = nullptr, std::set<uint32>* skip_vendors = nullptr, uint32 ORnpcflag = 0) const;
1570
1571 std::unordered_set<std::string> GetAllDBScriptNames() const;
1572 std::string const& GetScriptName(uint32 id) const;
1573 bool IsScriptDatabaseBound(uint32 id) const;
1574 uint32 GetScriptId(std::string_view name, bool isDatabaseBound = true);
1575
1580
1582 {
1583 return _gossipMenusStore.equal_range(uiMenuId);
1584 }
1585
1587 {
1588 return _gossipMenusStore.equal_range(uiMenuId);
1589 }
1590
1600 {
1601 GossipMenuAddonContainer::const_iterator itr = _gossipMenuAddonStore.find(menuId);
1602 if (itr != _gossipMenuAddonStore.end())
1603 return &itr->second;
1604 return nullptr;
1605 }
1606
1607 // for wintergrasp only
1609
1610 static void AddLocaleString(std::string_view value, LocaleConstant localeConstant, std::vector<std::string>& data);
1611 static std::string_view GetLocaleString(std::vector<std::string> const& data, LocaleConstant locale)
1612 {
1613 if (locale < data.size())
1614 return data[locale];
1615 else
1616 return {};
1617 }
1618 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string& value)
1619 {
1620 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1621 value.assign(str);
1622 }
1623
1624 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string_view& value)
1625 {
1626 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1627 value = str;
1628 }
1629
1637
1638 void LoadFactionChangeAchievements();
1639 void LoadFactionChangeItems();
1640 void LoadFactionChangeQuests();
1641 void LoadFactionChangeReputations();
1642 void LoadFactionChangeSpells();
1643 void LoadFactionChangeTitles();
1644
1645 bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; }
1646
1648 {
1649 VehicleSeatAddonContainer::const_iterator itr = _vehicleSeatAddonStore.find(seatId);
1650 if (itr == _vehicleSeatAddonStore.end())
1651 return nullptr;
1652
1653 return &itr->second;
1654 }
1655
1656 void LoadRaceAndClassExpansionRequirements();
1657
1658 std::string GetPhaseName(uint32 phaseId) const;
1659
1660 std::unordered_map<uint8, RaceUnlockRequirement> const& GetRaceUnlockRequirements() const { return _raceUnlockRequirementStore; }
1662 {
1663 auto itr = _raceUnlockRequirementStore.find(race);
1664 if (itr != _raceUnlockRequirementStore.end())
1665 return &itr->second;
1666 return nullptr;
1667 }
1668
1669 std::vector<RaceClassAvailability> const& GetClassExpansionRequirements() const { return _classExpansionRequirementStore; }
1670 ClassAvailability const* GetClassExpansionRequirement(uint8 raceId, uint8 classId) const;
1671 ClassAvailability const* GetClassExpansionRequirementFallback(uint8 classId) const;
1672
1674 {
1675 auto itr = _sceneTemplateStore.find(sceneId);
1676 if (itr != _sceneTemplateStore.end())
1677 return &itr->second;
1678
1679 return nullptr;
1680 }
1681
1682 PlayerChoice const* GetPlayerChoice(int32 choiceId) const;
1683
1684 JumpChargeParams const* GetJumpChargeParams(int32 id) const;
1685
1686 CreatureStaticFlagsOverride const* GetCreatureStaticFlagsOverride(ObjectGuid::LowType spawnId, Difficulty difficultyId) const;
1687
1688 private:
1689 // first free id for selected id type
1692 std::atomic<uint64> _mailId;
1693 std::atomic<uint32> _hiPetNumber;
1696
1697 // first free low guid for selected guid type
1698 ObjectGuidGenerator& GetGuidSequenceGenerator(HighGuid high);
1699
1700 std::map<HighGuid, ObjectGuidGenerator> _guidGenerators;
1702 std::vector<Quest const*> _questTemplatesAutoPush;
1704
1705 typedef std::unordered_map<uint32, NpcText> NpcTextContainer;
1706 typedef std::unordered_map<uint32, std::unordered_set<uint32>> QuestAreaTriggerContainer;
1707 typedef std::set<uint32> TavernAreaTriggerContainer;
1708 typedef std::set<uint32> GameObjectForQuestContainer;
1709
1718 std::unordered_map<uint32, AreaTriggerPolygon> _areaTriggerPolygons;
1720 std::unordered_map<uint32, WorldSafeLocsEntry> _worldSafeLocs;
1721
1724
1728
1733
1735
1742
1744
1745 //character reserved names
1746 typedef std::set<std::wstring> ReservedNamesContainer;
1748
1750
1752
1754
1756
1757 std::unordered_map<uint32, VehicleTemplate> _vehicleTemplateStore;
1760
1762
1765
1766 public:
1767 PhaseInfoStruct const* GetPhaseInfo(uint32 phaseId) const;
1768 std::vector<PhaseAreaInfo> const* GetPhasesForArea(uint32 areaId) const;
1769 TerrainSwapInfo const* GetTerrainSwapInfo(uint32 terrainSwapId) const;
1770 std::unordered_map<uint32, std::vector<TerrainSwapInfo*>> const& GetTerrainSwaps() const { return _terrainSwapInfoByMap; }
1771
1772 private:
1773 std::unordered_map<uint32, PhaseInfoStruct> _phaseInfoById;
1774 std::unordered_map<uint32, TerrainSwapInfo> _terrainSwapInfoById;
1775 std::unordered_map<uint32, std::vector<PhaseAreaInfo>> _phaseInfoByArea;
1776 std::unordered_map<uint32, std::vector<TerrainSwapInfo*>> _terrainSwapInfoByMap;
1777
1778 private:
1779 void LoadEventSet();
1780 void LoadScripts(ScriptsType type);
1781 void LoadQuestRelationsHelper(QuestRelations& map, QuestRelationsReverse* reverseMap, std::string const& table);
1782 QuestRelationResult GetQuestRelationsFrom(QuestRelations const& map, uint32 key, bool onlyActive) const { return { map.equal_range(key), onlyActive }; }
1783 void PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count);
1784
1785 template<CellGuidSet CellObjectGuids::*guids>
1786 void AddSpawnDataToGrid(SpawnData const* data);
1787
1788 template<CellGuidSet CellObjectGuids::*guids>
1789 void RemoveSpawnDataFromGrid(SpawnData const* data);
1790
1792
1794
1795 typedef std::unordered_map<uint32 /*creatureId*/, std::unique_ptr<PetLevelInfo[] /*level*/>> PetLevelInfoContainer;
1797
1798 void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const;
1799
1800 std::unordered_map<std::pair<Races, Classes>, std::unique_ptr<PlayerInfo>> _playerInfo;
1801
1802 typedef std::vector<uint32> PlayerXPperLevel; // [level]
1804
1805 typedef std::map<uint32, uint32> BaseXPContainer; // [area level][base xp]
1807
1808 typedef std::map<uint32, int32> FishingBaseSkillContainer; // [areaId][base skill level]
1810 std::unordered_map<uint32, SkillTiersEntry> _skillTiers;
1811
1812 typedef std::map<uint32, std::vector<std::string>> HalfNameContainer;
1815
1821 std::unordered_map<uint32, CreatureSummonedData> _creatureSummonedDataStore;
1825 std::unordered_map<ObjectGuid::LowType, CreatureMovementData> _creatureMovementOverrides;
1841 std::unordered_map<uint32, std::vector<uint32>> _spawnGroupsByMap;
1849 std::unordered_map<int32 /*choiceId*/, PlayerChoice> _playerChoices;
1850
1859
1860 std::unordered_map<int32, PlayerChoiceLocale> _playerChoiceLocales;
1861
1863
1865 std::unordered_map<uint32, Trainer::Trainer> _trainers;
1866 std::map<std::tuple<uint32, uint32, uint32>, uint32> _creatureDefaultTrainers;
1867
1868 std::unordered_map<uint8, RaceUnlockRequirement> _raceUnlockRequirementStore;
1869 std::vector<RaceClassAvailability> _classExpansionRequirementStore;
1871
1873
1876
1877 std::unordered_map<int32, JumpChargeParams> _jumpChargeParams;
1878
1880
1881 std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
1883};
1884
1885#define sObjectMgr ObjectMgr::instance()
1886
1887#endif
LocaleConstant
Definition Common.h:51
std::vector< Condition > ConditionContainer
ItemContext
Definition DBCEnums.h:1315
Difficulty
Definition DBCEnums.h:932
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
uint16 flags
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:24
GossipOptionNpc
Definition GossipDef.h:38
GossipOptionFlags
Definition GossipDef.h:125
TempSummonType
TypeID
Definition ObjectGuid.h:37
HighGuid
Definition ObjectGuid.h:109
std::unordered_map< uint32, VendorItemData > CacheVendorItemContainer
Definition ObjectMgr.h:850
std::unordered_map< uint32, std::string > PhaseNameContainer
Definition ObjectMgr.h:865
std::unordered_map< uint8, EquipmentInfo > EquipmentInfoContainerInternal
Definition ObjectMgr.h:494
std::pair< GraveyardContainer::iterator, GraveyardContainer::iterator > GraveyardMapBoundsNonConst
Definition ObjectMgr.h:848
eScriptFlags
Definition ObjectMgr.h:180
@ SF_CASTSPELL_SOURCE_TO_SOURCE
Definition ObjectMgr.h:198
@ SF_CASTSPELL_SOURCE_TO_TARGET
Definition ObjectMgr.h:197
@ SF_CASTSPELL_TRIGGERED
Definition ObjectMgr.h:202
@ SF_CASTSPELL_TARGET_TO_SOURCE
Definition ObjectMgr.h:200
@ SF_REMOVEAURA_REVERSE
Definition ObjectMgr.h:194
@ SF_PLAYSOUND_DISTANCE_SOUND
Definition ObjectMgr.h:206
@ SF_TALK_USE_PLAYER
Definition ObjectMgr.h:182
@ SF_TELEPORT_USE_CREATURE
Definition ObjectMgr.h:188
@ SF_KILLCREDIT_REWARD_GROUP
Definition ObjectMgr.h:191
@ SF_PLAYSOUND_TARGET_PLAYER
Definition ObjectMgr.h:205
@ SF_CASTSPELL_TARGET_TO_TARGET
Definition ObjectMgr.h:199
@ SF_EMOTE_USE_STATE
Definition ObjectMgr.h:185
@ SF_CASTSPELL_SEARCH_CREATURE
Definition ObjectMgr.h:201
@ SF_ORIENTATION_FACE_TARGET
Definition ObjectMgr.h:209
std::unordered_map< uint32, CreatureAddon > CreatureTemplateAddonContainer
Definition ObjectMgr.h:489
std::unordered_map< uint32, CreatureModelInfo > CreatureModelContainer
Definition ObjectMgr.h:496
std::vector< PlayerCreateInfoItem > PlayerCreateInfoItems
Definition ObjectMgr.h:628
std::set< ObjectGuid::LowType > CellGuidSet
Definition ObjectMgr.h:472
std::unordered_map< uint32, SceneTemplate > SceneTemplateContainer
Definition ObjectMgr.h:863
std::multimap< uint32, SpawnMetadata const * > SpawnGroupLinkContainer
Definition ObjectMgr.h:508
std::multimap< uint32, SpawnMetadata const * > SpawnTrackingLinkContainer
Definition ObjectMgr.h:511
std::pair< GraveyardContainer::const_iterator, GraveyardContainer::const_iterator > GraveyardMapBounds
Definition ObjectMgr.h:847
std::multimap< uint32, ScriptInfo > ScriptMap
Definition ObjectMgr.h:412
std::unordered_map< uint32, std::string > RealmNameContainer
Definition ObjectMgr.h:852
SkillRangeType GetSkillRangeType(SkillRaceClassInfoEntry const *rcEntry)
std::pair< SpellScriptsContainer::iterator, SpellScriptsContainer::iterator > SpellScriptsBounds
Definition ObjectMgr.h:415
std::unordered_map< uint32, ItemTemplate > ItemTemplateContainer
Definition ObjectMgr.h:516
std::unordered_map< ObjectGuid::LowType, CreatureData > CreatureDataContainer
Definition ObjectMgr.h:491
ScriptMapMap * GetScriptsMapByType(ScriptsType type)
Definition ObjectMgr.cpp:99
std::unordered_map< uint32, CreatureLocale > CreatureLocaleContainer
Definition ObjectMgr.h:514
ScriptCommands
Definition ObjectMgr.h:98
@ SCRIPT_COMMAND_EMOTE
Definition ObjectMgr.h:100
@ SCRIPT_COMMAND_CREATE_ITEM
Definition ObjectMgr.h:116
@ SCRIPT_COMMAND_DESPAWN_SELF
Definition ObjectMgr.h:117
@ SCRIPT_COMMAND_CLOSE_DOOR
Definition ObjectMgr.h:111
@ SCRIPT_COMMAND_CAST_SPELL
Definition ObjectMgr.h:114
@ SCRIPT_COMMAND_RESPAWN_GAMEOBJECT
Definition ObjectMgr.h:108
@ SCRIPT_COMMAND_QUEST_EXPLORED
Definition ObjectMgr.h:106
@ SCRIPT_COMMAND_ACTIVATE_OBJECT
Definition ObjectMgr.h:112
@ SCRIPT_COMMAND_TALK
Definition ObjectMgr.h:99
@ SCRIPT_COMMAND_OPEN_DOOR
Definition ObjectMgr.h:110
@ SCRIPT_COMMAND_EQUIP
Definition ObjectMgr.h:125
@ SCRIPT_COMMAND_PLAYMOVIE
Definition ObjectMgr.h:128
@ SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT
Definition ObjectMgr.h:120
@ SCRIPT_COMMAND_PLAY_ANIMKIT
Definition ObjectMgr.h:130
@ SCRIPT_COMMAND_TELEPORT_TO
Definition ObjectMgr.h:105
@ SCRIPT_COMMAND_FIELD_SET_DEPRECATED
Definition ObjectMgr.h:101
@ SCRIPT_COMMAND_MOVE_TO
Definition ObjectMgr.h:102
@ SCRIPT_COMMAND_FLAG_REMOVE_DEPRECATED
Definition ObjectMgr.h:104
@ SCRIPT_COMMAND_TEMP_SUMMON_CREATURE
Definition ObjectMgr.h:109
@ SCRIPT_COMMAND_MOVEMENT
Definition ObjectMgr.h:129
@ SCRIPT_COMMAND_KILL_CREDIT
Definition ObjectMgr.h:107
@ SCRIPT_COMMAND_KILL
Definition ObjectMgr.h:121
@ SCRIPT_COMMAND_LOAD_PATH
Definition ObjectMgr.h:119
@ SCRIPT_COMMAND_ORIENTATION
Definition ObjectMgr.h:124
@ SCRIPT_COMMAND_PLAY_SOUND
Definition ObjectMgr.h:115
@ SCRIPT_COMMAND_MODEL
Definition ObjectMgr.h:126
@ SCRIPT_COMMAND_CLOSE_GOSSIP
Definition ObjectMgr.h:127
@ SCRIPT_COMMAND_REMOVE_AURA
Definition ObjectMgr.h:113
@ SCRIPT_COMMAND_FLAG_SET_DEPRECATED
Definition ObjectMgr.h:103
std::unordered_map< std::pair< uint32, Difficulty >, CellObjectGuidsMap > MapObjectGuids
Definition ObjectMgr.h:479
std::unordered_map< uint32, GameObjectTemplateAddon > GameObjectTemplateAddonContainer
Definition ObjectMgr.h:502
std::string GetScriptCommandName(ScriptCommands command)
std::unordered_map< std::pair< ObjectGuid::LowType, Difficulty >, CreatureStaticFlagsOverride > CreatureStaticFlagsOverrideMap
Definition ObjectMgr.h:499
QueryDataGroup
Definition ObjectMgr.h:949
@ QUERY_DATA_CREATURES
Definition ObjectMgr.h:950
@ QUERY_DATA_QUESTS
Definition ObjectMgr.h:953
@ QUERY_DATA_GAMEOBJECTS
Definition ObjectMgr.h:951
@ QUERY_DATA_ITEMS
Definition ObjectMgr.h:952
@ QUERY_DATA_ALL
Definition ObjectMgr.h:956
@ QUERY_DATA_POIS
Definition ObjectMgr.h:954
std::list< MailLevelReward > MailLevelRewardList
Definition ObjectMgr.h:695
std::unordered_map< uint32, QuestPOIData > QuestPOIContainer
Definition ObjectMgr.h:828
std::map< std::tuple< uint32, Difficulty, uint32 >, CellObjectGuidsMap > MapPersonalObjectGuids
Definition ObjectMgr.h:480
std::multimap< uint32, GraveyardData > GraveyardContainer
Definition ObjectMgr.h:846
std::unordered_map< uint32, std::vector< QuestObjective const * > > SpawnTrackingQuestObjectiveContainer
Definition ObjectMgr.h:512
std::multimap< uint32, GossipMenus > GossipMenusContainer
Definition ObjectMgr.h:776
std::unordered_map< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition ObjectMgr.h:501
std::unordered_map< uint32, std::vector< uint32 > > GameObjectQuestItemMap
Definition ObjectMgr.h:506
std::unordered_map< uint32, GameTele > GameTeleContainer
Definition ObjectMgr.h:166
std::unordered_map< ObjectGuid::LowType, GameObjectData > GameObjectDataContainer
Definition ObjectMgr.h:504
std::vector< uint32 > PlayerCreateInfoSpells
Definition ObjectMgr.h:635
std::unordered_map< uint32, PageTextLocale > PageTextLocaleContainer
Definition ObjectMgr.h:521
std::map< ObjectGuid, ObjectGuid > LinkedRespawnContainer
Definition ObjectMgr.h:487
std::unordered_map< uint32, CellObjectGuids > CellObjectGuidsMap
Definition ObjectMgr.h:478
std::unordered_map< uint32, SpawnTrackingTemplateData > SpawnTrackingTemplateContainer
Definition ObjectMgr.h:510
TC_GAME_API ScriptMapMap sEventScripts
Definition ObjectMgr.cpp:85
std::multimap< int32, uint32 > ExclusiveQuestGroups
Definition ObjectMgr.h:609
std::unordered_map< uint32, GameObjectLocale > GameObjectLocaleContainer
Definition ObjectMgr.h:515
std::unordered_map< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
Definition ObjectMgr.h:495
std::multimap< uint32, SpellClickInfo > SpellClickInfoContainer
Definition ObjectMgr.h:450
std::pair< GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator > GossipMenusMapBounds
Definition ObjectMgr.h:777
std::unordered_map< uint32, TrinityString > TrinityStringContainer
Definition ObjectMgr.h:557
std::unordered_map< ObjectGuid::LowType, CreatureAddon > CreatureAddonContainer
Definition ObjectMgr.h:492
std::unordered_map< uint32, GossipMenuAddon > GossipMenuAddonContainer
Definition ObjectMgr.h:780
std::multimap< uint32, std::pair< uint32, bool > > SpellScriptsContainer
Definition ObjectMgr.h:414
PlayerCreateMode
Definition ObjectMgr.h:613
std::vector< SkillRaceClassInfoEntry const * > PlayerCreateInfoSkills
Definition ObjectMgr.h:648
std::unordered_map< uint32, PointOfInterestLocale > PointOfInterestLocaleContainer
Definition ObjectMgr.h:539
std::unordered_map< ObjectGuid::LowType, GameObjectAddon > GameObjectAddonContainer
Definition ObjectMgr.h:505
std::unordered_map< uint32, QuestObjectivesLocale > QuestObjectivesLocaleContainer
Definition ObjectMgr.h:518
TC_GAME_API ScriptMapMap sSpellScripts
Definition ObjectMgr.cpp:84
std::unordered_map< uint32, CreatureTemplate > CreatureTemplateContainer
Definition ObjectMgr.h:488
std::map< uint32, PageText > PageTextContainer
Definition ObjectMgr.h:145
ChatType
Definition ObjectMgr.h:134
@ CHAT_TYPE_SAY
Definition ObjectMgr.h:135
@ CHAT_TYPE_BOSS_WHISPER
Definition ObjectMgr.h:140
@ CHAT_TYPE_TEXT_EMOTE
Definition ObjectMgr.h:137
@ CHAT_TYPE_BOSS_EMOTE
Definition ObjectMgr.h:138
@ CHAT_TYPE_END
Definition ObjectMgr.h:142
@ CHAT_TYPE_ZONE_YELL
Definition ObjectMgr.h:141
@ CHAT_TYPE_WHISPER
Definition ObjectMgr.h:139
@ CHAT_TYPE_YELL
Definition ObjectMgr.h:136
std::unordered_map< uint32, QuestOfferRewardLocale > QuestOfferRewardLocaleContainer
Definition ObjectMgr.h:519
std::multimap< uint32, GossipMenuItems > GossipMenuItemsContainer
Definition ObjectMgr.h:779
std::unordered_map< std::pair< uint32, Difficulty >, std::vector< uint32 > > CreatureQuestItemMap
Definition ObjectMgr.h:497
std::unordered_map< uint32, QuestTemplateLocale > QuestTemplateLocaleContainer
Definition ObjectMgr.h:517
std::map< uint32, ScriptMap > ScriptMapMap
Definition ObjectMgr.h:413
std::unordered_map< uint16, std::vector< InstanceSpawnGroupInfo > > InstanceSpawnGroupContainer
Definition ObjectMgr.h:509
SummonerType
Definition ObjectMgr.h:71
@ SUMMONER_TYPE_MAP
Definition ObjectMgr.h:74
@ SUMMONER_TYPE_CREATURE
Definition ObjectMgr.h:72
@ SUMMONER_TYPE_GAMEOBJECT
Definition ObjectMgr.h:73
std::string GetScriptsTableNameByType(ScriptsType type)
Definition ObjectMgr.cpp:87
std::unordered_map< uint32, DestructibleHitpoint > DestructibleHitpointContainer
Definition ObjectMgr.h:500
ExtendedPlayerName ExtractExtendedPlayerName(std::string const &name)
std::unordered_map< uint32, SpawnGroupTemplateData > SpawnGroupDataContainer
Definition ObjectMgr.h:507
std::unordered_map< uint32, VehicleSeatAddon > VehicleSeatAddonContainer
Definition ObjectMgr.h:524
std::pair< ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator > ExclusiveQuestGroupsBounds
Definition ObjectMgr.h:610
std::map< TempSummonGroupKey, std::vector< TempSummonData > > TempSummonDataContainer
Definition ObjectMgr.h:513
std::unordered_map< uint32, std::vector< uint32 > > UiMapQuestLinesMap
Definition ObjectMgr.h:522
std::unordered_map< ObjectGuid::LowType, GameObjectOverride > GameObjectOverrideContainer
Definition ObjectMgr.h:503
std::unordered_map< uint32, std::vector< uint32 > > UiMapQuestsMap
Definition ObjectMgr.h:523
std::unordered_map< uint32, QuestRequestItemsLocale > QuestRequestItemsLocaleContainer
Definition ObjectMgr.h:520
std::unordered_map< uint16, CreatureBaseStats > CreatureBaseStatsContainer
Definition ObjectMgr.h:493
ScriptsType
Definition ObjectMgr.h:169
@ SCRIPTS_WAYPOINT
Definition ObjectMgr.h:174
@ SCRIPTS_FIRST
Definition ObjectMgr.h:170
@ SCRIPTS_EVENT
Definition ObjectMgr.h:173
@ SCRIPTS_SPELL
Definition ObjectMgr.h:172
@ SCRIPTS_LAST
Definition ObjectMgr.h:176
std::array< std::unordered_map< uint32, QuestGreeting >, 2 > QuestGreetingContainer
Definition ObjectMgr.h:830
#define MAX_SKILL_STEP
Definition ObjectMgr.h:876
std::multimap< uint32, uint32 > QuestRelationsReverse
Definition ObjectMgr.h:560
TC_GAME_API bool normalizePlayerName(std::string &name)
std::multimap< uint32, uint32 > QuestRelations
Definition ObjectMgr.h:559
std::unordered_map< uint16, InstanceTemplate > InstanceTemplateContainer
Definition ObjectMgr.h:153
std::unordered_map< std::pair< uint32, uint32 >, GossipMenuItemsLocale > GossipMenuItemsLocaleContainer
Definition ObjectMgr.h:532
std::unordered_map< uint8, MailLevelRewardList > MailLevelRewardContainer
Definition ObjectMgr.h:696
std::unordered_map< uint32, std::vector< int32 > > CreatureQuestCurrenciesMap
Definition ObjectMgr.h:498
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Definition ObjectMgr.h:778
std::vector< PlayerCreateInfoAction > PlayerCreateInfoActions
Definition ObjectMgr.h:646
std::array< std::unordered_map< uint32, QuestGreetingLocale >, 2 > QuestGreetingLocaleContainer
Definition ObjectMgr.h:831
std::unordered_map< uint32, std::vector< float > > CreatureTemplateSparringContainer
Definition ObjectMgr.h:490
SkillRangeType
Definition ObjectMgr.h:868
@ SKILL_RANGE_MONO
Definition ObjectMgr.h:871
@ SKILL_RANGE_NONE
Definition ObjectMgr.h:873
@ SKILL_RANGE_LANGUAGE
Definition ObjectMgr.h:869
@ SKILL_RANGE_RANK
Definition ObjectMgr.h:872
@ SKILL_RANGE_LEVEL
Definition ObjectMgr.h:870
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
#define MAX_STATS
ResponseCodes
SpellClickUserTypes
PetNameInvalidReason
#define MAX_SPILLOVER_FACTIONS
SpawnObjectType
Definition SpawnData.h:35
std::map< ObjectGuid::LowType, VehicleAccessoryList > VehicleAccessoryContainer
std::vector< VehicleAccessory > VehicleAccessoryList
std::map< uint32, VehicleAccessoryList > VehicleAccessoryTemplateContainer
Class used to access individual fields of database query result.
Definition Field.h:94
Definition Item.h:179
Definition Map.h:225
static ObjectGuid const Empty
Definition ObjectGuid.h:314
uint64 LowType
Definition ObjectGuid.h:321
std::vector< NameMap::const_iterator > IndexToName
Definition ObjectMgr.h:1013
std::map< std::string, Entry, std::less<> > NameMap
Definition ObjectMgr.h:1010
GameObjectLocale const * GetGameObjectLocale(uint32 entry) const
Definition ObjectMgr.h:1456
std::unordered_map< uint32, AreaTriggerPolygon > _areaTriggerPolygons
Definition ObjectMgr.h:1718
std::set< uint32 > EventContainer
Definition ObjectMgr.h:988
SpawnGroupTemplateData const * GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1366
QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore
Definition ObjectMgr.h:1854
std::unordered_map< uint32, RepRewardRate > RepRewardRateContainer
Definition ObjectMgr.h:991
CharacterConversionMap FactionChangeAchievements
Definition ObjectMgr.h:1630
std::unordered_map< uint32, PhaseInfoStruct > _phaseInfoById
Definition ObjectMgr.h:1773
TempSummonDataContainer _tempSummonDataStore
Stores temp summon data grouped by summoner's entry, summoner's type and group id.
Definition ObjectMgr.h:1848
QuestRelations _creatureQuestInvolvedRelations
Definition ObjectMgr.h:1740
SpawnTrackingTemplateContainer _spawnTrackingDataStore
Definition ObjectMgr.h:1844
std::vector< uint32 > const * GetSpawnGroupsForMap(uint32 mapId) const
Definition ObjectMgr.h:1370
VehicleAccessoryContainer _vehicleAccessoryStore
Definition ObjectMgr.h:1759
GameObjectTemplateAddonContainer _gameObjectTemplateAddonStore
Definition ObjectMgr.h:1838
TrinityString const * GetTrinityString(uint32 entry) const
Definition ObjectMgr.h:1510
std::unordered_map< uint32, std::vector< PhaseAreaInfo > > _phaseInfoByArea
Definition ObjectMgr.h:1775
VehicleSeatAddon const * GetVehicleSeatAddon(uint32 seatId) const
Definition ObjectMgr.h:1647
QuestObjectivesByIdContainer _questObjectives
Definition ObjectMgr.h:1703
MapPersonalObjectGuids _mapPersonalObjectGuidsStore
Definition ObjectMgr.h:1817
PointOfInterest const * GetPointOfInterest(uint32 id) const
Definition ObjectMgr.h:1173
QuestRelations * GetGOQuestRelationMapHACK()
Definition ObjectMgr.h:1196
std::unordered_map< uint32, QuestObjective const * > QuestObjectivesByIdContainer
Definition ObjectMgr.h:980
SceneTemplateContainer _sceneTemplateStore
Definition ObjectMgr.h:1872
GameTeleContainer _gameTeleStore
Definition ObjectMgr.h:1749
std::unordered_map< std::pair< Races, Classes >, std::unique_ptr< PlayerInfo > > _playerInfo
Definition ObjectMgr.h:1800
CreatureQuestCurrenciesMap _creatureQuestCurrenciesStore
Definition ObjectMgr.h:1829
HalfNameContainer _petHalfName1
Definition ObjectMgr.h:1814
std::unordered_map< uint32, TerrainSwapInfo > _terrainSwapInfoById
Definition ObjectMgr.h:1774
std::set< std::wstring > ReservedNamesContainer
Definition ObjectMgr.h:1746
CreatureTemplateSparringContainer _creatureTemplateSparringStore
Definition ObjectMgr.h:1824
std::map< std::tuple< uint32, uint32, uint32 >, uint32 > _creatureDefaultTrainers
Definition ObjectMgr.h:1866
ReputationOnKillEntry const * GetReputationOnKilEntry(uint32 id) const
Definition ObjectMgr.h:1154
InstanceTemplateContainer const & GetInstanceTemplates() const
Definition ObjectMgr.h:1058
QuestContainer const & GetQuestTemplates() const
Definition ObjectMgr.h:1088
SpellScriptsContainer _spellScriptsStore
Definition ObjectMgr.h:1755
SpawnGroupDataContainer _spawnGroupDataStore
Definition ObjectMgr.h:1840
CreatureDataContainer _creatureDataStore
Definition ObjectMgr.h:1818
uint32 GetCreatureDefaultTrainer(uint32 creatureId) const
Definition ObjectMgr.h:1552
std::unordered_set< uint32 > const * GetQuestsForAreaTrigger(uint32 Trigger_ID) const
Definition ObjectMgr.h:1097
QuestRelations _goQuestRelations
Definition ObjectMgr.h:1736
CreatureBaseStatsContainer _creatureBaseStatsStore
Definition ObjectMgr.h:1793
CreatureLocale const * GetCreatureLocale(uint32 entry) const
Definition ObjectMgr.h:1441
ScriptNameContainer _scriptNamesStore
Definition ObjectMgr.h:1751
std::map< uint32, int32 > FishingBaseSkillContainer
Definition ObjectMgr.h:1808
TavernAreaTriggerContainer _tavernAreaTriggerStore
Definition ObjectMgr.h:1711
std::unordered_map< uint32, std::vector< TerrainSwapInfo * > > const & GetTerrainSwaps() const
Definition ObjectMgr.h:1770
QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1202
SpawnTrackingQuestObjectiveContainer _spawnTrackingQuestObjectiveStore
Definition ObjectMgr.h:1846
PageTextLocaleContainer _pageTextLocaleStore
Definition ObjectMgr.h:1856
EquipmentInfoContainer _equipmentInfoStore
Definition ObjectMgr.h:1831
std::set< uint32 > GameObjectForQuestContainer
Definition ObjectMgr.h:1708
ObjectGuid::LowType _gameObjectSpawnId
Definition ObjectMgr.h:1695
std::unordered_map< uint64, AccessRequirement > AccessRequirementContainer
Definition ObjectMgr.h:986
AccessRequirementContainer _accessRequirementStore
Definition ObjectMgr.h:1719
QuestGreetingLocaleContainer _questGreetingLocaleStore
Definition ObjectMgr.h:1715
std::unordered_map< uint32, SkillTiersEntry > _skillTiers
Definition ObjectMgr.h:1810
CreatureTemplateContainer _creatureTemplateStore
Definition ObjectMgr.h:1819
SpawnTrackingLinkContainer _spawnTrackingMapStore
Definition ObjectMgr.h:1845
CreatureDataContainer const & GetAllCreatureData() const
Definition ObjectMgr.h:1426
CharacterConversionMap FactionChangeReputation
Definition ObjectMgr.h:1634
QuestRequestItemsLocaleContainer _questRequestItemsLocaleStore
Definition ObjectMgr.h:1855
std::unordered_map< uint32, Trainer::Trainer > _trainers
Definition ObjectMgr.h:1865
std::map< HighGuid, ObjectGuidGenerator > _guidGenerators
Definition ObjectMgr.h:1700
std::unordered_map< int32, PlayerChoiceLocale > _playerChoiceLocales
Definition ObjectMgr.h:1860
ObjectMgr(ObjectMgr &&)=delete
std::unordered_map< int32, PlayerChoice > _playerChoices
Definition ObjectMgr.h:1849
ObjectGuid GetLinkedRespawnGuid(ObjectGuid spawnId) const
Definition ObjectMgr.h:1435
QuestRelationResult GetQuestRelationsFrom(QuestRelations const &map, uint32 key, bool onlyActive) const
Definition ObjectMgr.h:1782
QuestGreetingContainer _questGreetingStore
Definition ObjectMgr.h:1714
SpawnGroupTemplateData const * GetLegacySpawnGroup() const
Definition ObjectMgr.h:1368
PlayerChoiceLocale const * GetPlayerChoiceLocale(int32 ChoiceID) const
Definition ObjectMgr.h:1504
UiMapQuestLinesMap _uiMapQuestLinesStore
Definition ObjectMgr.h:1874
std::set< uint32 > _transportMaps
Definition ObjectMgr.h:1881
std::unordered_map< ObjectGuid::LowType, CreatureMovementData > _creatureMovementOverrides
Definition ObjectMgr.h:1825
GraveyardContainer GraveyardStore
Definition ObjectMgr.h:1608
std::unordered_map< uint32, RepSpilloverTemplate > RepSpilloverTemplateContainer
Definition ObjectMgr.h:993
GameObjectDataContainer const & GetAllGameObjectData() const
Definition ObjectMgr.h:1447
GameObjectTemplateContainer _gameObjectTemplateStore
Definition ObjectMgr.h:1837
std::vector< TempSummonData > const * GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
Definition ObjectMgr.h:1407
InstanceSpawnGroupContainer _instanceSpawnGroupStore
Definition ObjectMgr.h:1843
EventScriptContainer _eventScriptStore
Definition ObjectMgr.h:1723
std::unordered_map< uint32, PointOfInterest > PointOfInterestContainer
Definition ObjectMgr.h:995
ObjectGuidGenerator & GetGenerator()
Definition ObjectMgr.h:1351
std::unordered_map< uint8, RaceUnlockRequirement > _raceUnlockRequirementStore
Definition ObjectMgr.h:1868
std::unordered_map< uint32, std::unordered_set< uint32 > > QuestAreaTriggerContainer
Definition ObjectMgr.h:1706
bool IsGameObjectForQuests(uint32 entry) const
Definition ObjectMgr.h:1112
Trinity::IteratorPair< GossipMenuItemsContainer::const_iterator > GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1591
GameObjectData const * GetGameObjectData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1448
bool IsValidEvent(uint32 eventId) const
Definition ObjectMgr.h:1117
QuestRelationsReverse _creatureQuestInvolvedRelationsReverse
Definition ObjectMgr.h:1741
ItemTemplateContainer _itemTemplateStore
Definition ObjectMgr.h:1851
QuestObjectivesLocale const * GetQuestObjectivesLocale(uint32 entry) const
Definition ObjectMgr.h:1480
GameObjectDataContainer _gameObjectDataStore
Definition ObjectMgr.h:1834
GossipMenusContainer _gossipMenusStore
Definition ObjectMgr.h:1729
GossipMenuItemsLocale const * GetGossipMenuItemsLocale(uint32 menuId, uint32 optionId) const
Definition ObjectMgr.h:1492
static std::string_view GetLocaleString(std::vector< std::string > const &data, LocaleConstant locale)
Definition ObjectMgr.h:1611
QuestTemplateLocale const * GetQuestLocale(uint32 entry) const
Definition ObjectMgr.h:1462
CreatureLocaleContainer _creatureLocaleStore
Definition ObjectMgr.h:1833
std::map< uint32, uint32 > CharacterConversionMap
Definition ObjectMgr.h:1028
Trinity::IteratorPair< GossipMenuItemsContainer::iterator > GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1595
LocaleConstant GetDBCLocaleIndex() const
Definition ObjectMgr.h:1519
std::atomic< uint32 > _hiPetNumber
Definition ObjectMgr.h:1693
std::unordered_map< int32, JumpChargeParams > _jumpChargeParams
Definition ObjectMgr.h:1877
std::unordered_map< uint32, std::vector< uint32 > > _spawnGroupsByMap
Definition ObjectMgr.h:1841
std::atomic< uint64 > _mailId
Definition ObjectMgr.h:1692
PointOfInterestLocaleContainer _pointOfInterestLocaleStore
Definition ObjectMgr.h:1858
InstanceTemplateContainer _instanceTemplateStore
Definition ObjectMgr.h:1764
QuestRelations _goQuestInvolvedRelations
Definition ObjectMgr.h:1737
QuestAreaTriggerContainer _questAreaTriggerStore
Definition ObjectMgr.h:1710
FishingBaseSkillContainer _fishingBaseForAreaStore
Definition ObjectMgr.h:1809
bool IsTransportMap(uint32 mapId) const
Definition ObjectMgr.h:1645
PhaseNameContainer _phaseNameStore
Definition ObjectMgr.h:1879
Trinity::IteratorPair< SpawnGroupLinkContainer::const_iterator > GetSpawnMetadataForGroup(uint32 groupId) const
Definition ObjectMgr.h:1369
QuestOfferRewardLocale const * GetQuestOfferRewardLocale(uint32 entry) const
Definition ObjectMgr.h:1468
RaceUnlockRequirement const * GetRaceUnlockRequirement(uint8 race) const
Definition ObjectMgr.h:1661
RepRewardRate const * GetRepRewardRate(uint32 factionId) const
Definition ObjectMgr.h:1145
ObjectGuid::LowType _creatureSpawnId
Definition ObjectMgr.h:1694
AreaTriggerContainer _areaTriggerStore
Definition ObjectMgr.h:1716
Trinity::IteratorPair< QuestRelationsReverse::const_iterator > GetCreatureQuestInvolvedRelationReverseBounds(uint32 questId) const
Definition ObjectMgr.h:1203
CreatureTemplateContainer const & GetCreatureTemplates() const
Definition ObjectMgr.h:1041
GameObjectQuestItemMap const * GetGameObjectQuestItemMap() const
Definition ObjectMgr.h:1076
MapObjectGuids _mapObjectGuidsStore
Definition ObjectMgr.h:1816
CreatureAddonContainer _creatureAddonStore
Definition ObjectMgr.h:1822
PageTextLocale const * GetPageTextLocale(uint32 entry) const
Definition ObjectMgr.h:1486
char const * GetTrinityStringForDBCLocale(uint32 entry) const
Definition ObjectMgr.h:1518
QuestRequestItemsLocale const * GetQuestRequestItemsLocale(uint32 entry) const
Definition ObjectMgr.h:1474
PetLevelInfoContainer _petInfoStore
Definition ObjectMgr.h:1796
GameObjectForQuestContainer _gameObjectForQuestStore
Definition ObjectMgr.h:1712
MailLevelRewardContainer _mailLevelRewardStore
Definition ObjectMgr.h:1791
VehicleAccessoryTemplateContainer _vehicleTemplateAccessoryStore
Definition ObjectMgr.h:1758
LocaleConstant DBCLocaleIndex
Definition ObjectMgr.h:1761
GameObjectTemplateContainer const & GetGameObjectTemplates() const
Definition ObjectMgr.h:1032
std::map< uint32, uint32 > BaseXPContainer
Definition ObjectMgr.h:1805
ExclusiveQuestGroupsBounds GetExclusiveQuestGroupBounds(int32 exclusiveGroupId) const
Definition ObjectMgr.h:1205
VendorItemData const * GetNpcVendorItemList(uint32 entry) const
Definition ObjectMgr.h:1558
HalfNameContainer _petHalfName0
Definition ObjectMgr.h:1813
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string_view &value)
Definition ObjectMgr.h:1624
GossipMenuAddonContainer _gossipMenuAddonStore
Definition ObjectMgr.h:1731
NpcTextContainer _npcTextStore
Definition ObjectMgr.h:1713
QuestContainer _questTemplates
Definition ObjectMgr.h:1701
std::vector< Quest const * > _questTemplatesAutoPush
Definition ObjectMgr.h:1702
CharacterConversionMap FactionChangeSpells
Definition ObjectMgr.h:1635
CreatureTemplateAddonContainer _creatureTemplateAddonStore
Definition ObjectMgr.h:1823
std::unordered_map< uint32, VehicleTemplate > _vehicleTemplateStore
Definition ObjectMgr.h:1757
PointOfInterestLocale const * GetPointOfInterestLocale(uint32 id) const
Definition ObjectMgr.h:1498
GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore
Definition ObjectMgr.h:1857
BaseXPContainer _baseXPTable
Definition ObjectMgr.h:1806
GossipMenusMapBoundsNonConst GetGossipMenusMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1586
CharacterConversionMap FactionChangeItemsAllianceToHorde
Definition ObjectMgr.h:1631
std::unordered_map< uint32, std::unique_ptr< PetLevelInfo[] > > PetLevelInfoContainer
Definition ObjectMgr.h:1795
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string &value)
Definition ObjectMgr.h:1618
AreaTriggerScriptContainer _areaTriggerScriptStore
Definition ObjectMgr.h:1717
MailLevelReward const * GetMailLevelReward(uint8 level, uint8 race) const
Definition ObjectMgr.h:1378
QuestRelations _creatureQuestRelations
Definition ObjectMgr.h:1739
RealmNameContainer _realmNameStore
Definition ObjectMgr.h:1870
Trinity::IteratorPair< SpawnTrackingLinkContainer::const_iterator > GetSpawnMetadataForSpawnTracking(uint32 spawnTrackingId) const
Definition ObjectMgr.h:1374
void GetTaxiPath(uint32 source, uint32 destination, std::vector< uint32 > &path, uint32 &cost)
SceneTemplate const * GetSceneTemplate(uint32 sceneId) const
Definition ObjectMgr.h:1673
std::vector< uint32 > const * GetGameObjectQuestItemList(uint32 id) const
Definition ObjectMgr.h:1069
UiMapQuestsMap _uiMapQuestsStore
Definition ObjectMgr.h:1875
std::vector< InstanceSpawnGroupInfo > const * GetInstanceSpawnGroupsForMap(uint32 mapId) const
Definition ObjectMgr.h:1371
CreatureStaticFlagsOverrideMap _creatureStaticFlagsOverrideStore
Definition ObjectMgr.h:1830
CharacterConversionMap FactionChangeItemsHordeToAlliance
Definition ObjectMgr.h:1632
std::unordered_map< uint32, NpcText > NpcTextContainer
Definition ObjectMgr.h:1705
ObjectMgr(ObjectMgr const &)=delete
RepOnKillContainer _repOnKillStore
Definition ObjectMgr.h:1726
QuestObjective const * GetQuestObjective(uint32 questObjectiveId) const
Definition ObjectMgr.h:1091
SpawnGroupLinkContainer _spawnGroupMapStore
Definition ObjectMgr.h:1842
std::unordered_map< uint32, std::vector< TerrainSwapInfo * > > _terrainSwapInfoByMap
Definition ObjectMgr.h:1776
uint64 _equipmentSetGuid
Definition ObjectMgr.h:1691
RepSpilloverTemplateContainer _repSpilloverTemplateStore
Definition ObjectMgr.h:1727
SpawnMetadata const * GetSpawnMetadata(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1416
QuestRelationResult GetGOQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1197
SpawnGroupTemplateData const * GetDefaultSpawnGroup() const
Definition ObjectMgr.h:1367
CreatureModelContainer _creatureModelStore
Definition ObjectMgr.h:1820
LinkedRespawnContainer _linkedRespawnStore
Definition ObjectMgr.h:1832
std::vector< uint32 > PlayerXPperLevel
Definition ObjectMgr.h:1802
Trinity::IteratorPair< QuestRelationsReverse::const_iterator > GetGOQuestInvolvedRelationReverseBounds(uint32 questId) const
Definition ObjectMgr.h:1199
std::map< uint32, std::vector< std::string > > HalfNameContainer
Definition ObjectMgr.h:1812
uint32 _auctionId
Definition ObjectMgr.h:1690
std::unordered_map< uint32, uint32 > EventScriptContainer
Definition ObjectMgr.h:989
GossipMenusMapBounds GetGossipMenusMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1581
GameObjectLocaleContainer _gameObjectLocaleStore
Definition ObjectMgr.h:1835
GameObjectAddonContainer _gameObjectAddonStore
Definition ObjectMgr.h:1826
QuestObjectivesLocaleContainer _questObjectivesLocaleStore
Definition ObjectMgr.h:1853
GameTele const * GetGameTele(uint32 id) const
Definition ObjectMgr.h:1539
PlayerXPperLevel _playerXPperLevel
Definition ObjectMgr.h:1803
CacheVendorItemContainer _cacheVendorItemStore
Definition ObjectMgr.h:1864
std::vector< RaceClassAvailability > _classExpansionRequirementStore
Definition ObjectMgr.h:1869
QuestRelationsReverse _goQuestInvolvedRelationsReverse
Definition ObjectMgr.h:1738
QuestRelationResult GetCreatureQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1201
std::vector< RaceClassAvailability > const & GetClassExpansionRequirements() const
Definition ObjectMgr.h:1669
CreatureData const * GetCreatureData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1427
std::set< uint32 > TavernAreaTriggerContainer
Definition ObjectMgr.h:1707
PointOfInterestContainer _pointsOfInterestStore
Definition ObjectMgr.h:1732
std::vector< QuestObjective const * > const * GetSpawnTrackingQuestObjectiveList(uint32 spawnTrackingId) const
Definition ObjectMgr.h:1375
RepRewardRateContainer _repRewardRateStore
Definition ObjectMgr.h:1725
EventContainer _eventStore
Definition ObjectMgr.h:1722
CharacterConversionMap FactionChangeTitles
Definition ObjectMgr.h:1636
std::unordered_map< uint32, ReputationOnKillEntry > RepOnKillContainer
Definition ObjectMgr.h:992
std::unordered_map< uint8, RaceUnlockRequirement > const & GetRaceUnlockRequirements() const
Definition ObjectMgr.h:1660
std::unordered_map< uint32, AreaTriggerTeleport const * > AreaTriggerContainer
Definition ObjectMgr.h:982
VehicleSeatAddonContainer _vehicleSeatAddonStore
Definition ObjectMgr.h:1882
QuestTemplateLocaleContainer _questTemplateLocaleStore
Definition ObjectMgr.h:1852
PageTextContainer _pageTextStore
Definition ObjectMgr.h:1763
bool IsTavernAreaTrigger(uint32 Trigger_ID) const
Definition ObjectMgr.h:1107
std::unordered_map< uint32, uint32 > AreaTriggerScriptContainer
Definition ObjectMgr.h:984
SpawnGroupTemplateData const * GetSpawnGroupData(uint32 groupId) const
Definition ObjectMgr.h:1365
ItemTemplateContainer const & GetItemTemplateStore() const
Definition ObjectMgr.h:1056
QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1198
GameObjectQuestItemMap _gameObjectQuestItemStore
Definition ObjectMgr.h:1827
ExclusiveQuestGroups _exclusiveQuestGroups
Definition ObjectMgr.h:1743
GossipMenuAddon const * GetGossipMenuAddon(uint32 menuId) const
Definition ObjectMgr.h:1599
GameTeleContainer const & GetGameTeleMap() const
Definition ObjectMgr.h:1547
CharacterConversionMap FactionChangeQuests
Definition ObjectMgr.h:1633
Trinity::IteratorPair< SpellClickInfoContainer::const_iterator > GetSpellClickInfoMapBounds(uint32 creature_id) const
Definition ObjectMgr.h:1576
CreatureQuestItemMap _creatureQuestItemStore
Definition ObjectMgr.h:1828
TrinityStringContainer _trinityStringStore
Definition ObjectMgr.h:1862
QuestPOIContainer _questPOIStore
Definition ObjectMgr.h:1734
RepSpilloverTemplate const * GetRepSpilloverTemplate(uint32 factionId) const
Definition ObjectMgr.h:1164
DestructibleHitpointContainer _destructibleHitpointStore
Definition ObjectMgr.h:1836
SpellClickInfoContainer _spellClickInfoStore
Definition ObjectMgr.h:1753
ReservedNamesContainer _reservedNamesStore
Definition ObjectMgr.h:1747
std::vector< Quest const * > const & GetQuestTemplatesAutoPush() const
Definition ObjectMgr.h:1089
QuestRelations * GetCreatureQuestRelationMapHACK()
Definition ObjectMgr.h:1200
GossipMenuItemsContainer _gossipMenuItemsStore
Definition ObjectMgr.h:1730
std::unordered_map< uint32, WorldSafeLocsEntry > _worldSafeLocs
Definition ObjectMgr.h:1720
GameObjectOverrideContainer _gameObjectOverrideStore
Definition ObjectMgr.h:1839
std::unordered_map< uint32, CreatureSummonedData > _creatureSummonedDataStore
Definition ObjectMgr.h:1821
void SetDBCLocaleIndex(LocaleConstant locale)
Definition ObjectMgr.h:1520
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Quest > > QuestContainer
Definition ObjectMgr.h:979
Utility class to enable range for loop syntax for multimap.equal_range uses.
Definition Unit.h:635
auto MapEqualRange(M &map, typename M::key_type const &key)
STL namespace.
std::string questFailedText
Definition ObjectMgr.h:469
std::vector< Position > Vertices
Definition ObjectMgr.h:456
Optional< float > Height
Definition ObjectMgr.h:457
CellGuidSet gameobjects
Definition ObjectMgr.h:476
CellGuidSet creatures
Definition ObjectMgr.h:475
uint8 MinActiveExpansionLevel
Definition ObjectMgr.h:933
uint8 AccountExpansionLevel
Definition ObjectMgr.h:932
uint8 ActiveExpansionLevel
Definition ObjectMgr.h:931
std::string Realm
Definition ObjectMgr.h:900
std::string Name
Definition ObjectMgr.h:899
ExtendedPlayerName(std::string const &name, std::string const &realmName)
Definition ObjectMgr.h:898
float position_y
Definition ObjectMgr.h:158
float orientation
Definition ObjectMgr.h:160
float position_x
Definition ObjectMgr.h:157
uint32 mapId
Definition ObjectMgr.h:161
std::string name
Definition ObjectMgr.h:162
float position_z
Definition ObjectMgr.h:159
std::wstring wnameLow
Definition ObjectMgr.h:163
int32 FriendshipFactionID
Definition ObjectMgr.h:772
int32 LfgDungeonsID
Definition ObjectMgr.h:773
std::vector< std::string > BoxText
Definition ObjectMgr.h:529
std::vector< std::string > OptionText
Definition ObjectMgr.h:528
Optional< int32 > SpellID
Definition ObjectMgr.h:758
uint32 BoxBroadcastTextID
Definition ObjectMgr.h:757
std::string OptionText
Definition ObjectMgr.h:747
ConditionsReference Conditions
Definition ObjectMgr.h:760
int32 GossipOptionID
Definition ObjectMgr.h:744
uint32 ActionMenuID
Definition ObjectMgr.h:751
uint32 OrderIndex
Definition ObjectMgr.h:745
Optional< int32 > GossipNpcOptionID
Definition ObjectMgr.h:753
Optional< int32 > OverrideIconID
Definition ObjectMgr.h:759
uint32 ActionPoiID
Definition ObjectMgr.h:752
GossipOptionNpc OptionNpc
Definition ObjectMgr.h:746
std::string BoxText
Definition ObjectMgr.h:756
GossipOptionFlags Flags
Definition ObjectMgr.h:750
uint32 OptionBroadcastTextID
Definition ObjectMgr.h:748
ConditionsReference Conditions
Definition ObjectMgr.h:767
uint32 TextID
Definition ObjectMgr.h:766
uint32 MenuID
Definition ObjectMgr.h:765
uint32 safeLocId
Definition ObjectMgr.h:842
ConditionsReference Conditions
Definition ObjectMgr.h:843
uint32 senderEntry
Definition ObjectMgr.h:692
MailLevelReward(Trinity::RaceMask< uint64 > _raceMask, uint32 _mailTemplateId, uint32 _senderEntry)
Definition ObjectMgr.h:688
Trinity::RaceMask< uint64 > raceMask
Definition ObjectMgr.h:690
uint32 mailTemplateId
Definition ObjectMgr.h:691
Entry(uint32 id, bool isScriptDatabaseBound)
Definition ObjectMgr.h:1003
uint8 Flags
Definition ObjectMgr.h:67
std::string Text
Definition ObjectMgr.h:64
uint32 NextPageID
Definition ObjectMgr.h:65
int32 PlayerConditionID
Definition ObjectMgr.h:66
uint16 health
Definition ObjectMgr.h:680
uint16 armor
Definition ObjectMgr.h:682
uint16 stats[MAX_STATS]
Definition ObjectMgr.h:679
uint16 mana
Definition ObjectMgr.h:681
PhaseAreaInfo(PhaseInfoStruct const *phaseInfo)
Definition ObjectMgr.h:921
std::unordered_set< uint32 > SubAreaExclusions
Definition ObjectMgr.h:924
ConditionContainer Conditions
Definition ObjectMgr.h:925
PhaseInfoStruct const * PhaseInfo
Definition ObjectMgr.h:923
std::unordered_set< uint32 > Areas
Definition ObjectMgr.h:914
bool IsAllowedInArea(uint32 areaId) const
std::unordered_map< int32, PlayerChoiceResponseLocale > Responses
Definition ObjectMgr.h:554
std::vector< std::string > Question
Definition ObjectMgr.h:553
std::vector< std::string > Confirmation
Definition ObjectMgr.h:548
std::vector< std::string > SubHeader
Definition ObjectMgr.h:545
std::vector< std::string > Header
Definition ObjectMgr.h:544
std::vector< std::string > Description
Definition ObjectMgr.h:547
std::vector< std::string > Answer
Definition ObjectMgr.h:543
std::vector< std::string > ButtonTooltip
Definition ObjectMgr.h:546
PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type)
Definition ObjectMgr.h:639
PlayerCreateInfoItem(uint32 id, uint32 amount)
Definition ObjectMgr.h:622
Optional< ObjectGuid::LowType > TransportGuid
Definition ObjectMgr.h:656
Optional< uint32 > introMovieId
Definition ObjectMgr.h:669
PlayerCreateInfoActions action
Definition ObjectMgr.h:666
PlayerCreateInfoSpells castSpells[size_t(PlayerCreateMode::Max)]
Definition ObjectMgr.h:665
ItemContext itemContext
Definition ObjectMgr.h:662
std::unique_ptr< PlayerLevelInfo[]> levelInfo
Definition ObjectMgr.h:674
PlayerCreateInfoSkills skills
Definition ObjectMgr.h:667
Optional< uint32 > introSceneIdNPE
Definition ObjectMgr.h:671
Optional< CreatePosition > createPositionNPE
Definition ObjectMgr.h:660
Optional< uint32 > introSceneId
Definition ObjectMgr.h:670
PlayerCreateInfoSpells customSpells
Definition ObjectMgr.h:664
CreatePosition createPosition
Definition ObjectMgr.h:659
PlayerCreateInfoItems item
Definition ObjectMgr.h:663
int32 stats[MAX_STATS]
Definition ObjectMgr.h:632
std::vector< std::string > Name
Definition ObjectMgr.h:536
std::string Name
Definition ObjectMgr.h:738
uint32 Importance
Definition ObjectMgr.h:736
int32 NavigationPlayerConditionID
Definition ObjectMgr.h:804
QuestPOIBlobData(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, int32 playerConditionID, int32 navigationPlayerConditionID, int32 spawnTrackingID, std::vector< QuestPOIBlobPoint > points, bool alwaysAllowMergingBlobs)
Definition ObjectMgr.h:811
int32 PlayerConditionID
Definition ObjectMgr.h:803
std::vector< QuestPOIBlobPoint > Points
Definition ObjectMgr.h:806
int32 QuestObjectiveID
Definition ObjectMgr.h:796
int32 SpawnTrackingID
Definition ObjectMgr.h:805
bool AlwaysAllowMergingBlobs
Definition ObjectMgr.h:807
QuestPOIBlobPoint(int32 x, int32 y, int32 z)
Definition ObjectMgr.h:789
std::vector< uint8 > QueryDataBuffer
Definition ObjectMgr.h:825
int32 QuestID
Definition ObjectMgr.h:821
void InitializeQueryData()
std::vector< QuestPOIBlobData > Blobs
Definition ObjectMgr.h:822
QuestRelations::const_iterator _it
Definition ObjectMgr.h:591
value_type const & reference
Definition ObjectMgr.h:571
value_type const * pointer
Definition ObjectMgr.h:570
bool operator==(Iterator const &other) const
Definition ObjectMgr.h:580
Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
Definition ObjectMgr.h:574
value_type operator*() const
Definition ObjectMgr.h:585
QuestRelations::const_iterator _end
Definition ObjectMgr.h:591
std::forward_iterator_tag iterator_category
Definition ObjectMgr.h:568
QuestRelations::mapped_type value_type
Definition ObjectMgr.h:569
bool HasQuest(uint32 questId) const
QuestRelationResult(std::pair< QuestRelations::const_iterator, QuestRelations::const_iterator > range, bool onlyActive)
Definition ObjectMgr.h:596
Iterator begin() const
Definition ObjectMgr.h:599
QuestRelations::const_iterator _end
Definition ObjectMgr.h:605
QuestRelations::const_iterator _begin
Definition ObjectMgr.h:605
Iterator end() const
Definition ObjectMgr.h:600
std::vector< ClassAvailability > Classes
Definition ObjectMgr.h:939
Definition Realm.h:139
float questMonthlyRate
Definition ObjectMgr.h:704
float questWeeklyRate
Definition ObjectMgr.h:703
float questDailyRate
Definition ObjectMgr.h:702
float questRepeatableRate
Definition ObjectMgr.h:705
float spellRate
Definition ObjectMgr.h:707
float questRate
Definition ObjectMgr.h:701
float creatureRate
Definition ObjectMgr.h:706
uint32 faction_rank[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:727
uint32 faction[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:725
float faction_rate[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:726
uint32 SceneId
Definition ObjectMgr.h:856
EnumFlag< SceneFlag > PlaybackFlags
Definition ObjectMgr.h:857
uint32 ScriptId
Definition ObjectMgr.h:860
uint32 ScenePackageId
Definition ObjectMgr.h:858
float Orientation
Definition ObjectMgr.h:273
uint32 Flags
Definition ObjectMgr.h:230
struct ScriptInfo::@270::@296 Movement
struct ScriptInfo::@270::@273 Talk
float Unused3
Definition ObjectMgr.h:373
uint32 FieldID
Definition ObjectMgr.h:242
ScriptsType type
Definition ObjectMgr.h:214
uint32 Unused2
Definition ObjectMgr.h:363
uint32 QuestID
Definition ObjectMgr.h:278
float SearchRadius
Definition ObjectMgr.h:327
struct ScriptInfo::@270::@280 KillCredit
struct ScriptInfo::@270::@287 CreateItem
struct ScriptInfo::@270::@289 LoadPath
int32 TextID
Definition ObjectMgr.h:231
struct ScriptInfo::@270::@293 Equip
struct ScriptInfo::@270::@290 CallScript
uint32 MovementType
Definition ObjectMgr.h:398
uint32 MovementDistance
Definition ObjectMgr.h:399
struct ScriptInfo::@270::@278 TeleportTo
float DestX
Definition ObjectMgr.h:252
uint32 ItemEntry
Definition ObjectMgr.h:338
struct ScriptInfo::@270::@285 CastSpell
uint32 ChatType
Definition ObjectMgr.h:229
struct ScriptInfo::@270::@295 PlayMovie
uint32 SoundID
Definition ObjectMgr.h:332
uint32 id
Definition ObjectMgr.h:215
struct ScriptInfo::@270::@272 Raw
uint32 delay
Definition ObjectMgr.h:216
int32 Unused1
Definition ObjectMgr.h:268
float fData[4]
Definition ObjectMgr.h:224
uint32 ScriptID
Definition ObjectMgr.h:356
uint32 ModelID
Definition ObjectMgr.h:386
struct ScriptInfo::@270::@275 FieldSet
uint32 FieldValue
Definition ObjectMgr.h:243
struct ScriptInfo::@270::@291 Kill
float PosY
Definition ObjectMgr.h:301
ScriptCommands command
Definition ObjectMgr.h:217
uint32 Unused1
Definition ObjectMgr.h:248
float DestY
Definition ObjectMgr.h:253
uint32 PathID
Definition ObjectMgr.h:349
uint32 AnimKitID
Definition ObjectMgr.h:405
uint32 MapID
Definition ObjectMgr.h:266
uint32 IsRepeatable
Definition ObjectMgr.h:350
uint32 nData[3]
Definition ObjectMgr.h:223
float Unused4
Definition ObjectMgr.h:374
int32 Path
Definition ObjectMgr.h:400
int32 RemoveCorpse
Definition ObjectMgr.h:364
float PosZ
Definition ObjectMgr.h:302
struct ScriptInfo::@270::@284 RemoveAura
uint32 ScriptType
Definition ObjectMgr.h:357
struct ScriptInfo::@270::@277 FlagToggle
uint32 ResetDelay
Definition ObjectMgr.h:310
struct ScriptInfo::@270::@282 TempSummonCreature
struct ScriptInfo::@270::@297 PlayAnimKit
uint32 DespawnDelay
Definition ObjectMgr.h:291
float PosX
Definition ObjectMgr.h:300
struct ScriptInfo::@270::@288 DespawnSelf
uint32 TravelTime
Definition ObjectMgr.h:249
uint32 Distance
Definition ObjectMgr.h:279
struct ScriptInfo::@270::@286 PlaySound
uint32 SpellID
Definition ObjectMgr.h:317
std::string GetDebugInfo() const
float DestZ
Definition ObjectMgr.h:254
float Unused5
Definition ObjectMgr.h:375
uint32 MovieID
Definition ObjectMgr.h:393
struct ScriptInfo::@270::@279 QuestExplored
struct ScriptInfo::@270::@276 MoveTo
int32 Unused2
Definition ObjectMgr.h:250
int32 CreatureEntry
Definition ObjectMgr.h:325
struct ScriptInfo::@270::@283 ToggleDoor
struct ScriptInfo::@270::@281 RespawnGameobject
uint32 EquipmentID
Definition ObjectMgr.h:381
uint32 GOGuid
Definition ObjectMgr.h:290
uint32 CreatureEntry
Definition ObjectMgr.h:284
uint32 Amount
Definition ObjectMgr.h:339
struct ScriptInfo::@270::@274 Emote
struct ScriptInfo::@270::@294 Model
uint32 EmoteID
Definition ObjectMgr.h:236
uint32 GetValueForTierIndex(uint32 tierIndex) const
uint32 Value[MAX_SKILL_STEP]
Definition ObjectMgr.h:881
static constexpr bool TypeHasData(SpawnObjectType type)
Definition SpawnData.h:113
SpawnGroupTemplateData const * spawnGroupData
Definition SpawnData.h:124
SpellClickUserTypes userType
Definition ObjectMgr.h:444
Stores data for temp summons.
Definition ObjectMgr.h:89
Milliseconds time
Despawn time, usable only with certain temp summon types.
Definition ObjectMgr.h:93
TempSummonType type
Summon type, see TempSummonType for available types.
Definition ObjectMgr.h:92
uint32 entry
Entry of summoned creature.
Definition ObjectMgr.h:90
Position pos
Position, where should be creature spawned.
Definition ObjectMgr.h:91
Key for storing temp summon data in TempSummonDataContainer.
Definition ObjectMgr.h:79
uint32 SummonerEntry
Summoner's entry.
Definition ObjectMgr.h:82
std::strong_ordering operator<=>(TempSummonGroupKey const &right) const =default
SummonerType Type
Summoner's type, see SummonerType for available types.
Definition ObjectMgr.h:83
uint8 SummonGroup
Summon's group id.
Definition ObjectMgr.h:84
std::vector< uint32 > UiMapPhaseIDs
Definition ObjectMgr.h:908
std::vector< std::string > Content
Definition ObjectMgr.h:484
Optional< ObjectGuid::LowType > TransportSpawnId
Definition ObjectMgr.h:837
WorldLocation Loc
Definition ObjectMgr.h:836