diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 6e5a8516..08dcbbcc 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -668,6 +668,16 @@ float BattleDataContext::CalcDmg(Obstacle* target, IBullet* bullet) return finaly_dmg; } +float BattleDataContext::CalcReceiveDmg(Creature* sender, float normal_dmg) +{ + float finaly_dmg = normal_dmg; + finaly_dmg *= (1 + sender.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg)); //连加 + finaly_dmg *= GetAbility()->GetAttrRuduce(kHVAT_Dmg); //(1-减免) 连乘 + + finaly_dmg = std::max(1.0f, finaly_dmg); + return std::round(finaly_dmg); +} + float BattleDataContext::CalcDmg(Explosion* e) { g_calc_dmg_context = {0}; diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index 1eb6030a..694d0115 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -68,6 +68,7 @@ struct BattleDataContext float GetDrugEfficacyPct(); float GetTenacityPct(); float GetRecoverHpAdd(); + float CalcReceiveDmg(Creature* sender, float normal_dmg); void SetReviveCoin(int num); int GetReviveCoin(); diff --git a/server/gameserver/skillhelper.cc b/server/gameserver/skillhelper.cc index f55cb727..2af75e66 100644 --- a/server/gameserver/skillhelper.cc +++ b/server/gameserver/skillhelper.cc @@ -323,6 +323,7 @@ int SkillHelper::GetYlzRecoverHp(Creature* sender, Creature* target, const mt::S float hp = skill_meta->_number_meta->resume() + skill_meta->_number_meta->resume_addition() * sender->GetBattleContext()->GetHeroTotalAtk(); + hp *= 1.0f + sender->GetBattleContext()->GetRecoverHpAdd(); return hp; }