From c6576381512d37899d9cd82f0d9e985af5d92c14 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 27 十一月 2018 11:56:01 +0800
Subject: [PATCH] 5076 【后端】【1.3】增加通关冰晶矿脉副本(任意副本、任意星数)的触发任务条件

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 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 1527607..63c8ba2 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
@@ -29,6 +29,7 @@
 import ItemCommon
 import ItemControler
 import EventReport
+import EventShell
 import ChPyNetSendPack
 import NetPackCommon
 import BuffSkill
@@ -111,19 +112,26 @@
             return
     starCnt, lineList = GetIceLodeAllStarCnt(curPlayer)
     if not lineList:
-        __RandomLine(curPlayer)
+        __RandomLine(curPlayer, lineList)
     SyncIceLoddInfo(curPlayer)
     return
 
-def __RandomLine(curPlayer):
+def __RandomLine(curPlayer, oldlineList):
     # 随机今日玩法
     maxCnt, randomCnt = IpyGameDataPY.GetFuncEvalCfg('IceLodeCfg', 2)
     lineList = range(maxCnt)
-    random.shuffle(lineList)
-    for i, lineID in enumerate(lineList):
-        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, lineID, 0 if i >= randomCnt else 1)
+    newlineList = list(set(lineList) - set(oldlineList))
+    if len(newlineList) < randomCnt:
+        random.shuffle(oldlineList)
+        newlineList += oldlineList[:randomCnt-len(newlineList)]
+    else:
+        random.shuffle(newlineList)
+        newlineList = newlineList[:randomCnt]
+    #random.shuffle(lineList)
+    for lineID in lineList:
+        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, lineID, 1 if lineID in newlineList else 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeDayLV, curPlayer.GetLV())
-    GameWorld.DebugLog('    随机冰晶矿脉今日玩法 lineList =%s'%(lineList[:randomCnt]), curPlayer.GetID())
+    GameWorld.DebugLog('    随机冰晶矿脉今日玩法 oldlineList=%s, newlineList =%s'%(oldlineList, newlineList), curPlayer.GetID())
     return
 
 ## 是否能够通过活动查询进入
@@ -577,6 +585,7 @@
         
         jsonItemList = FBCommon.GetJsonItemList(itemList)
         overDict[FBCommon.Over_itemInfo] = jsonItemList
+        EventShell.EventRespons_FBEvent(curPlayer, 'icelode')
     # 通知结果
     __SendIceLodeOverInfo(curPlayer, overDict)
     
@@ -732,7 +741,7 @@
         if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, i):
             starCnt += GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, i, False, [ChConfig.Def_FBMapID_IceLode])
             lineList.append(i)
-    if len(lineList) != randomCnt:
+    if lineList and len(lineList) != randomCnt:
         GameWorld.ErrLog('    冰晶矿脉获取当前总星数,当前线路数量异常!lineList=%s'%lineList)
     return starCnt, lineList[:randomCnt]
 
@@ -774,7 +783,7 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeStarAwardRecord, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeHasSweep, 0)
     #随机今日玩法
-    __RandomLine(curPlayer)
+    __RandomLine(curPlayer, lineList)
     #通知
     SyncIceLoddInfo(curPlayer)
     return True

--
Gitblit v1.8.0