From bc47738434e81b82326ed342cf1514f5c08af3e3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 九月 2023 19:15:41 +0800
Subject: [PATCH] 9920 [BT0.1][主干]仙宝寻主修改(增加条件类型)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py |  136 +++++++++++++++++++++++++++++++--------------
 1 files changed, 93 insertions(+), 43 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index d146863..8727b44 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -343,6 +343,7 @@
     elif ipyDataList:
         for ipyData in ipyDataList:
             if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
+                GameWorld.DebugLog("未领取该仙宝寻主奖励,无法激活! ID=%s" % ipyData.GetID())
                 return
     elif mwID == 101: #定海神针特殊 可直接获得
         FBCommon.Notify_FB_Over(curPlayer, {FBCommon.Over_dataMapID:ChConfig.Def_FBMapID_MagicWeapon,FBCommon.Over_isPass:1})
@@ -351,49 +352,6 @@
         return
     DoActiveMW(curPlayer, mwID)
     return
-
-def GetXBXZAwardProgress(curPlayer, mwID):
-    ##获取仙宝寻主当前达到条件的个数(包含已领取的)
-    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('XBXZ', {'MWID': mwID}, True, False)
-    if not ipyDataList:
-        return 0
-    cnt = 0
-    playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    for ipyData in ipyDataList:
-        if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
-            cnt += 1
-            continue
-        curType = ipyData.GetType()
-        conditionList = ipyData.GetCondition()
-        
-        if curType == 1:
-            #穿戴X阶X颜色是否套装X部位装备
-            for classlv, color, suite, place in conditionList:
-                equipIpyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap',classlv,place)
-                if not equipIpyData:
-                    continue
-                gridIndex = equipIpyData.GetGridIndex()
-                curEquip = playerEquip.GetAt(gridIndex)
-                if curEquip.IsEmpty():
-                    continue
-                curItemColor = curEquip.GetItemColor()
-                curIsSuite = curEquip.GetSuiteID()
-                if curItemColor >= color and curIsSuite >= suite:
-                    cnt += 1
-                    break
-        else:
-            continue
-    return cnt
-
-#    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('XBXZ', {'MWID': mwID}, True, False)
-#    cnt = 0
-#    if ipyDataList:
-#        for ipyData in ipyDataList:
-#            if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
-#                cnt += 1
-#    return cnt
-#-------------------------------------------------------------------------------
-
 
 def OnGetXBXZAward(curPlayer, index):
     ##仙宝寻主领奖
@@ -424,9 +382,101 @@
             if curItemColor >= color and curIsSuite >= suite:
                 cnt = 1
                 break
+            
+    #2    穿戴X件X价X品质装备    件数    x阶|x品质
+    elif curType == 2:
+        playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+        classLV, color = conditionList
+        ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
+        if ipyDataList:
+            for iData in ipyDataList:
+                gridIndex = iData.GetGridIndex()
+                curEquip = playerEquip.GetAt(gridIndex)
+                if curEquip.IsEmpty():
+                    continue
+                curItemColor = curEquip.GetItemColor()
+                if curItemColor >= color:
+                    cnt += 1
+                    
+    #3    X阶装备总强化等级    强化等级    x阶
+    elif curType == 3:
+        classLV = conditionList[0]
+        customAttrDictPlus = PlayerControl.GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Plus)[2]
+        classPlusLVDict = customAttrDictPlus.get("classPlusLVDict", {})
+        #GameWorld.DebugLog("    curType=%s,classLV=%s,classPlusLVDict=%s" % (curType, classLV, classPlusLVDict))
+        if classLV not in classPlusLVDict:
+            return
+        cnt = classPlusLVDict[classLV]
+        
+    #4    X阶装备总升星等级    升星等级    x阶
+    elif curType == 4:
+        classLV = conditionList[0]
+        customAttrDictStar = PlayerControl.GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Star)[2]
+        classStarLVDict = customAttrDictStar.get("classStarLVDict", {})
+        #GameWorld.DebugLog("    curType=%s,classLV=%s,classStarLVDict=%s" % (curType, classLV, classStarLVDict))
+        if classLV not in classStarLVDict:
+            return
+        cnt = classStarLVDict[classLV]
+        
+    #5    X阶装备总洗炼等级    洗炼等级    x阶
+    elif curType == 5:
+        classLV = conditionList[0]
+        customAttrDictWash = PlayerControl.GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash)[2]
+        classWashLVDict = customAttrDictWash.get("classWashLVDict", {})
+        #GameWorld.DebugLog("    curType=%s,classLV=%s,classWashLVDict=%s" % (curType, classLV, classWashLVDict))
+        if classLV not in classWashLVDict:
+            return
+        cnt = classWashLVDict[classLV]
+        
+    #6    X阶装备总宝石等级    宝石等级    x阶
+    elif curType == 6:
+        classLV = conditionList[0]
+        customAttrDictStone = PlayerControl.GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone)[2]
+        classStoneLVDict = customAttrDictStone.get("classStoneLVDict", {})
+        #GameWorld.DebugLog("    curType=%s,classLV=%s,classStoneLVDict=%s" % (curType, classLV, classStoneLVDict))
+        if classLV not in classStoneLVDict:
+            return
+        cnt = classStoneLVDict[classLV]
+        
+    #7    坐骑达到X阶    阶    无
+    elif curType == 7:
+        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
+        
+    #8    天星塔达到X层    层    无
+    elif curType == 8:
+        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
+        
+    #9    符印塔达到X层    层    无
+    elif curType == 9:
+        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
+        
+    #10    击杀X只BOSS    只数    boss归类索引
+    elif curType == 10:
+        bossIndex = conditionList[0]
+        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Boss_KillCntTotal % bossIndex)
+        
+    #11    神兵达到X级    等级    x类型
+    elif curType == 11:
+        gwType = conditionList[0]
+        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % gwType)
+        
+    #12    玩家等级达到X级    等级    无
+    elif curType == 12:
+        cnt = curPlayer.GetLV()
+        
+    #13    获得法宝XXX    个数    法宝ID
+    elif curType == 13:
+        mwID = conditionList[0]
+        cnt = 1 if GetIsActiveMagicWeapon(curPlayer, mwID) else 0
+        
+    #14    境界达到XXX    境界    无
+    elif curType == 14:
+        cnt = curPlayer.GetOfficialRank()
         
     else:
         return
+    
+    GameWorld.DebugLog("仙宝寻主领奖 ID=%s,curType=%s,cnt=%s,GetNeedCnt=%s" % (index, curType, cnt, ipyData.GetNeedCnt()))
     if cnt < ipyData.GetNeedCnt():
         GameWorld.DebugLog('    仙宝寻主领奖 , 条件不满足 ID=%s, cnt=%s,NeedCnt=%s' % (index, cnt, ipyData.GetNeedCnt()))
         return

--
Gitblit v1.8.0