From 2b91d1223f3d78bd2efa970478d1ed63666e131c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 11:40:43 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(优化演武场匹配逻辑;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py |   45 ++++++++++++++++++++++++---------------------
 1 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
index f5d9a48..e63e88a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
@@ -20,11 +20,13 @@
 import GameWorld
 import ItemControler
 import PlayerControl
+import PlayerSuccess
 import PlayerBillboard
 import ChPyNetSendPack
 import NetPackCommon
 import IpyGameDataPY
 import ShareDefine
+import PlayerTask
 import PlayerMail
 import DBDataMgr
 import TurnSkill
@@ -83,7 +85,7 @@
     
     return True, funcLineID
 
-def GetFBNPCInitAttr(curPlayer, turnFight, npcObj):
+def GetFBNPCInitAttr(turnFight, npcObj):
     ## 获取副本指定NPC初始化属性
     bossID = npcObj.GetNPCID()
     ipyDataList = IpyGameDataPY.GetIpyGameDataList("Tianzi", bossID)
@@ -91,7 +93,7 @@
         return {}
     return __getBossAttrDict(ipyDataList[0])
 
-def OnFBNPCKilledBefore(curPlayer, turnFight, gameObj, killer=None, useSkill=None):
+def OnFBNPCKilledBefore(turnFight, gameObj, killer=None, useSkill=None):
     ## 副本NPC被击杀前处理,一般用于处理一些不被击杀的副本NPC逻辑
     # @return: 可否被正常击杀
     
@@ -138,21 +140,28 @@
     attrDict.update(ipyData.GetOtherAttrDict())
     return attrDict
 
-def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
+def OnTurnFightOver(turnFight, mapID, funcLineID, overMsg):
     ## 回合战斗结束
     
+    hpNum = turnFight.GetDictByKey("hpNum")
+    batFaction = turnFight.getBatFaction(ChConfig.Def_FactionA)
+    totalHurt = batFaction.getTotalHurt()
+    
+    overMsg.update({"hpNum":hpNum, "totalHurt":totalHurt})
+    return
+
+def OnTurnFightAward(curPlayer, guid, mapID, funcLineID, winFaction, statMsg, dateStr, reqData, awardDict):
+    ## 回合战斗结算奖励
     if not curPlayer:
         return
     
-    #isWin = turnFight.isWin
     lineID, bossID = GetTianziTodayInfo(curPlayer)
     if lineID != funcLineID:
         GameWorld.ErrLog("结算时非今日天子考验! mapID=%s,funcLineID=%s != %s,bossID=%s" % (mapID, funcLineID, lineID, bossID))
         return
     
-    hpNum = turnFight.GetDictByKey("hpNum")
-    batFaction = turnFight.getBatFaction(ChConfig.Def_FactionA)
-    totalHurt = batFaction.getTotalHurt()
+    hpNum = statMsg.get("hpNum", 0)
+    totalHurt = statMsg.get("totalHurt", 0)
     
     historyHurt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TianziHisHurt % bossID)
     historyHurtEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TianziHisHurtEx % bossID)
@@ -182,24 +191,12 @@
         PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_Tianzi, todayHurtEx, todayHurt)
         
     itemList = __getTianziAwardList(totalHurt, bossID)
-    overMsg.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList), "totalHurt":totalHurt, "todayHurtTotal":todayHurtTotal})
-    
-    turnFight.awardData = [lineID, bossID, itemList]
-    return
-
-def OnTurnFightAward(curPlayer, turnFight, mapID, funcLineID, awardData):
-    ## 回合战斗结算奖励
-    if not curPlayer:
-        return
-    
-    if not awardData:
-        return
-    
-    lineID, bossID, itemList = awardData
+    awardDict.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList), "totalHurt":totalHurt, "todayHurtTotal":todayHurtTotal})
     
     FBCommon.AddEnterFBCount(curPlayer, mapID)
     ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["Tianzi", False, {}], isNotifyAward=False)
     SyncTianziInfo(curPlayer, lineID, bossID)
+    __onFBTianzi(curPlayer)
     return
 
 def __getTianziAwardList(todayHurt, bossID, sweepCnt=1):
@@ -256,8 +253,14 @@
     overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList), FBCommon.Over_isSweep:1, 
                 "totalHurt":todayHurtTotal, "todayHurtTotal":todayHurtTotal}
     FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
+    __onFBTianzi(curPlayer)
     return True
 
+def __onFBTianzi(curPlayer):
+    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_FBTianzi)
+    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAFBTianzi, 1)
+    return
+
 def SyncTianziInfo(curPlayer, lineID=None, bossID=None):
     if lineID == None:
         lineID, bossID = GetTianziTodayInfo(curPlayer)

--
Gitblit v1.8.0