aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortartalo <none@none>2009-10-31 19:34:02 +0100
committertartalo <none@none>2009-10-31 19:34:02 +0100
commit334a6c4162790ef9d2cbb34d8be29170d28fdbd6 (patch)
treef513e73948f2bdf27946e08e2958f309441d6901
parent7d8af67268b6aaa6679838a2d6ca3c666668c190 (diff)
Block access to instances if encounter is in progress only for raids (not for
5 player dungeons). Don't count GMs for instance full block --HG-- branch : trunk
-rw-r--r--src/game/Map.cpp13
-rw-r--r--src/game/MapManager.cpp4
2 files changed, 11 insertions, 6 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index cc47cfbf051..685b3fa59a0 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -2508,18 +2508,23 @@ bool InstanceMap::CanEnter(Player *player)
return false;
}
+ // allow GM's to enter
+ if (player->isGameMaster())
+ return Map::CanEnter(player);
+
// cannot enter if the instance is full (player cap), GMs don't count
uint32 maxPlayers = GetMaxPlayers();
- if (!player->isGameMaster() && GetPlayersCountExceptGMs() >= maxPlayers)
+ if (GetPlayersCountExceptGMs() >= maxPlayers)
{
sLog.outDetail("MAP: Instance '%u' of map '%s' cannot have more than '%u' players. Player '%s' rejected", GetInstanceId(), GetMapName(), maxPlayers, player->GetName());
player->SendTransferAborted(GetId(), TRANSFER_ABORT_MAX_PLAYERS);
return false;
}
- // cannot enter while players in the instance are in combat
- Group *pGroup = player->GetGroup();
- if(!player->isGameMaster() && pGroup && pGroup->InCombatToInstance(GetInstanceId()) && player->GetMapId() != GetId())
+ // cannot enter while an encounter is in progress on raids
+ /*Group *pGroup = player->GetGroup();
+ if(!player->isGameMaster() && pGroup && pGroup->InCombatToInstance(GetInstanceId()) && player->GetMapId() != GetId())*/
+ if (IsRaid() && GetInstanceData()->IsEncounterInProgress())
{
player->SendTransferAborted(GetId(), TRANSFER_ABORT_ZONE_IN_COMBAT);
return false;
diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp
index 047b9a352b3..135be78310f 100644
--- a/src/game/MapManager.cpp
+++ b/src/game/MapManager.cpp
@@ -252,7 +252,7 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player)
}
//Encounters in progress
- if (((InstanceMap*)boundedMap)->GetInstanceData() && ((InstanceMap*)boundedMap)->GetInstanceData()->IsEncounterInProgress())
+ if (entry->map_type == MAP_RAID && ((InstanceMap*)boundedMap)->GetInstanceData() && ((InstanceMap*)boundedMap)->GetInstanceData()->IsEncounterInProgress())
{
sLog.outDebug("MAP: Player '%s' can't enter instance '%s' while an encounter is in progress.", player->GetName(), mapName);
player->SendTransferAborted(mapid, TRANSFER_ABORT_ZONE_IN_COMBAT);
@@ -263,7 +263,7 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player)
int8 maxPlayers = (player->GetDifficulty() == DIFFICULTY_HEROIC) ? instance->maxPlayersHeroic : instance->maxPlayers;
if (maxPlayers != -1) //-1: unlimited access
{
- if (boundedMap->GetPlayers().getSize() >= maxPlayers)
+ if (boundedMap->GetPlayersCountExceptGMs() >= maxPlayers)
{
sLog.outDebug("MAP: Player '%s' can't enter instance '%s' because it's full.", player->GetName(), mapName);
player->SendTransferAborted(mapid, TRANSFER_ABORT_MAX_PLAYERS);