From 123aba42fc87cf7b1453aebd1732ffe3f43026cb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Mar 2023 12:08:13 +0800 Subject: [PATCH] 1 --- server/gameserver/battledatacontext.cc | 47 +++++--------------------- server/gameserver/battledatacontext.h | 12 ------- 2 files changed, 9 insertions(+), 50 deletions(-) diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 66cf6df8..f3eefef8 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -193,6 +193,7 @@ private: { hp_ = finaly_attr_abs[kHAT_Hp] + base_attr_abs[kHAT_Hp] * finaly_attr_rate[kHAT_HP_RATE]; atk_ = finaly_attr_abs[kHAT_Atk] + base_attr_abs[kHAT_Atk] * finaly_attr_rate[kHAT_ATK_RATE]; + def_ = finaly_attr_abs[kHAT_Def] + base_attr_abs[kHAT_Def] * finaly_attr_rate[kHAT_DEF_RATE]; crit_atk_ = finaly_attr_rate[kHAT_CRIT] * 1000; crit_atk_ratio_ = finaly_attr_rate[kHAT_CRIT_DAMAGE_RATE]; dodge_ = finaly_attr_rate[kHAT_DODGE]; @@ -557,17 +558,6 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) g_calc_dmg_context = {0}; g_calc_dmg_context.is_crit = IsCrit(bullet) ? 1 : 0; -#if 1 - float total_atk = GetTotalAtk(bullet); - float normal_dmg = total_atk * - (1 - target->GetBattleContext()->GetDef() / (target->GetBattleContext()->GetDef() + 200)); - if (g_calc_dmg_context.is_crit) { - normal_dmg *= 1.5; - } - float finaly_dmg = normal_dmg; - finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg)); //连加 - finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHVAT_Dmg); //(1-减免) 连乘 -#else float total_atk = GetTotalAtk(bullet); if (bullet->GetSkillMeta() && bullet->GetSkillMeta()->_number_meta) { switch (bullet->GetSkillMeta()->GetMagicId()) { @@ -584,34 +574,15 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) break; } } - float normal_dmg = total_atk * (1 - target->GetBattleContext()->GetDef() / (target->GetBattleContext()->GetDef() + 400)); - normal_dmg *= 1 + bullet->GetStrengthenWall(); - float crit = g_calc_dmg_context.is_crit ? GetCritRate(bullet) : 0; - float dodge = IsDodge(bullet) ? GetDodgeRuduce(bullet) : 0; - float finaly_dmg = normal_dmg * (1.0f + crit + dodge); - finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetDmgAddition()); - finaly_dmg *= (1 - target->GetAbility()->GetDmgRuduce()); -#if 1 - finaly_dmg *= (1 + bullet->GetStrengthenWall()); -#endif -#ifdef DEBUG - if (owner_.Get()->IsPlayer()) { - std::string data = a8::Format - ("数值: 子弹攻击怪物 total_atk:%f hero_atk:%f weapon_%f normal_dmg:%f crit:%f dodge:%f finaly_dmg:%f target_def:%f", - { - total_atk, - normal_dmg, - GetHeroTotalAtk(), - GetWeaponAtk(bullet), - crit, - dodge, - finaly_dmg, - target->GetBattleContext()->GetDef() - }); - owner_.Get()->SendDebugMsg(data); + float normal_dmg = total_atk * + (1 - target->GetBattleContext()->GetDef() / (target->GetBattleContext()->GetDef() + 200)); + if (g_calc_dmg_context.is_crit) { + normal_dmg *= 1.5; } -#endif -#endif + float finaly_dmg = normal_dmg; + finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg)); //连加 + finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHVAT_Dmg); //(1-减免) 连乘 + finaly_dmg = std::max(1.0f, finaly_dmg); if (g_calc_dmg_context.is_crit) { g_calc_dmg_context.crit_dmg = finaly_dmg; diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index df17ec5c..8f7047ea 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -2,18 +2,6 @@ #include "weakptr.h" -/* - 子弹命中逻辑 - 1、计算总攻击力 - 2、计算普通伤害 - 3、判断是否暴击(百分比系数),对方是否闪避(系数) - 4、得到实际伤害 - - 免伤后伤害=实际伤害*(1-免伤率) - 吸血值=吸血系数*实际伤害 - - */ - namespace MetaData { struct Equip;