10407 【越南】【英语】【BT】【GM】【砍树】周末BUG汇总(模块战力支持超20亿;开服活动榜同步修改支持超20亿;)
23个文件已修改
240 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -25947,7 +25947,8 @@
    _pack_ = 1
    _fields_ = [
                  ("MfpType", c_ubyte),    #模块编号类型
                  ("FightPower", c_int),    #本模块战斗力
                  ("FightPower", c_int),    #本模块战斗力,求余亿部分
                  ("FightPowerEx", c_int),    #本模块战斗力,整除亿部分,1代表1亿
                  ]
    def __init__(self):
@@ -25962,6 +25963,7 @@
    def Clear(self):
        self.MfpType = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        return
    def GetLength(self):
@@ -25973,11 +25975,13 @@
    def OutputString(self):
        DumpString = '''//A3 A1 各功能模块战斗力信息 //tagMCModuleFightPowerInfo:
                                MfpType:%d,
                                FightPower:%d
                                FightPower:%d,
                                FightPowerEx:%d
                                '''\
                                %(
                                self.MfpType,
                                self.FightPower
                                self.FightPower,
                                self.FightPowerEx
                                )
        return DumpString
@@ -50441,7 +50445,8 @@
                  ("CampaignType", c_ubyte),    #奖励类型
                  ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
                  ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
                  ("RecordData", c_int),    #活动时的记录值
                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表1亿
                  ]
    def __init__(self):
@@ -50458,6 +50463,7 @@
        self.BillAwardRecord = 0
        self.TagAwardRecord = 0
        self.RecordData = 0
        self.RecordDataEx = 0
        return
    def GetLength(self):
