From 7d3e60ddbd25e5dbc58450b8f5595bb431303330 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 31 十月 2025 19:12:25 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(词条技能1020;增加效果5050 - 触发释放技能(按累计能量达到时释放))

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py                     |    4 ++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py                    |    2 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py |   44 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 50 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 095a14d..2e25105 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -559,6 +559,7 @@
         self._bySkill = None # 由哪个技能触发的
         self._byBuff = None # 由哪个buff触发的
         self._afterLogicList = [] # 技能释放后需要处理逻辑 [[logicType, logicParams], ...]
+        self._energy = 0 # 技能能量,一般用于累计能量达到某种条件后做逻辑
         
         # 连击相关
         self._comboState = 0 # 连击状态 0-未重置,1-初始化连击相关可连击,2-连击已中断
@@ -692,6 +693,9 @@
     def GetTagParryNum(self, tagID): return self._parryTagIDDict.get(tagID, 0)
     def SetTagParryNum(self, tagID, parryNum): self._parryTagIDDict[tagID] = parryNum
     
+    def GetEnergy(self): return self._energy # 累计能量
+    def SetEnergy(self, energy): self._energy = energy
+    
 class SkillManager():
     ## 战斗对象技能管理器
     
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 1a0144f..afde48b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -1498,6 +1498,8 @@
             GameWorld.DebugLog("技能初始CD: curID=%s,skillID=%s,initCD=%s" % (curID, skillID, initCD))
         elif curSkill.GetRemainTime():
             curSkill.SetRemainTime(0)
+        curSkill.SetEnergy(0)
+        
     return
 
 def RefreshObjSkillByTurn(batObj):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py
new file mode 100644
index 0000000..2f83ed0
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_5050
+#
+# @todo:触发释放技能(按累计能量达到时释放)
+# @author hxp
+# @date 2025-10-31
+# @version 1.0
+#
+# 详细描述: 触发释放技能(按累计能量达到时释放)
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-10-31 19:20"""
+#-------------------------------------------------------------------------------
+
+import TurnSkill
+import IpyGameDataPY
+import GameWorld
+
+def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
+    if not effSkill:
+        # 必须要有累计能量的技能
+        return
+    skillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
+    needEnergy = curEffect.GetEffectValue(1) # 累计达到多少后释放
+    energy = effSkill.GetEnergy()
+    energy += 1
+    effSkill.SetEnergy(energy)
+    GameWorld.DebugLog("累计技能能量: effSkillID=%s,energy=%s,needEnergy=%s" % (effSkill.GetSkillID(), energy, needEnergy))
+    if energy < needEnergy:
+        return
+    effSkill.SetEnergy(0)
+    
+    if not skillID:
+        passiveSkill = effSkill
+    else:
+        passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
+    if not passiveSkill:
+        return
+    effectID = curEffect.GetEffectID()
+    effSkillID = effSkill.GetSkillID()
+    return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill, effSkillID, effectID, connBuff)

--
Gitblit v1.8.0