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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
##@package SkillModule_9
#
# @todo: ³åײ
# @author Alee
# @date 2010-12-16 20:50
# @version 1.4
#
# ÏêϸÃèÊö:³åײ£¬Ö±ÏßÖÐÓÐÕϰ­µã¿Í»§¶Ë»á¹ÕÍ䣬·þÎñ¶Ë²»ÏÞÖÆ
#
#------------------------------------------------------------------------------ 
"""Version = 2013-11-05 19:00"""
#------------------------------------------------------------------------------
#µ¼Èë
 
import ChConfig
import GameWorld
import BaseAttack
import PlayerControl
import IPY_GameWorld
import GameObj
#---------------------------------------------------------------------
#È«¾Ö±äÁ¿
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
##³åײ # Óë¿Í»§¶ËÔ¼¶¨³å·æÇ°·¢°ü£¬Ä¿±êΪµØµã£¬Óëսǰ³å·æ²»Í¬
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
    if attacker.GetGameObjType() == IPY_GameWorld.gotPlayer:
        destX = attacker.GetUseSkillPosX()
        destY = attacker.GetUseSkillPosY()
    else:
        destX = defender.GetPosX()
        destY = defender.GetPosY()
    
    #ÊÇÕϰ­µã,²»ÄÜÊÍ·Å£¬Ìø³ö
    if not GameWorld.GetMap().CanMove(destX, destY):
        #PlayerControl.NotifyCode(attacker, "04BBF813-7A30-47A8-927DE1ACCC4F378E")
        return False
    
    result = True
    
    if defender:    # ÓÐÄ¿±ê²ÅËãÉ˺¦
        
        skillEffect = curSkill.GetEffect(0)
        skillPer = skillEffect.GetEffectValue(0)
        skillEnhance = skillEffect.GetEffectValue(1)
  
        #ʹÓü¼ÄÜ£¬ÎÞÐèÌáÉý±©»÷ÂÊ
        result = BaseAttack.Attack(attacker, defender, curSkill, tick, skillPer, 
                                   skillEnhance, 1, isEnhanceSkill)
 
    else:
        # Í¨Öª¼¼ÄÜÊÍ·Å
        BaseAttack.DoSkillEx_AttackSucess(attacker, None, curSkill, tick, isEnhanceSkill)
 
    #·þÎñ¶ËÖÃλ
    #GameWorld.ResetPlayerPos(attacker, destX, destY)
    attacker.StopMove()
    #GameWorld.DebugLog("-----¼¼Äܳ巿ģ°å9 %s %s"%([attacker.GetPosX(), attacker.GetPosY()], [destX, destY]))
    attacker.ChangePos(destX, destY)
 
    #===========================================================================
    # if curSkill.GetSkillID() == ChConfig.Def_SkillID_Somersault:
    #    attacker.SetDict(ChConfig.Def_PlayerKey_SomersaultTime, tick)
    #===========================================================================
    return result