From 4e18a90b591fc7978d32596ae0cb6ef87e12e303 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 25 Jul 2020 22:32:38 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 605da54..2073691 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3050,15 +3050,20 @@ void Human::ProcBuffEffect(Buff* buff) { Entity* entity = room->GetEntityByUniId(skill_target_id); if (entity) { - if (entity->GetPos().Distance(GetPos()) <= 0.000001f) { + float target_distance = entity->GetPos().Distance(GetPos()); + if (target_distance <= 0.000001f) { SetPos(entity->GetPos()); skill_target_pos = entity->GetPos(); } else { - move_dir = entity->GetPos() - GetPos(); - move_dir.Normalize(); - skill_target_pos = entity->GetPos(); - skill_dir = skill_target_pos - GetPos(); - skill_dir.Normalize(); + if (target_distance <= buff->meta->param3) { + SetPos(entity->GetPos()); + skill_target_pos = entity->GetPos(); + } else { + move_dir = entity->GetPos() - GetPos(); + move_dir.Normalize(); + skill_dir = move_dir; + skill_target_pos = GetPos() + move_dir * (target_distance - buff->meta->param3); + } } } }