diff options
author | Spp <none@none> | 2010-08-13 09:24:24 +0200 |
---|---|---|
committer | Spp <none@none> | 2010-08-13 09:24:24 +0200 |
commit | 0f378aac24f9999adb8b218c6e080c7d22878d50 (patch) | |
tree | 5d82cb67ad2a9ed8f04153ed90108aaf1bdb9c0c | |
parent | 4558ac1d2a8fd3424fd0e4fb890622ccf5a0e14d (diff) |
Dungeon Finder: Fix Teleport issues
- Trying to leave the dungeon using the portal will teleport you back to the save point
- If group is disbanded all people is teleported out
--HG--
branch : trunk
-rw-r--r-- | src/server/game/Groups/Group.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Handlers/GroupHandler.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Handlers/MiscHandler.cpp | 6 |
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) |