hxp
2025-12-02 1dd273126494e6f8ffd7a994b637f45ad1128191
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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_6014
#
# @todo:Ôö¼Ó¼¼ÄܸÅÂÊ
# @author hxp
# @date 2025-09-25
# @version 1.0
#
# ÏêϸÃèÊö: Ôö¼Ó¼¼ÄܸÅÂÊ
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-25 18:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import ChConfig
 
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    addRate = curEffect.GetEffectValue(0)
    onlyFirstUse = curEffect.GetEffectValue(1) # ÊÇ·ñ½öÊ×´ÎÊͷż¼ÄÜÓÐЧ
    skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
    if onlyFirstUse:
        if not skillID:
            #GameWorld.DebugLog("ûÓÐÔö¼Ó¸ÅÂʵļ¼ÄÜID! %s" % skillkwargs)
            return
        useCnt = attacker.GetSkillUseCnt(skillID)
        if useCnt > 0:
            GameWorld.DebugLog("¼¼ÄÜ·ÇÊ×´ÎʹÓò»Ôö¼Ó¶îÍâ¸ÅÂÊ! skillID=%s,useCnt=%s" % (skillID, useCnt))
            return
        
    failAddRateEx = curEffect.GetEffectValue(2) # Ê§°Ü´ÎÊý¶îÍâÔö¼Ó¸ÅÂÊ
    if failAddRateEx:
        failCnt = attacker.GetSkillHappenFailCnt(skillID)
        mustHappenFailCnt = curEffect.GetEffectValue(3) # x´Îʧ°Üºó±Ø¶¨ÊÍ·Å£¬´óÓÚ0ÓÐЧ
        if mustHappenFailCnt and failCnt >= mustHappenFailCnt:
            addRate = ChConfig.Def_MaxRateValue # Ç¿ÖÆÔö¼ÓÂú¸ÅÂÊ
            GameWorld.DebugLog("¼¼ÄܸÅÂÊʧ°Ü´ÎÊý±Ø¶¨³É¹¦: mustHappenFailCnt=%s,failCnt=%s,addRate=%s" % (mustHappenFailCnt, failCnt, addRate))
        elif failCnt > 0:
            addRate = failAddRateEx * failCnt
            GameWorld.DebugLog("¼¼ÄܸÅÂÊʧ°Ü´ÎÊýÔö¼Ó¸ÅÂÊ: failAddRateEx=%s,failCnt=%s,addRate=%s" % (failAddRateEx, failCnt, addRate))
            
    if effBuff:
        buffLayer = effBuff.GetLayer()
        if buffLayer > 1:
            addRate *= buffLayer
            GameWorld.DebugLog("¶à²ãbuffÔö¼Ó¼¼ÄܸÅÂÊ! skillID=%s,buffLayer=%s,addRate=%s" % (effBuff.GetSkillID(), buffLayer, addRate))
            
    return addRate