diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index beff8706..8edcd174 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -638,7 +638,7 @@ void Skill::Proc30601DJS() abort(); } if (active_skill_meta) { - owner->GetAbility()->AddSpeedRuduce(active_skill_meta->_number_meta->_float_speed); + hum->GetAbility()->AddSpeedRuduce(active_skill_meta->_number_meta->_float_speed); } std::vector buff_list; (*in_human_infos)[hum] = std::make_tuple(1, buff_list); @@ -646,7 +646,14 @@ void Skill::Proc30601DJS() auto on_stay = [this] (Human* hum, const mt::Skill* active_skill_meta) { - + if (hum->GetHP() < hum->GetMaxHP()) { + if (active_skill_meta) { + hum->AddHp(active_skill_meta->_number_meta->resume() + + hum->GetMaxHP() * active_skill_meta->_number_meta->resume_addition()); + } else { + hum->AddHp(hum->GetMaxHP() * meta->_number_meta->resume()); + } + } }; auto on_leave = [this, in_human_infos] (Human* hum, const mt::Skill* active_skill_meta) @@ -655,7 +662,7 @@ void Skill::Proc30601DJS() abort(); } if (active_skill_meta) { - owner->GetAbility()->DelSpeedRuduce(active_skill_meta->_number_meta->_float_speed); + hum->GetAbility()->DelSpeedRuduce(active_skill_meta->_number_meta->_float_speed); } in_human_infos->erase(hum); };