From 0a62ee004121356fa8bcc7473183c31404d626b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E4=BD=A9=E8=8C=B9?= Date: Mon, 26 Sep 2022 10:56:43 -0600 Subject: [PATCH] BG Crash fixes --- src/AiFactory.cpp | 4 ++-- src/PlayerbotAI.cpp | 2 +- src/RandomPlayerbotMgr.cpp | 2 +- src/strategy/actions/BattleGroundTactics.cpp | 5 +++++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/AiFactory.cpp b/src/AiFactory.cpp index 759863ea..93e829b9 100644 --- a/src/AiFactory.cpp +++ b/src/AiFactory.cpp @@ -431,7 +431,7 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa } // Battleground switch - if (player->InBattleground()) + if (player->InBattleground() && player->GetBattleground()) { BattlegroundTypeId bgType = player->GetBattlegroundTypeId(); if (bgType == BATTLEGROUND_RB) @@ -632,7 +632,7 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const } // Battleground switch - if (player->InBattleground()) + if (player->InBattleground() && player->GetBattleground()) { nonCombatEngine->addStrategies("nc", "chat", "default", "buff", "food", "mount", "pvp", "collision", "dps assist", "attack tagged", "emote", nullptr); nonCombatEngine->removeStrategy("custom::say"); diff --git a/src/PlayerbotAI.cpp b/src/PlayerbotAI.cpp index ec58665f..d4395a96 100644 --- a/src/PlayerbotAI.cpp +++ b/src/PlayerbotAI.cpp @@ -897,7 +897,7 @@ void PlayerbotAI::DoNextAction(bool min) } // same BG - if (bot->InBattleground() && bot->GetBattleground()->GetBgTypeID() == BATTLEGROUND_AV && !GET_PLAYERBOT_AI(member) && member->InBattleground() && bot->GetMapId() == member->GetMapId()) + if (bot->InBattleground() && bot->GetBattleground() && bot->GetBattleground()->GetBgTypeID() == BATTLEGROUND_AV && !GET_PLAYERBOT_AI(member) && member->InBattleground() && bot->GetMapId() == member->GetMapId()) { // TODO disable move to objective if have master in bg continue; diff --git a/src/RandomPlayerbotMgr.cpp b/src/RandomPlayerbotMgr.cpp index 674a56bc..dddb78e0 100644 --- a/src/RandomPlayerbotMgr.cpp +++ b/src/RandomPlayerbotMgr.cpp @@ -539,7 +539,7 @@ void RandomPlayerbotMgr::CheckBgQueue() else BgPlayers[queueTypeId][bracketId][teamId]++; - if (!player->IsInvitedForBattlegroundInstance() && (!player->InBattleground() || player->GetBattleground()->GetBgTypeID() != BattlegroundMgr::BGTemplateId(queueTypeId))) + if (!player->IsInvitedForBattlegroundInstance() && (!player->InBattleground() || (player->GetBattleground() && player->GetBattleground()->GetBgTypeID() != BattlegroundMgr::BGTemplateId(queueTypeId)))) { if (BattlegroundMgr::BGArenaType(queueTypeId)) { diff --git a/src/strategy/actions/BattleGroundTactics.cpp b/src/strategy/actions/BattleGroundTactics.cpp index 7b371ff0..57dc6813 100644 --- a/src/strategy/actions/BattleGroundTactics.cpp +++ b/src/strategy/actions/BattleGroundTactics.cpp @@ -4880,6 +4880,11 @@ bool ArenaTactics::Execute(Event event) bool ArenaTactics::moveToCenter(Battleground* bg) { + // Sanity check + if (!bg) + { + return true; + } uint32 Preference = context->GetValue("bg role")->Get(); switch (bg->GetBgTypeID()) {