TrinityCore
Loading...
Searching...
No Matches
InstanceMap Class Reference

#include <Map.h>

Public Member Functions

 InstanceMap (uint32 id, time_t, uint32 InstanceId, Difficulty SpawnMode, TeamId InstanceTeam, InstanceLock *instanceLock)
 
 ~InstanceMap ()
 
bool AddPlayerToMap (Player *player, bool initPlayer=true) override
 
void RemovePlayerFromMap (Player *, bool) override
 
void Update (uint32) override
 
void CreateInstanceData ()
 
InstanceResetResult Reset (InstanceResetMethod method)
 
uint32 GetScriptId () const
 
std::string const & GetScriptName () const
 
InstanceScriptGetInstanceScript ()
 
InstanceScript const * GetInstanceScript () const
 
InstanceScenarioGetInstanceScenario ()
 
InstanceScenario const * GetInstanceScenario () const
 
void SetInstanceScenario (InstanceScenario *scenario)
 
InstanceLock const * GetInstanceLock () const
 
void UpdateInstanceLock (UpdateBossStateSaveDataEvent const &updateSaveDataEvent)
 
void UpdateInstanceLock (UpdateAdditionalSaveDataEvent const &updateSaveDataEvent)
 
void CreateInstanceLockForPlayer (Player *player)
 
TransferAbortParams CannotEnter (Player *player) override
 
uint32 GetMaxPlayers () const
 
TeamId GetTeamIdInInstance () const
 
Team GetTeamInInstance () const
 
virtual void InitVisibilityDistance () override
 
GroupGetOwningGroup () const
 
void TrySetOwningGroup (Group *group)
 
std::string GetDebugInfo () const override
 
- Public Member Functions inherited from Map
 Map (uint32 id, time_t, uint32 InstanceId, Difficulty SpawnMode)
 
virtual ~Map ()
 
MapEntry const * GetEntry () const
 
bool CanUnload (uint32 diff)
 
virtual bool AddPlayerToMap (Player *player, bool initPlayer=true)
 
virtual void RemovePlayerFromMap (Player *, bool)
 
template<class T >
bool AddToMap (T *)
 
template<class T >
void RemoveFromMap (T *, bool)
 
void VisitNearbyCellsOf (WorldObject *obj, TypeContainerVisitor< Trinity::ObjectUpdater, GridTypeMapContainer > &gridVisitor, TypeContainerVisitor< Trinity::ObjectUpdater, WorldTypeMapContainer > &worldVisitor)
 
virtual void Update (uint32)
 
float GetVisibilityRange () const
 
virtual void InitVisibilityDistance ()
 
void PlayerRelocation (Player *, float x, float y, float z, float orientation)
 
void CreatureRelocation (Creature *creature, float x, float y, float z, float ang, bool respawnRelocationOnFail=true)
 
void GameObjectRelocation (GameObject *go, float x, float y, float z, float orientation, bool respawnRelocationOnFail=true)
 
void DynamicObjectRelocation (DynamicObject *go, float x, float y, float z, float orientation)
 
void AreaTriggerRelocation (AreaTrigger *at, float x, float y, float z, float orientation)
 
template<class T , class CONTAINER >
void Visit (Cell const &cell, TypeContainerVisitor< T, CONTAINER > &visitor)
 
bool IsRemovalGrid (float x, float y) const
 
bool IsRemovalGrid (Position const &pos) const
 
bool IsGridLoaded (uint32 gridId) const
 
bool IsGridLoaded (float x, float y) const
 
bool IsGridLoaded (Position const &pos) const
 
bool GetUnloadLock (GridCoord const &p) const
 
void SetUnloadLock (GridCoord const &p, bool on)
 
void LoadGrid (float x, float y)
 
void LoadGridForActiveObject (float x, float y, WorldObject const *object)
 
void LoadAllCells ()
 
bool UnloadGrid (NGridType &ngrid, bool pForce)
 
void GridMarkNoUnload (uint32 x, uint32 y)
 
void GridUnmarkNoUnload (uint32 x, uint32 y)
 
void UnloadAll ()
 
void ResetGridExpiry (NGridType &grid, float factor=1) const
 
time_t GetGridExpiry () const
 
TerrainInfoGetTerrain () const
 
void GetFullTerrainStatusForPosition (PhaseShift const &phaseShift, float x, float y, float z, PositionFullTerrainStatus &data, map_liquidHeaderTypeFlags reqLiquidType=map_liquidHeaderTypeFlags::AllLiquids, float collisionHeight=2.03128f)
 
ZLiquidStatus GetLiquidStatus (PhaseShift const &phaseShift, float x, float y, float z, map_liquidHeaderTypeFlags ReqLiquidType, LiquidData *data=nullptr, float collisionHeight=2.03128f)
 
bool GetAreaInfo (PhaseShift const &phaseShift, float x, float y, float z, uint32 &mogpflags, int32 &adtId, int32 &rootId, int32 &groupId)
 
uint32 GetAreaId (PhaseShift const &phaseShift, float x, float y, float z)
 
uint32 GetAreaId (PhaseShift const &phaseShift, Position const &pos)
 
uint32 GetZoneId (PhaseShift const &phaseShift, float x, float y, float z)
 
uint32 GetZoneId (PhaseShift const &phaseShift, Position const &pos)
 
void GetZoneAndAreaId (PhaseShift const &phaseShift, uint32 &zoneid, uint32 &areaid, float x, float y, float z)
 
void GetZoneAndAreaId (PhaseShift const &phaseShift, uint32 &zoneid, uint32 &areaid, Position const &pos)
 
float GetMinHeight (PhaseShift const &phaseShift, float x, float y)
 
float GetGridHeight (PhaseShift const &phaseShift, float x, float y)
 
