hxp
2023-01-12 6cc88e349d09427a3258b5495b1619500cd78b3c
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -879,12 +879,16 @@
    
    allAttrListEquip = [{} for _ in range(4)]  # 装备属性
    equip_addEquipBaseAttrPerList = [{}, {}, {}] # 装备功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
    baseAttrDictStar = {}
    allAttrListStar = [{} for _ in range(4)]  # 升星属性
    star_addEquipBaseAttrPerList = [{}, {}, {}] # 升星功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
    baseAttrDictPlus = {}
    allAttrListPlus = [{} for _ in range(4)]  # 强化属性
    plus_addEquipBaseAttrPerList = [{}, {}, {}] # 强化功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
    baseAttrDictStone = {}
    allAttrListStone = [{} for _ in range(4)]  # 宝石属性
    #stone_addEquipBaseAttrPerList = [{}, {}, {}] # 宝石功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
    baseAttrDictWash = {}
    allAttrListWash = [{} for _ in range(4)]  # 洗练属性
    #wash_addEquipBaseAttrPerList = [{}, {}, {}] # 洗练功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
    
@@ -949,6 +953,7 @@
            for starBaseAttrID, starBaseAttrValue in starBaseAttrDict.items():
                PlayerControl.CalcAttrDict_Type(starBaseAttrID, starBaseAttrValue, allAttrListStar)
                baseAttrDict[starBaseAttrID] = baseAttrDict.get(starBaseAttrID, 0) + starBaseAttrValue
                baseAttrDictStar[starBaseAttrID] = baseAttrDictStar.get(starBaseAttrID, 0) + starBaseAttrValue
                allEquipBaseAttrDict[starBaseAttrID] = allEquipBaseAttrDict.get(starBaseAttrID, 0) + starBaseAttrValue
                if isBaseEquip:
                    baseEquipBaseAttrDict[starBaseAttrID] = baseEquipBaseAttrDict.get(starBaseAttrID, 0) + starBaseAttrValue
@@ -978,15 +983,15 @@
            __CalcFuncAddEquipAttrPer(equipPlace, legendAttrID, legendAttrValue, equip_addEquipBaseAttrPerList)
        
        #物品强化属性
        plusLV = __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrListPlus, plus_addEquipBaseAttrPerList)
        plusLV = __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, baseAttrDictPlus, allAttrListPlus, plus_addEquipBaseAttrPerList)
        if isBaseEquip:
            basePlusLVMin = plusLV if basePlusLVMin == None else min(basePlusLVMin, plusLV)
            
        #计算装备宝石加成
        CalcEquipStone_Effect(curPlayer, equipIndex, allAttrListStone)
        CalcEquipStone_Effect(curPlayer, equipIndex, baseAttrDictStone, allAttrListStone)
        
        #洗练属性
        Operate_EquipWash.CalcAttr_EquipWash(curPlayer, equipIndex, equipPlace, allAttrListWash)
        Operate_EquipWash.CalcAttr_EquipWash(curPlayer, equipIndex, equipPlace, baseAttrDictWash, allAttrListWash)
    
#    GameWorld.DebugLog("    装备循环属性: %s" % (allAttrListEquip))
#    GameWorld.DebugLog("    升星循环属性: %s" % (allAttrListStar))
@@ -1024,8 +1029,9 @@
    if playerID not in PyGameData.g_playerEquipPartAttrDict:
        PyGameData.g_playerEquipPartAttrDict[playerID] = {}
    equipPartAttrDict = PyGameData.g_playerEquipPartAttrDict[playerID]
    equipPartAttrDict[classLV] = [equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, allAttrListStar, insideAttrDictStar,
                                  allAttrListPlus, insideAttrDictPlus, allAttrListStone, insideAttrDictStone, allAttrListWash, insideAttrDictWash]
    equipPartAttrDict[classLV] = [equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, baseAttrDictStar, allAttrListStar, insideAttrDictStar,
                                  baseAttrDictPlus, allAttrListPlus, insideAttrDictPlus, baseAttrDictStone, allAttrListStone, insideAttrDictStone,
                                  baseAttrDictWash, allAttrListWash, insideAttrDictWash]
    
#    GameWorld.DebugLog("    ----- 累加所有阶装备位养成属性")
#    GameWorld.DebugLog("    本阶装备战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
@@ -1037,13 +1043,14 @@
    
    allClassEquipFightPowerEx = 0
    allClassAttrListEquip, allClassInsideAttrDictEquip = [{} for _ in range(4)], {}
    allClassAttrListStar, allClassInsideAttrDictStar = [{} for _ in range(4)], {}
    allClassAttrListPlus, allClassInsideAttrDictPlus = [{} for _ in range(4)], {}
    allClassAttrListStone, allClassInsideAttrDictStone = [{} for _ in range(4)], {}
    allClassAttrListWash, allClassInsideAttrDictWash = [{} for _ in range(4)], {}
    allClassAttrListStar, allClassInsideAttrDictStar, customAttrDictStar, classBaseAttrDictStar = [{} for _ in range(4)], {}, {}, {}
    allClassAttrListPlus, allClassInsideAttrDictPlus, customAttrDictPlus, classBaseAttrDictPlus = [{} for _ in range(4)], {}, {}, {}
    allClassAttrListStone, allClassInsideAttrDictStone, customAttrDictStone, classBaseAttrDictStone = [{} for _ in range(4)], {}, {}, {}
    allClassAttrListWash, allClassInsideAttrDictWash, customAttrDictWash, classBaseAttrDictWash = [{} for _ in range(4)], {}, {}, {}
    for classLV, attrList in equipPartAttrDict.items():
        equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, allAttrListStar, insideAttrDictStar, \
            allAttrListPlus, insideAttrDictPlus, allAttrListStone, insideAttrDictStone, allAttrListWash, insideAttrDictWash = attrList
        equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, baseAttrDictStar, allAttrListStar, insideAttrDictStar, \
            baseAttrDictPlus, allAttrListPlus, insideAttrDictPlus, baseAttrDictStone, allAttrListStone, insideAttrDictStone, \
            baseAttrDictWash, allAttrListWash, insideAttrDictWash = attrList
        #GameWorld.DebugLog("    classLV=%s, %s" % (classLV, attrList))
        allClassEquipFightPowerEx += equipFightPowerEx
        for i in xrange(4):