@@ -50471,13 +50477,15 @@
                                CampaignType:%d,
                                BillAwardRecord:%d,
                                TagAwardRecord:%d,
                                RecordData:%d
                                RecordData:%d,
                                RecordDataEx:%d
                                '''\
                                %(
                                self.CampaignType,
                                self.BillAwardRecord,
                                self.TagAwardRecord,
                                self.RecordData
                                self.RecordData,
                                self.RecordDataEx
                                )
        return DumpString
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -1285,6 +1285,7 @@
    GameWorld.GetFamilyManager().SetFamilyUpperLimitCount(ChConfig.Def_Family_MaxCnt)
    #排序元宝交易平台
    GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort()
    PlayerBillboard.FixBillboardBigCmpValue()
    #排序排行榜
    PlayerBillboard.SortServerBillboard()
    #功能队伍
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
@@ -154,6 +154,43 @@
        
    return
def FixBillboardBigCmpValue():
    ## 修正部分榜单大比较值,支持超20亿,主要为了模块战力等支持超20亿
    if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FixBillboardBigCmpValue):
        GameWorld.Log("修正部分榜单大比较值支持超20亿已经处理过")
        return
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FixBillboardBigCmpValue, 1)
    fixBillTypeList = [ShareDefine.Def_BT_FightPower_Horse]
    fixBillTypeList += ShareDefine.Def_Campaign_Billboard_Dict.values()
    GameWorld.Log("修正部分榜单大比较值支持超20亿: %s" % fixBillTypeList)
    billboardMgr = GameWorld.GetBillboard()
    for billboardType in fixBillTypeList:
        billBoard = billboardMgr.FindBillboard(billboardType)
        dataCount = billBoard.GetCount()
        if not dataCount:
            continue
        DataRecordPack.DR_BillboardData(billboardType, "FixBillboardBigCmpValue")
        GameWorld.Log("修正榜单大比较值: billboardType=%s" % billboardType)
        for index in range(dataCount):
            boardData = billBoard.At(index)
            if not boardData:
                continue
            dataID = boardData.GetID()
            cmpValue = boardData.GetCmpValue()
            cmpValue2 = boardData.GetCmpValue2()
            if cmpValue2:
                GameWorld.Log("    index=%s,dataID=%s, keep CmpValue=%s,CmpValue2=%s" % (index, dataID, cmpValue, cmpValue2))
                continue
            boardData.SetCmpValue(0)
            boardData.SetCmpValue2(cmpValue)
            cmpValue = boardData.GetCmpValue()
            cmpValue2 = boardData.GetCmpValue2()
            GameWorld.Log("    index=%s,dataID=%s, Update CmpValue=%s,CmpValue2=%s" % (index, dataID, cmpValue, cmpValue2))
    return
def SortServerBillboard():
    ##排序所有排行榜
    billboardMgr = GameWorld.GetBillboard()
@@ -748,6 +785,9 @@
        else:
            cmpValue3 = playerBillBoardData.GetCmpValue3()
            
    GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,cmpValueChange=%s,%s"
                       % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, cmpValueChange, kwargs), curPlayerID)
    #设置排行榜数据
    playerBillBoardData.SetType(billboardIndex)
    #附属类型
@@ -773,8 +813,6 @@
    if cmpValue3 > 0:
        playerBillBoardData.SetCmpValue3(cmpValue3)
        
    GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,cmpValueChange=%s,%s"
                       % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, cmpValueChange, kwargs), curPlayerID)
    if not cmpValueChange:
        return True
    
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
@@ -121,6 +121,9 @@
#服务器开服自动逻辑处理 小时
Def_Server_Hour = 'Def_Server_Hour'
# 排行榜大数值比较值修正标记
Def_FixBillboardBigCmpValue = "FixBillboardBigCmpValue"
# 交易所开关
Def_BourseState = "BourseState"
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3357,8 +3357,10 @@
Def_PlayerKey_AttrXPRestorePer = "AttrXPRestorePer"    #自动恢复XP值比率
Def_PlayerKey_MarkLoadMapTick = "LoadMapTickVIP"        #记录切换地图后的tick,VIP
Def_PlayerKey_MTFreeOnlineRefreshTick = "MTFreeOnlineRTick"        # 寻宝在线计算时间
Def_PlayerKey_MFPFightPower = "MFPFightPower_%s"        #模块战斗力, 参数(模块类型索引)
Def_PlayerKey_MFPFightPower = "MFPFightPower_%s"        #模块战斗力, 求余亿部分,参数(模块类型索引)
Def_PlayerKey_MFPFightPowerPoint = "MFPFightPowerPoint_%s"        #模块战斗力, 整除亿部分,参数(模块类型索引)
Def_PlayerKey_MFPSkill = "MFPSkill_%s"        #技能附加战斗力, 参数(模块类型索引)
Def_PlayerKey_MFPSkillEx = "MFPSkillEx_%s"        #技能附加战斗力, 参数(模块类型索引)
Def_PlayerKey_MFPEx = "MFPEx_%s"        #模块附加战斗力, 参数(模块类型索引)
Def_PlayerKey_MFPExPoint = "MFPExPoint_%s"        #模块附加战斗力, 参数(模块类型索引)
Def_PlayerKey_AtkWithoutBuff = "AtkWithoutBuff"        #玩家无buff状态下的攻击值
@@ -4248,7 +4250,8 @@
#奖励记录 - 从低位到高位,每位表示:0-不可领;1-可领取;2-已领
Def_PDict_OSC_BillAwardRecord = "OSCBillAwardRecord"  # 开服活动排行奖励记录, 按活动类型位存储是否领取/处理过
Def_PDict_OSC_TagAwardRecord = "OSCTagAwardRecord_%s"  # 开服活动目标奖励记录, 参数(活动类型), 按奖励位存储是否领取
Def_PDict_OSC_RecordData = "OSCRecordData_%s"  # 开服活动记录数值, 参数(活动类型)
Def_PDict_OSC_RecordData = "OSCRecordData_%s"  # 开服活动记录数值, 求余亿部分,参数(活动类型)
Def_PDict_OSC_RecordDataEx = "OSCRecordDataEx_%s"  # 开服活动记录数值, 整除亿部分,参数(活动类型)
Def_PDict_OSC_EndMailState = "EndMailState"  # 开服活动结束发放邮件处理状态, 记录该状态的目的是防止开服活动版本变更导致旧号重复补发奖励;
# 法器
@@ -4302,9 +4305,8 @@
Def_PDict_FightPower_HighestEx = "FightPower_HighestEx"  # 历史最高总战斗力
Def_PDict_FightPower_Total = "FightPower_Total"  # 总战斗力
Def_PDict_FightPower_TotalEx = "FightPower_TotalEx"  # 总战斗力
Def_PDict_FightPower_Horse = "FightPower_Horse"  # 坐骑战斗力
Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_TotalEx, Def_PDict_FightPower_Horse]
Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_TotalEx]
# 每日活跃度
Def_PDict_Activity_FinishCnt = "Activity_FinishCnt_%s"  # 活跃度类型对应完成次数
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -25947,7 +25947,8 @@
    _pack_ = 1
    _fields_ = [
                  ("MfpType", c_ubyte),    #模块编号类型
                  ("FightPower", c_int),    #本模块战斗力
                  ("FightPower", c_int),    #本模块战斗力,求余亿部分
                  ("FightPowerEx", c_int),    #本模块战斗力,整除亿部分,1代表1亿
                  ]
    def __init__(self):
@@ -25962,6 +25963,7 @@
    def Clear(self):
        self.MfpType = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        return
    def GetLength(self):
@@ -25973,11 +25975,13 @@
    def OutputString(self):
        DumpString = '''//A3 A1 各功能模块战斗力信息 //tagMCModuleFightPowerInfo:
                                MfpType:%d,
                                FightPower:%d
                                FightPower:%d,
                                FightPowerEx:%d
                                '''\
                                %(
                                self.MfpType,
                                self.FightPower
                                self.FightPower,
                                self.FightPowerEx
                                )
        return DumpString
@@ -50441,7 +50445,8 @@
                  ("CampaignType", c_ubyte),    #奖励类型
                  ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
                  ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
                  ("RecordData", c_int),    #活动时的记录值
                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表1亿
                  ]
    def __init__(self):
@@ -50458,6 +50463,7 @@
        self.BillAwardRecord = 0
        self.TagAwardRecord = 0
        self.RecordData = 0
        self.RecordDataEx = 0
        return
    def GetLength(self):
@@ -50471,13 +50477,15 @@
                                CampaignType:%d,
                                BillAwardRecord:%d,
                                TagAwardRecord:%d,
                                RecordData:%d
                                RecordData:%d,
                                RecordDataEx:%d
                                '''\
                                %(
                                self.CampaignType,
                                self.BillAwardRecord,
                                self.TagAwardRecord,
                                self.RecordData
                                self.RecordData,
                                self.RecordDataEx
                                )
        return DumpString
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
@@ -74,7 +74,6 @@
def __DoOSCReset(curPlayer, campaignType):
    # 更新领奖记录
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_TagAwardRecord % campaignType, 0)
    #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, 0)
    GameWorld.DebugAnswer(curPlayer, 'OSCReset %s OK!'%campaignType)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
