diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index cb08008d..be7bd0e1 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -566,9 +566,6 @@ void Skill::ProcCMXD() if (c->dead) { return; } - if (c->GetAbility()->GetImmuneVertigoTimes() > 0) { - return; - } float dmg = SkillHelper::GetCmxdDmg(sender.Get(), skill_meta); c->DecHP(dmg, VP_Explosion, @@ -580,6 +577,11 @@ void Skill::ProcCMXD() dir * SkillHelper::GetCmxdDistance(skill_meta); c->PullTarget(target_pos); } + if (c->GetAbility()->GetImmuneVertigoTimes() <= 0) { + c->TryAddBuffAndSetTime(sender.Get(), + kVertigoBuffId, + SkillHelper::GetCmxdVertigoTime(skill_meta) * 1000); + } } } } diff --git a/server/gameserver/skillhelper.cc b/server/gameserver/skillhelper.cc index 07c27554..0caa9e36 100644 --- a/server/gameserver/skillhelper.cc +++ b/server/gameserver/skillhelper.cc @@ -190,6 +190,11 @@ int SkillHelper::GetCmxdExplosion(const MetaData::Skill* skill_meta) return 9; } +int SkillHelper::GetCmxdVertigoTime(const MetaData::Skill* skill_meta) +{ + return skill_meta->number_meta->float_time; +} + int SkillHelper::GetJshxHp(Creature* c, const MetaData::Skill* skill_meta) { float hp = diff --git a/server/gameserver/skillhelper.h b/server/gameserver/skillhelper.h index 236c6235..2744fc87 100644 --- a/server/gameserver/skillhelper.h +++ b/server/gameserver/skillhelper.h @@ -25,6 +25,7 @@ class SkillHelper static int GetCmxdRange(const MetaData::Skill* skill_meta); static int GetCmxdDistance(const MetaData::Skill* skill_meta); static int GetCmxdExplosion(const MetaData::Skill* skill_meta); + static int GetCmxdVertigoTime(const MetaData::Skill* skill_meta); //击杀回血 static int GetJshxHp(Creature* c, const MetaData::Skill* skill_meta); //死亡自爆