From 80cec3121d7ea24123404d2b0dc95c603b780bcd Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 20 五月 2019 21:40:52 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 28 ++++++++++++++++++++++++++--
1 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 18f7198..36a2e8f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3569,7 +3569,7 @@
attrName = self.__AttrName % attrIndex
setattr(self, attrName, getattr(self, attrName) + value)
- def GetModuleFightPower(self, fpParam):
+ def GetModuleFightPower(self, fpParam, job):
MaxHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrMaxHP) # 最大血量
MinAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMin) # 最小攻击
MaxAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMax) # 最大攻击
@@ -3638,6 +3638,10 @@
#其他需作为公式参数的系数
AtkSpeedParameter = fpParam.GetCftAtkSpeed()
LuckyHitParameter = fpParam.GetCftLuckyHit()
+
+ diffAttrDict = self.__GetAttrFightPowerParamDiff(job)
+ for paramName, diffValue in diffAttrDict.items():
+ exec("%s = max(0, %s - %s)" % (paramName, paramName, diffValue))
#获取策划配置的表格
FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula")
@@ -3649,6 +3653,26 @@
totalFightPower = ShareDefine.Def_UpperLimit_DWord
return totalFightPower
+ def __GetAttrFightPowerParamDiff(self, job):
+ ## 战力计算属性参数与实际属性差值
+
+ #角色基础模块某些属性不计算战力
+ if self.mfpType != ShareDefine.Def_MFPType_Role:
+ return {}
+
+ roleBaseAttrDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 1)
+ notFightPowerEffIDNameDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 2)
+ if job not in roleBaseAttrDict:
+ return {}
+
+ diffAttrDict = {}
+ jobBaseAttrDict = roleBaseAttrDict[job]
+ for attrID, paramName in notFightPowerEffIDNameDict.items():
+ if attrID not in jobBaseAttrDict:
+ continue
+ diffAttrDict[paramName] = jobBaseAttrDict[attrID]
+ return diffAttrDict
+
def GetMFPAttrStr(self):
attrStr = ""
for attrIndex in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
@@ -4532,7 +4556,7 @@
for attrIndex, value in mfpAttrExDict.items():
mfpObj.AddCalcMFPAttr(attrIndex, value)
- mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam)
+ mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer.GetJob())
mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
mfpTotal = mfpValue + mfpSkill + mfpEx
--
Gitblit v1.8.0