From 6c76bfd0f116288640f9b98efa8ffaa7df5214d8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 09:34:51 +0800
Subject: [PATCH] 16 卡牌服务端(真实玩家起始ID3000000起,公会ID1000000起,与外网同步;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevelBoss.py |   53 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevelBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevelBoss.py
index 4706134..06f3eef 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevelBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevelBoss.py
@@ -19,8 +19,9 @@
 import IpyGameDataPY
 import PlayerControl
 import ItemControler
-
+import PlayerTask
 import FBCommon
+import ChConfig
 
 def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
     ## 回合战斗请求 
@@ -59,26 +60,40 @@
         GameWorld.DebugLog("最后一波未通过,无法挑战本关boss! passWave=%s < %s" % (wave, waveMax))
         return
     
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ChallengeLVID, levelID)
+    
+    PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevelChallenge)
+    
     return True, levelID
 
-def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
-    ## 回合战斗结束
+def GetFBNPCLineupInfo(curPlayer, mapID, funcLineID):
+    ## 获取NPC阵容相关
+    # @return: npcLineupIDList, strongerLV, difficulty
+    
+    chapterID, levelNum, _ = PlayerControl.GetMainLevelPassInfo(curPlayer)
+    levelIpyData = IpyGameDataPY.GetIpyGameData("MainLevel", chapterID, levelNum)
+    if not levelIpyData:
+        return
+    
+    npcLineupIDList = levelIpyData.GetBossLineupIDList() # Boss波阵容ID列表,小队1阵容ID|小队2阵容ID|...
+    strongerLV = levelIpyData.GetNPCLV()
+    difficulty = levelIpyData.GetDifficulty()
+    
+    return npcLineupIDList, strongerLV, difficulty
+
+def OnTurnFightAward(curPlayer, guid, mapID, funcLineID, winFaction, statMsg, dateStr, reqData, awardDict):
+    ## 回合战斗结算奖励
+    
     if not curPlayer:
         return
     
     playerID = curPlayer.GetPlayerID()
-    #winFaction = turnFight.winFaction
-    isWin = turnFight.isWin
+    isWin = winFaction == ChConfig.Def_FactionA
     
     chapterID, levelNum, _ = PlayerControl.GetMainLevelPassInfo(curPlayer)
     if not isWin:
         nowValue = PlayerControl.GetMainLevelNowValue(curPlayer)
         GameWorld.DebugLog("主线boss战斗失败!保持当前刷怪波进度不变! nowValue=%s" % nowValue, playerID)
-        return
-    
-    if turnFight.haveNextLineup():
-        GameWorld.DebugLog("主线boss小队战斗胜利,有下一小队! chapterID=%s,levelNum=%s,lineupIndex=%s,lineupIDList=%s" 
-                           % (chapterID, levelNum, turnFight.lineupIndex, turnFight.lineupIDList), playerID)
         return
     
     isAllPass = False # 是否通关
@@ -98,6 +113,12 @@
                             % (chapterID, levelNum, nextChapterID, nextLevelNum), playerID)
         isAllPass = True
         
+    # 发放过关奖励
+    levelIpyData = IpyGameDataPY.GetIpyGameData("MainLevel", chapterID, levelNum)
+    itemList = levelIpyData.GetAwardItemList() if levelIpyData else []
+    GameWorld.DebugLog("过关奖励: chapterID=%s,levelNum=%s,itemList=%s" % (chapterID, levelNum, itemList), playerID)
+    awardDict.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList)})
+    
     updPassValue = PlayerControl.SetMainLevelPassInfo(curPlayer, nextChapterID, nextLevelNum, 0)
     if isAllPass:
         # 已通关的刷怪进度保持不变
@@ -105,17 +126,7 @@
         GameWorld.DebugLog("已通关的刷怪进度保持不变: updNowValue=%s" % updNowValue, playerID)
     else:
         updNowValue = PlayerControl.SetMainLevelNowInfo(curPlayer, nextChapterID, nextLevelNum, 1)
-        GameWorld.DebugLog("为通关的刷怪进度设置为下一关的第1波: updNowValue=%s" % updNowValue, playerID)
+        GameWorld.DebugLog("未通关的刷怪进度设置为下一关的第1波: updNowValue=%s" % updNowValue, playerID)
     GameWorld.DebugLog("updPassValue=%s,updNowValue=%s" % (updPassValue, updNowValue), playerID)
-    
-    # 发放过关奖励
-    levelIpyData = IpyGameDataPY.GetIpyGameData("MainLevel", chapterID, levelNum)
-    if not levelIpyData:
-        return
-    itemList = levelIpyData.GetAwardItemList()
-    GameWorld.DebugLog("过关奖励: chapterID=%s,levelNum=%s,itemList=%s" % (chapterID, levelNum, itemList), playerID)
-    
     ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["MainLevelBoss", False, {}], isNotifyAward=False)
-    
-    overMsg.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList)})
     return

--
Gitblit v1.8.0