diff --git a/zone/bot.cpp b/zone/bot.cpp index f07c5bf8f..38c4aa0b7 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -2746,11 +2746,26 @@ bool Bot::TryAutoDefend(Client* bot_owner, float leash_distance) { bool Bot::TryMeditate() { if (!IsMoving() && !spellend_timer.Enabled()) { - if (IsEngaged() && HasOrMayGetAggro(IsSitting())) { - if (IsSitting()) { - Stand(); + if (IsEngaged()) { + if (HasOrMayGetAggro(IsSitting())) { + if (IsSitting()) { + Stand(); + } + return false; } + + for (auto mob : hate_list.GetHateList()) { + auto tar = mob->entity_on_hatelist; + + if (tar) { + Mob* tar_target = tar->GetTarget(); + + if (tar_target && tar_target == this) { + return false; + } + } + } } BotMeditate(IsSitting()); @@ -2758,6 +2773,7 @@ bool Bot::TryMeditate() { if (!(GetPlayerState() & static_cast(PlayerState::Aggressive))) { SendAddPlayerState(PlayerState::Aggressive); } + return true; } @@ -13193,4 +13209,4 @@ bool Bot::IsValidBotStance(uint8 stance) { } return false; -} \ No newline at end of file +}