diff --git a/src/PlayerbotMgr.cpp b/src/PlayerbotMgr.cpp index ba3aceae..59fad35d 100644 --- a/src/PlayerbotMgr.cpp +++ b/src/PlayerbotMgr.cpp @@ -116,18 +116,10 @@ void PlayerbotHolder::AddPlayerBot(ObjectGuid playerGuid, uint32 masterAccountId botLoading.insert(playerGuid); - if (WorldSession* masterSession = sWorldSessionMgr->FindSession(masterAccountId)) - { - masterSession->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) - .AfterComplete([this](SQLQueryHolderBase const& holder) - { HandlePlayerBotLoginCallback(static_cast(holder)); }); - } - else - { - sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) - .AfterComplete([this](SQLQueryHolderBase const& holder) - { HandlePlayerBotLoginCallback(static_cast(holder)); }); - } + // Always login in with world session to avoid race condition + sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) + .AfterComplete([this](SQLQueryHolderBase const& holder) + { HandlePlayerBotLoginCallback(static_cast(holder)); }); } void PlayerbotHolder::HandlePlayerBotLoginCallback(PlayerbotLoginQueryHolder const& holder) diff --git a/src/strategy/actions/CastCustomSpellAction.cpp b/src/strategy/actions/CastCustomSpellAction.cpp index c7b2d0a8..5213d1e7 100644 --- a/src/strategy/actions/CastCustomSpellAction.cpp +++ b/src/strategy/actions/CastCustomSpellAction.cpp @@ -47,7 +47,10 @@ bool CastCustomSpellAction::Execute(Event event) { if (!target) target = botAI->GetUnit(go); - + + if (!botAI->GetUnit(go) || !botAI->GetUnit(go)->IsInWorld()) + continue; + chat->eraseAllSubStr(text, chat->FormatWorldobject(botAI->GetUnit(go))); }