aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/Map.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-28 16:24:38 +0100
committerShauren <shauren.trinity@gmail.com>2023-11-28 16:24:38 +0100
commit75a306e422cfb83c688b90ea428522251a70e68b (patch)
treee5665aca4c7d8673d527bed32a6d7b3034b7139f /src/server/game/Maps/Map.cpp
parent7e76e91152ed83cc5f81563db584f1f757dba063 (diff)
Core/Instances: Prevent sending PendingRaidLock in instances that don't have a InstanceScript
Closes #29470
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r--src/server/game/Maps/Map.cpp33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 95b1f3a204d..4610cecd4b2 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -2862,7 +2862,7 @@ bool InstanceMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
player->AddInstanceEnterTime(GetInstanceId(), GameTime::GetGameTime());
MapDb2Entries entries{ GetEntry(), GetMapDifficulty() };
- if (entries.MapDifficulty->HasResetSchedule() && i_instanceLock && !i_instanceLock->IsNew())
+ if (entries.MapDifficulty->HasResetSchedule() && i_instanceLock && !i_instanceLock->IsNew() && i_data)
{
if (!entries.MapDifficulty->IsUsingEncounterLocks())
{
@@ -2995,7 +2995,7 @@ InstanceResetResult InstanceMap::Reset(InstanceResetMethod method)
{
case InstanceResetMethod::Manual:
// notify the players to leave the instance so it can be reset
- for (MapReference& ref : m_mapRefManager)
+ for (MapReference const& ref : m_mapRefManager)
ref.GetSource()->SendResetFailedNotify(GetId());
break;
case InstanceResetMethod::OnChangeDifficulty:
@@ -3009,20 +3009,25 @@ InstanceResetResult InstanceMap::Reset(InstanceResetMethod method)
raidInstanceMessage.DifficultyID = GetDifficultyID();
raidInstanceMessage.Write();
- WorldPackets::Instance::PendingRaidLock pendingRaidLock;
- pendingRaidLock.TimeUntilLock = 60000;
- pendingRaidLock.CompletedMask = i_instanceLock->GetData()->CompletedEncountersMask;
- pendingRaidLock.Extending = true;
- pendingRaidLock.WarningOnly = GetEntry()->IsFlexLocking();
- pendingRaidLock.Write();
-
- for (MapReference& ref : m_mapRefManager)
- {
+ for (MapReference const& ref : m_mapRefManager)
ref.GetSource()->SendDirectMessage(raidInstanceMessage.GetRawPacket());
- ref.GetSource()->SendDirectMessage(pendingRaidLock.GetRawPacket());
- if (!pendingRaidLock.WarningOnly)
- ref.GetSource()->SetPendingBind(GetInstanceId(), 60000);
+ if (i_data)
+ {
+ WorldPackets::Instance::PendingRaidLock pendingRaidLock;
+ pendingRaidLock.TimeUntilLock = 60000;
+ pendingRaidLock.CompletedMask = i_instanceLock->GetData()->CompletedEncountersMask;
+ pendingRaidLock.Extending = true;
+ pendingRaidLock.WarningOnly = GetEntry()->IsFlexLocking();
+ pendingRaidLock.Write();
+
+ for (MapReference const& ref : m_mapRefManager)
+ {
+ ref.GetSource()->SendDirectMessage(pendingRaidLock.GetRawPacket());
+
+ if (!pendingRaidLock.WarningOnly)
+ ref.GetSource()->SetPendingBind(GetInstanceId(), 60000);
+ }
}
break;
}