1
This commit is contained in:
parent
19dc2f68d2
commit
123aba42fc
@ -193,6 +193,7 @@ private:
|
|||||||
{
|
{
|
||||||
hp_ = finaly_attr_abs[kHAT_Hp] + base_attr_abs[kHAT_Hp] * finaly_attr_rate[kHAT_HP_RATE];
|
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];
|
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_ = finaly_attr_rate[kHAT_CRIT] * 1000;
|
||||||
crit_atk_ratio_ = finaly_attr_rate[kHAT_CRIT_DAMAGE_RATE];
|
crit_atk_ratio_ = finaly_attr_rate[kHAT_CRIT_DAMAGE_RATE];
|
||||||
dodge_ = finaly_attr_rate[kHAT_DODGE];
|
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 = {0};
|
||||||
g_calc_dmg_context.is_crit = IsCrit(bullet) ? 1 : 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);
|
float total_atk = GetTotalAtk(bullet);
|
||||||
if (bullet->GetSkillMeta() && bullet->GetSkillMeta()->_number_meta) {
|
if (bullet->GetSkillMeta() && bullet->GetSkillMeta()->_number_meta) {
|
||||||
switch (bullet->GetSkillMeta()->GetMagicId()) {
|
switch (bullet->GetSkillMeta()->GetMagicId()) {
|
||||||
@ -584,34 +574,15 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
float normal_dmg = total_atk * (1 - target->GetBattleContext()->GetDef() / (target->GetBattleContext()->GetDef() + 400));
|
float normal_dmg = total_atk *
|
||||||
normal_dmg *= 1 + bullet->GetStrengthenWall();
|
(1 - target->GetBattleContext()->GetDef() / (target->GetBattleContext()->GetDef() + 200));
|
||||||
float crit = g_calc_dmg_context.is_crit ? GetCritRate(bullet) : 0;
|
if (g_calc_dmg_context.is_crit) {
|
||||||
float dodge = IsDodge(bullet) ? GetDodgeRuduce(bullet) : 0;
|
normal_dmg *= 1.5;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
#endif
|
float finaly_dmg = normal_dmg;
|
||||||
#endif
|
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);
|
finaly_dmg = std::max(1.0f, finaly_dmg);
|
||||||
if (g_calc_dmg_context.is_crit) {
|
if (g_calc_dmg_context.is_crit) {
|
||||||
g_calc_dmg_context.crit_dmg = finaly_dmg;
|
g_calc_dmg_context.crit_dmg = finaly_dmg;
|
||||||
|
@ -2,18 +2,6 @@
|
|||||||
|
|
||||||
#include "weakptr.h"
|
#include "weakptr.h"
|
||||||
|
|
||||||
/*
|
|
||||||
子弹命中逻辑
|
|
||||||
1、计算总攻击力
|
|
||||||
2、计算普通伤害
|
|
||||||
3、判断是否暴击(百分比系数),对方是否闪避(系数)
|
|
||||||
4、得到实际伤害
|
|
||||||
|
|
||||||
免伤后伤害=实际伤害*(1-免伤率)
|
|
||||||
吸血值=吸血系数*实际伤害
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace MetaData
|
namespace MetaData
|
||||||
{
|
{
|
||||||
struct Equip;
|
struct Equip;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user