| | |
| | | aimObjList.sort(key=lambda o:(o.GetHP()), reverse=False)
|
| | | #GameWorld.DebugLogEx("血量最低排序: %s", [[o.GetID(), o.GetHP(), o.GetMaxHP()] for o in aimObjList])
|
| | |
|
| | | # 血量百分比最低
|
| | | elif tagAffect == ChConfig.SkillTagAffect_HPPerLowest:
|
| | | aimObjList.sort(key=lambda o:(o.GetHP() / float(o.GetMaxHP())), reverse=False)
|
| | | #GameWorld.DebugLogEx("血量百分比最低排序: %s", [[o.GetID(), o.GetHP(), o.GetMaxHP(), o.GetHP() / float(o.GetMaxHP())] for o in aimObjList])
|
| | | |
| | | # 血量最高
|
| | | elif tagAffect == ChConfig.SkillTagAffect_HPHighest:
|
| | | aimObjList.sort(key=lambda o:(o.GetHP()), reverse=True)
|
| | |
| | |
|
| | | # 统计伤血,可能单个技能对同一目标造成多次伤害
|
| | | totalHurtValue = 0
|
| | | isSuckHP = False
|
| | | suckObjIDList = [] # 吸血的对象ID列表
|
| | | missObjIDList, immuneObjIDList = [], [] # 闪避、免疫对象ID列表
|
| | | stunObjIDList, superHitObjIDList, parryObjIDList = [], [], []
|
| | | beHurtObjIDList = [] # 受伤的对象ID列表
|
| | |
| | | if tagObj not in caorenProtectList:
|
| | | caorenProtectList.append(tagObj)
|
| | |
|
| | | if hurtObj.GetSuckHP() > 0:
|
| | | isSuckHP = True
|
| | | |
| | | if hurtObj.GetSuckHP() > 0 and not hurtObj.HaveHurtType(ChConfig.HurtAtkType_PoisonCureSuck):
|
| | | if hurtObjID not in suckObjIDList:
|
| | | suckObjIDList.append(hurtObjID)
|
| | | |
| | | # 判断自己死亡,因为反弹、平摊伤害的原因,有可能自己干死自己
|
| | | if curObj.IsAlive() and curObj.GetHP() <= 0:
|
| | | if curObj.CanNoDead():
|
| | |
| | | DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuperHit, relatedSkillID)
|
| | | if stunObjIDList:
|
| | | DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_Stun, relatedSkillID)
|
| | | if isSuckHP:
|
| | | if suckObjIDList:
|
| | | DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuckHP, relatedSkillID)
|
| | |
|
| | | # 结算副本相关的攻击结果,仅主动发起玩家阵容武将触发
|
| | |
| | | # 掉血时
|
| | | if tagID in beHurtObjIDList:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeHurt, curObj, connSkill=useSkill)
|
| | | #TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_HurtTag, tagObj, connSkill=useSkill) 暂时用不到先屏蔽
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_HurtTag, tagObj, connSkill=useSkill)
|
| | |
|
| | | # 受到任意效果时(除直接攻击外的任意效果,如buff、dot、治疗、额外怒技)
|
| | | if not isAttackDirect:
|
| | |
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeParry, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill)
|
| | |
|
| | | # 吸血
|
| | | if tagID in suckObjIDList:
|
| | | if not triggerOne:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_SuckHPOne, tagObj, connSkill=useSkill)
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuckHP, curObj, connSkill=useSkill)
|
| | | |
| | | # 连击
|
| | | if batType == ChConfig.TurnBattleType_Combo:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill)
|