@@ -52,7 +52,7 @@
    GameWorld.DebugAnswer(curPlayer, "===== 总战力: %s" % PlayerControl.GetFightPower(curPlayer))
    for mfpType in ChConfig.MFPTypeAttrFuncIndexDict.keys():
        fightPower = PlayerControl.GetMFPFightPower(curPlayer, mfpType)
        mfpSkillFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
        mfpSkillFP = PlayerControl.GetMFPSkillFightPower(curPlayer, mfpType)
        mfpEx = PlayerControl.GetMFPExFightPower(curPlayer, mfpType)
        name = mfpTypeName.get(mfpType, "模块%s" % mfpType)
        if mfpSkillFP or mfpEx:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py
@@ -46,14 +46,6 @@
                   ShareDefine.Def_Campaign_Type_Wash:"洗练",
                   }
    
    if len(cmdList) == 1:
        recordData = cmdList[0]
        for oscType, name in oscTypeDict.items():
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % oscType, recordData)
            GameWorld.DebugAnswer(curPlayer, "设置[%s]活动数值: %s OK!" % (name, recordData))
        OpenServerCampaign.Sync_OpenServerCampaignAward(curPlayer)
        return
    if len(cmdList) != 2:
        __AnswerHelp(curPlayer, oscTypeDict)
        return
@@ -64,7 +56,7 @@
        __AnswerHelp(curPlayer, oscTypeDict)
        return
    
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, recordData)
    recordData = OpenServerCampaign.SetOSCRecordData(curPlayer, campaignType, recordData)
    OpenServerCampaign.Sync_OpenServerCampaignAward(curPlayer, campaignType)
    GameWorld.DebugAnswer(curPlayer, "设置[%s]活动数值: %s OK!" % (oscTypeDict.get(campaignType), recordData))
    return
@@ -75,7 +67,7 @@
    for oscType, name in oscTypeDict.items():
        helpTypeStr += "%s-%s," % (oscType, name)
        
    GameWorld.DebugAnswer(curPlayer, "SetOSCRecordData [活动类型, 数值]")
    GameWorld.DebugAnswer(curPlayer, "SetOSCRecordData 活动类型  数值")
    GameWorld.DebugAnswer(curPlayer, "活动类型:%s" % helpTypeStr)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
@@ -35,7 +35,7 @@
def DoBillboardOpen(curPlayer):
    for campaignType, billBoardType in ShareDefine.Def_Campaign_Billboard_Dict.items():
        value = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
        value = GetOSCRecordData(curPlayer, campaignType)
        GameWorld.DebugLog("排行榜开启,同步开服活动记录!campaignType=%s,billBoardType=%s,value=%s" % (campaignType, billBoardType, value))
        if CanUpdOSCBillboard(curPlayer, campaignType, value):
            PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, value)
