1
This commit is contained in:
parent
40aebe83b6
commit
9df97b3262
@ -124,15 +124,10 @@ public:
|
|||||||
|
|
||||||
void Init(Creature* c)
|
void Init(Creature* c)
|
||||||
{
|
{
|
||||||
#ifdef NEW_NUM
|
|
||||||
DefaultInit(c);
|
DefaultInit(c);
|
||||||
#else
|
|
||||||
if (hero_dto) {
|
if (hero_dto) {
|
||||||
DtoInit(c);
|
DtoInit(c);
|
||||||
} else {
|
|
||||||
DefaultInit(c);
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecalcHp()
|
void RecalcHp()
|
||||||
@ -284,78 +279,6 @@ private:
|
|||||||
|
|
||||||
void DtoInit(Creature* c)
|
void DtoInit(Creature* c)
|
||||||
{
|
{
|
||||||
std::array<float, kHAT_End> base_attr_abs = {0};
|
|
||||||
std::array<float, kHAT_End> base_attr_rate = {0};
|
|
||||||
|
|
||||||
std::array<float, kHAT_End> pro_attr_abs = {0};
|
|
||||||
std::array<float, kHAT_End> pro_attr_rate = {0};
|
|
||||||
|
|
||||||
std::array<float, kHAT_End> skill_attr_abs = {0};
|
|
||||||
std::array<float, kHAT_End> skill_attr_rate = {0};
|
|
||||||
|
|
||||||
std::array<float, kHAT_End> chip_attr_abs = {0};
|
|
||||||
std::array<float, kHAT_End> chip_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");
|
|
||||||
if (attr_base_xobj && attr_base_xobj->IsArray()) {
|
|
||||||
AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs, base_attr_rate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
std::shared_ptr<a8::XObject> 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<a8::XObject> 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<a8::XObject> 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<a8::XObject> 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<a8::XObject> 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<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];
|
|
||||||
}
|
|
||||||
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:
|
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);
|
vDmg = owner_.Get()->GetAbility()->GetAttr(kHVAT_DirectAtk) * vBullet / BDM * (1 + vNormalDamageDealtRateIn) * ( 1 + vNormalDamageTakenRateIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
float DDR = 0.0f;
|
float DDR = owner_.Get()->GetAbility()->GetAttr(kHAT_vDamageDealtRateIn);
|
||||||
float DTR = 0.0f;
|
float DTR = target->GetAbility()->GetAttr(kHAT_vDamageTakenRateIn);
|
||||||
float finaly_dmg = vDmg * vEbc * vEd * (1 + DDR) * (1 + DTR);
|
float finaly_dmg = vDmg * vEbc * vEd * (1 + DDR) * (1 + DTR);
|
||||||
#ifdef MYDEBUG
|
#ifdef MYDEBUG
|
||||||
if (owner_.Get()->IsPlayer()) {
|
if (owner_.Get()->IsPlayer()) {
|
||||||
@ -1276,7 +1199,7 @@ float BattleDataContext::GetDrugTimePct()
|
|||||||
|
|
||||||
float BattleDataContext::GetDrugEfficacyPct()
|
float BattleDataContext::GetDrugEfficacyPct()
|
||||||
{
|
{
|
||||||
return hero_ability_->GetDrugEfficacyPct();
|
return owner_.Get()->GetAbility()->GetAttr(kHAT_vHealthGainRateIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
float BattleDataContext::GetTenacityPct()
|
float BattleDataContext::GetTenacityPct()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user