129 【战斗】战斗系统-服务端(词条技能1020;增加效果5050 - 触发释放技能(按累计能量达到时释放))
2个文件已修改
1个文件已添加
50 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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():
    ## 战斗对象技能管理器
    
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):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5050.py
New file
@@ -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)