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 = []