TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ObjectMgr.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
3  * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the
7  * Free Software Foundation; either version 2 of the License, or (at your
8  * option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef _OBJECTMGR_H
20 #define _OBJECTMGR_H
21 
22 #include "Log.h"
23 #include "Object.h"
24 #include "Bag.h"
25 #include "Creature.h"
26 #include "DynamicObject.h"
27 #include "GameObject.h"
28 #include "TemporarySummon.h"
29 #include "Corpse.h"
30 #include "QuestDef.h"
31 #include "ItemTemplate.h"
32 #include "NPCHandler.h"
33 #include "DatabaseEnv.h"
34 #include "Mail.h"
35 #include "Map.h"
36 #include "ObjectAccessor.h"
37 #include "ObjectDefines.h"
38 #include "VehicleDefines.h"
39 #include "ConditionMgr.h"
40 #include "DB2Stores.h"
41 #include <string>
42 #include <tuple>
43 #include <map>
44 #include <limits>
45 #include <functional>
46 #include <memory>
47 
48 class Item;
49 struct AccessRequirement;
50 struct PlayerInfo;
51 struct PlayerLevelInfo;
52 
53 #pragma pack(push, 1)
54 
55 struct PageText
56 {
57  std::string Text;
59 };
60 
63 {
64  TempSummonGroupKey(uint32 summonerEntry, SummonerType summonerType, uint8 group)
65  : _summonerEntry(summonerEntry), _summonerType(summonerType), _summonGroup(group)
66  {
67  }
68 
69  bool operator<(TempSummonGroupKey const& rhs) const
70  {
71  return std::tie(_summonerEntry, _summonerType, _summonGroup) <
72  std::tie(rhs._summonerEntry, rhs._summonerType, rhs._summonGroup);
73  }
74 
75 private:
79 };
80 
81 #pragma pack(pop)
82 
83 // DB scripting commands
85 {
86  SCRIPT_COMMAND_TALK = 0, // source/target = Creature, target = any, datalong = talk type (0=say, 1=whisper, 2=yell, 3=emote text, 4=boss emote text), datalong2 & 1 = player talk (instead of creature), dataint = string_id
87  SCRIPT_COMMAND_EMOTE = 1, // source/target = Creature, datalong = emote id, datalong2 = 0: set emote state; > 0: play emote state
88  SCRIPT_COMMAND_FIELD_SET = 2, // source/target = Creature, datalong = field id, datalog2 = value
89  SCRIPT_COMMAND_MOVE_TO = 3, // source/target = Creature, datalong2 = time to reach, x/y/z = destination
90  SCRIPT_COMMAND_FLAG_SET = 4, // source/target = Creature, datalong = field id, datalog2 = bitmask
91  SCRIPT_COMMAND_FLAG_REMOVE = 5, // source/target = Creature, datalong = field id, datalog2 = bitmask
92  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
93  SCRIPT_COMMAND_QUEST_EXPLORED = 7, // target/source = Player, target/source = GO/Creature, datalong = quest id, datalong2 = distance or 0
94  SCRIPT_COMMAND_KILL_CREDIT = 8, // target/source = Player, datalong = creature entry, datalong2 = 0: personal credit, 1: group credit
95  SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9, // source = WorldObject (summoner), datalong = GO guid, datalong2 = despawn delay
96  SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10, // source = WorldObject (summoner), datalong = creature entry, datalong2 = despawn delay, x/y/z = summon position, o = orientation
97  SCRIPT_COMMAND_OPEN_DOOR = 11, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
98  SCRIPT_COMMAND_CLOSE_DOOR = 12, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
99  SCRIPT_COMMAND_ACTIVATE_OBJECT = 13, // source = Unit, target = GO
100  SCRIPT_COMMAND_REMOVE_AURA = 14, // source (datalong2 != 0) or target (datalong2 == 0) = Unit, datalong = spell id
101  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
102  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)
103  SCRIPT_COMMAND_CREATE_ITEM = 17, // target/source = Player, datalong = item entry, datalong2 = amount
104  SCRIPT_COMMAND_DESPAWN_SELF = 18, // target/source = Creature, datalong = despawn delay
105 
106  SCRIPT_COMMAND_LOAD_PATH = 20, // source = Unit, datalong = path id, datalong2 = is repeatable
107  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)
108  SCRIPT_COMMAND_KILL = 22, // source/target = Creature, dataint = remove corpse attribute
109 
110  // TrinityCore only
111  SCRIPT_COMMAND_ORIENTATION = 30, // source = Unit, target (datalong > 0) = Unit, datalong = > 0 turn source to face target, o = orientation
112  SCRIPT_COMMAND_EQUIP = 31, // soucre = Creature, datalong = equipment id
113  SCRIPT_COMMAND_MODEL = 32, // source = Creature, datalong = model id
114  SCRIPT_COMMAND_CLOSE_GOSSIP = 33, // source = Player
115  SCRIPT_COMMAND_PLAYMOVIE = 34, // source = Player, datalong = movie id
116  SCRIPT_COMMAND_PLAY_ANIMKIT = 35 // source = Creature, datalong = AnimKit id
117 };
118 
119 // Benchmarked: Faster than std::unordered_map (insert/find)
120 typedef std::map<uint32, PageText> PageTextContainer;
121 
122 // Benchmarked: Faster than std::map (insert/find)
123 typedef std::unordered_map<uint16, InstanceTemplate> InstanceTemplateContainer;
124 
125 struct GameTele
126 {
127  float position_x;
128  float position_y;
129  float position_z;
130  float orientation;
132  std::string name;
133  std::wstring wnameLow;
134 };
135 
136 typedef std::unordered_map<uint32, GameTele > GameTeleContainer;
137 
139 {
141 
145 
147 };
148 
150 {
151  // Talk Flags
153 
154  // Emote flags
156 
157  // TeleportTo flags
159 
160  // KillCredit flags
162 
163  // RemoveAura flags
165 
166  // CastSpell flags
173 
174  // PlaySound flags
177 
178  // Orientation flags
180 };
181 
183 {
188 
189  union
190  {
191  struct
192  {
194  float fData[4];
195  } Raw;
196 
197  struct // SCRIPT_COMMAND_TALK (0)
198  {
199  uint32 ChatType; // datalong
200  uint32 Flags; // datalong2
201  int32 TextID; // dataint
202  } Talk;
203 
204  struct // SCRIPT_COMMAND_EMOTE (1)
205  {
206  uint32 EmoteID; // datalong
207  uint32 Flags; // datalong2
208  } Emote;
209 
210  struct // SCRIPT_COMMAND_FIELD_SET (2)
211  {
212  uint32 FieldID; // datalong
213  uint32 FieldValue; // datalong2
214  } FieldSet;
215 
216  struct // SCRIPT_COMMAND_MOVE_TO (3)
217  {
218  uint32 Unused1; // datalong
219  uint32 TravelTime; // datalong2
220  int32 Unused2; // dataint
221 
222  float DestX;
223  float DestY;
224  float DestZ;
225  } MoveTo;
226 
227  struct // SCRIPT_COMMAND_FLAG_SET (4)
228  // SCRIPT_COMMAND_FLAG_REMOVE (5)
229  {
230  uint32 FieldID; // datalong
231  uint32 FieldValue; // datalong2
232  } FlagToggle;
233 
234  struct // SCRIPT_COMMAND_TELEPORT_TO (6)
235  {
236  uint32 MapID; // datalong
237  uint32 Flags; // datalong2
238  int32 Unused1; // dataint
239 
240  float DestX;
241  float DestY;
242  float DestZ;
243  float Orientation;
244  } TeleportTo;
245 
246  struct // SCRIPT_COMMAND_QUEST_EXPLORED (7)
247  {
248  uint32 QuestID; // datalong
249  uint32 Distance; // datalong2
250  } QuestExplored;
251 
252  struct // SCRIPT_COMMAND_KILL_CREDIT (8)
253  {
254  uint32 CreatureEntry; // datalong
255  uint32 Flags; // datalong2
256  } KillCredit;
257 
258  struct // SCRIPT_COMMAND_RESPAWN_GAMEOBJECT (9)
259  {
260  uint32 GOGuid; // datalong
261  uint32 DespawnDelay; // datalong2
263 
264  struct // SCRIPT_COMMAND_TEMP_SUMMON_CREATURE (10)
265  {
266  uint32 CreatureEntry; // datalong
267  uint32 DespawnDelay; // datalong2
268  int32 Unused1; // dataint
269 
270  float PosX;
271  float PosY;
272  float PosZ;
273  float Orientation;
275 
276  struct // SCRIPT_COMMAND_CLOSE_DOOR (12)
277  // SCRIPT_COMMAND_OPEN_DOOR (11)
278  {
279  uint32 GOGuid; // datalong
280  uint32 ResetDelay; // datalong2
281  } ToggleDoor;
282 
283  // SCRIPT_COMMAND_ACTIVATE_OBJECT (13)
284 
285  struct // SCRIPT_COMMAND_REMOVE_AURA (14)
286  {
287  uint32 SpellID; // datalong
288  uint32 Flags; // datalong2
289  } RemoveAura;
290 
291  struct // SCRIPT_COMMAND_CAST_SPELL (15)
292  {
293  uint32 SpellID; // datalong
294  uint32 Flags; // datalong2
295  int32 CreatureEntry; // dataint
296 
298  } CastSpell;
299 
300  struct // SCRIPT_COMMAND_PLAY_SOUND (16)
301  {
302  uint32 SoundID; // datalong
303  uint32 Flags; // datalong2
304  } PlaySound;
305 
306  struct // SCRIPT_COMMAND_CREATE_ITEM (17)
307  {
308  uint32 ItemEntry; // datalong
309  uint32 Amount; // datalong2
310  } CreateItem;
311 
312  struct // SCRIPT_COMMAND_DESPAWN_SELF (18)
313  {
314  uint32 DespawnDelay; // datalong
315  } DespawnSelf;
316 
317  struct // SCRIPT_COMMAND_LOAD_PATH (20)
318  {
319  uint32 PathID; // datalong
320  uint32 IsRepeatable; // datalong2
321  } LoadPath;
322 
323  struct // SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT (21)
324  {
325  uint32 CreatureEntry; // datalong
326  uint32 ScriptID; // datalong2
327  uint32 ScriptType; // dataint
328  } CallScript;
329 
330  struct // SCRIPT_COMMAND_KILL (22)
331  {
332  uint32 Unused1; // datalong
333  uint32 Unused2; // datalong2
334  int32 RemoveCorpse; // dataint
335  } Kill;
336 
337  struct // SCRIPT_COMMAND_ORIENTATION (30)
338  {
339  uint32 Flags; // datalong
340  uint32 Unused1; // datalong2
341  int32 Unused2; // dataint
342 
343  float Unused3;
344  float Unused4;
345  float Unused5;
346  float Orientation;
347  } Orientation;
348 
349  struct // SCRIPT_COMMAND_EQUIP (31)
350  {
351  uint32 EquipmentID; // datalong
352  } Equip;
353 
354  struct // SCRIPT_COMMAND_MODEL (32)
355  {
356  uint32 ModelID; // datalong
357  } Model;
358 
359  // SCRIPT_COMMAND_CLOSE_GOSSIP (33)
360 
361  struct // SCRIPT_COMMAND_PLAYMOVIE (34)
362  {
363  uint32 MovieID; // datalong
364  } PlayMovie;
365 
366  struct // SCRIPT_COMMAND_PLAY_ANIMKIT (35)
367  {
368  uint32 AnimKitID; // datalong
369  } PlayAnimKit;
370  };
371 
372  std::string GetDebugInfo() const;
373 };
374 
375 typedef std::multimap<uint32, ScriptInfo> ScriptMap;
376 typedef std::map<uint32, ScriptMap > ScriptMapMap;
377 typedef std::multimap<uint32, uint32> SpellScriptsContainer;
378 typedef std::pair<SpellScriptsContainer::iterator, SpellScriptsContainer::iterator> SpellScriptsBounds;
382 
383 std::string GetScriptsTableNameByType(ScriptsType type);
385 std::string GetScriptCommandName(ScriptCommands command);
386 
388 {
392 
393  // helpers
394  bool IsFitToRequirements(Unit const* clicker, Unit const* clickee) const;
395 };
396 
397 typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoContainer;
398 typedef std::pair<SpellClickInfoContainer::const_iterator, SpellClickInfoContainer::const_iterator> SpellClickInfoMapBounds;
399 
401 {
403  float target_X;
404  float target_Y;
405  float target_Z;
407 };
408 
409 typedef std::set<ObjectGuid::LowType> CellGuidSet;
411 {
414 };
415 typedef std::unordered_map<uint32/*cell_id*/, CellObjectGuids> CellObjectGuidsMap;
416 typedef std::unordered_map<uint32/*(mapid, spawnMode) pair*/, CellObjectGuidsMap> MapObjectGuids;
417 
418 // Trinity Trainer Reference start range
419 #define TRINITY_TRAINER_START_REF 200000
420 
422 {
424 };
425 
426 typedef std::map<ObjectGuid, ObjectGuid> LinkedRespawnContainer;
427 typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer;
428 typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer;
429 typedef std::map<TempSummonGroupKey, std::vector<TempSummonData> > TempSummonDataContainer;
430 typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
431 typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
432 typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer;
433 typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer;
434 typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
435 typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
436 typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
437 
438 typedef std::unordered_map<uint32, TrinityString> TrinityStringContainer;
439 
440 typedef std::multimap<uint32, uint32> QuestRelations; // unit/go -> quest
441 typedef std::multimap<uint32, uint32> QuestRelationsReverse; // quest -> unit/go
442 typedef std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> QuestRelationBounds;
443 typedef std::pair<QuestRelationsReverse::const_iterator, QuestRelationsReverse::const_iterator> QuestRelationReverseBounds;
444 
446 {
447  PetLevelInfo() : health(0), mana(0), armor(0) { for (uint8 i=0; i < MAX_STATS; ++i) stats[i] = 0; }
448 
453 };
454 
456 {
458  MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { }
459 
463 };
464 
465 typedef std::list<MailLevelReward> MailLevelRewardList;
466 typedef std::unordered_map<uint8, MailLevelRewardList> MailLevelRewardContainer;
467 
468 // We assume the rate is in general the same for all three types below, but chose to keep three for scalability and customization
470 {
471  float questRate; // We allow rate = 0.0 in database. For this case, it means that
476  float creatureRate; // no reputation are given at all for this faction/rate type.
477  float spellRate;
478 };
479 
481 {
491 };
492 
494 {
498 };
499 
501 {
507  std::string Name;
508 };
509 
511 {
515  std::string OptionText;
521  bool BoxCoded;
523  std::string BoxText;
526 };
527 
529 {
533 };
534 
535 typedef std::multimap<uint32, GossipMenus> GossipMenusContainer;
536 typedef std::pair<GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator> GossipMenusMapBounds;
537 typedef std::pair<GossipMenusContainer::iterator, GossipMenusContainer::iterator> GossipMenusMapBoundsNonConst;
538 typedef std::multimap<uint32, GossipMenuItems> GossipMenuItemsContainer;
539 typedef std::pair<GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator> GossipMenuItemsMapBounds;
540 typedef std::pair<GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator> GossipMenuItemsMapBoundsNonConst;
541 
543 {
546 
547  QuestPOIPoint() : X(0), Y(0) { }
548  QuestPOIPoint(int32 _X, int32 _Y) : X(_X), Y(_Y) { }
549 };
550 
551 struct QuestPOI
552 {
565  std::vector<QuestPOIPoint> points;
566 
567  QuestPOI() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), WorldMapAreaID(0), Floor(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), UnkWoD1(0) { }
568  QuestPOI(int32 _BlobIndex, int32 _ObjectiveIndex, int32 _QuestObjectiveID, int32 _QuestObjectID, int32 _MapID, int32 _WorldMapAreaID, int32 _Foor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, int32 _PlayerConditionID, int32 _UnkWoD1) :
569  BlobIndex(_BlobIndex), ObjectiveIndex(_ObjectiveIndex), QuestObjectiveID(_QuestObjectiveID), QuestObjectID(_QuestObjectID), MapID(_MapID), WorldMapAreaID(_WorldMapAreaID),
570  Floor(_Foor), Priority(_Priority), Flags(_Flags), WorldEffectID(_WorldEffectID), PlayerConditionID(_PlayerConditionID), UnkWoD1(_UnkWoD1) { }
571 };
572 
573 typedef std::vector<QuestPOI> QuestPOIVector;
574 typedef std::unordered_map<uint32, QuestPOIVector> QuestPOIContainer;
575 
577 {
580  std::string greeting;
581 
582  QuestGreeting() : greetEmoteType(0), greetEmoteDelay(0) { }
583  QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
584  : greetEmoteType(_greetEmoteType), greetEmoteDelay(_greetEmoteDelay), greeting(_greeting) { }
585 };
586 
587 typedef std::unordered_map<uint8, std::unordered_map<uint32, QuestGreeting const*>> QuestGreetingContainer;
588 
590 {
593 };
594 
595 typedef std::multimap<uint32, GraveYardData> GraveYardContainer;
596 typedef std::pair<GraveYardContainer::const_iterator, GraveYardContainer::const_iterator> GraveYardMapBounds;
597 typedef std::pair<GraveYardContainer::iterator, GraveYardContainer::iterator> GraveYardMapBoundsNonConst;
598 
599 typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
600 typedef std::unordered_map<uint32, TrainerSpellData> CacheTrainerSpellContainer;
601 
602 typedef std::unordered_map<uint8, uint8> ExpansionRequirementContainer;
603 typedef std::unordered_map<uint32, std::string> RealmNameContainer;
604 
606 {
607  CharcterTemplateClass(uint8 factionGroup, uint8 classID) :
608  FactionGroup(factionGroup), ClassID(classID) { }
609 
612 };
613 
615 {
617  std::vector<CharcterTemplateClass> Classes;
618  std::string Name;
619  std::string Description;
621 };
622 
623 typedef std::unordered_map<uint32, CharacterTemplate> CharacterTemplateContainer;
624 
626 {
627  SKILL_RANGE_LANGUAGE, // 300..300
628  SKILL_RANGE_LEVEL, // 1..max skill for level
629  SKILL_RANGE_MONO, // 1..1, grey monolite bar
630  SKILL_RANGE_RANK, // 1..skill for known rank
631  SKILL_RANGE_NONE // 0..0 always
632 };
633 
634 #define MAX_SKILL_STEP 16
635 
637 {
638  uint32 ID; // 0
640 };
641 
643 
644 #define MAX_PLAYER_NAME 12 // max allowed by client name length
645 #define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
646 #define MAX_PET_NAME 12 // max allowed by client name length
647 #define MAX_CHARTER_NAME 24 // max allowed by client name length
648 
649 TC_GAME_API bool normalizePlayerName(std::string& name);
650 
652 {
653  ExtendedPlayerName(std::string const& name, std::string const& realmName) : Name(name), Realm(realmName) { }
654  std::string Name;
655  std::string Realm;
656 };
657 
658 ExtendedPlayerName ExtractExtendedPlayerName(std::string const& name);
659 
661 {
665 };
666 
669 
671 {
674 };
675 
677 {
678  DungeonEncounter(DungeonEncounterEntry const* _dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
679  : dbcEntry(_dbcEntry), creditType(_creditType), creditEntry(_creditEntry), lastEncounterDungeon(_lastEncounterDungeon) { }
680 
685 };
686 
687 typedef std::list<DungeonEncounter const*> DungeonEncounterList;
688 typedef std::unordered_map<uint64, DungeonEncounterList> DungeonEncounterContainer;
689 
691 {
694 };
695 
696 typedef std::unordered_map<uint32, std::vector<uint32 /*id*/>> TerrainPhaseInfo; // terrain swap
697 typedef std::unordered_map<uint32, std::vector<uint32>> TerrainUIPhaseInfo; // worldmaparea swap
698 typedef std::unordered_map<uint32, std::vector<PhaseInfoStruct>> PhaseInfo; // phase
699 
700 class PlayerDumpReader;
701 
703 {
704  friend class PlayerDumpReader;
705 
706  private:
707  ObjectMgr();
708  ~ObjectMgr();
709 
710  public:
711  ObjectMgr(ObjectMgr const&) = delete;
712  ObjectMgr(ObjectMgr&&) = delete;
713 
714  ObjectMgr& operator= (ObjectMgr const&) = delete;
715  ObjectMgr& operator= (ObjectMgr&&) = delete;
716 
717  static ObjectMgr* instance();
718 
719  typedef std::unordered_map<uint32, Item*> ItemMap;
720 
721  typedef std::unordered_map<uint32, Quest*> QuestMap;
722 
723  typedef std::unordered_map<uint32, AreaTriggerStruct> AreaTriggerContainer;
724 
725  typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer;
726 
727  typedef std::unordered_map<uint64, AccessRequirement*> AccessRequirementContainer;
728 
729  typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer;
730  typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer;
731  typedef std::unordered_map<uint32, RepSpilloverTemplate> RepSpilloverTemplateContainer;
732 
733  typedef std::unordered_map<uint32, PointOfInterest> PointOfInterestContainer;
734 
735  typedef std::vector<std::string> ScriptNameContainer;
736 
737  typedef std::map<uint32, uint32> CharacterConversionMap;
738 
739  Player* GetPlayerByLowGUID(ObjectGuid::LowType lowguid) const;
740 
741  GameObjectTemplate const* GetGameObjectTemplate(uint32 entry);
742  GameObjectTemplateContainer const* GetGameObjectTemplates() const { return &_gameObjectTemplateStore; }
743  int LoadReferenceVendor(int32 vendor, int32 item, uint8 type, std::set<uint32> *skip_vendors);
744 
745  void LoadGameObjectTemplate();
746  void AddGameobjectInfo(GameObjectTemplate* goinfo);
747 
748  CreatureTemplate const* GetCreatureTemplate(uint32 entry);
749  CreatureTemplateContainer const* GetCreatureTemplates() const { return &_creatureTemplateStore; }
750  CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId);
751  CreatureModelInfo const* GetCreatureModelRandomGender(uint32* displayID);
752  static uint32 ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = NULL);
753  static void ChooseCreatureFlags(CreatureTemplate const* cinfo, uint64& npcflag, uint32& unit_flags, uint32& dynamicflags, CreatureData const* data = NULL);
754  EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id);
755  CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid);
756  GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid);
757  CreatureAddon const* GetCreatureTemplateAddon(uint32 entry);
758  ItemTemplate const* GetItemTemplate(uint32 entry);
759  ItemTemplateContainer const* GetItemTemplateStore() const { return &_itemTemplateStore; }
760 
761  InstanceTemplate const* GetInstanceTemplate(uint32 mapId);
762 
763  PetLevelInfo const* GetPetLevelInfo(uint32 creature_id, uint8 level) const;
764 
765  void GetPlayerClassLevelInfo(uint32 class_, uint8 level, uint32& baseHP, uint32& baseMana) const;
766 
767  PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const;
768 
769  void GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const;
770 
771  static ObjectGuid GetPlayerGUIDByName(std::string const& name);
772 
774  {
775  GameObjectQuestItemMap::const_iterator itr = _gameObjectQuestItemStore.find(id);
776  if (itr != _gameObjectQuestItemStore.end())
777  return &itr->second;
778  return NULL;
779  }
780  GameObjectQuestItemMap const* GetGameObjectQuestItemMap() const { return &_gameObjectQuestItemStore; }
781 
783  {
784  CreatureQuestItemMap::const_iterator itr = _creatureQuestItemStore.find(id);
785  if (itr != _creatureQuestItemStore.end())
786  return &itr->second;
787  return NULL;
788  }
789  CreatureQuestItemMap const* GetCreatureQuestItemMap() const { return &_creatureQuestItemStore; }
790 
804  static bool GetPlayerNameByGUID(ObjectGuid const& guid, std::string& name);
805  static bool GetPlayerNameAndClassByGUID(ObjectGuid const& guid, std::string& name, uint8& _class);
806  static uint32 GetPlayerTeamByGUID(ObjectGuid const& guid);
807  static uint32 GetPlayerAccountIdByGUID(ObjectGuid const& guid);
808  static uint32 GetPlayerAccountIdByPlayerName(std::string const& name);
809 
810  uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
811  void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
812  void GetTaxiPath(uint32 source, uint32 destination, std::vector<uint32>& path, uint32& cost);
813  uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false);
814 
815  Quest const* GetQuestTemplate(uint32 quest_id) const
816  {
817  QuestMap::const_iterator itr = _questTemplates.find(quest_id);
818  return itr != _questTemplates.end() ? itr->second : NULL;
819  }
820 
821  QuestMap const& GetQuestTemplates() const { return _questTemplates; }
822 
823  std::unordered_set<uint32> const* GetQuestsForAreaTrigger(uint32 Trigger_ID) const
824  {
825  auto itr = _questAreaTriggerStore.find(Trigger_ID);
826  if (itr != _questAreaTriggerStore.end())
827  return &itr->second;
828  return nullptr;
829  }
830 
831  bool IsTavernAreaTrigger(uint32 Trigger_ID) const
832  {
833  return _tavernAreaTriggerStore.find(Trigger_ID) != _tavernAreaTriggerStore.end();
834  }
835 
836  bool IsGameObjectForQuests(uint32 entry) const
837  {
838  return _gameObjectForQuestStore.find(entry) != _gameObjectForQuestStore.end();
839  }
840 
841  NpcText const* GetNpcText(uint32 textID) const;
842  QuestGreeting const* GetQuestGreeting(ObjectGuid guid) const;
843 
844  WorldSafeLocsEntry const* GetDefaultGraveYard(uint32 team);
845  WorldSafeLocsEntry const* GetClosestGraveYard(float x, float y, float z, uint32 MapId, uint32 team);
846  bool AddGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = true);
847  void RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool persist = false);
848  void LoadGraveyardZones();
849  GraveYardData const* FindGraveYardData(uint32 id, uint32 zone);
850 
852  {
853  AreaTriggerContainer::const_iterator itr = _areaTriggerStore.find(trigger);
854  if (itr != _areaTriggerStore.end())
855  return &itr->second;
856  return NULL;
857  }
858 
859  AccessRequirement const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const
860  {
861  AccessRequirementContainer::const_iterator itr = _accessRequirementStore.find(MAKE_PAIR64(mapid, difficulty));
862  if (itr != _accessRequirementStore.end())
863  return itr->second;
864  return NULL;
865  }
866 
867  AreaTriggerStruct const* GetGoBackTrigger(uint32 Map) const;
868  AreaTriggerStruct const* GetMapEntranceTrigger(uint32 Map) const;
869 
870  uint32 GetAreaTriggerScriptId(uint32 trigger_id);
871  SpellScriptsBounds GetSpellScriptsBounds(uint32 spellId);
872 
873  RepRewardRate const* GetRepRewardRate(uint32 factionId) const
874  {
875  RepRewardRateContainer::const_iterator itr = _repRewardRateStore.find(factionId);
876  if (itr != _repRewardRateStore.end())
877  return &itr->second;
878 
879  return NULL;
880  }
881 
883  {
884  RepOnKillContainer::const_iterator itr = _repOnKillStore.find(id);
885  if (itr != _repOnKillStore.end())
886  return &itr->second;
887  return NULL;
888  }
889 
890  int32 GetBaseReputationOf(FactionEntry const* factionEntry, uint8 race, uint8 playerClass);
891 
893  {
894  RepSpilloverTemplateContainer::const_iterator itr = _repSpilloverTemplateStore.find(factionId);
895  if (itr != _repSpilloverTemplateStore.end())
896  return &itr->second;
897 
898  return NULL;
899  }
900 
902  {
903  PointOfInterestContainer::const_iterator itr = _pointsOfInterestStore.find(id);
904  if (itr != _pointsOfInterestStore.end())
905  return &itr->second;
906  return NULL;
907  }
908 
910  {
911  QuestPOIContainer::const_iterator itr = _questPOIStore.find(QuestID);
912  if (itr != _questPOIStore.end())
913  return &itr->second;
914  return NULL;
915  }
916 
917  VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
918 
920  {
921  DungeonEncounterContainer::const_iterator itr = _dungeonEncounterStore.find(MAKE_PAIR64(mapId, difficulty));
922  if (itr != _dungeonEncounterStore.end())
923  return &itr->second;
924  return NULL;
925  }
926 
927  void LoadQuests();
929  {
930  TC_LOG_INFO("server.loading", "Loading GO Start Quest Data...");
931  LoadGameobjectQuestStarters();
932  TC_LOG_INFO("server.loading", "Loading GO End Quest Data...");
933  LoadGameobjectQuestEnders();
934  TC_LOG_INFO("server.loading", "Loading Creature Start Quest Data...");
935  LoadCreatureQuestStarters();
936  TC_LOG_INFO("server.loading", "Loading Creature End Quest Data...");
937  LoadCreatureQuestEnders();
938  }
939  void LoadGameobjectQuestStarters();
940  void LoadGameobjectQuestEnders();
941  void LoadCreatureQuestStarters();
942  void LoadCreatureQuestEnders();
943 
945  {
946  return &_goQuestRelations;
947  }
948 
950  {
951  return _goQuestRelations.equal_range(go_entry);
952  }
953 
955  {
956  return _goQuestInvolvedRelations.equal_range(go_entry);
957  }
958 
960  {
961  return _goQuestInvolvedRelationsReverse.equal_range(questId);
962  }
963 
965  {
966  return &_creatureQuestRelations;
967  }
968 
970  {
971  return _creatureQuestRelations.equal_range(creature_entry);
972  }
973 
975  {
976  return _creatureQuestInvolvedRelations.equal_range(creature_entry);
977  }
978 
980  {
981  return _creatureQuestInvolvedRelationsReverse.equal_range(questId);
982  }
983 
984  bool LoadTrinityStrings();
985 
986  void LoadEventScripts();
987  void LoadSpellScripts();
988  void LoadWaypointScripts();
989 
990  void LoadSpellScriptNames();
991  void ValidateSpellScripts();
992 
993  void LoadCreatureClassLevelStats();
994  void LoadCreatureLocales();
995  void LoadCreatureTemplates();
996  void LoadCreatureTemplateAddons();
997  void LoadCreatureTemplate(Field* fields);
998  void CheckCreatureTemplate(CreatureTemplate const* cInfo);
999  void LoadGameObjectQuestItems();
1000  void LoadCreatureQuestItems();
1001  void LoadTempSummons();
1002  void LoadCreatures();
1003  void LoadLinkedRespawn();
1004  bool SetCreatureLinkedRespawn(ObjectGuid::LowType guid, ObjectGuid::LowType linkedGuid);
1005  void LoadCreatureAddons();
1006  void LoadGameObjectAddons();
1007  void LoadCreatureModelInfo();
1008  void LoadEquipmentTemplates();
1009  void LoadGameObjectLocales();
1010  void LoadGameobjects();
1011  void LoadItemTemplates();
1012  void LoadItemTemplateAddon();
1013  void LoadItemScriptNames();
1014  void LoadQuestTemplateLocale();
1015  void LoadQuestObjectivesLocale();
1016  void LoadPageTextLocales();
1017  void LoadGossipMenuItemsLocales();
1018  void LoadPointOfInterestLocales();
1019  void LoadInstanceTemplate();
1020  void LoadInstanceEncounters();
1021  void LoadMailLevelRewards();
1022  void LoadVehicleTemplateAccessories();
1023  void LoadVehicleAccessories();
1024 
1025  void LoadNPCText();
1026 
1027  void LoadAreaTriggerTeleports();
1028  void LoadAccessRequirements();
1029  void LoadQuestAreaTriggers();
1030  void LoadQuestGreetings();
1031  void LoadAreaTriggerScripts();
1032  void LoadTavernAreaTriggers();
1033  void LoadGameObjectForQuests();
1034 
1035  void LoadPageTexts();
1036  PageText const* GetPageText(uint32 pageEntry);
1037 
1038  void LoadPlayerInfo();
1039  void LoadPetLevelInfo();
1040  void LoadExplorationBaseXP();
1041  void LoadPetNames();
1042  void LoadPetNumber();
1043  void LoadFishingBaseSkillLevel();
1044  void LoadSkillTiers();
1045 
1046  void LoadReputationRewardRate();
1047  void LoadReputationOnKill();
1048  void LoadReputationSpilloverTemplate();
1049 
1050  void LoadPointsOfInterest();
1051  void LoadQuestPOI();
1052 
1053  void LoadNPCSpellClickSpells();
1054 
1055  void LoadGameTele();
1056 
1057  void LoadGossipMenu();
1058  void LoadGossipMenuItems();
1059 
1060  void LoadVendors();
1061  void LoadTrainerSpell();
1062  void AddSpellToTrainer(uint32 entry, uint32 spell, uint32 spellCost, uint32 reqSkill, uint32 reqSkillValue, uint32 reqLevel);
1063 
1064  void LoadTerrainPhaseInfo();
1065  void LoadTerrainSwapDefaults();
1066  void LoadTerrainWorldMaps();
1067  void LoadAreaPhases();
1068 
1069  std::string GeneratePetName(uint32 entry);
1070  uint32 GetBaseXP(uint8 level);
1071  uint32 GetXPForLevel(uint8 level) const;
1072 
1074  {
1075  FishingBaseSkillContainer::const_iterator itr = _fishingBaseForAreaStore.find(entry);
1076  return itr != _fishingBaseForAreaStore.end() ? itr->second : 0;
1077  }
1078 
1079  SkillTiersEntry const* GetSkillTier(uint32 skillTierId) const
1080  {
1081  auto itr = _skillTiers.find(skillTierId);
1082  return itr != _skillTiers.end() ? &itr->second : nullptr;
1083  }
1084 
1085  void ReturnOrDeleteOldMails(bool serverUp);
1086 
1087  CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
1088 
1089  void SetHighestGuids();
1090 
1091  template<HighGuid type>
1093  {
1094  static_assert(ObjectGuidTraits<type>::Global || ObjectGuidTraits<type>::RealmSpecific, "Only global guid can be generated in ObjectMgr context");
1095  return GetGuidSequenceGenerator<type>();
1096  }
1097 
1098  uint32 GenerateAuctionID();
1099  uint64 GenerateEquipmentSetGuid();
1100  uint32 GenerateMailID();
1101  uint32 GeneratePetNumber();
1102  uint64 GenerateVoidStorageItemId();
1103  uint64 GenerateCreatureSpawnId();
1104  uint64 GenerateGameObjectSpawnId();
1105 
1106  typedef std::multimap<int32, uint32> ExclusiveQuestGroups;
1107  typedef std::pair<ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator> ExclusiveQuestGroupsBounds;
1108 
1109  ExclusiveQuestGroups mExclusiveQuestGroups;
1110 
1112  {
1113  MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
1114  if (map_itr == _mailLevelRewardStore.end())
1115  return NULL;
1116 
1117  for (MailLevelRewardList::const_iterator set_itr = map_itr->second.begin(); set_itr != map_itr->second.end(); ++set_itr)
1118  if (set_itr->raceMask & raceMask)
1119  return &*set_itr;
1120 
1121  return NULL;
1122  }
1123 
1124  CellObjectGuids const& GetCellObjectGuids(uint16 mapid, uint8 spawnMode, uint32 cell_id)
1125  {
1126  return _mapObjectGuidsStore[MAKE_PAIR32(mapid, spawnMode)][cell_id];
1127  }
1128 
1130  {
1131  return _mapObjectGuidsStore[MAKE_PAIR32(mapid, spawnMode)];
1132  }
1133 
1143  std::vector<TempSummonData> const* GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
1144  {
1145  TempSummonDataContainer::const_iterator itr = _tempSummonDataStore.find(TempSummonGroupKey(summonerId, summonerType, group));
1146  if (itr != _tempSummonDataStore.end())
1147  return &itr->second;
1148 
1149  return NULL;
1150  }
1151 
1153  {
1154  CreatureDataContainer::const_iterator itr = _creatureDataStore.find(guid);
1155  if (itr == _creatureDataStore.end()) return NULL;
1156  return &itr->second;
1157  }
1158  CreatureData& NewOrExistCreatureData(ObjectGuid::LowType guid) { return _creatureDataStore[guid]; }
1159  void DeleteCreatureData(ObjectGuid::LowType guid);
1161  {
1162  LinkedRespawnContainer::const_iterator itr = _linkedRespawnStore.find(guid);
1163  if (itr == _linkedRespawnStore.end()) return ObjectGuid::Empty;
1164  return itr->second;
1165  }
1167  {
1168  CreatureLocaleContainer::const_iterator itr = _creatureLocaleStore.find(entry);
1169  if (itr == _creatureLocaleStore.end()) return NULL;
1170  return &itr->second;
1171  }
1173  {
1174  GameObjectLocaleContainer::const_iterator itr = _gameObjectLocaleStore.find(entry);
1175  if (itr == _gameObjectLocaleStore.end()) return NULL;
1176  return &itr->second;
1177  }
1179  {
1180  QuestTemplateLocaleContainer::const_iterator itr = _questTemplateLocaleStore.find(entry);
1181  if (itr == _questTemplateLocaleStore.end()) return NULL;
1182  return &itr->second;
1183  }
1185  {
1186  QuestObjectivesLocaleContainer::const_iterator itr = _questObjectivesLocaleStore.find(entry);
1187  if (itr == _questObjectivesLocaleStore.end()) return NULL;
1188  return &itr->second;
1189  }
1191  {
1192  PageTextLocaleContainer::const_iterator itr = _pageTextLocaleStore.find(entry);
1193  if (itr == _pageTextLocaleStore.end()) return NULL;
1194  return &itr->second;
1195  }
1197  {
1198  GossipMenuItemsLocaleContainer::const_iterator itr = _gossipMenuItemsLocaleStore.find(entry);
1199  if (itr == _gossipMenuItemsLocaleStore.end()) return NULL;
1200  return &itr->second;
1201  }
1203  {
1204  PointOfInterestLocaleContainer::const_iterator itr = _pointOfInterestLocaleStore.find(id);
1205  if (itr == _pointOfInterestLocaleStore.end()) return NULL;
1206  return &itr->second;
1207  }
1208 
1210  {
1211  GameObjectDataContainer::const_iterator itr = _gameObjectDataStore.find(guid);
1212  if (itr == _gameObjectDataStore.end()) return NULL;
1213  return &itr->second;
1214  }
1215  GameObjectData& NewGOData(ObjectGuid::LowType guid) { return _gameObjectDataStore[guid]; }
1216  void DeleteGOData(ObjectGuid::LowType guid);
1217 
1219  {
1220  TrinityStringContainer::const_iterator itr = _trinityStringStore.find(entry);
1221  if (itr == _trinityStringStore.end())
1222  return nullptr;
1223  return &itr->second;
1224  }
1225  char const* GetTrinityString(uint32 entry, LocaleConstant locale) const;
1226  char const* GetTrinityStringForDBCLocale(uint32 entry) const { return GetTrinityString(entry, DBCLocaleIndex); }
1227  LocaleConstant GetDBCLocaleIndex() const { return DBCLocaleIndex; }
1228  void SetDBCLocaleIndex(LocaleConstant locale) { DBCLocaleIndex = locale; }
1229 
1230  // grid objects
1231  void AddCreatureToGrid(ObjectGuid::LowType guid, CreatureData const* data);
1232  void RemoveCreatureFromGrid(ObjectGuid::LowType guid, CreatureData const* data);
1233  void AddGameobjectToGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1234  void RemoveGameobjectFromGrid(ObjectGuid::LowType guid, GameObjectData const* data);
1235  ObjectGuid::LowType AddGOData(uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay = 0, float rotation0 = 0, float rotation1 = 0, float rotation2 = 0, float rotation3 = 0);
1236  ObjectGuid::LowType AddCreatureData(uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay = 0);
1237 
1238  // reserved names
1239  void LoadReservedPlayersNames();
1240  bool IsReservedName(std::string const& name) const;
1241 
1242  // name with valid structure and symbols
1243  static ResponseCodes CheckPlayerName(std::string const& name, LocaleConstant locale, bool create = false);
1244  static PetNameInvalidReason CheckPetName(std::string const& name);
1245  static bool IsValidCharterName(std::string const& name);
1246 
1247  static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names);
1248 
1249  GameTele const* GetGameTele(uint32 id) const
1250  {
1251  GameTeleContainer::const_iterator itr = _gameTeleStore.find(id);
1252  if (itr == _gameTeleStore.end()) return NULL;
1253  return &itr->second;
1254  }
1255  GameTele const* GetGameTele(std::string const& name) const;
1256  GameTele const* GetGameTeleExactName(std::string const& name) const;
1257  GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; }
1258  bool AddGameTele(GameTele& data);
1259  bool DeleteGameTele(std::string const& name);
1260 
1262  {
1263  CacheTrainerSpellContainer::const_iterator iter = _cacheTrainerSpellStore.find(entry);
1264  if (iter == _cacheTrainerSpellStore.end())
1265  return NULL;
1266 
1267  return &iter->second;
1268  }
1269 
1271  {
1272  CacheVendorItemContainer::const_iterator iter = _cacheVendorItemStore.find(entry);
1273  if (iter == _cacheVendorItemStore.end())
1274  return NULL;
1275 
1276  return &iter->second;
1277  }
1278 
1279  void AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, uint8 type, bool persist = true); // for event
1280  bool RemoveVendorItem(uint32 entry, uint32 item, uint8 type, bool persist = true); // for event
1281  bool IsVendorItemValid(uint32 vendor_entry, uint32 id, int32 maxcount, uint32 ptime, uint32 ExtendedCost, uint8 type, Player* player = NULL, std::set<uint32>* skip_vendors = NULL, uint32 ORnpcflag = 0) const;
1282 
1283  void LoadScriptNames();
1284  std::string const& GetScriptName(uint32 id) const;
1285  uint32 GetScriptId(std::string const& name);
1286 
1288  {
1289  return _spellClickInfoStore.equal_range(creature_id);
1290  }
1291 
1293  {
1294  return _gossipMenusStore.equal_range(uiMenuId);
1295  }
1296 
1298  {
1299  return _gossipMenusStore.equal_range(uiMenuId);
1300  }
1301 
1303  {
1304  return _gossipMenuItemsStore.equal_range(uiMenuId);
1305  }
1307  {
1308  return _gossipMenuItemsStore.equal_range(uiMenuId);
1309  }
1310 
1311  std::vector<uint32> const* GetPhaseTerrainSwaps(uint32 phaseid) const
1312  {
1313  auto itr = _terrainPhaseInfoStore.find(phaseid);
1314  return itr != _terrainPhaseInfoStore.end() ? &itr->second : nullptr;
1315  }
1316  std::vector<uint32> const* GetDefaultTerrainSwaps(uint32 mapid) const
1317  {
1318  auto itr = _terrainMapDefaultStore.find(mapid);
1319  return itr != _terrainMapDefaultStore.end() ? &itr->second : nullptr;
1320  }
1321  std::vector<uint32> const* GetTerrainWorldMaps(uint32 terrainId) const
1322  {
1323  auto itr = _terrainWorldMapStore.find(terrainId);
1324  return itr != _terrainWorldMapStore.end() ? &itr->second : nullptr;
1325  }
1326  std::vector<PhaseInfoStruct> const* GetPhasesForArea(uint32 area) const
1327  {
1328  auto itr = _phases.find(area);
1329  return itr != _phases.end() ? &itr->second : nullptr;
1330  }
1331  TerrainPhaseInfo const& GetDefaultTerrainSwapStore() const { return _terrainMapDefaultStore; }
1332  PhaseInfo const& GetAreaPhases() const { return _phases; }
1333  // condition loading helpers
1334  std::vector<PhaseInfoStruct>* GetPhasesForAreaForLoading(uint32 area)
1335  {
1336  auto itr = _phases.find(area);
1337  return itr != _phases.end() ? &itr->second : nullptr;
1338  }
1339  PhaseInfo& GetAreaPhasesForLoading() { return _phases; }
1340 
1341  // for wintergrasp only
1343 
1344  static void AddLocaleString(std::string const& value, LocaleConstant localeConstant, StringVector& data);
1345  static inline void GetLocaleString(StringVector const& data, LocaleConstant localeConstant, std::string& value)
1346  {
1347  if (data.size() > size_t(localeConstant) && !data[localeConstant].empty())
1348  value = data[localeConstant];
1349  }
1350 
1351  CharacterConversionMap FactionChangeAchievements;
1352  CharacterConversionMap FactionChangeItems;
1353  CharacterConversionMap FactionChangeQuests;
1354  CharacterConversionMap FactionChangeReputation;
1355  CharacterConversionMap FactionChangeSpells;
1356  CharacterConversionMap FactionChangeTitles;
1357 
1358  void LoadFactionChangeAchievements();
1359  void LoadFactionChangeItems();
1360  void LoadFactionChangeQuests();
1361  void LoadFactionChangeReputations();
1362  void LoadFactionChangeSpells();
1363  void LoadFactionChangeTitles();
1364 
1365  bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; }
1366 
1367  void LoadRaceAndClassExpansionRequirements();
1368  void LoadCharacterTemplates();
1369  void LoadRealmNames();
1370 
1371  std::string GetRealmName(uint32 realm) const;
1372  std::string GetNormalizedRealmName(uint32 realm) const;
1373 
1374  ExpansionRequirementContainer const& GetRaceExpansionRequirements() const { return _raceExpansionRequirementStore; }
1376  {
1377  auto itr = _raceExpansionRequirementStore.find(race);
1378  if (itr != _raceExpansionRequirementStore.end())
1379  return itr->second;
1380  return EXPANSION_CLASSIC;
1381  }
1382 
1383  ExpansionRequirementContainer const& GetClassExpansionRequirements() const { return _classExpansionRequirementStore; }
1385  {
1386  auto itr = _classExpansionRequirementStore.find(class_);
1387  if (itr != _classExpansionRequirementStore.end())
1388  return itr->second;
1389  return EXPANSION_CLASSIC;
1390  }
1391 
1392  CharacterTemplateContainer const& GetCharacterTemplates() const { return _characterTemplateStore; }
1394  {
1395  auto itr = _characterTemplateStore.find(id);
1396  if (itr != _characterTemplateStore.end())
1397  return &itr->second;
1398 
1399  return nullptr;
1400  }
1401 
1402  private:
1403  // first free id for selected id type
1412 
1413  // first free low guid for selected guid type
1414  template<HighGuid high>
1416  {
1417  auto itr = _guidGenerators.find(high);
1418  if (itr == _guidGenerators.end())
1419  itr = _guidGenerators.insert(std::make_pair(high, Trinity::make_unique<ObjectGuidGenerator<high>>())).first;
1420 
1421  return *itr->second;
1422  }
1423 
1424  std::map<HighGuid, std::unique_ptr<ObjectGuidGeneratorBase>> _guidGenerators;
1425 
1427 
1428  typedef std::unordered_map<uint32, NpcText> NpcTextContainer;
1429  typedef std::unordered_map<uint32, std::unordered_set<uint32>> QuestAreaTriggerContainer;
1430  typedef std::set<uint32> TavernAreaTriggerContainer;
1431  typedef std::set<uint32> GameObjectForQuestContainer;
1432 
1433  QuestAreaTriggerContainer _questAreaTriggerStore;
1434  TavernAreaTriggerContainer _tavernAreaTriggerStore;
1435  GameObjectForQuestContainer _gameObjectForQuestStore;
1436  NpcTextContainer _npcTextStore;
1438  AreaTriggerContainer _areaTriggerStore;
1439  AreaTriggerScriptContainer _areaTriggerScriptStore;
1440  AccessRequirementContainer _accessRequirementStore;
1442 
1443  RepRewardRateContainer _repRewardRateStore;
1444  RepOnKillContainer _repOnKillStore;
1445  RepSpilloverTemplateContainer _repSpilloverTemplateStore;
1446 
1449  PointOfInterestContainer _pointsOfInterestStore;
1450 
1452 
1459 
1460  //character reserved names
1461  typedef std::set<std::wstring> ReservedNamesContainer;
1462  ReservedNamesContainer _reservedNamesStore;
1463 
1465 
1466  ScriptNameContainer _scriptNamesStore;
1467 
1469 
1471 
1474 
1476 
1479 
1484 
1485  private:
1486  void LoadScripts(ScriptsType type);
1487  void LoadQuestRelationsHelper(QuestRelations& map, QuestRelationsReverse* reverseMap, std::string const& table, bool starter, bool go);
1488  void PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count);
1489 
1491 
1493 
1494  typedef std::map<uint32, PetLevelInfo*> PetLevelInfoContainer;
1495  // PetLevelInfoContainer[creature_id][level]
1496  PetLevelInfoContainer _petInfoStore; // [creature_id][level]
1497 
1498  void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const;
1499 
1501 
1502  typedef std::vector<uint32> PlayerXPperLevel; // [level]
1503  PlayerXPperLevel _playerXPperLevel;
1504 
1505  typedef std::map<uint32, uint32> BaseXPContainer; // [area level][base xp]
1506  BaseXPContainer _baseXPTable;
1507 
1508  typedef std::map<uint32, int32> FishingBaseSkillContainer; // [areaId][base skill level]
1509  FishingBaseSkillContainer _fishingBaseForAreaStore;
1510  std::unordered_map<uint32, SkillTiersEntry> _skillTiers;
1511 
1512  typedef std::map<uint32, StringVector> HalfNameContainer;
1513  HalfNameContainer _petHalfName0;
1514  HalfNameContainer _petHalfName1;
1515 
1533 
1540 
1542 
1545 
1546  std::set<uint32> _difficultyEntries[MAX_CREATURE_DIFFICULTIES]; // already loaded difficulty 1 value in creatures, used in CheckCreatureTemplate
1547  std::set<uint32> _hasDifficultyEntries[MAX_CREATURE_DIFFICULTIES]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate
1548 
1552 
1554 
1556  {
1558  CREATURE_TO_GO, // Creature is dependant on GO
1560  GO_TO_CREATURE // GO is dependant on creature
1561  };
1562 
1564  std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
1565 };
1566 
1567 #define sObjectMgr ObjectMgr::instance()
1568 
1569 #endif
PointOfInterestContainer _pointsOfInterestStore
Definition: ObjectMgr.h:1449
GameObjectTemplateContainer _gameObjectTemplateStore
Definition: ObjectMgr.h:1530
Definition: Creature.h:266
SpellClickUserTypes userType
Definition: ObjectMgr.h:391
std::string OptionText
Definition: ObjectMgr.h:515
std::unordered_map< uint32, NpcText > NpcTextContainer
Definition: ObjectMgr.h:1428
GameObjectAddonContainer _gameObjectAddonStore
Definition: ObjectMgr.h:1521
Definition: Creature.h:287
GameObjectTemplateContainer const * GetGameObjectTemplates() const
Definition: ObjectMgr.h:742
uint32 GOGuid
Definition: ObjectMgr.h:260
uint16 mana
Definition: ObjectMgr.h:451
std::unordered_map< uint16, InstanceTemplate > InstanceTemplateContainer
Definition: ObjectMgr.h:123
CreatureDataContainer _creatureDataStore
Definition: ObjectMgr.h:1517
QuestGreetingContainer _questGreetingStore
Definition: ObjectMgr.h:1437
ExtendedPlayerName(std::string const &name, std::string const &realmName)
Definition: ObjectMgr.h:653
Definition: Creature.h:258
std::map< HighGuid, std::unique_ptr< ObjectGuidGeneratorBase > > _guidGenerators
Definition: ObjectMgr.h:1424
std::map< ObjectGuid, ObjectGuid > LinkedRespawnContainer
Definition: ObjectMgr.h:426
Definition: ObjectMgr.h:115
std::unordered_map< ObjectGuid::LowType, GameObjectData > GameObjectDataContainer
Definition: ObjectMgr.h:428
Definition: ObjectMgr.h:400
std::set< uint32 > GameObjectForQuestContainer
Definition: ObjectMgr.h:1431
Definition: Vector2.h:40
std::wstring wnameLow
Definition: ObjectMgr.h:133
std::pair< GraveYardContainer::iterator, GraveYardContainer::iterator > GraveYardMapBoundsNonConst
Definition: ObjectMgr.h:597
DungeonEncounterContainer _dungeonEncounterStore
Definition: ObjectMgr.h:1441
float Unused4
Definition: ObjectMgr.h:344
MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry)
Definition: ObjectMgr.h:458
Definition: ObjectMgr.h:97
Difficulty
Definition: DBCEnums.h:402
std::vector< VehicleAccessory > VehicleAccessoryList
Definition: VehicleDefines.h:114
uint32 SoundID
Definition: ObjectMgr.h:302
#define MAX_CREATURE_DIFFICULTIES
Definition: Creature.h:76
ObjectGuidGeneratorBase & GetGuidSequenceGenerator()
Definition: ObjectMgr.h:1415
Definition: ObjectMgr.h:161
SpellClickInfoContainer _spellClickInfoStore
Definition: ObjectMgr.h:1468
TC_GAME_API LanguageDesc lang_description[LANGUAGES_COUNT]
Definition: ObjectMgr.cpp:164
CharacterTemplateContainer _characterTemplateStore
Definition: ObjectMgr.h:1553
Definition: ObjectMgr.h:627
float DestX
Definition: ObjectMgr.h:222
Definition: ObjectMgr.h:108
LocaleConstant DBCLocaleIndex
Definition: ObjectMgr.h:1475
GossipMenuItemsMapBoundsNonConst GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
Definition: ObjectMgr.h:1306
QuestGreeting(uint16 _greetEmoteType, uint32 _greetEmoteDelay, std::string _greeting)
Definition: ObjectMgr.h:583
Definition: ObjectMgr.h:96
std::pair< GraveYardContainer::const_iterator, GraveYardContainer::const_iterator > GraveYardMapBounds
Definition: ObjectMgr.h:596
QuestRelationBounds GetCreatureQuestInvolvedRelationBounds(uint32 creature_entry)
Definition: ObjectMgr.h:974
std::vector< uint32 > GameObjectQuestItemList
Definition: GameObject.h:859
TC_GAME_API ScriptMapMap sEventScripts
Definition: ObjectMgr.cpp:52
TC_GAME_API ScriptMapMap sSpellScripts
Definition: ObjectMgr.cpp:51
Definition: Vehicle.h:32
std::pair< SpellScriptsContainer::iterator, SpellScriptsContainer::iterator > SpellScriptsBounds
Definition: ObjectMgr.h:378
std::multimap< uint32, ScriptInfo > ScriptMap
Definition: ObjectMgr.h:375
NpcTextContainer _npcTextStore
Definition: ObjectMgr.h:1436
Definition: ObjectMgr.h:631
uint32 TravelTime
Definition: ObjectMgr.h:219
QuestObjectivesLocaleContainer _questObjectivesLocaleStore
Definition: ObjectMgr.h:1536
uint32 nData[3]
Definition: ObjectMgr.h:193
std::string name
Definition: ObjectMgr.h:132
EncounterCreditType
Definition: ObjectMgr.h:670
eScriptFlags
Definition: ObjectMgr.h:149
static ObjectGuid const Empty
Definition: ObjectGuid.h:196
QuestRelations * GetCreatureQuestRelationMap()
Definition: ObjectMgr.h:964
int8_t int8
Definition: Define.h:148
std::unordered_map< uint32, std::vector< PhaseInfoStruct > > PhaseInfo
Definition: ObjectMgr.h:698
ItemTemplateContainer const * GetItemTemplateStore() const
Definition: ObjectMgr.h:759
std::unordered_map< ObjectGuid::LowType, CreatureAddon > CreatureAddonContainer
Definition: Creature.h:363
Definition: ObjectMgr.h:445
Definition: ObjectMgr.h:95
GossipMenuItemsLocale const * GetGossipMenuItemsLocale(uint32 entry) const
Definition: ObjectMgr.h:1196
Definition: Map.h:222
Definition: DBCStructure.h:356
SpellClickUserTypes
Definition: SharedDefines.h:859
struct ScriptInfo::@280::@297 CreateItem
CacheTrainerSpellContainer _cacheTrainerSpellStore
Definition: ObjectMgr.h:1544
std::unordered_map< uint32, GameTele > GameTeleContainer
Definition: ObjectMgr.h:136
std::unordered_map< uint32, CreatureAddon > CreatureTemplateAddonContainer
Definition: Creature.h:364
GossipMenusMapBounds GetGossipMenusMapBounds(uint32 uiMenuId) const
Definition: ObjectMgr.h:1292
QuestRelations _goQuestInvolvedRelations
Definition: ObjectMgr.h:1454
CreatureBaseStatsContainer _creatureBaseStatsStore
Definition: ObjectMgr.h:1492
std::unordered_map< uint64, AccessRequirement * > AccessRequirementContainer
Definition: ObjectMgr.h:727
uint32 team
Definition: ObjectMgr.h:592
Definition: ObjectMgr.h:94
Definition: ObjectMgr.h:89
Definition: QuestDef.h:279
uint32 Flags
Definition: ObjectMgr.h:505
std::vector< HotfixNotify > HotfixData
Definition: DB2Stores.h:125
Definition: ObjectMgr.h:170
std::unordered_map< uint32, std::string > RealmNameContainer
Definition: ObjectMgr.h:603
int32 X
Definition: ObjectMgr.h:544
SkillTiersEntry const * GetSkillTier(uint32 skillTierId) const
Definition: ObjectMgr.h:1079
float DestY
Definition: ObjectMgr.h:223
int32 CreatureEntry
Definition: ObjectMgr.h:295
CreatureData & NewOrExistCreatureData(ObjectGuid::LowType guid)
Definition: ObjectMgr.h:1158
void GetPlayerInfo(ChatHandler *handler, Player *player)
Definition: cs_lfg.cpp:27
Quest const * GetQuestTemplate(uint32 quest_id) const
Definition: ObjectMgr.h:815
Definition: GameObject.h:811
float Orientation
Definition: ObjectMgr.h:243
PageTextLocaleContainer _pageTextLocaleStore
Definition: ObjectMgr.h:1537
SkillRangeType
Definition: ObjectMgr.h:625
uint8 castFlags
Definition: ObjectMgr.h:390
std::pair< GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator > GossipMenuItemsMapBoundsNonConst
Definition: ObjectMgr.h:540
RepOnKillContainer _repOnKillStore
Definition: ObjectMgr.h:1444
CreatureLinkedRespawnType
Definition: ObjectMgr.h:1555
struct ScriptInfo::@280::@286 MoveTo
Definition: NPCHandler.h:30
float Unused3
Definition: ObjectMgr.h:343
ScriptNameContainer _scriptNamesStore
Definition: ObjectMgr.h:1466
GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore
Definition: ObjectMgr.h:1538
CharacterConversionMap FactionChangeAchievements
Definition: ObjectMgr.h:1351
ExpansionRequirementContainer const & GetRaceExpansionRequirements() const
Definition: ObjectMgr.h:1374
uint16 stats[MAX_STATS]
Definition: ObjectMgr.h:449
std::unordered_map< uint32, Item * > ItemMap
Definition: ObjectMgr.h:719
uint32 FieldID
Definition: ObjectMgr.h:212
uint32 BoxBroadcastTextId
Definition: ObjectMgr.h:524
Definition: PlayerDump.h:97
Definition: ObjectGuid.h:372
uint32 OptionType
Definition: ObjectMgr.h:517
Realm realm
Definition: World.cpp:3485
ScriptCommands command
Definition: ObjectMgr.h:187
std::unique_ptr< T > make_unique(Args &&...args)
std::make_unique implementation (TODO: remove this once C++14 is supported)
Definition: Common.h:176
ExtendedPlayerName ExtractExtendedPlayerName(std::string const &name)
Definition: ObjectMgr.cpp:155
std::vector< uint32 > CreatureQuestItemList
Definition: Creature.h:209
PageTextLocale const * GetPageTextLocale(uint32 entry) const
Definition: ObjectMgr.h:1190
uint32 FieldValue
Definition: ObjectMgr.h:213
Definition: ObjectMgr.h:676
ScriptsType
Definition: ObjectMgr.h:138
QuestMap _questTemplates
Definition: ObjectMgr.h:1426
std::unordered_map< uint32, RepRewardRate > RepRewardRateContainer
Definition: ObjectMgr.h:729
Class used to access individual fields of database query result.
Definition: Field.h:56
uint16 armor
Definition: ObjectMgr.h:452
uint32 ActionPoiId
Definition: ObjectMgr.h:520
PetNameInvalidReason
Definition: SharedDefines.h:4785
Definition: ObjectMgr.h:103
CreatureTemplateContainer _creatureTemplateStore
Definition: ObjectMgr.h:1518
Definition: ObjectMgr.h:651
std::pair< QuestRelations::const_iterator, QuestRelations::const_iterator > QuestRelationBounds
Definition: ObjectMgr.h:442
Definition: ObjectMgr.h:106
QuestObjectivesLocale const * GetQuestObjectivesLocale(uint32 entry) const
Definition: ObjectMgr.h:1184
ConditionContainer Conditions
Definition: ObjectMgr.h:525
TerrainPhaseInfo const & GetDefaultTerrainSwapStore() const
Definition: ObjectMgr.h:1331
QuestPOIPoint()
Definition: ObjectMgr.h:547
QuestRelationBounds GetGOQuestRelationBounds(uint32 go_entry)
Definition: ObjectMgr.h:949
std::map< uint32, PageText > PageTextContainer
Definition: ObjectMgr.h:120
struct ScriptInfo::@280::@304 Model
Definition: Realm.h:84
std::map< ObjectGuid::LowType, VehicleAccessoryList > VehicleAccessoryContainer
Definition: VehicleDefines.h:115
GameObjectForQuestContainer _gameObjectForQuestStore
Definition: ObjectMgr.h:1435
SummonerType _summonerType
Summoner's type, see SummonerType for available types.
Definition: ObjectMgr.h:77
uint32 MenuId
Definition: ObjectMgr.h:512
Definition: ObjectMgr.h:142
TrinityStringContainer _trinityStringStore
Definition: ObjectMgr.h:1541
GameObjectDataContainer _gameObjectDataStore
Definition: ObjectMgr.h:1528
float PosX
Definition: ObjectMgr.h:270
Definition: ObjectMgr.h:167
struct ScriptInfo::@280::@285 FieldSet
AreaTriggerStruct const * GetAreaTrigger(uint32 trigger) const
Definition: ObjectMgr.h:851
Definition: QuestDef.h:239
std::map< uint32, ScriptMap > ScriptMapMap
Definition: ObjectMgr.h:376
#define MAX_SPILLOVER_FACTIONS
Definition: SharedDefines.h:226
float target_Orientation
Definition: ObjectMgr.h:406
uint8 _summonGroup
Summon's group id.
Definition: ObjectMgr.h:78
PhaseInfo const & GetAreaPhases() const
Definition: ObjectMgr.h:1332
GossipMenusMapBoundsNonConst GetGossipMenusMapBoundsNonConst(uint32 uiMenuId)
Definition: ObjectMgr.h:1297
ScriptCommands
Definition: ObjectMgr.h:84
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Definition: ObjectMgr.h:537
int32 PlayerConditionID
Definition: ObjectMgr.h:563
Definition: ObjectMgr.h:101
std::unordered_map< uint32, CreatureLocale > CreatureLocaleContainer
Definition: ObjectMgr.h:430
float orientation
Definition: ObjectMgr.h:130
uint32 id
Definition: ObjectMgr.h:185
Definition: GameObject.h:34
Definition: DBCStructure.h:1434
Definition: Creature.h:272
std::unordered_map< uint32, QuestPOIVector > QuestPOIContainer
Definition: ObjectMgr.h:574
Definition: Player.h:396
std::unordered_map< uint32, VendorItemData > CacheVendorItemContainer
Definition: ObjectMgr.h:599
float position_x
Definition: ObjectMgr.h:127
std::string GetDebugInfo() const
Definition: ObjectMgr.cpp:126
Definition: ObjectMgr.h:690
uint32 SpellID
Definition: ObjectMgr.h:287
DungeonEncounterList const * GetDungeonEncounterList(uint32 mapId, Difficulty difficulty)
Definition: ObjectMgr.h:919
CreatureData const * GetCreatureData(ObjectGuid::LowType guid) const
Definition: ObjectMgr.h:1152
uint32 ScriptType
Definition: ObjectMgr.h:327
ReputationOnKillEntry const * GetReputationOnKilEntry(uint32 id) const
Definition: ObjectMgr.h:882
Definition: ObjectMgr.h:90
GameTeleContainer _gameTeleStore
Definition: ObjectMgr.h:1464
arena_t NULL
Definition: jemalloc_internal.h:624
std::string Realm
Definition: ObjectMgr.h:655
MapObjectGuids _mapObjectGuidsStore
Definition: ObjectMgr.h:1516
uint32 faction_rank[MAX_SPILLOVER_FACTIONS]
Definition: ObjectMgr.h:497
struct ScriptInfo::@280::@284 Emote
std::string Name
Definition: ObjectMgr.h:654
std::string BoxText
Definition: ObjectMgr.h:523
int32 GetFishingBaseSkillLevel(uint32 entry) const
Definition: ObjectMgr.h:1073
std::unordered_map< uint32, CellObjectGuidsMap > MapObjectGuids
Definition: ObjectMgr.h:416
char const * GetTrinityStringForDBCLocale(uint32 entry) const
Definition: ObjectMgr.h:1226
Definition: ObjectGuid.h:357
Definition: ObjectMgr.h:421
Definition: ObjectMgr.h:125
uint32 greetEmoteDelay
Definition: ObjectMgr.h:579
std::string Description
Definition: ObjectMgr.h:619
uint8 ClassID
Definition: ObjectMgr.h:611
ItemTemplateContainer _itemTemplateStore
Definition: ObjectMgr.h:1534
TC_GAME_API bool normalizePlayerName(std::string &name)
Definition: ObjectMgr.cpp:133
int32 QuestObjectiveID
Definition: ObjectMgr.h:555
std::multimap< uint32, SpellClickInfo > SpellClickInfoContainer
Definition: ObjectMgr.h:397
uint32 EquipmentID
Definition: ObjectMgr.h:351
uint32 safeLocId
Definition: ObjectMgr.h:591
uint32 text_id
Definition: ObjectMgr.h:531
PageTextContainer _pageTextStore
Definition: ObjectMgr.h:1477
Definition: ObjectMgr.h:182
std::multimap< uint32, uint32 > SpellScriptsContainer
Definition: ObjectMgr.h:377
SkillRangeType GetSkillRangeType(SkillRaceClassInfoEntry const *rcEntry)
Definition: ObjectMgr.cpp:7872
bool IsTransportMap(uint32 mapId) const
Definition: ObjectMgr.h:1365
struct ScriptInfo::@280::@299 LoadPath
float PosZ
Definition: ObjectMgr.h:272
Definition: ObjectMgr.h:113
std::string Text
Definition: ObjectMgr.h:57
int32 WorldEffectID
Definition: ObjectMgr.h:562
TrinityString const * GetTrinityString(uint32 entry) const
Definition: ObjectMgr.h:1218
std::multimap< uint32, GossipMenus > GossipMenusContainer
Definition: ObjectMgr.h:535
uint32 DespawnDelay
Definition: ObjectMgr.h:261
uint32 Id
Definition: ObjectMgr.h:692
Definition: ObjectMgr.h:551
std::pair< GossipMenusContainer::const_iterator, GossipMenusContainer::const_iterator > GossipMenusMapBounds
Definition: ObjectMgr.h:536
uint32 ReputationMaxCap2
Definition: ObjectMgr.h:486
uint64 _voidItemId
Definition: ObjectMgr.h:1409
Definition: ObjectMgr.h:146
float faction_rate[MAX_SPILLOVER_FACTIONS]
Definition: ObjectMgr.h:496
struct ScriptInfo::@280::@300 CallScript
SummonerType
Definition: TemporarySummon.h:24
QuestPOIPoint(int32 _X, int32 _Y)
Definition: ObjectMgr.h:548
uint64 _gameObjectSpawnId
Definition: ObjectMgr.h:1411
CellObjectGuids const & GetCellObjectGuids(uint16 mapid, uint8 spawnMode, uint32 cell_id)
Definition: ObjectMgr.h:1124
Language lang_id
Definition: ObjectMgr.h:662
bool operator<(TempSummonGroupKey const &rhs) const
Definition: ObjectMgr.h:69
std::unordered_map< uint8, MailLevelRewardList > MailLevelRewardContainer
Definition: ObjectMgr.h:466
uint64 MAKE_PAIR64(uint32 l, uint32 h)
Definition: ObjectDefines.h:34
VehicleAccessoryTemplateContainer _vehicleTemplateAccessoryStore
Definition: ObjectMgr.h:1472
bool IsGameObjectForQuests(uint32 entry) const
Definition: ObjectMgr.h:836
uint64 LowType
Definition: ObjectGuid.h:199
std::string GetScriptsTableNameByType(ScriptsType type)
Definition: ObjectMgr.cpp:55
ScriptsType type
Definition: ObjectMgr.h:184
Definition: ObjectMgr.h:605
uint8 FactionGroup
Definition: ObjectMgr.h:610
std::unordered_map< uint32, CreatureQuestItemList > CreatureQuestItemMap
Definition: Creature.h:210
EncounterCreditType creditType
Definition: ObjectMgr.h:682
QuestPOIVector const * GetQuestPOIVector(int32 QuestID)
Definition: ObjectMgr.h:909
bool IsTavernAreaTrigger(uint32 Trigger_ID) const
Definition: ObjectMgr.h:831
QuestRelationReverseBounds GetCreatureQuestInvolvedRelationReverseBounds(uint32 questId)
Definition: ObjectMgr.h:979
uint32 _itemTextId
Definition: ObjectMgr.h:1406
Definition: ObjectMgr.h:660
QuestRelationBounds GetGOQuestInvolvedRelationBounds(uint32 go_entry)
Definition: ObjectMgr.h:954
std::unordered_map< uint32, ReputationOnKillEntry > RepOnKillContainer
Definition: ObjectMgr.h:730
PointOfInterestLocale const * GetPointOfInterestLocale(uint32 id) const
Definition: ObjectMgr.h:1202
std::unordered_map< uint32, QuestObjectivesLocale > QuestObjectivesLocaleContainer
Definition: ObjectMgr.h:433
std::unordered_map< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
Definition: Creature.h:284
Definition: SharedDefines.h:79
Definition: ObjectMgr.h:469
struct ScriptInfo::@280::@301 Kill
std::map< uint32, uint32 > BaseXPContainer
Definition: ObjectMgr.h:1505
Definition: ObjectMgr.h:87
uint32 _mailId
Definition: ObjectMgr.h:1407
CharacterConversionMap FactionChangeTitles
Definition: ObjectMgr.h:1356
int32 MapID
Definition: ObjectMgr.h:557
std::unordered_map< ObjectGuid::LowType, GameObjectAddon > GameObjectAddonContainer
Definition: GameObject.h:817
GameObjectQuestItemList const * GetGameObjectQuestItemList(uint32 id) const
Definition: ObjectMgr.h:773
CreatureLocaleContainer _creatureLocaleStore
Definition: ObjectMgr.h:1527
Definition: ObjectMgr.h:387
std::set< std::wstring > ReservedNamesContainer
Definition: ObjectMgr.h:1461
uint32 RepFaction2
Definition: ObjectMgr.h:483
#define MAX_STATS
Definition: SharedDefines.h:244
RepRewardRate const * GetRepRewardRate(uint32 factionId) const
Definition: ObjectMgr.h:873
std::list< MailLevelReward > MailLevelRewardList
Definition: ObjectMgr.h:465
LocaleConstant GetDBCLocaleIndex() const
Definition: ObjectMgr.h:1227
Definition: ObjectMgr.h:91
std::unordered_map< ObjectGuid::LowType, CreatureData > CreatureDataContainer
Definition: ObjectMgr.h:427
Definition: ObjectMgr.h:107
std::unordered_map< uint32, GameObjectQuestItemList > GameObjectQuestItemMap
Definition: GameObject.h:860
float Unused5
Definition: ObjectMgr.h:345
RepSpilloverTemplateContainer _repSpilloverTemplateStore
Definition: ObjectMgr.h:1445
struct ScriptInfo::@280::@291 RespawnGameobject
TerrainPhaseInfo _terrainPhaseInfoStore
Definition: ObjectMgr.h:1480
float position_z
Definition: ObjectMgr.h:129
struct ScriptInfo::@280::@283 Talk
float target_Y
Definition: ObjectMgr.h:404
uint32 AnimKitID
Definition: ObjectMgr.h:368
std::unordered_map< uint32, std::vector< uint32 > > TerrainPhaseInfo
Definition: ObjectMgr.h:696
std::unordered_map< uint8, std::unordered_map< uint32, QuestGreeting const * > > QuestGreetingContainer
Definition: ObjectMgr.h:587
uint32 BoxMoney
Definition: ObjectMgr.h:522
bool TeamDependent
Definition: ObjectMgr.h:490
Definition: ObjectMgr.h:636
std::vector< uint32 > PlayerXPperLevel
Definition: ObjectMgr.h:1502
uint32 PathID
Definition: ObjectMgr.h:319
int32 WorldMapAreaID
Definition: ObjectMgr.h:558
uint32 Amount
Definition: ObjectMgr.h:309
std::vector< PhaseInfoStruct > * GetPhasesForAreaForLoading(uint32 area)
Definition: ObjectMgr.h:1334
Definition: ObjectGuid.h:114
Definition: Creature.h:317
CreatureModelContainer _creatureModelStore
Definition: ObjectMgr.h:1519
ExpansionRequirementContainer const & GetClassExpansionRequirements() const
Definition: ObjectMgr.h:1383
Definition: ObjectMgr.h:140
ExpansionRequirementContainer _raceExpansionRequirementStore
Definition: ObjectMgr.h:1549
std::unordered_map< uint32, uint32 > AreaTriggerScriptContainer
Definition: ObjectMgr.h:725
float creatureRate
Definition: ObjectMgr.h:476
std::unordered_map< uint32, PointOfInterest > PointOfInterestContainer
Definition: ObjectMgr.h:733
float SearchRadius
Definition: ObjectMgr.h:297
std::unordered_set< uint32 > const * GetQuestsForAreaTrigger(uint32 Trigger_ID) const
Definition: ObjectMgr.h:823
uint32 Unused1
Definition: ObjectMgr.h:218
uint8 GetRaceExpansionRequirement(uint8 race) const
Definition: ObjectMgr.h:1375
uint32 _auctionId
Definition: ObjectMgr.h:1404
Definition: ObjectMgr.h:589
Definition: ObjectMgr.h:86
uint32 senderEntry
Definition: ObjectMgr.h:462
Language
Definition: SharedDefines.h:959
std::multimap< int32, uint32 > ExclusiveQuestGroups
Definition: ObjectMgr.h:1106
Definition: ObjectMgr.h:510
struct ScriptInfo::@280::@305 PlayMovie
std::multimap< uint32, uint32 > QuestRelations
Definition: ObjectMgr.h:440
uint16 greetEmoteType
Definition: ObjectMgr.h:578
uint32 QuestID
Definition: ObjectMgr.h:248
Definition: ObjectMgr.h:102
GameObjectLocaleContainer _gameObjectLocaleStore
Definition: ObjectMgr.h:1529
uint32 ScriptID
Definition: ObjectMgr.h:326
struct ScriptInfo::@280::@306 PlayAnimKit
Definition: ObjectMgr.h:175
uint32 delay
Definition: ObjectMgr.h:186
std::pair< GossipMenuItemsContainer::const_iterator, GossipMenuItemsContainer::const_iterator > GossipMenuItemsMapBounds
Definition: ObjectMgr.h:539
uint64 OptionNpcflag
Definition: ObjectMgr.h:518
QuestMap const & GetQuestTemplates() const
Definition: ObjectMgr.h:821
RealmNameContainer _realmNameStore
Definition: ObjectMgr.h:1551
Definition: ObjectMgr.h:169
uint32 skill_id
Definition: ObjectMgr.h:664
InstanceTemplateContainer _instanceTemplateStore
Definition: ObjectMgr.h:1478
std::string GetScriptCommandName(ScriptCommands command)
Definition: ObjectMgr.cpp:81
uint32 ID
Definition: ObjectMgr.h:502
LocaleConstant
Definition: Common.h:115
struct ScriptInfo::@280::@294 RemoveAura
GameObjectLocale const * GetGameObjectLocale(uint32 entry) const
Definition: ObjectMgr.h:1172
std::string greeting
Definition: ObjectMgr.h:580
GameTeleContainer const & GetGameTeleMap() const
Definition: ObjectMgr.h:1257
MailLevelReward()
Definition: ObjectMgr.h:457
std::pair< QuestRelationsReverse::const_iterator, QuestRelationsReverse::const_iterator > QuestRelationReverseBounds
Definition: ObjectMgr.h:443
Definition: ObjectMgr.h:672
int32 UnkWoD1
Definition: ObjectMgr.h:564
std::vector< uint32 > const * GetDefaultTerrainSwaps(uint32 mapid) const
Definition: ObjectMgr.h:1316
std::set< uint32 > TavernAreaTriggerContainer
Definition: ObjectMgr.h:1430
Definition: ObjectMgr.h:528
TempSummonDataContainer _tempSummonDataStore
Stores temp summon data grouped by summoner's entry, summoner's type and group id.
Definition: ObjectMgr.h:1532
std::unordered_map< uint32, Quest * > QuestMap
Definition: ObjectMgr.h:721
Definition: ObjectMgr.h:455
uint32 CreatureEntry
Definition: ObjectMgr.h:254
GossipMenuItemsMapBounds GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
Definition: ObjectMgr.h:1302
GossipMenusContainer _gossipMenusStore
Definition: ObjectMgr.h:1447
PetLevelInfo()
Definition: ObjectMgr.h:447
ScriptMapMap * GetScriptsMapByType(ScriptsType type)
Definition: ObjectMgr.cpp:68
int32 Unused2
Definition: ObjectMgr.h:220
uint32 _hiPetNumber
Definition: ObjectMgr.h:1408
CharcterTemplateClass(uint8 factionGroup, uint8 classID)
Definition: ObjectMgr.h:607
TempSummonGroupKey(uint32 summonerEntry, SummonerType summonerType, uint8 group)
Definition: ObjectMgr.h:64
PointOfInterest const * GetPointOfInterest(uint32 id) const
Definition: ObjectMgr.h:901
G3D::int16 z
Definition: Vector3int16.h:46
struct ScriptInfo::@280::@282 Raw
std::map< uint32, VehicleAccessoryList > VehicleAccessoryTemplateContainer
Definition: VehicleDefines.h:116
std::unordered_map< uint32, SkillTiersEntry > _skillTiers
Definition: ObjectMgr.h:1510
uint32 OptionIndex
Definition: ObjectMgr.h:513
std::vector< PhaseInfoStruct > const * GetPhasesForArea(uint32 area) const
Definition: ObjectMgr.h:1326
Definition: Item.h:259
uint32 Importance
Definition: ObjectMgr.h:506
ObjectGuid GetLinkedRespawnGuid(ObjectGuid guid) const
Definition: ObjectMgr.h:1160
std::pair< ExclusiveQuestGroups::const_iterator, ExclusiveQuestGroups::const_iterator > ExclusiveQuestGroupsBounds
Definition: ObjectMgr.h:1107
uint32 faction[MAX_SPILLOVER_FACTIONS]
Definition: ObjectMgr.h:495
GameTele const * GetGameTele(uint32 id) const
Definition: ObjectMgr.h:1249
struct ScriptInfo::@280::@293 ToggleDoor
AreaTriggerScriptContainer _areaTriggerScriptStore
Definition: ObjectMgr.h:1439
ResponseCodes
Definition: SharedDefines.h:4422
uint32 Flags
Definition: ObjectMgr.h:200
TrainerSpellData const * GetNpcTrainerSpells(uint32 entry) const
Definition: ObjectMgr.h:1261
std::unordered_map< uint32, TrainerSpellData > CacheTrainerSpellContainer
Definition: ObjectMgr.h:600
std::map< TempSummonGroupKey, std::vector< TempSummonData > > TempSummonDataContainer
Definition: ObjectMgr.h:429
int32 Priority
Definition: ObjectMgr.h:560
Vector2int16 & operator=(const Any &a)
int32_t int32
Definition: Define.h:146
std::vector< std::string > ScriptNameContainer
Definition: ObjectMgr.h:735
PhaseInfo _phases
Definition: ObjectMgr.h:1483
Definition: GameObject.h:803
SpellScriptsContainer _spellScriptsStore
Definition: ObjectMgr.h:1470
Definition: ObjectMgr.h:702
std::unordered_map< uint64, DungeonEncounterList > DungeonEncounterContainer
Definition: ObjectMgr.h:688
uint32_t uint32
Definition: Define.h:150
std::map< uint32, StringVector > HalfNameContainer
Definition: ObjectMgr.h:1512
std::pair< SpellClickInfoContainer::const_iterator, SpellClickInfoContainer::const_iterator > SpellClickInfoMapBounds
Definition: ObjectMgr.h:398
CreatureTemplateAddonContainer _creatureTemplateAddonStore
Definition: ObjectMgr.h:1524
Definition: ObjectMgr.h:480
uint64_t uint64
Definition: Define.h:149
CharacterConversionMap FactionChangeQuests
Definition: ObjectMgr.h:1353
CreatureQuestItemList const * GetCreatureQuestItemList(uint32 id) const
Definition: ObjectMgr.h:782
GameObjectQuestItemMap const * GetGameObjectQuestItemMap() const
Definition: ObjectMgr.h:780
uint32 EmoteID
Definition: ObjectMgr.h:206
G3D::int16 y
Definition: Vector2int16.h:38
struct ScriptInfo::@280::@295 CastSpell
uint16_t uint16
Definition: Define.h:151
std::unordered_map< uint32, std::vector< uint32 > > TerrainUIPhaseInfo
Definition: ObjectMgr.h:697
std::string Name
Definition: ObjectMgr.h:507
std::multimap< uint32, uint32 > QuestRelationsReverse
Definition: ObjectMgr.h:441
uint32 raceMask
Definition: ObjectMgr.h:460
CreatureTemplateContainer const * GetCreatureTemplates() const
Definition: ObjectMgr.h:749
std::unordered_map< uint16, CreatureBaseStats > CreatureBaseStatsContainer
Definition: Creature.h:256
AccessRequirement const * GetAccessRequirement(uint32 mapid, Difficulty difficulty) const
Definition: ObjectMgr.h:859
AccessRequirementContainer _accessRequirementStore
Definition: ObjectMgr.h:1440
struct ScriptInfo::@280::@298 DespawnSelf
VendorItemData const * GetNpcVendorItemList(uint32 entry) const
Definition: ObjectMgr.h:1270
Definition: ObjectMgr.h:500
QuestRelationBounds GetCreatureQuestRelationBounds(uint32 creature_entry)
Definition: ObjectMgr.h:969
QuestPOIContainer _questPOIStore
Definition: ObjectMgr.h:1451
Definition: ObjectMgr.h:629
std::unordered_map< uint32, RepSpilloverTemplate > RepSpilloverTemplateContainer
Definition: ObjectMgr.h:731
Definition: DBCStructure.h:982
QuestPOI(int32 _BlobIndex, int32 _ObjectiveIndex, int32 _QuestObjectiveID, int32 _QuestObjectID, int32 _MapID, int32 _WorldMapAreaID, int32 _Foor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, int32 _PlayerConditionID, int32 _UnkWoD1)
Definition: ObjectMgr.h:568
uint32 ItemEntry
Definition: ObjectMgr.h:308
SpellClickInfoMapBounds GetSpellClickInfoMapBounds(uint32 creature_id) const
Definition: ObjectMgr.h:1287
int32 RepValue2
Definition: ObjectMgr.h:487
BaseXPContainer _baseXPTable
Definition: ObjectMgr.h:1506
PlayerXPperLevel _playerXPperLevel
Definition: ObjectMgr.h:1503
Definition: ObjectMgr.h:92
int32 QuestObjectID
Definition: ObjectMgr.h:556
QuestTemplateLocaleContainer _questTemplateLocaleStore
Definition: ObjectMgr.h:1535
CharacterConversionMap FactionChangeItems
Definition: ObjectMgr.h:1352
CreatureQuestItemMap _creatureQuestItemStore
Definition: ObjectMgr.h:1523
float questRepeatableRate
Definition: ObjectMgr.h:475
int32 RemoveCorpse
Definition: ObjectMgr.h:334
Definition: ObjectMgr.h:152
#define MAX_SKILL_STEP
Definition: ObjectMgr.h:634
Definition: Map.h:259
std::multimap< uint32, GossipMenuItems > GossipMenuItemsContainer
Definition: ObjectMgr.h:538
CacheVendorItemContainer _cacheVendorItemStore
Definition: ObjectMgr.h:1543
CharacterTemplate const * GetCharacterTemplate(uint32 id) const
Definition: ObjectMgr.h:1393
bool BoxCoded
Definition: ObjectMgr.h:521
GameObjectData const * GetGOData(ObjectGuid::LowType guid) const
Definition: ObjectMgr.h:1209
std::vector< CharcterTemplateClass > Classes
Definition: ObjectMgr.h:617
uint32 ReputationMaxCap1
Definition: ObjectMgr.h:484
CreatureAddonContainer _creatureAddonStore
Definition: ObjectMgr.h:1520
std::unordered_map< uint32, TrinityString > TrinityStringContainer
Definition: ObjectMgr.h:438
Definition: ObjectMgr.h:176
std::unordered_map< uint32, CharacterTemplate > CharacterTemplateContainer
Definition: ObjectMgr.h:623
Key for storing temp summon data in TempSummonDataContainer.
Definition: ObjectMgr.h:62
uint32 lastEncounterDungeon
Definition: ObjectMgr.h:684
#define MAX_CLASSES
Definition: SharedDefines.h:181
uint32 MovieID
Definition: ObjectMgr.h:363
float position_y
Definition: ObjectMgr.h:128
QuestRelations _goQuestRelations
Definition: ObjectMgr.h:1453
ConditionContainer Conditions
Definition: ObjectMgr.h:693
std::string Name
Definition: ObjectMgr.h:618
QuestGreeting()
Definition: ObjectMgr.h:582
Definition: ObjectMgr.h:542
Definition: ObjectMgr.h:614
uint32 TemplateSetId
Definition: ObjectMgr.h:616
QuestRelations * GetGOQuestRelationMap()
Definition: ObjectMgr.h:944
uint8 GetClassExpansionRequirement(uint8 class_) const
Definition: ObjectMgr.h:1384
TerrainUIPhaseInfo _terrainWorldMapStore
Definition: ObjectMgr.h:1482
Definition: DBCStructure.h:405
Definition: ObjectMgr.h:172
Definition: ObjectMgr.h:112
GameObjectQuestItemMap _gameObjectQuestItemStore
Definition: ObjectMgr.h:1522
CharacterTemplateContainer const & GetCharacterTemplates() const
Definition: ObjectMgr.h:1392
MailLevelRewardContainer _mailLevelRewardStore
Definition: ObjectMgr.h:1490
Definition: Creature.h:353
int32 ObjectiveIndex
Definition: ObjectMgr.h:554
Definition: GameObject.h:833
std::map< uint32, int32 > FishingBaseSkillContainer
Definition: ObjectMgr.h:1508
float DestZ
Definition: ObjectMgr.h:224
#define LANGUAGES_COUNT
Definition: SharedDefines.h:988
uint32 ActionMenuId
Definition: ObjectMgr.h:519
uint8 Level
Definition: ObjectMgr.h:620
std::set< uint32 > _transportMaps
Definition: ObjectMgr.h:1564
struct ScriptInfo::@280::@292 TempSummonCreature
Definition: ObjectMgr.h:144
#define MAX_RACES
Definition: SharedDefines.h:131
int32 Y
Definition: ObjectMgr.h:545
TavernAreaTriggerContainer _tavernAreaTriggerStore
Definition: ObjectMgr.h:1434
std::vector< std::string > StringVector
Definition: Common.h:142
std::unordered_map< uint32, PointOfInterestLocale > PointOfInterestLocaleContainer
Definition: ObjectMgr.h:436
std::multimap< uint32, GraveYardData > GraveYardContainer
Definition: ObjectMgr.h:595
uint32 mailTemplateId
Definition: ObjectMgr.h:461
CreatureQuestItemMap const * GetCreatureQuestItemMap() const
Definition: ObjectMgr.h:789
PointOfInterestLocaleContainer _pointOfInterestLocaleStore
Definition: ObjectMgr.h:1539
Definition: ItemTemplate.h:647
float questWeeklyRate
Definition: ObjectMgr.h:473
StringVector Content
Definition: ObjectMgr.h:423
Definition: ObjectMgr.h:100
QuestRelations _creatureQuestInvolvedRelations
Definition: ObjectMgr.h:1457
float PosY
Definition: ObjectMgr.h:271
CellGuidSet creatures
Definition: ObjectMgr.h:412
HotfixData _hotfixData
Definition: ObjectMgr.h:1563
Definition: ObjectMgr.h:164
PhaseInfo & GetAreaPhasesForLoading()
Definition: ObjectMgr.h:1339
FishingBaseSkillContainer _fishingBaseForAreaStore
Definition: ObjectMgr.h:1509
float target_Z
Definition: ObjectMgr.h:405
LanguageDesc const * GetLanguageDescByID(uint32 lang)
Definition: ObjectMgr.cpp:192
Definition: ObjectMgr.h:171
Definition: ObjectMgr.h:98
LinkedRespawnContainer _linkedRespawnStore
Definition: ObjectMgr.h:1526
uint32 mapId
Definition: ObjectMgr.h:131
std::map< uint32, PetLevelInfo * > PetLevelInfoContainer
Definition: ObjectMgr.h:1494
EquipmentInfoContainer _equipmentInfoStore
Definition: ObjectMgr.h:1525
#define TC_GAME_API
Definition: Define.h:134
uint32 entry
Definition: ObjectMgr.h:530
std::vector< QuestPOI > QuestPOIVector
Definition: ObjectMgr.h:573
std::unordered_map< uint8, uint8 > ExpansionRequirementContainer
Definition: ObjectMgr.h:602
std::vector< QuestPOIPoint > points
Definition: ObjectMgr.h:565
Definition: ObjectMgr.h:116
uint32 IsRepeatable
Definition: ObjectMgr.h:320
struct ScriptInfo::@280::@303 Equip
Definition: ObjectMgr.h:99
VehicleAccessoryContainer _vehicleAccessoryStore
Definition: ObjectMgr.h:1473
Definition: ObjectMgr.h:628
TC_GAME_API ScriptMapMap sWaypointScripts
Definition: ObjectMgr.cpp:53
HalfNameContainer _petHalfName0
Definition: ObjectMgr.h:1513
float questMonthlyRate
Definition: ObjectMgr.h:474
DungeonEncounterEntry const * dbcEntry
Definition: ObjectMgr.h:681
uint32 ResetDelay
Definition: ObjectMgr.h:280
std::unordered_map< uint32, AreaTriggerStruct > AreaTriggerContainer
Definition: ObjectMgr.h:723
std::unordered_map< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition: GameObject.h:769
std::list< DungeonEncounter const * > DungeonEncounterList
Definition: ObjectMgr.h:687
Definition: NPCHandler.h:35
std::unordered_map< uint32, GameObjectLocale > GameObjectLocaleContainer
Definition: ObjectMgr.h:431
ExclusiveQuestGroups mExclusiveQuestGroups
Definition: ObjectMgr.h:1109
uint32 OptionBroadcastTextId
Definition: ObjectMgr.h:516
uint8_t uint8
Definition: Define.h:152
bool IsTeamAward1
Definition: ObjectMgr.h:488
ExpansionRequirementContainer _classExpansionRequirementStore
Definition: ObjectMgr.h:1550
uint8 OptionIcon
Definition: ObjectMgr.h:514
PetLevelInfoContainer _petInfoStore
Definition: ObjectMgr.h:1496
ReservedNamesContainer _reservedNamesStore
Definition: ObjectMgr.h:1462
uint32 creditEntry
Definition: ObjectMgr.h:683
std::set< ObjectGuid::LowType > CellGuidSet
Definition: ObjectMgr.h:409
ObjectGuidGeneratorBase & GetGenerator()
Definition: ObjectMgr.h:1092
Definition: Creature.h:445
uint32 ModelID
Definition: ObjectMgr.h:356
QuestTemplateLocale const * GetQuestLocale(uint32 entry) const
Definition: ObjectMgr.h:1178
#define TC_LOG_INFO(filterType__,...)
Definition: Log.h:201
QuestPOI()
Definition: ObjectMgr.h:567
static void GetLocaleString(StringVector const &data, LocaleConstant localeConstant, std::string &value)
Definition: ObjectMgr.h:1345
uint32 MapID
Definition: ObjectMgr.h:236
std::unordered_map< uint32, GossipMenuItemsLocale > GossipMenuItemsLocaleContainer
Definition: ObjectMgr.h:435
QuestRelationReverseBounds GetGOQuestInvolvedRelationReverseBounds(uint32 questId)
Definition: ObjectMgr.h:959
CellGuidSet gameobjects
Definition: ObjectMgr.h:413
int32 Flags
Definition: ObjectMgr.h:561
const FieldDescriptor value
Definition: descriptor.h:1522
GraveYardContainer GraveYardStore
Definition: ObjectMgr.h:1342
uint32 spell_id
Definition: ObjectMgr.h:663
Definition: ObjectMgr.h:155
int32 Unused1
Definition: ObjectMgr.h:238
uint32 Unused2
Definition: ObjectMgr.h:333
QuestAreaTriggerContainer _questAreaTriggerStore
Definition: ObjectMgr.h:1433
struct ScriptInfo::@280::@290 KillCredit
Definition: ObjectGuid.h:189
uint32 ID
Definition: ObjectMgr.h:638
uint32_t uint32
Definition: g3dmath.h:168
uint32 spellId
Definition: ObjectMgr.h:389
CellObjectGuidsMap const & GetMapObjectGuids(uint16 mapid, uint8 spawnMode)
Definition: ObjectMgr.h:1129
QuestRelations _creatureQuestRelations
Definition: ObjectMgr.h:1456
Definition: ObjectMgr.h:1558
TerrainPhaseInfo _terrainMapDefaultStore
Definition: ObjectMgr.h:1481
G3D::int16 x
Definition: Vector2int16.h:37
Definition: ObjectMgr.h:410
struct ScriptInfo::@280::@288 TeleportTo
Definition: ObjectMgr.h:179
void LoadQuestStartersAndEnders()
Definition: ObjectMgr.h:928
Definition: ObjectMgr.h:1557
void SetDBCLocaleIndex(LocaleConstant locale)
Definition: ObjectMgr.h:1228
Definition: Unit.h:1101
CreatureLocale const * GetCreatureLocale(uint32 entry) const
Definition: ObjectMgr.h:1166
uint64 _equipmentSetGuid
Definition: ObjectMgr.h:1405
Definition: Creature.h:277
uint16 health
Definition: ObjectMgr.h:450
RepSpilloverTemplate const * GetRepSpilloverTemplate(uint32 factionId) const
Definition: ObjectMgr.h:892
struct ScriptInfo::@280::@296 PlaySound
std::vector< Condition * > ConditionContainer
Definition: ConditionMgr.h:239
std::vector< TempSummonData > const * GetSummonGroup(uint32 summonerId, SummonerType summonerType, uint8 group) const
Definition: ObjectMgr.h:1143
MailLevelReward const * GetMailLevelReward(uint8 level, uint32 raceMask)
Definition: ObjectMgr.h:1111
Definition: ObjectMgr.h:576
int32 Floor
Definition: ObjectMgr.h:559
Definition: ObjectMgr.h:158
uint32 RepFaction1
Definition: ObjectMgr.h:482
Definition: Creature.h:383
uint32 Distance
Definition: ObjectMgr.h:249
uint32 Icon
Definition: ObjectMgr.h:504
Definition: Player.h:373
float questRate
Definition: ObjectMgr.h:471
Definition: ObjectMgr.h:104
std::unordered_map< uint32, CreatureTemplate > CreatureTemplateContainer
Definition: Creature.h:213
uint32 NextPageID
Definition: ObjectMgr.h:58
Definition: ObjectMgr.h:55
Definition: Unit.h:1305
std::unordered_map< uint16, CreatureModelInfo > CreatureModelContainer
Definition: Creature.h:327
float fData[4]
Definition: ObjectMgr.h:194
int32 TextID
Definition: ObjectMgr.h:201
struct ScriptInfo::@280::@287 FlagToggle
Definition: ObjectMgr.h:93
std::map< uint32, uint32 > CharacterConversionMap
Definition: ObjectMgr.h:737
std::unordered_map< uint32, std::unordered_set< uint32 > > QuestAreaTriggerContainer
Definition: ObjectMgr.h:1429
Definition: QuestDef.h:256
GameObjectData & NewGOData(ObjectGuid::LowType guid)
Definition: ObjectMgr.h:1215
GossipMenuItemsContainer _gossipMenuItemsStore
Definition: ObjectMgr.h:1448
Definition: ObjectMgr.h:114
std::unordered_map< uint32, QuestTemplateLocale > QuestTemplateLocaleContainer
Definition: ObjectMgr.h:432
std::unordered_map< uint32, PageTextLocale > PageTextLocaleContainer
Definition: ObjectMgr.h:434
uint64 _creatureSpawnId
Definition: ObjectMgr.h:1410
uint32 MAKE_PAIR32(uint16 l, uint16 h)
Definition: ObjectDefines.h:54
uint32 _summonerEntry
Summoner's entry.
Definition: ObjectMgr.h:76
uint32 ChatType
Definition: ObjectMgr.h:199
Definition: Creature.h:79
AreaTriggerContainer _areaTriggerStore
Definition: ObjectMgr.h:1438
std::unordered_map< uint32, ItemTemplate > ItemTemplateContainer
Definition: ItemTemplate.h:769
Definition: ObjectMgr.h:673
Definition: ObjectMgr.h:168
std::vector< uint32 > const * GetPhaseTerrainSwaps(uint32 phaseid) const
Definition: ObjectMgr.h:1311
struct ScriptInfo::@280::@289 QuestExplored
float questDailyRate
Definition: ObjectMgr.h:472
ConditionContainer conditions
Definition: ObjectMgr.h:532
HalfNameContainer _petHalfName1
Definition: ObjectMgr.h:1514
std::vector< uint32 > const * GetTerrainWorldMaps(uint32 terrainId) const
Definition: ObjectMgr.h:1321
CharacterConversionMap FactionChangeReputation
Definition: ObjectMgr.h:1354
float spellRate
Definition: ObjectMgr.h:477
DungeonEncounter(DungeonEncounterEntry const *_dbcEntry, EncounterCreditType _creditType, uint32 _creditEntry, uint32 _lastEncounterDungeon)
Definition: ObjectMgr.h:678
CharacterConversionMap FactionChangeSpells
Definition: ObjectMgr.h:1355
bool IsTeamAward2
Definition: ObjectMgr.h:489
Definition: ObjectMgr.h:143
Definition: Creature.h:218
float target_X
Definition: ObjectMgr.h:403
std::unordered_map< uint32, CellObjectGuids > CellObjectGuidsMap
Definition: ObjectMgr.h:415
uint32 target_mapId
Definition: ObjectMgr.h:402
Definition: ObjectMgr.h:111
Definition: ObjectMgr.h:1559
int32 BlobIndex
Definition: ObjectMgr.h:553
G3D::Vector2 Pos
Definition: ObjectMgr.h:503
Definition: ObjectMgr.h:493
Definition: ObjectMgr.h:88
QuestRelationsReverse _creatureQuestInvolvedRelationsReverse
Definition: ObjectMgr.h:1458
QuestRelationsReverse _goQuestInvolvedRelationsReverse
Definition: ObjectMgr.h:1455
RepRewardRateContainer _repRewardRateStore
Definition: ObjectMgr.h:1443
int32 RepValue1
Definition: ObjectMgr.h:485
Definition: ObjectMgr.h:630