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 "FlatSet.h"
26#include "GameObjectData.h"
27#include "ItemTemplate.h"
28#include "IteratorPair.h"
29#include "MovementDefines.h"
30#include "NPCHandler.h"
31#include "ObjectDefines.h"
32#include "ObjectGuid.h"
34#include "PlayerChoice.h"
35#include "Position.h"
36#include "QuestDef.h"
37#include "RaceMask.h"
38#include "SceneDefines.h"
39#include "SharedDefines.h"
40#include "Trainer.h"
41#include "VehicleDefines.h"
42#include "UniqueTrackablePtr.h"
43#include <atomic>
44#include <iterator>
45#include <map>
46#include <unordered_map>
47
48class Item;
49class Unit;
50class Vehicle;
51class Map;
52enum class GossipOptionFlags : int32;
53enum class GossipOptionNpc : uint8;
55struct DeclinedName;
56struct FactionEntry;
57struct PlayerChoice;
58struct PlayerInfo;
59struct PlayerLevelInfo;
62
70
77
80{
81 std::strong_ordering operator<=>(TempSummonGroupKey const& right) const = default;
82
86};
87
96
97// DB scripting commands
99{
100 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
101 SCRIPT_COMMAND_EMOTE = 1, // source/target = Creature, datalong = emote id, datalong2 = 0: set emote state; > 0: play emote state
103 SCRIPT_COMMAND_MOVE_TO = 3, // source/target = Creature, datalong2 = time to reach, x/y/z = destination
106 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
107 SCRIPT_COMMAND_QUEST_EXPLORED = 7, // target/source = Player, target/source = GO/Creature, datalong = quest id, datalong2 = distance or 0
108 SCRIPT_COMMAND_KILL_CREDIT = 8, // target/source = Player, datalong = creature entry, datalong2 = 0: personal credit, 1: group credit
109 SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9, // source = WorldObject (summoner), datalong = GO guid, datalong2 = despawn delay
110 SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10, // source = WorldObject (summoner), datalong = creature entry, datalong2 = despawn delay, x/y/z = summon position, o = orientation
111 SCRIPT_COMMAND_OPEN_DOOR = 11, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
112 SCRIPT_COMMAND_CLOSE_DOOR = 12, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
113 SCRIPT_COMMAND_ACTIVATE_OBJECT = 13, // source = Unit, target = GO
114 SCRIPT_COMMAND_REMOVE_AURA = 14, // source (datalong2 != 0) or target (datalong2 == 0) = Unit, datalong = spell id
115 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
116 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)
117 SCRIPT_COMMAND_CREATE_ITEM = 17, // target/source = Player, datalong = item entry, datalong2 = amount
118 SCRIPT_COMMAND_DESPAWN_SELF = 18, // target/source = Creature, datalong = despawn delay
119
120 SCRIPT_COMMAND_LOAD_PATH = 20, // source = Unit, datalong = path id, datalong2 = is repeatable
121 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)
122 SCRIPT_COMMAND_KILL = 22, // source/target = Creature, dataint = remove corpse attribute
123
124 // TrinityCore only
125 SCRIPT_COMMAND_ORIENTATION = 30, // source = Unit, target (datalong > 0) = Unit, datalong = > 0 turn source to face target, o = orientation
126 SCRIPT_COMMAND_EQUIP = 31, // soucre = Creature, datalong = equipment id
127 SCRIPT_COMMAND_MODEL = 32, // source = Creature, datalong = model id
128 SCRIPT_COMMAND_CLOSE_GOSSIP = 33, // source = Player
129 SCRIPT_COMMAND_PLAYMOVIE = 34, // source = Player, datalong = movie id
130 SCRIPT_COMMAND_MOVEMENT = 35, // source = Creature, datalong = MovementType, datalong2 = MovementDistance (wander_distance f.ex.), dataint = pathid
131 SCRIPT_COMMAND_PLAY_ANIMKIT = 36 // source = Creature, datalong = AnimKit id
133
145
146typedef std::map<uint32, PageText> PageTextContainer;
147
153
154typedef std::unordered_map<uint16, InstanceTemplate> InstanceTemplateContainer;
155
157{
163 std::string name;
164 std::wstring wnameLow;
165};
166
167typedef std::unordered_map<uint32, GameTele> GameTeleContainer;
168
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;
417
418std::string GetScriptsTableNameByType(ScriptsType type);
420std::string GetScriptCommandName(ScriptCommands command);
421
423{
424 enum
425 {
426 FLAG_ACTIVATE_SPAWN = 0x01,
427 FLAG_BLOCK_SPAWN = 0x02,
428 FLAG_ALLIANCE_ONLY = 0x04,
429 FLAG_HORDE_ONLY = 0x08,
430
431 FLAG_ALL = (FLAG_ACTIVATE_SPAWN | FLAG_BLOCK_SPAWN | FLAG_ALLIANCE_ONLY | FLAG_HORDE_ONLY)
432 };
437};
438
440{
444
445 // helpers
446 bool IsFitToRequirements(Unit const* clicker, Unit const* clickee) const;
447};
448
449typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoContainer;
450
452
454{
455 std::vector<Position> Vertices;
457};
458
470
477typedef std::unordered_map<uint32/*grid_id*/, GridObjectGuids> GridObjectGuidsMap;
478typedef std::unordered_map<std::pair<uint32 /*mapId*/, Difficulty>, GridObjectGuidsMap> MapObjectGuids;
479typedef std::map<std::tuple<uint32/*mapId*/, Difficulty, uint32 /*phaseId*/>, GridObjectGuidsMap> MapPersonalObjectGuids;
480
482{
483 std::vector<std::string> Content;
484};
485
486typedef std::map<ObjectGuid, ObjectGuid> LinkedRespawnContainer;
487typedef std::unordered_map<uint32, CreatureTemplate> CreatureTemplateContainer;
488typedef std::unordered_map<uint32, CreatureAddon> CreatureTemplateAddonContainer;
489typedef std::unordered_map<uint32, std::vector<float>> CreatureTemplateSparringContainer;
490typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer;
491typedef std::unordered_map<ObjectGuid::LowType, CreatureAddon> CreatureAddonContainer;
492typedef std::unordered_map<uint16, CreatureBaseStats> CreatureBaseStatsContainer;
493typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal;
494typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer;
495typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer;
496typedef std::unordered_map<std::pair<uint32, Difficulty>, std::vector<uint32>> CreatureQuestItemMap;
497typedef std::unordered_map<uint32, std::vector<int32>> CreatureQuestCurrenciesMap;
498typedef std::unordered_map<std::pair<ObjectGuid::LowType, Difficulty>, CreatureStaticFlagsOverride> CreatureStaticFlagsOverrideMap;
499typedef std::unordered_map<uint32, DestructibleHitpoint> DestructibleHitpointContainer;
500typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer;
501typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer;
502typedef std::unordered_map<ObjectGuid::LowType, GameObjectOverride> GameObjectOverrideContainer;
503typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer;
504typedef std::unordered_map<ObjectGuid::LowType, GameObjectAddon> GameObjectAddonContainer;
505typedef std::unordered_map<uint32, std::vector<uint32>> GameObjectQuestItemMap;
506typedef std::unordered_map<uint32, SpawnGroupTemplateData> SpawnGroupDataContainer;
507typedef std::multimap<uint32, SpawnMetadata const*> SpawnGroupLinkContainer;
508typedef std::unordered_map<uint16, std::vector<InstanceSpawnGroupInfo>> InstanceSpawnGroupContainer;
509typedef std::unordered_map<uint32, SpawnTrackingTemplateData> SpawnTrackingTemplateContainer;
510typedef std::multimap<uint32, SpawnMetadata const*> SpawnTrackingLinkContainer;
511typedef std::unordered_map<uint32 /*spawnTrackingId*/, std::vector<QuestObjective const*>> SpawnTrackingQuestObjectiveContainer;
512typedef std::map<TempSummonGroupKey, std::vector<TempSummonData>> TempSummonDataContainer;
513typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
514typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
515typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer;
516typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer;
517typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer;
518typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
519typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;
520typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
521typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestLinesMap;
522typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestsMap;
523typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
524
526{
527 std::vector<std::string> OptionText;
528 std::vector<std::string> BoxText;
529};
530
531typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
532
534{
535 std::vector<std::string> Name;
536};
537
538typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
539
541{
542 std::vector<std::string> Answer;
543 std::vector<std::string> Header;
544 std::vector<std::string> SubHeader;
545 std::vector<std::string> ButtonTooltip;
546 std::vector<std::string> Description;
547 std::vector<std::string> Confirmation;
548};
549
551{
552 std::vector<std::string> Question;
553 std::unordered_map<int32 /*ResponseId*/, PlayerChoiceResponseLocale> Responses;
554};
555
556typedef std::unordered_map<uint32, TrinityString> TrinityStringContainer;
557
558typedef std::multimap<uint32, uint32> QuestRelations; // unit/go -> quest
559typedef std::multimap<uint32, uint32> QuestRelationsReverse; // quest -> unit/go
560
562{
563 public:
564 struct Iterator
565 {
566 public:
567 using iterator_category = std::forward_iterator_tag;
568 using value_type = QuestRelations::mapped_type;
569 using pointer = value_type const*;
570 using reference = value_type const&;
571 using difference_type = void;
572
573 Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
574 : _it(it), _end(end), _onlyActive(onlyActive)
575 {
576 skip();
577 }
578
579 bool operator==(Iterator const& other) const { return _it == other._it; }
580
581 Iterator& operator++() { ++_it; skip(); return *this; }
582 Iterator operator++(int) { Iterator t = *this; ++*this; return t; }
583
584 value_type operator*() const { return _it->second; }
585
586 private:
587 void skip() { if (_onlyActive) _skip(); }
588 void _skip();
589
590 QuestRelations::const_iterator _it, _end;
592 };
593
595 QuestRelationResult(std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> range, bool onlyActive)
596 : _begin(range.first), _end(range.second), _onlyActive(onlyActive) {}
597
598 Iterator begin() const { return { _begin, _end, _onlyActive }; }
599 Iterator end() const { return { _end, _end, _onlyActive }; }
600
601 bool HasQuest(uint32 questId) const;
602
603 private:
604 QuestRelations::const_iterator _begin, _end;
606};
607
608typedef std::multimap<int32, uint32> ExclusiveQuestGroups; // exclusiveGroupId -> quest
609typedef std::pair<ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator> ExclusiveQuestGroupsBounds;
610
612{
613 Normal = 0,
614 NPE = 1,
615
616 Max
617};
618
626
627typedef std::vector<PlayerCreateInfoItem> PlayerCreateInfoItems;
628
630{
632};
633
634typedef std::vector<uint32> PlayerCreateInfoSpells;
635
637{
638 PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) { }
639
643};
644
645typedef std::vector<PlayerCreateInfoAction> PlayerCreateInfoActions;
646
647typedef std::vector<SkillRaceClassInfoEntry const*> PlayerCreateInfoSkills;
648
649// existence checked by displayId != 0
675
683
693
694typedef std::list<MailLevelReward> MailLevelRewardList;
695typedef std::unordered_map<uint8, MailLevelRewardList> MailLevelRewardContainer;
696
697// We assume the rate is in general the same for all three types below, but chose to keep three for scalability and customization
699{
700 float questRate; // We allow rate = 0.0 in database. For this case, it means that
705 float creatureRate; // no reputation are given at all for this faction/rate type.
707};
708
721
728
739
761
768
774
775typedef std::multimap<uint32, GossipMenus> GossipMenusContainer;
776typedef std::pair<GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator> GossipMenusMapBounds;
777typedef std::pair<GossipMenusContainer::iterator, GossipMenusContainer::iterator> GossipMenusMapBoundsNonConst;
778typedef std::multimap<uint32, GossipMenuItems> GossipMenuItemsContainer;
779typedef std::unordered_map<uint32, GossipMenuAddon> GossipMenuAddonContainer;
780
782{
786
787 QuestPOIBlobPoint() : X(0), Y(0), Z(0) { }
788 QuestPOIBlobPoint(int32 x, int32 y, int32 z) : X(x), Y(y), Z(z) { }
789};
790
792{
805 std::vector<QuestPOIBlobPoint> Points;
807
810 QuestPOIBlobData(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority,
811 int32 flags, int32 worldEffectID, int32 playerConditionID, int32 navigationPlayerConditionID, int32 spawnTrackingID, std::vector<QuestPOIBlobPoint> points,
812 bool alwaysAllowMergingBlobs) : BlobIndex(blobIndex), ObjectiveIndex(objectiveIndex), QuestObjectiveID(questObjectiveID),
813 QuestObjectID(questObjectID), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
814 PlayerConditionID(playerConditionID), NavigationPlayerConditionID(navigationPlayerConditionID), SpawnTrackingID(spawnTrackingID), Points(std::move(points)),
815 AlwaysAllowMergingBlobs(alwaysAllowMergingBlobs) { }
816};
817
819{
821 std::vector<QuestPOIBlobData> Blobs;
822
823 void InitializeQueryData();
824 std::vector<uint8> QueryDataBuffer;
825};
826
827typedef std::unordered_map<uint32, QuestPOIData> QuestPOIContainer;
828
829typedef std::array<std::unordered_map<uint32, QuestGreeting>, 2> QuestGreetingContainer;
830typedef std::array<std::unordered_map<uint32, QuestGreetingLocale>, 2> QuestGreetingLocaleContainer;
831
838
844
845typedef std::multimap<uint32, GraveyardData> GraveyardContainer;
846typedef std::pair<GraveyardContainer::const_iterator, GraveyardContainer::const_iterator> GraveyardMapBounds;
847typedef std::pair<GraveyardContainer::iterator, GraveyardContainer::iterator> GraveyardMapBoundsNonConst;
848
849typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
850
851typedef std::unordered_map<uint32, std::string> RealmNameContainer;
852
861
862typedef std::unordered_map<uint32, SceneTemplate> SceneTemplateContainer;
863
864typedef std::unordered_map<uint32, std::string> PhaseNameContainer;
865
867{
869 SKILL_RANGE_LEVEL, // 1..max skill for level
870 SKILL_RANGE_MONO, // 1..1, grey monolite bar
871 SKILL_RANGE_RANK, // 1..skill for known rank
872 SKILL_RANGE_NONE // 0..0 always
874
875#define MAX_SKILL_STEP 16
876
878{
879 uint32 ID; // 0
881
882 uint32 GetValueForTierIndex(uint32 tierIndex) const;
883};
884
886
887#define MAX_PLAYER_NAME 12 // max allowed by client name length
888#define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
889#define MAX_PET_NAME 12 // max allowed by client name length
890#define MAX_CHARTER_NAME 24 // max allowed by client name length
891
892TC_GAME_API bool normalizePlayerName(std::string& name);
893#define SPAWNGROUP_MAP_UNSET 0xFFFFFFFF
894
896{
897 ExtendedPlayerName(std::string const& name, std::string const& realmName) : Name(name), Realm(realmName) { }
898 std::string Name;
899 std::string Realm;
900};
901
902ExtendedPlayerName ExtractExtendedPlayerName(std::string const& name);
903
905{
907 std::vector<uint32> UiMapPhaseIDs;
908};
909
911{
913 std::unordered_set<uint32> Areas;
914
915 bool IsAllowedInArea(uint32 areaId) const;
916};
917
919{
920 PhaseAreaInfo(PhaseInfoStruct const* phaseInfo) : PhaseInfo(phaseInfo) { }
921
923 std::unordered_set<uint32> SubAreaExclusions;
925};
926
934
940
942{
945 std::vector<ClassAvailability> Classes;
946};
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
1163 {
1164 RepSpilloverTemplateContainer::const_iterator itr = _repSpilloverTemplateStore.find(factionId);
1165 if (itr != _repSpilloverTemplateStore.end())
1166 return &itr->second;
1167
1168 return nullptr;
1169 }
1170
1172 {
1173 PointOfInterestContainer::const_iterator itr = _pointsOfInterestStore.find(id);
1174 if (itr != _pointsOfInterestStore.end())
1175 return &itr->second;
1176 return nullptr;
1177 }
1178
1179 QuestPOIData const* GetQuestPOIData(int32 questId);
1180
1181 std::vector<uint32> const* GetUiMapQuestLinesList(uint32 uiMapId) const;
1182 std::vector<uint32> const* GetUiMapQuestsList(uint32 uiMapId) const;
1183
1184 VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const;
1185 VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
1186
1187 void LoadQuests();
1188 void LoadQuestStartersAndEnders();
1189 void LoadGameobjectQuestStarters();
1190 void LoadGameobjectQuestEnders();
1191 void LoadCreatureQuestStarters();
1192 void LoadCreatureQuestEnders();
1193
1194 QuestRelations* GetGOQuestRelationMapHACK() { return &_goQuestRelations; }
1195 QuestRelationResult GetGOQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestRelations, entry, true); }
1196 QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestInvolvedRelations, entry, false); }
1197 Trinity::IteratorPair<QuestRelationsReverse::const_iterator> GetGOQuestInvolvedRelationReverseBounds(uint32 questId) const { return _goQuestInvolvedRelationsReverse.equal_range(questId); }
1198 QuestRelations* GetCreatureQuestRelationMapHACK() { return &_creatureQuestRelations; }
1199 QuestRelationResult GetCreatureQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestRelations, entry, true); }
1200 QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestInvolvedRelations, entry, false); }
1201 Trinity::IteratorPair<QuestRelationsReverse::const_iterator> GetCreatureQuestInvolvedRelationReverseBounds(uint32 questId) const { return _creatureQuestInvolvedRelationsReverse.equal_range(questId); }
1202
1204 {
1205 return _exclusiveQuestGroups.equal_range(exclusiveGroupId);
1206 }
1207
1208 std::vector<Difficulty> ParseSpawnDifficulties(std::string_view difficultyString, std::string_view table, ObjectGuid::LowType spawnId, uint32 mapId, std::set<Difficulty> const& mapDifficulties);
1209
1210 bool LoadTrinityStrings();
1211
1212 void LoadEventScripts();
1213
1214 void LoadSpellScriptNames();
1215 void ValidateSpellScripts();
1216
1217 void LoadCreatureClassLevelStats();
1218 void LoadCreatureLocales();
1219 void LoadCreatureTemplates();
1220 void LoadCreatureTemplateAddons();
1221 void LoadCreatureTemplateSparring();
1222 void LoadCreatureTemplate(Field* fields);
1223 void LoadCreatureTemplateDifficulty();
1224 void LoadCreatureTemplateGossip();
1225 void LoadCreatureTemplateResistances();
1226 void LoadCreatureTemplateSpells();
1227 void LoadCreatureTemplateModels();
1228 void LoadCreatureSummonedData();
1229 void CheckCreatureTemplate(CreatureTemplate const* cInfo);
1230 void CheckCreatureMovement(char const* table, uint64 id, CreatureMovementData& creatureMovement);
1231 void LoadGameObjectQuestItems();
1232 void LoadCreatureQuestItems();
1233 void LoadCreatureQuestCurrencies();
1234 void LoadCreatureStaticFlagsOverride();
1235 void LoadTempSummons();
1236 void LoadCreatures();
1237 void LoadLinkedRespawn();
1238 bool SetCreatureLinkedRespawn(ObjectGuid::LowType guid, ObjectGuid::LowType linkedGuid);
1239 void LoadCreatureAddons();
1240 void LoadGameObjectAddons();
1241 void LoadCreatureModelInfo();
1242 void LoadEquipmentTemplates();
1243 void LoadCreatureMovementOverrides();
1244 void LoadGameObjectLocales();
1245 void LoadGameObjects();
1246 void LoadSpawnGroupTemplates();
1247 void LoadSpawnGroups();
1248 void LoadInstanceSpawnGroups();
1249 void LoadItemTemplates();
1250 void LoadItemTemplateAddon();
1251 void LoadItemScriptNames();
1252 void LoadQuestTemplateLocale();
1253 void LoadQuestObjectivesLocale();
1254 void LoadQuestGreetingLocales();
1255 void LoadQuestOfferRewardLocale();
1256 void LoadQuestRequestItemsLocale();
1257 void LoadPageTextLocales();
1258 void LoadGossipMenuItemsLocales();
1259 void LoadPointOfInterestLocales();
1260 void LoadInstanceTemplate();
1261 void LoadMailLevelRewards();
1262 void LoadVehicleTemplateAccessories();
1263 void LoadVehicleTemplate();
1264 void LoadVehicleAccessories();
1265 void LoadVehicleSeatAddon();
1266
1267 void LoadNPCText();
1268
1269 void LoadAreaTriggerTeleports();
1270 void LoadAreaTriggerPolygons();
1271 void LoadAccessRequirements();
1272 void LoadQuestAreaTriggers();
1273 void LoadQuestGreetings();
1274 void LoadAreaTriggerScripts();
1275 void LoadTavernAreaTriggers();
1276 void LoadGameObjectForQuests();
1277
1278 void LoadPageTexts();
1279 PageText const* GetPageText(uint32 pageEntry);
1280
1281 void LoadPlayerInfo();
1282 void LoadPetLevelInfo();
1283 void LoadExplorationBaseXP();
1284 void LoadPetNames();
1285 void LoadPetNumber();
1286 void LoadFishingBaseSkillLevel();
1287 void LoadSkillTiers();
1288
1289 void LoadReputationRewardRate();
1290 void LoadReputationOnKill();
1291 void LoadReputationSpilloverTemplate();
1292
1293 void LoadPointsOfInterest();
1294 void LoadQuestPOI();
1295
1296 void LoadNPCSpellClickSpells();
1297
1298 void LoadGameTele();
1299
1300 void LoadGossipMenu();
1301 void LoadGossipMenuItems();
1302 void LoadGossipMenuAddon();
1303
1304 void LoadVendors();
1305 void LoadTrainers();
1306 void LoadCreatureTrainers();
1307
1308 void LoadPhases();
1309 void UnloadPhaseConditions();
1310
1311 void LoadTerrainSwapDefaults();
1312 void LoadTerrainWorldMaps();
1313 void LoadAreaPhases();
1314
1315 void LoadSceneTemplates();
1316
1317 void LoadPlayerChoices();
1318 void LoadPlayerChoicesLocale();
1319
1320 void LoadUiMapQuestLines();
1321 void LoadUiMapQuests();
1322
1323 void LoadSpawnTrackingTemplates();
1324 void LoadSpawnTrackingQuestObjectives();
1325 void LoadSpawnTrackings();
1326 void LoadSpawnTrackingStates();
1327
1328 void LoadJumpChargeParams();
1329 void LoadPhaseNames();
1330
1331 void InitializeQueriesData(QueryDataGroup mask);
1332
1333 std::string GeneratePetName(uint32 entry);
1334 uint32 GetBaseXP(uint8 level);
1335 uint32 GetXPForLevel(uint8 level) const;
1336
1337 int32 GetFishingBaseSkillLevel(AreaTableEntry const* areaEntry) const;
1338
1339 SkillTiersEntry const* GetSkillTier(uint32 skillTierId) const;
1340
1341 void ReturnOrDeleteOldMails(bool serverUp);
1342
1343 CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
1344
1345 void SetHighestGuids();
1346
1347 template<HighGuid type>
1349 {
1351 "Only global guid can be generated in ObjectMgr context");
1352 return GetGuidSequenceGenerator(type);
1353 }
1354
1355 uint32 GenerateAuctionID();
1356 uint64 GenerateEquipmentSetGuid();
1357 uint64 GenerateMailID();
1358 uint32 GeneratePetNumber();
1359 ObjectGuid::LowType GenerateCreatureSpawnId();
1360 ObjectGuid::LowType GenerateGameObjectSpawnId();
1361
1362 SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const { auto it = _spawnGroupDataStore.find(groupId); return it != _spawnGroupDataStore.end() ? &it->second : nullptr; }
1363 SpawnGroupTemplateData const* GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const { SpawnMetadata const* data = GetSpawnMetadata(type, spawnId); return data ? data->spawnGroupData : nullptr; }
1364 SpawnGroupTemplateData const* GetDefaultSpawnGroup() const { return &_spawnGroupDataStore.at(0); }
1365 SpawnGroupTemplateData const* GetLegacySpawnGroup() const { return &_spawnGroupDataStore.at(1); }
1367 std::vector<uint32> const* GetSpawnGroupsForMap(uint32 mapId) const { auto it = _spawnGroupsByMap.find(mapId); return it != _spawnGroupsByMap.end() ? &it->second : nullptr; }
1368 std::vector<InstanceSpawnGroupInfo> const* GetInstanceSpawnGroupsForMap(uint32 mapId) const { auto it = _instanceSpawnGroupStore.find(mapId); return it != _instanceSpawnGroupStore.end() ? &it->second : nullptr; }
1369
1370 SpawnTrackingTemplateData const* GetSpawnTrackingData(uint32 spawnTrackingId) const;
1372 std::vector<QuestObjective const*> const* GetSpawnTrackingQuestObjectiveList(uint32 spawnTrackingId) const { auto it = _spawnTrackingQuestObjectiveStore.find(spawnTrackingId); return it != _spawnTrackingQuestObjectiveStore.end() ? &it->second : nullptr; }
1373 bool IsQuestObjectiveForSpawnTracking(uint32 spawnTrackingId, uint32 questObjectiveId) const;
1374
1376 {
1377 MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
1378 if (map_itr == _mailLevelRewardStore.end())
1379 return nullptr;
1380
1381 for (auto const& mailLevelReward : map_itr->second)
1382 if (mailLevelReward.raceMask.HasRace(race))
1383 return &mailLevelReward;
1384
1385 return nullptr;
1386 }
1387
1388 GridObjectGuids const* GetGridObjectGuids(uint32 mapid, Difficulty spawnMode, uint32 gridId);
1389
1390 GridObjectGuidsMap const* GetMapObjectGuids(uint32 mapid, Difficulty spawnMode);
1391
1392 bool HasPersonalSpawns(uint32 mapid, Difficulty spawnMode, uint32 phaseId) const;
1393 GridObjectGuids const* GetCellPersonalObjectGuids(uint32 mapid, Difficulty spawnMode, uint32 phaseId, uint32 gridId) const;
1394
1404 std::vector<TempSummonData> const* GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
1405 {
1406 auto itr = _tempSummonDataStore.find({ .SummonerEntry = summonerId, .Type = summonerType, .SummonGroup = group });
1407 if (itr != _tempSummonDataStore.end())
1408 return &itr->second;
1409
1410 return nullptr;
1411 }
1412
1414 {
1415 if (SpawnData::TypeHasData(type))
1416 return GetSpawnData(type, spawnId);
1417 else
1418 return nullptr;
1419 }
1420
1421 SpawnData const* GetSpawnData(SpawnObjectType type, ObjectGuid::LowType spawnId) const;
1422 void OnDeleteSpawnData(SpawnData const* data);
1423 CreatureDataContainer const& GetAllCreatureData() const { return _creatureDataStore; }
1425 {
1426 CreatureDataContainer::const_iterator itr = _creatureDataStore.find(spawnId);
1427 if (itr == _creatureDataStore.end()) return nullptr;
1428 return &itr->second;
1429 }
1430 CreatureData& NewOrExistCreatureData(ObjectGuid::LowType spawnId);
1431 void DeleteCreatureData(ObjectGuid::LowType spawnId);
1433 {
1434 LinkedRespawnContainer::const_iterator itr = _linkedRespawnStore.find(spawnId);
1435 if (itr == _linkedRespawnStore.end()) return ObjectGuid::Empty;
1436 return itr->second;
1437 }
1439 {
1440 CreatureLocaleContainer::const_iterator itr = _creatureLocaleStore.find(entry);
1441 if (itr == _creatureLocaleStore.end()) return nullptr;
1442 return &itr->second;
1443 }
1444 GameObjectDataContainer const& GetAllGameObjectData() const { return _gameObjectDataStore; }
1446 {
1447 GameObjectDataContainer::const_iterator itr = _gameObjectDataStore.find(spawnId);
1448 if (itr == _gameObjectDataStore.end()) return nullptr;
1449 return &itr->second;
1450 }
1451 GameObjectData& NewOrExistGameObjectData(ObjectGuid::LowType spawnId);
1452 void DeleteGameObjectData(ObjectGuid::LowType spawnId);
1454 {
1455 GameObjectLocaleContainer::const_iterator itr = _gameObjectLocaleStore.find(entry);
1456 if (itr == _gameObjectLocaleStore.end()) return nullptr;
1457 return &itr->second;
1458 }
1460 {
1461 QuestTemplateLocaleContainer::const_iterator itr = _questTemplateLocaleStore.find(entry);
1462 if (itr == _questTemplateLocaleStore.end()) return nullptr;
1463 return &itr->second;
1464 }
1466 {
1467 auto itr = _questOfferRewardLocaleStore.find(entry);
1468 if (itr == _questOfferRewardLocaleStore.end()) return nullptr;
1469 return &itr->second;
1470 }
1472 {
1473 auto itr = _questRequestItemsLocaleStore.find(entry);
1474 if (itr == _questRequestItemsLocaleStore.end()) return nullptr;
1475 return &itr->second;
1476 }
1478 {
1479 QuestObjectivesLocaleContainer::const_iterator itr = _questObjectivesLocaleStore.find(entry);
1480 if (itr == _questObjectivesLocaleStore.end()) return nullptr;
1481 return &itr->second;
1482 }
1484 {
1485 PageTextLocaleContainer::const_iterator itr = _pageTextLocaleStore.find(entry);
1486 if (itr == _pageTextLocaleStore.end()) return nullptr;
1487 return &itr->second;
1488 }
1490 {
1491 auto itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionId));
1492 if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr;
1493 return &itr->second;
1494 }
1496 {
1497 PointOfInterestLocaleContainer::const_iterator itr = _pointOfInterestLocaleStore.find(id);
1498 if (itr == _pointOfInterestLocaleStore.end()) return nullptr;
1499 return &itr->second;
1500 }
1502 {
1503 auto itr = _playerChoiceLocales.find(ChoiceID);
1504 if (itr == _playerChoiceLocales.end()) return nullptr;
1505 return &itr->second;
1506 }
1508 {
1509 TrinityStringContainer::const_iterator itr = _trinityStringStore.find(entry);
1510 if (itr == _trinityStringStore.end())
1511 return nullptr;
1512 return &itr->second;
1513 }
1514 char const* GetTrinityString(uint32 entry, LocaleConstant locale) const;
1515 char const* GetTrinityStringForDBCLocale(uint32 entry) const { return GetTrinityString(entry, DBCLocaleIndex); }
1516 LocaleConstant GetDBCLocaleIndex() const { return DBCLocaleIndex; }
1517 void SetDBCLocaleIndex(LocaleConstant locale) { DBCLocaleIndex = locale; }
1518
1519 // grid objects
1520 void AddCreatureToGrid(CreatureData const* data);
1521 void RemoveCreatureFromGrid(CreatureData const* data);
1522 void AddGameobjectToGrid(GameObjectData const* data);
1523 void RemoveGameobjectFromGrid(GameObjectData const* data);
1524
1525 // reserved names
1526 void LoadReservedPlayersNames();
1527 bool IsReservedName(std::string_view name) const;
1528
1529 // name with valid structure and symbols
1530 static ResponseCodes CheckPlayerName(std::string_view name, LocaleConstant locale, bool create = false);
1531 static PetNameInvalidReason CheckPetName(std::string_view name);
1532 static bool IsValidCharterName(std::string_view name);
1533
1534 static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names);
1535
1536 GameTele const* GetGameTele(uint32 id) const
1537 {
1538 GameTeleContainer::const_iterator itr = _gameTeleStore.find(id);
1539 if (itr == _gameTeleStore.end()) return nullptr;
1540 return &itr->second;
1541 }
1542 GameTele const* GetGameTele(std::string_view name) const;
1543 GameTele const* GetGameTeleExactName(std::string_view name) const;
1544 GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; }
1545 bool AddGameTele(GameTele& data);
1546 bool DeleteGameTele(std::string_view name);
1547
1548 Trainer::Trainer const* GetTrainer(uint32 trainerId) const;
1550 {
1551 return GetCreatureTrainerForGossipOption(creatureId, 0, 0);
1552 }
1553 uint32 GetCreatureTrainerForGossipOption(uint32 creatureId, uint32 gossipMenuId, uint32 gossipOptionId) const;
1554
1556 {
1557 CacheVendorItemContainer::const_iterator iter = _cacheVendorItemStore.find(entry);
1558 if (iter == _cacheVendorItemStore.end())
1559 return nullptr;
1560
1561 return &iter->second;
1562 }
1563
1564 void AddVendorItem(uint32 entry, VendorItem const& vItem, bool persist = true); // for event
1565 bool RemoveVendorItem(uint32 entry, uint32 item, uint8 type, bool persist = true); // for event
1566 bool IsVendorItemValid(uint32 vendor_entry, VendorItem const& vItem, Player* player = nullptr, std::set<uint32>* skip_vendors = nullptr, uint32 ORnpcflag = 0) const;
1567
1568 std::unordered_set<std::string> GetAllDBScriptNames() const;
1569 std::string const& GetScriptName(uint32 id) const;
1570 bool IsScriptDatabaseBound(uint32 id) const;
1571 uint32 GetScriptId(std::string_view name, bool isDatabaseBound = true);
1572
1577
1579 {
1580 return _gossipMenusStore.equal_range(uiMenuId);
1581 }
1582
1584 {
1585 return _gossipMenusStore.equal_range(uiMenuId);
1586 }
1587
1597 {
1598 GossipMenuAddonContainer::const_iterator itr = _gossipMenuAddonStore.find(menuId);
1599 if (itr != _gossipMenuAddonStore.end())
1600 return &itr->second;
1601 return nullptr;
1602 }
1603
1604 // for wintergrasp only
1606
1607 static void AddLocaleString(std::string_view value, LocaleConstant localeConstant, std::vector<std::string>& data);
1608 static std::string_view GetLocaleString(std::vector<std::string> const& data, LocaleConstant locale)
1609 {
1610 if (locale < data.size())
1611 return data[locale];
1612 else
1613 return {};
1614 }
1615 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string& value)
1616 {
1617 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1618 value.assign(str);
1619 }
1620
1621 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string_view& value)
1622 {
1623 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1624 value = str;
1625 }
1626
1634
1635 void LoadFactionChangeAchievements();
1636 void LoadFactionChangeItems();
1637 void LoadFactionChangeQuests();
1638 void LoadFactionChangeReputations();
1639 void LoadFactionChangeSpells();
1640 void LoadFactionChangeTitles();
1641
1642 bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; }
1643
1645 {
1646 VehicleSeatAddonContainer::const_iterator itr = _vehicleSeatAddonStore.find(seatId);
1647 if (itr == _vehicleSeatAddonStore.end())
1648 return nullptr;
1649
1650 return &itr->second;
1651 }
1652
1653 void LoadRaceAndClassExpansionRequirements();
1654
1655 std::string GetPhaseName(uint32 phaseId) const;
1656
1657 std::vector<RaceClassAvailability> const& GetRaceClassRequirements() const { return _raceClassRequirementStore; }
1658 RaceUnlockRequirement const* GetRaceUnlockRequirement(uint8 raceId) const;
1659 ClassAvailability const* GetClassExpansionRequirement(uint8 raceId, uint8 classId) const;
1660 ClassAvailability const* GetClassExpansionRequirementFallback(uint8 classId) const;
1661
1663 {
1664 auto itr = _sceneTemplateStore.find(sceneId);
1665 if (itr != _sceneTemplateStore.end())
1666 return &itr->second;
1667
1668 return nullptr;
1669 }
1670
1671 PlayerChoice const* GetPlayerChoice(int32 choiceId) const;
1672
1673 JumpChargeParams const* GetJumpChargeParams(int32 id) const;
1674
1675 CreatureStaticFlagsOverride const* GetCreatureStaticFlagsOverride(ObjectGuid::LowType spawnId, Difficulty difficultyId) const;
1676
1677 private:
1678 // first free id for selected id type
1681 std::atomic<uint64> _mailId;
1682 std::atomic<uint32> _hiPetNumber;
1685
1686 // first free low guid for selected guid type
1687 ObjectGuidGenerator& GetGuidSequenceGenerator(HighGuid high);
1688
1689 std::map<HighGuid, ObjectGuidGenerator> _guidGenerators;
1691 std::vector<Quest const*> _questTemplatesAutoPush;
1693
1694 typedef std::unordered_map<uint32, NpcText> NpcTextContainer;
1695 typedef std::unordered_map<uint32, std::unordered_set<uint32>> QuestAreaTriggerContainer;
1696 typedef std::set<uint32> TavernAreaTriggerContainer;
1697 typedef std::set<uint32> GameObjectForQuestContainer;
1698
1707 std::unordered_map<uint32, AreaTriggerPolygon> _areaTriggerPolygons;
1709 std::unordered_map<uint32, WorldSafeLocsEntry> _worldSafeLocs;
1710
1713
1717
1722
1724
1731
1733
1734 //character reserved names
1735 typedef std::set<std::wstring> ReservedNamesContainer;
1737
1739
1741
1743
1745
1746 std::unordered_map<uint32, VehicleTemplate> _vehicleTemplateStore;
1749
1751
1754
1755 public:
1756 PhaseInfoStruct const* GetPhaseInfo(uint32 phaseId) const;
1757 std::vector<PhaseAreaInfo> const* GetPhasesForArea(uint32 areaId) const;
1758 TerrainSwapInfo const* GetTerrainSwapInfo(uint32 terrainSwapId) const;
1759 std::unordered_map<uint32, std::vector<TerrainSwapInfo*>> const& GetTerrainSwaps() const { return _terrainSwapInfoByMap; }
1760
1761 private:
1762 std::unordered_map<uint32, PhaseInfoStruct> _phaseInfoById;
1763 std::unordered_map<uint32, TerrainSwapInfo> _terrainSwapInfoById;
1764 std::unordered_map<uint32, std::vector<PhaseAreaInfo>> _phaseInfoByArea;
1765 std::unordered_map<uint32, std::vector<TerrainSwapInfo*>> _terrainSwapInfoByMap;
1766
1767 private:
1768 void LoadEventSet();
1769 void LoadScripts(ScriptsType type);
1770 void LoadQuestRelationsHelper(QuestRelations& map, QuestRelationsReverse* reverseMap, std::string const& table);
1771 QuestRelationResult GetQuestRelationsFrom(QuestRelations const& map, uint32 key, bool onlyActive) const { return { map.equal_range(key), onlyActive }; }
1772 void PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count);
1773
1774 template<GridGuidSet GridObjectGuids::*guids>
1775 void AddSpawnDataToGrid(SpawnData const* data);
1776
1777 template<GridGuidSet GridObjectGuids::*guids>
1778 void RemoveSpawnDataFromGrid(SpawnData const* data);
1779
1781
1783
1784 typedef std::unordered_map<uint32 /*creatureId*/, std::unique_ptr<PetLevelInfo[] /*level*/>> PetLevelInfoContainer;
1786
1787 void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const;
1788
1789 std::unordered_map<std::pair<Races, Classes>, std::unique_ptr<PlayerInfo>> _playerInfo;
1790
1791 typedef std::vector<uint32> PlayerXPperLevel; // [level]
1793
1794 typedef std::map<uint32, uint32> BaseXPContainer; // [area level][base xp]
1796
1797 typedef std::map<uint32, int32> FishingBaseSkillContainer; // [areaId][base skill level]
1799 std::unordered_map<uint32, SkillTiersEntry> _skillTiers;
1800
1801 typedef std::map<uint32, std::vector<std::string>> HalfNameContainer;
1804
1810 std::unordered_map<uint32, CreatureSummonedData> _creatureSummonedDataStore;
1814 std::unordered_map<ObjectGuid::LowType, CreatureMovementData> _creatureMovementOverrides;
1830 std::unordered_map<uint32, std::vector<uint32>> _spawnGroupsByMap;
1838 std::unordered_map<int32 /*choiceId*/, PlayerChoice> _playerChoices;
1839
1848
1849 std::unordered_map<int32, PlayerChoiceLocale> _playerChoiceLocales;
1850
1852
1854 std::unordered_map<uint32, Trainer::Trainer> _trainers;
1855 std::map<std::tuple<uint32, uint32, uint32>, uint32> _creatureDefaultTrainers;
1856
1857 std::vector<RaceClassAvailability> _raceClassRequirementStore;
1859
1861
1864
1865 std::unordered_map<int32, JumpChargeParams> _jumpChargeParams;
1866
1868
1869 std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
1871};
1872
1873#define sObjectMgr ObjectMgr::instance()
1874
1875#endif
LocaleConstant
Definition Common.h:51
std::vector< Condition > ConditionContainer
ItemContext
Definition DBCEnums.h:1324
Difficulty
Definition DBCEnums.h:935
#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:849
std::unordered_map< uint32, std::string > PhaseNameContainer
Definition ObjectMgr.h:864
std::unordered_map< uint8, EquipmentInfo > EquipmentInfoContainerInternal
Definition ObjectMgr.h:493
std::pair< GraveyardContainer::iterator, GraveyardContainer::iterator > GraveyardMapBoundsNonConst
Definition ObjectMgr.h:847
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:488
std::unordered_map< uint32, CreatureModelInfo > CreatureModelContainer
Definition ObjectMgr.h:495
std::vector< PlayerCreateInfoItem > PlayerCreateInfoItems
Definition ObjectMgr.h:627
std::unordered_map< uint32, SceneTemplate > SceneTemplateContainer
Definition ObjectMgr.h:862
std::multimap< uint32, SpawnMetadata const * > SpawnGroupLinkContainer
Definition ObjectMgr.h:507
std::multimap< uint32, SpawnMetadata const * > SpawnTrackingLinkContainer
Definition ObjectMgr.h:510
std::pair< GraveyardContainer::const_iterator, GraveyardContainer::const_iterator > GraveyardMapBounds
Definition ObjectMgr.h:846
std::unordered_map< std::pair< uint32, Difficulty >, GridObjectGuidsMap > MapObjectGuids
Definition ObjectMgr.h:478
std::multimap< uint32, ScriptInfo > ScriptMap
Definition ObjectMgr.h:412
std::unordered_map< uint32, std::string > RealmNameContainer
Definition ObjectMgr.h:851
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:515
std::unordered_map< ObjectGuid::LowType, CreatureData > CreatureDataContainer
Definition ObjectMgr.h:490
ScriptMapMap * GetScriptsMapByType(ScriptsType type)
Definition ObjectMgr.cpp:97
std::unordered_map< uint32, CreatureLocale > CreatureLocaleContainer
Definition ObjectMgr.h:513
ScriptCommands
Definition ObjectMgr.h:99
@ SCRIPT_COMMAND_EMOTE
Definition ObjectMgr.h:101
@ SCRIPT_COMMAND_CREATE_ITEM
Definition ObjectMgr.h:117
@ SCRIPT_COMMAND_DESPAWN_SELF
Definition ObjectMgr.h:118
@ SCRIPT_COMMAND_CLOSE_DOOR
Definition ObjectMgr.h:112
@ SCRIPT_COMMAND_CAST_SPELL
Definition ObjectMgr.h:115
@ SCRIPT_COMMAND_RESPAWN_GAMEOBJECT
Definition ObjectMgr.h:109
@ SCRIPT_COMMAND_QUEST_EXPLORED
Definition ObjectMgr.h:107
@ SCRIPT_COMMAND_ACTIVATE_OBJECT
Definition ObjectMgr.h:113
@ SCRIPT_COMMAND_TALK
Definition ObjectMgr.h:100
@ SCRIPT_COMMAND_OPEN_DOOR
Definition ObjectMgr.h:111
@ SCRIPT_COMMAND_EQUIP
Definition ObjectMgr.h:126
@ SCRIPT_COMMAND_PLAYMOVIE
Definition ObjectMgr.h:129
@ SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT
Definition ObjectMgr.h:121
@ SCRIPT_COMMAND_PLAY_ANIMKIT
Definition ObjectMgr.h:131
@ SCRIPT_COMMAND_TELEPORT_TO
Definition ObjectMgr.h:106
@ SCRIPT_COMMAND_FIELD_SET_DEPRECATED
Definition ObjectMgr.h:102
@ SCRIPT_COMMAND_MOVE_TO
Definition ObjectMgr.h:103
@ SCRIPT_COMMAND_FLAG_REMOVE_DEPRECATED
Definition ObjectMgr.h:105
@ SCRIPT_COMMAND_TEMP_SUMMON_CREATURE
Definition ObjectMgr.h:110
@ SCRIPT_COMMAND_MOVEMENT
Definition ObjectMgr.h:130
@ SCRIPT_COMMAND_KILL_CREDIT
Definition ObjectMgr.h:108
@ SCRIPT_COMMAND_KILL
Definition ObjectMgr.h:122
@ SCRIPT_COMMAND_LOAD_PATH
Definition ObjectMgr.h:120
@ SCRIPT_COMMAND_ORIENTATION
Definition ObjectMgr.h:125
@ SCRIPT_COMMAND_PLAY_SOUND
Definition ObjectMgr.h:116
@ SCRIPT_COMMAND_MODEL
Definition ObjectMgr.h:127
@ SCRIPT_COMMAND_CLOSE_GOSSIP
Definition ObjectMgr.h:128
@ SCRIPT_COMMAND_REMOVE_AURA
Definition ObjectMgr.h:114
@ SCRIPT_COMMAND_FLAG_SET_DEPRECATED
Definition ObjectMgr.h:104
std::unordered_map< uint32, GameObjectTemplateAddon > GameObjectTemplateAddonContainer
Definition ObjectMgr.h:501
std::string GetScriptCommandName(ScriptCommands command)
std::unordered_map< std::pair< ObjectGuid::LowType, Difficulty >, CreatureStaticFlagsOverride > CreatureStaticFlagsOverrideMap
Definition ObjectMgr.h:498
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:694
std::unordered_map< uint32, QuestPOIData > QuestPOIContainer
Definition ObjectMgr.h:827
std::multimap< uint32, GraveyardData > GraveyardContainer
Definition ObjectMgr.h:845
std::unordered_map< uint32, std::vector< QuestObjective const * > > SpawnTrackingQuestObjectiveContainer
Definition ObjectMgr.h:511
std::multimap< uint32, GossipMenus > GossipMenusContainer
Definition ObjectMgr.h:775
std::unordered_map< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition ObjectMgr.h:500
std::map< std::tuple< uint32, Difficulty, uint32 >, GridObjectGuidsMap > MapPersonalObjectGuids
Definition ObjectMgr.h:479
std::unordered_map< uint32, GridObjectGuids > GridObjectGuidsMap
Definition ObjectMgr.h:477
std::unordered_map< uint32, std::vector< uint32 > > GameObjectQuestItemMap
Definition ObjectMgr.h:505
std::unordered_map< uint32, GameTele > GameTeleContainer
Definition ObjectMgr.h:167
std::unordered_map< ObjectGuid::LowType, GameObjectData > GameObjectDataContainer
Definition ObjectMgr.h:503
std::vector< uint32 > PlayerCreateInfoSpells
Definition ObjectMgr.h:634
std::unordered_map< uint32, PageTextLocale > PageTextLocaleContainer
Definition ObjectMgr.h:520
std::map< ObjectGuid, ObjectGuid > LinkedRespawnContainer
Definition ObjectMgr.h:486
std::unordered_map< uint32, SpawnTrackingTemplateData > SpawnTrackingTemplateContainer
Definition ObjectMgr.h:509
TC_GAME_API ScriptMapMap sEventScripts
Definition ObjectMgr.cpp:84
std::multimap< int32, uint32 > ExclusiveQuestGroups
Definition ObjectMgr.h:608
std::unordered_map< uint32, GameObjectLocale > GameObjectLocaleContainer
Definition ObjectMgr.h:514
std::unordered_map< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
Definition ObjectMgr.h:494
std::multimap< uint32, SpellClickInfo > SpellClickInfoContainer
Definition ObjectMgr.h:449
Trinity::Containers::FlatSet< ObjectGuid::LowType > GridGuidSet
Definition ObjectMgr.h:471
std::pair< GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator > GossipMenusMapBounds
Definition ObjectMgr.h:776
std::unordered_map< uint32, TrinityString > TrinityStringContainer
Definition ObjectMgr.h:556
std::unordered_map< ObjectGuid::LowType, CreatureAddon > CreatureAddonContainer
Definition ObjectMgr.h:491
std::unordered_map< uint32, GossipMenuAddon > GossipMenuAddonContainer
Definition ObjectMgr.h:779
std::multimap< uint32, std::pair< uint32, bool > > SpellScriptsContainer
Definition ObjectMgr.h:414
PlayerCreateMode
Definition ObjectMgr.h:612
std::vector< SkillRaceClassInfoEntry const * > PlayerCreateInfoSkills
Definition ObjectMgr.h:647
std::unordered_map< uint32, PointOfInterestLocale > PointOfInterestLocaleContainer
Definition ObjectMgr.h:538
std::unordered_map< ObjectGuid::LowType, GameObjectAddon > GameObjectAddonContainer
Definition ObjectMgr.h:504
std::unordered_map< uint32, QuestObjectivesLocale > QuestObjectivesLocaleContainer
Definition ObjectMgr.h:517
std::unordered_map< uint32, CreatureTemplate > CreatureTemplateContainer
Definition ObjectMgr.h:487
std::map< uint32, PageText > PageTextContainer
Definition ObjectMgr.h:146
ChatType
Definition ObjectMgr.h:135
@ CHAT_TYPE_SAY
Definition ObjectMgr.h:136
@ CHAT_TYPE_BOSS_WHISPER
Definition ObjectMgr.h:141
@ CHAT_TYPE_TEXT_EMOTE
Definition ObjectMgr.h:138
@ CHAT_TYPE_BOSS_EMOTE
Definition ObjectMgr.h:139
@ CHAT_TYPE_END
Definition ObjectMgr.h:143
@ CHAT_TYPE_ZONE_YELL
Definition ObjectMgr.h:142
@ CHAT_TYPE_WHISPER
Definition ObjectMgr.h:140
@ CHAT_TYPE_YELL
Definition ObjectMgr.h:137
std::unordered_map< uint32, QuestOfferRewardLocale > QuestOfferRewardLocaleContainer
Definition ObjectMgr.h:518
std::multimap< uint32, GossipMenuItems > GossipMenuItemsContainer
Definition ObjectMgr.h:778
std::unordered_map< std::pair< uint32, Difficulty >, std::vector< uint32 > > CreatureQuestItemMap
Definition ObjectMgr.h:496
std::unordered_map< uint32, QuestTemplateLocale > QuestTemplateLocaleContainer
Definition ObjectMgr.h:516
std::map< uint32, ScriptMap > ScriptMapMap
Definition ObjectMgr.h:413
std::unordered_map< uint16, std::vector< InstanceSpawnGroupInfo > > InstanceSpawnGroupContainer
Definition ObjectMgr.h:508
SummonerType
Definition ObjectMgr.h:72
@ SUMMONER_TYPE_MAP
Definition ObjectMgr.h:75
@ SUMMONER_TYPE_CREATURE
Definition ObjectMgr.h:73
@ SUMMONER_TYPE_GAMEOBJECT
Definition ObjectMgr.h:74
std::string GetScriptsTableNameByType(ScriptsType type)
Definition ObjectMgr.cpp:86
std::unordered_map< uint32, DestructibleHitpoint > DestructibleHitpointContainer
Definition ObjectMgr.h:499
ExtendedPlayerName ExtractExtendedPlayerName(std::string const &name)
std::unordered_map< uint32, SpawnGroupTemplateData > SpawnGroupDataContainer
Definition ObjectMgr.h:506
std::unordered_map< uint32, VehicleSeatAddon > VehicleSeatAddonContainer
Definition ObjectMgr.h:523
std::pair< ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator > ExclusiveQuestGroupsBounds
Definition ObjectMgr.h:609
std::map< TempSummonGroupKey, std::vector< TempSummonData > > TempSummonDataContainer
Definition ObjectMgr.h:512
std::unordered_map< uint32, std::vector< uint32 > > UiMapQuestLinesMap
Definition ObjectMgr.h:521
std::unordered_map< ObjectGuid::LowType, GameObjectOverride > GameObjectOverrideContainer
Definition ObjectMgr.h:502
std::unordered_map< uint32, std::vector< uint32 > > UiMapQuestsMap
Definition ObjectMgr.h:522
std::unordered_map< uint32, QuestRequestItemsLocale > QuestRequestItemsLocaleContainer
Definition ObjectMgr.h:519
std::unordered_map< uint16, CreatureBaseStats > CreatureBaseStatsContainer
Definition ObjectMgr.h:492
ScriptsType
Definition ObjectMgr.h:170
@ SCRIPTS_WAYPOINT
Definition ObjectMgr.h:174
@ SCRIPTS_FIRST
Definition ObjectMgr.h:171
@ SCRIPTS_EVENT
Definition ObjectMgr.h:173
@ SCRIPTS_LAST
Definition ObjectMgr.h:176
std::array< std::unordered_map< uint32, QuestGreeting >, 2 > QuestGreetingContainer
Definition ObjectMgr.h:829
#define MAX_SKILL_STEP
Definition ObjectMgr.h:875
std::multimap< uint32, uint32 > QuestRelationsReverse
Definition ObjectMgr.h:559
TC_GAME_API bool normalizePlayerName(std::string &name)
std::multimap< uint32, uint32 > QuestRelations
Definition ObjectMgr.h:558
std::unordered_map< uint16, InstanceTemplate > InstanceTemplateContainer
Definition ObjectMgr.h:154
std::unordered_map< std::pair< uint32, uint32 >, GossipMenuItemsLocale > GossipMenuItemsLocaleContainer
Definition ObjectMgr.h:531
std::unordered_map< uint8, MailLevelRewardList > MailLevelRewardContainer
Definition ObjectMgr.h:695
std::unordered_map< uint32, std::vector< int32 > > CreatureQuestCurrenciesMap
Definition ObjectMgr.h:497
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Definition ObjectMgr.h:777
std::vector< PlayerCreateInfoAction > PlayerCreateInfoActions
Definition ObjectMgr.h:645
std::array< std::unordered_map< uint32, QuestGreetingLocale >, 2 > QuestGreetingLocaleContainer
Definition ObjectMgr.h:830
std::unordered_map< uint32, std::vector< float > > CreatureTemplateSparringContainer
Definition ObjectMgr.h:489
SkillRangeType
Definition ObjectMgr.h:867
@ SKILL_RANGE_MONO
Definition ObjectMgr.h:870
@ SKILL_RANGE_NONE
Definition ObjectMgr.h:872
@ SKILL_RANGE_LANGUAGE
Definition ObjectMgr.h:868
@ SKILL_RANGE_RANK
Definition ObjectMgr.h:871
@ SKILL_RANGE_LEVEL
Definition ObjectMgr.h:869
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:185
Definition Map.h:227
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:1453
std::unordered_map< uint32, AreaTriggerPolygon > _areaTriggerPolygons
Definition ObjectMgr.h:1707
std::set< uint32 > EventContainer
Definition ObjectMgr.h:988
SpawnGroupTemplateData const * GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1363
QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore
Definition ObjectMgr.h:1843
std::unordered_map< uint32, RepRewardRate > RepRewardRateContainer
Definition ObjectMgr.h:991
CharacterConversionMap FactionChangeAchievements
Definition ObjectMgr.h:1627
std::unordered_map< uint32, PhaseInfoStruct > _phaseInfoById
Definition ObjectMgr.h:1762
TempSummonDataContainer _tempSummonDataStore
Stores temp summon data grouped by summoner's entry, summoner's type and group id.
Definition ObjectMgr.h:1837
QuestRelations _creatureQuestInvolvedRelations
Definition ObjectMgr.h:1729
SpawnTrackingTemplateContainer _spawnTrackingDataStore
Definition ObjectMgr.h:1833
std::vector< uint32 > const * GetSpawnGroupsForMap(uint32 mapId) const
Definition ObjectMgr.h:1367
VehicleAccessoryContainer _vehicleAccessoryStore
Definition ObjectMgr.h:1748
GameObjectTemplateAddonContainer _gameObjectTemplateAddonStore
Definition ObjectMgr.h:1827
TrinityString const * GetTrinityString(uint32 entry) const
Definition ObjectMgr.h:1507
std::unordered_map< uint32, std::vector< PhaseAreaInfo > > _phaseInfoByArea
Definition ObjectMgr.h:1764
VehicleSeatAddon const * GetVehicleSeatAddon(uint32 seatId) const
Definition ObjectMgr.h:1644
QuestObjectivesByIdContainer _questObjectives
Definition ObjectMgr.h:1692
MapPersonalObjectGuids _mapPersonalObjectGuidsStore
Definition ObjectMgr.h:1806
PointOfInterest const * GetPointOfInterest(uint32 id) const
Definition ObjectMgr.h:1171
QuestRelations * GetGOQuestRelationMapHACK()
Definition ObjectMgr.h:1194
std::unordered_map< uint32, QuestObjective const * > QuestObjectivesByIdContainer
Definition ObjectMgr.h:980
SceneTemplateContainer _sceneTemplateStore
Definition ObjectMgr.h:1860
GameTeleContainer _gameTeleStore
Definition ObjectMgr.h:1738
std::unordered_map< std::pair< Races, Classes >, std::unique_ptr< PlayerInfo > > _playerInfo
Definition ObjectMgr.h:1789
CreatureQuestCurrenciesMap _creatureQuestCurrenciesStore
Definition ObjectMgr.h:1818
HalfNameContainer _petHalfName1
Definition ObjectMgr.h:1803
std::unordered_map< uint32, TerrainSwapInfo > _terrainSwapInfoById
Definition ObjectMgr.h:1763
std::set< std::wstring > ReservedNamesContainer
Definition ObjectMgr.h:1735
CreatureTemplateSparringContainer _creatureTemplateSparringStore
Definition ObjectMgr.h:1813
std::map< std::tuple< uint32, uint32, uint32 >, uint32 > _creatureDefaultTrainers
Definition ObjectMgr.h:1855
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:1744
SpawnGroupDataContainer _spawnGroupDataStore
Definition ObjectMgr.h:1829
CreatureDataContainer _creatureDataStore
Definition ObjectMgr.h:1807
uint32 GetCreatureDefaultTrainer(uint32 creatureId) const
Definition ObjectMgr.h:1549
std::unordered_set< uint32 > const * GetQuestsForAreaTrigger(uint32 Trigger_ID) const
Definition ObjectMgr.h:1097
QuestRelations _goQuestRelations
Definition ObjectMgr.h:1725
CreatureBaseStatsContainer _creatureBaseStatsStore
Definition ObjectMgr.h:1782
CreatureLocale const * GetCreatureLocale(uint32 entry) const
Definition ObjectMgr.h:1438
ScriptNameContainer _scriptNamesStore
Definition ObjectMgr.h:1740
std::map< uint32, int32 > FishingBaseSkillContainer
Definition ObjectMgr.h:1797
TavernAreaTriggerContainer _tavernAreaTriggerStore
Definition ObjectMgr.h:1700
std::unordered_map< uint32, std::vector< TerrainSwapInfo * > > const & GetTerrainSwaps() const
Definition ObjectMgr.h:1759
QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1200
SpawnTrackingQuestObjectiveContainer _spawnTrackingQuestObjectiveStore
Definition ObjectMgr.h:1835
PageTextLocaleContainer _pageTextLocaleStore
Definition ObjectMgr.h:1845
EquipmentInfoContainer _equipmentInfoStore
Definition ObjectMgr.h:1820
std::set< uint32 > GameObjectForQuestContainer
Definition ObjectMgr.h:1697
ObjectGuid::LowType _gameObjectSpawnId
Definition ObjectMgr.h:1684
std::unordered_map< uint64, AccessRequirement > AccessRequirementContainer
Definition ObjectMgr.h:986
AccessRequirementContainer _accessRequirementStore
Definition ObjectMgr.h:1708
QuestGreetingLocaleContainer _questGreetingLocaleStore
Definition ObjectMgr.h:1704
std::unordered_map< uint32, SkillTiersEntry > _skillTiers
Definition ObjectMgr.h:1799
CreatureTemplateContainer _creatureTemplateStore
Definition ObjectMgr.h:1808
SpawnTrackingLinkContainer _spawnTrackingMapStore
Definition ObjectMgr.h:1834
CreatureDataContainer const & GetAllCreatureData() const
Definition ObjectMgr.h:1423
CharacterConversionMap FactionChangeReputation
Definition ObjectMgr.h:1631
QuestRequestItemsLocaleContainer _questRequestItemsLocaleStore
Definition ObjectMgr.h:1844
std::unordered_map< uint32, Trainer::Trainer > _trainers
Definition ObjectMgr.h:1854
std::map< HighGuid, ObjectGuidGenerator > _guidGenerators
Definition ObjectMgr.h:1689
std::unordered_map< int32, PlayerChoiceLocale > _playerChoiceLocales
Definition ObjectMgr.h:1849
ObjectMgr(ObjectMgr &&)=delete
std::unordered_map< int32, PlayerChoice > _playerChoices
Definition ObjectMgr.h:1838
ObjectGuid GetLinkedRespawnGuid(ObjectGuid spawnId) const
Definition ObjectMgr.h:1432
QuestRelationResult GetQuestRelationsFrom(QuestRelations const &map, uint32 key, bool onlyActive) const
Definition ObjectMgr.h:1771
QuestGreetingContainer _questGreetingStore
Definition ObjectMgr.h:1703
SpawnGroupTemplateData const * GetLegacySpawnGroup() const
Definition ObjectMgr.h:1365
PlayerChoiceLocale const * GetPlayerChoiceLocale(int32 ChoiceID) const
Definition ObjectMgr.h:1501
UiMapQuestLinesMap _uiMapQuestLinesStore
Definition ObjectMgr.h:1862
std::set< uint32 > _transportMaps
Definition ObjectMgr.h:1869
std::unordered_map< ObjectGuid::LowType, CreatureMovementData > _creatureMovementOverrides
Definition ObjectMgr.h:1814
GraveyardContainer GraveyardStore
Definition ObjectMgr.h:1605
std::unordered_map< uint32, RepSpilloverTemplate > RepSpilloverTemplateContainer
Definition ObjectMgr.h:993
GameObjectDataContainer const & GetAllGameObjectData() const
Definition ObjectMgr.h:1444
GameObjectTemplateContainer _gameObjectTemplateStore
Definition ObjectMgr.h:1826
std::vector< TempSummonData > const * GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
Definition ObjectMgr.h:1404
InstanceSpawnGroupContainer _instanceSpawnGroupStore
Definition ObjectMgr.h:1832
EventScriptContainer _eventScriptStore
Definition ObjectMgr.h:1712
std::unordered_map< uint32, PointOfInterest > PointOfInterestContainer
Definition ObjectMgr.h:995
ObjectGuidGenerator & GetGenerator()
Definition ObjectMgr.h:1348
std::unordered_map< uint32, std::unordered_set< uint32 > > QuestAreaTriggerContainer
Definition ObjectMgr.h:1695
bool IsGameObjectForQuests(uint32 entry) const
Definition ObjectMgr.h:1112
Trinity::IteratorPair< GossipMenuItemsContainer::const_iterator > GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1588
GameObjectData const * GetGameObjectData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1445
bool IsValidEvent(uint32 eventId) const
Definition ObjectMgr.h:1117
QuestRelationsReverse _creatureQuestInvolvedRelationsReverse
Definition ObjectMgr.h:1730
ItemTemplateContainer _itemTemplateStore
Definition ObjectMgr.h:1840
QuestObjectivesLocale const * GetQuestObjectivesLocale(uint32 entry) const
Definition ObjectMgr.h:1477
GameObjectDataContainer _gameObjectDataStore
Definition ObjectMgr.h:1823
GossipMenusContainer _gossipMenusStore
Definition ObjectMgr.h:1718
GossipMenuItemsLocale const * GetGossipMenuItemsLocale(uint32 menuId, uint32 optionId) const
Definition ObjectMgr.h:1489
static std::string_view GetLocaleString(std::vector< std::string > const &data, LocaleConstant locale)
Definition ObjectMgr.h:1608
QuestTemplateLocale const * GetQuestLocale(uint32 entry) const
Definition ObjectMgr.h:1459
CreatureLocaleContainer _creatureLocaleStore
Definition ObjectMgr.h:1822
std::map< uint32, uint32 > CharacterConversionMap
Definition ObjectMgr.h:1028
Trinity::IteratorPair< GossipMenuItemsContainer::iterator > GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1592
LocaleConstant GetDBCLocaleIndex() const
Definition ObjectMgr.h:1516
std::atomic< uint32 > _hiPetNumber
Definition ObjectMgr.h:1682
std::unordered_map< int32, JumpChargeParams > _jumpChargeParams
Definition ObjectMgr.h:1865
std::unordered_map< uint32, std::vector< uint32 > > _spawnGroupsByMap
Definition ObjectMgr.h:1830
std::atomic< uint64 > _mailId
Definition ObjectMgr.h:1681
PointOfInterestLocaleContainer _pointOfInterestLocaleStore
Definition ObjectMgr.h:1847
InstanceTemplateContainer _instanceTemplateStore
Definition ObjectMgr.h:1753
QuestRelations _goQuestInvolvedRelations
Definition ObjectMgr.h:1726
QuestAreaTriggerContainer _questAreaTriggerStore
Definition ObjectMgr.h:1699
FishingBaseSkillContainer _fishingBaseForAreaStore
Definition ObjectMgr.h:1798
bool IsTransportMap(uint32 mapId) const
Definition ObjectMgr.h:1642
PhaseNameContainer _phaseNameStore
Definition ObjectMgr.h:1867
Trinity::IteratorPair< SpawnGroupLinkContainer::const_iterator > GetSpawnMetadataForGroup(uint32 groupId) const
Definition ObjectMgr.h:1366
QuestOfferRewardLocale const * GetQuestOfferRewardLocale(uint32 entry) const
Definition ObjectMgr.h:1465
RepRewardRate const * GetRepRewardRate(uint32 factionId) const
Definition ObjectMgr.h:1145
ObjectGuid::LowType _creatureSpawnId
Definition ObjectMgr.h:1683
AreaTriggerContainer _areaTriggerStore
Definition ObjectMgr.h:1705
Trinity::IteratorPair< QuestRelationsReverse::const_iterator > GetCreatureQuestInvolvedRelationReverseBounds(uint32 questId) const
Definition ObjectMgr.h:1201
CreatureTemplateContainer const & GetCreatureTemplates() const
Definition ObjectMgr.h:1041
GameObjectQuestItemMap const * GetGameObjectQuestItemMap() const
Definition ObjectMgr.h:1076
MapObjectGuids _mapObjectGuidsStore
Definition ObjectMgr.h:1805
CreatureAddonContainer _creatureAddonStore
Definition ObjectMgr.h:1811
PageTextLocale const * GetPageTextLocale(uint32 entry) const
Definition ObjectMgr.h:1483
char const * GetTrinityStringForDBCLocale(uint32 entry) const
Definition ObjectMgr.h:1515
QuestRequestItemsLocale const * GetQuestRequestItemsLocale(uint32 entry) const
Definition ObjectMgr.h:1471
PetLevelInfoContainer _petInfoStore
Definition ObjectMgr.h:1785
GameObjectForQuestContainer _gameObjectForQuestStore
Definition ObjectMgr.h:1701
MailLevelRewardContainer _mailLevelRewardStore
Definition ObjectMgr.h:1780
VehicleAccessoryTemplateContainer _vehicleTemplateAccessoryStore
Definition ObjectMgr.h:1747
LocaleConstant DBCLocaleIndex
Definition ObjectMgr.h:1750
GameObjectTemplateContainer const & GetGameObjectTemplates() const
Definition ObjectMgr.h:1032
std::map< uint32, uint32 > BaseXPContainer
Definition ObjectMgr.h:1794
ExclusiveQuestGroupsBounds GetExclusiveQuestGroupBounds(int32 exclusiveGroupId) const
Definition ObjectMgr.h:1203
VendorItemData const * GetNpcVendorItemList(uint32 entry) const
Definition ObjectMgr.h:1555
HalfNameContainer _petHalfName0
Definition ObjectMgr.h:1802
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string_view &value)
Definition ObjectMgr.h:1621
std::vector< RaceClassAvailability > const & GetRaceClassRequirements() const
Definition ObjectMgr.h:1657
GossipMenuAddonContainer _gossipMenuAddonStore
Definition ObjectMgr.h:1720
NpcTextContainer _npcTextStore
Definition ObjectMgr.h:1702
QuestContainer _questTemplates
Definition ObjectMgr.h:1690
std::vector< Quest const * > _questTemplatesAutoPush
Definition ObjectMgr.h:1691
CharacterConversionMap FactionChangeSpells
Definition ObjectMgr.h:1632
CreatureTemplateAddonContainer _creatureTemplateAddonStore
Definition ObjectMgr.h:1812
std::unordered_map< uint32, VehicleTemplate > _vehicleTemplateStore
Definition ObjectMgr.h:1746
PointOfInterestLocale const * GetPointOfInterestLocale(uint32 id) const
Definition ObjectMgr.h:1495
GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore
Definition ObjectMgr.h:1846
BaseXPContainer _baseXPTable
Definition ObjectMgr.h:1795
GossipMenusMapBoundsNonConst GetGossipMenusMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1583
CharacterConversionMap FactionChangeItemsAllianceToHorde
Definition ObjectMgr.h:1628
std::unordered_map< uint32, std::unique_ptr< PetLevelInfo[] > > PetLevelInfoContainer
Definition ObjectMgr.h:1784
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string &value)
Definition ObjectMgr.h:1615
AreaTriggerScriptContainer _areaTriggerScriptStore
Definition ObjectMgr.h:1706
MailLevelReward const * GetMailLevelReward(uint8 level, uint8 race) const
Definition ObjectMgr.h:1375
QuestRelations _creatureQuestRelations
Definition ObjectMgr.h:1728
RealmNameContainer _realmNameStore
Definition ObjectMgr.h:1858
Trinity::IteratorPair< SpawnTrackingLinkContainer::const_iterator > GetSpawnMetadataForSpawnTracking(uint32 spawnTrackingId) const
Definition ObjectMgr.h:1371
void GetTaxiPath(uint32 source, uint32 destination, std::vector< uint32 > &path, uint32 &cost)
SceneTemplate const * GetSceneTemplate(uint32 sceneId) const
Definition ObjectMgr.h:1662
std::vector< uint32 > const * GetGameObjectQuestItemList(uint32 id) const
Definition ObjectMgr.h:1069
UiMapQuestsMap _uiMapQuestsStore
Definition ObjectMgr.h:1863
std::vector< InstanceSpawnGroupInfo > const * GetInstanceSpawnGroupsForMap(uint32 mapId) const
Definition ObjectMgr.h:1368
CreatureStaticFlagsOverrideMap _creatureStaticFlagsOverrideStore
Definition ObjectMgr.h:1819
CharacterConversionMap FactionChangeItemsHordeToAlliance
Definition ObjectMgr.h:1629
std::unordered_map< uint32, NpcText > NpcTextContainer
Definition ObjectMgr.h:1694
ObjectMgr(ObjectMgr const &)=delete
RepOnKillContainer _repOnKillStore
Definition ObjectMgr.h:1715
QuestObjective const * GetQuestObjective(uint32 questObjectiveId) const
Definition ObjectMgr.h:1091
SpawnGroupLinkContainer _spawnGroupMapStore
Definition ObjectMgr.h:1831
std::unordered_map< uint32, std::vector< TerrainSwapInfo * > > _terrainSwapInfoByMap
Definition ObjectMgr.h:1765
uint64 _equipmentSetGuid
Definition ObjectMgr.h:1680
RepSpilloverTemplateContainer _repSpilloverTemplateStore
Definition ObjectMgr.h:1716
SpawnMetadata const * GetSpawnMetadata(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1413
QuestRelationResult GetGOQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1195
SpawnGroupTemplateData const * GetDefaultSpawnGroup() const
Definition ObjectMgr.h:1364
CreatureModelContainer _creatureModelStore
Definition ObjectMgr.h:1809
LinkedRespawnContainer _linkedRespawnStore
Definition ObjectMgr.h:1821
std::vector< uint32 > PlayerXPperLevel
Definition ObjectMgr.h:1791
Trinity::IteratorPair< QuestRelationsReverse::const_iterator > GetGOQuestInvolvedRelationReverseBounds(uint32 questId) const
Definition ObjectMgr.h:1197
std::map< uint32, std::vector< std::string > > HalfNameContainer
Definition ObjectMgr.h:1801
uint32 _auctionId
Definition ObjectMgr.h:1679
std::unordered_map< uint32, uint32 > EventScriptContainer
Definition ObjectMgr.h:989
GossipMenusMapBounds GetGossipMenusMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1578
GameObjectLocaleContainer _gameObjectLocaleStore
Definition ObjectMgr.h:1824
GameObjectAddonContainer _gameObjectAddonStore
Definition ObjectMgr.h:1815
QuestObjectivesLocaleContainer _questObjectivesLocaleStore
Definition ObjectMgr.h:1842
GameTele const * GetGameTele(uint32 id) const
Definition ObjectMgr.h:1536
PlayerXPperLevel _playerXPperLevel
Definition ObjectMgr.h:1792
CacheVendorItemContainer _cacheVendorItemStore
Definition ObjectMgr.h:1853
QuestRelationsReverse _goQuestInvolvedRelationsReverse
Definition ObjectMgr.h:1727
QuestRelationResult GetCreatureQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1199
CreatureData const * GetCreatureData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1424
std::set< uint32 > TavernAreaTriggerContainer
Definition ObjectMgr.h:1696
PointOfInterestContainer _pointsOfInterestStore
Definition ObjectMgr.h:1721
std::vector< QuestObjective const * > const * GetSpawnTrackingQuestObjectiveList(uint32 spawnTrackingId) const
Definition ObjectMgr.h:1372
RepRewardRateContainer _repRewardRateStore
Definition ObjectMgr.h:1714
EventContainer _eventStore
Definition ObjectMgr.h:1711
CharacterConversionMap FactionChangeTitles
Definition ObjectMgr.h:1633
std::unordered_map< uint32, ReputationOnKillEntry > RepOnKillContainer
Definition ObjectMgr.h:992
std::unordered_map< uint32, AreaTriggerTeleport const * > AreaTriggerContainer
Definition ObjectMgr.h:982
VehicleSeatAddonContainer _vehicleSeatAddonStore
Definition ObjectMgr.h:1870
QuestTemplateLocaleContainer _questTemplateLocaleStore
Definition ObjectMgr.h:1841
std::vector< RaceClassAvailability > _raceClassRequirementStore
Definition ObjectMgr.h:1857
PageTextContainer _pageTextStore
Definition ObjectMgr.h:1752
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:1362
ItemTemplateContainer const & GetItemTemplateStore() const
Definition ObjectMgr.h:1056
QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1196
GameObjectQuestItemMap _gameObjectQuestItemStore
Definition ObjectMgr.h:1816
ExclusiveQuestGroups _exclusiveQuestGroups
Definition ObjectMgr.h:1732
GossipMenuAddon const * GetGossipMenuAddon(uint32 menuId) const
Definition ObjectMgr.h:1596
GameTeleContainer const & GetGameTeleMap() const
Definition ObjectMgr.h:1544
CharacterConversionMap FactionChangeQuests
Definition ObjectMgr.h:1630
Trinity::IteratorPair< SpellClickInfoContainer::const_iterator > GetSpellClickInfoMapBounds(uint32 creature_id) const
Definition ObjectMgr.h:1573
CreatureQuestItemMap _creatureQuestItemStore
Definition ObjectMgr.h:1817
TrinityStringContainer _trinityStringStore
Definition ObjectMgr.h:1851
QuestPOIContainer _questPOIStore
Definition ObjectMgr.h:1723
RepSpilloverTemplate const * GetRepSpilloverTemplate(uint32 factionId) const
Definition ObjectMgr.h:1162
DestructibleHitpointContainer _destructibleHitpointStore
Definition ObjectMgr.h:1825
SpellClickInfoContainer _spellClickInfoStore
Definition ObjectMgr.h:1742
ReservedNamesContainer _reservedNamesStore
Definition ObjectMgr.h:1736
std::vector< Quest const * > const & GetQuestTemplatesAutoPush() const
Definition ObjectMgr.h:1089
QuestRelations * GetCreatureQuestRelationMapHACK()
Definition ObjectMgr.h:1198
GossipMenuItemsContainer _gossipMenuItemsStore
Definition ObjectMgr.h:1719
std::unordered_map< uint32, WorldSafeLocsEntry > _worldSafeLocs
Definition ObjectMgr.h:1709
GameObjectOverrideContainer _gameObjectOverrideStore
Definition ObjectMgr.h:1828
std::unordered_map< uint32, CreatureSummonedData > _creatureSummonedDataStore
Definition ObjectMgr.h:1810
void SetDBCLocaleIndex(LocaleConstant locale)
Definition ObjectMgr.h:1517
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:647
auto MapEqualRange(M &map, typename M::key_type const &key)
STL namespace.
std::string questFailedText
Definition ObjectMgr.h:468
std::vector< Position > Vertices
Definition ObjectMgr.h:455
Optional< float > Height
Definition ObjectMgr.h:456
uint8 MinActiveExpansionLevel
Definition ObjectMgr.h:932
uint8 AccountExpansionLevel
Definition ObjectMgr.h:931
uint8 ActiveExpansionLevel
Definition ObjectMgr.h:930
std::string Realm
Definition ObjectMgr.h:899
std::string Name
Definition ObjectMgr.h:898
ExtendedPlayerName(std::string const &name, std::string const &realmName)
Definition ObjectMgr.h:897
float position_y
Definition ObjectMgr.h:159
float orientation
Definition ObjectMgr.h:161
float position_x
Definition ObjectMgr.h:158
uint32 mapId
Definition ObjectMgr.h:162
std::string name
Definition ObjectMgr.h:163
float position_z
Definition ObjectMgr.h:160
std::wstring wnameLow
Definition ObjectMgr.h:164
int32 FriendshipFactionID
Definition ObjectMgr.h:771
int32 LfgDungeonsID
Definition ObjectMgr.h:772
std::vector< std::string > BoxText
Definition ObjectMgr.h:528
std::vector< std::string > OptionText
Definition ObjectMgr.h:527
Optional< int32 > SpellID
Definition ObjectMgr.h:757
uint32 BoxBroadcastTextID
Definition ObjectMgr.h:756
std::string OptionText
Definition ObjectMgr.h:746
ConditionsReference Conditions
Definition ObjectMgr.h:759
int32 GossipOptionID
Definition ObjectMgr.h:743
uint32 ActionMenuID
Definition ObjectMgr.h:750
uint32 OrderIndex
Definition ObjectMgr.h:744
Optional< int32 > GossipNpcOptionID
Definition ObjectMgr.h:752
Optional< int32 > OverrideIconID
Definition ObjectMgr.h:758
uint32 ActionPoiID
Definition ObjectMgr.h:751
GossipOptionNpc OptionNpc
Definition ObjectMgr.h:745
std::string BoxText
Definition ObjectMgr.h:755
GossipOptionFlags Flags
Definition ObjectMgr.h:749
uint32 OptionBroadcastTextID
Definition ObjectMgr.h:747
ConditionsReference Conditions
Definition ObjectMgr.h:766
uint32 TextID
Definition ObjectMgr.h:765
uint32 MenuID
Definition ObjectMgr.h:764
uint32 safeLocId
Definition ObjectMgr.h:841
ConditionsReference Conditions
Definition ObjectMgr.h:842
GridGuidSet gameobjects
Definition ObjectMgr.h:475
GridGuidSet creatures
Definition ObjectMgr.h:474
uint32 senderEntry
Definition ObjectMgr.h:691
MailLevelReward(Trinity::RaceMask< uint64 > _raceMask, uint32 _mailTemplateId, uint32 _senderEntry)
Definition ObjectMgr.h:687
Trinity::RaceMask< uint64 > raceMask
Definition ObjectMgr.h:689
uint32 mailTemplateId
Definition ObjectMgr.h:690
Entry(uint32 id, bool isScriptDatabaseBound)
Definition ObjectMgr.h:1003
uint8 Flags
Definition ObjectMgr.h:68
std::string Text
Definition ObjectMgr.h:65
uint32 NextPageID
Definition ObjectMgr.h:66
int32 PlayerConditionID
Definition ObjectMgr.h:67
uint16 health
Definition ObjectMgr.h:679
uint16 armor
Definition ObjectMgr.h:681
uint16 stats[MAX_STATS]
Definition ObjectMgr.h:678
uint16 mana
Definition ObjectMgr.h:680
PhaseAreaInfo(PhaseInfoStruct const *phaseInfo)
Definition ObjectMgr.h:920
std::unordered_set< uint32 > SubAreaExclusions
Definition ObjectMgr.h:923
ConditionContainer Conditions
Definition ObjectMgr.h:924
PhaseInfoStruct const * PhaseInfo
Definition ObjectMgr.h:922
std::unordered_set< uint32 > Areas
Definition ObjectMgr.h:913
bool IsAllowedInArea(uint32 areaId) const
std::unordered_map< int32, PlayerChoiceResponseLocale > Responses
Definition ObjectMgr.h:553
std::vector< std::string > Question
Definition ObjectMgr.h:552
std::vector< std::string > Confirmation
Definition ObjectMgr.h:547
std::vector< std::string > SubHeader
Definition ObjectMgr.h:544
std::vector< std::string > Header
Definition ObjectMgr.h:543
std::vector< std::string > Description
Definition ObjectMgr.h:546
std::vector< std::string > Answer
Definition ObjectMgr.h:542
std::vector< std::string > ButtonTooltip
Definition ObjectMgr.h:545
PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type)
Definition ObjectMgr.h:638
PlayerCreateInfoItem(uint32 id, uint32 amount)
Definition ObjectMgr.h:621
Optional< ObjectGuid::LowType > TransportGuid
Definition ObjectMgr.h:655
Optional< uint32 > introMovieId
Definition ObjectMgr.h:668
PlayerCreateInfoActions action
Definition ObjectMgr.h:665
PlayerCreateInfoSpells castSpells[size_t(PlayerCreateMode::Max)]
Definition ObjectMgr.h:664
ItemContext itemContext
Definition ObjectMgr.h:661
std::unique_ptr< PlayerLevelInfo[]> levelInfo
Definition ObjectMgr.h:673
PlayerCreateInfoSkills skills
Definition ObjectMgr.h:666
Optional< uint32 > introSceneIdNPE
Definition ObjectMgr.h:670
Optional< CreatePosition > createPositionNPE
Definition ObjectMgr.h:659
Optional< uint32 > introSceneId
Definition ObjectMgr.h:669
PlayerCreateInfoSpells customSpells
Definition ObjectMgr.h:663
CreatePosition createPosition
Definition ObjectMgr.h:658
PlayerCreateInfoItems item
Definition ObjectMgr.h:662
int32 stats[MAX_STATS]
Definition ObjectMgr.h:631
std::vector< std::string > Name
Definition ObjectMgr.h:535
std::string Name
Definition ObjectMgr.h:737
uint32 Importance
Definition ObjectMgr.h:735
int32 NavigationPlayerConditionID
Definition ObjectMgr.h:803
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:810
int32 PlayerConditionID
Definition ObjectMgr.h:802
std::vector< QuestPOIBlobPoint > Points
Definition ObjectMgr.h:805
int32 QuestObjectiveID
Definition ObjectMgr.h:795
int32 SpawnTrackingID
Definition ObjectMgr.h:804
bool AlwaysAllowMergingBlobs
Definition ObjectMgr.h:806
QuestPOIBlobPoint(int32 x, int32 y, int32 z)
Definition ObjectMgr.h:788
std::vector< uint8 > QueryDataBuffer
Definition ObjectMgr.h:824
int32 QuestID
Definition ObjectMgr.h:820
void InitializeQueryData()
std::vector< QuestPOIBlobData > Blobs
Definition ObjectMgr.h:821
QuestRelations::const_iterator _it
Definition ObjectMgr.h:590
value_type const & reference
Definition ObjectMgr.h:570
value_type const * pointer
Definition ObjectMgr.h:569
bool operator==(Iterator const &other) const
Definition ObjectMgr.h:579
Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
Definition ObjectMgr.h:573
value_type operator*() const
Definition ObjectMgr.h:584
QuestRelations::const_iterator _end
Definition ObjectMgr.h:590
std::forward_iterator_tag iterator_category
Definition ObjectMgr.h:567
QuestRelations::mapped_type value_type
Definition ObjectMgr.h:568
bool HasQuest(uint32 questId) const
QuestRelationResult(std::pair< QuestRelations::const_iterator, QuestRelations::const_iterator > range, bool onlyActive)
Definition ObjectMgr.h:595
Iterator begin() const
Definition ObjectMgr.h:598
QuestRelations::const_iterator _end
Definition ObjectMgr.h:604
QuestRelations::const_iterator _begin
Definition ObjectMgr.h:604
Iterator end() const
Definition ObjectMgr.h:599
RaceUnlockRequirement UnlockRequirement
Definition ObjectMgr.h:944
std::vector< ClassAvailability > Classes
Definition ObjectMgr.h:945
Definition Realm.h:139
float questMonthlyRate
Definition ObjectMgr.h:703
float questWeeklyRate
Definition ObjectMgr.h:702
float questDailyRate
Definition ObjectMgr.h:701
float questRepeatableRate
Definition ObjectMgr.h:704
float spellRate
Definition ObjectMgr.h:706
float questRate
Definition ObjectMgr.h:700
float creatureRate
Definition ObjectMgr.h:705
uint32 faction_rank[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:726
uint32 faction[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:724
float faction_rate[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:725
uint32 SceneId
Definition ObjectMgr.h:855
EnumFlag< SceneFlag > PlaybackFlags
Definition ObjectMgr.h:856
uint32 ScriptId
Definition ObjectMgr.h:859
uint32 ScenePackageId
Definition ObjectMgr.h:857
float Orientation
Definition ObjectMgr.h:273
struct ScriptInfo::@272::@275 Talk
uint32 Flags
Definition ObjectMgr.h:230
struct ScriptInfo::@272::@289 CreateItem
float Unused3
Definition ObjectMgr.h:373
struct ScriptInfo::@272::@284 TempSummonCreature
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::@272::@286 RemoveAura
struct ScriptInfo::@272::@282 KillCredit
int32 TextID
Definition ObjectMgr.h:231
struct ScriptInfo::@272::@277 FieldSet
struct ScriptInfo::@272::@296 Model
uint32 MovementType
Definition ObjectMgr.h:398
uint32 MovementDistance
Definition ObjectMgr.h:399
struct ScriptInfo::@272::@297 PlayMovie
float DestX
Definition ObjectMgr.h:252
struct ScriptInfo::@272::@280 TeleportTo
uint32 ItemEntry
Definition ObjectMgr.h:338
uint32 ChatType
Definition ObjectMgr.h:229
struct ScriptInfo::@272::@288 PlaySound
uint32 SoundID
Definition ObjectMgr.h:332
uint32 id
Definition ObjectMgr.h:215
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
uint32 FieldValue
Definition ObjectMgr.h:243
struct ScriptInfo::@272::@287 CastSpell
float PosY
Definition ObjectMgr.h:301
ScriptCommands command
Definition ObjectMgr.h:217
uint32 Unused1
Definition ObjectMgr.h:248
float DestY
Definition ObjectMgr.h:253
struct ScriptInfo::@272::@279 FlagToggle
struct ScriptInfo::@272::@278 MoveTo
uint32 PathID
Definition ObjectMgr.h:349
uint32 AnimKitID
Definition ObjectMgr.h:405
uint32 MapID
Definition ObjectMgr.h:266
struct ScriptInfo::@272::@290 DespawnSelf
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
struct ScriptInfo::@272::@299 PlayAnimKit
int32 RemoveCorpse
Definition ObjectMgr.h:364
float PosZ
Definition ObjectMgr.h:302
struct ScriptInfo::@272::@276 Emote
uint32 ScriptType
Definition ObjectMgr.h:357
uint32 ResetDelay
Definition ObjectMgr.h:310
struct ScriptInfo::@272::@274 Raw
uint32 DespawnDelay
Definition ObjectMgr.h:291
float PosX
Definition ObjectMgr.h:300
uint32 TravelTime
Definition ObjectMgr.h:249
struct ScriptInfo::@272::@285 ToggleDoor
uint32 Distance
Definition ObjectMgr.h:279
struct ScriptInfo::@272::@283 RespawnGameobject
struct ScriptInfo::@272::@298 Movement
struct ScriptInfo::@272::@291 LoadPath
struct ScriptInfo::@272::@281 QuestExplored
uint32 SpellID
Definition ObjectMgr.h:317
std::string GetDebugInfo() const
struct ScriptInfo::@272::@293 Kill
float DestZ
Definition ObjectMgr.h:254
struct ScriptInfo::@272::@295 Equip
float Unused5
Definition ObjectMgr.h:375
uint32 MovieID
Definition ObjectMgr.h:393
int32 Unused2
Definition ObjectMgr.h:250
int32 CreatureEntry
Definition ObjectMgr.h:325
struct ScriptInfo::@272::@292 CallScript
uint32 EquipmentID
Definition ObjectMgr.h:381
uint32 GOGuid
Definition ObjectMgr.h:290
uint32 CreatureEntry
Definition ObjectMgr.h:284
uint32 Amount
Definition ObjectMgr.h:339
uint32 EmoteID
Definition ObjectMgr.h:236
uint32 GetValueForTierIndex(uint32 tierIndex) const
uint32 Value[MAX_SKILL_STEP]
Definition ObjectMgr.h:880
static constexpr bool TypeHasData(SpawnObjectType type)
Definition SpawnData.h:113
SpawnGroupTemplateData const * spawnGroupData
Definition SpawnData.h:124
SpellClickUserTypes userType
Definition ObjectMgr.h:443
Stores data for temp summons.
Definition ObjectMgr.h:90
Milliseconds time
Despawn time, usable only with certain temp summon types.
Definition ObjectMgr.h:94
TempSummonType type
Summon type, see TempSummonType for available types.
Definition ObjectMgr.h:93
uint32 entry
Entry of summoned creature.
Definition ObjectMgr.h:91
Position pos
Position, where should be creature spawned.
Definition ObjectMgr.h:92
Key for storing temp summon data in TempSummonDataContainer.
Definition ObjectMgr.h:80
uint32 SummonerEntry
Summoner's entry.
Definition ObjectMgr.h:83
std::strong_ordering operator<=>(TempSummonGroupKey const &right) const =default
SummonerType Type
Summoner's type, see SummonerType for available types.
Definition ObjectMgr.h:84
uint8 SummonGroup
Summon's group id.
Definition ObjectMgr.h:85
std::vector< uint32 > UiMapPhaseIDs
Definition ObjectMgr.h:907
std::vector< std::string > Content
Definition ObjectMgr.h:483
Optional< ObjectGuid::LowType > TransportSpawnId
Definition ObjectMgr.h:836
WorldLocation Loc
Definition ObjectMgr.h:835