From 09a087aed893298cdfc854d87d1b381c2fc36553 Mon Sep 17 00:00:00 2001 From: Noxies Date: Thu, 2 Dec 2021 17:01:22 +0100 Subject: [PATCH] fix(Core/LFG): Prevent leaving LFG if in combat (#9466) --- src/server/game/DungeonFinding/LFGMgr.cpp | 14 ++++++++++++-- src/server/game/DungeonFinding/LFGMgr.h | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 9f898aef5..38acfcda8 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -2104,15 +2104,25 @@ namespace lfg LfgTeleportError error = LFG_TELEPORTERROR_OK; if (!player->IsAlive()) + { error = LFG_TELEPORTERROR_PLAYER_DEAD; + } else if (player->IsFalling() || player->HasUnitState(UNIT_STATE_JUMPING)) + { error = LFG_TELEPORTERROR_FALLING; + } else if (player->IsMirrorTimerActive(FATIGUE_TIMER)) + { error = LFG_TELEPORTERROR_FATIGUE; + } else if (player->GetVehicle()) + { error = LFG_TELEPORTERROR_IN_VEHICLE; - else if (player->GetCharmGUID()) - error = LFG_TELEPORTERROR_CHARMING; + } + else if (player->GetCharmGUID() || player->IsInCombat()) + { + error = LFG_TELEPORTERROR_COMBAT; + } else { uint32 mapid = dungeon->map; diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 96773f24c..27e63f201 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -89,7 +89,7 @@ namespace lfg LFG_TELEPORTERROR_IN_VEHICLE = 3, LFG_TELEPORTERROR_FATIGUE = 4, LFG_TELEPORTERROR_INVALID_LOCATION = 6, - LFG_TELEPORTERROR_CHARMING = 8 // FIXME - It can be 7 or 8 (Need proper data) + LFG_TELEPORTERROR_COMBAT = 8 // FIXME - It can be 7 or 8 (Need proper data) }; /// Queue join results