aboutsummaryrefslogtreecommitdiff
path: root/src/game/ObjectMgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/ObjectMgr.h')
-rw-r--r--src/game/ObjectMgr.h1085
1 files changed, 0 insertions, 1085 deletions
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
deleted file mode 100644
index 79b6ffdd0eb..00000000000
--- a/src/game/ObjectMgr.h
+++ /dev/null
@@ -1,1085 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- *
- * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _OBJECTMGR_H
-#define _OBJECTMGR_H
-
-#include "Log.h"
-#include "Object.h"
-#include "Bag.h"
-#include "Creature.h"
-#include "Player.h"
-#include "DynamicObject.h"
-#include "GameObject.h"
-#include "Corpse.h"
-#include "QuestDef.h"
-#include "Path.h"
-#include "ItemPrototype.h"
-#include "NPCHandler.h"
-#include "Database/DatabaseEnv.h"
-#include "Mail.h"
-#include "Map.h"
-#include "ObjectAccessor.h"
-#include "ObjectDefines.h"
-#include "Policies/Singleton.h"
-#include "Database/SQLStorage.h"
-#include "Vehicle.h"
-#include "ObjectMgr.h"
-#include <string>
-#include <map>
-#include <limits>
-#include "ConditionMgr.h"
-
-extern SQLStorage sCreatureStorage;
-extern SQLStorage sCreatureDataAddonStorage;
-extern SQLStorage sCreatureInfoAddonStorage;
-extern SQLStorage sCreatureModelStorage;
-extern SQLStorage sEquipmentStorage;
-extern SQLStorage sGOStorage;
-extern SQLStorage sPageTextStore;
-extern SQLStorage sItemStorage;
-extern SQLStorage sInstanceTemplate;
-
-class Group;
-class Guild;
-class ArenaTeam;
-class Path;
-class TransportPath;
-class Item;
-
-struct GameTele
-{
- float position_x;
- float position_y;
- float position_z;
- float orientation;
- uint32 mapId;
- std::string name;
- std::wstring wnameLow;
-};
-
-typedef UNORDERED_MAP<uint32, GameTele > GameTeleMap;
-
-struct ScriptInfo
-{
- uint32 id;
- uint32 delay;
- uint32 command;
- uint32 datalong;
- uint32 datalong2;
- int32 dataint;
- float x;
- float y;
- float z;
- float o;
-};
-
-typedef std::multimap<uint32, ScriptInfo> ScriptMap;
-typedef std::map<uint32, ScriptMap > ScriptMapMap;
-extern ScriptMapMap sQuestEndScripts;
-extern ScriptMapMap sQuestStartScripts;
-extern ScriptMapMap sSpellScripts;
-extern ScriptMapMap sGameObjectScripts;
-extern ScriptMapMap sEventScripts;
-extern ScriptMapMap sGossipScripts;
-extern ScriptMapMap sWaypointScripts;
-
-struct SpellClickInfo
-{
- uint32 spellId;
- uint32 questStart; // quest start (quest must be active or rewarded for spell apply)
- uint32 questEnd; // quest end (quest don't must be rewarded for spell apply)
- bool questStartCanActive; // if true then quest start can be active (not only rewarded)
- uint8 castFlags;
- uint32 auraRequired;
- uint32 auraForbidden;
- SpellClickUserTypes userType;
-
- // helpers
- bool IsFitToRequirements(Player const* player, Creature const * clickNpc) const;
-};
-
-typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoMap;
-typedef std::pair<SpellClickInfoMap::const_iterator,SpellClickInfoMap::const_iterator> SpellClickInfoMapBounds;
-
-struct AreaTrigger
-{
- uint32 access_id;
- uint32 target_mapId;
- float target_X;
- float target_Y;
- float target_Z;
- float target_Orientation;
-};
-
-typedef std::set<uint32> CellGuidSet;
-typedef std::map<uint32/*player guid*/,uint32/*instance*/> CellCorpseSet;
-struct CellObjectGuids
-{
- CellGuidSet creatures;
- CellGuidSet gameobjects;
- CellCorpseSet corpses;
-};
-typedef UNORDERED_MAP<uint32/*cell_id*/,CellObjectGuids> CellObjectGuidsMap;
-typedef UNORDERED_MAP<uint32/*(mapid,spawnMode) pair*/,CellObjectGuidsMap> MapObjectGuids;
-
-typedef UNORDERED_MAP<uint64/*(instance,guid) pair*/,time_t> RespawnTimes;
-
-// Trinity string ranges
-#define MIN_TRINITY_STRING_ID 1 // 'trinity_string'
-#define MAX_TRINITY_STRING_ID 2000000000
-#define MIN_DB_SCRIPT_STRING_ID MAX_TRINITY_STRING_ID // 'db_script_string'
-#define MAX_DB_SCRIPT_STRING_ID 2000010000
-#define MIN_CREATURE_AI_TEXT_STRING_ID (-1) // 'creature_ai_texts'
-#define MAX_CREATURE_AI_TEXT_STRING_ID (-1000000)
-
-// Trinity Trainer Reference start range
-#define TRINITY_TRAINER_START_REF 200000
-
-struct TrinityStringLocale
-{
- std::vector<std::string> Content; // 0 -> default, i -> i-1 locale index
-};
-
-typedef std::map<uint32,uint32> CreatureLinkedRespawnMap;
-typedef UNORDERED_MAP<uint32,CreatureData> CreatureDataMap;
-typedef UNORDERED_MAP<uint32,GameObjectData> GameObjectDataMap;
-typedef UNORDERED_MAP<uint32,CreatureLocale> CreatureLocaleMap;
-typedef UNORDERED_MAP<uint32,GameObjectLocale> GameObjectLocaleMap;
-typedef UNORDERED_MAP<uint32,ItemLocale> ItemLocaleMap;
-typedef UNORDERED_MAP<uint32,QuestLocale> QuestLocaleMap;
-typedef UNORDERED_MAP<uint32,NpcTextLocale> NpcTextLocaleMap;
-typedef UNORDERED_MAP<uint32,PageTextLocale> PageTextLocaleMap;
-typedef UNORDERED_MAP<int32,TrinityStringLocale> TrinityStringLocaleMap;
-typedef UNORDERED_MAP<uint32,GossipMenuItemsLocale> GossipMenuItemsLocaleMap;
-typedef UNORDERED_MAP<uint32,PointOfInterestLocale> PointOfInterestLocaleMap;
-
-typedef std::multimap<uint32,uint32> QuestRelations;
-typedef std::multimap<uint32,ItemRequiredTarget> ItemRequiredTargetMap;
-typedef std::pair<ItemRequiredTargetMap::const_iterator, ItemRequiredTargetMap::const_iterator> ItemRequiredTargetMapBounds;
-
-struct PetLevelInfo
-{
- PetLevelInfo() : health(0), mana(0) { for (uint8 i=0; i < MAX_STATS; ++i) stats[i] = 0; }
-
- uint16 stats[MAX_STATS];
- uint16 health;
- uint16 mana;
- uint16 armor;
-};
-
-struct MailLevelReward
-{
- MailLevelReward() : raceMask(0), mailTemplateId(0), senderEntry(0) {}
- MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) {}
-
- uint32 raceMask;
- uint32 mailTemplateId;
- uint32 senderEntry;
-};
-
-typedef std::list<MailLevelReward> MailLevelRewardList;
-typedef UNORDERED_MAP<uint8,MailLevelRewardList> MailLevelRewardMap;
-
-struct ReputationOnKillEntry
-{
- uint32 repfaction1;
- uint32 repfaction2;
- bool is_teamaward1;
- uint32 reputation_max_cap1;
- int32 repvalue1;
- bool is_teamaward2;
- uint32 reputation_max_cap2;
- int32 repvalue2;
- bool team_dependent;
-};
-
-struct PointOfInterest
-{
- uint32 entry;
- float x;
- float y;
- uint32 icon;
- uint32 flags;
- uint32 data;
- std::string icon_name;
-};
-
-struct GossipMenuItems
-{
- uint32 menu_id;
- uint32 id;
- uint8 option_icon;
- std::string option_text;
- uint32 option_id;
- uint32 npc_option_npcflag;
- uint32 action_menu_id;
- uint32 action_poi_id;
- uint32 action_script_id;
- bool box_coded;
- uint32 box_money;
- std::string box_text;
- ConditionList conditions;
-};
-
-struct GossipMenus
-{
- uint32 entry;
- uint32 text_id;
- ConditionList conditions;
-};
-
-typedef std::multimap<uint32,GossipMenus> GossipMenusMap;
-typedef std::pair<GossipMenusMap::const_iterator, GossipMenusMap::const_iterator> GossipMenusMapBounds;
-typedef std::pair<GossipMenusMap::iterator, GossipMenusMap::iterator> GossipMenusMapBoundsNonConst;
-typedef std::multimap<uint32,GossipMenuItems> GossipMenuItemsMap;
-typedef std::pair<GossipMenuItemsMap::const_iterator, GossipMenuItemsMap::const_iterator> GossipMenuItemsMapBounds;
-typedef std::pair<GossipMenuItemsMap::iterator, GossipMenuItemsMap::iterator> GossipMenuItemsMapBoundsNonConst;
-
-struct QuestPOIPoint
-{
- int32 x;
- int32 y;
-
- QuestPOIPoint() : x(0), y(0) {}
- QuestPOIPoint(int32 _x, int32 _y) : x(_x), y(_y) {}
-};
-
-struct QuestPOI
-{
- uint32 Id;
- int32 ObjectiveIndex;
- uint32 MapId;
- uint32 AreaId;
- uint32 Unk2;
- uint32 Unk3;
- uint32 Unk4;
- std::vector<QuestPOIPoint> points;
-
- QuestPOI() : Id(0), ObjectiveIndex(0), MapId(0), AreaId(0), Unk2(0), Unk3(0), Unk4(0) {}
- QuestPOI(uint32 id, int32 objIndex, uint32 mapId, uint32 areaId, uint32 unk2, uint32 unk3, uint32 unk4) : Id(id), ObjectiveIndex(objIndex), MapId(mapId), AreaId(areaId), Unk2(unk2), Unk3(unk3), Unk4(unk4) {}
-};
-
-typedef std::vector<QuestPOI> QuestPOIVector;
-typedef UNORDERED_MAP<uint32, QuestPOIVector> QuestPOIMap;
-
-#define WEATHER_SEASONS 4
-struct WeatherSeasonChances
-{
- uint32 rainChance;
- uint32 snowChance;
- uint32 stormChance;
-};
-
-struct WeatherZoneChances
-{
- WeatherSeasonChances data[WEATHER_SEASONS];
-};
-
-struct GraveYardData
-{
- uint32 safeLocId;
- uint32 team;
-};
-typedef std::multimap<uint32,GraveYardData> GraveYardMap;
-
-// NPC gossip text id
-typedef UNORDERED_MAP<uint32, uint32> CacheNpcTextIdMap;
-
-typedef UNORDERED_MAP<uint32, VendorItemData> CacheVendorItemMap;
-typedef UNORDERED_MAP<uint32, TrainerSpellData> CacheTrainerSpellMap;
-
-enum SkillRangeType
-{
- SKILL_RANGE_LANGUAGE, // 300..300
- SKILL_RANGE_LEVEL, // 1..max skill for level
- SKILL_RANGE_MONO, // 1..1, grey monolite bar
- SKILL_RANGE_RANK, // 1..skill for known rank
- SKILL_RANGE_NONE, // 0..0 always
-};
-
-struct GM_Ticket
-{
- uint64 guid;
- uint64 playerGuid;
- std::string name;
- float pos_x;
- float pos_y;
- float pos_z;
- uint32 map;
- std::string message;
- uint64 createtime;
- uint64 timestamp;
- int64 closed; // 0 = Open, -1 = Console, playerGuid = player abandoned ticket, other = GM who closed it.
- uint64 assignedToGM;
- std::string comment;
-};
-typedef std::list<GM_Ticket*> GmTicketList;
-SkillRangeType GetSkillRangeType(SkillLineEntry const *pSkill, bool racial);
-
-#define MAX_PLAYER_NAME 12 // max allowed by client name length
-#define MAX_INTERNAL_PLAYER_NAME 15 // max server internal player name length (> MAX_PLAYER_NAME for support declined names)
-#define MAX_PET_NAME 12 // max allowed by client name length
-#define MAX_CHARTER_NAME 24 // max allowed by client name length
-
-bool normalizePlayerName(std::string& name);
-
-struct LanguageDesc
-{
- Language lang_id;
- uint32 spell_id;
- uint32 skill_id;
-};
-
-extern LanguageDesc lang_description[LANGUAGES_COUNT];
- LanguageDesc const* GetLanguageDescByID(uint32 lang);
-
-class PlayerDumpReader;
-
-class ObjectMgr
-{
- friend class PlayerDumpReader;
-
- public:
- ObjectMgr();
- ~ObjectMgr();
-
- typedef UNORDERED_MAP<uint32, Item*> ItemMap;
-
- typedef std::set< Group * > GroupSet;
-
- typedef UNORDERED_MAP<uint32, Guild *> GuildMap;
-
- typedef UNORDERED_MAP<uint32, ArenaTeam*> ArenaTeamMap;
-
- typedef UNORDERED_MAP<uint32, Quest*> QuestMap;
-
- typedef UNORDERED_MAP<uint32, AreaTrigger> AreaTriggerMap;
-
- typedef UNORDERED_MAP<uint32, uint32> AreaTriggerScriptMap;
-
- typedef UNORDERED_MAP<uint32, AccessRequirement> AccessRequirementMap;
-
- typedef UNORDERED_MAP<uint32, ReputationOnKillEntry> RepOnKillMap;
- typedef UNORDERED_MAP<uint32, PointOfInterest> PointOfInterestMap;
-
- typedef UNORDERED_MAP<uint32, WeatherZoneChances> WeatherZoneMap;
-
- typedef std::vector<std::string> ScriptNameMap;
-
- UNORDERED_MAP<uint32, uint32> TransportEventMap;
-
- Player* GetPlayer(const char* name) const { return ObjectAccessor::Instance().FindPlayerByName(name);}
- Player* GetPlayer(uint64 guid) const { return ObjectAccessor::FindPlayer(guid); }
-
- static GameObjectInfo const *GetGameObjectInfo(uint32 id) { return sGOStorage.LookupEntry<GameObjectInfo>(id); }
- int LoadReferenceVendor(int32 vendor, int32 item_id, std::set<uint32> *skip_vendors);
-
- void LoadGameobjectInfo();
- void AddGameobjectInfo(GameObjectInfo *goinfo);
-
- Group * GetGroupByGUID(const uint64 &guid) const;
- void AddGroup(Group* group) { mGroupSet.insert(group); }
- void RemoveGroup(Group* group) { mGroupSet.erase(group); }
-
- Guild* GetGuildByLeader(uint64 const&guid) const;
- Guild* GetGuildById(uint32 GuildId) const;
- Guild* GetGuildByName(const std::string& guildname) const;
- std::string GetGuildNameById(uint32 GuildId) const;
- void AddGuild(Guild* guild);
- void RemoveGuild(uint32 Id);
-
- ArenaTeam* GetArenaTeamById(uint32 arenateamid) const;
- ArenaTeam* GetArenaTeamByName(const std::string& arenateamname) const;
- ArenaTeam* GetArenaTeamByCaptain(uint64 const& guid) const;
- void AddArenaTeam(ArenaTeam* arenaTeam);
- void RemoveArenaTeam(uint32 Id);
- ArenaTeamMap::iterator GetArenaTeamMapBegin() { return mArenaTeamMap.begin(); }
- ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); }
-
- static CreatureInfo const *GetCreatureTemplate(uint32 id);
- CreatureModelInfo const *GetCreatureModelInfo(uint32 modelid);
- CreatureModelInfo const* GetCreatureModelRandomGender(uint32 display_id);
- uint32 ChooseDisplayId(uint32 team, const CreatureInfo *cinfo, const CreatureData *data = NULL);
- EquipmentInfo const *GetEquipmentInfo(uint32 entry);
- static CreatureDataAddon const *GetCreatureAddon(uint32 lowguid)
- {
- return sCreatureDataAddonStorage.LookupEntry<CreatureDataAddon>(lowguid);
- }
-
- static CreatureDataAddon const *GetCreatureTemplateAddon(uint32 entry)
- {
- return sCreatureInfoAddonStorage.LookupEntry<CreatureDataAddon>(entry);
- }
-
- static ItemPrototype const* GetItemPrototype(uint32 id) { return sItemStorage.LookupEntry<ItemPrototype>(id); }
-
- static InstanceTemplate const* GetInstanceTemplate(uint32 map)
- {
- return sInstanceTemplate.LookupEntry<InstanceTemplate>(map);
- }
-
- PetLevelInfo const* GetPetLevelInfo(uint32 creature_id, uint8 level) const;
-
- PlayerClassInfo const* GetPlayerClassInfo(uint32 class_) const
- {
- if (class_ >= MAX_CLASSES) return NULL;
- return &playerClassInfo[class_];
- }
- void GetPlayerClassLevelInfo(uint32 class_,uint8 level, PlayerClassLevelInfo* info) const;
-
- PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const
- {
- if (race >= MAX_RACES) return NULL;
- if (class_ >= MAX_CLASSES) return NULL;
- PlayerInfo const* info = &playerInfo[race][class_];
- if (info->displayId_m == 0 || info->displayId_f == 0) return NULL;
- return info;
- }
- void GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const;
-
- uint64 GetPlayerGUIDByName(std::string name) const;
- bool GetPlayerNameByGUID(const uint64 &guid, std::string &name) const;
- uint32 GetPlayerTeamByGUID(const uint64 &guid) const;
- uint32 GetPlayerAccountIdByGUID(const uint64 &guid) const;
- uint32 GetPlayerAccountIdByPlayerName(const std::string& name) const;
-
- uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
- void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
- uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false);
- void GetTaxiPathNodes(uint32 path, Path &pathnodes, std::vector<uint32>& mapIds);
- void GetTransportPathNodes(uint32 path, TransportPath &pathnodes);
-
- Quest const* GetQuestTemplate(uint32 quest_id) const
- {
- QuestMap::const_iterator itr = mQuestTemplates.find(quest_id);
- return itr != mQuestTemplates.end() ? itr->second : NULL;
- }
- QuestMap const& GetQuestTemplates() const { return mQuestTemplates; }
-
- uint32 GetQuestForAreaTrigger(uint32 Trigger_ID) const
- {
- QuestAreaTriggerMap::const_iterator itr = mQuestAreaTriggerMap.find(Trigger_ID);
- if (itr != mQuestAreaTriggerMap.end())
- return itr->second;
- return 0;
- }
- bool IsTavernAreaTrigger(uint32 Trigger_ID) const
- {
- return mTavernAreaTriggerSet.find(Trigger_ID) != mTavernAreaTriggerSet.end();
- }
-
- bool IsGameObjectForQuests(uint32 entry) const
- {
- return mGameObjectForQuestSet.find(entry) != mGameObjectForQuestSet.end();
- }
-
- GossipText const* GetGossipText(uint32 Text_ID) const;
-
- WorldSafeLocsEntry const *GetClosestGraveYard(float x, float y, float z, uint32 MapId, uint32 team);
- bool AddGraveYardLink(uint32 id, uint32 zone, uint32 team, bool inDB = true);
- void RemoveGraveYardLink(uint32 id, uint32 zone, uint32 team, bool inDB = false);
- void LoadGraveyardZones();
- GraveYardData const* FindGraveYardData(uint32 id, uint32 zone);
-
- AreaTrigger const* GetAreaTrigger(uint32 trigger) const
- {
- AreaTriggerMap::const_iterator itr = mAreaTriggers.find(trigger);
- if (itr != mAreaTriggers.end())
- return &itr->second;
- return NULL;
- }
-
- AccessRequirement const* GetAccessRequirement(uint32 requirement) const
- {
- AccessRequirementMap::const_iterator itr = mAccessRequirements.find(requirement);
- if (itr != mAccessRequirements.end())
- return &itr->second;
- return NULL;
- }
-
- AreaTrigger const* GetGoBackTrigger(uint32 Map) const;
- AreaTrigger const* GetMapEntranceTrigger(uint32 Map) const;
-
- uint32 GetAreaTriggerScriptId(uint32 trigger_id);
-
- ReputationOnKillEntry const* GetReputationOnKilEntry(uint32 id) const
- {
- RepOnKillMap::const_iterator itr = mRepOnKill.find(id);
- if (itr != mRepOnKill.end())
- return &itr->second;
- return NULL;
- }
-
- PointOfInterest const* GetPointOfInterest(uint32 id) const
- {
- PointOfInterestMap::const_iterator itr = mPointsOfInterest.find(id);
- if (itr != mPointsOfInterest.end())
- return &itr->second;
- return NULL;
- }
-
- QuestPOIVector const* GetQuestPOIVector(uint32 questId)
- {
- QuestPOIMap::const_iterator itr = mQuestPOIMap.find(questId);
- if (itr != mQuestPOIMap.end())
- return &itr->second;
- return NULL;
- }
-
- VehicleAccessoryList const* GetVehicleAccessoryList(uint32 uiEntry) const
- {
- VehicleAccessoryMap::const_iterator itr = m_VehicleAccessoryMap.find(uiEntry);
- if (itr != m_VehicleAccessoryMap.end())
- return &itr->second;
- return NULL;
- }
-
- void LoadGuilds();
- void LoadArenaTeams();
- void LoadGroups();
- void LoadQuests();
- void LoadQuestRelations()
- {
- sLog.outString("Loading GO Start Quest Data...");
- LoadGameobjectQuestRelations();
- sLog.outString("Loading GO End Quest Data...");
- LoadGameobjectInvolvedRelations();
- sLog.outString("Loading Creature Start Quest Data...");
- LoadCreatureQuestRelations();
- sLog.outString("Loading Creature End Quest Data...");
- LoadCreatureInvolvedRelations();
- }
- void LoadGameobjectQuestRelations();
- void LoadGameobjectInvolvedRelations();
- void LoadCreatureQuestRelations();
- void LoadCreatureInvolvedRelations();
-
- QuestRelations mGOQuestRelations;
- QuestRelations mGOQuestInvolvedRelations;
- QuestRelations mCreatureQuestRelations;
- QuestRelations mCreatureQuestInvolvedRelations;
-
- void LoadGameObjectScripts();
- void LoadQuestEndScripts();
- void LoadQuestStartScripts();
- void LoadEventScripts();
- void LoadSpellScripts();
- void LoadGossipScripts();
- void LoadWaypointScripts();
-
- void LoadTransportEvents();
-
- bool LoadTrinityStrings(DatabaseType& db, char const* table, int32 min_value, int32 max_value);
- bool LoadTrinityStrings() { return LoadTrinityStrings(WorldDatabase,"trinity_string",MIN_TRINITY_STRING_ID,MAX_TRINITY_STRING_ID); }
- void LoadDbScriptStrings();
- void LoadCreatureClassLevelStats();
- void LoadCreatureLocales();
- void LoadCreatureTemplates();
- void CheckCreatureTemplate(CreatureInfo const* cInfo);
- void LoadCreatures();
- void LoadCreatureLinkedRespawn();
- bool CheckCreatureLinkedRespawn(uint32 guid, uint32 linkedGuid) const;
- bool SetCreatureLinkedRespawn(uint32 guid, uint32 linkedGuid);
- void LoadCreatureRespawnTimes();
- void LoadCreatureAddons();
- void LoadCreatureModelInfo();
- void LoadEquipmentTemplates();
- void LoadGameObjectLocales();
- void LoadGameobjects();
- void LoadGameobjectRespawnTimes();
- void LoadItemPrototypes();
- void LoadItemLocales();
- void LoadQuestLocales();
- void LoadNpcTextLocales();
- void LoadPageTextLocales();
- void LoadGossipMenuItemsLocales();
- void LoadPointOfInterestLocales();
- void LoadInstanceTemplate();
- void LoadMailLevelRewards();
- void LoadVehicleAccessories();
-
- void LoadGossipText();
-
- void LoadAreaTriggerTeleports();
- void LoadAccessRequirements();
- void LoadQuestAreaTriggers();
- void LoadAreaTriggerScripts();
- void LoadTavernAreaTriggers();
- void LoadGameObjectForQuests();
-
- void LoadPageTexts();
-
- void LoadPlayerInfo();
- void LoadPetLevelInfo();
- void LoadExplorationBaseXP();
- void LoadPetNames();
- void LoadPetNumber();
- void LoadCorpses();
- void LoadFishingBaseSkillLevel();
-
- void LoadReputationOnKill();
- void LoadPointsOfInterest();
- void LoadQuestPOI();
-
- void LoadNPCSpellClickSpells();
-
- void LoadWeatherZoneChances();
- void LoadGameTele();
-
- void LoadNpcTextId();
-
- void LoadGossipMenu();
- void LoadGossipMenuItems();
-
- void LoadVendors();
- void LoadTrainerSpell();
- bool AddSpellToTrainer(uint32 entry, uint32 spell, Field *fields, std::set<uint32> *skip_trainers, std::set<uint32> *talentIds);
- int LoadReferenceTrainer(uint32 trainer, int32 spell, std::set<uint32> *skip_trainers, std::set<uint32> *talentIds);
- void LoadGMTickets();
-
- std::string GeneratePetName(uint32 entry);
- uint32 GetBaseXP(uint8 level);
- uint32 GetXPForLevel(uint8 level);
-
- int32 GetFishingBaseSkillLevel(uint32 entry) const
- {
- FishingBaseSkillMap::const_iterator itr = mFishingBaseForArea.find(entry);
- return itr != mFishingBaseForArea.end() ? itr->second : 0;
- }
-
- void ReturnOrDeleteOldMails(bool serverUp);
-
- CreatureBaseStats const* GetCreatureBaseStats(uint8 level, uint8 unitClass);
-
- void SetHighestGuids();
- uint32 GenerateLowGuid(HighGuid guidhigh);
- uint32 GenerateArenaTeamId();
- uint32 GenerateAuctionID();
- uint64 GenerateEquipmentSetGuid();
- uint32 GenerateGuildId();
- uint32 GenerateMailID();
- uint32 GeneratePetNumber();
-
- typedef std::multimap<int32, uint32> ExclusiveQuestGroups;
- ExclusiveQuestGroups mExclusiveQuestGroups;
-
- MailLevelReward const* GetMailLevelReward(uint32 level,uint32 raceMask)
- {
- MailLevelRewardMap::const_iterator map_itr = m_mailLevelRewardMap.find(level);
- if (map_itr == m_mailLevelRewardMap.end())
- return NULL;
-
- for (MailLevelRewardList::const_iterator set_itr = map_itr->second.begin(); set_itr != map_itr->second.end(); ++set_itr)
- if (set_itr->raceMask & raceMask)
- return &*set_itr;
-
- return NULL;
- }
-
- WeatherZoneChances const* GetWeatherChances(uint32 zone_id) const
- {
- WeatherZoneMap::const_iterator itr = mWeatherZoneMap.find(zone_id);
- if (itr != mWeatherZoneMap.end())
- return &itr->second;
- else
- return NULL;
- }
-
- CellObjectGuids const& GetCellObjectGuids(uint16 mapid, uint8 spawnMode, uint32 cell_id)
- {
- return mMapObjectGuids[MAKE_PAIR32(mapid,spawnMode)][cell_id];
- }
-
- CreatureData const* GetCreatureData(uint32 guid) const
- {
- CreatureDataMap::const_iterator itr = mCreatureDataMap.find(guid);
- if (itr == mCreatureDataMap.end()) return NULL;
- return &itr->second;
- }
- CreatureData& NewOrExistCreatureData(uint32 guid) { return mCreatureDataMap[guid]; }
- void DeleteCreatureData(uint32 guid);
- uint32 GetLinkedRespawnGuid(uint32 guid) const
- {
- CreatureLinkedRespawnMap::const_iterator itr = mCreatureLinkedRespawnMap.find(guid);
- if (itr == mCreatureLinkedRespawnMap.end()) return 0;
- return itr->second;
- }
- CreatureLocale const* GetCreatureLocale(uint32 entry) const
- {
- CreatureLocaleMap::const_iterator itr = mCreatureLocaleMap.find(entry);
- if (itr == mCreatureLocaleMap.end()) return NULL;
- return &itr->second;
- }
- GameObjectLocale const* GetGameObjectLocale(uint32 entry) const
- {
- GameObjectLocaleMap::const_iterator itr = mGameObjectLocaleMap.find(entry);
- if (itr == mGameObjectLocaleMap.end()) return NULL;
- return &itr->second;
- }
- ItemLocale const* GetItemLocale(uint32 entry) const
- {
- ItemLocaleMap::const_iterator itr = mItemLocaleMap.find(entry);
- if (itr == mItemLocaleMap.end()) return NULL;
- return &itr->second;
- }
- QuestLocale const* GetQuestLocale(uint32 entry) const
- {
- QuestLocaleMap::const_iterator itr = mQuestLocaleMap.find(entry);
- if (itr == mQuestLocaleMap.end()) return NULL;
- return &itr->second;
- }
- NpcTextLocale const* GetNpcTextLocale(uint32 entry) const
- {
- NpcTextLocaleMap::const_iterator itr = mNpcTextLocaleMap.find(entry);
- if (itr == mNpcTextLocaleMap.end()) return NULL;
- return &itr->second;
- }
- PageTextLocale const* GetPageTextLocale(uint32 entry) const
- {
- PageTextLocaleMap::const_iterator itr = mPageTextLocaleMap.find(entry);
- if (itr == mPageTextLocaleMap.end()) return NULL;
- return &itr->second;
- }
- GossipMenuItemsLocale const* GetGossipMenuItemsLocale(uint32 entry) const
- {
- GossipMenuItemsLocaleMap::const_iterator itr = mGossipMenuItemsLocaleMap.find(entry);
- if (itr == mGossipMenuItemsLocaleMap.end()) return NULL;
- return &itr->second;
- }
- PointOfInterestLocale const* GetPointOfInterestLocale(uint32 poi_id) const
- {
- PointOfInterestLocaleMap::const_iterator itr = mPointOfInterestLocaleMap.find(poi_id);
- if (itr == mPointOfInterestLocaleMap.end()) return NULL;
- return &itr->second;
- }
-
- bool IsGoOfSpecificEntrySpawned(uint32 entry) const
- {
- for (GameObjectDataMap::const_iterator it = mGameObjectDataMap.begin(); it != mGameObjectDataMap.end(); ++it)
- if (it->second.id == entry)
- return true;
-
- return false;
- }
-
- GameObjectData const* GetGOData(uint32 guid) const
- {
- GameObjectDataMap::const_iterator itr = mGameObjectDataMap.find(guid);
- if (itr == mGameObjectDataMap.end()) return NULL;
- return &itr->second;
- }
- GameObjectData& NewGOData(uint32 guid) { return mGameObjectDataMap[guid]; }
- void DeleteGOData(uint32 guid);
-
- TrinityStringLocale const* GetTrinityStringLocale(int32 entry) const
- {
- TrinityStringLocaleMap::const_iterator itr = mTrinityStringLocaleMap.find(entry);
- if (itr == mTrinityStringLocaleMap.end()) return NULL;
- return &itr->second;
- }
- const char *GetTrinityString(int32 entry, int locale_idx) const;
- const char *GetTrinityStringForDBCLocale(int32 entry) const { return GetTrinityString(entry,DBCLocaleIndex); }
- int32 GetDBCLocaleIndex() const { return DBCLocaleIndex; }
- void SetDBCLocaleIndex(uint32 lang) { DBCLocaleIndex = GetIndexForLocale(LocaleConstant(lang)); }
-
- void AddCorpseCellData(uint32 mapid, uint32 cellid, uint32 player_guid, uint32 instance);
- void DeleteCorpseCellData(uint32 mapid, uint32 cellid, uint32 player_guid);
-
- time_t GetCreatureRespawnTime(uint32 loguid, uint32 instance) { return mCreatureRespawnTimes[MAKE_PAIR64(loguid,instance)]; }
- void SaveCreatureRespawnTime(uint32 loguid, uint32 instance, time_t t);
- time_t GetGORespawnTime(uint32 loguid, uint32 instance) { return mGORespawnTimes[MAKE_PAIR64(loguid,instance)]; }
- void SaveGORespawnTime(uint32 loguid, uint32 instance, time_t t);
- void DeleteRespawnTimeForInstance(uint32 instance);
-
- // grid objects
- void AddCreatureToGrid(uint32 guid, CreatureData const* data);
- void RemoveCreatureFromGrid(uint32 guid, CreatureData const* data);
- void AddGameobjectToGrid(uint32 guid, GameObjectData const* data);
- void RemoveGameobjectFromGrid(uint32 guid, GameObjectData const* data);
- uint32 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);
- uint32 AddCreData(uint32 entry, uint32 team, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay = 0);
- bool MoveCreData(uint32 guid, uint32 map, Position pos);
-
- // reserved names
- void LoadReservedPlayersNames();
- bool IsReservedName(const std::string& name) const;
-
- // name with valid structure and symbols
- static uint8 CheckPlayerName(const std::string& name, bool create = false);
- static PetNameInvalidReason CheckPetName(const std::string& name);
- static bool IsValidCharterName(const std::string& name);
-
- static bool CheckDeclinedNames(std::wstring mainpart, DeclinedName const& names);
-
- void LoadSpellDisabledEntrys();
- bool IsPlayerSpellDisabled(uint32 spellid) { return (m_DisabledPlayerSpells.count(spellid) != 0); }
- bool IsCreatureSpellDisabled(uint32 spellid) { return (m_DisabledCreatureSpells.count(spellid) != 0); }
- bool IsPetSpellDisabled(uint32 spellid) { return (m_DisabledPetSpells.count(spellid) != 0); }
-
- int GetIndexForLocale(LocaleConstant loc);
- LocaleConstant GetLocaleForIndex(int i);
-
- GameTele const* GetGameTele(uint32 id) const
- {
- GameTeleMap::const_iterator itr = m_GameTeleMap.find(id);
- if (itr == m_GameTeleMap.end()) return NULL;
- return &itr->second;
- }
- GameTele const* GetGameTele(const std::string& name) const;
- GameTeleMap const& GetGameTeleMap() const { return m_GameTeleMap; }
- bool AddGameTele(GameTele& data);
- bool DeleteGameTele(const std::string& name);
-
- uint32 GetNpcGossip(uint32 entry) const
- {
- CacheNpcTextIdMap::const_iterator iter = m_mCacheNpcTextIdMap.find(entry);
- if (iter == m_mCacheNpcTextIdMap.end())
- return 0;
-
- return iter->second;
- }
-
- TrainerSpellData const* GetNpcTrainerSpells(uint32 entry) const
- {
- CacheTrainerSpellMap::const_iterator iter = m_mCacheTrainerSpellMap.find(entry);
- if (iter == m_mCacheTrainerSpellMap.end())
- return NULL;
-
- return &iter->second;
- }
-
- VendorItemData const* GetNpcVendorItemList(uint32 entry) const
- {
- CacheVendorItemMap::const_iterator iter = m_mCacheVendorItemMap.find(entry);
- if (iter == m_mCacheVendorItemMap.end())
- return NULL;
-
- return &iter->second;
- }
- void AddVendorItem(uint32 entry,uint32 item, int32 maxcount, uint32 incrtime, uint32 ExtendedCost, bool savetodb = true); // for event
- bool RemoveVendorItem(uint32 entry,uint32 item, bool savetodb = true); // for event
- bool IsVendorItemValid(uint32 vendor_entry, uint32 item, int32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* pl = NULL, std::set<uint32>* skip_vendors = NULL, uint32 ORnpcflag = 0) const;
-
- void LoadScriptNames();
- ScriptNameMap &GetScriptNames() { return m_scriptNames; }
- const char * GetScriptName(uint32 id) { return id < m_scriptNames.size() ? m_scriptNames[id].c_str() : ""; }
- uint32 GetScriptId(const char *name);
-
- int GetOrNewIndexForLocale(LocaleConstant loc);
-
- SpellClickInfoMapBounds GetSpellClickInfoMapBounds(uint32 creature_id) const
- {
- return SpellClickInfoMapBounds(mSpellClickInfoMap.lower_bound(creature_id),mSpellClickInfoMap.upper_bound(creature_id));
- }
-
- GM_Ticket *GetGMTicket(uint64 ticketGuid)
- {
- for (GmTicketList::const_iterator i = m_GMTicketList.begin(); i != m_GMTicketList.end(); ++i)
- if ((*i) && (*i)->guid == ticketGuid)
- return (*i);
-
- return NULL;
- }
- GM_Ticket *GetGMTicketByPlayer(uint64 playerGuid)
- {
- for (GmTicketList::const_iterator i = m_GMTicketList.begin(); i != m_GMTicketList.end(); ++i)
- if ((*i) && (*i)->playerGuid == playerGuid && (*i)->closed == 0)
- return (*i);
-
- return NULL;
- }
-
- GossipMenusMapBounds GetGossipMenusMapBounds(uint32 uiMenuId) const
- {
- return GossipMenusMapBounds(m_mGossipMenusMap.lower_bound(uiMenuId),m_mGossipMenusMap.upper_bound(uiMenuId));
- }
-
- GossipMenusMapBoundsNonConst GetGossipMenusMapBoundsNonConst(uint32 uiMenuId)
- {
- return GossipMenusMapBoundsNonConst(m_mGossipMenusMap.lower_bound(uiMenuId),m_mGossipMenusMap.upper_bound(uiMenuId));
- }
-
- GossipMenuItemsMapBounds GetGossipMenuItemsMapBounds(uint32 uiMenuId) const
- {
- return GossipMenuItemsMapBounds(m_mGossipMenuItemsMap.lower_bound(uiMenuId),m_mGossipMenuItemsMap.upper_bound(uiMenuId));
- }
- GossipMenuItemsMapBoundsNonConst GetGossipMenuItemsMapBoundsNonConst(uint32 uiMenuId)
- {
- return GossipMenuItemsMapBoundsNonConst(m_mGossipMenuItemsMap.lower_bound(uiMenuId),m_mGossipMenuItemsMap.upper_bound(uiMenuId));
- }
-
- void AddOrUpdateGMTicket(GM_Ticket &ticket, bool create = false);
- void _AddOrUpdateGMTicket(GM_Ticket &ticket);
- void RemoveGMTicket(uint64 ticketGuid, int64 source = -1, bool permanently = false);
- void RemoveGMTicket(GM_Ticket *ticket, int64 source = -1, bool permanently = false);
- GmTicketList m_GMTicketList;
- uint64 GenerateGMTicketId();
-
- // for wintergrasp only
- GraveYardMap mGraveYardMap;
- protected:
-
- // first free id for selected id type
- uint32 m_arenaTeamId;
- uint32 m_auctionid;
- uint64 m_equipmentSetGuid;
- uint32 m_guildId;
- uint32 m_ItemTextId;
- uint32 m_mailid;
- uint32 m_hiPetNumber;
- uint64 m_GMticketid;
-
- // first free low guid for seelcted guid type
- uint32 m_hiCharGuid;
- uint32 m_hiCreatureGuid;
- uint32 m_hiPetGuid;
- uint32 m_hiVehicleGuid;
- uint32 m_hiItemGuid;
- uint32 m_hiGoGuid;
- uint32 m_hiDoGuid;
- uint32 m_hiCorpseGuid;
- uint32 m_hiGroupGuid;
-
- QuestMap mQuestTemplates;
-
- typedef UNORDERED_MAP<uint32, GossipText> GossipTextMap;
- typedef UNORDERED_MAP<uint32, uint32> QuestAreaTriggerMap;
- typedef std::set<uint32> TavernAreaTriggerSet;
- typedef std::set<uint32> GameObjectForQuestSet;
-
- GroupSet mGroupSet;
- GuildMap mGuildMap;
- ArenaTeamMap mArenaTeamMap;
-
- QuestAreaTriggerMap mQuestAreaTriggerMap;
- TavernAreaTriggerSet mTavernAreaTriggerSet;
- GameObjectForQuestSet mGameObjectForQuestSet;
- GossipTextMap mGossipText;
- AreaTriggerMap mAreaTriggers;
- AreaTriggerScriptMap mAreaTriggerScripts;
- AccessRequirementMap mAccessRequirements;
-
- RepOnKillMap mRepOnKill;
-
- GossipMenusMap m_mGossipMenusMap;
- GossipMenuItemsMap m_mGossipMenuItemsMap;
- PointOfInterestMap mPointsOfInterest;
-
- QuestPOIMap mQuestPOIMap;
-
- WeatherZoneMap mWeatherZoneMap;
-
- //character reserved names
- typedef std::set<std::wstring> ReservedNamesMap;
- ReservedNamesMap m_ReservedNames;
-
- std::set<uint32> m_DisabledPlayerSpells;
- std::set<uint32> m_DisabledCreatureSpells;
- std::set<uint32> m_DisabledPetSpells;
-
-// GraveYardMap mGraveYardMap;
-
- GameTeleMap m_GameTeleMap;
-
- ScriptNameMap m_scriptNames;
-
- SpellClickInfoMap mSpellClickInfoMap;
-
- ItemRequiredTargetMap m_ItemRequiredTarget;
-
- VehicleAccessoryMap m_VehicleAccessoryMap;
-
- typedef std::vector<LocaleConstant> LocalForIndex;
- LocalForIndex m_LocalForIndex;
-
- int DBCLocaleIndex;
-
- private:
- void LoadScripts(ScriptMapMap& scripts, char const* tablename);
- void CheckScripts(ScriptMapMap const& scripts,std::set<int32>& ids);
- void LoadCreatureAddons(SQLStorage& creatureaddons, char const* entryName, char const* comment);
- void ConvertCreatureAddonAuras(CreatureDataAddon* addon, char const* table, char const* guidEntryStr);
- void LoadQuestRelationsHelper(QuestRelations& map,char const* table);
-
- MailLevelRewardMap m_mailLevelRewardMap;
-
- CreatureBaseStatsMap m_creatureBaseStatsMap;
-
- typedef std::map<uint32,PetLevelInfo*> PetLevelInfoMap;
- // PetLevelInfoMap[creature_id][level]
- PetLevelInfoMap petInfo; // [creature_id][level]
-
- PlayerClassInfo playerClassInfo[MAX_CLASSES];
-
- void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const;
- PlayerInfo playerInfo[MAX_RACES][MAX_CLASSES];
-
- typedef std::vector<uint32> PlayerXPperLevel; // [level]
- PlayerXPperLevel mPlayerXPperLevel;
-
- typedef std::map<uint32,uint32> BaseXPMap; // [area level][base xp]
- BaseXPMap mBaseXPTable;
-
- typedef std::map<uint32,int32> FishingBaseSkillMap; // [areaId][base skill level]
- FishingBaseSkillMap mFishingBaseForArea;
-
- typedef std::map<uint32,std::vector<std::string> > HalfNameMap;
- HalfNameMap PetHalfName0;
- HalfNameMap PetHalfName1;
-
- MapObjectGuids mMapObjectGuids;
- CreatureDataMap mCreatureDataMap;
- CreatureLinkedRespawnMap mCreatureLinkedRespawnMap;
- CreatureLocaleMap mCreatureLocaleMap;
- GameObjectDataMap mGameObjectDataMap;
- GameObjectLocaleMap mGameObjectLocaleMap;
- ItemLocaleMap mItemLocaleMap;
- QuestLocaleMap mQuestLocaleMap;
- NpcTextLocaleMap mNpcTextLocaleMap;
- PageTextLocaleMap mPageTextLocaleMap;
- TrinityStringLocaleMap mTrinityStringLocaleMap;
- GossipMenuItemsLocaleMap mGossipMenuItemsLocaleMap;
- PointOfInterestLocaleMap mPointOfInterestLocaleMap;
- RespawnTimes mCreatureRespawnTimes;
- RespawnTimes mGORespawnTimes;
-
- CacheNpcTextIdMap m_mCacheNpcTextIdMap;
- CacheVendorItemMap m_mCacheVendorItemMap;
- CacheTrainerSpellMap m_mCacheTrainerSpellMap;
-
- std::set<uint32> difficultyEntries[MAX_DIFFICULTY - 1]; // already loaded difficulty 1 value in creatures, used in CheckCreatureTemplate
- std::set<uint32> hasDifficultyEntries[MAX_DIFFICULTY - 1]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate
-
-};
-
-#define objmgr Trinity::Singleton<ObjectMgr>::Instance()
-
-// scripting access functions
- bool LoadTrinityStrings(DatabaseType& db, char const* table,int32 start_value = MAX_CREATURE_AI_TEXT_STRING_ID, int32 end_value = std::numeric_limits<int32>::min());
- uint32 GetAreaTriggerScriptId(uint32 trigger_id);
- uint32 GetScriptId(const char *name);
- ObjectMgr::ScriptNameMap& GetScriptNames();
- GameObjectInfo const *GetGameObjectInfo(uint32 id);
- CreatureInfo const *GetCreatureInfo(uint32 id);
- CreatureInfo const* GetCreatureTemplateStore(uint32 entry);
- Quest const* GetQuestTemplateStore(uint32 entry);
-
-#endif