From 7a660c1f6c6b3150576d4958b5a7083e7ce3130d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 6 Sep 2022 16:31:40 +0800 Subject: [PATCH] 1 --- server/gameserver/battledatacontext.cc | 44 +++++++++++++++++++++++--- server/gameserver/battledatacontext.h | 6 ++-- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 9cb33be1..37d18610 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -19,6 +19,36 @@ public: std::array attr_abs_ = {}; std::array 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 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(); } diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index d8dd0ccc..1899d195 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -76,7 +76,7 @@ private: bool IsCrit(); float GetCritRate(); bool IsDodge(); - float GetDodgeRate(); + float GetDodgeRuduce(); std::shared_ptr 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; };