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_abs_ = {};
std::array<float, kHAT_End> attr_rate_ = {}; 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 class WeaponAbility
@ -313,7 +343,7 @@ float BattleDataContext::CalcDmg(Creature* target, Bullet* bullet)
float total_atk = GetTotalAtk(bullet); float total_atk = GetTotalAtk(bullet);
float normal_dmg = total_atk * (1 - target->GetBattleContext()->GetDef() / 1000); float normal_dmg = total_atk * (1 - target->GetBattleContext()->GetDef() / 1000);
float crit = IsCrit() ? GetCritRate() : 0; float crit = IsCrit() ? GetCritRate() : 0;
float dodge = IsDodge() ? GetDodgeRate() : 0; float dodge = IsDodge() ? GetDodgeRuduce() : 0;
float finaly_dmg = normal_dmg * (1.0f + crit + dodge); float finaly_dmg = normal_dmg * (1.0f + crit + dodge);
return finaly_dmg; return finaly_dmg;
} }
@ -358,12 +388,12 @@ bool BattleDataContext::IsDodge()
float BattleDataContext::GetCritRate() 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) std::shared_ptr<WeaponAbility> BattleDataContext::GetWeaponByUniId(long long weapon_uuid)
@ -404,4 +434,10 @@ void BattleDataContext::Init(Creature* c)
if (!hero_ability_->hero_uniid_) { if (!hero_ability_->hero_uniid_) {
hero_ability_->hero_uniid_ = App::Instance()->AllocTempHeroUniId(); 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(); bool IsCrit();
float GetCritRate(); float GetCritRate();
bool IsDodge(); bool IsDodge();
float GetDodgeRate(); float GetDodgeRuduce();
std::shared_ptr<WeaponAbility> GetWeaponByUniId(long long weapon_uniid); std::shared_ptr<WeaponAbility> GetWeaponByUniId(long long weapon_uniid);
private: private:
@ -89,7 +89,7 @@ private:
float atk_ = 0; float atk_ = 0;
float def_ = 0; float def_ = 0;
float crit_ = 0; float crit_ = 0;
float crit_damage_rate = 0; float crit_damage_rate_ = 0;
float dodge_ = 0; float dodge_ = 0;
float dodge_damage_rate = 0; float dodge_damage_ruduce_ = 0;
}; };