@@ -64,9 +64,20 @@
def CanUpdOSCBillboard(curPlayer, campaignType, curValue): return __CanUpdOSCRecordData(campaignType, curValue)
def IsNeedSaveOpenServerCampaignRecordData(campaignType): return __CanUpdOSCRecordData(campaignType)
def GetOSCRecordData(curPlayer, campaignType):
    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType) + \
        curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordDataEx % campaignType) * ChConfig.Def_PerPointValue
def SetOSCRecordData(curPlayer, campaignType, updRecordData):
    recordData = updRecordData % ChConfig.Def_PerPointValue
    recordDataEx = updRecordData / ChConfig.Def_PerPointValue
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, recordData)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordDataEx % campaignType, recordDataEx)
    return GetOSCRecordData(curPlayer, campaignType)
def AddOpenServerCampaignRecordData(curPlayer, campaignType, addValue):
    ## 增加开服活动数据记录(外调函数)
    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
    recordData = GetOSCRecordData(curPlayer, campaignType)
    
    recordData += addValue
    UpdOpenServerCampaignRecordData(curPlayer, campaignType, recordData)
@@ -78,7 +89,7 @@
        #GameWorld.DebugLog("    非开服活动记录数据时机, campaignType=%s" % campaignType)
        return
    
    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
    recordData = GetOSCRecordData(curPlayer, campaignType)
    
    if value == recordData:
        GameWorld.DebugLog("    开服活动数据等于历史记录, 不更新 campaignType=%s,recordData=%s,updValue=%s" 
@@ -92,18 +103,21 @@
        return
    
    # 更新开服活动时的记录数值
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, value)
    value = SetOSCRecordData(curPlayer, campaignType, value)
    Sync_OpenServerCampaignAward(curPlayer, campaignType)
    GameWorld.DebugLog("    更新开服活动数据记录 campaignType=%s,recordData=%s,updValue=%s" 
                       % (campaignType, recordData, value), curPlayer.GetPlayerID())
    
    canUpdOSCBill = CanUpdOSCBillboard(curPlayer, campaignType, value)
    if campaignType in ShareDefine.Def_Campaign_Billboard_Dict and (value <= recordData or canUpdOSCBill):
        cmpValue = value / ChConfig.Def_PerPointValue
        cmpValue2 = value % ChConfig.Def_PerPointValue
        if not canUpdOSCBill:
            value = -1
            cmpValue = -1
            cmpValue2 = 0
            GameWorld.DebugLog("    不能上榜降数据的,设置该榜单数据为-1,删除该数据!", curPlayer.GetPlayerID())
        billBoardType = ShareDefine.Def_Campaign_Billboard_Dict[campaignType]
        PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, value)
        PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, cmpValue, cmpValue2)
    return
##==================================================================================================
@@ -230,7 +244,7 @@
        return
    
    condition = tagAwardIpyData.GetTagCondition()
    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
    recordData = GetOSCRecordData(curPlayer, campaignType)
    if recordData < condition:
        GameWorld.DebugLog("    未达到该开服活动目标条件奖励!campaignType=%s,index=%s,recordData=%s < condition=%s" 
                           % (campaignType, index, recordData, condition), curPlayer.GetPlayerID())
@@ -356,6 +370,7 @@
        oscAward.BillAwardRecord = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord) & pow(2, syncOSCType) else 0
        oscAward.TagAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_TagAwardRecord % syncOSCType)
        oscAward.RecordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % syncOSCType)
        oscAward.RecordDataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordDataEx % syncOSCType)
        oscAwardListPack.OSCAwardList.append(oscAward)
        
    oscAwardListPack.OSCAwardCnt = len(oscAwardListPack.OSCAwardList)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -111,7 +111,7 @@
        bData["UserData"] = kwargs["userData"]
    sendMsg = "%s" % (bData) 
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "UpdateBillboard", sendMsg, len(sendMsg))
    GameWorld.DebugLog("同步GameServer排行榜:bType=%s,cmpValue=%s, %s" % (bType, cmpValue, sendMsg), bID)
    GameWorld.DebugLog("同步GameServer排行榜:bType=%s,cmpValue=%s,cmpValue2=%s %s" % (bType, cmpValue, cmpValue2, sendMsg), bID)
    return
