From c562008bec642a25245295eeec567081bc4e4c42 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 18 四月 2019 14:29:23 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(草园)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossGrassland.py |   65 +++++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 7 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossGrassland.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossGrassland.py
index 4bf5191..d71abe4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossGrassland.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossGrassland.py
@@ -22,15 +22,21 @@
 import IpyGameDataPY
 import PyGameData
 import NPCCommon
+import PlayerControl
+import ChConfig
 
-def DoResetCrossGrassland(curPlayer, eventType):
+def DoResetCrossGrassland(curPlayer, eventType, fdeventID):
     ## 草园重置
     
     resetCollectType = 10 + eventType
     NPCCommon.DoResetCollectNPCTimeByType(curPlayer, [resetCollectType])
     
     # 宝箱怪次数重置
-    
+    if eventType == PlayerFairyDomain.FDEventType_GrasslandXian:
+        npcID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
+        if npcID:
+            NPCCommon.UpdateNPCAttackCount(curPlayer, [npcID], 0)
+            
     return
     
 def __SetGrasslandVisitState(curPlayer, mapID, lineID, state):
@@ -111,10 +117,55 @@
     __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
     return
 
-## 给自定义副本奖励后续处理
-## @return: 返回结算副本over信息字典,不含jsonItem信息
-def OnGiveCustomFBPrizeOK(curPlayer, mapID, lineID):
+def DoCheckUpdateGrasslandEnd(curPlayer):
+    ## 检查更新草园已拜访完成
+    
+    grasslandMapIDList = [ChConfig.Def_FBMapID_CrossGrasslandLing, ChConfig.Def_FBMapID_CrossGrasslandXian]
+    crossMapID = PlayerControl.GetCrossMapID(curPlayer)
+    clientCustomSceneMapID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneMapID)
+    if crossMapID in grasslandMapIDList:
+        mapID = crossMapID
+        lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
+    elif clientCustomSceneMapID in grasslandMapIDList:
+        mapID = clientCustomSceneMapID
+        lineID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneLineID)
+    else:
+        return
+    
+    # 采集次数是否已用完
+    collNPCIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("MapRefreshNPC", mapID)
+    if not collNPCIpyDataList:
+        return
+    
+    for collIpyData in collNPCIpyDataList:
+        npcIDList = collIpyData.GetNPCIDList()
+        for npcID in npcIDList:
+            collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID)
+            if not collectNPCIpyData:
+                return
+            limitMaxTime = collectNPCIpyData.GetMaxCollectCount()
+            totalCollTime = NPCCommon.GetTodayCollectCount(curPlayer, npcID)
+            if totalCollTime < limitMaxTime:
+                GameWorld.DebugLog("草园NPC采集次数未用完! npcID=%s,totalCollTime=%s < limitMaxTime=%s" % (npcID, totalCollTime, limitMaxTime))
+                return
+            
+    # 宝箱怪攻击次数是否已用完
+    if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian:
+        boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
+        boxNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("TreasureNPC", boxNPCID)
+        if not boxNPCIpyData:
+            return
+        attackCountDropWeightInfo = boxNPCIpyData.GetAttackCountDropWeightInfo()
+        if not attackCountDropWeightInfo:
+            return
+        maxAttackCount = max(attackCountDropWeightInfo)
+        attackCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NPCAttackCount % boxNPCID)
+        if attackCount < maxAttackCount:
+            GameWorld.DebugLog("草园宝箱怪攻击次数未用完! boxNPCID=%s,attackCount=%s < maxAttackCount=%s" % (boxNPCID, attackCount, maxAttackCount))
+            return
+        
     __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
-    overDict = {}
-    return overDict
+    GameWorld.DebugLog("设置草园已完成!mapID=%s, lineID=%s" % (mapID, lineID))
+    return
+
 

--
Gitblit v1.8.0