From 89cd1373014cea5337624c82d25fa6f84c7fe7c7 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 25 四月 2019 17:38:48 +0800
Subject: [PATCH] 6607 【2.0】【后端】技能升级功能改版

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |  370 +++++++++++++---------------------------------------
 1 files changed, 94 insertions(+), 276 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index d5be54d..709d0fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -376,8 +376,7 @@
         
     if isAuctionItem:
         if IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID):
-            curSingleItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
-            curSingleItem.SetIsBind(1)
+            ItemControler.SetIsAuctionItem(curSingleItem, isAuctionItem)
         else:
             GameWorld.ErrLog("拍卖物品表不存在该ID!创建拍品失败,默认转为非拍品!itemID=%s" % itemID)
             
@@ -427,7 +426,7 @@
     if isUpdateGS:
         MakeEquipGS(curItem)
     elif isRoleItem:
-        curItem.SetIsBind(curItem.GetIsBind()) # 为了触发物品同步
+        curItem.SetCount(curItem.GetCount()) # 为了触发物品同步
     return
 
 def MakeEquipGS(curItem):
@@ -460,8 +459,8 @@
         
     classLV = GetItemClassLV(curItem)
     color = curItem.GetItemColor()
-    itemQuality = curItem.GetItemQuality()
-    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
+    isSuit = 1 if curItem.GetSuiteID() > 0 else 0
+    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, isSuit)
     # 传奇属性
     legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
     legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
@@ -480,48 +479,55 @@
     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())
-    SuperHitRate = attrDict.get(ShareDefine.Def_Effect_SuperHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitRateC())
+    BaseEquipMaxHPAddPer = attrDict.get(ShareDefine.Def_Effect_BaseEquipMaxHPAddPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetBaseEquipMaxHPAddPerC())
+    BaseEquipAtkAddPer = attrDict.get(ShareDefine.Def_Effect_BaseEquipAtkAddPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetBaseEquipAtkAddPerC())
+    AtkPer = 0#attrDict.get(ShareDefine.Def_Effect_AddAtkByPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkPerC())
+    DamagePer = 0#attrDict.get(ShareDefine.Def_Effect_DamagePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamagePerC())
+    SuperHitRate = 0#attrDict.get(ShareDefine.Def_Effect_SuperHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitRateC())
+    SuperHit = attrDict.get(ShareDefine.Def_Effect_SuperHit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitC())
     SuperHitPer = attrDict.get(ShareDefine.Def_Effect_SuperHitPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitPerC())
-    DamReducePer = attrDict.get(ShareDefine.Def_Effect_DamReducePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamReducePerC())
-    MaxHPPer = attrDict.get(ShareDefine.Def_Effect_MaxHPPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMaxHPPerC())
-    DefPer = attrDict.get(ShareDefine.Def_Effect_DefPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDefPerC())
+    DamReducePer = 0#attrDict.get(ShareDefine.Def_Effect_DamReducePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamReducePerC())
+    MaxHPPer = 0#attrDict.get(ShareDefine.Def_Effect_MaxHPPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMaxHPPerC())
+    DefPer = 0#attrDict.get(ShareDefine.Def_Effect_DefPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDefPerC())
     LuckyHitRate = attrDict.get(ShareDefine.Def_Effect_LuckyHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckyHitRateC())
-    PetDamPer = attrDict.get(ShareDefine.Def_Effect_PetDamPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPetDamPerC())
+    LuckyHitRateReduce = attrDict.get(ShareDefine.Def_Effect_LuckyHitRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckyHitRateReduceC())
+    LuckyHit = attrDict.get(ShareDefine.Def_Effect_LuckyHit, 0)
+    LuckyHitReduce = attrDict.get(ShareDefine.Def_Effect_LuckyHitReduce, 0)
+    LuckPer = attrDict.get(ShareDefine.Def_Effect_LuckPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckPerC())
+    PetDamPer = 0#attrDict.get(ShareDefine.Def_Effect_PetDamPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPetDamPerC())
     PerLVAtk = attrDict.get(ShareDefine.Def_Effect_PerLVAtk, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPerLVAtkC())
