| | |
| | |
|
| | | import TurnSkill
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | |
|
| | | passiveSkillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
|
| | | effHeroID = curEffect.GetEffectValue(1) # 指定目标武将ID
|
| | | effHeroID = curEffect.GetEffectValue(1) # 指定目标武将ID,0时为来源友军目标
|
| | | costHPPer = curEffect.GetEffectValue(2) # 可附加消耗自身血量百分比,配0不消耗,大于0血量不足时不释放
|
| | | searchFrom = curEffect.GetEffectValue(3) # 目标武将ID是否从阵容中搜索
|
| | |
|
| | | if not effHeroID or not tagObj:
|
| | | return
|
| | | |
| | | if tagObj.IsAlive():
|
| | | return
|
| | | |
| | | tagHeroID = tagObj.GetHeroID()
|
| | | if tagHeroID != effHeroID:
|
| | | #GameWorld.DebugLogEx("5507非目标武将死亡不处理! tagHeroID=%s,effHeroID=%s", tagHeroID, effHeroID)
|
| | | tagHero = tagObj
|
| | | if effHeroID:
|
| | | if searchFrom:
|
| | | batLineup = batObj.GetBatLineup()
|
| | | tagHero = batLineup.getHeroObj(effHeroID)
|
| | | |
| | | if not tagHero:
|
| | | return
|
| | | |
| | | tagHeroID = tagHero.GetHeroID()
|
| | | if tagHeroID != effHeroID:
|
| | | GameWorld.DebugLogEx("5507非目标武将死亡不处理! tagHeroID=%s,effHeroID=%s", tagHeroID, effHeroID)
|
| | | return
|
| | | |
| | | if tagHero.IsAlive():
|
| | | return
|
| | |
|
| | | if not passiveSkillID:
|
| | |
| | | if not passiveSkillID:
|
| | | return
|
| | |
|
| | | tagID = tagObj.GetID()
|
| | | if tagHero.CheckInState(ChConfig.BatObjState_RebornLimit):
|
| | | GameWorld.DebugLogEx("5507目标被禁止复活不处理! tagHeroID=%s", tagHeroID)
|
| | | return
|
| | | |
| | | tagHeroID = tagHero.GetHeroID()
|
| | | tagID = tagHero.GetID()
|
| | | if costHPPer:
|
| | | curHP = batObj.GetHP()
|
| | | maxHP = batObj.GetMaxHP()
|
| | |
| | | if curHP < costHP:
|
| | | GameWorld.DebugLogEx("5507自身血量不足,无法复活对方! curHP=%s/%s,costHPPer=%s,costHP=%s", curHP, maxHP, costHPPer, costHP)
|
| | | return
|
| | | GameWorld.DebugLogEx("5507扣血复活指定目标! curHP=%s/%s,costHPPer=%s,costHP=%s,tagHeroID=%s,tagID=%s", curHP, maxHP, costHPPer, costHP, tagHeroID, tagID)
|
| | | batObj.SetHP(max(1, curHP - costHP), False) # 直接扣除
|
| | | updHP = curHP - costHP
|
| | | GameWorld.DebugLogEx("5507扣血复活指定目标! curHP=%s/%s,costHPPer=%s,costHP=%s,updHP=%s,tagHeroID=%s,tagID=%s", curHP, maxHP, costHPPer, costHP, updHP, tagHeroID, tagID)
|
| | | batObj.SetHP(updHP, True) # 直接扣除
|
| | | else:
|
| | | GameWorld.DebugLogEx("5507直接复活指定目标! curHP=%s/%s,costHPPer=%s,costHP=%s,tagHeroID=%s,tagID=%s", curHP, maxHP, costHPPer, costHP, tagHeroID, tagID)
|
| | | GameWorld.DebugLogEx("5507直接复活指定目标! tagHeroID=%s,tagID=%s,searchFrom=%s", tagHeroID, tagID, searchFrom)
|
| | |
|
| | | effectID = curEffect.GetEffectID()
|
| | | effSkillID = effSkill.GetSkillID()
|
| | | return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, **kwargs)
|
| | | return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagHero, passiveSkillID, connSkill, effSkillID, effectID, connBuff, **kwargs)
|