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