From 2bcc092eaf3d04df4934b6493847086929f988a0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 17 十一月 2025 15:21:42 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(增加每大回合每武将最大反击次数限制;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py | 11 +++++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 4 +---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 12 ++++++++++--
3 files changed, 20 insertions(+), 7 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 32ab297..ae5284a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -832,6 +832,7 @@
self._batAttrDict = {} # 实际战斗属性,包含buff层级的实际属性 {attrID:+-value, ...} value可能是负值
self._skillTempAttrDict = {} # 某次技能释放中临时的属性增减 {attrID:+-value, ...} value可能是负值
self._kvDict = {} # 自定义kv字典
+ self._bigTurnAtkbackCnt = 0 # 大回合累计反击次数
self._skillUseCntDict = {} # 技能累计使用次数 {skillID:useCnt, ...}
self._skillTurnUseCntDict = {} # 技能单回合累计使用次数 {skillID:useCnt, ...}
self._skillMgr = ObjPool.GetPoolMgr().acquire(SkillManager, self)
@@ -1063,8 +1064,6 @@
def GetSkillUseCnt(self, skillID): return self._skillUseCntDict.get(skillID, 0) # 单场战斗累计使用次数
def GetSkillTurnUseCnt(self, skillID): return self._skillTurnUseCntDict.get(skillID, 0) # 单回合累计使用次数
- def ResetSkillTurnUseCnt(self):
- self._skillTurnUseCntDict = {}
def ResetSkillUseCnt(self):
self._skillUseCntDict = {}
self._skillTurnUseCntDict = {}
@@ -1072,6 +1071,14 @@
self._skillUseCntDict[skillID] = self._skillUseCntDict.get(skillID, 0) + 1
self._skillTurnUseCntDict[skillID] = self._skillTurnUseCntDict.get(skillID, 0) + 1
+ def GetBigTurnAtkbackCnt(self): return self._bigTurnAtkbackCnt
+ def AddBigTurnAtkbackCnt(self): self._bigTurnAtkbackCnt += 1
+
+ def ResetBigTurn(self):
+ ## 每大回合重置
+ self._bigTurnAtkbackCnt = 0
+ self._skillTurnUseCntDict = {}
+
def GetLastHurtValue(self): return self._lastHurtValue
def SetLastHurtValue(self, lastHurtValue): self._lastHurtValue = lastHurtValue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 3e741e5..1108741 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -1574,7 +1574,7 @@
if turnNum > 1: # 第1回合不用刷新技能
RefreshObjSkillByBigTurn(batObj)
RefreshObjByBigTurn(turnFight, batObj)
-
+ batObj.ResetBigTurn() # 每大回合重置
TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BigTurnStart)
return
@@ -1669,8 +1669,6 @@
remainTime -= 1
curSkill.SetRemainTime(remainTime)
GameWorld.DebugLog(" 更新技能CD: curID=%s,skillID=%s,remainTime=%s" % (curID, skillID, remainTime))
-
- batObj.ResetSkillTurnUseCnt() # 重置回合使用次数,放刷新CD后重置
return
def RefreshObjByBigTurn(turnFight, batObj):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
index e45adbd..70c820a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -998,6 +998,8 @@
if curBatObj.GetHP() < 0:
curBatObj.SetHP(0)
+ if useSkill.GetBatType() == ChConfig.TurnBattleType_AtkBack:
+ curBatObj.AddBigTurnAtkbackCnt()
skillID = useSkill.GetSkillID()
curBatObj.AddSkillUseCnt(skillID)
if useSkill.GetCoolDownTime():
@@ -1099,8 +1101,6 @@
#GameWorld.DebugLog("同阵营不触发反击!") # 魅惑可能导致打自己人
return
- # 大回合单武将反击次数限制
-
canAtkbackDictTypeList = IpyGameDataPY.GetFuncEvalCfg("ParryCfg", 2)
if atkObj.GetAtkDistType() not in canAtkbackDictTypeList:
heroID = atkObj.GetHeroID()
@@ -1119,6 +1119,14 @@
GameWorld.DebugLog("没有格挡不可反击! tagID=%s" % tagID)
return
+ # 大回合单武将反击次数限制
+ bigTurnAtkbackCntMax = IpyGameDataPY.GetFuncCfg("ParryCfg", 4)
+ if bigTurnAtkbackCntMax:
+ atkbackCnt = tagObj.GetBigTurnAtkbackCnt()
+ if atkbackCnt >= bigTurnAtkbackCntMax:
+ GameWorld.DebugLog("本大回合累计反击次数达上限! atkbackCnt=%s >= %s" % (atkbackCnt, bigTurnAtkbackCntMax))
+ return
+
skillManager = tagObj.GetSkillManager()
for index in range(0, skillManager.GetSkillCount()):
useSkill = skillManager.GetSkillByIndex(index)
--
Gitblit v1.8.0