From b82e6dbda1129a3f55d0177964a35d77feff7c77 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 20 十二月 2019 16:40:51 +0800
Subject: [PATCH] 8360 【主干】仙界秘境修改(改为击杀固定怪物数模式)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py |   60 ++++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
index 976c16d..2bec0fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
@@ -26,7 +26,7 @@
 import ShareDefine
 import PlayerActivity
 import NPCCustomRefresh
-import ItemControler
+import PlayerWeekParty
 import EventReport
 import NPCCommon
 import GameObj
@@ -34,12 +34,12 @@
 
 FBPlayerDict_EncourageLV = 'FBPlayerDict_EncourageLV'   # 鼓舞等级
 FBDict_IsOver = 'FBDict_IsOver' #是否已结算, 结算时的tick
+Map_FB_StartTick = 'Map_FB_StartTick' #活动开始时间
 
 (
 Def_BossTime,  #BOSS时间
 Def_LeaveTime,  #离开时间
-Def_HPSpeed,  #掉血速度公式
-) = range(3)
+) = range(2)
     
 #当前副本地图的状态
 (
@@ -101,12 +101,23 @@
     if mapID != ChConfig.Def_FBMapID_HorsePetBoss:
         return
     GameWorld.DebugLog('    骑宠BOSS活动状态变更 state=%s' % state)
-
-    if not state:
+            
+    if state:
+        if not GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FB_StartTick):
+            GameWorld.GetGameWorld().SetGameWorldDict(Map_FB_StartTick, tick)
+    else:
+        GameWorld.GetGameWorld().SetGameWorldDict(Map_FB_StartTick, 0)
         if GameWorld.GetGameFB().GetFBStep() == FB_Step_Fighting:
             GameWorld.GetGameFB().SetGameFBDict(FBDict_IsOver, tick)
             __DoLogicHorsePetBossOver(0, tick, 0, 0)
     return
+
+def __GetRemainTick(tick):
+    ##活动剩余毫秒
+    mapID = GameWorld.GetMap().GetMapID()
+    startTick = GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FB_StartTick)
+    closeFB_RemainTick = max(0, FBCommon.GetFBLineStepTime(mapID)[Def_BossTime] * 1000 - (tick - startTick))
+    return closeFB_RemainTick
 
 ## 进副本
 #  @param curPlayer
@@ -131,6 +142,7 @@
     if not hadDelTicket:
         FBCommon.SetHadDelTicket(curPlayer)
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_HorsePetBoss, 1)
+        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_HorsePetBoss, 1)
         EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_HorsePetBoss, 0, ChConfig.CME_Log_Start)
         EventShell.EventRespons_HorsePetBoss(curPlayer)
         if fbStep == FB_Step_Open:
@@ -144,7 +156,9 @@
         FBCommon.AddFbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, tick)
     else:
         FBCommon.SendFBEncourageInfo(curPlayer, encourageLV)
-        
+    
+    closeFB_RemainTick = __GetRemainTick(tick)
+    curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, closeFB_RemainTick, True) 
     DoFBHelp(curPlayer, tick)
     return
 
@@ -327,8 +341,8 @@
     if not playerHurtList:
         GameWorld.Log(' __DoLogicHorsePetBossOver, 伤害榜上没有人!!lineID=%s'%lineID)
         return
-  
-    event = ["HorsePetBoss", False, {}]
+    bossID = CurFBLineBOSSID(lineID)
+    #event = ["HorsePetBoss", False, {}]
     batchPlayerIDList, batchAddItemList, batchParamList, batchDetailList = [], [], [], []
     playerManager = GameWorld.GetMapCopyPlayerManager()
     worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
@@ -338,7 +352,7 @@
             auctionItemList, itemList = __GetHorsePetBossAward(lineID, rank, worldLV)
         else:
             auctionItemList, itemList = [], []
-        GameWorld.Log('auctionItemList=%s,itemList=%s'%(auctionItemList, itemList))
+        GameWorld.Log('auctionItemList=%s,itemList=%s, rank=%s'%(auctionItemList, itemList, rank), playerID)
         giveItemList = auctionItemList+itemList
         player = playerManager.FindPlayerByID(playerID)
         if player:
@@ -348,9 +362,8 @@
             if itemList:
                 overDict[FBCommon.Over_itemInfo] = FBCommon.GetJsonItemList(itemList)
             if giveItemList:
-                NPCCommon.DoVirtualItemDrop(player, giveItemList, dropPosX, dropPosY)
-                
-                ItemControler.GivePlayerItemOrMail(player, giveItemList, 'QCBOSS1', event)
+                NPCCommon.DoGiveItemByVirtualDrop(player, giveItemList, bossID, dropPosX, dropPosY, mailTypeKey='QCBOSS1')
+
             player.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True)
             FBCommon.NotifyFBOver(player, ChConfig.Def_FBMapID_HorsePetBoss, lineID, isPass, overDict)
         elif giveItemList:
@@ -388,21 +401,24 @@
         if len(itemInfo) != 3:
             GameWorld.ErrLog('骑宠Boss奖励表 配置错误 itemInfo=%s' % itemInfo)
             continue
+        if not itemInfo[0]:
+            continue
         if itemInfo[2]:
             auctionItemList.append(itemInfo)
         else:
             itemList.append(itemInfo)
     
-    for doCnt, awardPieRateList in awardPieRateDict.items():
-        for _ in xrange(doCnt):
-            resultItem = GameWorld.GetResultByRandomList(awardPieRateList)
-            if len(resultItem) != 3:
-                GameWorld.ErrLog('骑宠Boss奖励表配置错误 itemInfo=%s' % resultItem)
-                continue
-            if resultItem[2]:
-                auctionItemList.append(resultItem)
-            else:
-                itemList.append(resultItem)
+    for awardPieRateList in awardPieRateDict:
+        resultItem = GameWorld.GetResultByRandomList(awardPieRateList)
+        if len(resultItem) != 3:
+            GameWorld.ErrLog('骑宠Boss奖励表配置错误 itemInfo=%s' % resultItem)
+            continue
+        if not resultItem[0]:
+            continue
+        if resultItem[2]:
+            auctionItemList.append(resultItem)
+        else:
+            itemList.append(resultItem)
     return auctionItemList, itemList
 
 

--
Gitblit v1.8.0