1
This commit is contained in:
parent
4d444476b3
commit
7a660c1f6c
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user