diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index 9fc6858b..c1281a20 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -124,15 +124,10 @@ public: void Init(Creature* c) { -#ifdef NEW_NUM DefaultInit(c); -#else if (hero_dto) { DtoInit(c); - } else { - DefaultInit(c); } -#endif } void RecalcHp() @@ -284,78 +279,6 @@ private: void DtoInit(Creature* c) { - std::array base_attr_abs = {0}; - std::array base_attr_rate = {0}; - - std::array pro_attr_abs = {0}; - std::array pro_attr_rate = {0}; - - std::array skill_attr_abs = {0}; - std::array skill_attr_rate = {0}; - - std::array chip_attr_abs = {0}; - std::array chip_attr_rate = {0}; - - std::array core_attr_abs = {0}; - std::array core_attr_rate = {0}; - - { - std::shared_ptr attr_base_xobj = hero_dto->At("attr_base"); - if (attr_base_xobj && attr_base_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs, base_attr_rate); - } - } - { - std::shared_ptr attr_base_xobj = hero_dto->At("rand_attr"); - if (attr_base_xobj && attr_base_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs, base_attr_rate); - } - } - { - std::shared_ptr attr_pro_xobj = hero_dto->At("attr_pro"); - if (attr_pro_xobj && attr_pro_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_pro_xobj, pro_attr_abs, pro_attr_rate); - } - } - { - std::shared_ptr attr_skill_xobj = hero_dto->At("attr_skill"); - if (attr_skill_xobj && attr_skill_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_skill_xobj, skill_attr_abs, skill_attr_rate); - } - } - { - std::shared_ptr attr_chip_xobj = hero_dto->At("attr_chip"); - if (attr_chip_xobj && attr_chip_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_chip_xobj, chip_attr_abs, chip_attr_rate); - } - } - { - std::shared_ptr attr_core_xobj = hero_dto->At("attr_core"); - if (attr_core_xobj && attr_core_xobj->IsArray()) { - AttrHelper::ParseAttr(attr_core_xobj, core_attr_abs, core_attr_rate); - } - } - - std::array finaly_attr_abs = base_attr_abs; - std::array finaly_attr_rate = base_attr_rate; - for (int i = 0; i < kHAT_End; ++i) { - if (pro_attr_abs[i] > 0.000f) { - finaly_attr_abs[i] = pro_attr_abs[i]; - } - if (pro_attr_rate[i] > 0.000f) { - finaly_attr_rate[i] = pro_attr_rate[i]; - } - - finaly_attr_abs[i] += skill_attr_abs[i]; - finaly_attr_rate[i] += skill_attr_rate[i]; - - finaly_attr_abs[i] += chip_attr_abs[i]; - finaly_attr_rate[i] += chip_attr_rate[i]; - - finaly_attr_abs[i] += core_attr_abs[i]; - finaly_attr_rate[i] += core_attr_rate[i]; - } - } private: @@ -861,8 +784,8 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) vDmg = owner_.Get()->GetAbility()->GetAttr(kHVAT_DirectAtk) * vBullet / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn); } - float DDR = 0.0f; - float DTR = 0.0f; + float DDR = owner_.Get()->GetAbility()->GetAttr(kHAT_vDamageDealtRateIn); + float DTR = target->GetAbility()->GetAttr(kHAT_vDamageTakenRateIn); float finaly_dmg = vDmg * vEbc * vEd * (1 + DDR) * (1 + DTR); #ifdef MYDEBUG if (owner_.Get()->IsPlayer()) { @@ -1276,7 +1199,7 @@ float BattleDataContext::GetDrugTimePct() float BattleDataContext::GetDrugEfficacyPct() { - return hero_ability_->GetDrugEfficacyPct(); + return owner_.Get()->GetAbility()->GetAttr(kHAT_vHealthGainRateIn); } float BattleDataContext::GetTenacityPct()