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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5011
#
# @todo:´¥·¢Êͷż¼ÄÜ£¨¿É¼Ì³Ð´¥·¢¼¼ÄÜÄ¿±ê»òÖØÐÂÉèÖÃÄ¿±ê£©
# @author hxp
# @date 2025-08-25
# @version 1.0
#
# ÏêϸÃèÊö: ´¥·¢Êͷż¼ÄÜ£¨¿É¼Ì³Ð´¥·¢¼¼ÄÜÄ¿±ê»òÖØÐÂÉèÖÃÄ¿±ê£©
#
#-------------------------------------------------------------------------------
#"""Version = 2025-08-25 12:00"""
#-------------------------------------------------------------------------------
 
import TurnSkill
import IpyGameDataPY
import GameWorld
import ChConfig
 
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill):
    effectID = curEffect.GetEffectID()
    skillID = curEffect.GetEffectValue(0) # ¼¼ÄÜID£¬Îª0ʱÊͷű¾¼¼ÄÜ
    if not skillID:
        passiveSkill = effSkill
    else:
        passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
    if not passiveSkill:
        return
    passiveSkillID = passiveSkill.GetSkillID()
    # ¼Ì³ÐÖ÷¼¼ÄÜÄ¿±ê
    if passiveSkill.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
        happenRate = passiveSkill.GetHappenRate()
        GameWorld.DebugLog("±»¶¯´¥·¢¼¼ÄÜ£¬¼Ì³ÐÖ÷¼¼ÄÜÄ¿±ê! effectID=%s,passiveSkillID=%s,happenRate=%s" % (effectID, passiveSkillID, happenRate))
        tagObjList = [tagObj]
        passiveTagObjList = []
        for tagObj in tagObjList:
            tagID = tagObj.GetID()
            if not tagObj.IsAlive():
                GameWorld.DebugLog("    Òѱ»»÷ɱ²»´¥·¢: tagID=%s" % (tagID))
                continue
            if happenRate and happenRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
                GameWorld.DebugLog("    ¸ÅÂʲ»´¥·¢: tagID=%s,happenRate=%s" % (tagID, happenRate))
                continue
            passiveTagObjList.append(tagObj)
            
        if passiveTagObjList:
            TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill)
    else:
        GameWorld.DebugLog("±»¶¯´¥·¢¼¼ÄÜ£¬ÖØÐÂËø¶¨Ä¿±ê! effectID=%s,passiveSkillID=%s" % (effectID, passiveSkillID))
        TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill)
        
    return
 
def DoBuffEffectLogic(turnFight, batObj, tagObj, curBuff, curEffect, connSkill):
    return DoSkillEffectLogic(turnFight, batObj, tagObj, None, curEffect, connSkill)