129 【战斗】战斗系统-服务端(马超所有技能;增加触发方式20 21 22;增加效果5006 6010 6011 6012 6013;修复非学习的子技能加载触发效果bug;)
| | |
| | | effectID = effect.GetEffectID()
|
| | | if effectID == 0:
|
| | | continue
|
| | | triggerWay = effect.GetTriggerWay()
|
| | | triggerSrc = effect.GetTriggerSrc()
|
| | | if not triggerWay:
|
| | | tWay = effect.GetTriggerWay()
|
| | | tSrc = effect.GetTriggerSrc()
|
| | | if not tWay:
|
| | | continue
|
| | | if triggerWay in ChConfig.TriggerWayNoLoadList:
|
| | | if tWay in ChConfig.TriggerWayNoLoadList:
|
| | | continue
|
| | | if triggerSrc != ChConfig.TriggerSrc_SkillSelf:
|
| | | if tSrc != ChConfig.TriggerSrc_SkillSelf:
|
| | | # 仅添加本技能的
|
| | | continue
|
| | | if tWay == ChConfig.TriggerWay_CalcEffValue:
|
| | | tWay = "%s_%s" % (tWay, effectID)
|
| | | if tWay != triggerWay:
|
| | | continue
|
| | | effIDList.append(effectID)
|
| | | if effIDList:
|
| | |
| | | return
|
| | | buffID = buffIDList[0]
|
| | | return self._buffIDDict.get(buffID, None)
|
| | | def FindBuffListByState(self, state):
|
| | | ## 查找某种buff状态的buff列表
|
| | | buffIDList = self._buffStateDict.get(state, [])
|
| | | buffs = []
|
| | | for buffID in buffIDList:
|
| | | if buffID not in self._buffIDDict:
|
| | | continue
|
| | | buffs.append(self._buffIDDict[buffID])
|
| | | return buffs
|
| | |
|
| | | def AddBuffState(self, state, buffID):
|
| | | ## 添加buff影响的状态,ChConfig.BatObjStateList
|
| | |
| | | self._remainTime = 0
|
| | | self._batType = 0 # 战斗类型,普通、连击、反击、追击等
|
| | | self._tagObjList = [] # 本次技能目标列表 [BatObj, ...]
|
| | | self._killObjList = [] # 本次技能击杀目标列表 [BatObj, ...]
|
| | | self._hurtList = [] # 本次伤血列表,可能同一个对象有多个伤害,如弹射等 [HurtObj, ...]
|
| | | self._bySkill = None # 由哪个技能触发的
|
| | | self._byBuff = None # 由哪个buff触发的
|
| | |
| | | def ResetUseRec(self):
|
| | | self._batType = 0
|
| | | self._tagObjList = []
|
| | | self._killObjList = []
|
| | | self._bySkill = None
|
| | | self._byBuff = None
|
| | | self._afterLogicList = []
|
| | |
| | | def SetByBuff(self, byBuff): self._byBuff = byBuff
|
| | | def GetTagObjList(self): return self._tagObjList # 技能目标列表
|
| | | def SetTagObjList(self, tagObjList): self._tagObjList = tagObjList
|
| | | def GetKillObjList(self): return self._killObjList # 击杀目标列表
|
| | | def SetKillObjList(self, killObjList): self._killObjList = killObjList
|
| | | def GetAfterLogicList(self): return self._afterLogicList
|
| | | def AddAfterLogic(self, logicType, logicData):
|
| | | '''添加技能释放后需要处理额外逻辑
|
| | |
| | | TriggerWay_BuffDel, # buff消失后 17
|
| | | TriggerWay_BeCombo, # 被连击时 18
|
| | | TriggerWay_BePursue, # 被追击时 19
|
| | | ) = range(1, 1 + 19)
|
| | | TriggerWay_UseSkillOverOne, # 使用技能后(多目标仅触发一次)20
|
| | | TriggerWay_AttackOverDirectOne, # 直接攻击后(除dot或buff外的攻击,多目标仅触发一次)21
|
| | | TriggerWay_BeAnyEffect, # 受到任意效果时(除直接攻击外的任意效果,如buff、dot、治疗、额外怒技)22
|
| | | ) = range(1, 1 + 22)
|
| | |
|
| | | # 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
|
| | | TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
|
| | |
| | |
|
| | | # 被动效果ID,属性类的直接使用属性ID当做效果ID
|
| | | PassiveEff_AddBuffLayerByWeight = 6001 # 根据权重随机添加buff层数 数值1-[[权重,层级], ...]
|
| | | PassiveEff_ChangeHurtType = 6002 # 变更伤害类型: 值1-伤害类型;值2-可附加验证处于xx状态 [状态1, 状态2, ...]
|
| | | PassiveEff_ChangeHurtMulti = 6003 # 变更伤害倍值(可增可减): 值1-变更倍值;值2-可附加验证处于xx状态 [状态1, 状态2, ...]
|
| | | PassiveEff_AddSkillPer = 6004 # 增加本次技能万分比: 值1-增加的万分比;值2-可附加验证处于xx状态 [状态1, 状态2, ...]
|
| | | PassiveEff_AddSkillPerByJob = 6006 # 增加本次技能万分比: 值1-增加的万分比;值2-验证目标职业
|
| | | PassiveEff_AddSkillTagCnt = 6007 # 增加技能目标数:值1-增加目标个数
|
| | | PassiveEff_ImmuneControlBuff = 6008 # 生命值低于x%时免疫控制效果:值1-百分比
|
| | | PassiveEff_MustSuperHit = 6009 # 生命值低于x%时必定暴击:值1-百分比
|
| | | PassiveEff_ChangeHurtType = 6002 # 变更本次伤害类型
|
| | | PassiveEff_ChangeHurtMulti = 6003 # 变更伤害倍值(可增可减)
|
| | | PassiveEff_AddSkillPer = 6004 # 增加本次技能万分比(验证目标状态)
|
| | | PassiveEff_AddSkillPerByJob = 6006 # 增加本次技能万分比(验证目标职业)
|
| | | # 6005 增加本次技能万分比(按buff状态层数算)
|
| | | PassiveEff_AddSkillTagCnt = 6007 # 增加技能目标数
|
| | | PassiveEff_ImmuneControlBuff = 6008 # 生命值低于x%时免疫控制效果
|
| | | PassiveEff_MustSuperHit = 6009 # 生命值低于x%时必定暴击
|
| | | PassiveEff_AddSkillPerByHP = 6010 # 增加本次技能万分比(验证当前生命)
|
| | | PassiveEff_AddSkillPerByBuffLayer = 6011 # 增加本次技能万分比(根据buff层级)
|
| | | PassiveEff_AddBuffLayerMax = 6012 # 添加buff层级上限: 数值1-增加层级上限
|
| | | PassiveEff_AddFinalDamPer = 6013 # 增加最终增伤(根据属性转化)
|
| | |
|
| | | # 被动效果ID有触发值时就返回的
|
| | | PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit]
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5006
|
| | | #
|
| | | # @todo:移除目标身上某种状态buff
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 移除目标身上某种状态buff
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import TurnBuff
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | buffState = curEffect.GetEffectValue(0) # buff״̬
|
| | | if not buffState:
|
| | | return
|
| | | killObjNotEff = curEffect.GetEffectValue(2) # 有击杀时该效果不生效,默认0-均生效;1-有击杀不生效
|
| | | if killObjNotEff:
|
| | | # 判断是否击杀有个小问题,如果关联技能没有击杀目标,但是额外触发的伤害击杀了目标,这个是否算击杀
|
| | | # 如马超的怒技,这个可以到时看表现再看是否优化,待优化方案:同步效果技能的目标判断目标是否有死亡来判断是否有击杀
|
| | | if connSkill and connSkill.GetKillObjList():
|
| | | GameWorld.DebugLog("本次有击杀不触发该效果: effID=%s" % (curEffect.GetEffectID()))
|
| | | return
|
| | | |
| | | tagChoose = curEffect.GetEffectValue(1) # 目标:0-继承技能目标;1-自己
|
| | | delObj = batObj if tagChoose == 1 else tagObj
|
| | | |
| | | buffMgr = delObj.GetBuffManager()
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | GameWorld.DebugLog(" 移除buff状态: tagID=%s,buffID=%s" % (delObj.GetID(), buff.GetBuffID()))
|
| | | TurnBuff.DoBuffDel(turnFight, delObj, buff)
|
| | | |
| | | return True
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6010
|
| | | #
|
| | | # @todo:增加本次技能万分比(验证当前生命)
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 增加本次技能万分比(验证当前生命)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
|
| | | checkHPPer = curEffect.GetEffectValue(1)
|
| | | checkType = curEffect.GetEffectValue(2)
|
| | | nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) * 100
|
| | | # 小于等于
|
| | | if checkType == 0:
|
| | | if nowPer > checkHPPer:
|
| | | return
|
| | | # 大于等于
|
| | | else:
|
| | | if nowPer < checkHPPer:
|
| | | return
|
| | | return curEffect.GetEffectValue(0)
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6011
|
| | | #
|
| | | # @todo:增加本次技能万分比(根据buff层级)
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 增加本次技能万分比(根据buff层级)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
|
| | | layerPer = curEffect.GetEffectValue(0) # 每层增加的万分比
|
| | | buffState = curEffect.GetEffectValue(1) # buff״̬
|
| | | if not buffState:
|
| | | return
|
| | | |
| | | layerTotal = 0
|
| | | buffMgr = attacker.GetBuffManager()
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | layerTotal += buff.GetLayer()
|
| | | |
| | | return layerTotal * layerPer
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6012
|
| | | #
|
| | | # @todo:添加buff层级上限
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 添加buff层级上限
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
|
| | | return curEffect.GetEffectValue(0) |
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6013
|
| | | #
|
| | | # @todo:增加最终增伤(根据属性转化)
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 增加最终增伤(根据属性转化)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
|
| | | perAttr = curEffect.GetEffectValue(0) # 每万分比
|
| | | attrID = curEffect.GetEffectValue(1) # 属性ID
|
| | | toPer = curEffect.GetEffectValue(2) # 转化为x万分比最终增伤
|
| | | attrValue = attacker.GetBatAttrValue(attrID)
|
| | | changeValue = attrValue / perAttr * toPer
|
| | | return changeValue
|
| | |
| | | return False
|
| | |
|
| | | buffValueList = GetAddBuffValue(turnFight, buffOwner, batObj, buffSkill)
|
| | | GameWorld.DebugLog("OnAddBuff: curID=%s,skillID=%s,atkType=%s,buffValueList=%s,ownerID=%s,relatedSkillID=%s" |
| | | % (curID, skillID, buffSkill.GetAtkType(), buffValueList, ownerID, relatedSkillID))
|
| | |
|
| | | skillTypeID = buffSkill.GetSkillTypeID()
|
| | | buffRepeat = buffSkill.GetBuffRepeat()
|
| | | addLayerCnt = buffSkill.GetLayerCnt()
|
| | | addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
|
| | | if addLayerEff:
|
| | | # 可指定来源技能技能才生效,不指定的话默认生效
|
| | | if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
|
| | | addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
|
| | | maxLayerCnt = buffSkill.GetLayerMax()
|
| | | if maxLayerCnt:
|
| | | maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
|
| | |
|
| | | GameWorld.DebugLog("OnAddBuff: curID=%s,skillID=%s,atkType=%s,buffValueList=%s,addLayerCnt=%s/%s,ownerID=%s,relatedSkillID=%s" |
| | | % (curID, skillID, buffSkill.GetAtkType(), buffValueList, addLayerCnt, maxLayerCnt, ownerID, relatedSkillID))
|
| | | #buff重复获得时的叠加规则
|
| | | #以下规则默认针对的是相同施法者,即相同来源的处理
|
| | | #如果有针对不同施法者的规则会说明
|
| | |
| | | buffMgr = batObj.GetBuffManager()
|
| | |
|
| | | if buffRepeat == 4: # 4 独立:回合、效果独立计算
|
| | | maxLayerCnt = buffSkill.GetLayerMax()
|
| | | # 如果有限制最大层数,达到上限时如果有新的层数进来,就替换掉持续时间最短的,只算相同来源
|
| | | if maxLayerCnt:
|
| | | buffList = buffMgr.FindBuffListBySkillTypeID(skillTypeID)
|
| | |
| | |
|
| | | updLayerCnt = addLayerCnt
|
| | | if buffRepeat == 3: # 叠加层级
|
| | | maxLayerCnt = buffSkill.GetLayerMax()
|
| | | updLayerCnt = nowLayerCnt + addLayerCnt
|
| | | if maxLayerCnt and updLayerCnt > maxLayerCnt:
|
| | | updLayerCnt = maxLayerCnt
|
| | | GameWorld.DebugLog(" 叠加层级: nowLayerCnt=%s,addLayerCnt=%s,updLayerCnt=%s" % (nowLayerCnt, addLayerCnt, updLayerCnt))
|
| | | GameWorld.DebugLog(" 叠加层级: nowLayerCnt=%s,addLayerCnt=%s,updLayerCnt=%s,maxLayerCnt=%s" % (nowLayerCnt, addLayerCnt, updLayerCnt, maxLayerCnt))
|
| | | else:
|
| | | GameWorld.DebugLog(" 默认覆盖")
|
| | |
|
| | |
| | | buffMgr = atkObj.GetBuffManager()
|
| | | # [["skill/buff", skillID/buffID, effIDList], ...]
|
| | | tagID = defObj.GetID() if defObj else 0
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList))
|
| | | for effInfo in effInfoList:
|
| | | sign = effInfo[0]
|
| | | if sign == "skill":
|
| | |
| | |
|
| | | if effID in ChConfig.PassiveEffHappenValueList:
|
| | | if value:
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList, value))
|
| | | return value
|
| | | elif effID in ChConfig.PassiveEffValueMaxList:
|
| | | curValue = max(curValue, value) # 取最大值
|
| | |
| | | # if curSkill.GetCoolDownTime():
|
| | | # SkillCommon.SetSkillRemainTime(curSkill, 0, tick, attacker)
|
| | |
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList, curValue))
|
| | | return curValue
|
| | |
|
| | |
| | | @param isUseSkill: 是否是直接使用技能的攻击结果,否则视为持续性的
|
| | | '''
|
| | |
|
| | | curID = curObj.GetID()
|
| | | #curID = curObj.GetID()
|
| | | isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
|
| | | isAngerSkill = SkillCommon.isAngerSkill(useSkill)
|
| | |
|
| | |
| | | if tagObj.IsAlive() and tagObj.GetHP() <= 0 and tagObj.GetFaction() != curObj.GetFaction():
|
| | | killObjList.append(tagObj)
|
| | | TurnAttack.SetObjKilled(turnFight, tagObj, curObj, useSkill)
|
| | | useSkill.SetKillObjList(killObjList)
|
| | | if curObj.IsAlive() and curObj.GetHP() <= 0:
|
| | | TurnAttack.SetObjKilled(turnFight, curObj)
|
| | |
|
| | |
| | | tagObj = batObjMgr.getBatObj(tagObjID)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, buffObj, ChConfig.TriggerWay_ShieldBroken, tagObj, connSkillTypeID=buffSkillTypeID)
|
| | |
|
| | | # 有击杀时
|
| | | for index, tagObj in enumerate(killObjList):
|
| | | if index == 0:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillOneObj, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillTagObj, tagObj, connSkill=useSkill)
|
| | | |
| | | triggerOne = False
|
| | | batType = useSkill.GetBatType()
|
| | | isAttackDirect = (isUseSkill and not SkillCommon.IsBuff(useSkill) and useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk])
|
| | | for tagObj in useSkill.GetTagObjList():
|
| | | tagID = tagObj.GetID()
|
| | | if tagID in effIgnoreObjIDList:
|
| | | continue
|
| | |
|
| | | # 直接攻击
|
| | | if isUseSkill and not SkillCommon.IsBuff(useSkill) and useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk]:
|
| | | if isAttackDirect:
|
| | | if not triggerOne:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_AttackOverDirectOne, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_AttackOverDirect, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeAttackedDirect, curObj, connSkill=useSkill)
|
| | | else:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeAnyEffect, curObj, connSkill=useSkill)
|
| | |
|
| | | # 使用技能后
|
| | | if isUseSkill:
|
| | | if not triggerOne:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_UseSkillOverOne, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_UseSkillOver, tagObj, connSkill=useSkill)
|
| | |
|
| | | # 连击
|
| | |
| | | elif batType == ChConfig.TurnBattleType_Pursue:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BePursue, curObj, connSkill=useSkill)
|
| | |
|
| | | if killObjList:
|
| | | tagObj = killObjList[0]
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillOneObj, tagObj, connSkill=useSkill)
|
| | | for tagObj in killObjList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillTagObj, tagObj, connSkill=useSkill)
|
| | | triggerOne = True # 设置已经触发过一次
|
| | |
|
| | | return
|
| | |
|
| | |
| | | continue
|
| | |
|
| | | effID = curEffect.GetEffectID()
|
| | | GameWorld.DebugLog("●执行额外技能效果: %s, triggerWay=%s,effIgnoreObjIDList=%s" % (effID, triggerWay, effIgnoreObjIDList))
|
| | | GameWorld.DebugLog("●执行额外技能效果: skillID=%s,effID=%s, triggerWay=%s,effIgnoreObjIDList=%s" % (useSkill.GetSkillID(), effID, triggerWay, effIgnoreObjIDList))
|
| | | if effID == 5010:
|
| | | # 额外技能效果
|
| | | __doUseEnhanceSkill(turnFight, curObj, useSkill, curEffect, effIgnoreObjIDList)
|
| | |
| | | '''
|
| | | if not passiveSkill:
|
| | | return
|
| | | isOK = False
|
| | | bySkillID = 0
|
| | | if connSkill:
|
| | | bySkillID = connSkill.GetSkillID()
|
| | | elif connBuff:
|
| | | bySkillID = connBuff.GetSkillID()
|
| | | passiveSkillID = passiveSkill.GetSkillID()
|
| | | if passiveSkillID == bySkillID:
|
| | | #GameWorld.DebugLog("###被动触发技能不触发自身,防止死循环! effSkillID=%s,effectID=%s,passiveSkillID=%s" % (effSkillID, effectID, passiveSkillID))
|
| | | return
|
| | | |
| | | isOK = False
|
| | | # 继承主技能目标
|
| | | if passiveSkill.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
|
| | | happenRate = passiveSkill.GetHappenRate()
|
| | | GameWorld.DebugLog("被动触发技能,继承主技能目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,happenRate=%s" % (effSkillID, effectID, passiveSkillID, happenRate))
|
| | | GameWorld.DebugLog("被动触发技能,继承主技能目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,happenRate=%s,bySkillID=%s" % (effSkillID, effectID, passiveSkillID, happenRate, bySkillID))
|
| | | if not tagObj:
|
| | | return
|
| | | tagID = tagObj.GetID()
|
| | |
| | | passiveTagObjList = [tagObj]
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff)
|
| | | else:
|
| | | GameWorld.DebugLog("被动触发技能,重新锁定目标! effSkillID=%s,effectID=%s,passiveSkillID=%s" % (effSkillID, effectID, passiveSkillID))
|
| | | GameWorld.DebugLog("被动触发技能,重新锁定目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s" % (effSkillID, effectID, passiveSkillID, bySkillID))
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff)
|
| | |
|
| | | return isOK
|
| | |
| | |
|
| | | aAtk = atkObj.GetAtk() # 攻击方最大攻击
|
| | |
|
| | | dHP = defObj.GetHP()
|
| | | dHP, dMaxHP = defObj.GetHP(), defObj.GetMaxHP()
|
| | | dDef = 0 if ignoreDef else defObj.GetDef() # 防守方防御力
|
| | |
|
| | | atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPer, curSkill)
|
| | | atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByHP, curSkill)
|
| | | atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByJob, curSkill)
|
| | | atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffLayer, curSkill)
|
| | |
|
| | | aFinalDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_FinalDamPer) # 最终加成
|
| | | dFinalDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_FinalDamPerDef) # 最终减伤
|
| | | |
| | | aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddFinalDamPer, curSkill)
|
| | |
|
| | | aNormalSkillPer, dNormalSkillPerDef = 0, 0
|
| | | if isTurnNormalSkill:
|
| | |
| | |
|
| | | if calcType != ChConfig.Def_Calc_Attack:
|
| | | aAtk = GetCalcBaseValue(calcType, atkObj, defObj, curSkill)
|
| | | GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,calcType=%s,aAtk=%s,dDef=%s,dHP=%s,hurtTypes=%s,aAddSkillPer=%s" |
| | | % (atkID, defID, skillID, atkSkillPer, calcType, aAtk, dDef, dHP, hurtTypes, aAddSkillPer))
|
| | | GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,calcType=%s,aAtk=%s,dDef=%s,dHP=%s/%s,hurtTypes=%s,aAddSkillPer=%s" |
| | | % (atkID, defID, skillID, atkSkillPer, calcType, aAtk, dDef, dHP, dMaxHP, hurtTypes, aAddSkillPer))
|
| | |
|
| | | # 持续性伤害
|
| | | if isTurnNormalSkill:
|