From c604e4c6e1742b00ce22c3ae1f4c29386fd56468 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 5 Jan 2024 17:38:12 +0800 Subject: [PATCH] 1 --- server/gameserver/netdata.cc | 251 +++++++++++++++++++---------------- 1 file changed, 133 insertions(+), 118 deletions(-) diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index fe66aaef..bed20463 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -127,128 +127,143 @@ public: #endif } + void RecalcHp() + { + float pHealRateAm = 0.0f; //加基础点数属性绝对值 + float pHealthAm_Add = 0.0f; //buff或者养成的属性 + pHealRateAm += pHealthAm_Add; + + float pHealthRateSe = 0.0f; + float pHealthRateSe_Add = 0.0f; //buff或者养成的属性 + pHealthRateSe += pHealthRateSe_Add; + + float pHealthRateIn = 0.0f; + float pHealthRateIn_Add = 0.0f; //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 = 0.0f; //buff或者养成的属性 + vHealthAm += vHealthAm_Add; + + float vHealthRateSe = 0.0f; + float vHealthRateSe_Add = 0.0f; //buff或者养成的属性 + vHealthRateSe += vHealthRateSe_Add; + + float vHealthRateIn = 0.0f; + float vHealthRateIn_Add = 0.0f; //buff或者养成的属性 + vHealthRateIn = (1 + vHealthRateIn) * (1 + vHealthRateIn_Add) - 1; + + hp_ = (hero_meta->GetBasicMeta()->vOrigHealth() * (1 + pHealth / hero_meta->GetBasicMeta()->pBaseHealth() + vHealthAm)) * + (1 + vHealthRateSe) * (1 + vHealthRateIn); + } + + void RecalcAttack() + { + float pAttackAm = 0.0f; + float pAttackAm_Add = 0.0f; + pAttackAm += pAttackAm_Add; + + float pAttackRateSe = 0.0f; + float pAttackRateSe_Add = 0.0f; + pAttackRateSe += pAttackRateSe_Add; + + float pAttackRateIn = 0.0f; + float pAttackRateIn_Add = 0.0f; + pAttackRateIn = (1 + pAttackRateIn) * ( 1 + pAttackRateIn_Add) - 1; + + float vAttackAm = 0.0f; + float vAttackAm_Add = 0.0f; + vAttackAm += vAttackAm_Add; + + float vAttackRateSe = 0.0f; + float vAttackRateSe_Add = 0.0f; + vAttackRateSe += vAttackRateSe_Add; + + float vAttackRateIn = 0.0f; + float vAttackRateIn_Add = 0.0f; + vAttackRateIn = (1 + vAttackRateIn) * (1 + vAttackRateIn_Add) - 1; + + float pAttack = 0.0f; + pAttack = (hero_meta->GetBasicMeta()->vOrigAttack() + pAttackAm) * (1 + pAttackRateSe) * (1 + pAttackRateIn); + + atk_ = (hero_meta->GetBasicMeta()->vOrigAttack() * (1 + pAttack / hero_meta->GetBasicMeta()->pBaseAttack()) + vAttackAm) * + (1 + vAttackRateSe) * (1 + vAttackRateIn); + } + + void RecalcDef() + { + float pDefendAm = 0.0f; + float pDefendAm_Add = 0.0f; + pDefendAm += pDefendAm_Add; + + float pDefendRateSe = 0.0f; + float pDefendRateSe_Add = 0.0f; + pDefendRateSe += pDefendRateSe_Add; + + float pDefendRateIn = 0.0f; + float pDefendRateIn_Add = 0.0f; + pDefendRateIn = (1 + pDefendRateIn) * (1 + pDefendRateIn_Add) - 1; + + def_ = (hero_meta->GetBasicMeta()->vOrigDefend() + pDefendAm) * + (1 + pDefendRateSe) * (1 + pDefendRateIn); + } + + void RecalcBlock() + { + float pBlockAm = 0.0f; + float pBlockAm_Add = 0.0f; + pBlockAm += pBlockAm_Add; + + float pBlockRateSe = 0.0f; + float pBlockRateSe_Add = 0.0f; + pBlockRateSe += pBlockRateSe_Add; + + float pBlockRateIn = 0.0f; + float pBlockRateIn_Add = 0.0f; + pBlockRateIn = (1 + pBlockRateIn) * (1 + pBlockRateIn_Add) - 1; + + float pBlock = 0.0f; + pBlock = (hero_meta->GetBasicMeta()->pOrigBlock() +pBlockAm) * (1 + pBlockRateSe) * (1 + pBlockRateIn); + + + float vBlock = 1 - (1 - hero_meta->GetBasicMeta()->vOrigBlock()) / (1 + pBlock / hero_meta->GetBasicMeta()->pBaseBlock()); + + block_ = vBlock; + } + + void RecalcCrit() + { + float pCritAm = 0.0f; + float pCritAm_Add = 0.0f; + pCritAm += pCritAm_Add; + + float pCritRateSe = 0.0f; + float pCritRateSe_Add = 0.0f; + pCritRateSe += pCritRateSe_Add; + + float pCritRateIn = 0.0f; + float pCritRateIn_Add = 0.0f; + pCritRateIn = (1 + pCritRateIn) * (1 + pCritRateIn_Add) - 1; + + float pCrit = 0.0f; + pCrit = (hero_meta->GetBasicMeta()->pOrigCrit() + pCritAm) * (1 + pCritRateSe) * (1 + pCritRateIn); + + float vCrit = 0.0f; + vCrit = (1 + hero_meta->GetBasicMeta()->vOrigCrit()) * (1 + pCrit / hero_meta->GetBasicMeta()->pBaseCrit()) - 1; + crit_ = vCrit; + } + private: void DefaultInit(Creature* c) { - { - float pHealRateAm = 0.0f; //加基础点数属性绝对值 - float pHealthAm_Add = 0.0f; //buff或者养成的属性 - pHealRateAm += pHealthAm_Add; - - float pHealthRateSe = 0.0f; - float pHealthRateSe_Add = 0.0f; //buff或者养成的属性 - pHealthRateSe += pHealthRateSe_Add; - - float pHealthRateIn = 0.0f; - float pHealthRateIn_Add = 0.0f; //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 = 0.0f; //buff或者养成的属性 - vHealthAm += vHealthAm_Add; - - float vHealthRateSe = 0.0f; - float vHealthRateSe_Add = 0.0f; //buff或者养成的属性 - vHealthRateSe += vHealthRateSe_Add; - - float vHealthRateIn = 0.0f; - float vHealthRateIn_Add = 0.0f; //buff或者养成的属性 - vHealthRateIn = (1 + vHealthRateIn) * (1 + vHealthRateIn_Add) - 1; - - hp_ = (hero_meta->GetBasicMeta()->vOrigHealth() * (1 + pHealth / hero_meta->GetBasicMeta()->pBaseHealth() + vHealthAm)) * - (1 + vHealthRateSe) * (1 + vHealthRateIn); - } - { - float pAttackAm = 0.0f; - float pAttackAm_Add = 0.0f; - pAttackAm += pAttackAm_Add; - - float pAttackRateSe = 0.0f; - float pAttackRateSe_Add = 0.0f; - pAttackRateSe += pAttackRateSe_Add; - - float pAttackRateIn = 0.0f; - float pAttackRateIn_Add = 0.0f; - pAttackRateIn = (1 + pAttackRateIn) * ( 1 + pAttackRateIn_Add) - 1; - - float vAttackAm = 0.0f; - float vAttackAm_Add = 0.0f; - vAttackAm += vAttackAm_Add; - - float vAttackRateSe = 0.0f; - float vAttackRateSe_Add = 0.0f; - vAttackRateSe += vAttackRateSe_Add; - - float vAttackRateIn = 0.0f; - float vAttackRateIn_Add = 0.0f; - vAttackRateIn = (1 + vAttackRateIn) * (1 + vAttackRateIn_Add) - 1; - - float pAttack = 0.0f; - pAttack = (hero_meta->GetBasicMeta()->vOrigAttack() + pAttackAm) * (1 + pAttackRateSe) * (1 + pAttackRateIn); - - atk_ = (hero_meta->GetBasicMeta()->vOrigAttack() * (1 + pAttack / hero_meta->GetBasicMeta()->pBaseAttack()) + vAttackAm) * - (1 + vAttackRateSe) * (1 + vAttackRateIn); - } - { - float pDefendAm = 0.0f; - float pDefendAm_Add = 0.0f; - pDefendAm += pDefendAm_Add; - - float pDefendRateSe = 0.0f; - float pDefendRateSe_Add = 0.0f; - pDefendRateSe += pDefendRateSe_Add; - - float pDefendRateIn = 0.0f; - float pDefendRateIn_Add = 0.0f; - pDefendRateIn = (1 + pDefendRateIn) * (1 + pDefendRateIn_Add) - 1; - - def_ = (hero_meta->GetBasicMeta()->vOrigDefend() + pDefendAm) * - (1 + pDefendRateSe) * (1 + pDefendRateIn); - } - { - float pBlockAm = 0.0f; - float pBlockAm_Add = 0.0f; - pBlockAm += pBlockAm_Add; - - float pBlockRateSe = 0.0f; - float pBlockRateSe_Add = 0.0f; - pBlockRateSe += pBlockRateSe_Add; - - float pBlockRateIn = 0.0f; - float pBlockRateIn_Add = 0.0f; - pBlockRateIn = (1 + pBlockRateIn) * (1 + pBlockRateIn_Add) - 1; - - float pBlock = 0.0f; - pBlock = (hero_meta->GetBasicMeta()->pOrigBlock() +pBlockAm) * (1 + pBlockRateSe) * (1 + pBlockRateIn); - - - float vBlock = 1 - (1 - hero_meta->GetBasicMeta()->vOrigBlock()) / (1 + pBlock / hero_meta->GetBasicMeta()->pBaseBlock()); - - block_ = vBlock; - } - { - float pCritAm = 0.0f; - float pCritAm_Add = 0.0f; - pCritAm += pCritAm_Add; - - float pCritRateSe = 0.0f; - float pCritRateSe_Add = 0.0f; - pCritRateSe += pCritRateSe_Add; - - float pCritRateIn = 0.0f; - float pCritRateIn_Add = 0.0f; - pCritRateIn = (1 + pCritRateIn) * (1 + pCritRateIn_Add) - 1; - - float pCrit = 0.0f; - pCrit = (hero_meta->GetBasicMeta()->pOrigCrit() + pCritAm) * (1 + pCritRateSe) * (1 + pCritRateIn); - - float vCrit = 0.0f; - vCrit = (1 + hero_meta->GetBasicMeta()->vOrigCrit()) * (1 + pCrit / hero_meta->GetBasicMeta()->pBaseCrit()) - 1; - crit_ = vCrit; - } + RecalcHp(); + RecalcAttack(); + RecalcDef(); + RecalcBlock(); + RecalcCrit(); } void DtoInit(Creature* c)