-    MissRate = attrDict.get(ShareDefine.Def_Effect_MissRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissRateC())
-    HitRate = attrDict.get(ShareDefine.Def_Effect_HitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitRateC())
-    DamBackPer = attrDict.get(ShareDefine.Def_Effect_DamBackPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamBackPerC())
+    MissRate = 0#attrDict.get(ShareDefine.Def_Effect_MissRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissRateC())
+    HitRate = 0#attrDict.get(ShareDefine.Def_Effect_HitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitRateC())
+    DamBackPer = 0#attrDict.get(ShareDefine.Def_Effect_DamBackPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamBackPerC())
     PerLVMaxHP = attrDict.get(ShareDefine.Def_Effect_PerLVMaxHP, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPerLVMaxHPC())
-    DropEquipPer = attrDict.get(ShareDefine.Def_Effect_DropEquipPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropEquipPerC())
+    DropEquipPer = 0#attrDict.get(ShareDefine.Def_Effect_DropEquipPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropEquipPerC())
     DropMoneyPer = attrDict.get(ShareDefine.Def_Effect_DropMoneyPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropMoneyPerC())
-    IgnoreDefRateReduce = attrDict.get(ShareDefine.Def_Effect_IgnoreDefRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetIgnoreDefRateReduceC())
-    DamChanceDef = attrDict.get(ShareDefine.Def_Effect_DamChanceDef, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamChanceDefC())
+    IgnoreDefRateReduce = 0#attrDict.get(ShareDefine.Def_Effect_IgnoreDefRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetIgnoreDefRateReduceC())
+    DamChanceDef = 0#attrDict.get(ShareDefine.Def_Effect_DamChanceDef, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamChanceDefC())
     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())
+    SkillAtkRate = 0#attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateC())
+    SpeedPer = 0#attrDict.get(ShareDefine.Def_Effect_SpeedPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSpeedPerC())
+    SkillAtkRateReduce = 0#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())
-    SkillAddPerA = attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
-    SkillAddPerB = attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
-    SkillAddPerC = attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
-    SkillAddPerD = attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
-    SkillAddPerE = attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
-    SkillAddPerF = attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
-    SkillAddPerG = attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
-    SkillReducePerA = attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
-    SkillReducePerB = attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
-    SkillReducePerC = attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
-    SkillReducePerD = attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
-    SkillReducePerE = attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
-    SkillReducePerF = attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
-    SkillReducePerG = attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
+    SkillAddPerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
+    SkillAddPerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
+    SkillAddPerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
+    SkillAddPerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
+    SkillAddPerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
+    SkillAddPerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
+    SkillAddPerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
+    SkillReducePerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
+    SkillReducePerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
+    SkillReducePerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
+    SkillReducePerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
+    SkillReducePerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
+    SkillReducePerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
+    SkillReducePerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
     
     # 攻速不默认乘,仅作为参数提供策划使用
-    AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
-    AtkSpeedC = 1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC()
+    AtkSpeed = 0#attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
+    AtkSpeedC = 1#1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC()
     
     # 绝版
     outOfPrintAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrID)
@@ -563,7 +569,7 @@
 #  @return True or False
 #  @remarks 函数详细说明.
 def CheckItemByEffectID(curPlayer, curItem, effectList):
-    if not CheckItemCanUse(curItem):
+    if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
         return False
     
     if not ItemControler.CheckItemUseLV(curPlayer, curItem, False):
@@ -624,7 +630,7 @@
     for i in range(backPack.GetCount()):
         curItem = backPack.GetAt(i)
         
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != findItemID:
@@ -909,32 +915,15 @@
     return
 
 #---------------------------------------------------------------------
-#此函数验证当前职业阶可用(向下兼容),同CheckJob区分使用
-def JobUseable(curPlayer, curItem):
-    '''判断物品是否职业可用
-        物品表中职业限制规则: 0为通用;非0百位代表职业,十位和个位为职业阶数, 职业阶向下兼容,高阶可使用低阶物品
-    '''
-    itemJobLimit = curItem.GetJobLimit()
-    if not itemJobLimit:
-        return True
-    
-    # 取消限制的物品
-    if curItem.GetUserAttr(ShareDefine.Def_IudetCancelUseLimit) == 1:
-        return CheckJob(curPlayer, curItem)
-    
-    if curPlayer.GetJob() == itemJobLimit / 100 and PlayerControl.GetJobRank(curPlayer) >= itemJobLimit % 100:
-        return True
-    return False
-
-#此函数验证当前职业系可用,同JobUseable区分使用
+#此函数验证当前职业系可用
 def CheckJob(curPlayer, curItem):
     '''判断物品是否职业系可用
-        物品表中职业限制规则: 0为通用;非0百位代表职业,十位和个位为职业阶数, 职业阶向下兼容,高阶可使用低阶物品
+        物品表中职业限制规则: 0为通用;非0百位代表职业
     '''
     itemJobLimit = curItem.GetJobLimit()
     if not itemJobLimit:
         return True