@@ -1058,6 +1065,16 @@
        PlayerControl.AddAttrDictValue(allClassInsideAttrDictStone, insideAttrDictStone)
        PlayerControl.AddAttrDictValue(allClassInsideAttrDictWash, insideAttrDictWash)
        
        classBaseAttrDictStar[classLV] = baseAttrDictStar
        classBaseAttrDictPlus[classLV] = baseAttrDictPlus
        classBaseAttrDictStone[classLV] = baseAttrDictStone
        classBaseAttrDictWash[classLV] = baseAttrDictWash
    customAttrDictStar["classBaseAttrDictStar"] = classBaseAttrDictStar
    customAttrDictPlus["classBaseAttrDictPlus"] = classBaseAttrDictPlus
    customAttrDictStone["classBaseAttrDictStone"] = classBaseAttrDictStone
    customAttrDictWash["classBaseAttrDictWash"] = classBaseAttrDictWash
#    GameWorld.DebugLog("    所有阶装备战力: %s" % (allClassEquipFightPowerEx))
#    GameWorld.DebugLog("    所有阶装备属性: %s, 内部加成=%s" % (allClassAttrListEquip, allClassInsideAttrDictEquip))
#    GameWorld.DebugLog("    所有阶升星属性: %s, 内部加成=%s" % (allClassAttrListStar, allClassInsideAttrDictStar))
@@ -1066,10 +1083,10 @@
#    GameWorld.DebugLog("    所有阶洗练属性: %s, 内部加成=%s" % (allClassAttrListWash, allClassInsideAttrDictWash))
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, allClassEquipFightPowerEx)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Equip, allClassAttrListEquip, allClassInsideAttrDictEquip)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Star, allClassAttrListStar, allClassInsideAttrDictStar)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Plus, allClassAttrListPlus, allClassInsideAttrDictPlus)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allClassAttrListStone, allClassInsideAttrDictStone)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allClassAttrListWash, allClassInsideAttrDictWash)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Star, allClassAttrListStar, allClassInsideAttrDictStar, customAttrDict=customAttrDictStar)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Plus, allClassAttrListPlus, allClassInsideAttrDictPlus, customAttrDict=customAttrDictPlus)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allClassAttrListStone, allClassInsideAttrDictStone, customAttrDict=customAttrDictStone)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allClassAttrListWash, allClassInsideAttrDictWash, customAttrDict=customAttrDictWash)
    return
def __CalcFuncAddEquipAttrPer(equipPlace, attrID, attrValue, addPerInfoList):
@@ -1161,7 +1178,7 @@
        
    return
def __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrList, plus_addEquipBaseAttrPerList):
def __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, baseAttrDictPlus, allAttrList, plus_addEquipBaseAttrPerList):
    ## 计算装备强化后的属性
    equipPartPlusLV = GetEquipPartPlusLV(curPlayer, packType, equipIndex)
    equipPartPlusEvolveLV = GetEquipPartPlusEvolveLV(curPlayer, packType, equipIndex)
@@ -1180,7 +1197,8 @@
    for i, attrID in enumerate(attrTypeList):
        #GameWorld.DebugLog("    强化基础属性: ID=%s +%s" % (attrID, attrValueList[i]))
        PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
        baseAttrDictPlus[attrID] = baseAttrDictPlus.get(attrID, 0) + attrValueList[i]
    if not equipPartPlusEvolveLV:
        return equipPartPlusLV
    #进化属性
@@ -1375,7 +1393,7 @@
#  @param curEquip 当前装备
#  @param allAttrList 属性信息 
#  @return 无返回值
def CalcEquipStone_Effect(curPlayer, equipIndex, allAttrList):
def CalcEquipStone_Effect(curPlayer, equipIndex, baseAttrDictStone, allAttrList):
    gameData = GameWorld.GetGameData()
    effIndexList = [1, 2, 3, 4]  # 第一个效果值是类型等级效果值,非属性效果值
@@ -1394,6 +1412,7 @@
            effectID, effectValue = curGemEffect.GetEffectID(), curGemEffect.GetEffectValue(0)
            if effectID and effectValue:
                PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrList)
                baseAttrDictStone[effectID] = baseAttrDictStone.get(effectID, 0) + effectValue
        gemEffect = curGem.GetEffectByIndex(0)
        gemLV = gemEffect.GetEffectValue(1)
        gemLVList.append(gemLV)