aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Groups/Group.cpp7
-rw-r--r--src/server/game/Server/Protocol/Handlers/GroupHandler.cpp3
-rw-r--r--src/server/game/Server/Protocol/Handlers/MiscHandler.cpp6
3 files changed, 11 insertions, 5 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index f05e465deee..74a26f6a7b8 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -374,10 +374,13 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
if (method == 1)
{
data.Initialize(SMSG_GROUP_UNINVITE, 0);
- player->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
player->GetSession()->SendPacket(&data);
}
+ player->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
+ if (isLFGGroup() && player->GetMap()->IsDungeon())
+ player->TeleportToBGEntryPoint();
+
//we already removed player from group and in player->GetGroup() is his original group!
if (Group* group = player->GetGroup())
{
@@ -448,6 +451,8 @@ void Group::Disband(bool hideDestroy)
else
player->SetGroup(NULL);
+ if (isLFGGroup() && player->GetMap()->IsDungeon())
+ player->TeleportToBGEntryPoint();
player->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_GROUP_DISBAND);
player->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
}
diff --git a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
index 8ea0fb17eb3..7b8fae749e1 100644
--- a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
@@ -32,7 +32,6 @@
#include "Util.h"
#include "SpellAuras.h"
#include "Vehicle.h"
-#include "LFGMgr.h"
class Aura;
@@ -384,8 +383,6 @@ void WorldSession::HandleGroupDisbandOpcode(WorldPacket & /*recv_data*/)
SendPartyResult(PARTY_OP_LEAVE, GetPlayer()->GetName(), ERR_PARTY_RESULT_OK);
GetPlayer()->RemoveFromGroup();
- if (grp->isLFGGroup() && GetPlayer()->GetMap()->IsDungeon())
- GetPlayer()->TeleportToBGEntryPoint();
}
void WorldSession::HandleLootMethodOpcode(WorldPacket & recv_data)
diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
index 8acea80be7a..2656478f899 100644
--- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
@@ -937,7 +937,11 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data)
if (GetPlayer()->GetMapId() != at->target_mapId && !sMapMgr.CanPlayerEnter(at->target_mapId, GetPlayer(), false))
return;
- GetPlayer()->TeleportTo(at->target_mapId,at->target_X,at->target_Y,at->target_Z,at->target_Orientation,TELE_TO_NOT_LEAVE_TRANSPORT);
+ // Check if we are in LfgGroup and trying to get out the dungeon
+ if (GetPlayer()->GetGroup() && GetPlayer()->GetGroup()->isLFGGroup() && GetPlayer()->GetMap()->IsDungeon() && at->target_mapId != GetPlayer()->GetMapId())
+ GetPlayer()->TeleportToBGEntryPoint();
+ else
+ GetPlayer()->TeleportTo(at->target_mapId,at->target_X,at->target_Y,at->target_Z,at->target_Orientation,TELE_TO_NOT_LEAVE_TRANSPORT);
}
void WorldSession::HandleUpdateAccountData(WorldPacket &recv_data)