| | |
| | | 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) # 最大攻击
|
| | |
| | | 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")
|
| | | totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula))
|
| | |
| | | GameWorld.ErrLog("模块战力超过数值上限, MfpType=%s,fightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr()))
|
| | | 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, 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
|