129 【战斗】战斗系统-服务端(周瑜技能,除了最后一个觉醒;增加效果5028 5509;)
| | |
| | | effSkillTypeID = effSkill.GetSkillTypeID()
|
| | | changeLayers += TurnPassive.GetTriggerEffectValue(turnFight, batObj, tagObj, ChConfig.PassiveEff_AddChangeLayers5008, connSkillTypeID=effSkillTypeID, **kwargs)
|
| | |
|
| | | changeToLayer = 0
|
| | | remainLayers = changeLayers # 剩余可转层数
|
| | | changeToLayer = 0 # 最终转层数
|
| | | for tagBuff in tagBuffList:
|
| | | if changeLayers <= 0:
|
| | | if remainLayers <= 0:
|
| | | break
|
| | | skillID = tagBuff.GetSkillID()
|
| | | curLayer = max(1, tagBuff.GetLayer()) # 至少算1层
|
| | | if curLayer > changeLayers:
|
| | | updLayer = curLayer - changeLayers
|
| | | changeLayers = 0
|
| | | changeToLayer += changeLayers
|
| | | if curLayer > remainLayers:
|
| | | updLayer = curLayer - remainLayers
|
| | | changeToLayer += remainLayers
|
| | | remainLayers = 0
|
| | | else:
|
| | | updLayer = 0
|
| | | changeLayers -= curLayer
|
| | | changeToLayer += curLayer
|
| | | remainLayers -= curLayer
|
| | | GameWorld.DebugLog("转化buff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s"
|
| | | % (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
|
| | | TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5028
|
| | | #
|
| | | # @todo:转化目标身上某种状态buff(删除旧的转换成其他buff)
|
| | | # @author hxp
|
| | | # @date 2025-12-22
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 转化目标身上某种状态buff(删除旧的转换成其他buff)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-12-22 16:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnBuff
|
| | | import GameWorld
|
| | | import TurnPassive
|
| | | import ChConfig
|
| | | import random
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | buffState = curEffect.GetEffectValue(0) # buff״̬
|
| | | changeLayers = max(1, curEffect.GetEffectValue(1)) # 转化层数
|
| | | rate = curEffect.GetEffectValue(2) # 转化概率
|
| | | changeToSkillID = curEffect.GetEffectValue(3) # 转化为其他buff技能ID
|
| | | |
| | | if not GameWorld.CanHappen(rate):
|
| | | GameWorld.DebugLogEx("5028概率不转化! rate=%s", rate)
|
| | | return
|
| | | |
| | | tagBuffList = []
|
| | | buffMgr = tagObj.GetBuffManager()
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | skillData = buff.GetSkillData()
|
| | | if skillData.GetDispersedLimit():
|
| | | continue
|
| | | tagBuffList.append(buff)
|
| | | |
| | | if not tagBuffList:
|
| | | GameWorld.DebugLog("目标没有可转化的buff: tagID=%s,buffState=%s" % (tagObj.GetID(), buffState))
|
| | | return
|
| | | |
| | | random.shuffle(tagBuffList) # 随机
|
| | | if changeLayers < len(tagBuffList):
|
| | | # 不足时才额外取其他被动增加的
|
| | | effSkillTypeID = effSkill.GetSkillTypeID()
|
| | | changeLayers += TurnPassive.GetTriggerEffectValue(turnFight, batObj, tagObj, ChConfig.PassiveEff_AddChangeLayers5008, connSkillTypeID=effSkillTypeID, **kwargs)
|
| | | |
| | | remainLayers = changeLayers # 剩余可转层数
|
| | | changeToLayer = 0 # 最终转层数
|
| | | for tagBuff in tagBuffList:
|
| | | if remainLayers <= 0:
|
| | | break
|
| | | skillID = tagBuff.GetSkillID()
|
| | | curLayer = max(1, tagBuff.GetLayer()) # 至少算1层
|
| | | if curLayer > remainLayers:
|
| | | updLayer = curLayer - remainLayers
|
| | | changeToLayer += remainLayers
|
| | | remainLayers = 0
|
| | | else:
|
| | | updLayer = 0
|
| | | changeToLayer += curLayer
|
| | | remainLayers -= curLayer
|
| | | GameWorld.DebugLog("转化buff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s" |
| | | % (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
|
| | | TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
|
| | | |
| | | if changeToLayer <= 0:
|
| | | return
|
| | | |
| | | if not changeToSkillID:
|
| | | changeToSkillID = effSkill.GetSkillID()
|
| | | |
| | | buffOwner = batObj
|
| | | TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer)
|
| | | return True
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5509
|
| | | #
|
| | | # @todo:触发释放技能(验证是否为指定友军来源)
|
| | | # @author hxp
|
| | | # @date 2025-12-22
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 触发释放技能(验证是否为指定友军来源)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-12-22 16:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnSkill
|
| | | import GameWorld
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | if "byFriendObj" not in kwargs:
|
| | | return
|
| | | byFriendObj = kwargs.pop("byFriendObj") # 直接取出,防止传递
|
| | | |
| | | passiveSkillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
|
| | | byHeorID = curEffect.GetEffectValue(1) # 仅友军武将ID时有效(验证用,不一定是技能目标)
|
| | | |
| | | friendHeroID = byFriendObj.GetHeroID()
|
| | | if friendHeroID != byHeorID:
|
| | | GameWorld.DebugLogEx("5509非友军触发来源不处理! friendHeroID=%s != %s", friendHeroID, byHeorID)
|
| | | return
|
| | | |
| | | if not passiveSkillID:
|
| | | passiveSkillID = effSkill.GetSkillID()
|
| | | if not passiveSkillID:
|
| | | return
|
| | | |
| | | effectID = curEffect.GetEffectID()
|
| | | effSkillID = effSkill.GetSkillID()
|
| | | return TurnSkill.OnUsePassiveSkill(turnFight, batObj, byFriendObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, **kwargs)
|
| | |
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyDie, dieObj, connSkill=useSkill)
|
| | | # 己方单位死亡时
|
| | | else:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill, byFriendObj=dieObj)
|
| | |
|
| | | # 复活时
|
| | | for tagObj in reviveObjList:
|