diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 35534670..ccd30761 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -869,76 +869,64 @@ bool HeroAgent::InternalUseSkill(int skill_id, int& wait_time) float skill_distance = GlmHelper::Norm(skill_dir); GlmHelper::Normalize(skill_dir); + bool use_ok = false; switch (skill->GetCurrSkillMeta()->GetMagicId()) { case MAGIC_20101_HL: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20701_BAO: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20801_LONG: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20901_XIONG: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_21001_NIU: { -#if 0 - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; -#endif + abort(); } break; case MAGIC_20201_HX: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20401_MAO: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20601_DJS: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_20301_XL: { - skill_distance = 30; - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + skill_distance = a8::RandEx(20, 60); + use_ok = true; } break; case MAGIC_20501_TZ: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; case MAGIC_60100_1_BOSS: case MAGIC_60100_2_BOSS: case MAGIC_60100_3_BOSS: { - owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); - return true; + use_ok = true; } break; default: @@ -946,6 +934,10 @@ bool HeroAgent::InternalUseSkill(int skill_id, int& wait_time) } break; } + if (use_ok) { + owner_->DoSkill(skill->GetSkillId(), current_target_agent->GetUniId(), skill_dir, skill_distance); + return true; + } } return false; }