diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index e9d85ea6..9c3a34ca 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -729,3 +729,8 @@ int BattleDataContext::GetReloadTime(Creature* c, Weapon* weapon) auto p = GetWeaponByUniId(weapon->weapon_uniid); return p ? p->GetReloadTime() : weapon->meta->i->reload_time(); } + +float BattleDataContext::GetExtRecoverHp() +{ + return 0; +} diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index 8c5f80ab..c0484c05 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -70,6 +70,7 @@ struct BattleDataContext int GetFireRate(Creature* c, Weapon* weapon); int GetReloadTime(Creature* c, Weapon* weapon); float GetHeroTotalAtk(); + float GetExtRecoverHp(); private: void Clear(); diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 8c93dba2..419cad77 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -1000,39 +1000,27 @@ void Buff::ProcMachineGun() caster_.Get()->need_sync_active_player = true; caster_.Get()->UpdateCharImage(__FILE__, __LINE__, __func__); } - if (skill_meta) { + if (skill_meta && skill_meta->number_meta) { switch (skill_meta->GetMagicId()) { case MAGIC_HLYZ: { - if (meta->i->buff_id() == 208011) { - owner->room->xtimer.ModifyTimer - (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); - } else { - - } + owner->room->xtimer.ModifyTimer + (remover_timer, + skill_meta->number_meta->int_time / FRAME_RATE_MS); } break; case MAGIC_HJHX: { - if (meta->i->buff_id() == 202012) { - owner->room->xtimer.ModifyTimer - (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); - } else { - - } + owner->room->xtimer.ModifyTimer + (remover_timer, + skill_meta->number_meta->int_time / FRAME_RATE_MS); } break; case MAGIC_FG: { - if (meta->i->buff_id() == 204011) { - owner->room->xtimer.ModifyTimer - (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); - } else { - - } + owner->room->xtimer.ModifyTimer + (remover_timer, + skill_meta->number_meta->int_time / FRAME_RATE_MS); } break; default: diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 8c6331f8..1a7b399b 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1392,7 +1392,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::XPrintf("old_pos:%f,%f", {GetPos().x, GetPos().y}); #endif #if 1 - _UpdateMove(CurrentSkill()->meta->number_meta->int_range); + _UpdateMove(SkillHelper::GetSjydhxForthDistance(CurrentSkill()->meta)); #else _UpdateMove(phase->param1.GetInt()); #endif @@ -1407,7 +1407,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) ( SMT_BLINK, #if 1 - CurrentSkill()->meta->number_meta->float_time * 1000, + SkillHelper::GetSjydhxForthDistance(CurrentSkill()->meta) * 1000, #else phase->param2.GetInt() * 1000, #endif diff --git a/server/gameserver/skillhelper.cc b/server/gameserver/skillhelper.cc index d797181e..eeab4353 100644 --- a/server/gameserver/skillhelper.cc +++ b/server/gameserver/skillhelper.cc @@ -157,11 +157,6 @@ void SkillHelper::GetMagicIdAndBaseSkillId(int skill_id, int& magic_id, int& bas } } -int SkillHelper::GetAxxfDmg(const MetaData::Skill* skill_meta) -{ - return 0; -} - int SkillHelper::GetCmxdDmg(const MetaData::Skill* skill_meta) { return 0; @@ -229,7 +224,21 @@ void SkillHelper::ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid) float SkillHelper::GetSjydhxRecoverHp(Creature* c, const MetaData::Skill* skill_meta) { - return 0; + float hp = + (skill_meta->number_meta->float_ratio + + skill_meta->number_meta->float_ratio * c->GetBattleContext()->GetHeroTotalAtk()) * + (1 + c->GetBattleContext()->GetExtRecoverHp()); + return hp; +} + +float SkillHelper::GetSjydhxForthDistance(const MetaData::Skill* skill_meta) +{ + return skill_meta && skill_meta->number_meta ? skill_meta->number_meta->int_range : 0; +} + +float SkillHelper::GetSjydhxBackTime(const MetaData::Skill* skill_meta) +{ + return skill_meta && skill_meta->number_meta ? skill_meta->number_meta->float_time : 0; } int SkillHelper::GetYmczBuffTime(const MetaData::Skill* skill_meta) diff --git a/server/gameserver/skillhelper.h b/server/gameserver/skillhelper.h index 4ff8a72e..a8178812 100644 --- a/server/gameserver/skillhelper.h +++ b/server/gameserver/skillhelper.h @@ -15,10 +15,10 @@ class SkillHelper static void GetMagicIdAndBaseSkillId(int skill_id, int& magic_id, int& base_skill_id); - //爱心香风 - static int GetAxxfDmg(const MetaData::Skill* skill_meta); //瞬间移动回血 static float GetSjydhxRecoverHp(Creature* c, const MetaData::Skill* skill_meta); + static float GetSjydhxForthDistance(const MetaData::Skill* skill_meta); + static float GetSjydhxBackTime(const MetaData::Skill* skill_meta); //此面向敌 static int GetCmxdDmg(const MetaData::Skill* skill_meta); static int GetCmxdDistance(const MetaData::Skill* skill_meta);