1
This commit is contained in:
parent
6ed9f14c8e
commit
c5485b58a3
@ -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;
|
||||
}
|
||||
|
@ -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_ = {};
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user