ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -392,7 +392,9 @@
    return
def CalcEquipGS(curItem):
    ##计算装备评分
    '''计算装备评分
        评分组成:装备基础 + 传奇属性 + 绝版属性
    '''
    if not CheckNoteEquipGS(curItem):
        #GameWorld.DebugLog("不设置装备评分")
        return 0
@@ -408,25 +410,27 @@
            break
        attrDict[effectID] = attrDict.get(effectID, 0) + curEffect.GetEffectValue(0)
        
    gsParamIpyData = None
    classLV = GetItemClassLV(curItem)
    color = curItem.GetItemColor()
    itemQuality = curItem.GetItemQuality()
    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
    # 传奇属性
    legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
    legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
    if legendAttrIDCnt and legendAttrIDCnt == legendAttrValueCnt:
        classLV = GetItemClassLV(curItem)
        color = curItem.GetItemColor()
        itemQuality = curItem.GetItemQuality()
        gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
        for i in xrange(legendAttrIDCnt):
            attrID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
            attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
            attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
            
    MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0)
    MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0)
    Atk = attrDict.get(ShareDefine.Def_Effect_Atk, 0)
    MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
    MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
    MaxHP = attrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
    Def = attrDict.get(ShareDefine.Def_Effect_Def, 0)
    ArmorDefPer = attrDict.get(ShareDefine.Def_Effect_ArmorDefAddPer, 0)
    IceAtk = attrDict.get(ShareDefine.Def_Effect_IceAtk, 0)
    IceDef = attrDict.get(ShareDefine.Def_Effect_IceDef, 0)
    
    AtkPer = attrDict.get(ShareDefine.Def_Effect_AddAtkByPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkPerC())
    DamagePer = attrDict.get(ShareDefine.Def_Effect_DamagePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamagePerC())
@@ -449,6 +453,9 @@
    SuperHitReduce = attrDict.get(ShareDefine.Def_Effect_SuperHitReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitReduceC())
    SkillAtkRate = attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateC())
    SpeedPer = attrDict.get(ShareDefine.Def_Effect_SpeedPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSpeedPerC())
    SkillAtkRateReduce = attrDict.get(ShareDefine.Def_Effect_SkillAtkRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
    Hit = attrDict.get(ShareDefine.Def_Effect_Hit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitC())
    Miss = attrDict.get(ShareDefine.Def_Effect_Miss, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissC())
    
    # 攻速不默认乘,仅作为参数提供策划使用
    AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
@@ -466,7 +473,11 @@
    OnlyFinalHurt = attrDict.get(ShareDefine.Def_Effect_OnlyFinalHurt, 0)
    PVPAtkBackHP = attrDict.get(ShareDefine.Def_Effect_PVPAtkBackHP, 0)  
    
    value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
    if GetIsDogzEquip(curItem):
        # 神兽装备用不同公式
        value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))
    else:
        value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
    return value
#---------------------------------------------------------------------
@@ -1326,8 +1337,9 @@
    return hasEnough, itemIndexList, findItemIsBind, needCnt
def GetPackItemBindStateIndexInfo(curPlayer, itemID):
def GetPackItemBindStateIndexInfo(curPlayer, itemID, needCount=0):
    ''' 获取背包消耗道具绑定及未绑定索引情况
    @param needCount: 所需个数, 默认绑定优先,当找到已经足够的个数后不再遍历,减少无用遍历
    @return: 可消耗物品列表[[绑定物品索引], [不绑定物品索引]], 绑定个数, 未绑定个数
    '''
    consumeItemIndexList = [[], []] # 可消耗物品列表[[绑定物品索引], [不绑定物品索引]]
@@ -1348,6 +1360,8 @@
        if curItem.GetIsBind():
            consumeItemIndexList[0].append(i)
            bindCnt += itemCount
            if needCount > 0 and bindCnt >= needCount:
                break
        else:
            consumeItemIndexList[1].append(i)
            unBindCnt += itemCount
@@ -1502,7 +1516,18 @@
def GetShopItemPrice(itemID, priceType):
    ''' 获取商城物品对应价格 '''
    ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
    # 系统固定商店类型: 仙玉(2-常用道具,3-成长变强),绑玉(4-绑玉商城)
    priceTypeShopTypeDict = {IPY_GameWorld.TYPE_Price_Gold_Money:[2, 3],
                             IPY_GameWorld.TYPE_Price_Gold_Paper:[4],
                             }
    ipyData = None
    if priceType in priceTypeShopTypeDict:
        for shopType in priceTypeShopTypeDict[priceType]:
            ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType, "ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
            if ipyData:
                break
    else:
        ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
    if not ipyData:
        return 0
    return ipyData.GetMoneyNum()
@@ -1592,11 +1617,17 @@
def DoLogicSwitchItemEx(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex):
    
    #---物品检查---
    srcItem = curPlayer.GetItemManager().GetPack(srcBackpack).GetAt(srcIndex)
    srcPack = curPlayer.GetItemManager().GetPack(srcBackpack)
    if srcIndex < 0 or srcIndex >= srcPack.GetCount():
        return
    srcItem = srcPack.GetAt(srcIndex)
    if not CheckItemCanUse(srcItem):
        return
    
    destItem = curPlayer.GetItemManager().GetPack(desBackPack).GetAt(destIndex)
    destPack = curPlayer.GetItemManager().GetPack(desBackPack)
    if destIndex < 0 or destIndex >= destPack.GetCount():
        return
    destItem = destPack.GetAt(destIndex)
    #目标格子只验证锁定, 可以允许空位
    if destItem == None or destItem.GetIsLocked():
        return
@@ -1675,6 +1706,10 @@
def GetIsEquip(curItem):
    return curItem.GetType() in ChConfig.Def_EquipItemType
def GetIsDogzEquip(curItem):
    ## 返回是否神兽装备
    return curItem.GetType() in ChConfig.Def_DogzEquiipType
## 返回是否武器
#  @param curItem 当前物品
#  @return None