From fbf3fe5655d97c67db3bf07706ab5af232dcc9a5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 18 九月 2025 19:17:48 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(甘夫人技能;增加连击、追击增伤减伤属性;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py |   27 +++++++++++++++++++++------
 1 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
index 63fdd02..2f18462 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -23,6 +23,7 @@
 import PlayerControl
 import IpyGameDataPY
 import FormulaControl
+import PlayerPrestigeSys
 import PlayerHero
 import GameWorld
 import ChConfig
@@ -156,6 +157,8 @@
         
         # 主线战斗
         self.mainFight = TurnAttack.MainFight(playerID)
+        
+        self._lastBatBufferInfo = [] # 最后一场战斗临时回放 ["guid", "buffer"]
         return
     
     def OnClear(self):
@@ -246,6 +249,11 @@
                         
         GameWorld.DebugLog("武将物品养成更新索引: %s, 影响阵容:%s" % (itemIndexList, effLineupIDList), self.playerID)
         return effLineupIDList
+    
+    def GetLastBatBuffer(self): return self._lastBatBufferInfo
+    def SetLastBatBuffer(self, guid, batBuffer):
+        self._lastBatBufferInfo = [guid, batBuffer]
+        return
     
 class OnlineMgr():
     ## 准在线玩家管理
@@ -403,6 +411,7 @@
     CalcRoleBase(curPlayer)
     ChEquip.CalcRoleEquipAttr(curPlayer)
     PlayerHero.CalcHeroAddAttr(curPlayer)
+    PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer)
     return
 
 def doRefreshLineupAttr(curPlayer, olPlayer, lineup):
@@ -468,10 +477,11 @@
         elif skinIDList:
             skinID = skinIDList[0]
             
+        starMax = PlayerHero.GetHeroStarMax(heroItem)
         InitAddPer += qualityIpyData.GetInitAddPer()
         LVAddPer += qualityIpyData.GetLVAddPer() * max(0, heroLV - 1)
         BreakLVAddPer += qualityIpyData.GetBreakLVAddPer() * breakLV
-        StarAddPer += qualityIpyData.GetStarAddPer() * star
+        StarAddPer += qualityIpyData.GetStarAddPer() * min(star, starMax)
         
         lineupHero = lineup.GetLineupHero(posNum)
         #if False:
@@ -623,6 +633,7 @@
     lvAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_LV)
     equipAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_MainEquip)
     bookAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_HeroBook)
+    realmAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_Realm)
 
     GameWorld.DebugLog("    国家武将统计=%s" % countryHeroInfo, playerID)
     GameWorld.DebugLog("    羁绊武将统计=%s" % fetterHeroInfo, playerID)
@@ -637,6 +648,7 @@
     GameWorld.DebugLog("    主公等级属性=%s" % lvAttrDict, playerID)
     GameWorld.DebugLog("    主公装备属性=%s" % equipAttrDict, playerID)
     GameWorld.DebugLog("    主公图鉴属性=%s" % bookAttrDict, playerID)
+    GameWorld.DebugLog("    主公官职属性=%s" % realmAttrDict, playerID)
     
     PlayerLV = curPlayer.GetLV()
     OfficialLV = curPlayer.GetOfficialRank()
@@ -668,6 +680,9 @@
             bookValue = bookAttrDict.get(attrID, 0)
             bookPer = bookAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
             
+            realmValue = realmAttrDict.get(attrID, 0)
+            realmPer = realmAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
+            
             lineupInitAddPer, lineupLVAddPer, lineupBreakLVAddPer, lineupStarAddPer = 0, 0, 0, 0
             if attrID in ChConfig.BaseAttrIDList:
                 lineupInitAddPer, lineupLVAddPer, lineupBreakLVAddPer, lineupStarAddPer = InitAddPer, LVAddPer, BreakLVAddPer, StarAddPer
@@ -693,7 +708,7 @@
                 awakeTalentPer = awakeTalentAttrDict.get(attrPerID, 0) / 10000.0
                 
             # 计算
-            attrParamDict = {"lvValue":lvValue, "equipValue":equipValue, "bookValue":bookValue, "bookPer":bookPer, 
+            attrParamDict = {"lvValue":lvValue, "equipValue":equipValue, "bookValue":bookValue, "bookPer":bookPer, "realmValue":realmValue, "realmPer":realmPer, 
                              "lineupInitAddPer":lineupInitAddPer, "lineupLVAddPer":lineupLVAddPer, "lineupBreakLVAddPer":lineupBreakLVAddPer, "lineupStarAddPer":lineupStarAddPer,
                              "heroSelfValue":heroSelfValue, "heroSelfPer":heroSelfPer, "inheritPer":inheritPer,
                              "lineupHaloValue":lineupHaloValue, "lineupHaloPer":lineupHaloPer, "fetterValue":fetterValue, "fetterPer":fetterPer,
@@ -702,9 +717,9 @@
                              }
             
             if attrID in ChConfig.BaseAttrIDList:
-                attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict)
+                attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict, toInt=False, ndigits=3)
             else:
-                attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict)
+                attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict, toInt=False, ndigits=3)
             #GameWorld.DebugLog("    attrID=%s,attrValue=%s,attrParamDict=%s" % (attrID, attrValue, attrParamDict))
             
             attrIpyData = IpyGameDataPY.GetIpyGameData("PlayerAttr", attrID)
@@ -720,7 +735,7 @@
                 logAttrDict["%s-%s" % (attrID, attrName)] = attrValue
             
         # 计算战力
-        fightPower = FormulaControl.Eval("fightPowerFormula", fightPowerFormula, fightPowerParamDict)
+        fightPower = FormulaControl.Eval("fightPowerFormula", fightPowerFormula, fightPowerParamDict, toInt=True)
         
         GameWorld.DebugLog("    heroID=%s,fightPower=%s,heroSkillIDList=%s" % (heroID, fightPower, lineupHero.heroSkillIDList), playerID)
         skillTypeIDDict = {}
@@ -744,7 +759,7 @@
             skillID = skillData.GetSkillID()
             lineupHero.heroSkillIDList.append(skillID)
             paramDict = {"SkillPower":skillData.GetFightPower(), "PlayerLV":PlayerLV, "OfficialLV":OfficialLV}
-            sFightPower = FormulaControl.Eval("skillFPFormula", skillFPFormula, paramDict)
+            sFightPower = FormulaControl.Eval("skillFPFormula", skillFPFormula, paramDict, toInt=True)
             skillFightPower += sFightPower
         GameWorld.DebugLog("    skillFightPower=%s,heroSkillIDList=%s" % (skillFightPower, lineupHero.heroSkillIDList), playerID)
         

--
Gitblit v1.8.0