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
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.GameSkills.SkillModule_46
#
# @todo:ÃüÁîµÚһλÖÃÁéÊÞÁ¢¼´Ê¹ÓÃÒ»´Î¼¼ÄÜ
# @author hxp
# @date 2024-02-01
# @version 1.0
#
# ÏêϸÃèÊö: ÃüÁîµÚһλÖÃÁéÊÞÁ¢¼´Ê¹ÓÃÒ»´Î¼¼ÄÜ£¨¾ßÌåЧ¹ûÓÉÁéÊÞ¼¼Äܾö¶¨£©£¬Ð§¹û1£º AÖµ-ÁéÊÞ¼¼ÄÜÊÇ·ñÖØÐ½øÈë¼¼ÄÜCD£¬»ØºÏÖÆÊÊÓÃ
#
#-------------------------------------------------------------------------------
#"""Version = 2024-02-01 15:30"""
#-------------------------------------------------------------------------------
 
import ChConfig
import PetControl
import SkillCommon
import TurnAttack
import BaseAttack
import AICommon
 
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
    if not attacker.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline):
        return
    
    # Ä¬ÈϵÚһλÖÃÁéÊÞÇ¿ÖÆÊ¹Óü¼ÄÜ1
    curPet = PetControl.GetFightPet(attacker, 1)
    if not curPet:
        return
    
    tagObj = TurnAttack.GetEnemyObj(attacker)
    if not tagObj:
        return
    
    skillEffect = curSkill.GetEffect(0)
    isCD = skillEffect.GetEffectValue(0) # ÊÇ·ñÖØÐ½øÈëÀäȴʱ¼ä
    remainTime = None
    
    useSkill = None
    skillManager = curPet.GetSkillManager()
    for index in range(0, skillManager.GetSkillCount()):
        skill = skillManager.GetSkillByIndex(index)
        #ÒѾ­µ½Î²²¿ÁË
        if not skill or skill.GetSkillTypeID() == 0:
            break
        
        if skill.GetSkillType() == ChConfig.Def_SkillType_Revive:
            #¸´»î¼¼Äܵ¥¶À´¦Àí
            continue
        
        #±»¶¯¼¼Äܲ»ÊÍ·Å
        if SkillCommon.isPassiveSkill(skill):
            continue
        
        remainTime = skill.GetRemainTime()
        skill.SetRemainTime(0)
        useSkill = skill
        break
    
    if not useSkill:
        return
    
    BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)    
    tagDist = 0
    isOK = AICommon.DoNPCUseSkill(curPet, tagObj, useSkill, tagDist, tick)
    if isOK:
        # ²»ÖØÐ½øÈëCDµÄ»°£¬»¹Ô­Ô­Ê£Óàʱ¼ä
        if not isCD and remainTime != None:
            skill.SetRemainTime(remainTime)
    else:
        # ÊÍ·Åʧ°Ü£¬»¹Ô­Ô­Ê£Óàʱ¼ä
        if remainTime != None:
            skill.SetRemainTime(remainTime)
            
    return isOK