hxp
2018-11-01 acd1649429df17b675122b3708704625b61c4b08
2260 【1.2】【bug】私有掉落不受掉落等级上限限制
1个文件已修改
16 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -3919,7 +3919,7 @@
                return moneyID
        return moneyItemList[-1][1]
    
    def __NPCSpecialDropItem(self, ownerPlayerList, ipyDrop):
    def __NPCSpecialDropItem(self, dropPlayer, ownerPlayerList, ipyDrop):
        '''特殊掉落 (私有特殊掉落 + 击杀次数特殊掉落), 支持摸怪
        @return: None
        @return: [[ownerPlayer, itemID, isBind, isDropInItemPack], ...]
@@ -3927,6 +3927,12 @@
        curNPC = self.__Instance
        npcID = curNPC.GetNPCID()
        specDropItemList = []
        playerLV = dropPlayer.GetLV()
        maxDropLV = ipyDrop.GetMaxDropLV()
        if maxDropLV and playerLV > maxDropLV:
            GameWorld.DebugLog("超过最大可掉落等级,不掉落物品,特殊掉落!npcID=%s,playerLV(%s) > maxDropLV(%s)" % (npcID, playerLV, maxDropLV))
            return specDropItemList
        
        # 私有掉落
        fbGradePriItemIDDropDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 3)
@@ -4027,7 +4033,7 @@
        mapID = FBCommon.GetRecordMapID(mapID)
        isGameBoss = ChConfig.IsGameBoss(curNPC)
        if isGameBoss:
            GameWorld.Log("NPC开始掉落: npcID=%s,dropPlayerID=%s" % (npcID, dropPlayer.GetPlayerID()))
            GameWorld.Log("NPC开始掉落: npcID=%s,dropPlayerID=%s" % (npcID, dropPlayer.GetPlayerID()), dropPlayer.GetPlayerID())
        if mapID == ChConfig.Def_FBMapID_MunekadoTrial:
            return
        ipyDrop = GetNPCDropIpyData(npcID)
@@ -4051,7 +4057,7 @@
            dropIDList += [moneyID] * dropMoneyCnt
            
        specItemSign = "SpecItem"
        playerSpecDropList = self.__NPCSpecialDropItem(ownerPlayerList, ipyDrop) # 特殊掉落 [[ownerPlayer, itemID, isBind, isDropInItemPack], ...]  私有特殊掉落 + 击杀次数特殊掉落
        playerSpecDropList = self.__NPCSpecialDropItem(dropPlayer, ownerPlayerList, ipyDrop) # 特殊掉落 [[ownerPlayer, itemID, isBind, isDropInItemPack], ...]  私有特殊掉落 + 击杀次数特殊掉落
        dropIDList += [specItemSign] * len(playerSpecDropList)
        
        if len(dropIDList) > 5:
@@ -4059,6 +4065,10 @@
            random.shuffle(playerSpecDropList)
            random.shuffle(dropIDList)
            
        if not dropIDList and isGameBoss:
            GameWorld.ErrLog("Boss没有掉落: dropPlayerLV=%s,ipyWorldLV=%s,maxDropLV=%s"
                             % (dropPlayer.GetLV(), ipyDrop.GetMaxWorldLV(), ipyDrop.GetMaxDropLV()), dropPlayer.GetPlayerID())
        gameMap = GameWorld.GetMap()
        dropPosX, dropPosY = curNPC.GetPosX(), curNPC.GetPosY() # 以NPC为中心点开始掉落
        index = 0