From 508c27536f7e5d873fdc6efa33551ad33dc02580 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 06 十二月 2018 10:40:05 +0800
Subject: [PATCH] 5104 宝石变更流向增加替换后宝石的物品ID,部位
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 24 +++++++++---------------
1 files changed, 9 insertions(+), 15 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 b277de7..5f44b87 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -335,7 +335,7 @@
return attrDict
def GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, exp_rate=None, mailTypeKey=None, isMail=False,
- extraItemList=[], prizeMultiple=1, dropItemMapInfo=[]):
+ extraItemList=[], prizeMultiple=1, dropItemMapInfo=[], curGrade=0):
'''给玩家击杀NPC掉落奖励
@param mapID: 击杀的NPC所在地图ID,注意次地图并不一定是玩家当前地图
@param npcCountDict: 执行单次时所击杀的npc数量字典 {npcID:count, ...}
@@ -375,7 +375,7 @@
# 掉落有概率因素,需多次执行
for dCount in xrange(1, totalCount + 1):
isKillCountDropEquipEx = dCount == 1 # 同一只NPC一次处理中多次击杀的情况,只算一次附加装备处理
- dropInfo = GetNPCDropInfo(curPlayer, mapID, npcID, isKillCountDropEquipEx=isKillCountDropEquipEx)
+ dropInfo = GetNPCDropInfo(curPlayer, mapID, npcID, isKillCountDropEquipEx=isKillCountDropEquipEx, curGrade=curGrade)
if not dropInfo:
continue
dropIDList, dropIDBindDict, dropMoneyCnt, moneyValue = dropInfo
@@ -690,7 +690,7 @@
% (npcID, killCount, dropIDCountDict, dropIDBindDict, dropMoney), playerID)
return dropIDCountDict, dropIDBindDict, dropMoney
-def GetNPCDropInfo(dropPlayer, mapID, npcID, ownerPlayerList=[], ipyDrop=None, isSingle=True, isKillCountDropEquipEx=True):
+def GetNPCDropInfo(dropPlayer, mapID, npcID, ownerPlayerList=[], ipyDrop=None, isSingle=True, isKillCountDropEquipEx=True, curGrade=0):
'''获取NPC掉落信息, 击杀及扫荡通用,调用该函数获得掉落信息,然后再看掉落地板上还是直接放入背包
@param dropPlayer: 用于判断调用相关用的玩家示例,该玩家并不一定是击杀者,只是按一定规则设定的掉落判断依据的玩家
如队伍,取等级最大的玩家,该玩家并不一定是击杀者
@@ -782,7 +782,7 @@
indepRateDoCnt = ipyDrop.GetIndepRateDoCnt()
if indepRateDoCnt:
indepRateDoCnt = __GetNPCDropDoCountChange(indepRateDoCnt, doCountRate + equipDropDoCountPlus, doCountAdd)
- dropEquipInfoList += __GetNPCIndepRateEquipDrop(ipyDrop, indepRateDoCnt, equipDropRatePlus)
+ dropEquipInfoList += __GetNPCIndepRateEquipDrop(ipyDrop, indepRateDoCnt, equipDropRatePlus, curGrade)
#GameWorld.DebugLog("阶,颜色,部位集合key,dropEquipInfoList=%s" % (dropEquipInfoList))
placeDict = IpyGameDataPY.GetFuncCfg("EquipDropPartSets", 1)
@@ -878,7 +878,7 @@
fbGradeColorStarRateDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 2) # 评级影响品质星级概率 {npcID:{(颜色,星级):[D级影响概率, ..., S级影响概率], ...}, ...}
if npcID in fbGradeColorStarRateDict:
gradeColorStarRateDict = fbGradeColorStarRateDict[npcID]
- curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
+ curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
colorDropCntDict = {} # 装备颜色已经掉落数 {颜色:数量, ...}
colorMaxDropCntDict = ipyDrop.GetIndepRateMaxDropCount() # {颜色:上限数量,...}
@@ -953,7 +953,7 @@
fbGradePriItemIDDropDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 3)
if npcID in fbGradePriItemIDDropDict:
gradePriItemIDDropDict = fbGradePriItemIDDropDict[npcID]
- curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
+ curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
priDropInfoList = gradePriItemIDDropDict.get(curGrade, [])
priDropIDList = []
for priItemID, priItemCount in priDropInfoList:
@@ -1335,7 +1335,7 @@
#GameWorld.DebugLog("饼图装备掉落结果: doCnt=%s, %s" % (doCnt, dropEquipInfoList))
return dropEquipInfoList
-def __GetNPCIndepRateEquipDrop(ipyDrop, doCnt, equipDropPlus):
+def __GetNPCIndepRateEquipDrop(ipyDrop, doCnt, equipDropPlus, curGrade=0):
## 获取NPC独立掉率装备掉落信息
npcID = ipyDrop.GetNPCID()
indepRateDict = ipyDrop.GetIndepRateDrop() # {(阶,颜色,部位集合key):概率,...}
@@ -1346,7 +1346,7 @@
fbGradeColorRateDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 1) #{npcID:{颜色:[D级影响概率, ..., S级影响概率], ...}, ...}
if npcID in fbGradeColorRateDict:
gradeColorRateDict = fbGradeColorRateDict[npcID]
- curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
+ curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade)
#colorDropCntDict = {} # 装备颜色已经掉落数 {颜色:数量, ...}
dropEquipInfoList = []
@@ -3653,9 +3653,6 @@
# @remarks 刷新NPC属性
def RefreshNPCAttrState(self, canSyncClient=True, isReborn=False):
curNPC = self.__Instance
- if curNPC.GetType() == ChConfig.ntHelpBattleRobot:
- # 助战机器人不处理
- return
#curNPCMaxHP_Before = GameObj.GetMaxHP(curNPC)
#清空NPC战斗属性
curNPC.ClearBattleEffect()
@@ -3708,7 +3705,7 @@
fbFightPower = ipyData.GetFightPowerMin()
baseHurt = ipyData.GetRobotBaseHurt()
hpCoefficient = ipyData.GetRobotHPCoefficient()
- maxHP = int(baseHurt * fightPower / fbFightPower * hpCoefficient)
+ maxHP = int(eval(IpyGameDataPY.GetFuncCompileCfg("HelpBattleRobot", 2)))
GameWorld.DebugLog("设置助战机器人属性: objID=%s,fightPower=%s,maxHP=%s" % (curNPC.GetID(), fightPower, maxHP))
GameObj.SetMaxHP(curNPC, maxHP)
GameObj.SetHP(curNPC, maxHP)
@@ -3739,9 +3736,6 @@
# @remarks 刷新NPC行为属性
def RefreshNPCActionState(self):
curNPC = self.__Instance
- if curNPC.GetType() == ChConfig.ntHelpBattleRobot:
- # 助战机器人不处理
- return
OperControlManager.ClearObjActionState(curNPC)
#根据BUFF 加上状态
--
Gitblit v1.8.0