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 "Errors.h"
26#include "GameObjectData.h"
27#include "ItemTemplate.h"
28#include "IteratorPair.h"
29#include "NPCHandler.h"
30#include "ObjectDefines.h"
31#include "ObjectGuid.h"
32#include "Position.h"
33#include "QuestDef.h"
34#include "SharedDefines.h"
35#include "Trainer.h"
36#include "VehicleDefines.h"
37#include "UniqueTrackablePtr.h"
38#include <iterator>
39#include <map>
40#include <unordered_map>
41
42class Item;
43class Unit;
44class Vehicle;
45class Map;
48struct DeclinedName;
50struct FactionEntry;
51struct PlayerClassInfo;
53struct PlayerInfo;
54struct PlayerLevelInfo;
57
59{
60 std::string Text;
62};
63
70
71#pragma pack(push, 1)
72
75{
76 TempSummonGroupKey(uint32 summonerEntry, SummonerType summonerType, uint8 group)
77 : SummonerEntry(summonerEntry), SummonerType(summonerType), SummonGroup(group)
78 {
79 }
80
81 std::strong_ordering operator<=>(TempSummonGroupKey const& right) const = default;
82
86};
87
96
97#pragma pack(pop)
98
99// DB scripting commands
101{
102 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
103 SCRIPT_COMMAND_EMOTE = 1, // source/target = Creature, datalong = emote id, datalong2 = 0: set emote state; > 0: play emote state
104 SCRIPT_COMMAND_FIELD_SET = 2, // source/target = Creature, datalong = field id, datalog2 = value
105 SCRIPT_COMMAND_MOVE_TO = 3, // source/target = Creature, datalong2 = time to reach, x/y/z = destination
106 SCRIPT_COMMAND_FLAG_SET = 4, // source/target = Creature, datalong = field id, datalog2 = bitmask
107 SCRIPT_COMMAND_FLAG_REMOVE = 5, // source/target = Creature, datalong = field id, datalog2 = bitmask
108 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
109 SCRIPT_COMMAND_QUEST_EXPLORED = 7, // target/source = Player, target/source = GO/Creature, datalong = quest id, datalong2 = distance or 0
110 SCRIPT_COMMAND_KILL_CREDIT = 8, // target/source = Player, datalong = creature entry, datalong2 = 0: personal credit, 1: group credit
111 SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9, // source = WorldObject (summoner), datalong = GO guid, datalong2 = despawn delay
112 SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10, // source = WorldObject (summoner), datalong = creature entry, datalong2 = despawn delay, x/y/z = summon position, o = orientation
113 SCRIPT_COMMAND_OPEN_DOOR = 11, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
114 SCRIPT_COMMAND_CLOSE_DOOR = 12, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
115 SCRIPT_COMMAND_ACTIVATE_OBJECT = 13, // source = Unit, target = GO
116 SCRIPT_COMMAND_REMOVE_AURA = 14, // source (datalong2 != 0) or target (datalong2 == 0) = Unit, datalong = spell id
117 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
118 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)
119 SCRIPT_COMMAND_CREATE_ITEM = 17, // target/source = Player, datalong = item entry, datalong2 = amount
120 SCRIPT_COMMAND_DESPAWN_SELF = 18, // target/source = Creature, datalong = despawn delay
121
122 SCRIPT_COMMAND_LOAD_PATH = 20, // source = Unit, datalong = path id, datalong2 = is repeatable
123 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)
124 SCRIPT_COMMAND_KILL = 22, // source/target = Creature, dataint = remove corpse attribute
125
126 // TrinityCore only
127 SCRIPT_COMMAND_ORIENTATION = 30, // source = Unit, target (datalong > 0) = Unit, datalong = > 0 turn source to face target, o = orientation
128 SCRIPT_COMMAND_EQUIP = 31, // soucre = Creature, datalong = equipment id
129 SCRIPT_COMMAND_MODEL = 32, // source = Creature, datalong = model id
130 SCRIPT_COMMAND_CLOSE_GOSSIP = 33, // source = Player
131 SCRIPT_COMMAND_PLAYMOVIE = 34, // source = Player, datalong = movie id
132 SCRIPT_COMMAND_MOVEMENT = 35, // source = Creature, datalong = MovementType, datalong2 = MovementDistance (wander_distance f.ex.), dataint = pathid
133 SCRIPT_COMMAND_PLAY_ANIMKIT = 36 // source = Creature, datalong = AnimKit id (NOT ON 3.3.5A, DON'T REUSE)
135
147
148typedef std::map<uint32, PageText> PageTextContainer;
149
156
157typedef std::unordered_map<uint16, InstanceTemplate> InstanceTemplateContainer;
158
160{
166 std::string name;
167 std::wstring wnameLow;
168};
169
170typedef std::unordered_map<uint32, GameTele> GameTeleContainer;
171
181
183{
184 // Talk Flags
186
187 // Emote flags
189
190 // TeleportTo flags
192
193 // KillCredit flags
195
196 // RemoveAura flags
198
199 // CastSpell flags
206
207 // PlaySound flags
210
211 // Orientation flags
214
216{
221
222 union
223 {
224 struct
225 {
227 float fData[4];
229
230 struct // SCRIPT_COMMAND_TALK (0)
231 {
232 uint32 ChatType; // datalong
233 uint32 Flags; // datalong2
234 int32 TextID; // dataint
236
237 struct // SCRIPT_COMMAND_EMOTE (1)
238 {
239 uint32 EmoteID; // datalong
240 uint32 Flags; // datalong2
242
243 struct // SCRIPT_COMMAND_FIELD_SET (2)
244 {
245 uint32 FieldID; // datalong
246 uint32 FieldValue; // datalong2
248
249 struct // SCRIPT_COMMAND_MOVE_TO (3)
250 {
251 uint32 Unused1; // datalong
252 uint32 TravelTime; // datalong2
253 int32 Unused2; // dataint
254
255 float DestX;
256 float DestY;
257 float DestZ;
259
260 struct // SCRIPT_COMMAND_FLAG_SET (4)
261 // SCRIPT_COMMAND_FLAG_REMOVE (5)
262 {
263 uint32 FieldID; // datalong
264 uint32 FieldValue; // datalong2
266
267 struct // SCRIPT_COMMAND_TELEPORT_TO (6)
268 {
269 uint32 MapID; // datalong
270 uint32 Flags; // datalong2
271 int32 Unused1; // dataint
272
273 float DestX;
274 float DestY;
275 float DestZ;
278
279 struct // SCRIPT_COMMAND_QUEST_EXPLORED (7)
280 {
281 uint32 QuestID; // datalong
282 uint32 Distance; // datalong2
284
285 struct // SCRIPT_COMMAND_KILL_CREDIT (8)
286 {
288 uint32 Flags; // datalong2
290
291 struct // SCRIPT_COMMAND_RESPAWN_GAMEOBJECT (9)
292 {
294 uint32 DespawnDelay; // datalong2
296
297 struct // SCRIPT_COMMAND_TEMP_SUMMON_CREATURE (10)
298 {
299 uint32 CreatureEntry; // datalong
300 uint32 DespawnDelay; // datalong2
301 int32 Unused1; // dataint
302
303 float PosX;
304 float PosY;
305 float PosZ;
306 float Orientation;
308
309 struct // SCRIPT_COMMAND_CLOSE_DOOR (12)
310 // SCRIPT_COMMAND_OPEN_DOOR (11)
311 {
312 ObjectGuid::LowType GOGuid; // datalong
313 uint32 ResetDelay; // datalong2
315
316 // SCRIPT_COMMAND_ACTIVATE_OBJECT (13)
317
318 struct // SCRIPT_COMMAND_REMOVE_AURA (14)
319 {
320 uint32 SpellID; // datalong
321 uint32 Flags; // datalong2
323
324 struct // SCRIPT_COMMAND_CAST_SPELL (15)
325 {
326 uint32 SpellID; // datalong
327 uint32 Flags; // datalong2
329
332
333 struct // SCRIPT_COMMAND_PLAY_SOUND (16)
334 {
335 uint32 SoundID; // datalong
336 uint32 Flags; // datalong2
338
339 struct // SCRIPT_COMMAND_CREATE_ITEM (17)
340 {
341 uint32 ItemEntry; // datalong
342 uint32 Amount; // datalong2
344
345 struct // SCRIPT_COMMAND_DESPAWN_SELF (18)
346 {
347 uint32 DespawnDelay; // datalong
349
350 struct // SCRIPT_COMMAND_LOAD_PATH (20)
351 {
352 uint32 PathID; // datalong
353 uint32 IsRepeatable; // datalong2
355
356 struct // SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT (21)
357 {
358 uint32 CreatureEntry; // datalong
359 uint32 ScriptID; // datalong2
360 uint32 ScriptType; // dataint
362
363 struct // SCRIPT_COMMAND_KILL (22)
364 {
365 uint32 Unused1; // datalong
366 uint32 Unused2; // datalong2
367 int32 RemoveCorpse; // dataint
369
370 struct // SCRIPT_COMMAND_ORIENTATION (30)
371 {
372 uint32 Flags; // datalong
373 uint32 Unused1; // datalong2
374 int32 Unused2; // dataint
375
376 float Unused3;
377 float Unused4;
378 float Unused5;
379 float Orientation;
381
382 struct // SCRIPT_COMMAND_EQUIP (31)
383 {
384 uint32 EquipmentID; // datalong
386
387 struct // SCRIPT_COMMAND_MODEL (32)
388 {
389 uint32 ModelID; // datalong
391
392 // SCRIPT_COMMAND_CLOSE_GOSSIP (33)
393
394 struct // SCRIPT_COMMAND_PLAYMOVIE (34)
395 {
396 uint32 MovieID; // datalong
398
399 struct // SCRIPT_COMMAND_MOVEMENT (35)
400 {
401 uint32 MovementType; // datalong
403 int32 Path; // dataint
405 };
406
407 std::string GetDebugInfo() const;
408};
409
410typedef std::multimap<uint32, ScriptInfo> ScriptMap;
411typedef std::map<uint32, ScriptMap> ScriptMapMap;
412typedef std::multimap<uint32 /*spell id*/, std::pair<uint32 /*script id*/, bool /*enabled*/>> SpellScriptsContainer;
413typedef std::pair<SpellScriptsContainer::iterator, SpellScriptsContainer::iterator> SpellScriptsBounds;
416
417std::string GetScriptsTableNameByType(ScriptsType type);
419std::string GetScriptCommandName(ScriptCommands command);
420
422{
423 enum
424 {
425 FLAG_ACTIVATE_SPAWN = 0x01,
426 FLAG_BLOCK_SPAWN = 0x02,
427 FLAG_ALLIANCE_ONLY = 0x04,
428 FLAG_HORDE_ONLY = 0x08,
429
430 FLAG_ALL = (FLAG_ACTIVATE_SPAWN | FLAG_BLOCK_SPAWN | FLAG_ALLIANCE_ONLY | FLAG_HORDE_ONLY)
431 };
436};
437
439{
443
444 // helpers
445 bool IsFitToRequirements(Unit const* clicker, Unit const* clickee) const;
446};
447
448typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoContainer;
449
458
471
473{
476 {
477 Text.resize(DEFAULT_LOCALE + 1);
478 Text1.resize(DEFAULT_LOCALE + 1);
479 }
480
483 std::vector<std::string> Text;
484 std::vector<std::string> Text1;
494 // uint32 VerifiedBuild;
495
496 std::string const& GetText(LocaleConstant locale = DEFAULT_LOCALE, uint8 gender = GENDER_MALE, bool forceGender = false) const
497 {
498 if ((gender == GENDER_FEMALE || gender == GENDER_NONE) && (forceGender || !Text1[DEFAULT_LOCALE].empty()))
499 {
500 if (Text1.size() > size_t(locale) && !Text1[locale].empty())
501 return Text1[locale];
502 return Text1[DEFAULT_LOCALE];
503 }
504 // else if (gender == GENDER_MALE)
505 {
506 if (Text.size() > size_t(locale) && !Text[locale].empty())
507 return Text[locale];
508 return Text[DEFAULT_LOCALE];
509 }
510 }
511};
512
513typedef std::unordered_map<uint32, BroadcastText> BroadcastTextContainer;
514
515typedef std::set<ObjectGuid::LowType> CellGuidSet;
521typedef std::unordered_map<uint32/*cell_id*/, CellObjectGuids> CellObjectGuidsMap;
522typedef std::unordered_map<uint32/*(mapid, spawnMode) pair*/, CellObjectGuidsMap> MapObjectGuids;
523
525{
526 std::vector<std::string> Content;
527};
528
530{
531 std::vector<std::string> greeting;
532};
533
534typedef std::map<ObjectGuid, ObjectGuid> LinkedRespawnContainer;
535typedef std::unordered_map<uint32, CreatureTemplate> CreatureTemplateContainer;
536typedef std::unordered_map<uint32, CreatureAddon> CreatureTemplateAddonContainer;
537typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer;
538typedef std::unordered_map<ObjectGuid::LowType, CreatureAddon> CreatureAddonContainer;
539typedef std::unordered_map<uint16, CreatureBaseStats> CreatureBaseStatsContainer;
540typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal;
541typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer;
542typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer;
543typedef std::unordered_map<uint32, std::vector<uint32>> CreatureQuestItemMap;
544typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer;
545typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer;
546typedef std::unordered_map<ObjectGuid::LowType, GameObjectOverride> GameObjectOverrideContainer;
547typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer;
548typedef std::unordered_map<ObjectGuid::LowType, GameObjectAddon> GameObjectAddonContainer;
549typedef std::unordered_map<uint32, std::vector<uint32>> GameObjectQuestItemMap;
550typedef std::unordered_map<uint32, SpawnGroupTemplateData> SpawnGroupDataContainer;
551typedef std::multimap<uint32, SpawnMetadata const*> SpawnGroupLinkContainer;
552typedef std::unordered_map<uint16, std::vector<InstanceSpawnGroupInfo>> InstanceSpawnGroupContainer;
553typedef std::map<TempSummonGroupKey, std::vector<TempSummonData>> TempSummonDataContainer;
554typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
555typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
556typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer;
557typedef std::unordered_map<uint32, ItemLocale> ItemLocaleContainer;
558typedef std::unordered_map<uint32, ItemSetNameLocale> ItemSetNameLocaleContainer;
559typedef std::unordered_map<uint32, QuestLocale> QuestLocaleContainer;
560typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
561typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;
562typedef std::unordered_map<uint32, NpcTextLocale> NpcTextLocaleContainer;
563typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
564typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
565
567{
568 std::vector<std::string> OptionText;
569 std::vector<std::string> BoxText;
570};
571
572typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
573
575{
576 std::vector<std::string> Name;
577};
578
579typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
580typedef std::unordered_map<uint32, QuestGreetingLocale> QuestGreetingLocaleContainer;
581
582typedef std::unordered_map<uint32, TrinityString> TrinityStringContainer;
583
584typedef std::multimap<uint32, uint32> QuestRelations; // unit/go -> quest
585
587{
588 public:
589 struct Iterator
590 {
591 public:
592 using iterator_category = std::forward_iterator_tag;
593 using value_type = QuestRelations::mapped_type;
594 using pointer = value_type const*;
595 using reference = value_type const&;
596 using difference_type = void;
597
598 Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
599 : _it(it), _end(end), _onlyActive(onlyActive)
600 {
601 skip();
602 }
603
604 bool operator==(Iterator const& other) const { return _it == other._it; }
605
606 Iterator& operator++() { ++_it; skip(); return *this; }
607 Iterator operator++(int) { Iterator t = *this; ++*this; return t; }
608
609 value_type operator*() const { return _it->second; }
610
611 private:
612 void skip() { if (_onlyActive) _skip(); }
613 void _skip();
614
615 QuestRelations::const_iterator _it, _end;
617 };
618
620 QuestRelationResult(std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> range, bool onlyActive)
621 : _begin(range.first), _end(range.second), _onlyActive(onlyActive) {}
622
623 Iterator begin() const { return { _begin, _end, _onlyActive }; }
624 Iterator end() const { return { _end, _end, _onlyActive }; }
625
626 bool HasQuest(uint32 questId) const;
627
628 private:
629 QuestRelations::const_iterator _begin, _end;
631};
632
640
641typedef std::vector<PlayerCreateInfoItem> PlayerCreateInfoItems;
642
648
650{
651 //[level-1] 0..MaxPlayerLevel-1
652 std::unique_ptr<PlayerClassLevelInfo[]> levelInfo;
653};
654
656{
658};
659
660typedef std::vector<uint32> PlayerCreateInfoSpells;
661
663{
664 PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) { }
665
669};
670
671typedef std::vector<PlayerCreateInfoAction> PlayerCreateInfoActions;
672
678
679typedef std::vector<PlayerCreateInfoSkill> PlayerCreateInfoSkills;
680
681// existence checked by displayId != 0
701
702typedef std::multimap<int32, uint32> ExclusiveQuestGroups; // exclusiveGroupId -> quest
703typedef std::pair<ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator> ExclusiveQuestGroupsBounds;
704
714
716{
718 MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { }
719
723};
724
725typedef std::list<MailLevelReward> MailLevelRewardList;
726typedef std::unordered_map<uint8, MailLevelRewardList> MailLevelRewardContainer;
727
728// We assume the rate is in general the same for all three types below, but chose to keep three for scalability and customization
730{
731 float questRate; // We allow rate = 0.0 in database. For this case, it means that
736 float creatureRate; // no reputation are given at all for this faction/rate type.
738};
739
752
759
770
788
795
796typedef std::multimap<uint32, GossipMenus> GossipMenusContainer;
797typedef std::pair<GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator> GossipMenusMapBounds;
798typedef std::pair<GossipMenusContainer::iterator, GossipMenusContainer::iterator> GossipMenusMapBoundsNonConst;
799typedef std::multimap<uint32, GossipMenuItems> GossipMenuItemsContainer;
800typedef std::pair<GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator> GossipMenuItemsMapBounds;
801typedef std::pair<GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator> GossipMenuItemsMapBoundsNonConst;
802
804{
805 int32 X = 0;
806 int32 Y = 0;
807};
808
820
822{
824 std::vector<QuestPOIBlobData> QuestPOIBlobDataStats;
825};
826
837
838typedef std::unordered_map<uint32, QuestPOIWrapper> QuestPOIContainer;
839
841{
844 std::string greeting;
845
847 QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
848 : greetEmoteType(_greetEmoteType), greetEmoteDelay(_greetEmoteDelay), greeting(_greeting) { }
849};
850
851typedef std::unordered_map<uint8, std::unordered_map<uint32, QuestGreeting>> QuestGreetingContainer;
852
858
859typedef std::multimap<uint32, GraveyardData> GraveyardContainer;
860typedef std::pair<GraveyardContainer::const_iterator, GraveyardContainer::const_iterator> GraveyardMapBounds;
861typedef std::pair<GraveyardContainer::iterator, GraveyardContainer::iterator> GraveyardMapBoundsNonConst;
862
863typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
864
866{
868 SKILL_RANGE_LEVEL, // 1..max skill for level
869 SKILL_RANGE_MONO, // 1..1, grey monolite bar
870 SKILL_RANGE_RANK, // 1..skill for known rank
871 SKILL_RANGE_NONE // 0..0 always
873
875
876#define MAX_PLAYER_NAME 12 // max allowed by client name length
877#define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
878#define MAX_PET_NAME 12 // max allowed by client name length
879#define MAX_CHARTER_NAME 24 // max allowed by client name length
880
881TC_GAME_API bool normalizePlayerName(std::string& name);
882#define SPAWNGROUP_MAP_UNSET 0xFFFFFFFF
883
890
893
899
901{
902 DungeonEncounter(DungeonEncounterEntry const* _dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
903 : dbcEntry(_dbcEntry), creditType(_creditType), creditEntry(_creditEntry), lastEncounterDungeon(_lastEncounterDungeon) { }
904
909};
910
911typedef std::vector<std::unique_ptr<DungeonEncounter const>> DungeonEncounterList;
912typedef std::unordered_map<uint32, DungeonEncounterList> DungeonEncounterContainer;
913
914typedef std::map<std::pair<SummonSlot /*TotemSlot*/, Races /*RaceId*/>, uint32 /*DisplayId*/> PlayerTotemModelMap;
915
926
927class PlayerDumpReader;
928
930{
931 friend class PlayerDumpReader;
932 friend class UnitTestDataLoader;
933
934 private:
935 ObjectMgr();
936 ~ObjectMgr();
937
938 public:
939 ObjectMgr(ObjectMgr const&) = delete;
940 ObjectMgr(ObjectMgr&&) = delete;
941
942 ObjectMgr& operator= (ObjectMgr const&) = delete;
943 ObjectMgr& operator= (ObjectMgr&&) = delete;
944
945 static ObjectMgr* instance();
946
947 typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Quest>> QuestContainer;
948
949 typedef std::unordered_map<uint32, AreaTriggerTeleport> AreaTriggerContainer;
950
951 typedef std::map<uint32, uint32> AreaTriggerScriptContainer;
952
953 typedef std::unordered_map<uint32, std::unique_ptr<AccessRequirement>> AccessRequirementContainer;
954
955 typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer;
956 typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer;
957 typedef std::unordered_map<uint32, RepSpilloverTemplate> RepSpilloverTemplateContainer;
958
959 typedef std::unordered_map<uint32, PointOfInterest> PointOfInterestContainer;
960
961 typedef std::vector<std::string> ScriptNameContainer;
962
963 typedef std::map<uint32, uint32> CharacterConversionMap;
964
965 GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const;
966 GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; }
967 uint32 LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32>* skip_vendors);
968
969 void LoadGameObjectTemplate();
970 void LoadGameObjectTemplateAddons();
971 void LoadGameObjectOverrides();
972
973 CreatureTemplate const* GetCreatureTemplate(uint32 entry) const;
974 CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; }
975 CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const;
976 CreatureModelInfo const* GetCreatureModelRandomGender(uint32* displayID) const;
977 static uint32 ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr);
978 static void ChooseCreatureFlags(CreatureTemplate const* cinfo, uint32* npcflag, uint32* unit_flags, uint32* dynamicflags, CreatureData const* data = nullptr);
979 EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const;
980 CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const;
981 GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const;
982 GameObjectTemplateAddon const* GetGameObjectTemplateAddon(uint32 entry) const;
983 GameObjectOverride const* GetGameObjectOverride(ObjectGuid::LowType spawnId) const;
984 CreatureAddon const* GetCreatureTemplateAddon(uint32 entry) const;
985 CreatureMovementData const* GetCreatureMovementOverride(ObjectGuid::LowType spawnId) const;
986 ItemTemplate const* GetItemTemplate(uint32 entry) const;
987 ItemTemplateContainer const& GetItemTemplateStore() const { return _itemTemplateStore; }
988
989 uint32 GetModelForTotem(SummonSlot totemSlot, Races race) const;
990
992 {
993 ItemSetNameContainer::const_iterator itr = _itemSetNameStore.find(itemId);
994 if (itr != _itemSetNameStore.end())
995 return &itr->second;
996 return nullptr;
997 }
998
999 InstanceTemplateContainer const& GetInstanceTemplates() const { return _instanceTemplateStore; }
1000 InstanceTemplate const* GetInstanceTemplate(uint32 mapId) const;
1001
1002 PetLevelInfo const* GetPetLevelInfo(uint32 creature_id, uint8 level) const;
1003
1004 PlayerClassInfo const* GetPlayerClassInfo(uint32 class_) const { return class_ < MAX_CLASSES ? _playerClassInfo[class_].get() : nullptr; }
1005
1006 void GetPlayerClassLevelInfo(uint32 class_, uint8 level, PlayerClassLevelInfo* info) const;
1007
1008 PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const;
1009
1010 void GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const;
1011
1012 std::vector<uint32> const* GetGameObjectQuestItemList(uint32 id) const
1013 {
1014 GameObjectQuestItemMap::const_iterator itr = _gameObjectQuestItemStore.find(id);
1015 if (itr != _gameObjectQuestItemStore.end())
1016 return &itr->second;
1017 return nullptr;
1018 }
1019 GameObjectQuestItemMap const* GetGameObjectQuestItemMap() const { return &_gameObjectQuestItemStore; }
1020
1021 std::vector<uint32> const* GetCreatureQuestItemList(uint32 id) const
1022 {
1023 CreatureQuestItemMap::const_iterator itr = _creatureQuestItemStore.find(id);
1024 if (itr != _creatureQuestItemStore.end())
1025 return &itr->second;
1026 return nullptr;
1027 }
1028 CreatureQuestItemMap const* GetCreatureQuestItemMap() const { return &_creatureQuestItemStore; }
1029
1030 uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
1031 void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
1032 uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false);
1033
1034 Quest const* GetQuestTemplate(uint32 quest_id) const;
1035
1036 QuestContainer const& GetQuestTemplates() const { return _questTemplates; }
1037
1039 {
1040 QuestAreaTriggerContainer::const_iterator itr = _questAreaTriggerStore.find(Trigger_ID);
1041 if (itr != _questAreaTriggerStore.end())
1042 return itr->second;
1043 return 0;
1044 }
1045
1046 bool IsTavernAreaTrigger(uint32 Trigger_ID) const
1047 {
1048 return _tavernAreaTriggerStore.find(Trigger_ID) != _tavernAreaTriggerStore.end();
1049 }
1050
1052 {
1053 return _gameObjectForQuestStore.find(entry) != _gameObjectForQuestStore.end();
1054 }
1055
1056 GossipText const* GetGossipText(uint32 Text_ID) const;
1057 QuestGreeting const* GetQuestGreeting(ObjectGuid guid) const;
1058
1059 WorldSafeLocsEntry const* GetDefaultGraveyard(uint32 team) const;
1060 WorldSafeLocsEntry const* GetClosestGraveyard(float x, float y, float z, uint32 MapId, uint32 team, WorldObject* conditionObject) const;
1061 bool AddGraveyardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = true);
1062 void RemoveGraveyardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = false);
1063 void LoadGraveyardZones();
1064 GraveyardData const* FindGraveyardData(uint32 id, uint32 zone) const;
1065
1066 AreaTriggerTeleport const* GetAreaTrigger(uint32 trigger) const;
1067 AccessRequirement const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const;
1068 AreaTriggerTeleport const* GetGoBackTrigger(uint32 Map) const;
1069 AreaTriggerTeleport const* GetMapEntranceTrigger(uint32 Map) const;
1070
1071 uint32 GetAreaTriggerScriptId(uint32 trigger_id) const;
1072 SpellScriptsBounds GetSpellScriptsBounds(uint32 spellId);
1073
1074 RepRewardRate const* GetRepRewardRate(uint32 factionId) const
1075 {
1076 RepRewardRateContainer::const_iterator itr = _repRewardRateStore.find(factionId);
1077 if (itr != _repRewardRateStore.end())
1078 return &itr->second;
1079
1080 return nullptr;
1081 }
1082
1084 {
1085 RepOnKillContainer::const_iterator itr = _repOnKillStore.find(id);
1086 if (itr != _repOnKillStore.end())
1087 return &itr->second;
1088 return nullptr;
1089 }
1090
1091 int32 GetBaseReputationOf(FactionEntry const* factionEntry, uint8 race, uint8 playerClass) const;
1092
1094 {
1095 RepSpilloverTemplateContainer::const_iterator itr = _repSpilloverTemplateStore.find(factionId);
1096 if (itr != _repSpilloverTemplateStore.end())
1097 return &itr->second;
1098
1099 return nullptr;
1100 }
1101
1103 {
1104 PointOfInterestContainer::const_iterator itr = _pointsOfInterestStore.find(id);
1105 if (itr != _pointsOfInterestStore.end())
1106 return &itr->second;
1107 return nullptr;
1108 }
1109
1110 QuestPOIWrapper const* GetQuestPOIWrapper(uint32 questId) const;
1111
1112 VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const;
1113 VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
1114
1115 DungeonEncounterList const* GetDungeonEncounterList(uint32 mapId, Difficulty difficulty) const;
1116
1117 void LoadQuests();
1118 void LoadQuestStartersAndEnders();
1119 void LoadGameobjectQuestStarters();
1120 void LoadGameobjectQuestEnders();
1121 void LoadCreatureQuestStarters();
1122 void LoadCreatureQuestEnders();
1123
1124 QuestRelations* GetGOQuestRelationMapHACK() { return &_goQuestRelations; }
1125 QuestRelationResult GetGOQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestRelations, entry, true); }
1126 QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestInvolvedRelations, entry, false); }
1127 QuestRelations* GetCreatureQuestRelationMapHACK() { return &_creatureQuestRelations; }
1128 QuestRelationResult GetCreatureQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestRelations, entry, true); }
1129 QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestInvolvedRelations, entry, false); }
1130
1132 {
1133 return _exclusiveQuestGroups.equal_range(exclusiveGroupId);
1134 }
1135
1136 bool LoadTrinityStrings();
1137
1138 void LoadEventScripts();
1139 void LoadWaypointScripts();
1140
1141 void LoadSpellScriptNames();
1142 void ValidateSpellScripts();
1143
1144 void LoadBroadcastTexts();
1145 void LoadBroadcastTextLocales();
1146 void LoadCreatureClassLevelStats();
1147 void LoadCreatureLocales();
1148 void LoadCreatureTemplates();
1149 void LoadCreatureTemplateAddons();
1150 void LoadCreatureTemplate(Field* fields);
1151 void LoadCreatureTemplateResistances();
1152 void LoadCreatureTemplateSpells();
1153 void CheckCreatureTemplate(CreatureTemplate const* cInfo);
1154 void CheckCreatureMovement(char const* table, uint64 id, CreatureMovementData& creatureMovement);
1155 void LoadGameObjectQuestItems();
1156 void LoadCreatureQuestItems();
1157 void LoadTempSummons();
1158 void LoadCreatures();
1159 void LoadLinkedRespawn();
1160 bool SetCreatureLinkedRespawn(ObjectGuid::LowType guid, ObjectGuid::LowType linkedGuid);
1161 void LoadCreatureAddons();
1162 void LoadGameObjectAddons();
1163 void LoadCreatureModelInfo();
1164 void LoadPlayerTotemModels();
1165 void LoadEquipmentTemplates();
1166 void LoadCreatureMovementOverrides();
1167 void LoadGameObjectLocales();
1168 void LoadGameObjects();
1169 void LoadSpawnGroupTemplates();
1170 void LoadSpawnGroups();
1171 void LoadInstanceSpawnGroups();
1172 void LoadItemTemplates();
1173 void LoadItemLocales();
1174 void LoadItemSetNames();
1175 void LoadItemSetNameLocales();
1176 void LoadQuestLocales();
1177 void LoadNpcTextLocales();
1178 void LoadQuestOfferRewardLocale();
1179 void LoadQuestRequestItemsLocale();
1180 void LoadPageTextLocales();
1181 void LoadGossipMenuItemsLocales();
1182 void LoadPointOfInterestLocales();
1183 void LoadQuestGreetingLocales();
1184 void LoadInstanceTemplate();
1185 void LoadInstanceEncounters();
1186 void LoadMailLevelRewards();
1187 void LoadVehicleTemplateAccessories();
1188 void LoadVehicleTemplate();
1189 void LoadVehicleAccessories();
1190 void LoadVehicleSeatAddon();
1191
1192 void LoadGossipText();
1193
1194 void LoadAreaTriggerTeleports();
1195 void LoadAccessRequirements();
1196 void LoadQuestAreaTriggers();
1197 void LoadQuestGreetings();
1198 void LoadAreaTriggerScripts();
1199 void LoadTavernAreaTriggers();
1200 void LoadGameObjectForQuests();
1201
1202 void LoadPageTexts();
1203 PageText const* GetPageText(uint32 pageEntry);
1204
1205 void LoadPlayerInfo();
1206 void LoadPetLevelInfo();
1207 void LoadExplorationBaseXP();
1208 void LoadPetNames();
1209 void LoadPetNumber();
1210 void LoadFishingBaseSkillLevel();
1211
1212 void LoadReputationRewardRate();
1213 void LoadReputationOnKill();
1214 void LoadReputationSpilloverTemplate();
1215
1216 void LoadPointsOfInterest();
1217 void LoadQuestPOI();
1218
1219 void LoadNPCSpellClickSpells();
1220
1221 void LoadGameTele();
1222
1223 void LoadGossipMenu();
1224 void LoadGossipMenuItems();
1225
1226 void LoadVendors();
1227 void LoadTrainers();
1228 void LoadCreatureDefaultTrainers();
1229
1230 void InitializeQueriesData(QueryDataGroup mask);
1231
1232 std::string GeneratePetName(uint32 entry);
1233 uint32 GetBaseXP(uint8 level);
1234 uint32 GetXPForLevel(uint8 level) const;
1235
1237 {
1238 FishingBaseSkillContainer::const_iterator itr = _fishingBaseForAreaStore.find(entry);
1239 return itr != _fishingBaseForAreaStore.end() ? itr->second : 0;
1240 }
1241
1242 void ReturnOrDeleteOldMails(bool serverUp);
1243
1244 CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
1245
1246 void SetHighestGuids();
1247
1248 template<HighGuid type>
1250 {
1252 "Only global guid can be generated in ObjectMgr context");
1253 return GetGuidSequenceGenerator(type);
1254 }
1255
1256 uint32 GenerateAuctionID();
1257 uint64 GenerateEquipmentSetGuid();
1258 uint32 GenerateMailID();
1259 uint32 GeneratePetNumber();
1260 ObjectGuid::LowType GenerateCreatureSpawnId();
1261 ObjectGuid::LowType GenerateGameObjectSpawnId();
1262
1263 SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const { auto it = _spawnGroupDataStore.find(groupId); return it != _spawnGroupDataStore.end() ? &it->second : nullptr; }
1264 SpawnGroupTemplateData const* GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const { SpawnMetadata const* data = GetSpawnMetadata(type, spawnId); return data ? data->spawnGroupData : nullptr; }
1265 SpawnGroupTemplateData const* GetDefaultSpawnGroup() const { return &_spawnGroupDataStore.at(0); }
1266 SpawnGroupTemplateData const* GetLegacySpawnGroup() const { return &_spawnGroupDataStore.at(1); }
1268 std::vector<InstanceSpawnGroupInfo> const* GetSpawnGroupsForInstance(uint32 instanceId) const { auto it = _instanceSpawnGroupStore.find(instanceId); return it != _instanceSpawnGroupStore.end() ? &it->second : nullptr; }
1269
1270 MailLevelReward const* GetMailLevelReward(uint32 level, uint32 raceMask) const
1271 {
1272 MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
1273 if (map_itr == _mailLevelRewardStore.end())
1274 return nullptr;
1275
1276 for (MailLevelRewardList::const_iterator set_itr = map_itr->second.begin(); set_itr != map_itr->second.end(); ++set_itr)
1277 if (set_itr->raceMask & raceMask)
1278 return &*set_itr;
1279
1280 return nullptr;
1281 }
1282
1283 CellObjectGuids const* GetCellObjectGuids(uint16 mapid, uint8 spawnMode, uint32 cell_id);
1284
1285 CellObjectGuidsMap const* GetMapObjectGuids(uint16 mapid, uint8 spawnMode);
1286
1296 std::vector<TempSummonData> const* GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
1297 {
1298 TempSummonDataContainer::const_iterator itr = _tempSummonDataStore.find(TempSummonGroupKey(summonerId, summonerType, group));
1299 if (itr != _tempSummonDataStore.end())
1300 return &itr->second;
1301
1302 return nullptr;
1303 }
1304
1306 {
1307 BroadcastTextContainer::const_iterator itr = _broadcastTextStore.find(id);
1308 if (itr != _broadcastTextStore.end())
1309 return &itr->second;
1310 return nullptr;
1311 }
1312
1314 {
1315 if (SpawnData::TypeHasData(type))
1316 return GetSpawnData(type, spawnId);
1317 else
1318 return nullptr;
1319 }
1320
1322 {
1323 if (!SpawnData::TypeHasData(type))
1324 return nullptr;
1325 switch (type)
1326 {
1328 return GetCreatureData(spawnId);
1330 return GetGameObjectData(spawnId);
1331 default:
1332 ABORT_MSG("Invalid spawn object type %u", uint32(type));
1333 return nullptr;
1334 }
1335 }
1336 void OnDeleteSpawnData(SpawnData const* data);
1337 CreatureDataContainer const& GetAllCreatureData() const { return _creatureDataStore; }
1339 {
1340 CreatureDataContainer::const_iterator itr = _creatureDataStore.find(spawnId);
1341 if (itr == _creatureDataStore.end()) return nullptr;
1342 return &itr->second;
1343 }
1344 CreatureData& NewOrExistCreatureData(ObjectGuid::LowType spawnId) { return _creatureDataStore[spawnId]; }
1345 void DeleteCreatureData(ObjectGuid::LowType spawnId);
1347 {
1348 LinkedRespawnContainer::const_iterator itr = _linkedRespawnStore.find(spawnId);
1349 if (itr == _linkedRespawnStore.end()) return ObjectGuid::Empty;
1350 return itr->second;
1351 }
1353 {
1354 CreatureLocaleContainer::const_iterator itr = _creatureLocaleStore.find(entry);
1355 if (itr == _creatureLocaleStore.end()) return nullptr;
1356 return &itr->second;
1357 }
1358 GameObjectDataContainer const& GetAllGameObjectData() const { return _gameObjectDataStore; }
1360 {
1361 GameObjectDataContainer::const_iterator itr = _gameObjectDataStore.find(spawnId);
1362 if (itr == _gameObjectDataStore.end()) return nullptr;
1363 return &itr->second;
1364 }
1365 GameObjectData& NewOrExistGameObjectData(ObjectGuid::LowType spawnId) { return _gameObjectDataStore[spawnId]; }
1366 void DeleteGameObjectData(ObjectGuid::LowType spawnId);
1368 {
1369 GameObjectLocaleContainer::const_iterator itr = _gameObjectLocaleStore.find(entry);
1370 if (itr == _gameObjectLocaleStore.end()) return nullptr;
1371 return &itr->second;
1372 }
1373 ItemLocale const* GetItemLocale(uint32 entry) const
1374 {
1375 ItemLocaleContainer::const_iterator itr = _itemLocaleStore.find(entry);
1376 if (itr == _itemLocaleStore.end()) return nullptr;
1377 return &itr->second;
1378 }
1380 {
1381 ItemSetNameLocaleContainer::const_iterator itr = _itemSetNameLocaleStore.find(entry);
1382 if (itr == _itemSetNameLocaleStore.end())return nullptr;
1383 return &itr->second;
1384 }
1386 {
1387 QuestLocaleContainer::const_iterator itr = _questLocaleStore.find(entry);
1388 if (itr == _questLocaleStore.end()) return nullptr;
1389 return &itr->second;
1390 }
1392 {
1393 auto itr = _questOfferRewardLocaleStore.find(entry);
1394 if (itr == _questOfferRewardLocaleStore.end()) return nullptr;
1395 return &itr->second;
1396 }
1398 {
1399 auto itr = _questRequestItemsLocaleStore.find(entry);
1400 if (itr == _questRequestItemsLocaleStore.end()) return nullptr;
1401 return &itr->second;
1402 }
1404 {
1405 NpcTextLocaleContainer::const_iterator itr = _npcTextLocaleStore.find(entry);
1406 if (itr == _npcTextLocaleStore.end()) return nullptr;
1407 return &itr->second;
1408 }
1410 {
1411 PageTextLocaleContainer::const_iterator itr = _pageTextLocaleStore.find(entry);
1412 if (itr == _pageTextLocaleStore.end()) return nullptr;
1413 return &itr->second;
1414 }
1416 {
1417 auto itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionId));
1418 if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr;
1419 return &itr->second;
1420 }
1422 {
1423 PointOfInterestLocaleContainer::const_iterator itr = _pointOfInterestLocaleStore.find(id);
1424 if (itr == _pointOfInterestLocaleStore.end()) return nullptr;
1425 return &itr->second;
1426 }
1428 {
1429 QuestGreetingLocaleContainer::const_iterator itr = _questGreetingLocaleStore.find(id);
1430 if (itr == _questGreetingLocaleStore.end()) return nullptr;
1431 return &itr->second;
1432 }
1433
1435 {
1436 TrinityStringContainer::const_iterator itr = _trinityStringStore.find(entry);
1437 if (itr == _trinityStringStore.end())
1438 return nullptr;
1439 return &itr->second;
1440 }
1441 char const* GetTrinityString(uint32 entry, LocaleConstant locale) const;
1442 char const* GetTrinityStringForDBCLocale(uint32 entry) const { return GetTrinityString(entry, DBCLocaleIndex); }
1443 LocaleConstant GetDBCLocaleIndex() const { return DBCLocaleIndex; }
1444 void SetDBCLocaleIndex(LocaleConstant locale) { DBCLocaleIndex = locale; }
1445
1446 // grid objects
1447 void AddCreatureToGrid(ObjectGuid::LowType guid, CreatureData const* data);
1448 void RemoveCreatureFromGrid(ObjectGuid::LowType guid, CreatureData const* data);
1449 void AddGameobjectToGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1450 void RemoveGameobjectFromGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1451 ObjectGuid::LowType AddGameObjectData(uint32 entry, uint32 map, Position const& pos, QuaternionData const& rot, uint32 spawntimedelay = 0);
1452 ObjectGuid::LowType AddCreatureData(uint32 entry, uint32 map, Position const& pos, uint32 spawntimedelay = 0);
1453
1454 // reserved names
1455 void LoadReservedPlayersNames();
1456 bool IsReservedName(std::string_view name) const;
1457
1458 // name with valid structure and symbols
1459 static ResponseCodes CheckPlayerName(std::string_view name, LocaleConstant locale, bool create = false);
1460 static PetNameInvalidReason CheckPetName(std::string_view name, LocaleConstant locale);
1461 static bool IsValidCharterName(std::string_view name);
1462
1463 static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names);
1464
1465 GameTele const* GetGameTele(uint32 id) const
1466 {
1467 GameTeleContainer::const_iterator itr = _gameTeleStore.find(id);
1468 if (itr == _gameTeleStore.end()) return nullptr;
1469 return &itr->second;
1470 }
1471 GameTele const* GetGameTele(std::string_view name) const;
1472 GameTele const* GetGameTeleExactName(std::string_view name) const;
1473 GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; }
1474 bool AddGameTele(GameTele& data);
1475 bool DeleteGameTele(std::string_view name);
1476
1477 Trainer::Trainer const* GetTrainer(uint32 creatureId) const;
1478 std::vector<Trainer::Trainer const*> const& GetClassTrainers(uint8 classId) const { return _classTrainers.at(classId); }
1479
1481 {
1482 CacheVendorItemContainer::const_iterator iter = _cacheVendorItemStore.find(entry);
1483 if (iter == _cacheVendorItemStore.end())
1484 return nullptr;
1485
1486 return &iter->second;
1487 }
1488 void AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, bool persist = true); // for event
1489 bool RemoveVendorItem(uint32 entry, uint32 item, bool persist = true); // for event
1490 bool IsVendorItemValid(uint32 vendor_entry, uint32 id, int32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* player = nullptr, std::set<uint32>* skip_vendors = nullptr, uint32 ORnpcflag = 0) const;
1491
1492 void LoadScriptNames();
1493 ScriptNameContainer const& GetAllScriptNames() const;
1494 std::string const& GetScriptName(uint32 id) const;
1495 uint32 GetScriptId(std::string const& name);
1496
1501
1503 {
1504 return _gossipMenusStore.equal_range(uiMenuId);
1505 }
1506
1508 {
1509 return _gossipMenusStore.equal_range(uiMenuId);
1510 }
1511
1513 {
1514 return _gossipMenuItemsStore.equal_range(uiMenuId);
1515 }
1517 {
1518 return _gossipMenuItemsStore.equal_range(uiMenuId);
1519 }
1520
1521 // for wintergrasp only
1523
1524 static void AddLocaleString(std::string&& value, LocaleConstant localeConstant, std::vector<std::string>& data);
1525 static std::string_view GetLocaleString(std::vector<std::string> const& data, size_t locale)
1526 {
1527 if (locale < data.size())
1528 return data[locale];
1529 else
1530 return {};
1531 }
1532 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string& value)
1533 {
1534 if (std::string_view str = GetLocaleString(data, static_cast<size_t>(localeConstant)); !str.empty())
1535 value.assign(str);
1536 }
1537
1544
1545 void LoadFactionChangeAchievements();
1546 void LoadFactionChangeItems();
1547 void LoadFactionChangeQuests();
1548 void LoadFactionChangeReputations();
1549 void LoadFactionChangeSpells();
1550 void LoadFactionChangeTitles();
1551
1552 bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; }
1553
1555 {
1556 VehicleSeatAddonContainer::const_iterator itr = _vehicleSeatAddonStore.find(seatId);
1557 if (itr == _vehicleSeatAddonStore.end())
1558 return nullptr;
1559
1560 return &itr->second;
1561 }
1562
1563 private:
1564 // first free id for selected id type
1567 std::atomic<uint32> _mailId;
1568 std::atomic<uint32> _hiPetNumber;
1569
1572
1573 // first free low guid for selected guid type
1574 ObjectGuidGenerator& GetGuidSequenceGenerator(HighGuid high);
1575
1576 std::map<HighGuid, std::unique_ptr<ObjectGuidGenerator>> _guidGenerators;
1578
1579 typedef std::unordered_map<uint32, GossipText> GossipTextContainer;
1580 typedef std::map<uint32, uint32> QuestAreaTriggerContainer;
1581 typedef std::set<uint32> TavernAreaTriggerContainer;
1582 typedef std::set<uint32> GameObjectForQuestContainer;
1583
1593
1597
1601
1603
1608
1610
1611 //character reserved names
1612 typedef std::set<std::wstring> ReservedNamesContainer;
1614
1616
1618
1620
1622
1623 std::unordered_map<uint32, VehicleTemplate> _vehicleTemplateStore;
1626
1628
1631
1632 private:
1633 void LoadScripts(ScriptsType type);
1634 void LoadQuestRelationsHelper(QuestRelations& map, std::string const& table);
1635 QuestRelationResult GetQuestRelationsFrom(QuestRelations const& map, uint32 key, bool onlyActive) const { return { map.equal_range(key), onlyActive }; }
1636 void PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count);
1637
1639
1641
1642 typedef std::unordered_map<uint32 /*creatureId*/, std::unique_ptr<PetLevelInfo[] /*level*/>> PetLevelInfoContainer;
1644
1645 std::unique_ptr<PlayerClassInfo> _playerClassInfo[MAX_CLASSES];
1646
1647 void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const;
1648
1649 std::unique_ptr<PlayerInfo> _playerInfo[MAX_RACES][MAX_CLASSES];
1650
1651 typedef std::vector<uint32> PlayerXPperLevel; // [level]
1653
1654 typedef std::map<uint32, uint32> BaseXPContainer; // [area level][base xp]
1656
1657 typedef std::map<uint32, int32> FishingBaseSkillContainer; // [areaId][base skill level]
1659
1660 typedef std::map<uint32, std::vector<std::string>> HalfNameContainer;
1663
1664 typedef std::unordered_map<uint32, ItemSetNameEntry> ItemSetNameContainer;
1666
1673 std::unordered_map<ObjectGuid::LowType, CreatureMovementData> _creatureMovementOverrides;
1690
1698
1704
1706
1708 std::unordered_map<uint32, Trainer::Trainer> _trainers;
1709 std::unordered_map<uint8, std::vector<Trainer::Trainer const*>> _classTrainers;
1710 std::unordered_map<uint32, Trainer::Trainer const*> _creatureDefaultTrainers;
1711
1712 std::set<uint32> _difficultyEntries[MAX_DIFFICULTY - 1]; // already loaded difficulty 1 value in creatures, used in CheckCreatureTemplate
1713 std::set<uint32> _hasDifficultyEntries[MAX_DIFFICULTY - 1]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate
1714
1715 std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
1716
1719};
1720
1721#define sObjectMgr ObjectMgr::instance()
1722
1723#endif
LocaleConstant
Definition Common.h:48
#define DEFAULT_LOCALE
Definition Common.h:62
std::vector< Condition * > ConditionContainer
Difficulty
Definition DBCEnums.h:279
#define MAX_DIFFICULTY
Definition DBCEnums.h:296
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int8_t int8
Definition Define.h:131
int32_t int32
Definition Define.h:129
uint64_t uint64
Definition Define.h:132
uint16_t uint16
Definition Define.h:134
uint32_t uint32
Definition Define.h:133
#define ABORT_MSG
Definition Errors.h:75
GossipOptionIcon
Definition GossipDef.h:59
TempSummonType
HighGuid
Definition ObjectGuid.h:63
std::unordered_map< uint32, VendorItemData > CacheVendorItemContainer
Definition ObjectMgr.h:863
std::unordered_map< uint8, EquipmentInfo > EquipmentInfoContainerInternal
Definition ObjectMgr.h:540
std::pair< GraveyardContainer::iterator, GraveyardContainer::iterator > GraveyardMapBoundsNonConst
Definition ObjectMgr.h:861
eScriptFlags
Definition ObjectMgr.h:183
@ SF_CASTSPELL_SOURCE_TO_SOURCE
Definition ObjectMgr.h:201
@ SF_CASTSPELL_SOURCE_TO_TARGET
Definition ObjectMgr.h:200
@ SF_CASTSPELL_TRIGGERED
Definition ObjectMgr.h:205
@ SF_CASTSPELL_TARGET_TO_SOURCE
Definition ObjectMgr.h:203
@ SF_REMOVEAURA_REVERSE
Definition ObjectMgr.h:197
@ SF_PLAYSOUND_DISTANCE_SOUND
Definition ObjectMgr.h:209
@ SF_TALK_USE_PLAYER
Definition ObjectMgr.h:185
@ SF_TELEPORT_USE_CREATURE
Definition ObjectMgr.h:191
@ SF_KILLCREDIT_REWARD_GROUP
Definition ObjectMgr.h:194
@ SF_PLAYSOUND_TARGET_PLAYER
Definition ObjectMgr.h:208
@ SF_CASTSPELL_TARGET_TO_TARGET
Definition ObjectMgr.h:202
@ SF_EMOTE_USE_STATE
Definition ObjectMgr.h:188
@ SF_CASTSPELL_SEARCH_CREATURE
Definition ObjectMgr.h:204
@ SF_ORIENTATION_FACE_TARGET
Definition ObjectMgr.h:212
std::unordered_map< uint32, CreatureAddon > CreatureTemplateAddonContainer
Definition ObjectMgr.h:536
std::unordered_map< uint32, CreatureModelInfo > CreatureModelContainer
Definition ObjectMgr.h:542
std::vector< PlayerCreateInfoItem > PlayerCreateInfoItems
Definition ObjectMgr.h:641
std::unordered_map< uint32, std::vector< uint32 > > CreatureQuestItemMap
Definition ObjectMgr.h:543
std::set< ObjectGuid::LowType > CellGuidSet
Definition ObjectMgr.h:515
std::multimap< uint32, SpawnMetadata const * > SpawnGroupLinkContainer
Definition ObjectMgr.h:551
std::pair< GraveyardContainer::const_iterator, GraveyardContainer::const_iterator > GraveyardMapBounds
Definition ObjectMgr.h:860
std::multimap< uint32, ScriptInfo > ScriptMap
Definition ObjectMgr.h:410
std::unordered_map< uint32, QuestLocale > QuestLocaleContainer
Definition ObjectMgr.h:559
std::unordered_map< uint32, QuestGreetingLocale > QuestGreetingLocaleContainer
Definition ObjectMgr.h:580
SkillRangeType GetSkillRangeType(SkillRaceClassInfoEntry const *rcEntry)
std::pair< SpellScriptsContainer::iterator, SpellScriptsContainer::iterator > SpellScriptsBounds
Definition ObjectMgr.h:413
std::unordered_map< uint32, ItemTemplate > ItemTemplateContainer
Definition ObjectMgr.h:556
std::unordered_map< ObjectGuid::LowType, CreatureData > CreatureDataContainer
Definition ObjectMgr.h:537
ScriptMapMap * GetScriptsMapByType(ScriptsType type)
Definition ObjectMgr.cpp:75
std::unordered_map< uint32, CreatureLocale > CreatureLocaleContainer
Definition ObjectMgr.h:554
std::map< std::pair< SummonSlot, Races >, uint32 > PlayerTotemModelMap
Definition ObjectMgr.h:914
ScriptCommands
Definition ObjectMgr.h:101
@ SCRIPT_COMMAND_EMOTE
Definition ObjectMgr.h:103
@ SCRIPT_COMMAND_CREATE_ITEM
Definition ObjectMgr.h:119
@ SCRIPT_COMMAND_DESPAWN_SELF
Definition ObjectMgr.h:120
@ SCRIPT_COMMAND_CLOSE_DOOR
Definition ObjectMgr.h:114
@ SCRIPT_COMMAND_CAST_SPELL
Definition ObjectMgr.h:117
@ SCRIPT_COMMAND_RESPAWN_GAMEOBJECT
Definition ObjectMgr.h:111
@ SCRIPT_COMMAND_QUEST_EXPLORED
Definition ObjectMgr.h:109
@ SCRIPT_COMMAND_ACTIVATE_OBJECT
Definition ObjectMgr.h:115
@ SCRIPT_COMMAND_TALK
Definition ObjectMgr.h:102
@ SCRIPT_COMMAND_OPEN_DOOR
Definition ObjectMgr.h:113
@ SCRIPT_COMMAND_EQUIP
Definition ObjectMgr.h:128
@ SCRIPT_COMMAND_FIELD_SET
Definition ObjectMgr.h:104
@ SCRIPT_COMMAND_PLAYMOVIE
Definition ObjectMgr.h:131
@ SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT
Definition ObjectMgr.h:123
@ SCRIPT_COMMAND_PLAY_ANIMKIT
Definition ObjectMgr.h:133
@ SCRIPT_COMMAND_TELEPORT_TO
Definition ObjectMgr.h:108
@ SCRIPT_COMMAND_MOVE_TO
Definition ObjectMgr.h:105
@ SCRIPT_COMMAND_FLAG_SET
Definition ObjectMgr.h:106
@ SCRIPT_COMMAND_TEMP_SUMMON_CREATURE
Definition ObjectMgr.h:112
@ SCRIPT_COMMAND_MOVEMENT
Definition ObjectMgr.h:132
@ SCRIPT_COMMAND_KILL_CREDIT
Definition ObjectMgr.h:110
@ SCRIPT_COMMAND_KILL
Definition ObjectMgr.h:124
@ SCRIPT_COMMAND_LOAD_PATH
Definition ObjectMgr.h:122
@ SCRIPT_COMMAND_ORIENTATION
Definition ObjectMgr.h:127
@ SCRIPT_COMMAND_PLAY_SOUND
Definition ObjectMgr.h:118
@ SCRIPT_COMMAND_MODEL
Definition ObjectMgr.h:129
@ SCRIPT_COMMAND_CLOSE_GOSSIP
Definition ObjectMgr.h:130
@ SCRIPT_COMMAND_REMOVE_AURA
Definition ObjectMgr.h:116
@ SCRIPT_COMMAND_FLAG_REMOVE
Definition ObjectMgr.h:107
TC_GAME_API LanguageDesc lang_description[LANGUAGES_COUNT]
std::vector< PlayerCreateInfoSkill > PlayerCreateInfoSkills
Definition ObjectMgr.h:679
std::unordered_map< uint32, GameObjectTemplateAddon > GameObjectTemplateAddonContainer
Definition ObjectMgr.h:545
std::string GetScriptCommandName(ScriptCommands command)
Definition ObjectMgr.cpp:87
QueryDataGroup
Definition ObjectMgr.h:917
@ QUERY_DATA_CREATURES
Definition ObjectMgr.h:918
@ QUERY_DATA_QUESTS
Definition ObjectMgr.h:921
@ QUERY_DATA_GAMEOBJECTS
Definition ObjectMgr.h:919
@ QUERY_DATA_ITEMS
Definition ObjectMgr.h:920
@ QUERY_DATA_ALL
Definition ObjectMgr.h:924
@ QUERY_DATA_POIS
Definition ObjectMgr.h:922
std::list< MailLevelReward > MailLevelRewardList
Definition ObjectMgr.h:725
std::multimap< uint32, GraveyardData > GraveyardContainer
Definition ObjectMgr.h:859
std::multimap< uint32, GossipMenus > GossipMenusContainer
Definition ObjectMgr.h:796
std::unordered_map< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition ObjectMgr.h:544
std::unordered_map< uint32, std::vector< uint32 > > GameObjectQuestItemMap
Definition ObjectMgr.h:549
LanguageDesc const * GetLanguageDescByID(uint32 lang)
std::unordered_map< uint32, GameTele > GameTeleContainer
Definition ObjectMgr.h:170
std::unordered_map< ObjectGuid::LowType, GameObjectData > GameObjectDataContainer
Definition ObjectMgr.h:547
std::vector< uint32 > PlayerCreateInfoSpells
Definition ObjectMgr.h:660
std::unordered_map< uint32, PageTextLocale > PageTextLocaleContainer
Definition ObjectMgr.h:563
std::unordered_map< uint32, NpcTextLocale > NpcTextLocaleContainer
Definition ObjectMgr.h:562
std::map< ObjectGuid, ObjectGuid > LinkedRespawnContainer
Definition ObjectMgr.h:534
std::unordered_map< uint32, CellObjectGuids > CellObjectGuidsMap
Definition ObjectMgr.h:521
TC_GAME_API ScriptMapMap sEventScripts
Definition ObjectMgr.cpp:60
std::multimap< int32, uint32 > ExclusiveQuestGroups
Definition ObjectMgr.h:702
std::unordered_map< uint32, GameObjectLocale > GameObjectLocaleContainer
Definition ObjectMgr.h:555
std::unordered_map< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
Definition ObjectMgr.h:541
std::multimap< uint32, SpellClickInfo > SpellClickInfoContainer
Definition ObjectMgr.h:448
std::unordered_map< uint8, std::unordered_map< uint32, QuestGreeting > > QuestGreetingContainer
Definition ObjectMgr.h:851
std::pair< GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator > GossipMenuItemsMapBoundsNonConst
Definition ObjectMgr.h:801
std::unordered_map< uint32, DungeonEncounterList > DungeonEncounterContainer
Definition ObjectMgr.h:912
std::pair< GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator > GossipMenusMapBounds
Definition ObjectMgr.h:797
std::unordered_map< uint32, TrinityString > TrinityStringContainer
Definition ObjectMgr.h:582
std::unordered_map< ObjectGuid::LowType, CreatureAddon > CreatureAddonContainer
Definition ObjectMgr.h:538
std::pair< GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator > GossipMenuItemsMapBounds
Definition ObjectMgr.h:800
std::multimap< uint32, std::pair< uint32, bool > > SpellScriptsContainer
Definition ObjectMgr.h:412
std::unordered_map< uint32, PointOfInterestLocale > PointOfInterestLocaleContainer
Definition ObjectMgr.h:579
std::unordered_map< ObjectGuid::LowType, GameObjectAddon > GameObjectAddonContainer
Definition ObjectMgr.h:548
TC_GAME_API ScriptMapMap sWaypointScripts
Definition ObjectMgr.cpp:61
std::unordered_map< uint32, CreatureTemplate > CreatureTemplateContainer
Definition ObjectMgr.h:535
std::map< uint32, PageText > PageTextContainer
Definition ObjectMgr.h:148
ChatType
Definition ObjectMgr.h:137
@ CHAT_TYPE_SAY
Definition ObjectMgr.h:138
@ CHAT_TYPE_BOSS_WHISPER
Definition ObjectMgr.h:143
@ CHAT_TYPE_TEXT_EMOTE
Definition ObjectMgr.h:140
@ CHAT_TYPE_BOSS_EMOTE
Definition ObjectMgr.h:141
@ CHAT_TYPE_END
Definition ObjectMgr.h:145
@ CHAT_TYPE_ZONE_YELL
Definition ObjectMgr.h:144
@ CHAT_TYPE_WHISPER
Definition ObjectMgr.h:142
@ CHAT_TYPE_YELL
Definition ObjectMgr.h:139
std::unordered_map< uint32, QuestOfferRewardLocale > QuestOfferRewardLocaleContainer
Definition ObjectMgr.h:560
std::unordered_map< uint32, ItemLocale > ItemLocaleContainer
Definition ObjectMgr.h:557
std::multimap< uint32, GossipMenuItems > GossipMenuItemsContainer
Definition ObjectMgr.h:799
std::map< uint32, ScriptMap > ScriptMapMap
Definition ObjectMgr.h:411
std::unordered_map< uint16, std::vector< InstanceSpawnGroupInfo > > InstanceSpawnGroupContainer
Definition ObjectMgr.h:552
SummonerType
Definition ObjectMgr.h:65
@ SUMMONER_TYPE_MAP
Definition ObjectMgr.h:68
@ SUMMONER_TYPE_CREATURE
Definition ObjectMgr.h:66
@ SUMMONER_TYPE_GAMEOBJECT
Definition ObjectMgr.h:67
std::string GetScriptsTableNameByType(ScriptsType type)
Definition ObjectMgr.cpp:63
EncounterCreditType
Definition ObjectMgr.h:895
@ ENCOUNTER_CREDIT_KILL_CREATURE
Definition ObjectMgr.h:896
@ ENCOUNTER_CREDIT_CAST_SPELL
Definition ObjectMgr.h:897
std::unordered_map< uint32, SpawnGroupTemplateData > SpawnGroupDataContainer
Definition ObjectMgr.h:550
std::unordered_map< uint32, VehicleSeatAddon > VehicleSeatAddonContainer
Definition ObjectMgr.h:564
std::pair< ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator > ExclusiveQuestGroupsBounds
Definition ObjectMgr.h:703
std::map< TempSummonGroupKey, std::vector< TempSummonData > > TempSummonDataContainer
Definition ObjectMgr.h:553
std::unordered_map< ObjectGuid::LowType, GameObjectOverride > GameObjectOverrideContainer
Definition ObjectMgr.h:546
std::unordered_map< uint32, QuestPOIWrapper > QuestPOIContainer
Definition ObjectMgr.h:838
std::unordered_map< uint32, QuestRequestItemsLocale > QuestRequestItemsLocaleContainer
Definition ObjectMgr.h:561
std::unordered_map< uint16, CreatureBaseStats > CreatureBaseStatsContainer
Definition ObjectMgr.h:539
ScriptsType
Definition ObjectMgr.h:173
@ SCRIPTS_WAYPOINT
Definition ObjectMgr.h:177
@ SCRIPTS_FIRST
Definition ObjectMgr.h:174
@ SCRIPTS_EVENT
Definition ObjectMgr.h:176
@ SCRIPTS_LAST
Definition ObjectMgr.h:179
TC_GAME_API bool normalizePlayerName(std::string &name)
std::multimap< uint32, uint32 > QuestRelations
Definition ObjectMgr.h:584
std::vector< std::unique_ptr< DungeonEncounter const > > DungeonEncounterList
Definition ObjectMgr.h:911
std::unordered_map< uint32, BroadcastText > BroadcastTextContainer
Definition ObjectMgr.h:513
std::unordered_map< uint16, InstanceTemplate > InstanceTemplateContainer
Definition ObjectMgr.h:157
std::unordered_map< std::pair< uint32, uint32 >, GossipMenuItemsLocale > GossipMenuItemsLocaleContainer
Definition ObjectMgr.h:572
std::unordered_map< uint8, MailLevelRewardList > MailLevelRewardContainer
Definition ObjectMgr.h:726
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Definition ObjectMgr.h:798
std::unordered_map< uint32, CellObjectGuidsMap > MapObjectGuids
Definition ObjectMgr.h:522
std::vector< PlayerCreateInfoAction > PlayerCreateInfoActions
Definition ObjectMgr.h:671
std::unordered_map< uint32, ItemSetNameLocale > ItemSetNameLocaleContainer
Definition ObjectMgr.h:558
SkillRangeType
Definition ObjectMgr.h:866
@ SKILL_RANGE_MONO
Definition ObjectMgr.h:869
@ SKILL_RANGE_NONE
Definition ObjectMgr.h:871
@ SKILL_RANGE_LANGUAGE
Definition ObjectMgr.h:867
@ SKILL_RANGE_RANK
Definition ObjectMgr.h:870
@ SKILL_RANGE_LEVEL
Definition ObjectMgr.h:868
#define LANGUAGES_COUNT
Language
@ GENDER_MALE
@ GENDER_FEMALE
@ GENDER_NONE
ResponseCodes
#define MAX_RACES
SpellClickUserTypes
#define MAX_CLASSES
SummonSlot
Races
@ MAX_STATS
PetNameInvalidReason
#define MAX_SPILLOVER_FACTIONS
SpawnObjectType
Definition SpawnData.h:30
@ SPAWN_TYPE_GAMEOBJECT
Definition SpawnData.h:32
@ SPAWN_TYPE_CREATURE
Definition SpawnData.h:31
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:92
Definition Item.h:62
Definition Map.h:281
static ObjectGuid const Empty
Definition ObjectGuid.h:140
uint32 LowType
Definition ObjectGuid.h:142
GameObjectLocale const * GetGameObjectLocale(uint32 entry) const
Definition ObjectMgr.h:1367
SpawnGroupTemplateData const * GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1264
QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore
Definition ObjectMgr.h:1696
std::unordered_map< uint32, RepRewardRate > RepRewardRateContainer
Definition ObjectMgr.h:955
std::vector< Trainer::Trainer const * > const & GetClassTrainers(uint8 classId) const
Definition ObjectMgr.h:1478
CharacterConversionMap FactionChangeAchievements
Definition ObjectMgr.h:1538
int32 GetFishingBaseSkillLevel(uint32 entry) const
Definition ObjectMgr.h:1236
TempSummonDataContainer _tempSummonDataStore
Stores temp summon data grouped by summoner's entry, summoner's type and group id.
Definition ObjectMgr.h:1689
QuestRelations _creatureQuestInvolvedRelations
Definition ObjectMgr.h:1607
ItemSetNameLocale const * GetItemSetNameLocale(uint32 entry) const
Definition ObjectMgr.h:1379
VehicleAccessoryContainer _vehicleAccessoryStore
Definition ObjectMgr.h:1625
GameObjectTemplateAddonContainer _gameObjectTemplateAddonStore
Definition ObjectMgr.h:1683
TrinityString const * GetTrinityString(uint32 entry) const
Definition ObjectMgr.h:1434
VehicleSeatAddon const * GetVehicleSeatAddon(uint32 seatId) const
Definition ObjectMgr.h:1554
PointOfInterest const * GetPointOfInterest(uint32 id) const
Definition ObjectMgr.h:1102
QuestRelations * GetGOQuestRelationMapHACK()
Definition ObjectMgr.h:1124
QuestLocale const * GetQuestLocale(uint32 entry) const
Definition ObjectMgr.h:1385
NpcTextLocale const * GetNpcTextLocale(uint32 entry) const
Definition ObjectMgr.h:1403
GameTeleContainer _gameTeleStore
Definition ObjectMgr.h:1615
CreatureQuestItemMap const * GetCreatureQuestItemMap() const
Definition ObjectMgr.h:1028
std::unordered_map< uint32, AreaTriggerTeleport > AreaTriggerContainer
Definition ObjectMgr.h:949
HalfNameContainer _petHalfName1
Definition ObjectMgr.h:1662
GossipTextContainer _gossipTextStore
Definition ObjectMgr.h:1587
std::set< std::wstring > ReservedNamesContainer
Definition ObjectMgr.h:1612
BroadcastText const * GetBroadcastText(uint32 id) const
Definition ObjectMgr.h:1305
ReputationOnKillEntry const * GetReputationOnKilEntry(uint32 id) const
Definition ObjectMgr.h:1083
MailLevelReward const * GetMailLevelReward(uint32 level, uint32 raceMask) const
Definition ObjectMgr.h:1270
InstanceTemplateContainer const & GetInstanceTemplates() const
Definition ObjectMgr.h:999
QuestContainer const & GetQuestTemplates() const
Definition ObjectMgr.h:1036
SpellScriptsContainer _spellScriptsStore
Definition ObjectMgr.h:1621
SpawnGroupDataContainer _spawnGroupDataStore
Definition ObjectMgr.h:1685
CreatureDataContainer _creatureDataStore
Definition ObjectMgr.h:1668
QuestRelations _goQuestRelations
Definition ObjectMgr.h:1604
CreatureBaseStatsContainer _creatureBaseStatsStore
Definition ObjectMgr.h:1640
CreatureLocale const * GetCreatureLocale(uint32 entry) const
Definition ObjectMgr.h:1352
ScriptNameContainer _scriptNamesStore
Definition ObjectMgr.h:1617
GossipMenuItemsMapBounds GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1512
std::map< uint32, int32 > FishingBaseSkillContainer
Definition ObjectMgr.h:1657
TavernAreaTriggerContainer _tavernAreaTriggerStore
Definition ObjectMgr.h:1585
QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1129
PageTextLocaleContainer _pageTextLocaleStore
Definition ObjectMgr.h:1700
EquipmentInfoContainer _equipmentInfoStore
Definition ObjectMgr.h:1677
GossipMenuItemsMapBoundsNonConst GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1516
std::set< uint32 > GameObjectForQuestContainer
Definition ObjectMgr.h:1582
ObjectGuid::LowType _gameObjectSpawnId
Definition ObjectMgr.h:1571
AccessRequirementContainer _accessRequirementStore
Definition ObjectMgr.h:1591
QuestGreetingLocaleContainer _questGreetingLocaleStore
Definition ObjectMgr.h:1703
SpawnData const * GetSpawnData(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1321
CreatureTemplateContainer _creatureTemplateStore
Definition ObjectMgr.h:1669
std::vector< std::string > ScriptNameContainer
Definition ObjectMgr.h:961
CreatureDataContainer const & GetAllCreatureData() const
Definition ObjectMgr.h:1337
CharacterConversionMap FactionChangeReputation
Definition ObjectMgr.h:1541
QuestRequestItemsLocaleContainer _questRequestItemsLocaleStore
Definition ObjectMgr.h:1697
std::unordered_map< uint32, Trainer::Trainer > _trainers
Definition ObjectMgr.h:1708
ObjectMgr(ObjectMgr &&)=delete
ObjectGuid GetLinkedRespawnGuid(ObjectGuid spawnId) const
Definition ObjectMgr.h:1346
QuestRelationResult GetQuestRelationsFrom(QuestRelations const &map, uint32 key, bool onlyActive) const
Definition ObjectMgr.h:1635
ItemSetNameContainer _itemSetNameStore
Definition ObjectMgr.h:1665
QuestGreetingContainer _questGreetingStore
Definition ObjectMgr.h:1588
SpawnGroupTemplateData const * GetLegacySpawnGroup() const
Definition ObjectMgr.h:1266
std::set< uint32 > _transportMaps
Definition ObjectMgr.h:1715
PlayerClassInfo const * GetPlayerClassInfo(uint32 class_) const
Definition ObjectMgr.h:1004
std::unordered_map< ObjectGuid::LowType, CreatureMovementData > _creatureMovementOverrides
Definition ObjectMgr.h:1673
GraveyardContainer GraveyardStore
Definition ObjectMgr.h:1522
std::unordered_map< uint32, RepSpilloverTemplate > RepSpilloverTemplateContainer
Definition ObjectMgr.h:957
GameObjectDataContainer const & GetAllGameObjectData() const
Definition ObjectMgr.h:1358
GameObjectTemplateContainer _gameObjectTemplateStore
Definition ObjectMgr.h:1682
std::vector< TempSummonData > const * GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
Definition ObjectMgr.h:1296
InstanceSpawnGroupContainer _instanceSpawnGroupStore
Definition ObjectMgr.h:1687
PlayerTotemModelMap _playerTotemModel
Definition ObjectMgr.h:1717
std::unordered_map< uint32, PointOfInterest > PointOfInterestContainer
Definition ObjectMgr.h:959
ObjectGuidGenerator & GetGenerator()
Definition ObjectMgr.h:1249
bool IsGameObjectForQuests(uint32 entry) const
Definition ObjectMgr.h:1051
GameObjectData const * GetGameObjectData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1359
ItemTemplateContainer _itemTemplateStore
Definition ObjectMgr.h:1692
GameObjectDataContainer _gameObjectDataStore
Definition ObjectMgr.h:1680
GossipMenusContainer _gossipMenusStore
Definition ObjectMgr.h:1598
GossipMenuItemsLocale const * GetGossipMenuItemsLocale(uint32 menuId, uint32 optionId) const
Definition ObjectMgr.h:1415
CreatureLocaleContainer _creatureLocaleStore
Definition ObjectMgr.h:1679
std::map< uint32, uint32 > CharacterConversionMap
Definition ObjectMgr.h:963
LocaleConstant GetDBCLocaleIndex() const
Definition ObjectMgr.h:1443
std::atomic< uint32 > _hiPetNumber
Definition ObjectMgr.h:1568
std::vector< InstanceSpawnGroupInfo > const * GetSpawnGroupsForInstance(uint32 instanceId) const
Definition ObjectMgr.h:1268
PointOfInterestLocaleContainer _pointOfInterestLocaleStore
Definition ObjectMgr.h:1702
std::unordered_map< uint32, GossipText > GossipTextContainer
Definition ObjectMgr.h:1579
InstanceTemplateContainer _instanceTemplateStore
Definition ObjectMgr.h:1630
std::unordered_map< uint32, ItemSetNameEntry > ItemSetNameContainer
Definition ObjectMgr.h:1664
QuestRelations _goQuestInvolvedRelations
Definition ObjectMgr.h:1605
std::vector< uint32 > const * GetCreatureQuestItemList(uint32 id) const
Definition ObjectMgr.h:1021
QuestAreaTriggerContainer _questAreaTriggerStore
Definition ObjectMgr.h:1584
FishingBaseSkillContainer _fishingBaseForAreaStore
Definition ObjectMgr.h:1658
bool IsTransportMap(uint32 mapId) const
Definition ObjectMgr.h:1552
Trinity::IteratorPair< SpawnGroupLinkContainer::const_iterator > GetSpawnMetadataForGroup(uint32 groupId) const
Definition ObjectMgr.h:1267
std::atomic< uint32 > _mailId
Definition ObjectMgr.h:1567
QuestOfferRewardLocale const * GetQuestOfferRewardLocale(uint32 entry) const
Definition ObjectMgr.h:1391
RepRewardRate const * GetRepRewardRate(uint32 factionId) const
Definition ObjectMgr.h:1074
ObjectGuid::LowType _creatureSpawnId
Definition ObjectMgr.h:1570
AreaTriggerContainer _areaTriggerStore
Definition ObjectMgr.h:1589
CreatureTemplateContainer const & GetCreatureTemplates() const
Definition ObjectMgr.h:974
GameObjectQuestItemMap const * GetGameObjectQuestItemMap() const
Definition ObjectMgr.h:1019
MapObjectGuids _mapObjectGuidsStore
Definition ObjectMgr.h:1667
CreatureAddonContainer _creatureAddonStore
Definition ObjectMgr.h:1671
ItemSetNameEntry const * GetItemSetNameEntry(uint32 itemId) const
Definition ObjectMgr.h:991
PageTextLocale const * GetPageTextLocale(uint32 entry) const
Definition ObjectMgr.h:1409
BroadcastTextContainer _broadcastTextStore
Definition ObjectMgr.h:1691
char const * GetTrinityStringForDBCLocale(uint32 entry) const
Definition ObjectMgr.h:1442
QuestRequestItemsLocale const * GetQuestRequestItemsLocale(uint32 entry) const
Definition ObjectMgr.h:1397
PetLevelInfoContainer _petInfoStore
Definition ObjectMgr.h:1643
GameObjectForQuestContainer _gameObjectForQuestStore
Definition ObjectMgr.h:1586
MailLevelRewardContainer _mailLevelRewardStore
Definition ObjectMgr.h:1638
VehicleAccessoryTemplateContainer _vehicleTemplateAccessoryStore
Definition ObjectMgr.h:1624
LocaleConstant DBCLocaleIndex
Definition ObjectMgr.h:1627
GameObjectTemplateContainer const & GetGameObjectTemplates() const
Definition ObjectMgr.h:966
std::map< uint32, uint32 > BaseXPContainer
Definition ObjectMgr.h:1654
ExclusiveQuestGroupsBounds GetExclusiveQuestGroupBounds(int32 exclusiveGroupId) const
Definition ObjectMgr.h:1131
NpcTextLocaleContainer _npcTextLocaleStore
Definition ObjectMgr.h:1699
VendorItemData const * GetNpcVendorItemList(uint32 entry) const
Definition ObjectMgr.h:1480
HalfNameContainer _petHalfName0
Definition ObjectMgr.h:1661
std::unordered_map< uint8, std::vector< Trainer::Trainer const * > > _classTrainers
Definition ObjectMgr.h:1709
static std::string_view GetLocaleString(std::vector< std::string > const &data, size_t locale)
Definition ObjectMgr.h:1525
QuestContainer _questTemplates
Definition ObjectMgr.h:1577
std::map< HighGuid, std::unique_ptr< ObjectGuidGenerator > > _guidGenerators
Definition ObjectMgr.h:1576
ItemSetNameLocaleContainer _itemSetNameLocaleStore
Definition ObjectMgr.h:1694
CharacterConversionMap FactionChangeSpells
Definition ObjectMgr.h:1542
CreatureTemplateAddonContainer _creatureTemplateAddonStore
Definition ObjectMgr.h:1672
std::unordered_map< uint32, VehicleTemplate > _vehicleTemplateStore
Definition ObjectMgr.h:1623
PointOfInterestLocale const * GetPointOfInterestLocale(uint32 id) const
Definition ObjectMgr.h:1421
CharacterConversionMap FactionChangeItems
Definition ObjectMgr.h:1539
GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore
Definition ObjectMgr.h:1701
BaseXPContainer _baseXPTable
Definition ObjectMgr.h:1655
GossipMenusMapBoundsNonConst GetGossipMenusMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1507
std::unordered_map< uint32, std::unique_ptr< PetLevelInfo[] > > PetLevelInfoContainer
Definition ObjectMgr.h:1642
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string &value)
Definition ObjectMgr.h:1532
AreaTriggerScriptContainer _areaTriggerScriptStore
Definition ObjectMgr.h:1590
QuestRelations _creatureQuestRelations
Definition ObjectMgr.h:1606
QuestLocaleContainer _questLocaleStore
Definition ObjectMgr.h:1695
std::vector< uint32 > const * GetGameObjectQuestItemList(uint32 id) const
Definition ObjectMgr.h:1012
std::map< uint32, uint32 > AreaTriggerScriptContainer
Definition ObjectMgr.h:951
DungeonEncounterContainer _dungeonEncounterStore
Definition ObjectMgr.h:1592
ObjectMgr(ObjectMgr const &)=delete
RepOnKillContainer _repOnKillStore
Definition ObjectMgr.h:1595
std::unordered_map< uint32, std::unique_ptr< AccessRequirement > > AccessRequirementContainer
Definition ObjectMgr.h:953
ItemLocale const * GetItemLocale(uint32 entry) const
Definition ObjectMgr.h:1373
SpawnGroupLinkContainer _spawnGroupMapStore
Definition ObjectMgr.h:1686
uint64 _equipmentSetGuid
Definition ObjectMgr.h:1566
RepSpilloverTemplateContainer _repSpilloverTemplateStore
Definition ObjectMgr.h:1596
SpawnMetadata const * GetSpawnMetadata(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1313
QuestRelationResult GetGOQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1125
SpawnGroupTemplateData const * GetDefaultSpawnGroup() const
Definition ObjectMgr.h:1265
GameObjectData & NewOrExistGameObjectData(ObjectGuid::LowType spawnId)
Definition ObjectMgr.h:1365
CreatureModelContainer _creatureModelStore
Definition ObjectMgr.h:1670
LinkedRespawnContainer _linkedRespawnStore
Definition ObjectMgr.h:1678
std::vector< uint32 > PlayerXPperLevel
Definition ObjectMgr.h:1651
uint32 GetQuestForAreaTrigger(uint32 Trigger_ID) const
Definition ObjectMgr.h:1038
std::map< uint32, std::vector< std::string > > HalfNameContainer
Definition ObjectMgr.h:1660
uint32 _auctionId
Definition ObjectMgr.h:1565
GossipMenusMapBounds GetGossipMenusMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1502
GameObjectLocaleContainer _gameObjectLocaleStore
Definition ObjectMgr.h:1681
GameObjectAddonContainer _gameObjectAddonStore
Definition ObjectMgr.h:1674
GameTele const * GetGameTele(uint32 id) const
Definition ObjectMgr.h:1465
PlayerXPperLevel _playerXPperLevel
Definition ObjectMgr.h:1652
CacheVendorItemContainer _cacheVendorItemStore
Definition ObjectMgr.h:1707
QuestGreetingLocale const * GetQuestGreetingLocale(uint32 id) const
Definition ObjectMgr.h:1427
QuestRelationResult GetCreatureQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1128
CreatureData const * GetCreatureData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1338
std::set< uint32 > TavernAreaTriggerContainer
Definition ObjectMgr.h:1581
PointOfInterestContainer _pointsOfInterestStore
Definition ObjectMgr.h:1600
RepRewardRateContainer _repRewardRateStore
Definition ObjectMgr.h:1594
CharacterConversionMap FactionChangeTitles
Definition ObjectMgr.h:1543
std::unordered_map< uint32, ReputationOnKillEntry > RepOnKillContainer
Definition ObjectMgr.h:956
VehicleSeatAddonContainer _vehicleSeatAddonStore
Definition ObjectMgr.h:1718
CreatureData & NewOrExistCreatureData(ObjectGuid::LowType spawnId)
Definition ObjectMgr.h:1344
std::unordered_map< uint32, Trainer::Trainer const * > _creatureDefaultTrainers
Definition ObjectMgr.h:1710
PageTextContainer _pageTextStore
Definition ObjectMgr.h:1629
bool IsTavernAreaTrigger(uint32 Trigger_ID) const
Definition ObjectMgr.h:1046
SpawnGroupTemplateData const * GetSpawnGroupData(uint32 groupId) const
Definition ObjectMgr.h:1263
ItemTemplateContainer const & GetItemTemplateStore() const
Definition ObjectMgr.h:987
QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1126
ItemLocaleContainer _itemLocaleStore
Definition ObjectMgr.h:1693
GameObjectQuestItemMap _gameObjectQuestItemStore
Definition ObjectMgr.h:1675
ExclusiveQuestGroups _exclusiveQuestGroups
Definition ObjectMgr.h:1609
std::map< uint32, uint32 > QuestAreaTriggerContainer
Definition ObjectMgr.h:1580
GameTeleContainer const & GetGameTeleMap() const
Definition ObjectMgr.h:1473
CharacterConversionMap FactionChangeQuests
Definition ObjectMgr.h:1540
Trinity::IteratorPair< SpellClickInfoContainer::const_iterator > GetSpellClickInfoMapBounds(uint32 creature_id) const
Definition ObjectMgr.h:1497
CreatureQuestItemMap _creatureQuestItemStore
Definition ObjectMgr.h:1676
TrinityStringContainer _trinityStringStore
Definition ObjectMgr.h:1705
QuestPOIContainer _questPOIStore
Definition ObjectMgr.h:1602
RepSpilloverTemplate const * GetRepSpilloverTemplate(uint32 factionId) const
Definition ObjectMgr.h:1093
SpellClickInfoContainer _spellClickInfoStore
Definition ObjectMgr.h:1619
ReservedNamesContainer _reservedNamesStore
Definition ObjectMgr.h:1613
QuestRelations * GetCreatureQuestRelationMapHACK()
Definition ObjectMgr.h:1127
GossipMenuItemsContainer _gossipMenuItemsStore
Definition ObjectMgr.h:1599
GameObjectOverrideContainer _gameObjectOverrideStore
Definition ObjectMgr.h:1684
void SetDBCLocaleIndex(LocaleConstant locale)
Definition ObjectMgr.h:1444
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Quest > > QuestContainer
Definition ObjectMgr.h:947
Utility class to enable range for loop syntax for multimap.equal_range uses.
Definition Unit.h:769
auto MapEqualRange(M &map, typename M::key_type const &key)
std::string questFailedText
Definition ObjectMgr.h:469
uint32 EmoteDelay2
Definition ObjectMgr.h:489
std::vector< std::string > Text1
Definition ObjectMgr.h:484
uint32 EmotesID
Definition ObjectMgr.h:492
uint32 LanguageID
Definition ObjectMgr.h:482
std::vector< std::string > Text
Definition ObjectMgr.h:483
std::string const & GetText(LocaleConstant locale=DEFAULT_LOCALE, uint8 gender=GENDER_MALE, bool forceGender=false) const
Definition ObjectMgr.h:496
uint32 EmoteId2
Definition ObjectMgr.h:486
uint32 EmoteDelay1
Definition ObjectMgr.h:488
uint32 SoundEntriesID
Definition ObjectMgr.h:491
uint32 EmoteId3
Definition ObjectMgr.h:487
uint32 EmoteId1
Definition ObjectMgr.h:485
uint32 EmoteDelay3
Definition ObjectMgr.h:490
CellGuidSet gameobjects
Definition ObjectMgr.h:519
CellGuidSet creatures
Definition ObjectMgr.h:518
DungeonEncounterEntry const * dbcEntry
Definition ObjectMgr.h:905
DungeonEncounter(DungeonEncounterEntry const *_dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
Definition ObjectMgr.h:902
EncounterCreditType creditType
Definition ObjectMgr.h:906
uint32 lastEncounterDungeon
Definition ObjectMgr.h:908
float position_y
Definition ObjectMgr.h:162
float orientation
Definition ObjectMgr.h:164
float position_x
Definition ObjectMgr.h:161
uint32 mapId
Definition ObjectMgr.h:165
std::string name
Definition ObjectMgr.h:166
float position_z
Definition ObjectMgr.h:163
std::wstring wnameLow
Definition ObjectMgr.h:167
std::vector< std::string > BoxText
Definition ObjectMgr.h:569
std::vector< std::string > OptionText
Definition ObjectMgr.h:568
uint32 BoxBroadcastTextID
Definition ObjectMgr.h:785
std::string OptionText
Definition ObjectMgr.h:776
uint32 ActionMenuID
Definition ObjectMgr.h:780
uint32 OptionNpcFlag
Definition ObjectMgr.h:779
ConditionContainer Conditions
Definition ObjectMgr.h:786
uint32 ActionPoiID
Definition ObjectMgr.h:781
std::string BoxText
Definition ObjectMgr.h:784
GossipOptionIcon OptionIcon
Definition ObjectMgr.h:775
uint32 OptionType
Definition ObjectMgr.h:778
uint32 OptionBroadcastTextID
Definition ObjectMgr.h:777
ConditionContainer Conditions
Definition ObjectMgr.h:793
uint32 TextID
Definition ObjectMgr.h:792
uint32 MenuID
Definition ObjectMgr.h:791
uint32 safeLocId
Definition ObjectMgr.h:855
Language lang_id
Definition ObjectMgr.h:886
uint32 skill_id
Definition ObjectMgr.h:888
uint32 spell_id
Definition ObjectMgr.h:887
uint32 senderEntry
Definition ObjectMgr.h:722
MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry)
Definition ObjectMgr.h:718
uint32 mailTemplateId
Definition ObjectMgr.h:721
std::string Text
Definition ObjectMgr.h:60
uint32 NextPageID
Definition ObjectMgr.h:61
uint16 health
Definition ObjectMgr.h:708
uint32 armor
Definition ObjectMgr.h:710
uint16 minDamage
Definition ObjectMgr.h:711
uint16 stats[MAX_STATS]
Definition ObjectMgr.h:707
uint16 maxDamage
Definition ObjectMgr.h:712
uint16 mana
Definition ObjectMgr.h:709
std::unique_ptr< PlayerClassLevelInfo[]> levelInfo
Definition ObjectMgr.h:652
PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type)
Definition ObjectMgr.h:664
PlayerCreateInfoItem(uint32 id, uint32 amount)
Definition ObjectMgr.h:635
float orientation
Definition ObjectMgr.h:689
PlayerCreateInfoActions action
Definition ObjectMgr.h:695
uint16 displayId_m
Definition ObjectMgr.h:690
std::unique_ptr< PlayerLevelInfo[]> levelInfo
Definition ObjectMgr.h:699
PlayerCreateInfoSpells castSpells
Definition ObjectMgr.h:694
PlayerCreateInfoSkills skills
Definition ObjectMgr.h:696
float positionX
Definition ObjectMgr.h:686
uint32 areaId
Definition ObjectMgr.h:685
float positionY
Definition ObjectMgr.h:687
PlayerCreateInfoSpells customSpells
Definition ObjectMgr.h:693
float positionZ
Definition ObjectMgr.h:688
PlayerCreateInfoItems item
Definition ObjectMgr.h:692
uint32 mapId
Definition ObjectMgr.h:684
uint16 displayId_f
Definition ObjectMgr.h:691
uint8 stats[MAX_STATS]
Definition ObjectMgr.h:657
std::vector< std::string > Name
Definition ObjectMgr.h:576
std::string Name
Definition ObjectMgr.h:768
uint32 Importance
Definition ObjectMgr.h:767
std::vector< std::string > greeting
Definition ObjectMgr.h:531
std::string greeting
Definition ObjectMgr.h:844
uint16 greetEmoteType
Definition ObjectMgr.h:842
uint32 greetEmoteDelay
Definition ObjectMgr.h:843
QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
Definition ObjectMgr.h:847
std::vector< QuestPOIBlobPoint > QuestPOIBlobPointStats
Definition ObjectMgr.h:818
uint32 WorldMapAreaID
Definition ObjectMgr.h:814
std::vector< QuestPOIBlobData > QuestPOIBlobDataStats
Definition ObjectMgr.h:824
uint32 QuestID
Definition ObjectMgr.h:823
ByteBuffer QueryDataBuffer
Definition ObjectMgr.h:830
QuestPOIData POIData
Definition ObjectMgr.h:829
ByteBuffer BuildQueryData() const
void InitializeQueryData()
QuestRelations::const_iterator _it
Definition ObjectMgr.h:615
value_type const & reference
Definition ObjectMgr.h:595
value_type const * pointer
Definition ObjectMgr.h:594
bool operator==(Iterator const &other) const
Definition ObjectMgr.h:604
Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
Definition ObjectMgr.h:598
value_type operator*() const
Definition ObjectMgr.h:609
QuestRelations::const_iterator _end
Definition ObjectMgr.h:615
std::forward_iterator_tag iterator_category
Definition ObjectMgr.h:592
QuestRelations::mapped_type value_type
Definition ObjectMgr.h:593
bool HasQuest(uint32 questId) const
QuestRelationResult(std::pair< QuestRelations::const_iterator, QuestRelations::const_iterator > range, bool onlyActive)
Definition ObjectMgr.h:620
Iterator begin() const
Definition ObjectMgr.h:623
QuestRelations::const_iterator _end
Definition ObjectMgr.h:629
QuestRelations::const_iterator _begin
Definition ObjectMgr.h:629
Iterator end() const
Definition ObjectMgr.h:624
float questMonthlyRate
Definition ObjectMgr.h:734
float questWeeklyRate
Definition ObjectMgr.h:733
float questDailyRate
Definition ObjectMgr.h:732
float questRepeatableRate
Definition ObjectMgr.h:735
float spellRate
Definition ObjectMgr.h:737
float questRate
Definition ObjectMgr.h:731
float creatureRate
Definition ObjectMgr.h:736
uint32 faction_rank[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:757
uint32 faction[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:755
float faction_rate[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:756
float Orientation
Definition ObjectMgr.h:276
uint32 Flags
Definition ObjectMgr.h:233
struct ScriptInfo::@228::@234 MoveTo
float Unused3
Definition ObjectMgr.h:376
uint32 FieldID
Definition ObjectMgr.h:245
ScriptsType type
Definition ObjectMgr.h:217
uint32 Unused2
Definition ObjectMgr.h:366
uint32 QuestID
Definition ObjectMgr.h:281
float SearchRadius
Definition ObjectMgr.h:330
int32 TextID
Definition ObjectMgr.h:234
struct ScriptInfo::@228::@242 RemoveAura
struct ScriptInfo::@228::@241 ToggleDoor
struct ScriptInfo::@228::@252 Model
struct ScriptInfo::@228::@231 Talk
uint32 MovementType
Definition ObjectMgr.h:401
uint32 MovementDistance
Definition ObjectMgr.h:402
struct ScriptInfo::@228::@235 FlagToggle
float DestX
Definition ObjectMgr.h:255
uint32 ItemEntry
Definition ObjectMgr.h:341
uint32 ChatType
Definition ObjectMgr.h:232
uint32 SoundID
Definition ObjectMgr.h:335
struct ScriptInfo::@228::@244 PlaySound
uint32 id
Definition ObjectMgr.h:218
uint32 delay
Definition ObjectMgr.h:219
int32 Unused1
Definition ObjectMgr.h:271
float fData[4]
Definition ObjectMgr.h:227
uint32 ScriptID
Definition ObjectMgr.h:359
struct ScriptInfo::@228::@247 LoadPath
struct ScriptInfo::@228::@237 QuestExplored
uint32 ModelID
Definition ObjectMgr.h:389
struct ScriptInfo::@228::@253 PlayMovie
uint32 FieldValue
Definition ObjectMgr.h:246
struct ScriptInfo::@228::@232 Emote
float PosY
Definition ObjectMgr.h:304
ScriptCommands command
Definition ObjectMgr.h:220
uint32 Unused1
Definition ObjectMgr.h:251
float DestY
Definition ObjectMgr.h:256
uint32 PathID
Definition ObjectMgr.h:352
uint32 MapID
Definition ObjectMgr.h:269
uint32 IsRepeatable
Definition ObjectMgr.h:353
uint32 nData[3]
Definition ObjectMgr.h:226
float Unused4
Definition ObjectMgr.h:377
int32 Path
Definition ObjectMgr.h:403
struct ScriptInfo::@228::@233 FieldSet
int32 RemoveCorpse
Definition ObjectMgr.h:367
float PosZ
Definition ObjectMgr.h:305
struct ScriptInfo::@228::@236 TeleportTo
uint32 ScriptType
Definition ObjectMgr.h:360
uint32 ResetDelay
Definition ObjectMgr.h:313
ObjectGuid::LowType GOGuid
Definition ObjectMgr.h:293
uint32 DespawnDelay
Definition ObjectMgr.h:294
struct ScriptInfo::@228::@239 RespawnGameobject
float PosX
Definition ObjectMgr.h:303
struct ScriptInfo::@228::@243 CastSpell
struct ScriptInfo::@228::@254 Movement
struct ScriptInfo::@228::@248 CallScript
uint32 TravelTime
Definition ObjectMgr.h:252
struct ScriptInfo::@228::@230 Raw
uint32 Distance
Definition ObjectMgr.h:282
struct ScriptInfo::@228::@246 DespawnSelf
uint32 SpellID
Definition ObjectMgr.h:320
std::string GetDebugInfo() const
struct ScriptInfo::@228::@238 KillCredit
float DestZ
Definition ObjectMgr.h:257
float Unused5
Definition ObjectMgr.h:378
uint32 MovieID
Definition ObjectMgr.h:396
int32 Unused2
Definition ObjectMgr.h:253
int32 CreatureEntry
Definition ObjectMgr.h:328
struct ScriptInfo::@228::@249 Kill
uint32 EquipmentID
Definition ObjectMgr.h:384
struct ScriptInfo::@228::@251 Equip
struct ScriptInfo::@228::@245 CreateItem
struct ScriptInfo::@228::@240 TempSummonCreature
uint32 CreatureEntry
Definition ObjectMgr.h:287
uint32 Amount
Definition ObjectMgr.h:342
uint32 EmoteID
Definition ObjectMgr.h:239
static constexpr bool TypeHasData(SpawnObjectType type)
Definition SpawnData.h:77
SpawnGroupTemplateData const * spawnGroupData
Definition SpawnData.h:88
SpellClickUserTypes userType
Definition ObjectMgr.h:442
Stores data for temp summons.
Definition ObjectMgr.h:90
TempSummonType type
Summon type, see TempSummonType for available types.
Definition ObjectMgr.h:93
uint32 time
Despawn time, usable only with certain temp summon types.
Definition ObjectMgr.h:94
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:75
uint32 SummonerEntry
Summoner's entry.
Definition ObjectMgr.h:83
::SummonerType SummonerType
Summoner's type, see SummonerType for available types.
Definition ObjectMgr.h:84
std::strong_ordering operator<=>(TempSummonGroupKey const &right) const =default
uint8 SummonGroup
Summon's group id.
Definition ObjectMgr.h:85
TempSummonGroupKey(uint32 summonerEntry, SummonerType summonerType, uint8 group)
Definition ObjectMgr.h:76
std::vector< std::string > Content
Definition ObjectMgr.h:526