mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Instances: Prevent sending PendingRaidLock in instances that don't have a InstanceScript
Closes #29470
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user