| | |
| | | if not curBatObj.CanAction():
|
| | | return
|
| | |
|
| | | buffStateLimit = useSkill.GetBuffStateLimit()
|
| | | if buffStateLimit:
|
| | | limitState = curBatObj.IsInBuffStateGroup(buffStateLimit)
|
| | | buffStateGroups = useSkill.GetBuffStateLimit()
|
| | | if buffStateGroups:
|
| | | limitState = curBatObj.IsInBuffStateGroup(buffStateGroups)
|
| | | if limitState:
|
| | | GameWorld.DebugLog("技能使用处于buff状态限制中! skillID=%s,buffStateLimit=%s,limitState=%s" % (skillID, buffStateLimit, limitState))
|
| | | GameWorld.DebugLog("技能使用处于buff状态限制中! skillID=%s,buffStateGroups=%s,limitState=%s" % (skillID, buffStateGroups, limitState))
|
| | | return
|
| | |
|
| | | #没有指定目标,则按技能自身的目标逻辑
|
| | |
| | |
|
| | | if not tagObjList:
|
| | | # 可扩展其他目标选择,如复活技能没有死亡单位时则使用另外的效果
|
| | | GameWorld.ErrLog("找不到技能目标! skillID=%s,mapID=%s,funcLineID=%s" % (skillID, turnFight.mapID, turnFight.funcLineID), turnFight.playerID)
|
| | | return
|
| | |
|
| | | objID = curBatObj.GetID()
|
| | |
| | | 纵排: 优先前面的单位
|
| | | '''
|
| | |
|
| | | if turnFight.winFaction:
|
| | | return
|
| | | |
| | | if not useSkill.ComboEnable():
|
| | | return
|
| | | |
| | | if not atkObj.IsAlive():
|
| | | return
|
| | |
|
| | | tagFriendly = useSkill.GetTagFriendly()
|
| | |
| | | FBLogic.OnPlayerLineupAttackResult(curPlayer, curObj, killObjList, useSkill, turnFight.mapID, turnFight.funcLineID)
|
| | |
|
| | | effIgnoreObjIDList = missObjIDList + immuneObjIDList
|
| | | useSkill.SetEffIgnoreObjIDList(effIgnoreObjIDList)
|
| | | # 优先触发本技能额外效果,注:仅该技能释放后该技能的额外效果视为主技能的效果,优先级最高
|
| | | __DoCurSkillEff(turnFight, curObj, useSkill, effIgnoreObjIDList, isUseSkill)
|
| | |
|
| | |
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BePursue, curObj, connSkill=useSkill)
|
| | |
|
| | | triggerOne = True # 设置已经触发过一次
|
| | | |
| | | # 有击杀时验证是否结算,最后处理
|
| | | if killObjList:
|
| | | turnFight.checkOverByKilled()
|
| | |
|
| | | return
|
| | |
|
| | |
| | |
|
| | | def Sync_UseSkill(turnFight, curBatObj, useSkill):
|
| | | ## 通知释放技能
|
| | | bySkill = useSkill.GetBySkill()
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkill)
|
| | | clientPack.ObjID = curBatObj.GetID()
|
| | |
| | | clientPack.CurHP = curBatObj.GetHP() % ChConfig.Def_PerPointValue
|
| | | clientPack.CurHPEx = curBatObj.GetHP() / ChConfig.Def_PerPointValue
|
| | | clientPack.SkillID = useSkill.GetSkillID()
|
| | | clientPack.RelatedSkillID = relatedSkillID
|
| | | clientPack.HurtList = []
|
| | | for hurtObj in useSkill.GetHurtObjList():
|
| | | hurt = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurt)
|