From bf08c8333363e9b8aeab0b7e482cee6767bf6f0a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 24 十一月 2018 19:37:00 +0800
Subject: [PATCH] 4762 Add B2 11 助战记录列表 #tagMCHelpBattleRecordList

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py |   76 +++++++++++++++++++++++++++++---------
 1 files changed, 58 insertions(+), 18 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
index 5371a4c..d46382d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
@@ -31,6 +31,7 @@
 import EventReport
 import ChPyNetSendPack
 import NetPackCommon
+import BuffSkill
 
 import random
 import datetime
@@ -218,6 +219,7 @@
 # @param tick 时间戳
 # @return 无意义
 def DoExitFB(curPlayer, tick):
+    
     return
 
 ##玩家主动离开副本.
@@ -227,6 +229,12 @@
 def DoPlayerLeaveFB(curPlayer, tick):
     return
 
+##玩家切换地图
+def DoPlayerChangeMapLogic(curPlayer):
+    tick = GameWorld.GetGameWorld().GetTick()
+    for buffID in IpyGameDataPY.GetFuncEvalCfg('IceLodeSpecial', 2):
+        BuffSkill.DelBuffBySkillID(curPlayer, buffID, tick)
+    return
 
 def OnPickUpItem(curPlayer, curItem, tick):
     return
@@ -448,12 +456,7 @@
         return False
     return True
 
-## 执行副本杀怪逻辑
-#  @param curPlayer 杀怪的人
-#  @param curNPC 被杀的怪
-#  @param tick 当前时间
-#  @return None
-def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
+def __OnKillNPC(attacker, curNPC, tick):
     gameFB = GameWorld.GetGameFB()
     npcid = curNPC.GetNPCID()
     npcCfg = GetIceLodeNPCCfg()
@@ -468,8 +471,22 @@
     remainNPCCnt = max(0, gameFB.GetGameFBDictByKey(FBPlayerDict_RemainNPCCnt) - 1)
     gameFB.SetGameFBDict(FBPlayerDict_RemainNPCCnt, remainNPCCnt)
     
-    if remainNPCCnt <=0:
+    if remainNPCCnt <=0 or npcid in IpyGameDataPY.GetFuncEvalCfg('IceLodeSpecial'):
         __DoIceLodeOver(True)
+    return
+
+def DoFB_Npc_KillNPC(attacker, curNPC, tick):
+    __OnKillNPC(attacker, curNPC, tick)
+    return
+
+## 执行副本杀怪逻辑
+#  @param curPlayer 杀怪的人
+#  @param curNPC 被杀的怪
+#  @param tick 当前时间
+#  @return None
+def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
+    __OnKillNPC(curPlayer, curNPC, tick)
+    
     
 #    addPoint = GetPointByNPCID(npcid)
 #    if not addPoint:
@@ -521,16 +538,16 @@
     lineID = FBCommon.GetFBPropertyMark()
     star = GameWorld.GetGameFB().GetGameFBDictByKey(FBPlayerDict_FBStar)
     mapID = ChConfig.Def_FBMapID_IceLode
-    
+    isInFBOnDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_IceLodeIsInFBOnDay)
     #更新星级
     lastStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID])
     if isPass and star > lastStar:
         GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, star, False, [mapID])
         FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID) # 同步信息
-        if not lastStar: #每日活动
+        if not lastStar and not isInFBOnDay: #每日活动
             PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_IceLode)
-    isInFBOnDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_IceLodeIsInFBOnDay)
-    if isInFBOnDay: #在副本里过天,副本结束后再补发奖励
+    
+    if isInFBOnDay: #在副本里过天,副本结束后再补发星级奖励
         CheckIceLodeStarAwardMail(curPlayer)
 #    exp = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExp)
 #    expPoint = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExpPoint)
@@ -540,19 +557,32 @@
     if not costTime:
         costTime = tick - GameWorld.GetGameFB().GetFBStepTick()
     #jsonItemList = PyGameData.g_fbPickUpItemDict.get(playerID, [])
-    jsonItemList = FBCommon.GetJsonItemList(FBCommon.GetFBLineReward(mapID, lineID))
+    overDict = {FBCommon.Over_isPass:int(isPass), FBCommon.Over_costTime:costTime}
+    if isPass:
+        itemList = FBCommon.GetFBLineReward(mapID, lineID)
+        # 给物品
+        needSpace = len(itemList)
+        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+        if needSpace > packSpace:
+            PlayerControl.SendMailByKey('', [curPlayer.GetID()], itemList)
+        else:
+            for itemID, itemCount, isBind in itemList:
+                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+        
+        jsonItemList = FBCommon.GetJsonItemList(itemList)
+        overDict[FBCommon.Over_itemInfo] = jsonItemList
     # 通知结果
-    __SendIceLodeOverInfo(curPlayer, {FBCommon.Over_isPass:int(isPass), FBCommon.Over_costTime:costTime, FBCommon.Over_itemInfo:jsonItemList})
+    __SendIceLodeOverInfo(curPlayer, overDict)
     
     # 进入离开阶段
     FBCommon.SetFBStep(FB_Step_Over, tick)
     FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttLeaveMap, FBCommon.GetFBLineStepTime(mapID)[Def_LeaveTime] * 1000)
     
     # 清怪,关闭刷怪
-    FBCommon.ClearFBNPC()
-    npcCfg = GetIceLodeNPCCfg()
-    for npcInfo in npcCfg:
-        NPCCustomRefresh.CloseNPCRefresh(npcInfo[Def_RefreshMark], tick)
+#    FBCommon.ClearFBNPC()
+#    npcCfg = GetIceLodeNPCCfg()
+#    for npcInfo in npcCfg:
+#        NPCCustomRefresh.CloseNPCRefresh(npcInfo[Def_RefreshMark], tick)
     
     return
 
@@ -577,6 +607,9 @@
 
 ## 可否扫荡
 def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
+    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_IceLode:
+        GameWorld.DebugLog('冰晶矿脉扫荡  副本里不能扫荡 ')
+        return
     #战力判断
     LVIpyData = PlayerControl.GetPlayerLVIpyData(curPlayer.GetLV())
     reFightPower = 0 if not LVIpyData else LVIpyData.GetIceLodeFightPower() # 当前等级参考战力
@@ -615,10 +648,15 @@
         for itemID, itemCnt, isBind in itemList:
             ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
     #直接将5条线星级改为3星
+    addCnt = 0
     starCnt, lineList = GetIceLodeAllStarCnt(curPlayer)
     for lineid in lineList:
+        curStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineid, False, [mapID])
+        if curStar == 0:
+            addCnt += 1
         GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineid, 3, False, [mapID])
-    
+    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_IceLode, addCnt)
+    FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID) # 同步信息
 #    npcCountDict = {}
 #    iceLodeSweepDict = IpyGameDataPY.GetFuncEvalCfg('IceLodeSweep')
 #    for npcID, count in iceLodeSweepDict.items():
@@ -723,8 +761,10 @@
     maxCnt, randomCnt = IpyGameDataPY.GetFuncEvalCfg('IceLodeCfg', 2)
     for i in xrange(maxCnt):
         GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, i, 0, False, [ChConfig.Def_FBMapID_IceLode])
+    FBCommon.Sync_FBPlayerFBInfoData(curPlayer, ChConfig.Def_FBMapID_IceLode) # 同步信息
     #重置领奖记录
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeStarAwardRecord, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeHasSweep, 0)
     #随机今日玩法
     __RandomLine(curPlayer)
     #通知

--
Gitblit v1.8.0