This commit is contained in:
aozhiwei 2022-09-06 16:31:40 +08:00
parent 4d444476b3
commit 7a660c1f6c
2 changed files with 43 additions and 7 deletions

View File

@ -19,6 +19,36 @@ public:
std::array<float, kHAT_End> attr_abs_ = {};
std::array<float, kHAT_End> attr_rate_ = {};
float GetAtk()
{
return hero_meta->i->damage();
}
float GetDef()
{
return hero_meta->i->defence();
}
float GetCritAtk()
{
return hero_meta->i->crit_atk();
}
float GetCritAtkRatio()
{
return hero_meta->i->crit_atk_ratio();
}
float GetDodge()
{
return hero_meta->i->miss();
}
float GetDodgeDamageRuduce()
{
return hero_meta->i->miss_damage_ruduce();
}
};
class WeaponAbility
@ -313,7 +343,7 @@ float BattleDataContext::CalcDmg(Creature* target, Bullet* bullet)
float total_atk = GetTotalAtk(bullet);
float normal_dmg = total_atk * (1 - target->GetBattleContext()->GetDef() / 1000);
float crit = IsCrit() ? GetCritRate() : 0;
float dodge = IsDodge() ? GetDodgeRate() : 0;
float dodge = IsDodge() ? GetDodgeRuduce() : 0;
float finaly_dmg = normal_dmg * (1.0f + crit + dodge);
return finaly_dmg;
}
@ -358,12 +388,12 @@ bool BattleDataContext::IsDodge()
float BattleDataContext::GetCritRate()
{
return crit_damage_rate;
return crit_damage_rate_;
}
float BattleDataContext::GetDodgeRate()
float BattleDataContext::GetDodgeRuduce()
{
return dodge_damage_rate;
return dodge_damage_ruduce_;
}
std::shared_ptr<WeaponAbility> BattleDataContext::GetWeaponByUniId(long long weapon_uuid)
@ -404,4 +434,10 @@ void BattleDataContext::Init(Creature* c)
if (!hero_ability_->hero_uniid_) {
hero_ability_->hero_uniid_ = App::Instance()->AllocTempHeroUniId();
}
atk_ = hero_ability_->GetAtk();
def_ = hero_ability_->GetDef();
crit_ = hero_ability_->GetCritAtk();
crit_damage_rate_ = hero_ability_->GetCritAtkRatio();
dodge_ = hero_ability_->GetDodge();
dodge_damage_ruduce_ = hero_ability_->GetDodgeDamageRuduce();
}

View File

@ -76,7 +76,7 @@ private:
bool IsCrit();
float GetCritRate();
bool IsDodge();
float GetDodgeRate();
float GetDodgeRuduce();
std::shared_ptr<WeaponAbility> GetWeaponByUniId(long long weapon_uniid);
private:
@ -89,7 +89,7 @@ private:
float atk_ = 0;
float def_ = 0;
float crit_ = 0;
float crit_damage_rate = 0;
float crit_damage_rate_ = 0;
float dodge_ = 0;
float dodge_damage_rate = 0;
float dodge_damage_ruduce_ = 0;
};