From e14964c52b8820dbab3849e9298608806a7e615a Mon Sep 17 00:00:00 2001 From: Poszer <41213210+poszer@users.noreply.github.com> Date: Thu, 4 Jul 2019 09:01:24 +0200 Subject: [PATCH] fix(Core/Wintergrasp): Leaving Wintergrasp with the minimap button (#2018) --- src/server/game/Battlefield/Battlefield.cpp | 7 +++++++ src/server/game/Battlefield/Battlefield.h | 1 + src/server/game/Handlers/MiscHandler.cpp | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 21b532056..6235ef3c0 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -396,6 +396,13 @@ void Battlefield::AskToLeaveQueue(Player* player) m_PlayersInQueue[player->GetTeamId()].erase(player->GetGUID()); } +// Called in WorldSession::HandleHearthAndResurrect +void Battlefield::PlayerAskToLeave(Player* player) +{ + // Player leaving Wintergrasp, trigger Hearthstone spell. + player->CastSpell(player, 8690, true); +} + // Called in WorldSession::HandleBfEntryInviteResponse void Battlefield::PlayerAcceptInviteToWar(Player* player) { diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index f6294746b..dfb1d4e52 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -321,6 +321,7 @@ class Battlefield : public ZoneScript void PlayerAcceptInviteToWar(Player* player); uint32 GetBattleId() { return m_BattleId; } void AskToLeaveQueue(Player* player); + void PlayerAskToLeave(Player* player); //virtual void DoCompleteOrIncrementAchievement(uint32 /*achievement*/, Player* /*player*/, uint8 /*incrementNumber = 1*/) {}; diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 95e57a7dd..943419937 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1927,9 +1927,9 @@ void WorldSession::HandleHearthAndResurrect(WorldPacket& /*recv_data*/) if (_player->IsInFlight()) return; - if(/*Battlefield* bf = */sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) + if(Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) { - // bf->PlayerAskToLeave(_player); FIXME + bf->PlayerAskToLeave(_player); return; }