From 5f9bb5660f4a62ed7a30767a23d565fd9c152e2a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 十二月 2025 20:38:01 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(关羽全部技能; 优化技能冷却时间字段对触发被动效果的技能也有效;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5012.py | 2 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py | 6 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 17 ++++++++++++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 12 ++++++++++--
4 files changed, 31 insertions(+), 6 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 a65e3e0..ae30896 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -348,6 +348,7 @@
self._ipyData = ipyData
self._skillID = self._ipyData.GetSkillID()
self._skillTypeID = self._ipyData.GetSkillTypeID()
+ self._cdTime = self._ipyData.GetCoolDownTime()
self._effList = [] # [Effect, ...]
self._effDict = {} # {(effID, triggerWay):Effect, ...} ,确保唯一,同个技能可能配置相同的效果ID
for num in range(1, 1 + 3):
@@ -393,7 +394,7 @@
return self._effDict[(effID, triggerWay)]
def GetConnSkill(self): return self._ipyData.GetConnSkill()
def GetCoolDownInit(self): return self._ipyData.GetCoolDownInit()
- def GetCoolDownTime(self): return self._ipyData.GetCoolDownTime()
+ def GetCoolDownTime(self): return self._cdTime
def GetBuffStateLimit(self): return self._ipyData.GetBuffStateLimit()
def GetCurBuffState(self): return self._ipyData.GetCurBuffState()
def GetLastTime(self): return self._ipyData.GetLastTime() # 持续时间
@@ -645,6 +646,7 @@
self._skillData = SklllData(ipyData)
self._skillID = self._skillData.GetSkillID()
self._skillTypeID = self._skillData.GetSkillTypeID()
+ self._cdTime = self._skillData.GetCoolDownTime()
self._remainTime = 0
self._batType = 0 # 战斗类型,普通、连击、反击、追击等
self._tagObjList = [] # 本次技能主要目标列表 [BatObj, ...]
@@ -712,7 +714,7 @@
def GetEffectByID(self, effID, triggerWay=0): return self._skillData.GetEffectByID(effID, triggerWay)
def GetConnSkill(self): return self._skillData.GetConnSkill()
def GetCoolDownInit(self): return self._skillData.GetCoolDownInit()
- def GetCoolDownTime(self): return self._skillData.GetCoolDownTime()
+ def GetCoolDownTime(self): return self._cdTime
def GetBuffStateLimit(self): return self._skillData.GetBuffStateLimit()
def GetCurBuffState(self): return self._skillData.GetCurBuffState()
def GetLastTime(self): return self._skillData.GetLastTime() # 持续时间
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5012.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5012.py
index 7e30a7d..ebb2e75 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5012.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5012.py
@@ -32,7 +32,7 @@
passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
if not passiveSkill:
return
- return TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Pursue, bySkill=connSkill, byBuff=connBuff)
+ return TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Pursue, bySkill=connSkill, byBuff=connBuff, **kwargs)
def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
effSkill = effBuff.GetSkillData().GetIpyData()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
index dacd25b..3dd3612 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -82,6 +82,12 @@
if not effSkill:
return
+ if effSkill.GetCoolDownTime():
+ if hasattr(effSkill, "GetRemainTime") and effSkill.GetRemainTime() > 0:
+ GameWorld.DebugLogEx("被动效果技能CD中! effSkillID=%s,RemainTime=%s", skillID, effSkill.GetRemainTime())
+ return
+ kwargs["byEffSkill"] = effSkill # 目前用于触发被动技能时,该效果技能提前先设置CD,防止嵌套触发时CD后置才设置,如关羽的怒技追击
+
kwargs["byTriggerWay"] = triggerWay
for effID in effIDList:
curEffect = effSkill.GetEffectByID(effID, triggerWay)
@@ -99,7 +105,16 @@
callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic"))
if not callFunc:
return
- callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
+ isOK = callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
+ if not isOK:
+ return
+
+ cdTime = effSkill.GetCoolDownTime()
+ if cdTime:
+ # 非触发技能的在后面设置CD即可
+ if hasattr(effSkill, "GetRemainTime"):
+ effSkill.SetRemainTime(cdTime)
+
return
def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None, connBuff=None, **kwargs):
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 669af57..e031d89 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -179,7 +179,7 @@
else:
__doUseSkill(turnFight, curBatObj, useSkill)
- DoAttackResult(turnFight, curBatObj, useSkill)
+ DoAttackResult(turnFight, curBatObj, useSkill, **kwargs)
if useTag:
Sync_TurnFightTag(turnFight, useTag, 1)
@@ -1123,7 +1123,7 @@
return
-def DoAttackResult(turnFight, curBatObj, useSkill):
+def DoAttackResult(turnFight, curBatObj, useSkill, **kwargs):
'''执行攻击结果
@param curBatObj: 施法方或buff归属方
'''
@@ -1140,6 +1140,14 @@
if useSkill.GetCoolDownTime():
useSkill.SetRemainTime(useSkill.GetCoolDownTime())
+ if "byEffSkill" in kwargs:
+ byEffSkill = kwargs["byEffSkill"]
+ cdTime = byEffSkill.GetCoolDownTime()
+ if cdTime:
+ if hasattr(byEffSkill, "GetRemainTime"):
+ byEffSkill.SetRemainTime(cdTime)
+ GameWorld.DebugLogEx("提前设置效果技能触发后CD,防止嵌套循环触发! effSkillID=%s,cdTime=%s", byEffSkill.GetSkillID(), cdTime)
+
__doCostZhanchui(turnFight, curBatObj, useSkill) # 先扣除再同步技能
# 需先技能使用 - 前端按顺序优先表现技能释放内容,前端需要动作或有伤血则通知
--
Gitblit v1.8.0