hxp
2019-10-18 e36d3d08ba14c81bfc159a2797d7c36b5f159ebc
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
@@ -27,6 +27,8 @@
import EventShell
import ChConfig
import ChEquip
import math
#-------------------------------------------------------------------------------------------
@@ -118,7 +120,6 @@
    costEquipPlaceList = ipyData.GetCostEquipPlace()
    costEquipColorList = ipyData.GetCostEquipColor()
    isJobLimit = ipyData.GetIsJobLimit()
    suitTotalRate = ipyData.GetSuitTotalRate()
    itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
    delEquipIndexList = []
    totalEquipStars = ChEquip.GetTotalEquipStars(curPlayer)
@@ -127,6 +128,12 @@
        curRate = 100
    else:
        curRate = 0 #成功概率
        diffClassChangeRatePerInfo = IpyGameDataPY.GetFuncEvalCfg("EquipStarRate", 1)
        unSuitRateRange = IpyGameDataPY.GetFuncEvalCfg("EquipStarRate", 2)
        suitRateRange = IpyGameDataPY.GetFuncEvalCfg("EquipStarRate", 3)
        if len(diffClassChangeRatePerInfo) != 2 or len(unSuitRateRange) != 2 or len(suitRateRange) != 2:
            GameWorld.ErrLog('升星不同阶概率配置错误!')
            return result
        
        for i, index in enumerate(clientData.CostEquipIndex):
            costEquip = itemPack.GetAt(index)
@@ -145,14 +152,30 @@
            if isJobLimit and not ItemCommon.CheckJob(curPlayer, costEquip):
                return result
            
            isSuite = 1 if costEquip.GetSuiteID() else 0
            if costEquip.GetSuiteID():
                baseRate = ipyData.GetSuitRate()
                minRate, maxRate = suitRateRange
            else:
                baseRate = ipyData.GetUnSuitRate()
                minRate, maxRate = unSuitRateRange
            GameWorld.DebugLog("equipID=%s,baseRate=%s,minRate=%s,maxRate=%s" % (equipID, baseRate, minRate, maxRate))
            addRate = baseRate
            costClassLV = ItemCommon.GetItemClassLV(costEquip)
            
            ipyData = IpyGameDataPY.GetIpyGameData('EquipStarUpRate', ItemCommon.GetItemClassLV(costEquip),
                                                   itemColor, equipPlace, isSuite
                                                   )
            if not ipyData:
                return
            curRate += ipyData.GetRate()
            #吞高阶
            if costClassLV > classLV:
                diffClassChangeRatePer = diffClassChangeRatePerInfo[0] * (costClassLV - classLV)
                addRate = int(math.ceil(round(baseRate * (100 + diffClassChangeRatePer) /100.0, 2)))
                GameWorld.DebugLog("    吞高阶 costClassLV=%s,classLV=%s,diffClassChangeRatePer=%s,addRate=%s" % (costClassLV, classLV, diffClassChangeRatePer, addRate))
            #吞低阶
            elif costClassLV < classLV:
                diffClassChangeRatePer = diffClassChangeRatePerInfo[1] * (classLV - costClassLV)
                addRate = int(math.ceil(round(baseRate * (100 - diffClassChangeRatePer) /100.0, 2)))
                GameWorld.DebugLog("    吞低阶 costClassLV=%s,classLV=%s,diffClassChangeRatePer=%s,addRate=%s" % (costClassLV, classLV, diffClassChangeRatePer, addRate))
            addRate = max(minRate, min(addRate, maxRate))
            curRate += addRate
            GameWorld.DebugLog("    本件装备增加概率=%s,当前总概率=%s" % (addRate, curRate))
            delEquipIndexList.append(index)
    if totalEquipStars < IpyGameDataPY.GetFuncCfg('EquipStarCustomized'):
        curRate = 100
@@ -160,6 +183,7 @@
        GameWorld.Log('装备升星异常 概率为0!!equipPackIndex=%s'%equipPackIndex)
        return result
    isOK = GameWorld.CanHappen(curRate, 100)
    GameWorld.DebugLog("装备升星最终总概率: %s, isOK=%s" % (curRate, isOK))
    #判断普通物品材料 成功才扣
    costItemDict = ipyData.GetCostItemDict()
    if isOK and costItemDict: