From 7f0895f9e26f938071ea2a668aef6232850d9311 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 26 Oct 2023 11:19:05 +0800 Subject: [PATCH] 1 --- server/gameserver/hero_agent.cc | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index c9c9f542..8929e3f0 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -999,30 +999,47 @@ bool HeroAgent::TargetInRange(float range) float HeroAgent::GetNewAttackerHPRate() { - + return owner_->GetLastAttacker().Get()->GetHP() / + std::max(1.0f, owner_->GetLastAttacker().Get()->GetMaxHP()); } bool HeroAgent::GetNewAttackerInRange(float range) { - + if (!HasNewAttacker()) { + return false; + } + return Collision::InSquare + (owner_->GetLastAttacker().Get()->GetPos().ToGlmVec3(), + owner_->GetPos().ToGlmVec3(), + range); } int HeroAgent::GetNewAttackerPassTime() { - + return (owner_->room->GetFrameNo() - owner_->GetLastBeAttackFrameNo()) * FRAME_RATE_MS; } bool HeroAgent::HasNewAttacker() { - + if (!current_target_agent->IsValid()) { + return false; + } + if (!owner_->GetLastAttacker().Get()) { + return false; + } + return current_target_agent->GetUniId() != owner_->GetLastAttacker().Get()->GetUniId() && + owner_->GetLastAttacker().Get()->revive_count == owner_->GetLastAttackerReviveTimes(); } bool HeroAgent::NewAttackerIsHuman() { - + return owner_->GetLastAttacker().Get()->IsHuman(); } bool HeroAgent::SwitchToNewAttacker() { + if (HasNewAttacker()) { + } + return true; }