| | |
| | | #GameWorld.DebugLog("MfpType=%s,FightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr()))
|
| | | if totalFightPower > ShareDefine.Def_UpperLimit_DWord:
|
| | | GameWorld.ErrLog("模块战力超过数值上限, MfpType=%s,fightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr()))
|
| | | totalFightPower = ShareDefine.Def_UpperLimit_DWord
|
| | | #totalFightPower = ShareDefine.Def_UpperLimit_DWord 模块战力支持超20亿,日志暂保留用于输出提醒
|
| | | return totalFightPower
|
| | |
|
| | | def __GetAttrFightPowerParamDiff(self, job):
|
| | |
| | | #GameWorld.DebugLog("等级属性点加属性: %s" % allAttrList)
|
| | | #GameWorld.DebugLog("灵根品阶等级属性: %s" % lingGenQualityAttrList)
|
| | | #GameWorld.DebugLog("灵根点数附加战力: %s" % pointFightPowerEx)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Role, pointFightPowerEx) |
| | | SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Role, pointFightPowerEx)
|
| | | SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase, allAttrList)
|
| | | SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty, lingGenQualityAttrList)
|
| | | return hasChange_Qualitylv
|
| | |
| | | # 因为计算战力需要取到总属性,所以等各功能点属性累加完后再计算
|
| | | for mfpType, mfpObj in mfpObjDict.items():
|
| | | mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer)
|
| | | mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
|
| | | mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
|
| | | mfpSkill = GetMFPSkillFightPower(curPlayer, mfpObj.mfpType)
|
| | | mfpEx = GetMFPExFightPower(curPlayer, mfpType)
|
| | | mfpTotal = mfpValue + mfpSkill + mfpEx
|
| | | mfpDict[mfpObj.mfpType] = min(mfpTotal, ChConfig.Def_UpperLimit_DWord)
|
| | | mfpDict[mfpObj.mfpType] = mfpTotal
|
| | |
|
| | | if mfpType == ShareDefine.Def_MFPType_Plus:
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, mfpTotal)
|
| | |
| | |
|
| | | # 重置模块技能战斗力
|
| | | for mfpType in ShareDefine.ModuleFightPowerTypeList:
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, 0)
|
| | | SetMFPSkillFightPower(curPlayer, mfpType, 0)
|
| | |
|
| | | for i in range(0, skillManager.GetSkillCount()):
|
| | | curSkill = skillManager.GetSkillByIndex(i)
|
| | |
|
| | | mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role)
|
| | |
|
| | | skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, skillMFP + curSkill.GetFightPower())
|
| | | |
| | | skillMFP = GetMFPSkillFightPower(curPlayer, mfpType)
|
| | | SetMFPSkillFightPower(curPlayer, mfpType, skillMFP + curSkill.GetFightPower())
|
| | |
|
| | | return
|
| | |
|
| | |
| | | return
|
| | |
|
| | | mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role)
|
| | | addFightPower = curSkill.GetFightPower() - beforeFightPower
|
| | | skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, max(0, skillMFP + addFightPower))
|
| | | addFightPower = curSkill.GetFightPower() - beforeFightPower |
| | | skillMFP = GetMFPSkillFightPower(curPlayer, mfpType)
|
| | | SetMFPSkillFightPower(curPlayer, mfpType, max(0, skillMFP + addFightPower))
|
| | | GameWorld.DebugLog("刷新技能附加战斗力: skillID=%s,beforeFightPower=%s,mfpType=%s,skillMFP=%s,updMFP=%s"
|
| | | % (skillID, beforeFightPower, mfpType, skillMFP, skillMFP + addFightPower), curPlayer.GetPlayerID())
|
| | |
|
| | |
| | | return
|
| | | delFightPower = curSkill.GetFightPower()
|
| | | mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role)
|
| | | skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, max(0, skillMFP - delFightPower))
|
| | | skillMFP = GetMFPSkillFightPower(curPlayer, mfpType)
|
| | | SetMFPSkillFightPower(curPlayer, mfpType, max(0, skillMFP - delFightPower))
|
| | | GameWorld.DebugLog("刷新技能附加战斗力: delSkillID=%s,mfpType=%s,skillMFP=%s,delFightPower=%s"
|
| | | % (delSkillID, mfpType, skillMFP, delFightPower), curPlayer.GetPlayerID())
|
| | |
|
| | |
| | | mfpData = ChPyNetSendPack.tagMCModuleFightPower()
|
| | | mfpData.Clear()
|
| | | mfpData.MfpType = mfpType
|
| | | mfpData.FightPower = fightPower # 当前模块战斗力数值
|
| | | mfpData.FightPower = fightPower % ChConfig.Def_PerPointValue # 当前模块战斗力数值
|
| | | mfpData.FightPowerEx = fightPower / ChConfig.Def_PerPointValue # 当前模块战斗力数值
|
| | | mfpDataList.append(mfpData)
|
| | | totalFightPower += fightPower # 累加总战斗力
|
| | |
|
| | |
| | | ChConfig.Def_PDictType_FightPower)
|
| | | GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (totalFightPower, highestFightPower, beforeFightPower), playerID)
|
| | | PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
|
| | | # 记录开服活动数据,开服活动前X天理论上不会超过20E,暂不处理
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, min(totalFightPower, ChConfig.Def_UpperLimit_DWord))
|
| | | # 记录开服活动数据
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower)
|
| | | if beforeFightPower != totalFightPower:
|
| | | CrossPlayerData.OnPlayerFightPowerChange(curPlayer)
|
| | | return
|
| | |
| | | def GetPrestige(curPlayer): return 0
|
| | | def SetPrestige(curPlayer, value): return
|
| | |
|
| | | ##总战斗力,支持超过20E
|
| | | ##总战斗力,支持超过20E = 各模块战力总和
|
| | | def GetFightPower(curPlayer): return curPlayer.GetFightPowerEx() * ChConfig.Def_PerPointValue + curPlayer.GetFightPower()
|
| | | def SetFightPower(curPlayer, value):
|
| | | curPlayer.SetFightPower(value % ChConfig.Def_PerPointValue, value / ChConfig.Def_PerPointValue, False) # 不通知GameServer bNotifyGameServer False
|
| | | return
|
| | |
|
| | | ## 设置模块战斗力,最大20E
|
| | | ## 设置模块战斗力,支持超过20E = 模块公式战力 + 技能附加战力 + 其他附加战力
|
| | | def SetMFPFightPower(curPlayer, mfpType, fightPower):
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, min(fightPower, ChConfig.Def_UpperLimit_DWord))
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, fightPower % ChConfig.Def_PerPointValue)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPowerPoint % mfpType, fightPower / ChConfig.Def_PerPointValue)
|
| | | return
|
| | |
|
| | | ## 获取模块战斗力
|
| | | def GetMFPFightPower(curPlayer, mfpType):
|
| | | return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPower % mfpType)
|
| | | return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPowerPoint % mfpType) * ChConfig.Def_PerPointValue + \
|
| | | curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPower % mfpType)
|
| | |
|
| | | ## 设置模块附加战斗力,支持超过20E
|
| | | def SetMFPExFightPower(curPlayer, mfpType, fightPower):
|
| | |
| | | def GetMFPExFightPower(curPlayer, mfpType):
|
| | | return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPExPoint % mfpType) * ChConfig.Def_PerPointValue + \
|
| | | curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpType)
|
| | | |
| | | ## 设置模块技能附加战斗力,支持超过20E
|
| | | def SetMFPSkillFightPower(curPlayer, mfpType, fightPower):
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, fightPower % ChConfig.Def_PerPointValue)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkillEx % mfpType, fightPower / ChConfig.Def_PerPointValue)
|
| | | return
|
| | |
|
| | | ## 获取模块技能附加战斗力
|
| | | def GetMFPSkillFightPower(curPlayer, mfpType):
|
| | | return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkillEx % mfpType) * ChConfig.Def_PerPointValue + \
|
| | | curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
|
| | | |
| | | #===============================================================================
|
| | | ##获取玩家分线信息
|
| | | # @param curPlayer 玩家实例
|