1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5507
#
# @todo:´¥·¢Êͷż¼ÄÜ£¨¸´»îÖ¸¶¨Ä¿±ê£©
# @author hxp
# @date 2025-12-19
# @version 1.0
#
# ÏêϸÃèÊö: ´¥·¢Êͷż¼ÄÜ£¨¸´»îÖ¸¶¨Ä¿±ê£©
#
#-------------------------------------------------------------------------------
#"""Version = 2025-12-19 18:00"""
#-------------------------------------------------------------------------------
 
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
    costHPPer = curEffect.GetEffectValue(2) # ¿É¸½¼ÓÏûºÄ×ÔÉíѪÁ¿°Ù·Ö±È£¬Åä0²»ÏûºÄ£¬´óÓÚ0ѪÁ¿²»×ãʱ²»ÊÍ·Å
    
    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)
        return
    
    if not passiveSkillID:
        passiveSkillID = effSkill.GetSkillID()
    if not passiveSkillID:
        return
    
    if tagObj.CheckInState(ChConfig.BatObjState_RebornLimit):
        GameWorld.DebugLogEx("5507Ä¿±ê±»½ûÖ¹¸´»î²»´¦Àí! tagHeroID=%s", tagHeroID)
        return
    
    tagID = tagObj.GetID()
    if costHPPer:
        curHP = batObj.GetHP()
        maxHP = batObj.GetMaxHP()
        costHP = maxHP * costHPPer / 100.0
        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) # Ö±½Ó¿Û³ý
    else:
        GameWorld.DebugLogEx("5507Ö±½Ó¸´»îÖ¸¶¨Ä¿±ê! curHP=%s/%s,costHPPer=%s,costHP=%s,tagHeroID=%s,tagID=%s", curHP, maxHP, costHPPer, costHP, tagHeroID, tagID)
        
    effectID = curEffect.GetEffectID()
    effSkillID = effSkill.GetSkillID()
    return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, **kwargs)