diff --git a/regamedll/dlls/bot/cs_bot_manager.cpp b/regamedll/dlls/bot/cs_bot_manager.cpp index 7793e8151..6324ceeb7 100644 --- a/regamedll/dlls/bot/cs_bot_manager.cpp +++ b/regamedll/dlls/bot/cs_bot_manager.cpp @@ -1452,6 +1452,7 @@ void CCSBotManager::SetLooseBomb(CBaseEntity *bomb) if (bomb) { m_looseBombArea = TheNavAreaGrid.GetNearestNavArea(&bomb->pev->origin); + DbgAssert(m_looseBombArea); // TODO: Need investigation and find out why it cannot find nearest area for a lost bomb, just catch it } else { diff --git a/regamedll/dlls/bot/states/cs_bot_hunt.cpp b/regamedll/dlls/bot/states/cs_bot_hunt.cpp index d10826751..aa701db9d 100644 --- a/regamedll/dlls/bot/states/cs_bot_hunt.cpp +++ b/regamedll/dlls/bot/states/cs_bot_hunt.cpp @@ -95,10 +95,15 @@ void HuntState::OnUpdate(CCSBot *me) { if (!me->IsRogue() && me->CanSeeLooseBomb()) { + CNavArea *looseBombArea = TheCSBots()->GetLooseBombArea(); + // if we are near the loose bomb and can see it, hide nearby and guard it me->SetTask(CCSBot::GUARD_LOOSE_BOMB); - me->Hide(TheCSBots()->GetLooseBombArea()); - me->GetChatter()->AnnouncePlan("GoingToGuardLooseBomb", TheCSBots()->GetLooseBombArea()->GetPlace()); + me->Hide(looseBombArea); + + if (looseBombArea) + me->GetChatter()->AnnouncePlan("GoingToGuardLooseBomb", looseBombArea->GetPlace()); + return; } else if (TheCSBots()->IsBombPlanted())