hxp
2025-12-29 afd50c42da5cda925bdd8770a1d86ac79090b454
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -426,6 +426,11 @@
        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)
@@ -1367,7 +1372,7 @@
    
    # 统计伤血,可能单个技能对同一目标造成多次伤害
    totalHurtValue = 0
    isSuckHP = False
    suckObjIDList = [] # 吸血的对象ID列表
    missObjIDList, immuneObjIDList = [], [] # 闪避、免疫对象ID列表
    stunObjIDList, superHitObjIDList, parryObjIDList = [], [], []
    beHurtObjIDList = [] # 受伤的对象ID列表
@@ -1425,9 +1430,10 @@
            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():
@@ -1447,7 +1453,7 @@
        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)
        
    # 结算副本相关的攻击结果,仅主动发起玩家阵容武将触发
@@ -1548,7 +1554,7 @@
        # 掉血时
        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:
@@ -1594,6 +1600,12 @@
            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)