diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 9186f847..93ebd0f1 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -712,7 +712,7 @@ bool HeroAgent::InTargetShotRange() if (!current_target_agent->IsValid()) { return false; } - float shot_range = GetShotRange(); + float shot_range = current_target_agent->GetShotRange(); bool in_square = Collision::InSquare (GetPos(), current_target_agent->GetPos(), diff --git a/server/gameserver/target_agent.cc b/server/gameserver/target_agent.cc index e5a12c61..3fa56cd9 100644 --- a/server/gameserver/target_agent.cc +++ b/server/gameserver/target_agent.cc @@ -86,3 +86,11 @@ Room* TargetAgent::GetRoom() { return owner_->room; } + +float TargetAgent::GetShotRange() +{ + if (target_.Get() && target_.Get()->GetCurrWeapon()) { + return target_.Get()->GetCurrWeapon()->meta->range(); + } + return 0.0f; +} diff --git a/server/gameserver/target_agent.h b/server/gameserver/target_agent.h index d074a657..efaf87b0 100644 --- a/server/gameserver/target_agent.h +++ b/server/gameserver/target_agent.h @@ -22,6 +22,7 @@ public: int GetHeroId(); int GetLevel(); void Abandon(); + float GetShotRange(); void SetOwner(Creature* owner); virtual Room* GetRoom() override;