From 8145e33b8bac3d5852d08e3de8128ae8db3a6d4c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 01 二月 2019 14:07:52 +0800
Subject: [PATCH] 6188 【后端】【1.5.200】诛仙塔爬塔补偿

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 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 f388d6c..a642e49 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -52,6 +52,7 @@
 import PlayerMagicWeapon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import FamilyRobBoss
 import IpyGameDataPY
@@ -508,7 +509,19 @@
         
     ## 直接掉地板上
     if dropItemMapInfo:
-        dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo
+        dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo[:3]
+        isDropDisperse = dropItemMapInfo[3] if len(dropItemMapInfo) > 3 else False # 堆叠的物品是否散开掉落
+        if isDropDisperse:
+            dropItemList = []
+            for itemInfo in prizeItemList:
+                if isinstance(itemInfo, list):
+                    itemID, itemCount, isBind = itemInfo
+                    for _ in xrange(itemCount):
+                        dropItemList.append([itemID, 1, isBind])
+                else:
+                    dropItemList.append(itemInfo)
+        else:
+            dropItemList = prizeItemList
         index = 0
         playerID = curPlayer.GetPlayerID()
         gameMap = GameWorld.GetMap()
@@ -520,10 +533,10 @@
                 #玩家不可移动这个点
                 continue
             
-            if index > len(prizeItemList) - 1:
+            if index > len(dropItemList) - 1:
                 break
             
-            curItem = prizeItemList[index]
+            curItem = dropItemList[index]
             index += 1
             if isinstance(curItem, list):
                 itemID, itemCount, isBind = curItem
@@ -2140,6 +2153,7 @@
         dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt,
                     "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
         DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
+        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
         
     if isCrossServer:
         return
@@ -2151,6 +2165,7 @@
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
         
     if mapID == ChConfig.Def_FBMapID_BossHome:
@@ -2161,6 +2176,7 @@
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
     return
     
@@ -3013,6 +3029,10 @@
         #    GameWorld.DebugLog("伤血玩家血量为0,清除该伤血!playerID=%s" % hurtID)
         #    return True
         
+        if not hurtPlayer.GetVisible():
+            GameWorld.DebugLog("伤血玩家不可见,清除该伤血!playerID=%s" % hurtID)
+            return True
+        
         if not self.GetIsInRefreshPoint(hurtPlayer.GetPosX(), hurtPlayer.GetPosY(), refreshPoint):
             GameWorld.DebugLog("伤血玩家不在boss范围里,清除该伤血!playerID=%s" % hurtID)
             return True
@@ -3044,6 +3064,10 @@
             if curTeamPlayer:
                 if curTeamPlayer.GetCopyMapID() != copyMapID:
                     #GameWorld.DebugLog("队员不在本线路,不计!playerID=%s" % playerID)
+                    continue
+                
+                if not curTeamPlayer.GetVisible():
+                    #GameWorld.DebugLog("队员不可见,不计!playerID=%s" % playerID)
                     continue
                 
                 if curTeamPlayer.GetHP() <= 0 or curTeamPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
@@ -5023,6 +5047,7 @@
         else:
             if curNPC.GetLV()>=curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
                 PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
+            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
             
         if ChConfig.IsGameBoss(curNPC):
             OnPlayerKillBoss(curPlayer, npcID, mapID, False)
@@ -5163,7 +5188,7 @@
         #===========================================================================================
         
         # 在地上添加物品(统一接口)
-        dropNPCID = 0 if not curNPC.GetIsBoss() else curNPCID
+        dropNPCID = 0 if not ChConfig.IsGameBoss(curNPC) else curNPCID
         specOwnerIDList = self.__AllKillerDict.keys() if (len(self.__AllKillerDict) > 1 or dropType == ChConfig.Def_NPCHurtTypeSpecial) else []
         curMapItem = ChItem.AddMapDropItem(posX, posY, curItem, ownerInfo=[dropType, ownerID, specOwnerIDList], dropNPCID=dropNPCID)
         

--
Gitblit v1.8.0