129 【战斗】战斗系统-服务端(词条技能1020;增加效果5050 - 触发释放技能(按累计能量达到时释放))
| | |
| | | self._bySkill = None # 由哪个技能触发的
|
| | | self._byBuff = None # 由哪个buff触发的
|
| | | self._afterLogicList = [] # 技能释放后需要处理逻辑 [[logicType, logicParams], ...]
|
| | | self._energy = 0 # 技能能量,一般用于累计能量达到某种条件后做逻辑
|
| | |
|
| | | # 连击相关
|
| | | self._comboState = 0 # 连击状态 0-未重置,1-初始化连击相关可连击,2-连击已中断
|
| | |
| | | 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():
|
| | | ## 战斗对象技能管理器
|
| | |
|
| | |
| | | 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):
|
| New file |
| | |
| | | #!/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)
|