-    if curPlayer.GetJob() == itemJobLimit / 100:
+    if curPlayer.GetJob() == itemJobLimit:
         return True
     
     return False
@@ -1005,22 +994,6 @@
         return isExpireItem, remainingTime
     
     return isExpireItem, remainingTime
-
-##检查该物品是否合法,类型验证
-# @param curItem 物品实例
-# @param checkType 物品类型 
-# @return 布尔值(物品是否合法)
-# @remarks 检查该物品是否合法,类型验证
-def CheckItemByType(curItem, checkType):
-    #验证材料
-    if not CheckItemCanUse(curItem):
-        return False
-    
-    #类型不符合
-    if curItem.GetType() != checkType:
-        return False
-    
-    return True
 
 ## 检查装备是否有镶嵌宝石
 #  @param curItem 装备对象
@@ -1198,7 +1171,7 @@
     for i in range(curItemPack.GetCount()):
         findItem = curItemPack.GetAt(i)
         
-        if not CheckItemCanUse(findItem):
+        if not CheckItemCanUse(findItem) or ItemControler.GetIsAuctionItem(findItem):
             continue
         
         #不使用绑定的材料
@@ -1241,7 +1214,7 @@
     for i in range(curItemPack.GetCount()):
         curItem = curItemPack.GetAt(i)
         
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         #不使用绑定的材料
@@ -1280,7 +1253,7 @@
     for i in range(curItemPack.GetCount()):
         curItem = curItemPack.GetAt(i)
         
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != findItemID:
@@ -1322,7 +1295,7 @@
     for i in range(itemPack.GetCount()):
         curItem = itemPack.GetAt(i)
         #过滤不符合其他条件的物品
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != findItemID:
@@ -1364,7 +1337,7 @@
     for i in range(itemPack.GetCount()):
         curItem = itemPack.GetAt(i)
         #过滤不符合其他条件的物品
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != findItemID:
@@ -1410,7 +1383,7 @@
     for i in range(itemPack.GetCount()):
         curItem = itemPack.GetAt(i)
         #过滤不符合其他条件的物品
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != findItemID:
@@ -1454,7 +1427,7 @@
     curPack = curPlayer.GetItemManager().GetPack(packType)
     for i in range(0, curPack.GetCount()):
         curItem = curPack.GetAt(i)
-        if not curItem:
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         if curItem.GetItemTypeID() != itemID:
@@ -1557,7 +1530,7 @@
     for i in xrange(itemPack.GetCount()):
         curItem = itemPack.GetAt(i)
         #过滤不符合其他条件的物品
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         curItemID = curItem.GetItemTypeID()
         if curItemID not in costItemDict:
@@ -1661,7 +1634,7 @@
     for index in range(0, itemPack.GetCount()):
         item = itemPack.GetAt(index)
         
-        if not CheckItemCanUse(item):
+        if not CheckItemCanUse(item) or ItemControler.GetIsAuctionItem(item):
             continue
         
         itemTypeID = item.GetItemTypeID()
@@ -1692,19 +1665,20 @@
 #  @remarks 函数详细说明.
 def DoLogic_ItemBindType(curPlayer, curItem, bindType):
     #固定不绑定
-    if bindType == ChConfig.Def_BindType_NoBind:
-        return
-    
-    #不处理已经绑定的物品
-    if curItem.GetIsBind():
-        return
-    #不是这个功能的绑定类型
-    if curItem.GetBindType() != bindType:
-        return
-    if curItem.GetBindType() == ChConfig.Def_BindType_DoEquipBind:
-        pass
-                
-    ItemControler.SetItemIsBind(curItem, True)
+    #拍品去除绑定逻辑,暂屏蔽
+#    if bindType == ChConfig.Def_BindType_NoBind:
+#        return
+#    
+#    #不处理已经绑定的物品
+#    if curItem.GetIsBind():
+#        return
+#    #不是这个功能的绑定类型
+#    if curItem.GetBindType() != bindType:
+#        return
+#    if curItem.GetBindType() == ChConfig.Def_BindType_DoEquipBind:
+#        pass
+#                
+#    ItemControler.SetItemIsBind(curItem, True)
     return True
 
 #---------------------------------------------------------------------
@@ -1861,7 +1835,7 @@
         curItem = curItemPack.GetAt(i)
         
         #检查物品
