From 985bdf70fd0022733f75bf2106e69c6de77c26b1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 28 十一月 2025 17:29:51 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(卑弥呼所有技能;技能表增加字段Buff保留-BuffRetain,支持死亡保留、复活保留;增加触发方式42-大回合开始时(死亡后有效);增加属性ID 73复活生命加成、74复活怒气加成;优化效果6014-支持失败次数额外概率;优化死亡、复活时的buff处理;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
index 3bc1cff..251aecb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -365,6 +365,7 @@
     def GetLayerMax(self): return self._ipyData.GetLayerMax()
     def GetBuffRepeat(self): return self._ipyData.GetBuffRepeat() # Buff叠加规则
     def GetDispersedLimit(self): return self._ipyData.GetDispersedLimit() or self._ipyData.GetSkillType() == ChConfig.Def_SkillType_Halo # 驱散限制
+    def GetBuffRetain(self): return self._ipyData.GetBuffRetain()
     def GetFightPower(self): return self._ipyData.GetFightPower()
     
 class PyBuff():
@@ -392,6 +393,8 @@
     def GetSkillData(self): return self._skillData
     def GetSkillID(self): return self._skillData.GetSkillID()
     def GetCurBuffState(self): return self._skillData.GetCurBuffState()
+    def GetDispersedLimit(self): return self._skillData.GetDispersedLimit()
+    def GetBuffRetain(self): return self._skillData.GetBuffRetain()
     def GetAddTiming(self): return self._addTiming
     def SetAddTiming(self, addTiming):
         self._addTiming = addTiming
@@ -661,6 +664,7 @@
     def GetLayerMax(self): return self._skillData.GetLayerMax()
     def GetBuffRepeat(self): return self._skillData.GetBuffRepeat() # Buff叠加规则
     def GetDispersedLimit(self): return self._skillData.GetDispersedLimit() # 驱散限制
+    def GetBuffRetain(self): return self._ipyData.GetBuffRetain()
     def GetFightPower(self): return self._skillData.GetFightPower()
     
     ## ---------------------------------- 非技能表内容 ----------------------------------
@@ -844,6 +848,7 @@
         self._kvDict = {} # 自定义kv字典
         self._bigTurnAtkbackCnt = 0 # 大回合累计反击次数
         self._incrementValue = 0 # 自增值,每场战斗重置,用于确保唯一的场景,如 Skill tag 标签
+        self._skillHappenFailCntDict = {} # 技能累计概率触发次数,使用成功后重置 {skillID:failCnt, ...}
         self._skillUseCntDict = {} # 技能累计使用次数 {skillID:useCnt, ...}
         self._skillTurnUseCntDict = {} # 技能单回合累计使用次数 {skillID:useCnt, ...}
         self._skillMgr = ObjPool.GetPoolMgr().acquire(SkillManager, self)
@@ -909,6 +914,7 @@
         return
     
     def ResetBattleEffect(self):
+        ## 重置战斗属性,一般刷属性前调用
         self._batAttrDict = {}
         self._batAttrDict.update(self._initAttrDict)
         self.__onUpdBatAttr()
@@ -1077,9 +1083,19 @@
         self._skillTempAttrDict[attrID] = self._skillTempAttrDict.get(attrID, 0) + value
     def ClearSkillTempAttr(self): self._skillTempAttrDict = {}
     
+    def GetSkillHappenFailCnt(self, skillID): return self._skillHappenFailCntDict.get(skillID, 0) # 技能概率触发失败累计次数
+    def IsSkillCanHappen(self, skillID, happenRate):
+        if happenRate and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
+            self._skillHappenFailCntDict[skillID] = self._skillHappenFailCntDict.get(skillID, 0) + 1
+            return False
+        self._skillHappenFailCntDict.pop(skillID, 0)
+        return True
+    
     def GetSkillUseCnt(self, skillID): return self._skillUseCntDict.get(skillID, 0) # 单场战斗累计使用次数
     def GetSkillTurnUseCnt(self, skillID): return self._skillTurnUseCntDict.get(skillID, 0) # 单回合累计使用次数
     def ResetSkillUseCnt(self):
+        ## 每场战斗开始时重置
+        self._skillHappenFailCntDict = {}
         self._skillUseCntDict = {}
         self._skillTurnUseCntDict = {}
         self._incrementValue = 0

--
Gitblit v1.8.0