def UpdatePlayerCrossBillboard(curPlayer, bType, groupValue1, cmpValue, cmpValue2=0, cmpValue3=0, value1=0, value2=0, 
@@ -213,23 +213,17 @@
    
    return True
def __GetUpdFightPower(curPlayer, key, fightPower):
    ##获取更新排行榜的战力
    #暂定更新实际战力
    PlayerControl.NomalDictSetProperty(curPlayer, key, fightPower, ChConfig.Def_PDictType_FightPower)
    return fightPower
def UpdateHorseBillboard(curPlayer, isForceUpdate=False, isUpdateTotal=True):
    ##更新玩家坐骑排行榜
    
    HorseFightPower = PlayerControl.GetMFPFightPower(curPlayer, ShareDefine.Def_MFPType_Horse)
    if not __CheckFightPowerCanUpdate(curPlayer, ChConfig.Def_PDict_FightPower_Horse,
                                      HorseFightPower, isForceUpdate):
    if not HorseFightPower:
        return
    
    HorseFightPower = __GetUpdFightPower(curPlayer, ChConfig.Def_PDict_FightPower_Horse, HorseFightPower)
    fightPower = HorseFightPower % ChConfig.Def_PerPointValue
    fightPowerEx = HorseFightPower / ChConfig.Def_PerPointValue
    
    UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_FightPower_Horse, HorseFightPower)
    UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_FightPower_Horse, fightPowerEx, fightPower)
    
    if isUpdateTotal:
        UpdatePlayerFPTotalBillboard(curPlayer, isForceUpdate)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py
@@ -218,7 +218,7 @@
                
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ChatBox, allAttrList)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_ChatBox, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_ChatBox, fightPowerEx)
    return
#// A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
@@ -193,7 +193,7 @@
            PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
    
    # 保存计算值
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Coat, initFPAdd)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Coat, initFPAdd)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Coat, allAttrList)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3997,7 +3997,7 @@
        #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 GetMFPAttrStr(self):
@@ -4525,7 +4525,7 @@
        #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
@@ -4970,11 +4970,10 @@
        # 因为计算战力需要取到总属性,所以等各功能点属性累加完后再计算
        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)
@@ -5280,15 +5279,15 @@
        
        # 重置模块技能战斗力
        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
    
@@ -5301,9 +5300,9 @@
            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())
        
@@ -5321,8 +5320,8 @@
            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())
        
@@ -5358,7 +5357,8 @@
            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 # 累加总战斗力
            
@@ -5387,8 +5387,8 @@
                                 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
@@ -6522,20 +6522,22 @@
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):
@@ -6547,6 +6549,18 @@
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 玩家实例
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
@@ -585,7 +585,7 @@
                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
                
    # 保存计算值
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Dienstgrad, initFPAdd)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Dienstgrad, initFPAdd)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Dienstgrad, allAttrList)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_TitleStar, allAttrListStar)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -602,7 +602,7 @@
    equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
    #GameWorld.DebugLog("神兽装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
    fightPowerEx += equipFightPowerEx
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Dogz, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Dogz, fightPowerEx)
    
    # 技能属性,从Def_CalcAttrFunc_Dogz获取
    skillAttrList = CalcDogzBattleSkillAttr(curPlayer)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
@@ -320,7 +320,7 @@
                
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Face, allAttrList)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Face, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Face, fightPowerEx)
    return
def CalcFacePicAttr(curPlayer):
@@ -356,7 +356,7 @@
                
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_FacePic, allAttrList)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_FacePic, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_FacePic, fightPowerEx)
    return
#// B2 26 头像幻化 #tagCMFaceChange
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py
@@ -149,7 +149,7 @@
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_FamilyTech, allAttrList)
    
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Other, skillFPEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Other, skillFPEx)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
@@ -122,7 +122,7 @@
        
        
    # 附加战力
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_GodWeapon, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_GodWeapon, fightPowerEx)
    #GameWorld.DebugLog("神兵属性:%s" % allAttrList)
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_GodWeapon, allAttrList)   
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -543,7 +543,7 @@
                attrValue = eatItemAttrValueList[i]
                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
                
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Horse, initFPAdd)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
    
    #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
    
@@ -552,7 +552,7 @@
    
    # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
    
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -729,7 +729,7 @@
    totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
    # 果实给人物加属性, 魂石果实算附加属性层,单独计算
    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListPetSoul, ShareDefine.Def_AttrFruitFunc_Pet)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
    
    #灵兽技能给人物加的属性
    learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
@@ -843,7 +843,7 @@
                
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Pet, fpExTotal)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Pet, fpExTotal)
#    GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -336,7 +336,7 @@
    allAttrYaoList = [{} for _ in range(4)]
    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_StoveYao, allAttrYaoList)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py
@@ -270,7 +270,7 @@
                    
    customAttrDictShentong["shentongSkillInfo"] = shentongSkillInfo          
    # 附加战力
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Shentong, fightPowerEx)
    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Shentong, fightPowerEx)
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Shentong, allAttrList, customAttrDict=customAttrDictShentong)
    return