From 3a68c0b5fc1175ac646936be010c44ca279cb27c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 04 一月 2019 14:20:25 +0800
Subject: [PATCH] 4822 【后端】【1.4.100】装备部位集合配置规则优化

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 4b8f41f..3799da6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -1169,6 +1169,8 @@
     # 1. 职业物品ID集合
     job = curPlayer.GetJob()
     JobItemDropSets = IpyGameDataPY.GetFuncCfg("JobItemDropSets", 1) # {物品ID集合key:[职业顺序物品ID列表], ...}
+    itemDropSets = IpyGameDataPY.GetFuncCfg("JobItemDropSets", 2) # {物品ID集合key:[随机物品ID列表], ...}
+    itemDropRateSets = IpyGameDataPY.GetFuncCfg("JobItemDropSets", 3) # {物品ID集合key:[随机物品ID饼图列表], ...}
     ItemKeyMaxDropCountDict = ipyDrop.GetItemKeyMaxDropCount() # {物品ID集合key:随机次数,...}
     
     #     1.1 只掉本职业的
@@ -1199,20 +1201,14 @@
     #     1.2 随机掉落一个
     ItemKeyDropRateDict = ipyDrop.GetItemKeyDropRate() # {物品ID集合key:概率, ...}, 随机掉一个,优先级低
     if ItemKeyDropRateDict:
-        for jobItemKey, dropRate in ItemKeyDropRateDict.items():
-            if jobItemKey not in JobItemDropSets:
-                continue
-            jobItemList = JobItemDropSets[jobItemKey]
-            if len(jobItemList) < job:
-                GameWorld.ErrLog("职业物品集合key没有配置对应职业ID: npcID=%s,jobItemKey=%s,job=%s" % (npcID, jobItemKey, job))
-                continue
+        for itemKey, dropRate in ItemKeyDropRateDict.items():
             # 在只掉本职业里的不处理
-            if jobItemKey in ItemKeyDropRateJobDict:
+            if itemKey in ItemKeyDropRateJobDict:
                 continue
             mustDropCount = dropRate / Def_NPCMaxDropRate
             dropRate = dropRate % Def_NPCMaxDropRate # 基础概率
             canDropCount = mustDropCount
-            doCnt = ItemKeyMaxDropCountDict.get(jobItemKey, 1) # 默认1个
+            doCnt = ItemKeyMaxDropCountDict.get(itemKey, 1) # 默认1个
             doCnt = __GetNPCDropDoCountChange(doCnt, doCountRate, doCountAdd)
             for _ in xrange(doCnt):
                 if not GameWorld.CanHappen(dropRate, maxRate=Def_NPCMaxDropRate):
@@ -1220,9 +1216,20 @@
                 canDropCount += 1
                 
             for _ in xrange(canDropCount):
-                randJobItemID = random.choice(jobItemList)
-                dropItemIDList.append(randJobItemID)
-                #GameWorld.DebugLog("掉落随机职业指定物品ID: jobItemKey=%s,randJobItemID=%s" % (jobItemKey, randJobItemID))
+                if itemKey in itemDropRateSets:
+                    randItemRateList = itemDropRateSets[itemKey]
+                    randItemID = GameWorld.GetResultByRandomList(randItemRateList)
+                    #GameWorld.DebugLog("掉落饼图物品ID: itemKey=%s,randItemRateList=%s,randItemID=%s" % (itemKey, randItemRateList, randItemID))
+                elif itemKey in itemDropSets:
+                    randItemList = itemDropSets[itemKey]
+                    randItemID = random.choice(randItemList)
+                    #GameWorld.DebugLog("掉落随机物品ID: itemKey=%s,randItemList=%s,randItemID=%s" % (itemKey, randItemList, randItemID))
+                else:
+                    continue
+                if not randItemID:
+                    continue
+                dropItemIDList.append(randItemID)
+                #GameWorld.DebugLog("掉落随机指定物品ID: itemKey=%s,randItemID=%s" % (itemKey, randItemID))
                 
     # 2. 指定掉落ID处理, 受全局设定影响
     itemIDDropRateDict = ipyDrop.GetItemIDDropRate() # {物品ID:概率, ...}

--
Gitblit v1.8.0