-        if not CheckItemCanUse(curItem):
+        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
             continue
         
         effect = curItem.GetEffectByIndex(0)
@@ -1995,7 +1969,7 @@
     classLV = GetItemClassLV(curItem)
     return maxStarDict[str(itemColor)].get(str(classLV), 0)
 
-## 获取物品阶级
+## 获取物品阶级或品级
 def GetItemClassLV(curItem):
     return curItem.GetLV()
 
@@ -2028,13 +2002,14 @@
     if not curItem or curItem.IsEmpty():
         return {}
     
+    isAuctionItem = ItemControler.GetIsAuctionItem(curItem)
     if not CheckItemIsEquip(curItem):
-        return [curItem.GetItemTypeID(), curItem.GetCount(), curItem.GetIsBind()]
+        return [curItem.GetItemTypeID(), curItem.GetCount(), isAuctionItem]
     
     addItemDict = {}
     addItemDict['ItemID'] = curItem.GetItemTypeID()
     addItemDict['Count'] = curItem.GetCount()
-    addItemDict['IsAuctionItem'] = curItem.GetIsBind()
+    addItemDict['IsAuctionItem'] = isAuctionItem
     #addItemDict['IsBind'] = int(curItem.GetIsBind())
     #addItemDict['EquipGS'] = GetEquipGearScore(curItem)
     #addItemDict['ItemStarLV'] = curItem.GetItemStarLV()
@@ -2095,185 +2070,28 @@
         itemDict["ItemID"] = itemInfo.GetItemTypeID()
         if itemInfo.GetCount() > 1:
             itemDict["Count"] = itemInfo.GetCount()
-        if itemInfo.GetIsBind():
-            itemDict["IsAuctionItem"] = int(itemInfo.GetIsBind())
+        if ItemControler.GetIsAuctionItem(itemInfo):
+            itemDict["IsAuctionItem"] = 1
         if itemInfo.GetUserData():
             itemDict["UserData"] = itemInfo.GetUserData()
     return itemDict
 
