129 【战斗】战斗系统-服务端(蔡文姬所有技能;增加复活释放方式支持;增加触发方式40-在场时,41-复活时;增加效果5501、6021、7011;)
| | |
| | | self._skillTempAttrDict = {} # 某次技能释放中临时的属性增减 {attrID:+-value, ...} value可能是负值
|
| | | self._kvDict = {} # 自定义kv字典
|
| | | self._bigTurnAtkbackCnt = 0 # 大回合累计反击次数
|
| | | self._incrementValue = 0 # 自增值,每场战斗重置,用于确保唯一的场景,如 Skill tag 标签
|
| | | self._skillUseCntDict = {} # 技能累计使用次数 {skillID:useCnt, ...}
|
| | | self._skillTurnUseCntDict = {} # 技能单回合累计使用次数 {skillID:useCnt, ...}
|
| | | self._skillMgr = ObjPool.GetPoolMgr().acquire(SkillManager, self)
|
| | |
| | | def SetDead(self):
|
| | | self._isAlive = False
|
| | | self._hp = 0
|
| | | def SetRevive(self, hp):
|
| | | self._isAlive = True
|
| | | self._hp = hp
|
| | | def GetMaxHP(self): return int(self._batAttrDict.get(ChConfig.AttrID_MaxHP, 0))
|
| | | def SetMaxHP(self, maxHP, isNotify=False):
|
| | | maxHP = int(maxHP)
|
| | |
| | | def ResetSkillUseCnt(self):
|
| | | self._skillUseCntDict = {}
|
| | | self._skillTurnUseCntDict = {}
|
| | | self._incrementValue = 0
|
| | | def AddSkillUseCnt(self, skillID):
|
| | | self._skillUseCntDict[skillID] = self._skillUseCntDict.get(skillID, 0) + 1
|
| | | self._skillTurnUseCntDict[skillID] = self._skillTurnUseCntDict.get(skillID, 0) + 1
|
| | |
| | | self._bigTurnAtkbackCnt = 0
|
| | | self._skillTurnUseCntDict = {}
|
| | |
|
| | | def GetIncrementValue(self):
|
| | | self._incrementValue += 1
|
| | | return self._incrementValue
|
| | | |
| | | def GetLastHurtValue(self): return self._lastHurtValue
|
| | | def SetLastHurtValue(self, lastHurtValue): self._lastHurtValue = lastHurtValue
|
| | |
|
| | |
| | | batObj = batObjMgr.getBatObj(objID)
|
| | | turnFight.ResetOneActionUseSkillCnt()
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_FightStart)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_InBattlefield)
|
| | |
|
| | | turnFight.enterLogic = True
|
| | | return True
|
| | |
| | | turnFight.costTime = time.time() - turnFight.startTime
|
| | | winFaction = turnFight.winFaction
|
| | | turnFight.isWin = (winFaction == ChConfig.Def_FactionA)
|
| | | mapID = turnFight.mapID
|
| | | funcLineID = turnFight.funcLineID
|
| | | GameWorld.DebugLog("--- 战斗结束处理 ---, winFaction=%s, costTime=%ss, %s" % (winFaction, turnFight.costTime, guid))
|
| | | if mapID != ChConfig.Def_FBMapID_Main:
|
| | | GameWorld.Log("战斗耗时: %ss, mapID=%s,funcLineID=%s" % (turnFight.costTime, mapID, funcLineID))
|
| | |
|
| | | # 统计明细
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | |
| | |
|
| | | overMsg = {"winFaction":winFaction, "statInfo":statInfo}
|
| | | curPlayer = turnFight.curPlayer
|
| | | mapID = turnFight.mapID
|
| | | funcLineID = turnFight.funcLineID
|
| | |
|
| | | FBLogic.OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg)
|
| | |
|
| | |
| | | HurtType_Fail, # 失败 - 如概率没有触发 0
|
| | | HurtType_Normal, # 伤害 1
|
| | | HurtTYpe_Cure, # 治疗 2
|
| | | HurtType_3,
|
| | | HurtType_Revive, # 复活 3
|
| | | HurtType_Immune, # 免疫 4
|
| | | HurtType_Parry, # 格挡 5
|
| | | HurtType_IgnoreDef, # 无视防御/真实伤害 6
|
| | |
| | | TriggerWay_BeParry, # 被格挡时 37
|
| | | TriggerWay_BeMiss, # 被闪避时 38
|
| | | TriggerWay_BeAtkBack, # 被反击时 39
|
| | | ) = range(1, 1 + 39)
|
| | | TriggerWay_InBattlefield, # 在场时 40
|
| | | TriggerWay_Revive, # 复活时 41
|
| | | ) = range(1, 1 + 41)
|
| | |
|
| | | # 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
|
| | | TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
|
| | |
| | | PassiveEff_AddAngerSkillPerByXP = 6018 # 增加怒气技能伤害(按消耗怒气值)
|
| | | PassiveEff_AddBatDamPerByTagLostHP = 6019 # 战斗增伤(按目标已损失生命)
|
| | | PassiveEff_AddSkillPerByBuffState = 6020 # 增加技能系数(验证由buff状态触发的)
|
| | | PassiveEff_AddBuffLayer = 6021 # 添加buff层级时额外增加x层
|
| | |
|
| | | # 被动效果ID有触发值时就返回的
|
| | | PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid]
|
| | |
| | | SkillEff_UseSkillHarmSelf = 7008 # 释放技能时自残(先扣血)
|
| | | SkillEff_SkillUseCntLimit = 7009 # 限制技能最多触发次数
|
| | | SkillEff_UseSkillStealBuff = 7010 # 释放技能前偷取buff
|
| | | SkillEff_ReviveNoUse = 7011 # 没有复活目标时释放其他技能
|
| | |
|
| | | (
|
| | | TriggerType_BeSuperHit, # 被暴击触发技能 1
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "Buff: %s" % buffMgr.GetBuffCount())
|
| | | for index in range(buffMgr.GetBuffCount()):
|
| | | buff = buffMgr.GetBuffByIndex(index)
|
| | | GameWorld.DebugAnswer(curPlayer, "ID:%s,SkillID:%s,回合:%s,层:%s,V:%s,来源:%s,光环:%s" |
| | | % (buff.GetBuffID(), buff.GetSkillID(), buff.GetRemainTime(), buff.GetLayer(), |
| | | buffName = GameWorld.CodeToGbk(buff.GetSkillData().GetSkillName())
|
| | | GameWorld.DebugAnswer(curPlayer, "ID:%s,%s(%s),回合:%s,层:%s,V:%s,来源:%s,光环:%s" |
| | | % (buff.GetBuffID(), buffName, buff.GetSkillID(), buff.GetRemainTime(), buff.GetLayer(), |
| | | [buff.GetValue1(), buff.GetValue2(), buff.GetValue3()], buff.GetOwnerID(), buff.GetHaloObjIDList()
|
| | | ))
|
| | |
|
| | |
| | | TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff)
|
| | |
|
| | | return True
|
| | |
|
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
|
| | | effSkill = effBuff.GetSkillData().GetIpyData()
|
| | | return DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5501
|
| | | #
|
| | | # @todo:触发释放技能(指定buff层级)
|
| | | # @author hxp
|
| | | # @date 2025-11-26
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 触发释放技能(指定buff层级)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-11-26 20:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnSkill
|
| | | import IpyGameDataPY
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | skillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
|
| | | setLayerCnt = curEffect.GetEffectValue(1) # 指定buff层级
|
| | | 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, setLayerCnt=setLayerCnt)
|
| | |
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6021
|
| | | #
|
| | | # @todo:添加buff层级时额外增加x层
|
| | | # @author hxp
|
| | | # @date 2025-11-26
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 添加buff层级时额外增加x层
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-11-26 20:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | onlyFirstUse = curEffect.GetEffectValue(1) # 是否仅首次释放技能有效
|
| | | if onlyFirstUse:
|
| | | skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
|
| | | if not skillID:
|
| | | #GameWorld.DebugLog("没有技能ID! %s" % skillkwargs)
|
| | | return
|
| | | useCnt = attacker.GetSkillUseCnt(skillID)
|
| | | if useCnt > 0:
|
| | | GameWorld.DebugLog("技能非首次使用不增加额外层级! skillID=%s,useCnt=%s" % (skillID, useCnt))
|
| | | return
|
| | | return curEffect.GetEffectValue(0)
|
| | |
| | | poolMgr.release(useSkill)
|
| | | return addBuff
|
| | |
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, **kwargs):
|
| | | skillID = buffSkill.GetSkillID()
|
| | | bySkill = buffSkill.GetBySkill() if not bySkill else bySkill
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | |
| | |
|
| | | skillTypeID = buffSkill.GetSkillTypeID()
|
| | | buffRepeat = buffSkill.GetBuffRepeat()
|
| | | setLayerCnt = kwargs.get("setLayerCnt", 0)
|
| | | if setLayerCnt > 0:
|
| | | addLayerCnt = setLayerCnt
|
| | | GameWorld.DebugLog("外部直接指定添加的buff层级: setLayerCnt=%s" % setLayerCnt)
|
| | |
| | | # 可指定来源技能技能才生效,不指定的话默认生效
|
| | | if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
|
| | | addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
|
| | | addLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayer, buffSkill)
|
| | | maxLayerCnt = buffSkill.GetLayerMax()
|
| | | if maxLayerCnt:
|
| | | maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
|
| | |
| | | effID = effect.GetEffectID()
|
| | | if effID not in ChConfig.AttrIDList:
|
| | | continue
|
| | | if effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
|
| | | if effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill]:
|
| | | # 技能时仅技能有效
|
| | | continue
|
| | | attrID = effID
|
| | |
| | | ## 是否无视防御
|
| | | return useSkill.GetHurtType() / 10 == 1 # 2为真伤,待扩展
|
| | |
|
| | | def OnUseSkill(turnFight, curBatObj, useSkill, tagObjList=None, batType=ChConfig.TurnBattleType_Normal, bySkill=None, byBuff=None, comboLimit=False, atkBackTag=None):
|
| | | def OnUseSkill(turnFight, curBatObj, useSkill, tagObjList=None, batType=ChConfig.TurnBattleType_Normal, bySkill=None, byBuff=None, comboLimit=False, atkBackTag=None, **kwargs):
|
| | | '''使用技能通用入口
|
| | | @param useSkill: 使用的技能,注意并不一定是身上的技能,可能只是 SkillData 表数据
|
| | | @param bySkill: 由哪个技能额外触发的,比如附加触发的技能或被动技能均可能由某个技能触发
|
| | |
| | | if not tagObjList:
|
| | | # 可扩展其他目标选择,如复活技能没有死亡单位时则使用另外的效果
|
| | | GameWorld.DebugLog("找不到技能目标! skillID=%s,mapID=%s,funcLineID=%s" % (skillID, turnFight.mapID, turnFight.funcLineID), turnFight.playerID)
|
| | | if useSkill.GetSkillType() == ChConfig.Def_SkillType_Revive:
|
| | | otherEff = useSkill.GetEffectByID(ChConfig.SkillEff_ReviveNoUse)
|
| | | if otherEff:
|
| | | otherSkillID = otherEff.GetEffectValue(0)
|
| | | GameWorld.DebugLog("没有可复活的目标,释放其他技能! otherSkillID=%s" % otherSkillID)
|
| | | otherSkill = curBatObj.GetSkillManager().FindSkillByID(otherSkillID)
|
| | | if not otherSkill:
|
| | | otherSkill = IpyGameDataPY.GetIpyGameData("Skill", otherSkillID)
|
| | | if otherSkill:
|
| | | OnUseSkill(turnFight, curBatObj, otherSkill, None, batType, bySkill, byBuff, comboLimit, atkBackTag, **kwargs)
|
| | | return
|
| | |
|
| | | oneActionUseCnt = turnFight.GetOneActionUseSkillCnt(objID)
|
| | |
| | |
|
| | | #这个技能是Buff
|
| | | if SkillCommon.IsBuff(useSkill):
|
| | | __doAddBuff(turnFight, curBatObj, useSkill)
|
| | | __doAddBuff(turnFight, curBatObj, useSkill, **kwargs)
|
| | | else:
|
| | | __doUseSkill(turnFight, curBatObj, useSkill)
|
| | |
|
| | |
| | | # return False
|
| | | return True
|
| | |
|
| | | def __doAddBuff(turnFight, curBatObj, useSkill):
|
| | | def __doAddBuff(turnFight, curBatObj, useSkill, **kwargs):
|
| | | #执行添加buff
|
| | |
|
| | | #光环技能,需先添加施法者
|
| | |
| | | curID = curBatObj.GetID()
|
| | | skillID = useSkill.GetSkillID()
|
| | | GameWorld.DebugLog("光环技能先给施法者添加光源buff! skillID=%s,ownerID=%s" % (skillID, curID))
|
| | | if TurnBuff.OnAddBuff(turnFight, curBatObj, useSkill, buffOwner=curBatObj):
|
| | | if TurnBuff.OnAddBuff(turnFight, curBatObj, useSkill, buffOwner=curBatObj, **kwargs):
|
| | | for tagBatObj in useSkill.GetTagObjList():
|
| | | if tagBatObj.GetID() == curBatObj.GetID():
|
| | | continue
|
| | | TurnBuff.OnAddBuff(turnFight, tagBatObj, useSkill, buffOwner=curBatObj)
|
| | | TurnBuff.OnAddBuff(turnFight, tagBatObj, useSkill, buffOwner=curBatObj, **kwargs)
|
| | | else:
|
| | | for tagBatObj in useSkill.GetTagObjList():
|
| | | TurnBuff.OnAddBuff(turnFight, tagBatObj, useSkill, buffOwner=curBatObj)
|
| | | TurnBuff.OnAddBuff(turnFight, tagBatObj, useSkill, buffOwner=curBatObj, **kwargs)
|
| | |
|
| | | return
|
| | |
|
| | |
| | | SkillModule_2(turnFight, curBatObj, useSkill)
|
| | | # 复活
|
| | | elif atkType == 3:
|
| | | pass
|
| | | SkillModule_3(turnFight, curBatObj, useSkill)
|
| | | # 多次攻击(锁目标多次伤害,非前端的多段飘血)
|
| | | elif atkType == 4:
|
| | | pass
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def SkillModule_3(turnFight, curBatObj, useSkill):
|
| | | ## 复活
|
| | | |
| | | skillPer = useSkill.GetSkillPer()
|
| | | for tagBatObj in useSkill.GetTagObjList():
|
| | | skillPer += GetAddSkillPer(turnFight, curBatObj, tagBatObj, useSkill) # 复活后的血量百分比
|
| | | |
| | | dID = tagBatObj.GetID()
|
| | | dMapHP = tagBatObj.GetMaxHP()
|
| | | cureHP = int(dMapHP * skillPer / 10000.0)
|
| | | tagBatObj.SetRevive(cureHP)
|
| | | |
| | | hurtObj = useSkill.AddHurtObj(dID)
|
| | | hurtObj.AddHurtType(ChConfig.HurtType_Revive)
|
| | | hurtObj.SetHurtHP(cureHP)
|
| | | hurtObj.SetLostHP(cureHP)
|
| | | hurtObj.SetCurHP(tagBatObj.GetHP())
|
| | | GameWorld.DebugLog(" 复活: dID=%s,cureHP=%s,skillPer=%s,%s/%s" % (dID, cureHP, skillPer, tagBatObj.GetHP(), dMapHP))
|
| | | |
| | | return
|
| | |
|
| | | def DoSkillCureHP(turnFight, atkObj, curSkill, calcCureResults, lostType="", caorenProtectObj=None, isManyTimes=False):
|
| | | '''结算技能治疗
|
| | | @param calcCureResults: 技能公式计算后的伤害结果 [[tagBatObj, cureHP, poisonCureOwner], ...]
|
| | |
| | | defID = defObj.GetID()
|
| | |
|
| | | # 结算需要同步标签
|
| | | useTag = "Skill_%s_%s_Cot" % (atkID, skillID)
|
| | | useTag = "Skill_%s_%s_Cot_%s" % (atkID, skillID, atkObj.GetIncrementValue())
|
| | | Sync_TurnFightTag(turnFight, useTag, 0)
|
| | |
|
| | | dHP = defObj.GetHP()
|
| | |
| | | missObjIDList, immuneObjIDList = [], [] # 闪避、免疫对象ID列表
|
| | | stunObjIDList, superHitObjIDList, parryObjIDList = [], [], []
|
| | | beHurtObjIDList = [] # 受伤的对象ID列表
|
| | | reviveObjList = [] # 复活的对象列表
|
| | | for hurtObj in useSkill.GetHurtObjListAll():
|
| | | hurtObjID = hurtObj.GetObjID()
|
| | | tagObj = batObjMgr.getBatObj(hurtObjID)
|
| | |
| | | if hurtObjID not in missObjIDList:
|
| | | missObjIDList.append(hurtObjID)
|
| | | DoHeroSpecialty(turnFight, tagObj, ChConfig.HeroSpecialty_Miss, relatedSkillID)
|
| | | |
| | | if hurtObj.HaveHurtType(ChConfig.HurtType_Revive):
|
| | | if tagObj not in reviveObjList:
|
| | | reviveObjList.append(tagObj)
|
| | |
|
| | | if hurtObj.HaveHurtType(ChConfig.HurtType_Immune):
|
| | | if hurtObjID not in immuneObjIDList:
|
| | |
| | | else:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill)
|
| | |
|
| | | # 复活时
|
| | | for tagObj in reviveObjList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Revive, curObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_InBattlefield, curObj, connSkill=useSkill)
|
| | | |
| | | triggerOne = False
|
| | | batType = useSkill.GetBatType()
|
| | | isAttackDirect = (isUseSkill and SkillCommon.isAttackDirectSkill(useSkill)) # 是否直接攻击
|
| | | for tagObj in tagObjListAll:
|
| | | tagID = tagObj.GetID()
|
| | | |
| | | # 闪避
|
| | | if tagID in missObjIDList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeMiss, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill)
|
| | | |
| | | if tagID in effIgnoreObjIDList:
|
| | | continue
|
| | |
|
| | |
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuperHit, curObj, connSkill=useSkill)
|
| | |
|
| | | # 格挡
|
| | | if tagID in missObjIDList:
|
| | | if tagID in parryObjIDList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeParry, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill)
|
| | | |
| | | # 闪避
|
| | | if tagID in missObjIDList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeMiss, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill)
|
| | |
|
| | | # 连击
|
| | | if batType == ChConfig.TurnBattleType_Combo:
|
| | |
| | | OnUseSkill(turnFight, curBatObj, enhanceSkillData, batType=ChConfig.TurnBattleType_Enhance, bySkill=useSkill)
|
| | | return
|
| | |
|
| | | def OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill=None, effSkillID=0, effectID=0, connBuff=None):
|
| | | def OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill=None, effSkillID=0, effectID=0, connBuff=None, **kwargs):
|
| | | '''被动触发使用技能
|
| | | @param passiveSkill: 释放的被动技能 或 技能ID
|
| | | @param connSkill: 由什么技能引起的
|
| | |
| | | if not tagObj:
|
| | | return
|
| | | tagID = tagObj.GetID()
|
| | | if not tagObj.IsAlive():
|
| | | if not tagObj.IsAlive() and passiveSkill.GetSkillType() != ChConfig.Def_SkillType_Revive:
|
| | | GameWorld.DebugLog(" 已被击杀不触发: tagID=%s" % (tagID))
|
| | | return
|
| | | if happenRate and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
|
| | | GameWorld.DebugLog(" 概率不触发: tagID=%s,happenRate=%s" % (tagID, happenRate))
|
| | | return
|
| | | passiveTagObjList = [tagObj]
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | else:
|
| | | 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)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | |
|
| | | return isOK
|
| | |
|
| | |
| | | defID = defObj.GetID()
|
| | |
|
| | | # 结算需要同步标签
|
| | | useTag = "Skill_%s_%s_Dot" % (atkID, skillID)
|
| | | useTag = "Skill_%s_%s_Dot_%s" % (atkID, skillID, atkObj.GetIncrementValue())
|
| | | Sync_TurnFightTag(turnFight, useTag, 0)
|
| | |
|
| | | dHP = defObj.GetHP()
|