This commit is contained in:
aozhiwei 2024-01-11 13:49:43 +08:00
parent 6ed9f14c8e
commit c5485b58a3
9 changed files with 134 additions and 185 deletions

View File

@ -38,25 +38,25 @@ struct AttrAddition : public std::enable_shared_from_this<AttrAddition>
static bool IsMulCalc(int attr_id) static bool IsMulCalc(int attr_id)
{ {
switch (attr_id) { switch (attr_id) {
case kNHAT_pHealthRateIn: case kHAT_pHealthRateIn:
case kNHAT_vHealthRateIn: case kHAT_vHealthRateIn:
case kNHAT_pAttackRateIn: case kHAT_pAttackRateIn:
case kNHAT_vAttackRateIn: case kHAT_vAttackRateIn:
case kNHAT_pDefendRateIn: case kHAT_pDefendRateIn:
case kNHAT_pBlockRateIn: case kHAT_pBlockRateIn:
case kNHAT_pCritRateIn: case kHAT_pCritRateIn:
case kNHAT_vSpeedRateIn: case kHAT_vSpeedRateIn:
case kNHAT_vHaste: case kHAT_vHaste:
case kNHAT_vDrain: case kHAT_vDrain:
case kNHAT_vTenacity: case kHAT_vTenacity:
case kNHAT_vDamageTakenRateIn: case kHAT_vDamageTakenRateIn:
case kNHAT_vDamageDealtRateIn: case kHAT_vDamageDealtRateIn:
case kNHAT_vNormalDamageTakenRateIn: //受击方 case kHAT_vNormalDamageTakenRateIn: //受击方
case kNHAT_vNormalDamageDealtRateIn: //攻击方 case kHAT_vNormalDamageDealtRateIn: //攻击方
case kNHAT_vSkillDamageTakenRateIn: //受击方 case kHAT_vSkillDamageTakenRateIn: //受击方
case kNHAT_vSkillDamageDealtRateIn: //攻击方 case kHAT_vSkillDamageDealtRateIn: //攻击方
case kNHAT_vHealthGainRateIn: case kHAT_vHealthGainRateIn:
case kNHAT_vHealDealtRateIn: case kHAT_vHealDealtRateIn:
{ {
return true; return true;
} }

View File

@ -38,9 +38,9 @@ private:
private: private:
CreatureWeakPtr owner_; CreatureWeakPtr owner_;
std::array<std::tuple<float, list_head>, kNHAT_End> attr_add_ = {}; std::array<std::tuple<float, list_head>, kHAT_End> attr_add_ = {};
std::array<std::tuple<float, list_head>, kNHAT_End> attr_dec_ = {}; std::array<std::tuple<float, list_head>, kHAT_End> attr_dec_ = {};
std::array<list_head, kNHAT_End> attr_list_ = {}; std::array<list_head, kHAT_End> attr_list_ = {};
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_add_ = {}; std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_add_ = {};
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_dec_ = {}; std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_dec_ = {};
std::array<list_head, kHVAT_End - kHVAT_Begin> vattr_list_ = {}; std::array<list_head, kHVAT_End - kHVAT_Begin> vattr_list_ = {};

View File

@ -1,110 +1,59 @@
#pragma once #pragma once
enum HumanAttrType_e
{
kXHAT_Begin = 0,
kXHAT_Hp = 1,
kXHAT_HPRecover = 2,
kXHAT_Atk = 3,
kXHAT_Def = 4,
kXHAT_Speed = 5,
kXHAT_ShotRange = 6,
kXHAT_ShotSpeed = 7,
kXHAT_ReloadSpeed = 8,
kXHAT_FireRate = 9,
kXHAT_Volume = 10,
kXHAT_MaxHp = 11,
kXHAT_ShotView = 12,
kXHAT_ReloadTime = 14,
kXHAT_WeaponDmg = 20,
kXHAT_WeaponShotSpeed = 21,
kXHAT_WeaponReloadTime = 22,
kXHAT_WeaponExplosionRange = 23,
kXHAT_WeaponExplosionContinueTime = 24,
kXHAT_PoisoningReduction = 25,
kXHAT_RescueTime = 26,
kXHAT_DrugTime = 27,
kXHAT_DrugEfficacy = 28,
kXHAT_CarOil = 29,
kXHAT_WeaponExplosionDealyTime = 30,
kXHAT_RecoverHpAdd = 31,
kXHAT_SkillTime = 32,
kXHAT_WeaponThrowRange = 33,
kXHAT_LUCKY = 34,
kXHAT_HP_RATE = 39,
kXHAT_ATK_RATE = 40,
kXHAT_DEF_RATE = 41,
kXHAT_CRIT = 42,
kXHAT_CRIT_DAMAGE_RATE = 43,
kXHAT_DODGE = 44,
kXHAT_DODGE_DAMAGE_RATE = 45,
kXHAT_HpRecoverPct = 46,
kXHAT_BrainLifePct = 47,
kXHAT_ReloadTimePct = 48,
kXHAT_BulletSpeed = 49,
kXHAT_BulletSpeedPct = 50,
kXHAT_CoolDownPct = 51,
kXHAT_PickUpPct = 52,
kXHAT_Shield = 53,
kXHAT_Tenacity = 54,
kXHAT_End
};
A8_DECLARE_ENUM(NewHumanAttrType_e, A8_DECLARE_ENUM(NewHumanAttrType_e,
kNHAT_Begin = 0, kHAT_Begin = 0,
kNHAT_vCurrnetHealth = 1, kHAT_vCurrnetHealth = 1,
kNHAT_vHealth = 2, kHAT_vHealth = 2,
kNHAT_pHealth = 3, kHAT_pHealth = 3,
kNHAT_pHealthAm = 4, kHAT_pHealthAm = 4,
kNHAT_pHealthRateSe = 5, kHAT_pHealthRateSe = 5,
kNHAT_pHealthRateIn = 6, kHAT_pHealthRateIn = 6,
kNHAT_vHealthAm = 7, kHAT_vHealthAm = 7,
kNHAT_vHealthRateSe = 8, kHAT_vHealthRateSe = 8,
kNHAT_vHealthRateIn = 9, kHAT_vHealthRateIn = 9,
kNHAT_vAttack = 10, kHAT_vAttack = 10,
kNHAT_pAttack = 11, kHAT_pAttack = 11,
kNHAT_pAttackAm = 12, kHAT_pAttackAm = 12,
kNHAT_pAttackRateSe = 13, kHAT_pAttackRateSe = 13,
kNHAT_pAttackRateIn = 14, kHAT_pAttackRateIn = 14,
kNHAT_vAttackAm = 15, kHAT_vAttackAm = 15,
kNHAT_vAttackRateSe = 16, kHAT_vAttackRateSe = 16,
kNHAT_vAttackRateIn = 17, kHAT_vAttackRateIn = 17,
kNHAT_vDefend = 18, kHAT_vDefend = 18,
kNHAT_pDefend = 19, kHAT_pDefend = 19,
kNHAT_pDefendAm = 20, kHAT_pDefendAm = 20,
kNHAT_pDefendRateSe = 21, kHAT_pDefendRateSe = 21,
kNHAT_pDefendRateIn = 22, kHAT_pDefendRateIn = 22,
kNHAT_vBlock = 23, kHAT_vBlock = 23,
kNHAT_pBlock = 24, kHAT_pBlock = 24,
kNHAT_pBlockAm = 25, kHAT_pBlockAm = 25,
kNHAT_pBlockRateSe = 26, kHAT_pBlockRateSe = 26,
kNHAT_pBlockRateIn = 27, kHAT_pBlockRateIn = 27,
kNHAT_vBloPro = 28, kHAT_vBloPro = 28,
kNHAT_vBloDef = 29, kHAT_vBloDef = 29,
kNHAT_vCrit = 30, kHAT_vCrit = 30,
kNHAT_pCrit = 31, kHAT_pCrit = 31,
kNHAT_pCritAm = 32, kHAT_pCritAm = 32,
kNHAT_pCritRateSe = 33, kHAT_pCritRateSe = 33,
kNHAT_pCritRateIn = 34, kHAT_pCritRateIn = 34,
kNHAT_vCriPro = 35, kHAT_vCriPro = 35,
kNHAT_vCriBon = 36, kHAT_vCriBon = 36,
kNHAT_vSpeed = 37, kHAT_vSpeed = 37,
kNHAT_vSpeedRateIn = 38, kHAT_vSpeedRateIn = 38,
kNHAT_vHaste = 39, kHAT_vHaste = 39,
kNHAT_vDrain = 40, kHAT_vDrain = 40,
kNHAT_vTenacity = 41, kHAT_vTenacity = 41,
kNHAT_vDamageTakenRateIn = 42, kHAT_vDamageTakenRateIn = 42,
kNHAT_vDamageDealtRateIn = 43, kHAT_vDamageDealtRateIn = 43,
kNHAT_vNormalDamageTakenRateIn = 44, kHAT_vNormalDamageTakenRateIn = 44,
kNHAT_vNormalDamageDealtRateIn = 45, kHAT_vNormalDamageDealtRateIn = 45,
kNHAT_vSkillDamageTakenRateIn = 46, kHAT_vSkillDamageTakenRateIn = 46,
kNHAT_vSkillDamageDealtRateIn = 47, kHAT_vSkillDamageDealtRateIn = 47,
kNHAT_vHealthGainRateIn = 48, kHAT_vHealthGainRateIn = 48,
kNHAT_vHealDealtRateIn = 49, kHAT_vHealDealtRateIn = 49,
kNHAT_Hold = 55, kHAT_Hold = 55,
kNHAT_End kHAT_End
); );
A8_DECLARE_ENUM(HumanVirtualAttrType_e, A8_DECLARE_ENUM(HumanVirtualAttrType_e,

View File

@ -4,7 +4,7 @@
#include "attrhelper.h" #include "attrhelper.h"
float* AttrHelper::GetAttrAbsPtr(std::array<float, kNHAT_End>& attr, int attr_id) float* AttrHelper::GetAttrAbsPtr(std::array<float, kHAT_End>& attr, int attr_id)
{ {
if (!IsValidHumanAttr(attr_id)) { if (!IsValidHumanAttr(attr_id)) {
return nullptr; return nullptr;
@ -13,7 +13,7 @@ float* AttrHelper::GetAttrAbsPtr(std::array<float, kNHAT_End>& attr, int attr_id
} }
float* AttrHelper::GetAttrRatePtr(std::array<float, kNHAT_End>& attr, int attr_id) float* AttrHelper::GetAttrRatePtr(std::array<float, kHAT_End>& attr, int attr_id)
{ {
if (!IsValidHumanAttr(attr_id)) { if (!IsValidHumanAttr(attr_id)) {
return nullptr; return nullptr;
@ -22,8 +22,8 @@ float* AttrHelper::GetAttrRatePtr(std::array<float, kNHAT_End>& attr, int attr_i
} }
bool AttrHelper::ParseAttr(std::shared_ptr<a8::XObject> xobj, bool AttrHelper::ParseAttr(std::shared_ptr<a8::XObject> xobj,
std::array<float, kNHAT_End>& attr_abs, std::array<float, kHAT_End>& attr_abs,
std::array<float, kNHAT_End>& attr_rate) std::array<float, kHAT_End>& attr_rate)
{ {
if (xobj->IsArray()) { if (xobj->IsArray()) {
for (int i = 0; i < xobj->Size(); ++i) { for (int i = 0; i < xobj->Size(); ++i) {
@ -53,7 +53,7 @@ std::string AttrHelper::GetAttrName(int attr_id)
{ {
if (IsValidHumanAttr(attr_id)) { if (IsValidHumanAttr(attr_id)) {
std::string name = a8::GetEnumName<NewHumanAttrType_e>(attr_id); std::string name = a8::GetEnumName<NewHumanAttrType_e>(attr_id);
a8::ReplaceString(name, "kNHAT_", ""); a8::ReplaceString(name, "kHAT_", "");
return name; return name;
} else if (IsValidHumanVirtualAttr(attr_id)) { } else if (IsValidHumanVirtualAttr(attr_id)) {
std::string name = a8::GetEnumName<HumanVirtualAttrType_e>(attr_id); std::string name = a8::GetEnumName<HumanVirtualAttrType_e>(attr_id);

View File

@ -6,12 +6,12 @@ class AttrHelper
{ {
public: public:
static float* GetAttrAbsPtr(std::array<float, kNHAT_End>& attr, int attr_id); static float* GetAttrAbsPtr(std::array<float, kHAT_End>& attr, int attr_id);
static float* GetAttrRatePtr(std::array<float, kNHAT_End>& attr, int attr_id); static float* GetAttrRatePtr(std::array<float, kHAT_End>& attr, int attr_id);
static bool ParseAttr(std::shared_ptr<a8::XObject> xobj, static bool ParseAttr(std::shared_ptr<a8::XObject> xobj,
std::array<float, kNHAT_End>& attr_abs, std::array<float, kHAT_End>& attr_abs,
std::array<float, kNHAT_End>& attr_rate); std::array<float, kHAT_End>& attr_rate);
static std::string GetAttrName(int attr_id); static std::string GetAttrName(int attr_id);
}; };

View File

@ -3233,8 +3233,8 @@ float Creature::GetSpeed()
if (ruduce > 0.00001f) { if (ruduce > 0.00001f) {
ruduce = 1.0f - ruduce; ruduce = 1.0f - ruduce;
} }
addition += GetAbility()->GetAttrAddition(kNHAT_vSpeed); addition += GetAbility()->GetAttrAddition(kHAT_vSpeed);
ruduce = std::max(ruduce, GetAbility()->GetAttrRuduce(kNHAT_vSpeed)); ruduce = std::max(ruduce, GetAbility()->GetAttrRuduce(kHAT_vSpeed));
float rate = addition - ruduce; float rate = addition - ruduce;
finaly_speed *= 1.0f + rate; finaly_speed *= 1.0f + rate;
#ifdef MYDEBUG #ifdef MYDEBUG

View File

@ -17,7 +17,7 @@ bool IsValidBuffEffect(int buff_effect)
bool IsValidHumanAttr(int attr_type) bool IsValidHumanAttr(int attr_type)
{ {
return attr_type > kNHAT_Begin && attr_type < kNHAT_End; return attr_type > kHAT_Begin && attr_type < kHAT_End;
} }
bool IsValidHumanVirtualAttr(int attr_type) bool IsValidHumanVirtualAttr(int attr_type)

View File

@ -139,29 +139,29 @@ public:
{ {
auto ability = owner_.Get()->GetAbility(); auto ability = owner_.Get()->GetAbility();
float pHealRateAm = 0.0f; //加基础点数属性绝对值 float pHealRateAm = 0.0f; //加基础点数属性绝对值
float pHealthAm_Add = ability->GetAttr(kNHAT_pHealthAm); //buff或者养成的属性 float pHealthAm_Add = ability->GetAttr(kHAT_pHealthAm); //buff或者养成的属性
pHealRateAm += pHealthAm_Add; pHealRateAm += pHealthAm_Add;
float pHealthRateSe = 0.0f; float pHealthRateSe = 0.0f;
float pHealthRateSe_Add = ability->GetAttr(kNHAT_pHealthRateSe); //buff或者养成的属性 float pHealthRateSe_Add = ability->GetAttr(kHAT_pHealthRateSe); //buff或者养成的属性
pHealthRateSe += pHealthRateSe_Add; pHealthRateSe += pHealthRateSe_Add;
float pHealthRateIn = 0.0f; float pHealthRateIn = 0.0f;
float pHealthRateIn_Add = ability->GetAttr(kNHAT_pHealthRateIn); //buff或者养成的属性 float pHealthRateIn_Add = ability->GetAttr(kHAT_pHealthRateIn); //buff或者养成的属性
pHealthRateIn = (1 + pHealthRateIn) * (1 + pHealthRateIn_Add) - 1; pHealthRateIn = (1 + pHealthRateIn) * (1 + pHealthRateIn_Add) - 1;
float pHealth = (hero_meta->GetBasicMeta()->pOrigHealth() + pHealRateAm) * (1 + pHealthRateSe) * (1 + pHealthRateIn); float pHealth = (hero_meta->GetBasicMeta()->pOrigHealth() + pHealRateAm) * (1 + pHealthRateSe) * (1 + pHealthRateIn);
float vHealthAm = 0.0f; float vHealthAm = 0.0f;
float vHealthAm_Add = ability->GetAttr(kNHAT_vHealthAm); //buff或者养成的属性 float vHealthAm_Add = ability->GetAttr(kHAT_vHealthAm); //buff或者养成的属性
vHealthAm += vHealthAm_Add; vHealthAm += vHealthAm_Add;
float vHealthRateSe = 0.0f; float vHealthRateSe = 0.0f;
float vHealthRateSe_Add = ability->GetAttr(kNHAT_vHealthRateSe); //buff或者养成的属性 float vHealthRateSe_Add = ability->GetAttr(kHAT_vHealthRateSe); //buff或者养成的属性
vHealthRateSe += vHealthRateSe_Add; vHealthRateSe += vHealthRateSe_Add;
float vHealthRateIn = 0.0f; float vHealthRateIn = 0.0f;
float vHealthRateIn_Add = ability->GetAttr(kNHAT_vHealthRateIn); //buff或者养成的属性 float vHealthRateIn_Add = ability->GetAttr(kHAT_vHealthRateIn); //buff或者养成的属性
vHealthRateIn = (1 + vHealthRateIn) * (1 + vHealthRateIn_Add) - 1; vHealthRateIn = (1 + vHealthRateIn) * (1 + vHealthRateIn_Add) - 1;
hp_ = (hero_meta->GetBasicMeta()->vOrigHealth() * (1 + pHealth / hero_meta->GetBasicMeta()->pBaseHealth()) + vHealthAm) * hp_ = (hero_meta->GetBasicMeta()->vOrigHealth() * (1 + pHealth / hero_meta->GetBasicMeta()->pBaseHealth()) + vHealthAm) *
@ -172,27 +172,27 @@ public:
{ {
auto ability = owner_.Get()->GetAbility(); auto ability = owner_.Get()->GetAbility();
float pAttackAm = 0.0f; float pAttackAm = 0.0f;
float pAttackAm_Add = ability->GetAttr(kNHAT_pAttackAm); float pAttackAm_Add = ability->GetAttr(kHAT_pAttackAm);
pAttackAm += pAttackAm_Add; pAttackAm += pAttackAm_Add;
float pAttackRateSe = 0.0f; float pAttackRateSe = 0.0f;
float pAttackRateSe_Add = ability->GetAttr(kNHAT_pAttackRateSe); float pAttackRateSe_Add = ability->GetAttr(kHAT_pAttackRateSe);
pAttackRateSe += pAttackRateSe_Add; pAttackRateSe += pAttackRateSe_Add;
float pAttackRateIn = 0.0f; float pAttackRateIn = 0.0f;
float pAttackRateIn_Add = ability->GetAttr(kNHAT_pAttackRateIn); float pAttackRateIn_Add = ability->GetAttr(kHAT_pAttackRateIn);
pAttackRateIn = (1 + pAttackRateIn) * ( 1 + pAttackRateIn_Add) - 1; pAttackRateIn = (1 + pAttackRateIn) * ( 1 + pAttackRateIn_Add) - 1;
float vAttackAm = 0.0f; float vAttackAm = 0.0f;
float vAttackAm_Add = ability->GetAttr(kNHAT_vAttackAm); float vAttackAm_Add = ability->GetAttr(kHAT_vAttackAm);
vAttackAm += vAttackAm_Add; vAttackAm += vAttackAm_Add;
float vAttackRateSe = 0.0f; float vAttackRateSe = 0.0f;
float vAttackRateSe_Add = ability->GetAttr(kNHAT_vAttackRateSe); float vAttackRateSe_Add = ability->GetAttr(kHAT_vAttackRateSe);
vAttackRateSe += vAttackRateSe_Add; vAttackRateSe += vAttackRateSe_Add;
float vAttackRateIn = 0.0f; float vAttackRateIn = 0.0f;
float vAttackRateIn_Add = ability->GetAttr(kNHAT_vAttackRateIn); float vAttackRateIn_Add = ability->GetAttr(kHAT_vAttackRateIn);
vAttackRateIn = (1 + vAttackRateIn) * (1 + vAttackRateIn_Add) - 1; vAttackRateIn = (1 + vAttackRateIn) * (1 + vAttackRateIn_Add) - 1;
float pAttack = 0.0f; float pAttack = 0.0f;
@ -206,15 +206,15 @@ public:
{ {
auto ability = owner_.Get()->GetAbility(); auto ability = owner_.Get()->GetAbility();
float pDefendAm = 0.0f; float pDefendAm = 0.0f;
float pDefendAm_Add = ability->GetAttr(kNHAT_pDefendAm); float pDefendAm_Add = ability->GetAttr(kHAT_pDefendAm);
pDefendAm += pDefendAm_Add; pDefendAm += pDefendAm_Add;
float pDefendRateSe = 0.0f; float pDefendRateSe = 0.0f;
float pDefendRateSe_Add = ability->GetAttr(kNHAT_pDefendRateSe); float pDefendRateSe_Add = ability->GetAttr(kHAT_pDefendRateSe);
pDefendRateSe += pDefendRateSe_Add; pDefendRateSe += pDefendRateSe_Add;
float pDefendRateIn = 0.0f; float pDefendRateIn = 0.0f;
float pDefendRateIn_Add = ability->GetAttr(kNHAT_pDefendRateIn); float pDefendRateIn_Add = ability->GetAttr(kHAT_pDefendRateIn);
pDefendRateIn = (1 + pDefendRateIn) * (1 + pDefendRateIn_Add) - 1; pDefendRateIn = (1 + pDefendRateIn) * (1 + pDefendRateIn_Add) - 1;
float pDefend = (hero_meta->GetBasicMeta()->pOrigDefend() + pDefendAm) * float pDefend = (hero_meta->GetBasicMeta()->pOrigDefend() + pDefendAm) *
@ -227,15 +227,15 @@ public:
{ {
auto ability = owner_.Get()->GetAbility(); auto ability = owner_.Get()->GetAbility();
float pBlockAm = 0.0f; float pBlockAm = 0.0f;
float pBlockAm_Add = ability->GetAttr(kNHAT_pBlockAm); float pBlockAm_Add = ability->GetAttr(kHAT_pBlockAm);
pBlockAm += pBlockAm_Add; pBlockAm += pBlockAm_Add;
float pBlockRateSe = 0.0f; float pBlockRateSe = 0.0f;
float pBlockRateSe_Add = ability->GetAttr(kNHAT_pBlockRateSe); float pBlockRateSe_Add = ability->GetAttr(kHAT_pBlockRateSe);
pBlockRateSe += pBlockRateSe_Add; pBlockRateSe += pBlockRateSe_Add;
float pBlockRateIn = 0.0f; float pBlockRateIn = 0.0f;
float pBlockRateIn_Add = ability->GetAttr(kNHAT_pBlockRateIn); float pBlockRateIn_Add = ability->GetAttr(kHAT_pBlockRateIn);
pBlockRateIn = (1 + pBlockRateIn) * (1 + pBlockRateIn_Add) - 1; pBlockRateIn = (1 + pBlockRateIn) * (1 + pBlockRateIn_Add) - 1;
float pBlock = (hero_meta->GetBasicMeta()->pOrigBlock() + pBlockAm) * (1 + pBlockRateSe) * (1 + pBlockRateIn); float pBlock = (hero_meta->GetBasicMeta()->pOrigBlock() + pBlockAm) * (1 + pBlockRateSe) * (1 + pBlockRateIn);
@ -249,15 +249,15 @@ public:
{ {
auto ability = owner_.Get()->GetAbility(); auto ability = owner_.Get()->GetAbility();
float pCritAm = 0.0f; float pCritAm = 0.0f;
float pCritAm_Add = ability->GetAttr(kNHAT_pCritAm); float pCritAm_Add = ability->GetAttr(kHAT_pCritAm);
pCritAm += pCritAm_Add; pCritAm += pCritAm_Add;
float pCritRateSe = 0.0f; float pCritRateSe = 0.0f;
float pCritRateSe_Add = ability->GetAttr(kNHAT_pCritRateSe); float pCritRateSe_Add = ability->GetAttr(kHAT_pCritRateSe);
pCritRateSe += pCritRateSe_Add; pCritRateSe += pCritRateSe_Add;
float pCritRateIn = 0.0f; float pCritRateIn = 0.0f;
float pCritRateIn_Add = ability->GetAttr(kNHAT_pCritRateIn); float pCritRateIn_Add = ability->GetAttr(kHAT_pCritRateIn);
pCritRateIn = (1 + pCritRateIn) * (1 + pCritRateIn_Add) - 1; pCritRateIn = (1 + pCritRateIn) * (1 + pCritRateIn_Add) - 1;
float pCrit = 0.0f; float pCrit = 0.0f;
@ -281,20 +281,20 @@ private:
void DtoInit(Creature* c) void DtoInit(Creature* c)
{ {
std::array<float, kNHAT_End> base_attr_abs = {0}; std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kNHAT_End> base_attr_rate = {0}; std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kNHAT_End> pro_attr_abs = {0}; std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kNHAT_End> pro_attr_rate = {0}; std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kNHAT_End> skill_attr_abs = {0}; std::array<float, kHAT_End> skill_attr_abs = {0};
std::array<float, kNHAT_End> skill_attr_rate = {0}; std::array<float, kHAT_End> skill_attr_rate = {0};
std::array<float, kNHAT_End> chip_attr_abs = {0}; std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kNHAT_End> chip_attr_rate = {0}; std::array<float, kHAT_End> chip_attr_rate = {0};
std::array<float, kNHAT_End> core_attr_abs = {0}; std::array<float, kHAT_End> core_attr_abs = {0};
std::array<float, kNHAT_End> core_attr_rate = {0}; std::array<float, kHAT_End> core_attr_rate = {0};
{ {
std::shared_ptr<a8::XObject> attr_base_xobj = hero_dto->At("attr_base"); std::shared_ptr<a8::XObject> attr_base_xobj = hero_dto->At("attr_base");
@ -333,9 +333,9 @@ private:
} }
} }
std::array<float, kNHAT_End> finaly_attr_abs = base_attr_abs; std::array<float, kHAT_End> finaly_attr_abs = base_attr_abs;
std::array<float, kNHAT_End> finaly_attr_rate = base_attr_rate; std::array<float, kHAT_End> finaly_attr_rate = base_attr_rate;
for (int i = 0; i < kNHAT_End; ++i) { for (int i = 0; i < kHAT_End; ++i) {
if (pro_attr_abs[i] > 0.000f) { if (pro_attr_abs[i] > 0.000f) {
finaly_attr_abs[i] = pro_attr_abs[i]; finaly_attr_abs[i] = pro_attr_abs[i];
} }
@ -439,17 +439,17 @@ private:
void DtoInit(Creature* c) void DtoInit(Creature* c)
{ {
std::array<float, kNHAT_End> base_attr_abs = {0}; std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kNHAT_End> base_attr_rate = {0}; std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kNHAT_End> pro_attr_abs = {0}; std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kNHAT_End> pro_attr_rate = {0}; std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kNHAT_End> chip_attr_abs = {0}; std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kNHAT_End> chip_attr_rate = {0}; std::array<float, kHAT_End> chip_attr_rate = {0};
std::array<float, kNHAT_End> core_attr_abs = {0}; std::array<float, kHAT_End> core_attr_abs = {0};
std::array<float, kNHAT_End> core_attr_rate = {0}; std::array<float, kHAT_End> core_attr_rate = {0};
{ {
std::shared_ptr<a8::XObject> attr_base_xobj = weapon_dto->At("attr_base"); std::shared_ptr<a8::XObject> attr_base_xobj = weapon_dto->At("attr_base");
@ -482,9 +482,9 @@ private:
} }
} }
std::array<float, kNHAT_End> finaly_attr_abs = base_attr_abs; std::array<float, kHAT_End> finaly_attr_abs = base_attr_abs;
std::array<float, kNHAT_End> finaly_attr_rate = base_attr_rate; std::array<float, kHAT_End> finaly_attr_rate = base_attr_rate;
for (int i = 0; i < kNHAT_End; ++i) { for (int i = 0; i < kHAT_End; ++i) {
if (pro_attr_abs[i] > 0.000f) { if (pro_attr_abs[i] > 0.000f) {
finaly_attr_abs[i] = pro_attr_abs[i]; finaly_attr_abs[i] = pro_attr_abs[i];
} }
@ -845,8 +845,8 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet)
float vAttack = GetHeroTotalAtk(); float vAttack = GetHeroTotalAtk();
float vBullet = GetWeaponAtk(bullet); float vBullet = GetWeaponAtk(bullet);
const float BDM = 100; const float BDM = 100;
float vNormalDamageDealtRateIn = owner_.Get()->GetAbility()->GetAttr(kNHAT_vNormalDamageDealtRateIn); float vNormalDamageDealtRateIn = owner_.Get()->GetAbility()->GetAttr(kHAT_vNormalDamageDealtRateIn);
float vNormalDamageTakenRateIn = target->GetAbility()->GetAttr(kNHAT_vNormalDamageTakenRateIn); float vNormalDamageTakenRateIn = target->GetAbility()->GetAttr(kHAT_vNormalDamageTakenRateIn);
float vDmg = vAttack * vBullet / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn); float vDmg = vAttack * vBullet / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn);
if (owner_.Get()->GetAbility()->HasAttr(kHVAT_DirectAtk)) { if (owner_.Get()->GetAbility()->HasAttr(kHVAT_DirectAtk)) {
vDmg = owner_.Get()->GetAbility()->GetAttr(kHVAT_DirectAtk) / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn); vDmg = owner_.Get()->GetAbility()->GetAttr(kHVAT_DirectAtk) / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn);

View File

@ -151,7 +151,7 @@ void PBUtils::_Ability_FillMFAttrAdditionList(Ability* self,
) )
{ {
#if 0 #if 0
for (int attr_id = 0; attr_id < kNHAT_End; ++attr_id) { for (int attr_id = 0; attr_id < kHAT_End; ++attr_id) {
if (!(attr_id == 12 || attr_id == 33)) { if (!(attr_id == 12 || attr_id == 33)) {
continue; continue;
} }