hxp
2024-09-18 d0d6f28bee730ee64bf46adffa4f768d6af6ac0c
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
64
65
66
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.GameSkills.SkillModule_50
#
# @todo:½áËãׯÉÕ
# @author hxp
# @date 2024-04-02
# @version 1.0
#
# ÏêϸÃèÊö: ½áËãׯÉÕ    Ð§¹û1£º    AÖµ-É˺¦Ôö¼Ó°Ù·Ö±È
#
#-------------------------------------------------------------------------------
#"""Version = 2024-04-02 19:00"""
#-------------------------------------------------------------------------------
 
import ChConfig
import GameWorld
import BuffSkill
import SkillShell
 
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
    if not defender:
        return
    
    # ¶Ô´æÔÚׯÉÕЧ¹ûIDµÄ³ÖÐø¼õÒæbuff½øÐнáËã
    buffState = defender.GetProcessDeBuffState()
    buffStateCount = buffState.GetBuffCount()
    if not buffStateCount:
        return
    
    skillEffect = curSkill.GetEffect(0)
    addBurnHurtPer = skillEffect.GetEffectValue(0)
    defender.SetDict("addBurnHurtPer", addBurnHurtPer)
    
    isBurn = False
    #buff³ÖÐøÐ§¹û£¬»ØºÏÏ¿ÉÄÜɾ³ýbuff£¬µ¹Ðò±éÀú
    for i in range(0, buffStateCount)[::-1]:
        curBuff = buffState.GetBuff(i)
        if not curBuff:
            continue
        isDel = False
        curBuffSkill = curBuff.GetSkill()
        for effIndex in range(0, curBuffSkill.GetEffectCount()):
            #µÃµ½µ±Ç°Ð§¹û
            curEffect = curBuffSkill.GetEffect(effIndex)
            curEffectID = curEffect.GetEffectID()
            if curEffectID == ChConfig.Def_Skill_Effect_Burn:
                isDel = True
                break
        if not isDel:
            continue
        # Ö±½Óɾ³ýbuff£¬ÓÉbuff×ÔÉíÏûʧÂß¼­½øÐнáËã
        GameWorld.DebugLog("        Á¢¼´½áËãׯÉÕbuff: atkID=%s,defID=%s,skillID=%s,addBurnHurtPer=%s" 
                           % (attacker.GetID(), defender.GetID(), curBuffSkill.GetSkillID(), addBurnHurtPer))
        isBurn = True
        skillID = curBuffSkill.GetSkillID()
        skillTypeID = curBuffSkill.GetSkillTypeID()
        ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
        BuffSkill.DoBuffDisApper(defender, curBuff, tick)
        buffState.DeleteBuffByTypeID(skillTypeID)
        SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
        
    defender.SetDict("addBurnHurtPer", 0)
    return isBurn