-## 将物品列表重复物品堆叠起来返回整理后的列表
-#  @param itemlist
-#  @return 整理后的物品列表
-def GetSimpleItemList(itemlist):
-    sItemList = []
-    sItemDict = {}
-    for item in itemlist:
-        maxPackCount = item.GetPackCount()
-        if maxPackCount == 0:
-            return itemlist
-        itemCnt = item.GetCount()
-        if itemCnt > maxPackCount:
-            return itemlist
-        itemid = item.GetItemTypeID()
-        isBind = item.GetIsBind()
-        key = (itemid,isBind)
-        if key in sItemDict:
-            for sitem in sItemDict[key]:
-                if sitem.GetCount() >= maxPackCount:
-                    continue
-                totalCnt = item.GetCount()+ sitem.GetCount()
-                
-                if totalCnt > maxPackCount:
-                    ItemControler.SetItemCount(sitem, maxPackCount)
-                    ItemControler.SetItemCount(item, totalCnt - maxPackCount)
-                    sItemList.append(item)
-                    sItemDict[key].append(item)
-                    break
-                ItemControler.SetItemCount(sitem, totalCnt)
-                item.Clear()
-        else:
-            sItemList.append(item)
-            sItemDict[key] = [item]
-            
-    
-    return sItemList
-
-## =======================================================================================
-##根据活动类型配置随机装备品质
-# @param itemType 
-# @return 品质
-def GetRandEquipQualityByTable(itemType, tableName):
-    qualityRandDict = ReadChConfig.GetEvalChConfig(tableName)
-    qualityRandList = qualityRandDict.get(itemType, [])
-    if qualityRandList == []:
-        qualityRandList = qualityRandDict[-1]
-        
-    return GameWorld.GetResultByRandomList(qualityRandList, 0)
-
-## 随机卓越装备,根据规则从数据库中筛选出,等级职业
-#  @param equipType 装备类型
-#  @return 抽奖是否成功 
-def RandGreateEquip(curPlayer, equipType, isBind, tableName, quality=1):
-    equipList = GameDataControl.GetItemDataListByType(equipType)
-    equipLVRandList, lvFormulaStr, lvRange, jobRand, luckyShotRand, greateNumRand, \
-    broadcastList, plusRand, addAttrRand = ReadChConfig.GetEvalChConfig(tableName)
-    
-    playerLV = curPlayer.GetLV()
-    step = GameWorld.GetResultByRandomList(equipLVRandList, 0)
-    getLVMin = eval(lvFormulaStr)
-    getLVMax = getLVMin + lvRange
-    checkJob = GameWorld.CanHappen(jobRand)
-    
-    randList = []
-    findItem = None
-    
-    for item in equipList:
-        if item.GetUseLV() < getLVMin or item.GetUseLV() > getLVMax:
-            continue
-        
-        if item.GetItemQuality() != quality:
-            continue
-        
-        if checkJob:
-            if JobUseable(curPlayer, item):
-                findItem = item
-                break
-            continue
-        
-        randList.append(item)
-    
-    if randList:
-        findItem = random.choice(randList)
-    
-    if findItem == None:
-        return None, False
-    
-    return CreateGreateItem(findItem, luckyShotRand, greateNumRand, broadcastList,
-                     plusRand, addAttrRand, isBind)
-
-
-## 生成抽奖的卓越装备
-#  @param 各属性
-#  @return 生成的物品,是否广播 
-def CreateGreateItem(findItem, luckyShotRand, greateNumRand, broadcastList,
-                     plusRand, addAttrRand, isBind):
-    itemID = findItem.GetItemTypeID()
-    equipItem = CreateSingleItem(itemID)
-    
-    tmpEquipData = ItemControler.SingleEquipTmpData()
-    
-    tmpEquipData.starLV = random.randint(plusRand[0], plusRand[1])
-    tmpEquipData.holeCnt = 3
-    tmpEquipData.isBind = isBind
-    tmpEquipData.isSuite = 0
-    
-    # 装备附加属性
-    ChItem.EquipAddAdditionEx(equipItem, tmpEquipData)
-    
-    broadcast = False
-        
-    return equipItem, broadcast
-
-
-## 随机普通装备,根据规则从数据库中筛选出,等级职业
-#  @param equipType 装备类型
-#  @return 抽奖是否成功 
-def RandNormalEquip(curPlayer, equipType, isBind, tableName):
-    equipList = GameDataControl.GetItemDataListByType(equipType)
-    equipLVRandList, lvFormulaStr, lvRange, jobRand, luckyShotRand, \
-    plusRand, addAttrRand, skillRand = ReadChConfig.GetEvalChConfig(tableName)
-    
-    playerLV = curPlayer.GetLV()
-    step = GameWorld.GetResultByRandomList(equipLVRandList, 0)
-    getLVMin = eval(lvFormulaStr)
-    getLVMax = getLVMin + lvRange
-    checkJob = GameWorld.CanHappen(jobRand)
-    
-    randList = []
-    findItem = None
-    
-    for item in equipList:
-        if item.GetUseLV() < getLVMin or item.GetUseLV() > getLVMax:
-            continue
-        
-        if item.GetItemQuality() != 0:
-            continue
-        
-        if checkJob:
-            if JobUseable(curPlayer, item):
-                findItem = item
-                break
-            continue
-        
-        randList.append(item)
-    
-    if randList:
-        findItem = random.choice(randList)
-    
-    if findItem == None:
-        return None
-    
-    return CreateNormalItem(findItem, luckyShotRand, plusRand, addAttrRand, isBind, skillRand)
-
-
-## 生成抽奖的卓越装备
-#  @param 各属性
-#  @return 生成的物品
-def CreateNormalItem(findItem, luckyShotRand, plusRand, addAttrRand, isBind, skillRand):
-    itemID = findItem.GetItemTypeID()
-    equipItem = CreateSingleItem(itemID)
-    
-    tmpEquipData = ItemControler.SingleEquipTmpData()
-    
-    tmpEquipData.starLV = random.randint(plusRand[0], plusRand[1])
-    tmpEquipData.holeCnt = 3
-    tmpEquipData.isBind = isBind
-    tmpEquipData.isSuite = 0
-    
-    # 装备附加属性
-    ChItem.EquipAddAdditionEx(equipItem, tmpEquipData)
-    
-    return equipItem
+def GetWeightItemListByAlchemyDiffLV(curPlayer, weightList, alchemyDiffLV):
+    ## 根据炼丹等级差异等级过滤权重列表中不满足的物品,返回新的权重列表
+    resultWeightList = []
+    if alchemyDiffLV:
+        curAlchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
+        for itemInfo in weightList:
+            itemID = itemInfo[1][0]
+            itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
+            if not itemData:
+                continue
+            if GetItemClassLV(itemData) > curAlchemyLV + alchemyDiffLV:
+                continue
+            resultWeightList.append(itemInfo)
+    else:
+        resultWeightList = weightList
+    return resultWeightList
 
 ## =======================================================================================
 

--
Gitblit v1.8.0