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)
|
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;
|
||||||
}
|
}
|
||||||
|
@ -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_ = {};
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user