float GetStaticHeight (PhaseShift const &phaseShift, float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
 
float GetStaticHeight (PhaseShift const &phaseShift, Position const &pos, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
 
float GetHeight (PhaseShift const &phaseShift, float x, float y, float z, bool vmap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
 
float GetHeight (PhaseShift const &phaseShift, Position const &pos, bool vmap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
 
float GetWaterLevel (PhaseShift const &phaseShift, float x, float y)
 
bool IsInWater (PhaseShift const &phaseShift, float x, float y, float z, LiquidData *data=nullptr)
 
bool IsUnderWater (PhaseShift const &phaseShift, float x, float y, float z)
 
float GetWaterOrGroundLevel (PhaseShift const &phaseShift, float x, float y, float z, float *ground=nullptr, bool swim=false, float collisionHeight=2.03128f)
 
void MoveAllCreaturesInMoveList ()
 
void MoveAllGameObjectsInMoveList ()
 
void MoveAllDynamicObjectsInMoveList ()
 
void MoveAllAreaTriggersInMoveList ()
 
void RemoveAllObjectsInRemoveList ()
 
virtual void RemoveAllPlayers ()
 
bool CreatureRespawnRelocation (Creature *c, bool diffGridOnly)
 
bool GameObjectRespawnRelocation (GameObject *go, bool diffGridOnly)
 
uint32 GetInstanceId () const
 
virtual TransferAbortParams CannotEnter (Player *)
 
char const * GetMapName () const
 
Difficulty GetDifficultyID () const
 
MapDifficultyEntry const * GetMapDifficulty () const
 
ItemContext GetDifficultyLootItemContext () const
 
uint32 GetId () const
 
bool Instanceable () const
 
bool IsDungeon () const
 
bool IsNonRaidDungeon () const
 
bool IsRaid () const
 
bool IsHeroic () const
 
bool Is25ManRaid () const
 
bool IsBattleground () const
 
bool IsBattleArena () const
 
bool IsBattlegroundOrArena () const
 
bool IsScenario () const
 
bool IsGarrison () const
 
bool GetEntrancePos (int32 &mapid, float &x, float &y)
 
void AddObjectToRemoveList (WorldObject *obj)
 
void AddObjectToSwitchList (WorldObject *obj, bool on)
 
virtual void DelayedUpdate (uint32 diff)
 
void resetMarkedCells ()
 
bool isCellMarked (uint32 pCellId)
 
void markCell (uint32 pCellId)
 
bool HavePlayers () const
 
uint32 GetPlayersCountExceptGMs () const
 
bool ActiveObjectsNearGrid (NGridType const &ngrid) const
 
void AddWorldObject (WorldObject *obj)
 
void RemoveWorldObject (WorldObject *obj)
 
void SendToPlayers (WorldPacket const *data) const
 
PlayerList const & GetPlayers () const
 
template<typename T >
void DoOnPlayers (T &&fn)
 
void ScriptsStart (std::map< uint32, std::multimap< uint32, ScriptInfo > > const &scripts, uint32 id, Object *source, Object *target)
 Put scripts in the execution queue. More...
 
void ScriptCommandStart (ScriptInfo const &script, uint32 delay, Object *source, Object *target)
 
void AddToActive (WorldObject *obj)
 
void RemoveFromActive (WorldObject *obj)
 
template<class T >
void SwitchGridContainers (T *obj, bool on)
 
void UpdateIteratorBack (Player *player)
 
TempSummonSummonCreature (uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
 
void SummonCreatureGroup (uint8 group, std::list< TempSummon * > *list=nullptr)
 
AreaTriggerGetAreaTrigger (ObjectGuid const &guid)
 
SceneObjectGetSceneObject (ObjectGuid const &guid)
 
ConversationGetConversation (ObjectGuid const &guid)
 
PlayerGetPlayer (ObjectGuid const &guid)
 
CorpseGetCorpse (ObjectGuid const &guid)
 
CreatureGetCreature (ObjectGuid const &guid)
 
DynamicObjectGetDynamicObject (ObjectGuid const &guid)
 
GameObjectGetGameObject (ObjectGuid const &guid)
 
PetGetPet (ObjectGuid const &guid)
 
TransportGetTransport (ObjectGuid const &guid)
 
CreatureGetCreatureBySpawnId (ObjectGuid::LowType spawnId) const
 
GameObjectGetGameObjectBySpawnId (ObjectGuid::LowType spawnId) const
 
AreaTriggerGetAreaTriggerBySpawnId (ObjectGuid::LowType spawnId) const
 
WorldObjectGetWorldObjectBySpawnId (SpawnObjectType type, ObjectGuid::LowType spawnId) const
 
MapStoredObjectTypesContainerGetObjectsStore ()
 
CreatureBySpawnIdContainerGetCreatureBySpawnIdStore ()
 
CreatureBySpawnIdContainer const & GetCreatureBySpawnIdStore () const
 
GameObjectBySpawnIdContainerGetGameObjectBySpawnIdStore ()
 
GameObjectBySpawnIdContainer const & GetGameObjectBySpawnIdStore () const
 
AreaTriggerBySpawnIdContainerGetAreaTriggerBySpawnIdStore ()
 
AreaTriggerBySpawnIdContainer const & GetAreaTriggerBySpawnIdStore () const
 
std::unordered_set< Corpse * > const * GetCorpsesInCell (uint32 cellId) const
 
CorpseGetCorpseByPlayer (ObjectGuid const &ownerGuid) const
 
InstanceMapToInstanceMap ()
 
InstanceMap const * ToInstanceMap () const
 
BattlegroundMapToBattlegroundMap ()
 
BattlegroundMap const * ToBattlegroundMap () const
 
bool isInLineOfSight (PhaseShift const &phaseShift, float x1, float y1, float z1, float x2, float y2, float z2, LineOfSightChecks checks, VMAP::ModelIgnoreFlags ignoreFlags) const
 
void Balance ()
 
void RemoveGameObjectModel (GameObjectModel const &model)
 
void InsertGameObjectModel (GameObjectModel const &model)
 
bool ContainsGameObjectModel (GameObjectModel const &model) const
 
float GetGameObjectFloor (PhaseShift const &phaseShift, float x, float y, float z, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
 
bool getObjectHitPos (PhaseShift const &phaseShift, float x1, float y1, float z1, float x2, float y2, float z2, float &rx, float &ry, float &rz, float modifyDist)
 
virtual ObjectGuid::LowType GetOwnerGuildId (uint32=TEAM_OTHER) const
 
time_t GetLinkedRespawnTime (ObjectGuid guid) const
 
time_t GetRespawnTime (SpawnObjectType type, ObjectGuid::LowType spawnId) const
 
time_t GetCreatureRespawnTime (ObjectGuid::LowType spawnId) const
 
time_t GetGORespawnTime (ObjectGuid::LowType spawnId) const
 
void UpdatePlayerZoneStats (uint32 oldZone, uint32 newZone)
 
void SaveRespawnTime (SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 entry, time_t respawnTime, uint32 gridId, CharacterDatabaseTransaction dbTrans=nullptr, bool startup=false)
 
void SaveRespawnInfoDB (RespawnInfo const &info, CharacterDatabaseTransaction dbTrans=nullptr)
 
void LoadRespawnTimes ()
 
void DeleteRespawnTimes ()
 
void DeleteRespawnTimesInDB ()
 
void LoadCorpseData ()
 
void DeleteCorpseData ()
 
void AddCorpse (Corpse *corpse)
 
void RemoveCorpse (Corpse *corpse)
 
CorpseConvertCorpseToBones (ObjectGuid const &ownerGuid, bool insignia=false)
 
void RemoveOldCorpses ()
 
void SendInitTransports (Player *player)
 
void SendRemoveTransports (Player *player)
 
void SendUpdateTransportVisibility (Player *player)
 
void SendZoneDynamicInfo (uint32 zoneId, Player *player) const
 
void SendZoneWeather (uint32 zoneId, Player *player) const
 
void SendZoneWeather (ZoneDynamicInfo const &zoneDynamicInfo, Player *player) const
 
void SetZoneMusic (uint32 zoneId, uint32 musicId)
 
WeatherGetOrGenerateZoneDefaultWeather (uint32 zoneId)
 
WeatherState GetZoneWeather (uint32 zoneId) const
 
void SetZoneWeather (uint32 zoneId, WeatherState weatherId, float intensity)
 
void SetZoneOverrideLight (uint32 zoneId, uint32 areaLightId, uint32 overrideLightId, Milliseconds transitionTime)
 
void UpdateAreaDependentAuras ()
 
template<HighGuid high>
ObjectGuid::LowType GenerateLowGuid ()
 
template<HighGuid high>
ObjectGuid::LowType GetMaxLowGuid ()
 
void AddUpdateObject (Object *obj)
 
void RemoveUpdateObject (Object *obj)
 
size_t GetActiveNonPlayersCount () const
 
virtual std::string GetDebugInfo () const
 
void ProcessRespawns ()
 
void ApplyDynamicModeRespawnScaling (WorldObject const *obj, ObjectGuid::LowType spawnId, uint32 &respawnDelay, uint32 mode) const
 
void GetRespawnInfo (std::vector< RespawnInfo const * > &respawnData, SpawnObjectTypeMask types) const
 
void Respawn (SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans=nullptr)
 
void RemoveRespawnTime (SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans=nullptr, bool alwaysDeleteFromDB=false)
 
size_t DespawnAll (SpawnObjectType type, ObjectGuid::LowType spawnId)
 
bool ShouldBeSpawnedOnGridLoad (SpawnObjectType type, ObjectGuid::LowType spawnId) const
 
template<typename T >
bool ShouldBeSpawnedOnGridLoad (ObjectGuid::LowType spawnId) const
 
SpawnGroupTemplateData const * GetSpawnGroupData (uint32 groupId) const
 
bool IsSpawnGroupActive (uint32 groupId) const
 
bool SpawnGroupSpawn (uint32 groupId, bool ignoreRespawn=false, bool force=false, std::vector< WorldObject * > *spawnedObjects=nullptr)
 
bool SpawnGroupDespawn (uint32 groupId, bool deleteRespawnTimes=false, size_t *count=nullptr)
 
void SetSpawnGroupInactive (uint32 groupId)
 
SpawnedPoolDataGetPoolData ()
 
SpawnedPoolData const & GetPoolData () const
 
void AddFarSpellCallback (FarSpellCallback &&callback)
 
void UpdateSpawnGroupConditions ()
 
MultiPersonalPhaseTrackerGetMultiPersonalPhaseTracker ()
 
void UpdatePersonalPhasesForPlayer (Player const *player)
 
int32 GetWorldStateValue (int32 worldStateId) const
 
void SetWorldStateValue (int32 worldStateId, int32 value, bool hidden)
 
WorldStateValueContainer const & GetWorldStateValues () const
 
template<>
void AddToGrid (Creature *obj, Cell const &cell)
 
template<>
void AddToGrid (GameObject *obj, Cell const &cell)
 
template<>
void AddToGrid (DynamicObject *obj, Cell const &cell)
 
template<>
void AddToGrid (AreaTrigger *obj, Cell const &cell)
 
template<>
void AddToGrid (Corpse *obj, Cell const &cell)
 
template<>
void SwitchGridContainers (Creature *obj, bool on)
 
template<>
void DeleteFromWorld (Player *player)
 
template<>
void InitializeObject (Creature *obj)
 
template<>
void InitializeObject (GameObject *obj)
 
template<>
bool AddToMap (Transport *obj)
 
template<>
void RemoveFromMap (Transport *obj, bool remove)
 
- Public Member Functions inherited from GridRefManager< NGridType >
GridReference< NGridType > * getFirst ()
 
GridReference< NGridType > * getLast ()
 
iterator begin ()
 
iterator end ()
 
- Public Member Functions inherited from RefManager< TO, FROM >
 RefManager ()
 
Reference< TO, FROM > * getFirst ()
 
Reference< TO, FROM > const * getFirst () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
virtual ~RefManager ()
 
void clearReferences ()
 
- Public Member Functions inherited from LinkedListHead
 LinkedListHead ()
 
bool isEmpty () const
 
LinkedListElementgetFirst ()
 
LinkedListElement const * getFirst () const
 
LinkedListElementgetLast ()
 
LinkedListElement const * getLast () const
 
void insertFirst (LinkedListElement *pElem)
 
void insertLast (LinkedListElement *pElem)
 
uint32 getSize () const
 
void incSize ()
 
void decSize ()
 

Private Attributes

Optional< SystemTimePointi_instanceExpireEvent
 
InstanceScripti_data
 
uint32 i_script_id
 
InstanceScenarioi_scenario
 
InstanceLocki_instanceLock
 
GroupInstanceReference i_owningGroupRef
 

Additional Inherited Members

- Public Types inherited from Map
typedef MapRefManager PlayerList
 
typedef std::unordered_multimap< ObjectGuid::LowType, Creature * > CreatureBySpawnIdContainer
 
typedef std::unordered_multimap< ObjectGuid::LowType, GameObject * > GameObjectBySpawnIdContainer
 
typedef std::unordered_multimap< ObjectGuid::LowType, AreaTrigger * > AreaTriggerBySpawnIdContainer
 
typedef std::function< void(Map *)> FarSpellCallback
 
- Public Types inherited from GridRefManager< NGridType >
typedef LinkedListHead::Iterator< GridReference< NGridType > > iterator
 
- Public Types inherited from RefManager< TO, FROM >
typedef LinkedListHead::Iterator< Reference< TO, FROM > > iterator
 
typedef LinkedListHead::Iterator< Reference< TO, FROM > const > const_iterator
 
- Public Types inherited from LinkedListHead
typedef Iterator< LinkedListElementiterator
 
- Static Public Member Functions inherited from Map
static void InitStateMachine ()
 
static void DeleteStateMachine ()
 
template<typename T >
static bool CheckGridIntegrity (T *object, bool moved, char const *objType)
 
static TransferAbortParams PlayerCannotEnter (uint32 mapid, Player *player)
 
- Public Attributes inherited from Map
std::unordered_map< ObjectGuid::LowType, CreatureGroup * > CreatureGroupHolder
 
- Protected Types inherited from Map
typedef std::set< WorldObject * > ActiveNonPlayers
 
typedef std::set< Transport * > TransportsContainer
 
- Protected Member Functions inherited from Map
virtual void LoadGridObjects (NGridType *grid, Cell const &cell)
 
- Protected Member Functions inherited from LinkedListHead
 ~LinkedListHead ()
 
- Protected Attributes inherited from Map
MapEntry const * i_mapEntry
 
Difficulty i_spawnMode
 
uint32 i_InstanceId
 
uint32 m_unloadTimer
 
float m_VisibleDistance
 
DynamicMapTree _dynamicTree
 
MapRefManager m_mapRefManager
 
MapRefManager::iterator m_mapRefIter
 
int32 m_VisibilityNotifyPeriod
 
ActiveNonPlayers m_activeNonPlayers
 
ActiveNonPlayers::iterator m_activeNonPlayersIter
 
TransportsContainer _transports
 
TransportsContainer::iterator _transportsUpdateIter
 

Constructor & Destructor Documentation

◆ InstanceMap()

InstanceMap::InstanceMap ( uint32  id,
time_t  expiry,
uint32  InstanceId,
Difficulty  SpawnMode,
TeamId  InstanceTeam,
InstanceLock instanceLock 
)
2779 : Map(id, expiry, InstanceId, SpawnMode),
2780 i_data(nullptr), i_script_id(0), i_scenario(nullptr), i_instanceLock(instanceLock)
2781{
2782 //lets initialize visibility distance for dungeons
2784
2785 // the timer is started by default, and stopped when the first player joins
2786 // this make sure it gets unloaded if for some reason no player joins
2788
2789 sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, InstanceTeam == TEAM_ALLIANCE, false, this);
2790 sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_HORDE, InstanceTeam == TEAM_HORDE, false, this);
2791
2792 if (i_instanceLock)
2793 {
2794 i_instanceLock->SetInUse(true);
2795 i_instanceExpireEvent = i_instanceLock->GetExpiryTime(); // ignore extension state for reset event (will ask players to accept extended save on expiration)
2796 }
2797}
uint32_t uint32
Definition: Define.h:143
#define MIN_UNLOAD_DELAY
Definition: Map.h:150
@ TEAM_ALLIANCE
Definition: SharedDefines.h:1110
@ TEAM_HORDE
Definition: SharedDefines.h:1111
@ WS_TEAM_IN_INSTANCE_ALLIANCE
Definition: SharedDefines.h:8026
@ WS_TEAM_IN_INSTANCE_HORDE
Definition: SharedDefines.h:8027
#define sWorldStateMgr
Definition: WorldStateMgr.h:50
void SetInUse(bool inUse)
Definition: InstanceLockMgr.h:116
InstanceResetTimePoint GetExpiryTime() const
Definition: InstanceLockMgr.h:101
Optional< SystemTimePoint > i_instanceExpireEvent
Definition: Map.h:852
InstanceLock * i_instanceLock
Definition: Map.h:856
InstanceScenario * i_scenario
Definition: Map.h:855
virtual void InitVisibilityDistance() override
Definition: Map.cpp:2808
InstanceScript * i_data
Definition: Map.h:853
uint32 i_script_id
Definition: Map.h:854
Definition: Map.h:185
uint32 m_unloadTimer
Definition: Map.h:588
#define sWorld
Definition: World.h:961
@ CONFIG_INSTANCE_UNLOAD_DELAY
Definition: World.h:275
+ Here is the call graph for this function:

◆ ~InstanceMap()

InstanceMap::~InstanceMap ( )
2800{
2801 if (i_instanceLock)
2802 i_instanceLock->SetInUse(false);
2803
2804 delete i_data;
2805 delete i_scenario;
2806}
+ Here is the call graph for this function:

Member Function Documentation

◆ AddPlayerToMap()

bool InstanceMap::AddPlayerToMap ( Player player,
bool  initPlayer = true 
)
overridevirtual

Reimplemented from Map.

2858{
2859 // increase current instances (hourly limit)
2861
2862 MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
2863 if (entries.MapDifficulty->HasResetSchedule() && i_instanceLock && !i_instanceLock->IsNew())
2864 {
2865 if (!entries.MapDifficulty->IsUsingEncounterLocks())
2866 {
2867 InstanceLock const* playerLock = sInstanceLockMgr.FindActiveInstanceLock(player->GetGUID(), entries);
2868 if (!playerLock || (playerLock->IsExpired() && playerLock->IsExtended()) ||
2870 {
2872 pendingRaidLock.TimeUntilLock = 60000;
2874 pendingRaidLock.Extending = playerLock && playerLock->IsExtended();
2875 pendingRaidLock.WarningOnly = entries.Map->IsFlexLocking(); // events it triggers: 1 : INSTANCE_LOCK_WARNING 0 : INSTANCE_LOCK_STOP / INSTANCE_LOCK_START
2876 player->GetSession()->SendPacket(pendingRaidLock.Write());
2877 if (!entries.Map->IsFlexLocking())
2878 player->SetPendingBind(GetInstanceId(), 60000);
2879 }
2880 }
2881 }
2882
2883 TC_LOG_DEBUG("maps", "MAP: Player '{}' entered instance '{}' of map '{}'", player->GetName(), GetInstanceId(), GetMapName());
2884 // initialize unload state
2885 m_unloadTimer = 0;
2886
2887 // this will acquire the same mutex so it cannot be in the previous block
2888 Map::AddPlayerToMap(player, initPlayer);
2889
2890 if (i_data)
2891 i_data->OnPlayerEnter(player);
2892
2893 if (i_scenario)
2894 i_scenario->OnPlayerEnter(player);
2895
2896 return true;
2897}
#define sInstanceLockMgr
Definition: InstanceLockMgr.h:318
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:156
Definition: InstanceLockMgr.h:84
bool IsExtended() const
Definition: InstanceLockMgr.h:105
bool IsNew() const
Definition: InstanceLockMgr.h:118
bool IsExpired() const
Definition: InstanceLockMgr.cpp:39
InstanceLockData * GetData()
Definition: InstanceLockMgr.h:108
virtual void OnPlayerEnter(Player *)
Definition: InstanceScript.h:237
virtual bool AddPlayerToMap(Player *player, bool initPlayer=true)
Definition: Map.cpp:431
MapDifficultyEntry const * GetMapDifficulty() const
Definition: Map.cpp:3168
MapEntry const * GetEntry() const
Definition: Map.h:191
char const * GetMapName() const
Definition: Map.cpp:1819
uint32 GetInstanceId() const
Definition: Map.h:300
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:157
void AddInstanceEnterTime(uint32 instanceId, time_t enterTime)
Definition: Player.cpp:19504
WorldSession * GetSession() const
Definition: Player.h:2103
void SetPendingBind(uint32 instanceId, uint32 bindTimer)
Definition: Player.cpp:19325
virtual void OnPlayerEnter(Player *player)
Definition: Scenario.cpp:100
std::string const & GetName() const
Definition: Object.h:544
Definition: InstancePackets.h:141
bool WarningOnly
Definition: InstancePackets.h:150
int32 TimeUntilLock
Definition: InstancePackets.h:147
WorldPacket const * Write() override
Definition: InstancePackets.cpp:97
uint32 CompletedMask
Definition: InstancePackets.h:148
bool Extending
Definition: InstancePackets.h:149
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
Definition: WorldSession.cpp:214
time_t GetGameTime()
Definition: GameTime.cpp:39
uint32 CompletedEncountersMask
Definition: InstanceLockMgr.h:79
Definition: InstanceLockMgr.h:167
+ Here is the call graph for this function:

◆ CannotEnter()

TransferAbortParams InstanceMap::CannotEnter ( Player player)
overridevirtual

Reimplemented from Map.

2819{
2820 if (player->GetMapRef().getTarget() == this)
2821 {
2822 TC_LOG_ERROR("maps", "InstanceMap::CannotEnter - player {} {} already in map {}, {}, {}!", player->GetName(), player->GetGUID().ToString(), GetId(), GetInstanceId(), GetDifficultyID());
2823 ABORT();
2824 return TRANSFER_ABORT_ERROR;
2825 }
2826
2827 // allow GM's to enter
2828 if (player->IsGameMaster())
2829 return Map::CannotEnter(player);
2830
2831 // cannot enter if the instance is full (player cap), GMs don't count
2832 uint32 maxPlayers = GetMaxPlayers();
2833 if (GetPlayersCountExceptGMs() >= maxPlayers)
2834 {
2835 TC_LOG_WARN("maps", "MAP: Instance '{}' of map '{}' cannot have more than '{}' players. Player '{}' rejected", GetInstanceId(), GetMapName(), maxPlayers, player->GetName());
2837 }
2838
2839 // cannot enter while an encounter is in progress (unless this is a relog, in which case it is permitted)
2840 if (!player->IsLoading() && IsRaid() && GetInstanceScript() && GetInstanceScript()->IsEncounterInProgress())
2842
2843 if (i_instanceLock)
2844 {
2845 // cannot enter if player is permanent saved to a different instance id
2846 TransferAbortReason lockError = sInstanceLockMgr.CanJoinInstanceLock(player->GetGUID(), { GetEntry(), GetMapDifficulty() }, i_instanceLock);
2847 if (lockError != TRANSFER_ABORT_NONE)
2848 return lockError;
2849 }
2850
2851 return Map::CannotEnter(player);
2852}
#define ABORT
Definition: Errors.h:74
#define TC_LOG_WARN(filterType__,...)
Definition: Log.h:162
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:165
TransferAbortReason
Definition: Map.h:84
@ TRANSFER_ABORT_MAX_PLAYERS
Definition: Map.h:87
@ TRANSFER_ABORT_ZONE_IN_COMBAT
Definition: Map.h:90
@ TRANSFER_ABORT_NONE
Definition: Map.h:85
@ TRANSFER_ABORT_ERROR
Definition: Map.h:86
uint32 GetMaxPlayers() const
Definition: Map.cpp:3254
InstanceScript * GetInstanceScript()
Definition: Map.h:830
virtual TransferAbortParams CannotEnter(Player *)
Definition: Map.h:303
bool IsRaid() const
Definition: Map.cpp:3205
Difficulty GetDifficultyID() const
Definition: Map.h:307
uint32 GetPlayersCountExceptGMs() const
Definition: Map.cpp:2630
uint32 GetId() const
Definition: Map.cpp:3185
std::string ToString() const
Definition: ObjectGuid.cpp:531
bool IsLoading() const override
Definition: Player.cpp:17288
bool IsGameMaster() const
Definition: Player.h:1194
MapReference & GetMapRef()
Definition: Player.h:2627
TO * getTarget() const
Definition: Reference.h:94
+ Here is the call graph for this function:

◆ CreateInstanceData()

void InstanceMap::CreateInstanceData ( )
2937{
2938 if (i_data != nullptr)
2939 return;
2940
2941 InstanceTemplate const* mInstance = sObjectMgr->GetInstanceTemplate(GetId());
2942 if (mInstance)
2943 {
2944 i_script_id = mInstance->ScriptId;
2945 i_data = sScriptMgr->CreateInstanceData(this);
2946 }
2947
2948 if (!i_data)
2949 return;
2950
2952 {
2953 i_data->Create();
2954 return;
2955 }
2956
2957 MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
2958 if (!entries.IsInstanceIdBound() && !IsRaid() && !entries.MapDifficulty->IsRestoringDungeonState() && i_owningGroupRef.isValid())
2959 {
2960 i_data->Create();
2961 return;
2962 }
2963
2967 if (!lockData->Data.empty())
2968 {
2969 TC_LOG_DEBUG("maps", "Loading instance data for `{}` with id {}", sObjectMgr->GetScriptName(i_script_id), i_InstanceId);
2970 i_data->Load(lockData->Data.c_str());
2971 }
2972 else
2973 i_data->Create();
2974}
#define sObjectMgr
Definition: ObjectMgr.h:1976
#define sScriptMgr
Definition: ScriptMgr.h:1389
virtual InstanceLockData const * GetInstanceInitializationData() const
Definition: InstanceLockMgr.h:111
GroupInstanceReference i_owningGroupRef
Definition: Map.h:857
void Load(char const *data)
Definition: InstanceScript.cpp:468
virtual void Create()
Definition: InstanceScript.cpp:461
void SetEntranceLocation(uint32 worldSafeLocationId)
Definition: InstanceScript.cpp:767
void SetCompletedEncountersMask(uint32 newMask)
Definition: InstanceScript.cpp:895
uint32 i_InstanceId
Definition: Map.h:587
bool isValid() const
Definition: Reference.h:78
Definition: InstanceLockMgr.h:69
uint32 EntranceWorldSafeLocId
Definition: InstanceLockMgr.h:80
std::string Data
Definition: InstanceLockMgr.h:78
Definition: ObjectMgr.h:158
uint32 ScriptId
Definition: ObjectMgr.h:160
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CreateInstanceLockForPlayer()

void InstanceMap::CreateInstanceLockForPlayer ( Player player)
3145{
3146 MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
3147 InstanceLock const* playerLock = sInstanceLockMgr.FindActiveInstanceLock(player->GetGUID(), entries);
3148
3149 bool isNewLock = !playerLock || playerLock->IsNew() || playerLock->IsExpired();
3150
3151 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
3152
3153 InstanceLock const* newLock = sInstanceLockMgr.UpdateInstanceLockForPlayer(trans, player->GetGUID(), entries,
3155
3156 CharacterDatabase.CommitTransaction(trans);
3157
3158 if (isNewLock)
3159 {
3161 data.Gm = player->IsGameMaster();
3162 player->SendDirectMessage(data.Write());
3163
3164 player->GetSession()->SendCalendarRaidLockoutAdded(newLock);
3165 }
3166}
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition: DatabaseEnvFwd.h:72
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
std::string GetSaveData()
Definition: InstanceScript.cpp:496
void SendDirectMessage(WorldPacket const *data) const
Definition: Player.cpp:6309
Definition: InstancePackets.h:110
bool Gm
Definition: InstancePackets.h:116
WorldPacket const * Write() override
Definition: InstancePackets.cpp:76
void SendCalendarRaidLockoutAdded(InstanceLock const *lock)
Definition: CalendarHandler.cpp:570
Definition: InstanceLockMgr.h:179
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetDebugInfo()

std::string InstanceMap::GetDebugInfo ( ) const
overridevirtual

Reimplemented from Map.

3928{
3929 std::stringstream sstr;
3930 sstr << Map::GetDebugInfo() << "\n"
3931 << std::boolalpha
3932 << "ScriptId: " << GetScriptId() << " ScriptName: " << GetScriptName();
3933 return sstr.str();
3934}
uint32 GetScriptId() const
Definition: Map.h:828
std::string const & GetScriptName() const
Definition: Map.cpp:3043
virtual std::string GetDebugInfo() const
Definition: Map.cpp:3918
+ Here is the call graph for this function:

◆ GetInstanceLock()

InstanceLock const * InstanceMap::GetInstanceLock ( ) const
inline
835{ return i_instanceLock; }
+ Here is the caller graph for this function:

◆ GetInstanceScenario() [1/2]

InstanceScenario * InstanceMap::GetInstanceScenario ( )
inline
832{ return i_scenario; }

◆ GetInstanceScenario() [2/2]

InstanceScenario const * InstanceMap::GetInstanceScenario ( ) const
inline
833{ return i_scenario; }

◆ GetInstanceScript() [1/2]

InstanceScript * InstanceMap::GetInstanceScript ( )
inline
830{ return i_data; }
+ Here is the caller graph for this function:

◆ GetInstanceScript() [2/2]

InstanceScript const * InstanceMap::GetInstanceScript ( ) const
inline
831{ return i_data; }

◆ GetMaxPlayers()

uint32 InstanceMap::GetMaxPlayers ( ) const
3255{
3256 MapDifficultyEntry const* mapDiff = GetMapDifficulty();
3257 if (mapDiff && mapDiff->MaxPlayers)
3258 return mapDiff->MaxPlayers;
3259
3260 return GetEntry()->MaxPlayers;
3261}
Definition: DB2Structure.h:2684
int32 MaxPlayers
Definition: DB2Structure.h:2690
uint8 MaxPlayers
Definition: DB2Structure.h:2611
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetOwningGroup()

Group * InstanceMap::GetOwningGroup ( ) const
inline
847{ return i_owningGroupRef.getTarget(); }
+ Here is the caller graph for this function:

◆ GetScriptId()

uint32 InstanceMap::GetScriptId ( ) const
inline
828{ return i_script_id; }
+ Here is the caller graph for this function:

◆ GetScriptName()

std::string const & InstanceMap::GetScriptName ( ) const
3044{
3045 return sObjectMgr->GetScriptName(i_script_id);
3046}
+ Here is the caller graph for this function:

◆ GetTeamIdInInstance()

TeamId InstanceMap::GetTeamIdInInstance ( ) const
3264{
3265 if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, this))
3266 return TEAM_ALLIANCE;
3267 if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_HORDE, this))
3268 return TEAM_HORDE;
3269 return TEAM_NEUTRAL;
3270}
@ TEAM_NEUTRAL
Definition: SharedDefines.h:1112
+ Here is the caller graph for this function:

◆ GetTeamInInstance()

Team InstanceMap::GetTeamInInstance ( ) const
inline
@ ALLIANCE
Definition: SharedDefines.h:1118
@ HORDE
Definition: SharedDefines.h:1117
TeamId GetTeamIdInInstance() const
Definition: Map.cpp:3263
+ Here is the caller graph for this function:

◆ InitVisibilityDistance()

void InstanceMap::InitVisibilityDistance ( )
overridevirtual

Reimplemented from Map.

2809{
2810 //init visibility distance for instances
2813}
int32 m_VisibilityNotifyPeriod
Definition: Map.h:595
float m_VisibleDistance
Definition: Map.h:589
static float GetMaxVisibleDistanceInInstances()
Definition: World.h:783
static int32 GetVisibilityNotifyPeriodInInstances()
Definition: World.h:788
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RemovePlayerFromMap()

void InstanceMap::RemovePlayerFromMap ( Player player,
bool  remove 
)
overridevirtual

Reimplemented from Map.

2920{
2921 TC_LOG_DEBUG("maps", "MAP: Removing player '{}' from instance '{}' of map '{}' before relocating to another map", player->GetName(), GetInstanceId(), GetMapName());
2922
2923 if (i_data)
2924 i_data->OnPlayerLeave(player);
2925
2926 // if last player set unload timer
2927 if (!m_unloadTimer && m_mapRefManager.getSize() == 1)
2929
2930 if (i_scenario)
2931 i_scenario->OnPlayerExit(player);
2932
2933 Map::RemovePlayerFromMap(player, remove);
2934}
virtual void OnPlayerLeave(Player *)
Definition: InstanceScript.h:239
uint32 getSize() const
Definition: LinkedList.h:128
virtual void RemovePlayerFromMap(Player *, bool)
Definition: Map.cpp:905
MapRefManager m_mapRefManager
Definition: Map.h:592
virtual void OnPlayerExit(Player *player)
Definition: Scenario.cpp:106
+ Here is the call graph for this function:

◆ Reset()

InstanceResetResult InstanceMap::Reset ( InstanceResetMethod  method)
2986{
2987 // raids can be reset if no boss was killed
2988 if (method != InstanceResetMethod::Expire && i_instanceLock && !i_instanceLock->IsNew())
2989 return InstanceResetResult::CannotReset;
2990
2991 if (HavePlayers())
2992 {
2993 switch (method)
2994 {
2995 case InstanceResetMethod::Manual:
2996 // notify the players to leave the instance so it can be reset
2997 for (MapReference& ref : m_mapRefManager)
2998 ref.GetSource()->SendResetFailedNotify(GetId());
2999 break;
3000 case InstanceResetMethod::OnChangeDifficulty:
3001 // no client notification
3002 break;
3003 case InstanceResetMethod::Expire:
3004 {
3006 raidInstanceMessage.Type = RAID_INSTANCE_EXPIRED;
3007 raidInstanceMessage.MapID = GetId();
3008 raidInstanceMessage.DifficultyID = GetDifficultyID();
3009 raidInstanceMessage.Write();
3010
3012 pendingRaidLock.TimeUntilLock = 60000;
3014 pendingRaidLock.Extending = true;
3015 pendingRaidLock.WarningOnly = GetEntry()->IsFlexLocking();
3016 pendingRaidLock.Write();
3017
3018 for (MapReference& ref : m_mapRefManager)
3019 {
3020 ref.GetSource()->SendDirectMessage(raidInstanceMessage.GetRawPacket());
3021 ref.GetSource()->SendDirectMessage(pendingRaidLock.GetRawPacket());
3022
3023 if (!pendingRaidLock.WarningOnly)
3024 ref.GetSource()->SetPendingBind(GetInstanceId(), 60000);
3025 }
3026 break;
3027 }
3028 default:
3029 break;
3030 }
3031
3032 return InstanceResetResult::NotEmpty;
3033 }
3034 else
3035 {
3036 // unloaded at next update
3038 }
3039
3040 return InstanceResetResult::Success;
3041}
@ RAID_INSTANCE_EXPIRED
Definition: Player.h:804
Definition: MapReference.h:27
bool HavePlayers() const
Definition: Map.h:333
Definition: InstancePackets.h:154
uint32 DifficultyID
Definition: InstancePackets.h:162
uint8 Type
Definition: InstancePackets.h:160
uint32 MapID
Definition: InstancePackets.h:161
WorldPacket const * Write() override
Definition: InstancePackets.cpp:108
WorldPacket const * GetRawPacket() const
Definition: Packet.h:38
bool IsFlexLocking() const
Definition: DB2Structure.h:2664
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetInstanceScenario()

void InstanceMap::SetInstanceScenario ( InstanceScenario scenario)
inline
834{ i_scenario = scenario; }
+ Here is the caller graph for this function:

◆ TrySetOwningGroup()

void InstanceMap::TrySetOwningGroup ( Group group)
2977{
2979 i_owningGroupRef.link(group, this);
2980}
void link(TO *toObj, FROM *fromObj)
Definition: Reference.h:46
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Update()

void InstanceMap::Update ( uint32  t_diff)
overridevirtual

Reimplemented from Map.

2900{
2901 Map::Update(t_diff);
2902
2903 if (i_data)
2904 {
2905 i_data->Update(t_diff);
2907 }
2908
2909 if (i_scenario)
2910 i_scenario->Update(t_diff);
2911
2913 {
2914 Reset(InstanceResetMethod::Expire);
2916 }
2917}
InstanceResetResult Reset(InstanceResetMethod method)
Definition: Map.cpp:2985
void UpdateCombatResurrection(uint32 diff)
Definition: InstanceScript.cpp:918
virtual void Update(uint32)
Definition: InstanceScript.h:211
virtual void Update(uint32)
Definition: Map.cpp:664
virtual void Update(uint32)
Definition: Scenario.h:64
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.
Definition: GameTime.cpp:49
+ Here is the call graph for this function:

◆ UpdateInstanceLock() [1/2]

void InstanceMap::UpdateInstanceLock ( UpdateAdditionalSaveDataEvent const &  updateSaveDataEvent)
3099{
3100 if (i_instanceLock)
3101 {
3102 uint32 instanceCompletedEncounters = i_instanceLock->GetData()->CompletedEncountersMask;
3103
3104 MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
3105
3106 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
3107
3108 if (entries.IsInstanceIdBound())
3109 sInstanceLockMgr.UpdateSharedInstanceLock(trans, InstanceLockUpdateEvent(GetInstanceId(), i_data->GetSaveData(),
3110 instanceCompletedEncounters, nullptr, {}));
3111
3112 for (MapReference& mapReference : m_mapRefManager)
3113 {
3114 Player* player = mapReference.GetSource();
3115 // never instance bind GMs with GM mode enabled
3116 if (player->IsGameMaster())
3117 continue;
3118
3119 InstanceLock const* playerLock = sInstanceLockMgr.FindActiveInstanceLock(player->GetGUID(), entries);
3120 std::string const* oldData = nullptr;
3121 if (playerLock)
3122 oldData = &playerLock->GetData()->Data;
3123
3124 bool isNewLock = !playerLock || playerLock->IsNew() || playerLock->IsExpired();
3125
3126 InstanceLock const* newLock = sInstanceLockMgr.UpdateInstanceLockForPlayer(trans, player->GetGUID(), entries,
3127 InstanceLockUpdateEvent(GetInstanceId(), i_data->UpdateAdditionalSaveData(oldData ? *oldData : "", updateSaveDataEvent),
3128 instanceCompletedEncounters, nullptr, {}));
3129
3130 if (isNewLock)
3131 {
3133 data.Gm = player->IsGameMaster();
3134 player->SendDirectMessage(data.Write());
3135
3136 player->GetSession()->SendCalendarRaidLockoutAdded(newLock);
3137 }
3138 }
3139
3140 CharacterDatabase.CommitTransaction(trans);
3141 }
3142}
std::string UpdateAdditionalSaveData(std::string const &oldData, UpdateAdditionalSaveDataEvent const &event)
Definition: InstanceScript.cpp:520
Definition: Player.h:1125
+ Here is the call graph for this function:

◆ UpdateInstanceLock() [2/2]

void InstanceMap::UpdateInstanceLock ( UpdateBossStateSaveDataEvent const &  updateSaveDataEvent)
3049{
3050 if (i_instanceLock)
3051 {
3052 uint32 instanceCompletedEncounters = i_instanceLock->GetData()->CompletedEncountersMask | (1u << updateSaveDataEvent.DungeonEncounter->Bit);
3053
3054 MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
3055
3056 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
3057
3058 if (entries.IsInstanceIdBound())
3059 sInstanceLockMgr.UpdateSharedInstanceLock(trans, InstanceLockUpdateEvent(GetInstanceId(), i_data->GetSaveData(),
3060 instanceCompletedEncounters, updateSaveDataEvent.DungeonEncounter, i_data->GetEntranceLocationForCompletedEncounters(instanceCompletedEncounters)));
3061
3062 for (MapReference& mapReference : m_mapRefManager)
3063 {
3064 Player* player = mapReference.GetSource();
3065 // never instance bind GMs with GM mode enabled
3066 if (player->IsGameMaster())
3067 continue;
3068
3069 InstanceLock const* playerLock = sInstanceLockMgr.FindActiveInstanceLock(player->GetGUID(), entries);
3070 std::string const* oldData = nullptr;
3071 uint32 playerCompletedEncounters = 0;
3072 if (playerLock)
3073 {
3074 oldData = &playerLock->GetData()->Data;
3075 playerCompletedEncounters = playerLock->GetData()->CompletedEncountersMask | (1u << updateSaveDataEvent.DungeonEncounter->Bit);
3076 }
3077
3078 bool isNewLock = !playerLock || playerLock->IsNew() || playerLock->IsExpired();
3079
3080 InstanceLock const* newLock = sInstanceLockMgr.UpdateInstanceLockForPlayer(trans, player->GetGUID(), entries,
3081 InstanceLockUpdateEvent(GetInstanceId(), i_data->UpdateBossStateSaveData(oldData ? *oldData : "", updateSaveDataEvent),
3082 instanceCompletedEncounters, updateSaveDataEvent.DungeonEncounter, i_data->GetEntranceLocationForCompletedEncounters(playerCompletedEncounters)));
3083
3084 if (isNewLock)
3085 {
3087 data.Gm = player->IsGameMaster();
3088 player->SendDirectMessage(data.Write());
3089
3090 player->GetSession()->SendCalendarRaidLockoutAdded(newLock);
3091 }
3092 }
3093
3094 CharacterDatabase.CommitTransaction(trans);
3095 }
3096}
Optional< uint32 > GetEntranceLocationForCompletedEncounters(uint32 completedEncountersMask) const
Definition: InstanceScript.cpp:531
std::string UpdateBossStateSaveData(std::string const &oldData, UpdateBossStateSaveDataEvent const &event)
Definition: InstanceScript.cpp:509
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ i_data

InstanceScript* InstanceMap::i_data
private

◆ i_instanceExpireEvent

Optional<SystemTimePoint> InstanceMap::i_instanceExpireEvent
private

◆ i_instanceLock

InstanceLock* InstanceMap::i_instanceLock
private

◆ i_owningGroupRef

GroupInstanceReference InstanceMap::i_owningGroupRef
private

◆ i_scenario

InstanceScenario* InstanceMap::i_scenario
private

◆ i_script_id

uint32 InstanceMap::i_script_id
private

The documentation for this class was generated from the following files: