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)
{
switch (attr_id) {
case kNHAT_pHealthRateIn:
case kNHAT_vHealthRateIn:
case kNHAT_pAttackRateIn:
case kNHAT_vAttackRateIn:
case kNHAT_pDefendRateIn:
case kNHAT_pBlockRateIn:
case kNHAT_pCritRateIn:
case kNHAT_vSpeedRateIn:
case kNHAT_vHaste:
case kNHAT_vDrain:
case kNHAT_vTenacity:
case kNHAT_vDamageTakenRateIn:
case kNHAT_vDamageDealtRateIn:
case kNHAT_vNormalDamageTakenRateIn: //受击方
case kNHAT_vNormalDamageDealtRateIn: //攻击方
case kNHAT_vSkillDamageTakenRateIn: //受击方
case kNHAT_vSkillDamageDealtRateIn: //攻击方
case kNHAT_vHealthGainRateIn:
case kNHAT_vHealDealtRateIn:
case kHAT_pHealthRateIn:
case kHAT_vHealthRateIn:
case kHAT_pAttackRateIn:
case kHAT_vAttackRateIn:
case kHAT_pDefendRateIn:
case kHAT_pBlockRateIn:
case kHAT_pCritRateIn:
case kHAT_vSpeedRateIn:
case kHAT_vHaste:
case kHAT_vDrain:
case kHAT_vTenacity:
case kHAT_vDamageTakenRateIn:
case kHAT_vDamageDealtRateIn:
case kHAT_vNormalDamageTakenRateIn: //受击方
case kHAT_vNormalDamageDealtRateIn: //攻击方
case kHAT_vSkillDamageTakenRateIn: //受击方
case kHAT_vSkillDamageDealtRateIn: //攻击方
case kHAT_vHealthGainRateIn:
case kHAT_vHealDealtRateIn:
{
return true;
}

View File

@ -38,9 +38,9 @@ private:
private:
CreatureWeakPtr owner_;
std::array<std::tuple<float, list_head>, kNHAT_End> attr_add_ = {};
std::array<std::tuple<float, list_head>, kNHAT_End> attr_dec_ = {};
std::array<list_head, kNHAT_End> attr_list_ = {};
std::array<std::tuple<float, list_head>, kHAT_End> attr_add_ = {};
std::array<std::tuple<float, list_head>, kHAT_End> attr_dec_ = {};
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_dec_ = {};
std::array<list_head, kHVAT_End - kHVAT_Begin> vattr_list_ = {};

View File

@ -1,110 +1,59 @@
#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,
kNHAT_Begin = 0,
kNHAT_vCurrnetHealth = 1,
kNHAT_vHealth = 2,
kNHAT_pHealth = 3,
kNHAT_pHealthAm = 4,
kNHAT_pHealthRateSe = 5,
kNHAT_pHealthRateIn = 6,
kNHAT_vHealthAm = 7,
kNHAT_vHealthRateSe = 8,
kNHAT_vHealthRateIn = 9,
kNHAT_vAttack = 10,
kNHAT_pAttack = 11,
kNHAT_pAttackAm = 12,
kNHAT_pAttackRateSe = 13,
kNHAT_pAttackRateIn = 14,
kNHAT_vAttackAm = 15,
kNHAT_vAttackRateSe = 16,
kNHAT_vAttackRateIn = 17,
kNHAT_vDefend = 18,
kNHAT_pDefend = 19,
kNHAT_pDefendAm = 20,
kNHAT_pDefendRateSe = 21,
kNHAT_pDefendRateIn = 22,
kNHAT_vBlock = 23,
kNHAT_pBlock = 24,
kNHAT_pBlockAm = 25,
kNHAT_pBlockRateSe = 26,
kNHAT_pBlockRateIn = 27,
kNHAT_vBloPro = 28,
kNHAT_vBloDef = 29,
kNHAT_vCrit = 30,
kNHAT_pCrit = 31,
kNHAT_pCritAm = 32,
kNHAT_pCritRateSe = 33,
kNHAT_pCritRateIn = 34,
kNHAT_vCriPro = 35,
kNHAT_vCriBon = 36,
kNHAT_vSpeed = 37,
kNHAT_vSpeedRateIn = 38,
kNHAT_vHaste = 39,
kNHAT_vDrain = 40,
kNHAT_vTenacity = 41,
kNHAT_vDamageTakenRateIn = 42,
kNHAT_vDamageDealtRateIn = 43,
kNHAT_vNormalDamageTakenRateIn = 44,
kNHAT_vNormalDamageDealtRateIn = 45,
kNHAT_vSkillDamageTakenRateIn = 46,
kNHAT_vSkillDamageDealtRateIn = 47,
kNHAT_vHealthGainRateIn = 48,
kNHAT_vHealDealtRateIn = 49,
kHAT_Begin = 0,
kHAT_vCurrnetHealth = 1,
kHAT_vHealth = 2,
kHAT_pHealth = 3,
kHAT_pHealthAm = 4,
kHAT_pHealthRateSe = 5,
kHAT_pHealthRateIn = 6,
kHAT_vHealthAm = 7,
kHAT_vHealthRateSe = 8,
kHAT_vHealthRateIn = 9,
kHAT_vAttack = 10,
kHAT_pAttack = 11,
kHAT_pAttackAm = 12,
kHAT_pAttackRateSe = 13,
kHAT_pAttackRateIn = 14,
kHAT_vAttackAm = 15,
kHAT_vAttackRateSe = 16,
kHAT_vAttackRateIn = 17,
kHAT_vDefend = 18,
kHAT_pDefend = 19,
kHAT_pDefendAm = 20,
kHAT_pDefendRateSe = 21,
kHAT_pDefendRateIn = 22,
kHAT_vBlock = 23,
kHAT_pBlock = 24,
kHAT_pBlockAm = 25,
kHAT_pBlockRateSe = 26,
kHAT_pBlockRateIn = 27,
kHAT_vBloPro = 28,
kHAT_vBloDef = 29,
kHAT_vCrit = 30,
kHAT_pCrit = 31,
kHAT_pCritAm = 32,
kHAT_pCritRateSe = 33,
kHAT_pCritRateIn = 34,
kHAT_vCriPro = 35,
kHAT_vCriBon = 36,
kHAT_vSpeed = 37,
kHAT_vSpeedRateIn = 38,
kHAT_vHaste = 39,
kHAT_vDrain = 40,
kHAT_vTenacity = 41,
kHAT_vDamageTakenRateIn = 42,
kHAT_vDamageDealtRateIn = 43,
kHAT_vNormalDamageTakenRateIn = 44,
kHAT_vNormalDamageDealtRateIn = 45,
kHAT_vSkillDamageTakenRateIn = 46,
kHAT_vSkillDamageDealtRateIn = 47,
kHAT_vHealthGainRateIn = 48,
kHAT_vHealDealtRateIn = 49,
kNHAT_Hold = 55,
kNHAT_End
kHAT_Hold = 55,
kHAT_End
);
A8_DECLARE_ENUM(HumanVirtualAttrType_e,

View File

@ -4,7 +4,7 @@
#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)) {
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)) {
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,
std::array<float, kNHAT_End>& attr_abs,
std::array<float, kNHAT_End>& attr_rate)
std::array<float, kHAT_End>& attr_abs,
std::array<float, kHAT_End>& attr_rate)
{
if (xobj->IsArray()) {
for (int i = 0; i < xobj->Size(); ++i) {
@ -53,7 +53,7 @@ std::string AttrHelper::GetAttrName(int attr_id)
{
if (IsValidHumanAttr(attr_id)) {
std::string name = a8::GetEnumName<NewHumanAttrType_e>(attr_id);
a8::ReplaceString(name, "kNHAT_", "");
a8::ReplaceString(name, "kHAT_", "");
return name;
} else if (IsValidHumanVirtualAttr(attr_id)) {
std::string name = a8::GetEnumName<HumanVirtualAttrType_e>(attr_id);

View File

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

View File

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

View File

@ -17,7 +17,7 @@ bool IsValidBuffEffect(int buff_effect)
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)

View File

@ -139,29 +139,29 @@ public:
{
auto ability = owner_.Get()->GetAbility();
float pHealRateAm = 0.0f; //加基础点数属性绝对值
float pHealthAm_Add = ability->GetAttr(kNHAT_pHealthAm); //buff或者养成的属性
float pHealthAm_Add = ability->GetAttr(kHAT_pHealthAm); //buff或者养成的属性
pHealRateAm += pHealthAm_Add;
float pHealthRateSe = 0.0f;
float pHealthRateSe_Add = ability->GetAttr(kNHAT_pHealthRateSe); //buff或者养成的属性
float pHealthRateSe_Add = ability->GetAttr(kHAT_pHealthRateSe); //buff或者养成的属性
pHealthRateSe += pHealthRateSe_Add;
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;
float pHealth = (hero_meta->GetBasicMeta()->pOrigHealth() + pHealRateAm) * (1 + pHealthRateSe) * (1 + pHealthRateIn);
float vHealthAm = 0.0f;
float vHealthAm_Add = ability->GetAttr(kNHAT_vHealthAm); //buff或者养成的属性
float vHealthAm_Add = ability->GetAttr(kHAT_vHealthAm); //buff或者养成的属性
vHealthAm += vHealthAm_Add;
float vHealthRateSe = 0.0f;
float vHealthRateSe_Add = ability->GetAttr(kNHAT_vHealthRateSe); //buff或者养成的属性
float vHealthRateSe_Add = ability->GetAttr(kHAT_vHealthRateSe); //buff或者养成的属性
vHealthRateSe += vHealthRateSe_Add;
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;
hp_ = (hero_meta->GetBasicMeta()->vOrigHealth() * (1 + pHealth / hero_meta->GetBasicMeta()->pBaseHealth()) + vHealthAm) *
@ -172,27 +172,27 @@ public:
{
auto ability = owner_.Get()->GetAbility();
float pAttackAm = 0.0f;
float pAttackAm_Add = ability->GetAttr(kNHAT_pAttackAm);
float pAttackAm_Add = ability->GetAttr(kHAT_pAttackAm);
pAttackAm += pAttackAm_Add;
float pAttackRateSe = 0.0f;
float pAttackRateSe_Add = ability->GetAttr(kNHAT_pAttackRateSe);
float pAttackRateSe_Add = ability->GetAttr(kHAT_pAttackRateSe);
pAttackRateSe += pAttackRateSe_Add;
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;
float vAttackAm = 0.0f;
float vAttackAm_Add = ability->GetAttr(kNHAT_vAttackAm);
float vAttackAm_Add = ability->GetAttr(kHAT_vAttackAm);
vAttackAm += vAttackAm_Add;
float vAttackRateSe = 0.0f;
float vAttackRateSe_Add = ability->GetAttr(kNHAT_vAttackRateSe);
float vAttackRateSe_Add = ability->GetAttr(kHAT_vAttackRateSe);
vAttackRateSe += vAttackRateSe_Add;
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;
float pAttack = 0.0f;
@ -206,15 +206,15 @@ public:
{
auto ability = owner_.Get()->GetAbility();
float pDefendAm = 0.0f;
float pDefendAm_Add = ability->GetAttr(kNHAT_pDefendAm);
float pDefendAm_Add = ability->GetAttr(kHAT_pDefendAm);
pDefendAm += pDefendAm_Add;
float pDefendRateSe = 0.0f;
float pDefendRateSe_Add = ability->GetAttr(kNHAT_pDefendRateSe);
float pDefendRateSe_Add = ability->GetAttr(kHAT_pDefendRateSe);
pDefendRateSe += pDefendRateSe_Add;
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;
float pDefend = (hero_meta->GetBasicMeta()->pOrigDefend() + pDefendAm) *
@ -227,15 +227,15 @@ public:
{
auto ability = owner_.Get()->GetAbility();
float pBlockAm = 0.0f;
float pBlockAm_Add = ability->GetAttr(kNHAT_pBlockAm);
float pBlockAm_Add = ability->GetAttr(kHAT_pBlockAm);
pBlockAm += pBlockAm_Add;
float pBlockRateSe = 0.0f;
float pBlockRateSe_Add = ability->GetAttr(kNHAT_pBlockRateSe);
float pBlockRateSe_Add = ability->GetAttr(kHAT_pBlockRateSe);
pBlockRateSe += pBlockRateSe_Add;
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;
float pBlock = (hero_meta->GetBasicMeta()->pOrigBlock() + pBlockAm) * (1 + pBlockRateSe) * (1 + pBlockRateIn);
@ -249,15 +249,15 @@ public:
{
auto ability = owner_.Get()->GetAbility();
float pCritAm = 0.0f;
float pCritAm_Add = ability->GetAttr(kNHAT_pCritAm);
float pCritAm_Add = ability->GetAttr(kHAT_pCritAm);
pCritAm += pCritAm_Add;
float pCritRateSe = 0.0f;
float pCritRateSe_Add = ability->GetAttr(kNHAT_pCritRateSe);
float pCritRateSe_Add = ability->GetAttr(kHAT_pCritRateSe);
pCritRateSe += pCritRateSe_Add;
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;
float pCrit = 0.0f;
@ -281,20 +281,20 @@ private:
void DtoInit(Creature* c)
{
std::array<float, kNHAT_End> base_attr_abs = {0};
std::array<float, kNHAT_End> base_attr_rate = {0};
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kNHAT_End> pro_attr_abs = {0};
std::array<float, kNHAT_End> pro_attr_rate = {0};
std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kNHAT_End> skill_attr_abs = {0};
std::array<float, kNHAT_End> skill_attr_rate = {0};
std::array<float, kHAT_End> skill_attr_abs = {0};
std::array<float, kHAT_End> skill_attr_rate = {0};
std::array<float, kNHAT_End> chip_attr_abs = {0};
std::array<float, kNHAT_End> chip_attr_rate = {0};
std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kHAT_End> chip_attr_rate = {0};
std::array<float, kNHAT_End> core_attr_abs = {0};
std::array<float, kNHAT_End> core_attr_rate = {0};
std::array<float, kHAT_End> core_attr_abs = {0};
std::array<float, kHAT_End> core_attr_rate = {0};
{
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, kNHAT_End> finaly_attr_rate = base_attr_rate;
for (int i = 0; i < kNHAT_End; ++i) {
std::array<float, kHAT_End> finaly_attr_abs = base_attr_abs;
std::array<float, kHAT_End> 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];
}
@ -439,17 +439,17 @@ private:
void DtoInit(Creature* c)
{
std::array<float, kNHAT_End> base_attr_abs = {0};
std::array<float, kNHAT_End> base_attr_rate = {0};
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kNHAT_End> pro_attr_abs = {0};
std::array<float, kNHAT_End> pro_attr_rate = {0};
std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kNHAT_End> chip_attr_abs = {0};
std::array<float, kNHAT_End> chip_attr_rate = {0};
std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kHAT_End> chip_attr_rate = {0};
std::array<float, kNHAT_End> core_attr_abs = {0};
std::array<float, kNHAT_End> core_attr_rate = {0};
std::array<float, kHAT_End> core_attr_abs = {0};
std::array<float, kHAT_End> core_attr_rate = {0};
{
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, kNHAT_End> finaly_attr_rate = base_attr_rate;
for (int i = 0; i < kNHAT_End; ++i) {
std::array<float, kHAT_End> finaly_attr_abs = base_attr_abs;
std::array<float, kHAT_End> 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];
}
@ -845,8 +845,8 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet)
float vAttack = GetHeroTotalAtk();
float vBullet = GetWeaponAtk(bullet);
const float BDM = 100;
float vNormalDamageDealtRateIn = owner_.Get()->GetAbility()->GetAttr(kNHAT_vNormalDamageDealtRateIn);
float vNormalDamageTakenRateIn = target->GetAbility()->GetAttr(kNHAT_vNormalDamageTakenRateIn);
float vNormalDamageDealtRateIn = owner_.Get()->GetAbility()->GetAttr(kHAT_vNormalDamageDealtRateIn);
float vNormalDamageTakenRateIn = target->GetAbility()->GetAttr(kHAT_vNormalDamageTakenRateIn);
float vDmg = vAttack * vBullet / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn);
if (owner_.Get()->GetAbility()->HasAttr(kHVAT_DirectAtk)) {
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
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)) {
continue;
}