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 }
478
481 std::vector<std::string> Text;
482 std::vector<std::string> Text1;
483 std::array<uint32, 3> EmoteID;
484 std::array<uint32, 3> EmoteDelay;
488 // uint32 VerifiedBuild;
489
490 std::string const& GetText(LocaleConstant locale = DEFAULT_LOCALE, uint8 gender = GENDER_MALE, bool forceGender = false) const
491 {
492 if ((gender == GENDER_FEMALE || gender == GENDER_NONE) && (forceGender || !Text1[DEFAULT_LOCALE].empty()))
493 {
494 if (Text1.size() > size_t(locale) && !Text1[locale].empty())
495 return Text1[locale];
496 return Text1[DEFAULT_LOCALE];
497 }
498 // else if (gender == GENDER_MALE)
499 {
500 if (Text.size() > size_t(locale) && !Text[locale].empty())
501 return Text[locale];
502 return Text[DEFAULT_LOCALE];
503 }
504 }
505};
506
507typedef std::unordered_map<uint32, BroadcastTextEntry> BroadcastTextContainer;
508
509typedef std::set<ObjectGuid::LowType> CellGuidSet;
515typedef std::unordered_map<uint32/*cell_id*/, CellObjectGuids> CellObjectGuidsMap;
516typedef std::unordered_map<uint32/*(mapid, spawnMode) pair*/, CellObjectGuidsMap> MapObjectGuids;
517
519{
520 std::vector<std::string> Content;
521};
522
524{
525 std::vector<std::string> greeting;
526};
527
528typedef std::map<ObjectGuid, ObjectGuid> LinkedRespawnContainer;
529typedef std::unordered_map<uint32, CreatureTemplate> CreatureTemplateContainer;
530typedef std::unordered_map<uint32, CreatureAddon> CreatureTemplateAddonContainer;
531typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer;
532typedef std::unordered_map<ObjectGuid::LowType, CreatureAddon> CreatureAddonContainer;
533typedef std::unordered_map<uint16, CreatureBaseStats> CreatureBaseStatsContainer;
534typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal;
535typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer;
536typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer;
537typedef std::unordered_map<uint32, std::vector<uint32>> CreatureQuestItemMap;
538typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer;
539typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer;
540typedef std::unordered_map<ObjectGuid::LowType, GameObjectOverride> GameObjectOverrideContainer;
541typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer;
542typedef std::unordered_map<ObjectGuid::LowType, GameObjectAddon> GameObjectAddonContainer;
543typedef std::unordered_map<uint32, std::vector<uint32>> GameObjectQuestItemMap;
544typedef std::unordered_map<uint32, SpawnGroupTemplateData> SpawnGroupDataContainer;
545typedef std::multimap<uint32, SpawnMetadata const*> SpawnGroupLinkContainer;
546typedef std::unordered_map<uint16, std::vector<InstanceSpawnGroupInfo>> InstanceSpawnGroupContainer;
547typedef std::map<TempSummonGroupKey, std::vector<TempSummonData>> TempSummonDataContainer;
548typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
549typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
550typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer;
551typedef std::unordered_map<uint32, ItemLocale> ItemLocaleContainer;
552typedef std::unordered_map<uint32, ItemSetNameLocale> ItemSetNameLocaleContainer;
553typedef std::unordered_map<uint32, QuestLocale> QuestLocaleContainer;
554typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
555typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;
556typedef std::unordered_map<uint32, NpcTextLocale> NpcTextLocaleContainer;
557typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
558typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
559
561{
562 std::vector<std::string> OptionText;
563 std::vector<std::string> BoxText;
564};
565
566typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
567
569{
570 std::vector<std::string> Name;
571};
572
573typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
574typedef std::unordered_map<uint32, QuestGreetingLocale> QuestGreetingLocaleContainer;
575
576typedef std::unordered_map<uint32, TrinityString> TrinityStringContainer;
577
578typedef std::multimap<uint32, uint32> QuestRelations; // unit/go -> quest
579
581{
582 public:
583 struct Iterator
584 {
585 public:
586 using iterator_category = std::forward_iterator_tag;
587 using value_type = QuestRelations::mapped_type;
588 using pointer = value_type const*;
589 using reference = value_type const&;
590 using difference_type = void;
591
592 Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
593 : _it(it), _end(end), _onlyActive(onlyActive)
594 {
595 skip();
596 }
597
598 bool operator==(Iterator const& other) const { return _it == other._it; }
599
600 Iterator& operator++() { ++_it; skip(); return *this; }
601 Iterator operator++(int) { Iterator t = *this; ++*this; return t; }
602
603 value_type operator*() const { return _it->second; }
604
605 private:
606 void skip() { if (_onlyActive) _skip(); }
607 void _skip();
608
609 QuestRelations::const_iterator _it, _end;
611 };
612
614 QuestRelationResult(std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> range, bool onlyActive)
615 : _begin(range.first), _end(range.second), _onlyActive(onlyActive) {}
616
617 Iterator begin() const { return { _begin, _end, _onlyActive }; }
618 Iterator end() const { return { _end, _end, _onlyActive }; }
619
620 bool HasQuest(uint32 questId) const;
621
622 private:
623 QuestRelations::const_iterator _begin, _end;
625};
626
634
635typedef std::vector<PlayerCreateInfoItem> PlayerCreateInfoItems;
636
642
644{
645 //[level-1] 0..MaxPlayerLevel-1
646 std::unique_ptr<PlayerClassLevelInfo[]> levelInfo;
647};
648
650{
652};
653
654typedef std::vector<uint32> PlayerCreateInfoSpells;
655
657{
658 PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) { }
659
663};
664
665typedef std::vector<PlayerCreateInfoAction> PlayerCreateInfoActions;
666
672
673typedef std::vector<PlayerCreateInfoSkill> PlayerCreateInfoSkills;
674
675// existence checked by displayId != 0
695
696typedef std::multimap<int32, uint32> ExclusiveQuestGroups; // exclusiveGroupId -> quest
697typedef std::pair<ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator> ExclusiveQuestGroupsBounds;
698
708
710{
712 MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { }
713
717};
718
719typedef std::list<MailLevelReward> MailLevelRewardList;
720typedef std::unordered_map<uint8, MailLevelRewardList> MailLevelRewardContainer;
721
722// We assume the rate is in general the same for all three types below, but chose to keep three for scalability and customization
724{
725 float questRate; // We allow rate = 0.0 in database. For this case, it means that
730 float creatureRate; // no reputation are given at all for this faction/rate type.
732};
733
746
753
764
782
789
790typedef std::multimap<uint32, GossipMenus> GossipMenusContainer;
791typedef std::pair<GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator> GossipMenusMapBounds;
792typedef std::pair<GossipMenusContainer::iterator, GossipMenusContainer::iterator> GossipMenusMapBoundsNonConst;
793typedef std::multimap<uint32, GossipMenuItems> GossipMenuItemsContainer;
794typedef std::pair<GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator> GossipMenuItemsMapBounds;
795typedef std::pair<GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator> GossipMenuItemsMapBoundsNonConst;
796
798{
799 int32 X = 0;
800 int32 Y = 0;
801};
802
814
816{
818 std::vector<QuestPOIBlobData> QuestPOIBlobDataStats;
819};
820
831
832typedef std::unordered_map<uint32, QuestPOIWrapper> QuestPOIContainer;
833
835{
838 std::string greeting;
839
841 QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
842 : greetEmoteType(_greetEmoteType), greetEmoteDelay(_greetEmoteDelay), greeting(_greeting) { }
843};
844
845typedef std::unordered_map<uint8, std::unordered_map<uint32, QuestGreeting>> QuestGreetingContainer;
846
852
853typedef std::multimap<uint32, GraveyardData> GraveyardContainer;
854typedef std::pair<GraveyardContainer::const_iterator, GraveyardContainer::const_iterator> GraveyardMapBounds;
855typedef std::pair<GraveyardContainer::iterator, GraveyardContainer::iterator> GraveyardMapBoundsNonConst;
856
857typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
858
860{
862 SKILL_RANGE_LEVEL, // 1..max skill for level
863 SKILL_RANGE_MONO, // 1..1, grey monolite bar
864 SKILL_RANGE_RANK, // 1..skill for known rank
865 SKILL_RANGE_NONE // 0..0 always
867
869
870#define MAX_PLAYER_NAME 12 // max allowed by client name length
871#define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
872#define MAX_PET_NAME 12 // max allowed by client name length
873#define MAX_CHARTER_NAME 24 // max allowed by client name length
874
875TC_GAME_API bool normalizePlayerName(std::string& name);
876#define SPAWNGROUP_MAP_UNSET 0xFFFFFFFF
877
884
887
893
895{
896 DungeonEncounter(DungeonEncounterEntry const* _dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
897 : dbcEntry(_dbcEntry), creditType(_creditType), creditEntry(_creditEntry), lastEncounterDungeon(_lastEncounterDungeon) { }
898
903};
904
905typedef std::vector<std::unique_ptr<DungeonEncounter const>> DungeonEncounterList;
906typedef std::unordered_map<uint32, DungeonEncounterList> DungeonEncounterContainer;
907
908typedef std::map<std::pair<SummonSlot /*TotemSlot*/, Races /*RaceId*/>, uint32 /*DisplayId*/> PlayerTotemModelMap;
909
920
921class PlayerDumpReader;
922
924{
925 friend class PlayerDumpReader;
926 friend class UnitTestDataLoader;
927
928 private:
929 ObjectMgr();
930 ~ObjectMgr();
931
932 public:
933 ObjectMgr(ObjectMgr const&) = delete;
934 ObjectMgr(ObjectMgr&&) = delete;
935
936 ObjectMgr& operator= (ObjectMgr const&) = delete;
937 ObjectMgr& operator= (ObjectMgr&&) = delete;
938
939 static ObjectMgr* instance();
940
941 typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Quest>> QuestContainer;
942
943 typedef std::unordered_map<uint32, AreaTriggerTeleport> AreaTriggerContainer;
944
945 typedef std::map<uint32, uint32> AreaTriggerScriptContainer;
946
947 typedef std::unordered_map<uint32, std::unique_ptr<AccessRequirement>> AccessRequirementContainer;
948
949 typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer;
950 typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer;
951 typedef std::unordered_map<uint32, RepSpilloverTemplate> RepSpilloverTemplateContainer;
952
953 typedef std::unordered_map<uint32, PointOfInterest> PointOfInterestContainer;
954
955 typedef std::vector<std::string> ScriptNameContainer;
956
957 typedef std::map<uint32, uint32> CharacterConversionMap;
958
959 GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const;
960 GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; }
961 uint32 LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32>* skip_vendors);
962
963 void LoadGameObjectTemplate();
964 void LoadGameObjectTemplateAddons();
965 void LoadGameObjectOverrides();
966
967 CreatureTemplate const* GetCreatureTemplate(uint32 entry) const;
968 CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; }
969 CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const;
970 CreatureModelInfo const* GetCreatureModelRandomGender(uint32* displayID) const;
971 static uint32 ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr);
972 static void ChooseCreatureFlags(CreatureTemplate const* cinfo, uint32* npcflag, uint32* unit_flags, uint32* dynamicflags, CreatureData const* data = nullptr);
973 EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const;
974 CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const;
975 GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const;
976 GameObjectTemplateAddon const* GetGameObjectTemplateAddon(uint32 entry) const;
977 GameObjectOverride const* GetGameObjectOverride(ObjectGuid::LowType spawnId) const;
978 CreatureAddon const* GetCreatureTemplateAddon(uint32 entry) const;
979 CreatureMovementData const* GetCreatureMovementOverride(ObjectGuid::LowType spawnId) const;
980 ItemTemplate const* GetItemTemplate(uint32 entry) const;
981 ItemTemplateContainer const& GetItemTemplateStore() const { return _itemTemplateStore; }
982
983 uint32 GetModelForTotem(SummonSlot totemSlot, Races race) const;
984
986 {
987 ItemSetNameContainer::const_iterator itr = _itemSetNameStore.find(itemId);
988 if (itr != _itemSetNameStore.end())
989 return &itr->second;
990 return nullptr;
991 }
992
993 InstanceTemplateContainer const& GetInstanceTemplates() const { return _instanceTemplateStore; }
994 InstanceTemplate const* GetInstanceTemplate(uint32 mapId) const;
995
996 PetLevelInfo const* GetPetLevelInfo(uint32 creature_id, uint8 level) const;
997
998 PlayerClassInfo const* GetPlayerClassInfo(uint32 class_) const { return class_ < MAX_CLASSES ? _playerClassInfo[class_].get() : nullptr; }
999
1000 void GetPlayerClassLevelInfo(uint32 class_, uint8 level, PlayerClassLevelInfo* info) const;
1001
1002 PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const;
1003
1004 void GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const;
1005
1006 std::vector<uint32> const* GetGameObjectQuestItemList(uint32 id) const
1007 {
1008 GameObjectQuestItemMap::const_iterator itr = _gameObjectQuestItemStore.find(id);
1009 if (itr != _gameObjectQuestItemStore.end())
1010 return &itr->second;
1011 return nullptr;
1012 }
1013 GameObjectQuestItemMap const* GetGameObjectQuestItemMap() const { return &_gameObjectQuestItemStore; }
1014
1015 std::vector<uint32> const* GetCreatureQuestItemList(uint32 id) const
1016 {
1017 CreatureQuestItemMap::const_iterator itr = _creatureQuestItemStore.find(id);
1018 if (itr != _creatureQuestItemStore.end())
1019 return &itr->second;
1020 return nullptr;
1021 }
1022 CreatureQuestItemMap const* GetCreatureQuestItemMap() const { return &_creatureQuestItemStore; }
1023
1024 uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
1025 void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
1026 uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false);
1027
1028 Quest const* GetQuestTemplate(uint32 quest_id) const;
1029
1030 QuestContainer const& GetQuestTemplates() const { return _questTemplates; }
1031
1033 {
1034 QuestAreaTriggerContainer::const_iterator itr = _questAreaTriggerStore.find(Trigger_ID);
1035 if (itr != _questAreaTriggerStore.end())
1036 return itr->second;
1037 return 0;
1038 }
1039
1040 bool IsTavernAreaTrigger(uint32 Trigger_ID) const
1041 {
1042 return _tavernAreaTriggerStore.find(Trigger_ID) != _tavernAreaTriggerStore.end();
1043 }
1044
1046 {
1047 return _gameObjectForQuestStore.find(entry) != _gameObjectForQuestStore.end();
1048 }
1049
1050 GossipText const* GetGossipText(uint32 Text_ID) const;
1051 QuestGreeting const* GetQuestGreeting(ObjectGuid guid) const;
1052
1053 WorldSafeLocsEntry const* GetDefaultGraveyard(uint32 team) const;
1054 WorldSafeLocsEntry const* GetClosestGraveyard(float x, float y, float z, uint32 MapId, uint32 team, WorldObject* conditionObject) const;
1055 bool AddGraveyardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = true);
1056 void RemoveGraveyardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = false);
1057 void LoadGraveyardZones();
1058 GraveyardData const* FindGraveyardData(uint32 id, uint32 zone) const;
1059
1060 AreaTriggerTeleport const* GetAreaTrigger(uint32 trigger) const;
1061 AccessRequirement const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const;
1062 AreaTriggerTeleport const* GetGoBackTrigger(uint32 Map) const;
1063 AreaTriggerTeleport const* GetMapEntranceTrigger(uint32 Map) const;
1064
1065 uint32 GetAreaTriggerScriptId(uint32 trigger_id) const;
1066 SpellScriptsBounds GetSpellScriptsBounds(uint32 spellId);
1067
1068 RepRewardRate const* GetRepRewardRate(uint32 factionId) const
1069 {
1070 RepRewardRateContainer::const_iterator itr = _repRewardRateStore.find(factionId);
1071 if (itr != _repRewardRateStore.end())
1072 return &itr->second;
1073
1074 return nullptr;
1075 }
1076
1078 {
1079 RepOnKillContainer::const_iterator itr = _repOnKillStore.find(id);
1080 if (itr != _repOnKillStore.end())
1081 return &itr->second;
1082 return nullptr;
1083 }
1084
1085 int32 GetBaseReputationOf(FactionEntry const* factionEntry, uint8 race, uint8 playerClass) const;
1086
1088 {
1089 RepSpilloverTemplateContainer::const_iterator itr = _repSpilloverTemplateStore.find(factionId);
1090 if (itr != _repSpilloverTemplateStore.end())
1091 return &itr->second;
1092
1093 return nullptr;
1094 }
1095
1097 {
1098 PointOfInterestContainer::const_iterator itr = _pointsOfInterestStore.find(id);
1099 if (itr != _pointsOfInterestStore.end())
1100 return &itr->second;
1101 return nullptr;
1102 }
1103
1104 QuestPOIWrapper const* GetQuestPOIWrapper(uint32 questId) const;
1105
1106 VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const;
1107 VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
1108
1109 DungeonEncounterList const* GetDungeonEncounterList(uint32 mapId, Difficulty difficulty) const;
1110
1111 void LoadQuests();
1112 void LoadQuestStartersAndEnders();
1113 void LoadGameobjectQuestStarters();
1114 void LoadGameobjectQuestEnders();
1115 void LoadCreatureQuestStarters();
1116 void LoadCreatureQuestEnders();
1117
1118 QuestRelations* GetGOQuestRelationMapHACK() { return &_goQuestRelations; }
1119 QuestRelationResult GetGOQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestRelations, entry, true); }
1120 QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_goQuestInvolvedRelations, entry, false); }
1121 QuestRelations* GetCreatureQuestRelationMapHACK() { return &_creatureQuestRelations; }
1122 QuestRelationResult GetCreatureQuestRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestRelations, entry, true); }
1123 QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const { return GetQuestRelationsFrom(_creatureQuestInvolvedRelations, entry, false); }
1124
1126 {
1127 return _exclusiveQuestGroups.equal_range(exclusiveGroupId);
1128 }
1129
1130 bool LoadTrinityStrings();
1131
1132 void LoadEventScripts();
1133 void LoadWaypointScripts();
1134
1135 void LoadSpellScriptNames();
1136 void ValidateSpellScripts();
1137
1138 void LoadBroadcastTexts();
1139 void LoadBroadcastTextLocales();
1140 void LoadCreatureClassLevelStats();
1141 void LoadCreatureLocales();
1142 void LoadCreatureTemplates();
1143 void LoadCreatureTemplateAddons();
1144 void LoadCreatureTemplate(Field* fields);
1145 void LoadCreatureTemplateResistances();
1146 void LoadCreatureTemplateSpells();
1147 void CheckCreatureTemplate(CreatureTemplate const* cInfo);
1148 void CheckCreatureMovement(char const* table, uint64 id, CreatureMovementData& creatureMovement);
1149 void LoadGameObjectQuestItems();
1150 void LoadCreatureQuestItems();
1151 void LoadTempSummons();
1152 void LoadCreatures();
1153 void LoadLinkedRespawn();
1154 bool SetCreatureLinkedRespawn(ObjectGuid::LowType guid, ObjectGuid::LowType linkedGuid);
1155 void LoadCreatureAddons();
1156 void LoadGameObjectAddons();
1157 void LoadCreatureModelInfo();
1158 void LoadPlayerTotemModels();
1159 void LoadEquipmentTemplates();
1160 void LoadCreatureMovementOverrides();
1161 void LoadGameObjectLocales();
1162 void LoadGameObjects();
1163 void LoadSpawnGroupTemplates();
1164 void LoadSpawnGroups();
1165 void LoadInstanceSpawnGroups();
1166 void LoadItemTemplates();
1167 void LoadItemLocales();
1168 void LoadItemSetNames();
1169 void LoadItemSetNameLocales();
1170 void LoadQuestLocales();
1171 void LoadNpcTextLocales();
1172 void LoadQuestOfferRewardLocale();
1173 void LoadQuestRequestItemsLocale();
1174 void LoadPageTextLocales();
1175 void LoadGossipMenuItemsLocales();
1176 void LoadPointOfInterestLocales();
1177 void LoadQuestGreetingLocales();
1178 void LoadInstanceTemplate();
1179 void LoadInstanceEncounters();
1180 void LoadMailLevelRewards();
1181 void LoadVehicleTemplateAccessories();
1182 void LoadVehicleTemplate();
1183 void LoadVehicleAccessories();
1184 void LoadVehicleSeatAddon();
1185
1186 void LoadGossipText();
1187
1188 void LoadAreaTriggerTeleports();
1189 void LoadAccessRequirements();
1190 void LoadQuestAreaTriggers();
1191 void LoadQuestGreetings();
1192 void LoadAreaTriggerScripts();
1193 void LoadTavernAreaTriggers();
1194 void LoadGameObjectForQuests();
1195
1196 void LoadPageTexts();
1197 PageText const* GetPageText(uint32 pageEntry);
1198
1199 void LoadPlayerInfo();
1200 void LoadPetLevelInfo();
1201 void LoadExplorationBaseXP();
1202 void LoadPetNames();
1203 void LoadPetNumber();
1204 void LoadFishingBaseSkillLevel();
1205
1206 void LoadReputationRewardRate();
1207 void LoadReputationOnKill();
1208 void LoadReputationSpilloverTemplate();
1209
1210 void LoadPointsOfInterest();
1211 void LoadQuestPOI();
1212
1213 void LoadNPCSpellClickSpells();
1214
1215 void LoadGameTele();
1216
1217 void LoadGossipMenu();
1218 void LoadGossipMenuItems();
1219
1220 void LoadVendors();
1221 void LoadTrainers();
1222 void LoadCreatureDefaultTrainers();
1223
1224 void InitializeQueriesData(QueryDataGroup mask);
1225
1226 std::string GeneratePetName(uint32 entry);
1227 uint32 GetBaseXP(uint8 level);
1228 uint32 GetXPForLevel(uint8 level) const;
1229
1231 {
1232 FishingBaseSkillContainer::const_iterator itr = _fishingBaseForAreaStore.find(entry);
1233 return itr != _fishingBaseForAreaStore.end() ? itr->second : 0;
1234 }
1235
1236 void ReturnOrDeleteOldMails(bool serverUp);
1237
1238 CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
1239
1240 void SetHighestGuids();
1241
1242 template<HighGuid type>
1244 {
1246 "Only global guid can be generated in ObjectMgr context");
1247 return GetGuidSequenceGenerator(type);
1248 }
1249
1250 uint32 GenerateAuctionID();
1251 uint64 GenerateEquipmentSetGuid();
1252 uint32 GenerateMailID();
1253 uint32 GeneratePetNumber();
1254 ObjectGuid::LowType GenerateCreatureSpawnId();
1255 ObjectGuid::LowType GenerateGameObjectSpawnId();
1256
1257 SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const { auto it = _spawnGroupDataStore.find(groupId); return it != _spawnGroupDataStore.end() ? &it->second : nullptr; }
1258 SpawnGroupTemplateData const* GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const { SpawnMetadata const* data = GetSpawnMetadata(type, spawnId); return data ? data->spawnGroupData : nullptr; }
1259 SpawnGroupTemplateData const* GetDefaultSpawnGroup() const { return &_spawnGroupDataStore.at(0); }
1260 SpawnGroupTemplateData const* GetLegacySpawnGroup() const { return &_spawnGroupDataStore.at(1); }
1262 std::vector<InstanceSpawnGroupInfo> const* GetSpawnGroupsForInstance(uint32 instanceId) const { auto it = _instanceSpawnGroupStore.find(instanceId); return it != _instanceSpawnGroupStore.end() ? &it->second : nullptr; }
1263
1264 MailLevelReward const* GetMailLevelReward(uint32 level, uint32 raceMask) const
1265 {
1266 MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
1267 if (map_itr == _mailLevelRewardStore.end())
1268 return nullptr;
1269
1270 for (MailLevelRewardList::const_iterator set_itr = map_itr->second.begin(); set_itr != map_itr->second.end(); ++set_itr)
1271 if (set_itr->raceMask & raceMask)
1272 return &*set_itr;
1273
1274 return nullptr;
1275 }
1276
1277 CellObjectGuids const* GetCellObjectGuids(uint16 mapid, uint8 spawnMode, uint32 cell_id);
1278
1279 CellObjectGuidsMap const* GetMapObjectGuids(uint16 mapid, uint8 spawnMode);
1280
1290 std::vector<TempSummonData> const* GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
1291 {
1292 TempSummonDataContainer::const_iterator itr = _tempSummonDataStore.find(TempSummonGroupKey(summonerId, summonerType, group));
1293 if (itr != _tempSummonDataStore.end())
1294 return &itr->second;
1295
1296 return nullptr;
1297 }
1298
1300 {
1301 BroadcastTextContainer::const_iterator itr = _broadcastTextStore.find(id);
1302 if (itr != _broadcastTextStore.end())
1303 return &itr->second;
1304 return nullptr;
1305 }
1306
1308 {
1309 if (SpawnData::TypeHasData(type))
1310 return GetSpawnData(type, spawnId);
1311 else
1312 return nullptr;
1313 }
1314
1316 {
1317 if (!SpawnData::TypeHasData(type))
1318 return nullptr;
1319 switch (type)
1320 {
1322 return GetCreatureData(spawnId);
1324 return GetGameObjectData(spawnId);
1325 default:
1326 ABORT_MSG("Invalid spawn object type %u", uint32(type));
1327 return nullptr;
1328 }
1329 }
1330 void OnDeleteSpawnData(SpawnData const* data);
1331 CreatureDataContainer const& GetAllCreatureData() const { return _creatureDataStore; }
1333 {
1334 CreatureDataContainer::const_iterator itr = _creatureDataStore.find(spawnId);
1335 if (itr == _creatureDataStore.end()) return nullptr;
1336 return &itr->second;
1337 }
1338 CreatureData& NewOrExistCreatureData(ObjectGuid::LowType spawnId) { return _creatureDataStore[spawnId]; }
1339 void DeleteCreatureData(ObjectGuid::LowType spawnId);
1341 {
1342 LinkedRespawnContainer::const_iterator itr = _linkedRespawnStore.find(spawnId);
1343 if (itr == _linkedRespawnStore.end()) return ObjectGuid::Empty;
1344 return itr->second;
1345 }
1347 {
1348 CreatureLocaleContainer::const_iterator itr = _creatureLocaleStore.find(entry);
1349 if (itr == _creatureLocaleStore.end()) return nullptr;
1350 return &itr->second;
1351 }
1352 GameObjectDataContainer const& GetAllGameObjectData() const { return _gameObjectDataStore; }
1354 {
1355 GameObjectDataContainer::const_iterator itr = _gameObjectDataStore.find(spawnId);
1356 if (itr == _gameObjectDataStore.end()) return nullptr;
1357 return &itr->second;
1358 }
1359 GameObjectData& NewOrExistGameObjectData(ObjectGuid::LowType spawnId) { return _gameObjectDataStore[spawnId]; }
1360 void DeleteGameObjectData(ObjectGuid::LowType spawnId);
1362 {
1363 GameObjectLocaleContainer::const_iterator itr = _gameObjectLocaleStore.find(entry);
1364 if (itr == _gameObjectLocaleStore.end()) return nullptr;
1365 return &itr->second;
1366 }
1367 ItemLocale const* GetItemLocale(uint32 entry) const
1368 {
1369 ItemLocaleContainer::const_iterator itr = _itemLocaleStore.find(entry);
1370 if (itr == _itemLocaleStore.end()) return nullptr;
1371 return &itr->second;
1372 }
1374 {
1375 ItemSetNameLocaleContainer::const_iterator itr = _itemSetNameLocaleStore.find(entry);
1376 if (itr == _itemSetNameLocaleStore.end())return nullptr;
1377 return &itr->second;
1378 }
1380 {
1381 QuestLocaleContainer::const_iterator itr = _questLocaleStore.find(entry);
1382 if (itr == _questLocaleStore.end()) return nullptr;
1383 return &itr->second;
1384 }
1386 {
1387 auto itr = _questOfferRewardLocaleStore.find(entry);
1388 if (itr == _questOfferRewardLocaleStore.end()) return nullptr;
1389 return &itr->second;
1390 }
1392 {
1393 auto itr = _questRequestItemsLocaleStore.find(entry);
1394 if (itr == _questRequestItemsLocaleStore.end()) return nullptr;
1395 return &itr->second;
1396 }
1398 {
1399 NpcTextLocaleContainer::const_iterator itr = _npcTextLocaleStore.find(entry);
1400 if (itr == _npcTextLocaleStore.end()) return nullptr;
1401 return &itr->second;
1402 }
1404 {
1405 PageTextLocaleContainer::const_iterator itr = _pageTextLocaleStore.find(entry);
1406 if (itr == _pageTextLocaleStore.end()) return nullptr;
1407 return &itr->second;
1408 }
1410 {
1411 auto itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionId));
1412 if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr;
1413 return &itr->second;
1414 }
1416 {
1417 PointOfInterestLocaleContainer::const_iterator itr = _pointOfInterestLocaleStore.find(id);
1418 if (itr == _pointOfInterestLocaleStore.end()) return nullptr;
1419 return &itr->second;
1420 }
1422 {
1423 QuestGreetingLocaleContainer::const_iterator itr = _questGreetingLocaleStore.find(id);
1424 if (itr == _questGreetingLocaleStore.end()) return nullptr;
1425 return &itr->second;
1426 }
1427
1429 {
1430 TrinityStringContainer::const_iterator itr = _trinityStringStore.find(entry);
1431 if (itr == _trinityStringStore.end())
1432 return nullptr;
1433 return &itr->second;
1434 }
1435 char const* GetTrinityString(uint32 entry, LocaleConstant locale) const;
1436 char const* GetTrinityStringForDBCLocale(uint32 entry) const { return GetTrinityString(entry, DBCLocaleIndex); }
1437 LocaleConstant GetDBCLocaleIndex() const { return DBCLocaleIndex; }
1438 void SetDBCLocaleIndex(LocaleConstant locale) { DBCLocaleIndex = locale; }
1439
1440 // grid objects
1441 void AddCreatureToGrid(ObjectGuid::LowType guid, CreatureData const* data);
1442 void RemoveCreatureFromGrid(ObjectGuid::LowType guid, CreatureData const* data);
1443 void AddGameobjectToGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1444 void RemoveGameobjectFromGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1445 ObjectGuid::LowType AddGameObjectData(uint32 entry, uint32 map, Position const& pos, QuaternionData const& rot, uint32 spawntimedelay = 0);
1446 ObjectGuid::LowType AddCreatureData(uint32 entry, uint32 map, Position const& pos, uint32 spawntimedelay = 0);
1447
1448 // reserved names
1449 void LoadReservedPlayersNames();
1450 bool IsReservedName(std::string_view name) const;
1451
1452 // name with valid structure and symbols
1453 static ResponseCodes CheckPlayerName(std::string_view name, LocaleConstant locale, bool create = false);
1454 static PetNameInvalidReason CheckPetName(std::string_view name, LocaleConstant locale);
1455 static bool IsValidCharterName(std::string_view name);
1456
1457 static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names);
1458
1459 GameTele const* GetGameTele(uint32 id) const
1460 {
1461 GameTeleContainer::const_iterator itr = _gameTeleStore.find(id);
1462 if (itr == _gameTeleStore.end()) return nullptr;
1463 return &itr->second;
1464 }
1465 GameTele const* GetGameTele(std::string_view name) const;
1466 GameTele const* GetGameTeleExactName(std::string_view name) const;
1467 GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; }
1468 bool AddGameTele(GameTele& data);
1469 bool DeleteGameTele(std::string_view name);
1470
1471 Trainer::Trainer const* GetTrainer(uint32 creatureId) const;
1472 std::vector<Trainer::Trainer const*> const& GetClassTrainers(uint8 classId) const { return _classTrainers.at(classId); }
1473
1475 {
1476 CacheVendorItemContainer::const_iterator iter = _cacheVendorItemStore.find(entry);
1477 if (iter == _cacheVendorItemStore.end())
1478 return nullptr;
1479
1480 return &iter->second;
1481 }
1482 void AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, bool persist = true); // for event
1483 bool RemoveVendorItem(uint32 entry, uint32 item, bool persist = true); // for event
1484 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;
1485
1486 void LoadScriptNames();
1487 ScriptNameContainer const& GetAllScriptNames() const;
1488 std::string const& GetScriptName(uint32 id) const;
1489 uint32 GetScriptId(std::string const& name);
1490
1495
1497 {
1498 return _gossipMenusStore.equal_range(uiMenuId);
1499 }
1500
1502 {
1503 return _gossipMenusStore.equal_range(uiMenuId);
1504 }
1505
1507 {
1508 return _gossipMenuItemsStore.equal_range(uiMenuId);
1509 }
1511 {
1512 return _gossipMenuItemsStore.equal_range(uiMenuId);
1513 }
1514
1515 // for wintergrasp only
1517
1518 static void AddLocaleString(std::string&& value, LocaleConstant localeConstant, std::vector<std::string>& data);
1519 static std::string_view GetLocaleString(std::vector<std::string> const& data, LocaleConstant locale)
1520 {
1521 if (locale < data.size())
1522 return data[locale];
1523 else
1524 return {};
1525 }
1526 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string& value)
1527 {
1528 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1529 value.assign(str);
1530 }
1531
1532 static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string_view& value)
1533 {
1534 if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
1535 value = 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:294
#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:60
TempSummonType
HighGuid
Definition ObjectGuid.h:63
std::unordered_map< uint32, VendorItemData > CacheVendorItemContainer
Definition ObjectMgr.h:857
std::unordered_map< uint8, EquipmentInfo > EquipmentInfoContainerInternal
Definition ObjectMgr.h:534
std::pair< GraveyardContainer::iterator, GraveyardContainer::iterator > GraveyardMapBoundsNonConst
Definition ObjectMgr.h:855
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:530
std::unordered_map< uint32, CreatureModelInfo > CreatureModelContainer
Definition ObjectMgr.h:536
std::vector< PlayerCreateInfoItem > PlayerCreateInfoItems
Definition ObjectMgr.h:635
std::unordered_map< uint32, std::vector< uint32 > > CreatureQuestItemMap
Definition ObjectMgr.h:537
std::set< ObjectGuid::LowType > CellGuidSet
Definition ObjectMgr.h:509
std::multimap< uint32, SpawnMetadata const * > SpawnGroupLinkContainer
Definition ObjectMgr.h:545
std::pair< GraveyardContainer::const_iterator, GraveyardContainer::const_iterator > GraveyardMapBounds
Definition ObjectMgr.h:854
std::multimap< uint32, ScriptInfo > ScriptMap
Definition ObjectMgr.h:410
std::unordered_map< uint32, QuestLocale > QuestLocaleContainer
Definition ObjectMgr.h:553
std::unordered_map< uint32, QuestGreetingLocale > QuestGreetingLocaleContainer
Definition ObjectMgr.h:574
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:550
std::unordered_map< ObjectGuid::LowType, CreatureData > CreatureDataContainer
Definition ObjectMgr.h:531
ScriptMapMap * GetScriptsMapByType(ScriptsType type)
Definition ObjectMgr.cpp:75
std::unordered_map< uint32, CreatureLocale > CreatureLocaleContainer
Definition ObjectMgr.h:548
std::map< std::pair< SummonSlot, Races >, uint32 > PlayerTotemModelMap
Definition ObjectMgr.h:908
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:673
std::unordered_map< uint32, GameObjectTemplateAddon > GameObjectTemplateAddonContainer
Definition ObjectMgr.h:539
std::string GetScriptCommandName(ScriptCommands command)
Definition ObjectMgr.cpp:87
QueryDataGroup
Definition ObjectMgr.h:911
@ QUERY_DATA_CREATURES
Definition ObjectMgr.h:912
@ QUERY_DATA_QUESTS
Definition ObjectMgr.h:915
@ QUERY_DATA_GAMEOBJECTS
Definition ObjectMgr.h:913
@ QUERY_DATA_ITEMS
Definition ObjectMgr.h:914
@ QUERY_DATA_ALL
Definition ObjectMgr.h:918
@ QUERY_DATA_POIS
Definition ObjectMgr.h:916
std::list< MailLevelReward > MailLevelRewardList
Definition ObjectMgr.h:719
std::multimap< uint32, GraveyardData > GraveyardContainer
Definition ObjectMgr.h:853
std::unordered_map< uint32, BroadcastTextEntry > BroadcastTextContainer
Definition ObjectMgr.h:507
std::multimap< uint32, GossipMenus > GossipMenusContainer
Definition ObjectMgr.h:790
std::unordered_map< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition ObjectMgr.h:538
std::unordered_map< uint32, std::vector< uint32 > > GameObjectQuestItemMap
Definition ObjectMgr.h:543
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:541
std::vector< uint32 > PlayerCreateInfoSpells
Definition ObjectMgr.h:654
std::unordered_map< uint32, PageTextLocale > PageTextLocaleContainer
Definition ObjectMgr.h:557
std::unordered_map< uint32, NpcTextLocale > NpcTextLocaleContainer
Definition ObjectMgr.h:556
std::map< ObjectGuid, ObjectGuid > LinkedRespawnContainer
Definition ObjectMgr.h:528
std::unordered_map< uint32, CellObjectGuids > CellObjectGuidsMap
Definition ObjectMgr.h:515
TC_GAME_API ScriptMapMap sEventScripts
Definition ObjectMgr.cpp:60
std::multimap< int32, uint32 > ExclusiveQuestGroups
Definition ObjectMgr.h:696
std::unordered_map< uint32, GameObjectLocale > GameObjectLocaleContainer
Definition ObjectMgr.h:549
std::unordered_map< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
Definition ObjectMgr.h:535
std::multimap< uint32, SpellClickInfo > SpellClickInfoContainer
Definition ObjectMgr.h:448
std::unordered_map< uint8, std::unordered_map< uint32, QuestGreeting > > QuestGreetingContainer
Definition ObjectMgr.h:845
std::pair< GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator > GossipMenuItemsMapBoundsNonConst
Definition ObjectMgr.h:795
std::unordered_map< uint32, DungeonEncounterList > DungeonEncounterContainer
Definition ObjectMgr.h:906
std::pair< GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator > GossipMenusMapBounds
Definition ObjectMgr.h:791
std::unordered_map< uint32, TrinityString > TrinityStringContainer
Definition ObjectMgr.h:576
std::unordered_map< ObjectGuid::LowType, CreatureAddon > CreatureAddonContainer
Definition ObjectMgr.h:532
std::pair< GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator > GossipMenuItemsMapBounds
Definition ObjectMgr.h:794
std::multimap< uint32, std::pair< uint32, bool > > SpellScriptsContainer
Definition ObjectMgr.h:412
std::unordered_map< uint32, PointOfInterestLocale > PointOfInterestLocaleContainer
Definition ObjectMgr.h:573
std::unordered_map< ObjectGuid::LowType, GameObjectAddon > GameObjectAddonContainer
Definition ObjectMgr.h:542
TC_GAME_API ScriptMapMap sWaypointScripts
Definition ObjectMgr.cpp:61
std::unordered_map< uint32, CreatureTemplate > CreatureTemplateContainer
Definition ObjectMgr.h:529
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:554
std::unordered_map< uint32, ItemLocale > ItemLocaleContainer
Definition ObjectMgr.h:551
std::multimap< uint32, GossipMenuItems > GossipMenuItemsContainer
Definition ObjectMgr.h:793
std::map< uint32, ScriptMap > ScriptMapMap
Definition ObjectMgr.h:411
std::unordered_map< uint16, std::vector< InstanceSpawnGroupInfo > > InstanceSpawnGroupContainer
Definition ObjectMgr.h:546
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:889
@ ENCOUNTER_CREDIT_KILL_CREATURE
Definition ObjectMgr.h:890
@ ENCOUNTER_CREDIT_CAST_SPELL
Definition ObjectMgr.h:891
std::unordered_map< uint32, SpawnGroupTemplateData > SpawnGroupDataContainer
Definition ObjectMgr.h:544
std::unordered_map< uint32, VehicleSeatAddon > VehicleSeatAddonContainer
Definition ObjectMgr.h:558
std::pair< ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator > ExclusiveQuestGroupsBounds
Definition ObjectMgr.h:697
std::map< TempSummonGroupKey, std::vector< TempSummonData > > TempSummonDataContainer
Definition ObjectMgr.h:547
std::unordered_map< ObjectGuid::LowType, GameObjectOverride > GameObjectOverrideContainer
Definition ObjectMgr.h:540
std::unordered_map< uint32, QuestPOIWrapper > QuestPOIContainer
Definition ObjectMgr.h:832
std::unordered_map< uint32, QuestRequestItemsLocale > QuestRequestItemsLocaleContainer
Definition ObjectMgr.h:555
std::unordered_map< uint16, CreatureBaseStats > CreatureBaseStatsContainer
Definition ObjectMgr.h:533
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:578
std::vector< std::unique_ptr< DungeonEncounter const > > DungeonEncounterList
Definition ObjectMgr.h:905
std::unordered_map< uint16, InstanceTemplate > InstanceTemplateContainer
Definition ObjectMgr.h:157
std::unordered_map< std::pair< uint32, uint32 >, GossipMenuItemsLocale > GossipMenuItemsLocaleContainer
Definition ObjectMgr.h:566
std::unordered_map< uint8, MailLevelRewardList > MailLevelRewardContainer
Definition ObjectMgr.h:720
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Definition ObjectMgr.h:792
std::unordered_map< uint32, CellObjectGuidsMap > MapObjectGuids
Definition ObjectMgr.h:516
std::vector< PlayerCreateInfoAction > PlayerCreateInfoActions
Definition ObjectMgr.h:665
std::unordered_map< uint32, ItemSetNameLocale > ItemSetNameLocaleContainer
Definition ObjectMgr.h:552
SkillRangeType
Definition ObjectMgr.h:860
@ SKILL_RANGE_MONO
Definition ObjectMgr.h:863
@ SKILL_RANGE_NONE
Definition ObjectMgr.h:865
@ SKILL_RANGE_LANGUAGE
Definition ObjectMgr.h:861
@ SKILL_RANGE_RANK
Definition ObjectMgr.h:864
@ SKILL_RANGE_LEVEL
Definition ObjectMgr.h:862
#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:302
static ObjectGuid const Empty
Definition ObjectGuid.h:140
uint32 LowType
Definition ObjectGuid.h:142
GameObjectLocale const * GetGameObjectLocale(uint32 entry) const
Definition ObjectMgr.h:1361
SpawnGroupTemplateData const * GetSpawnGroupData(SpawnObjectType type, ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1258
QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore
Definition ObjectMgr.h:1696
std::unordered_map< uint32, RepRewardRate > RepRewardRateContainer
Definition ObjectMgr.h:949
std::vector< Trainer::Trainer const * > const & GetClassTrainers(uint8 classId) const
Definition ObjectMgr.h:1472
CharacterConversionMap FactionChangeAchievements
Definition ObjectMgr.h:1538
int32 GetFishingBaseSkillLevel(uint32 entry) const
Definition ObjectMgr.h:1230
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:1373
VehicleAccessoryContainer _vehicleAccessoryStore
Definition ObjectMgr.h:1625
GameObjectTemplateAddonContainer _gameObjectTemplateAddonStore
Definition ObjectMgr.h:1683
TrinityString const * GetTrinityString(uint32 entry) const
Definition ObjectMgr.h:1428
VehicleSeatAddon const * GetVehicleSeatAddon(uint32 seatId) const
Definition ObjectMgr.h:1554
PointOfInterest const * GetPointOfInterest(uint32 id) const
Definition ObjectMgr.h:1096
QuestRelations * GetGOQuestRelationMapHACK()
Definition ObjectMgr.h:1118
QuestLocale const * GetQuestLocale(uint32 entry) const
Definition ObjectMgr.h:1379
NpcTextLocale const * GetNpcTextLocale(uint32 entry) const
Definition ObjectMgr.h:1397
GameTeleContainer _gameTeleStore
Definition ObjectMgr.h:1615
CreatureQuestItemMap const * GetCreatureQuestItemMap() const
Definition ObjectMgr.h:1022
std::unordered_map< uint32, AreaTriggerTeleport > AreaTriggerContainer
Definition ObjectMgr.h:943
HalfNameContainer _petHalfName1
Definition ObjectMgr.h:1662
GossipTextContainer _gossipTextStore
Definition ObjectMgr.h:1587
std::set< std::wstring > ReservedNamesContainer
Definition ObjectMgr.h:1612
ReputationOnKillEntry const * GetReputationOnKilEntry(uint32 id) const
Definition ObjectMgr.h:1077
MailLevelReward const * GetMailLevelReward(uint32 level, uint32 raceMask) const
Definition ObjectMgr.h:1264
InstanceTemplateContainer const & GetInstanceTemplates() const
Definition ObjectMgr.h:993
QuestContainer const & GetQuestTemplates() const
Definition ObjectMgr.h:1030
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:1346
ScriptNameContainer _scriptNamesStore
Definition ObjectMgr.h:1617
GossipMenuItemsMapBounds GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
Definition ObjectMgr.h:1506
std::map< uint32, int32 > FishingBaseSkillContainer
Definition ObjectMgr.h:1657
TavernAreaTriggerContainer _tavernAreaTriggerStore
Definition ObjectMgr.h:1585
QuestRelationResult GetCreatureQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1123
PageTextLocaleContainer _pageTextLocaleStore
Definition ObjectMgr.h:1700
EquipmentInfoContainer _equipmentInfoStore
Definition ObjectMgr.h:1677
GossipMenuItemsMapBoundsNonConst GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
Definition ObjectMgr.h:1510
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:1315
CreatureTemplateContainer _creatureTemplateStore
Definition ObjectMgr.h:1669
std::vector< std::string > ScriptNameContainer
Definition ObjectMgr.h:955
CreatureDataContainer const & GetAllCreatureData() const
Definition ObjectMgr.h:1331
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:1340
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:1260
std::set< uint32 > _transportMaps
Definition ObjectMgr.h:1715
PlayerClassInfo const * GetPlayerClassInfo(uint32 class_) const
Definition ObjectMgr.h:998
std::unordered_map< ObjectGuid::LowType, CreatureMovementData > _creatureMovementOverrides
Definition ObjectMgr.h:1673
GraveyardContainer GraveyardStore
Definition ObjectMgr.h:1516
std::unordered_map< uint32, RepSpilloverTemplate > RepSpilloverTemplateContainer
Definition ObjectMgr.h:951
GameObjectDataContainer const & GetAllGameObjectData() const
Definition ObjectMgr.h:1352
GameObjectTemplateContainer _gameObjectTemplateStore
Definition ObjectMgr.h:1682
std::vector< TempSummonData > const * GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
Definition ObjectMgr.h:1290
InstanceSpawnGroupContainer _instanceSpawnGroupStore
Definition ObjectMgr.h:1687
PlayerTotemModelMap _playerTotemModel
Definition ObjectMgr.h:1717
std::unordered_map< uint32, PointOfInterest > PointOfInterestContainer
Definition ObjectMgr.h:953
ObjectGuidGenerator & GetGenerator()
Definition ObjectMgr.h:1243
bool IsGameObjectForQuests(uint32 entry) const
Definition ObjectMgr.h:1045
GameObjectData const * GetGameObjectData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1353
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:1409
static std::string_view GetLocaleString(std::vector< std::string > const &data, LocaleConstant locale)
Definition ObjectMgr.h:1519
CreatureLocaleContainer _creatureLocaleStore
Definition ObjectMgr.h:1679
std::map< uint32, uint32 > CharacterConversionMap
Definition ObjectMgr.h:957
LocaleConstant GetDBCLocaleIndex() const
Definition ObjectMgr.h:1437
std::atomic< uint32 > _hiPetNumber
Definition ObjectMgr.h:1568
std::vector< InstanceSpawnGroupInfo > const * GetSpawnGroupsForInstance(uint32 instanceId) const
Definition ObjectMgr.h:1262
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:1015
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:1261
std::atomic< uint32 > _mailId
Definition ObjectMgr.h:1567
QuestOfferRewardLocale const * GetQuestOfferRewardLocale(uint32 entry) const
Definition ObjectMgr.h:1385
RepRewardRate const * GetRepRewardRate(uint32 factionId) const
Definition ObjectMgr.h:1068
ObjectGuid::LowType _creatureSpawnId
Definition ObjectMgr.h:1570
AreaTriggerContainer _areaTriggerStore
Definition ObjectMgr.h:1589
CreatureTemplateContainer const & GetCreatureTemplates() const
Definition ObjectMgr.h:968
GameObjectQuestItemMap const * GetGameObjectQuestItemMap() const
Definition ObjectMgr.h:1013
MapObjectGuids _mapObjectGuidsStore
Definition ObjectMgr.h:1667
CreatureAddonContainer _creatureAddonStore
Definition ObjectMgr.h:1671
ItemSetNameEntry const * GetItemSetNameEntry(uint32 itemId) const
Definition ObjectMgr.h:985
PageTextLocale const * GetPageTextLocale(uint32 entry) const
Definition ObjectMgr.h:1403
BroadcastTextContainer _broadcastTextStore
Definition ObjectMgr.h:1691
char const * GetTrinityStringForDBCLocale(uint32 entry) const
Definition ObjectMgr.h:1436
QuestRequestItemsLocale const * GetQuestRequestItemsLocale(uint32 entry) const
Definition ObjectMgr.h:1391
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:960
std::map< uint32, uint32 > BaseXPContainer
Definition ObjectMgr.h:1654
ExclusiveQuestGroupsBounds GetExclusiveQuestGroupBounds(int32 exclusiveGroupId) const
Definition ObjectMgr.h:1125
NpcTextLocaleContainer _npcTextLocaleStore
Definition ObjectMgr.h:1699
VendorItemData const * GetNpcVendorItemList(uint32 entry) const
Definition ObjectMgr.h:1474
HalfNameContainer _petHalfName0
Definition ObjectMgr.h:1661
std::unordered_map< uint8, std::vector< Trainer::Trainer const * > > _classTrainers
Definition ObjectMgr.h:1709
static void GetLocaleString(std::vector< std::string > const &data, LocaleConstant localeConstant, std::string_view &value)
Definition ObjectMgr.h:1532
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:1415
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:1501
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:1526
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:1006
std::map< uint32, uint32 > AreaTriggerScriptContainer
Definition ObjectMgr.h:945
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:947
ItemLocale const * GetItemLocale(uint32 entry) const
Definition ObjectMgr.h:1367
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:1307
QuestRelationResult GetGOQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1119
SpawnGroupTemplateData const * GetDefaultSpawnGroup() const
Definition ObjectMgr.h:1259
GameObjectData & NewOrExistGameObjectData(ObjectGuid::LowType spawnId)
Definition ObjectMgr.h:1359
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:1032
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:1496
GameObjectLocaleContainer _gameObjectLocaleStore
Definition ObjectMgr.h:1681
GameObjectAddonContainer _gameObjectAddonStore
Definition ObjectMgr.h:1674
GameTele const * GetGameTele(uint32 id) const
Definition ObjectMgr.h:1459
PlayerXPperLevel _playerXPperLevel
Definition ObjectMgr.h:1652
CacheVendorItemContainer _cacheVendorItemStore
Definition ObjectMgr.h:1707
QuestGreetingLocale const * GetQuestGreetingLocale(uint32 id) const
Definition ObjectMgr.h:1421
QuestRelationResult GetCreatureQuestRelations(uint32 entry) const
Definition ObjectMgr.h:1122
CreatureData const * GetCreatureData(ObjectGuid::LowType spawnId) const
Definition ObjectMgr.h:1332
std::set< uint32 > TavernAreaTriggerContainer
Definition ObjectMgr.h:1581
PointOfInterestContainer _pointsOfInterestStore
Definition ObjectMgr.h:1600
BroadcastTextEntry const * GetBroadcastText(uint32 id) const
Definition ObjectMgr.h:1299
RepRewardRateContainer _repRewardRateStore
Definition ObjectMgr.h:1594
CharacterConversionMap FactionChangeTitles
Definition ObjectMgr.h:1543
std::unordered_map< uint32, ReputationOnKillEntry > RepOnKillContainer
Definition ObjectMgr.h:950
VehicleSeatAddonContainer _vehicleSeatAddonStore
Definition ObjectMgr.h:1718
CreatureData & NewOrExistCreatureData(ObjectGuid::LowType spawnId)
Definition ObjectMgr.h:1338
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:1040
SpawnGroupTemplateData const * GetSpawnGroupData(uint32 groupId) const
Definition ObjectMgr.h:1257
ItemTemplateContainer const & GetItemTemplateStore() const
Definition ObjectMgr.h:981
QuestRelationResult GetGOQuestInvolvedRelations(uint32 entry) const
Definition ObjectMgr.h:1120
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:1467
CharacterConversionMap FactionChangeQuests
Definition ObjectMgr.h:1540
Trinity::IteratorPair< SpellClickInfoContainer::const_iterator > GetSpellClickInfoMapBounds(uint32 creature_id) const
Definition ObjectMgr.h:1491
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:1087
SpellClickInfoContainer _spellClickInfoStore
Definition ObjectMgr.h:1619
ReservedNamesContainer _reservedNamesStore
Definition ObjectMgr.h:1613
QuestRelations * GetCreatureQuestRelationMapHACK()
Definition ObjectMgr.h:1121
GossipMenuItemsContainer _gossipMenuItemsStore
Definition ObjectMgr.h:1599
GameObjectOverrideContainer _gameObjectOverrideStore
Definition ObjectMgr.h:1684
void SetDBCLocaleIndex(LocaleConstant locale)
Definition ObjectMgr.h:1438
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Quest > > QuestContainer
Definition ObjectMgr.h:941
Utility class to enable range for loop syntax for multimap.equal_range uses.
Definition Unit.h:783
auto MapEqualRange(M &map, typename M::key_type const &key)
std::string questFailedText
Definition ObjectMgr.h:469
std::array< uint32, 3 > EmoteDelay
Definition ObjectMgr.h:484
std::vector< std::string > Text
Definition ObjectMgr.h:481
std::array< uint32, 3 > EmoteID
Definition ObjectMgr.h:483
std::vector< std::string > Text1
Definition ObjectMgr.h:482
BroadcastTextEntry(uint32 id)
Definition ObjectMgr.h:474
std::string const & GetText(LocaleConstant locale=DEFAULT_LOCALE, uint8 gender=GENDER_MALE, bool forceGender=false) const
Definition ObjectMgr.h:490
CellGuidSet gameobjects
Definition ObjectMgr.h:513
CellGuidSet creatures
Definition ObjectMgr.h:512
DungeonEncounterEntry const * dbcEntry
Definition ObjectMgr.h:899
DungeonEncounter(DungeonEncounterEntry const *_dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
Definition ObjectMgr.h:896
EncounterCreditType creditType
Definition ObjectMgr.h:900
uint32 lastEncounterDungeon
Definition ObjectMgr.h:902
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:563
std::vector< std::string > OptionText
Definition ObjectMgr.h:562
uint32 BoxBroadcastTextID
Definition ObjectMgr.h:779
std::string OptionText
Definition ObjectMgr.h:770
uint32 ActionMenuID
Definition ObjectMgr.h:774
uint32 OptionNpcFlag
Definition ObjectMgr.h:773
ConditionContainer Conditions
Definition ObjectMgr.h:780
uint32 ActionPoiID
Definition ObjectMgr.h:775
std::string BoxText
Definition ObjectMgr.h:778
GossipOptionIcon OptionIcon
Definition ObjectMgr.h:769
uint32 OptionType
Definition ObjectMgr.h:772
uint32 OptionBroadcastTextID
Definition ObjectMgr.h:771
ConditionContainer Conditions
Definition ObjectMgr.h:787
uint32 TextID
Definition ObjectMgr.h:786
uint32 MenuID
Definition ObjectMgr.h:785
uint32 safeLocId
Definition ObjectMgr.h:849
Language lang_id
Definition ObjectMgr.h:880
uint32 skill_id
Definition ObjectMgr.h:882
uint32 spell_id
Definition ObjectMgr.h:881
uint32 senderEntry
Definition ObjectMgr.h:716
MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry)
Definition ObjectMgr.h:712
uint32 mailTemplateId
Definition ObjectMgr.h:715
std::string Text
Definition ObjectMgr.h:60
uint32 NextPageID
Definition ObjectMgr.h:61
uint16 health
Definition ObjectMgr.h:702
uint32 armor
Definition ObjectMgr.h:704
uint16 minDamage
Definition ObjectMgr.h:705
uint16 stats[MAX_STATS]
Definition ObjectMgr.h:701
uint16 maxDamage
Definition ObjectMgr.h:706
uint16 mana
Definition ObjectMgr.h:703
std::unique_ptr< PlayerClassLevelInfo[]> levelInfo
Definition ObjectMgr.h:646
PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type)
Definition ObjectMgr.h:658
PlayerCreateInfoItem(uint32 id, uint32 amount)
Definition ObjectMgr.h:629
float orientation
Definition ObjectMgr.h:683
PlayerCreateInfoActions action
Definition ObjectMgr.h:689
uint16 displayId_m
Definition ObjectMgr.h:684
std::unique_ptr< PlayerLevelInfo[]> levelInfo
Definition ObjectMgr.h:693
PlayerCreateInfoSpells castSpells
Definition ObjectMgr.h:688
PlayerCreateInfoSkills skills
Definition ObjectMgr.h:690
float positionX
Definition ObjectMgr.h:680
uint32 areaId
Definition ObjectMgr.h:679
float positionY
Definition ObjectMgr.h:681
PlayerCreateInfoSpells customSpells
Definition ObjectMgr.h:687
float positionZ
Definition ObjectMgr.h:682
PlayerCreateInfoItems item
Definition ObjectMgr.h:686
uint32 mapId
Definition ObjectMgr.h:678
uint16 displayId_f
Definition ObjectMgr.h:685
uint16 stats[MAX_STATS]
Definition ObjectMgr.h:651
std::vector< std::string > Name
Definition ObjectMgr.h:570
std::string Name
Definition ObjectMgr.h:762
uint32 Importance
Definition ObjectMgr.h:761
std::vector< std::string > greeting
Definition ObjectMgr.h:525
std::string greeting
Definition ObjectMgr.h:838
uint16 greetEmoteType
Definition ObjectMgr.h:836
uint32 greetEmoteDelay
Definition ObjectMgr.h:837
QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
Definition ObjectMgr.h:841
std::vector< QuestPOIBlobPoint > QuestPOIBlobPointStats
Definition ObjectMgr.h:812
uint32 WorldMapAreaID
Definition ObjectMgr.h:808
std::vector< QuestPOIBlobData > QuestPOIBlobDataStats
Definition ObjectMgr.h:818
uint32 QuestID
Definition ObjectMgr.h:817
ByteBuffer QueryDataBuffer
Definition ObjectMgr.h:824
QuestPOIData POIData
Definition ObjectMgr.h:823
ByteBuffer BuildQueryData() const
void InitializeQueryData()
QuestRelations::const_iterator _it
Definition ObjectMgr.h:609
value_type const & reference
Definition ObjectMgr.h:589
value_type const * pointer
Definition ObjectMgr.h:588
bool operator==(Iterator const &other) const
Definition ObjectMgr.h:598
Iterator(QuestRelations::const_iterator it, QuestRelations::const_iterator end, bool onlyActive)
Definition ObjectMgr.h:592
value_type operator*() const
Definition ObjectMgr.h:603
QuestRelations::const_iterator _end
Definition ObjectMgr.h:609
std::forward_iterator_tag iterator_category
Definition ObjectMgr.h:586
QuestRelations::mapped_type value_type
Definition ObjectMgr.h:587
bool HasQuest(uint32 questId) const
QuestRelationResult(std::pair< QuestRelations::const_iterator, QuestRelations::const_iterator > range, bool onlyActive)
Definition ObjectMgr.h:614
Iterator begin() const
Definition ObjectMgr.h:617
QuestRelations::const_iterator _end
Definition ObjectMgr.h:623
QuestRelations::const_iterator _begin
Definition ObjectMgr.h:623
Iterator end() const
Definition ObjectMgr.h:618
float questMonthlyRate
Definition ObjectMgr.h:728
float questWeeklyRate
Definition ObjectMgr.h:727
float questDailyRate
Definition ObjectMgr.h:726
float questRepeatableRate
Definition ObjectMgr.h:729
float spellRate
Definition ObjectMgr.h:731
float questRate
Definition ObjectMgr.h:725
float creatureRate
Definition ObjectMgr.h:730
uint32 faction_rank[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:751
uint32 faction[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:749
float faction_rate[MAX_SPILLOVER_FACTIONS]
Definition ObjectMgr.h:750
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:520