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/Attack/BattleObj.py | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 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..1a3d1bb 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()
## ---------------------------------- 非技能表内容 ----------------------------------
@@ -831,6 +835,7 @@
self.sex = 0
self.job = 0
self.lv = 1
+ self._star = 0
self.fightPower = 0
self.faction = 0 # 所属阵营,一般只有双方阵营, 1 或 2,发起方默认1
self.lineupNum = 1 # 阵容位置编号,一般多V多时有用,通常默认1
@@ -844,6 +849,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 +915,7 @@
return
def ResetBattleEffect(self):
+ ## 重置战斗属性,一般刷属性前调用
self._batAttrDict = {}
self._batAttrDict.update(self._initAttrDict)
self.__onUpdBatAttr()
@@ -957,6 +964,8 @@
def SetFightPower(self, fightPower): self.fightPower = fightPower
def GetLV(self): return self.lv
def SetLV(self, lv): self.lv = lv
+ def GetStar(self): return self._star
+ def SetStar(self, star): self._star = star
def GetDictByKey(self, key): return self._kvDict.get(key, 0)
def SetDict(self, key, value): self._kvDict[key] = value
@@ -1077,9 +1086,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
@@ -1208,7 +1227,7 @@
return batObjMgr
def OnMinute():
- GameWorld.Log("战斗单位数量: %s" % len(GetBatObjMgr().batObjDict))
+ #GameWorld.Log("战斗单位数量: %s" % len(GetBatObjMgr().batObjDict))
return
def NotifyObjInfoRefresh(batObj, attrID, value):
--
Gitblit v1.8.0