129 【战斗】战斗系统-服务端(张飞所有技能;增加触发方式55-免疫伤害时;增加效果5510;)
| | |
| | | BatObjState_Link, # 链接(董白) 29
|
| | | ) = range(1 + 29)
|
| | |
|
| | | BatObjState_Nuhuo = 43 # 怒火(张飞),仅免疫伤害
|
| | |
|
| | | #免疫伤害的状态
|
| | | ImmuneHurtStateList = [BatObjState_Wudi, BatObjState_Nuhuo]
|
| | |
|
| | | #属于灼烧状态的
|
| | | BurnStateList = [BatObjState_Burn, BatObjState_BurnPlus]
|
| | |
|
| | |
| | | TriggerWay_DOTHurt, # 造成持续伤害时 52
|
| | | TriggerWay_FriendDotHurt, # 友方造成持续伤害时(多目标仅触发一次,包含自己) 53
|
| | | TriggerWay_NoDead, # 不时死(有配置该触发方式的视为有不死,触发死亡时不死保留1点血量) 54
|
| | | ) = range(1, 1 + 54)
|
| | | TriggerWay_ImmuneHurt, # 免疫伤害时 55
|
| | | ) = range(1, 1 + 55)
|
| | |
|
| | | # 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
|
| | | TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5510
|
| | | #
|
| | | # @todo:进行追击
|
| | | # @author hxp
|
| | | # @date 2025-12-24
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 进行追击
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-12-24 17:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnSkill
|
| | | #import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs): |
| | | passiveSkillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
|
| | | checkTagBuffState = curEffect.GetEffectValue(1) # 可附加验证来源处于xx状态 [状态1, 状态2, ...]
|
| | | if checkTagBuffState:
|
| | | if not tagObj.CheckInState(checkTagBuffState):
|
| | | #GameWorld.DebugLogEx("5510来源目标不在buff状态,无法触发! checkTagBuffState=%s", checkTagBuffState)
|
| | | return
|
| | | |
| | | if not passiveSkillID:
|
| | | passiveSkillID = effSkill.GetSkillID()
|
| | | if not passiveSkillID:
|
| | | return
|
| | | effectID = curEffect.GetEffectID()
|
| | | effSkillID = effSkill.GetSkillID()
|
| | | return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, |
| | | batType=ChConfig.TurnBattleType_Pursue, **kwargs)
|
| | | |
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
|
| | | effSkill = effBuff.GetSkillData().GetIpyData()
|
| | | return DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
|
| | |
| | |
|
| | | if refreshType and buffSkill and buffOwner:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, buffOwner, ChConfig.TriggerWay_BuffAddByOwner, tagObj=batObj, connSkill=buffSkill, connBuff=curBuff)
|
| | | # 判断是否有额外属性的
|
| | | if not isRefreshAttr:
|
| | | effExDict = curBuff.GetEffectExDict()
|
| | | for effCalcInfo in effExDict.keys():
|
| | | effID = effCalcInfo[0]
|
| | | if effID in ChConfig.AttrIDList:
|
| | | isRefreshAttr = True
|
| | | break
|
| | | |
| | | |
| | | # 判断是否有额外属性的
|
| | | if not isRefreshAttr:
|
| | | effExDict = curBuff.GetEffectExDict()
|
| | | for effCalcInfo in effExDict.keys():
|
| | | effID = effCalcInfo[0]
|
| | | if effID in ChConfig.AttrIDList:
|
| | | isRefreshAttr = True
|
| | | break
|
| | | |
| | | if isRefreshAttr:
|
| | | RefreshBuffAttr(batObj)
|
| | |
|
| | |
| | | tagID = tagObj.GetID()
|
| | | if tagID == ChConfig.HeroID_Caoren:
|
| | | continue
|
| | | if tagObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | if tagObj.CheckInState(ChConfig.ImmuneHurtStateList):
|
| | | continue
|
| | | if not caorenProtectObj or tagObj.GetHP() < caorenProtectObj.GetHP():
|
| | | caorenProtectObj = tagObj
|
| | |
| | | continue
|
| | | if tagID == ChConfig.HeroID_Caoren:
|
| | | continue
|
| | | if tagObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | if tagObj.CheckInState(ChConfig.ImmuneHurtStateList):
|
| | | continue
|
| | | if not caorenProtectObj or tagObj.GetHP() < caorenProtectObj.GetHP():
|
| | | caorenProtectObj = tagObj
|
| | |
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeMiss, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill)
|
| | |
|
| | | # 免疫
|
| | | if tagID in immuneObjIDList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_ImmuneHurt, curObj, connSkill=useSkill)
|
| | | |
| | | if tagID in effIgnoreObjIDList:
|
| | | continue
|
| | |
|
| | |
| | | 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, **kwargs):
|
| | | def OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill=None, effSkillID=0, effectID=0, connBuff=None, batType=ChConfig.TurnBattleType_Passive, **kwargs):
|
| | | '''被动触发使用技能
|
| | | @param passiveSkill: 释放的被动技能 或 技能ID
|
| | | @param connSkill: 由什么技能引起的
|
| | |
| | | GameWorld.DebugLogEx(" 概率不触发: tagID=%s,happenRate=%s", tagID, happenRate)
|
| | | return
|
| | | passiveTagObjList = [tagObj]
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | elif tagAim == ChConfig.SkillTagAim_MainSkillEx:
|
| | | if not connSkill:
|
| | | return
|
| | | passiveTagObjList = connSkill.GetTagObjList()
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | elif tagAim == ChConfig.SkillTagAim_MainSkillFriend:
|
| | | if "byFriendObj" not in kwargs:
|
| | | return
|
| | |
| | | passiveTagObjList = [byFriendObj]
|
| | | GameWorld.DebugLogEx("被动触发技能,针对来源友军! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s,byFriendID=%s",
|
| | | effSkillID, effectID, passiveSkillID, bySkillID, byFriendObj.GetID())
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | | else:
|
| | | GameWorld.DebugLogEx("被动触发技能,重新锁定目标! 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, **kwargs)
|
| | | isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
|
| | |
|
| | | return isOK
|
| | |
|
| | |
| | | return hurtValue, hurtTypes, immuneHurt
|
| | |
|
| | | hurtValue = int(hurtValue)
|
| | | if defObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | if defObj.CheckInState(ChConfig.ImmuneHurtStateList):
|
| | | hurtTypes |= pow(2, ChConfig.HurtAtkType_Immune) # 添加免疫
|
| | | immuneHurt = hurtValue
|
| | | hurtValue = 0
|
| | |
| | |
|
| | | immuneHurt = immuneHurtDict.get(aveObjID)
|
| | | if immuneHurt == None:
|
| | | if aveObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | if aveObj.CheckInState(ChConfig.ImmuneHurtStateList):
|
| | | immuneHurt = 0
|
| | | else:
|
| | | immuneHurt = -1 # 标记没有无敌
|