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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
##@package SkillModule_4
#
# @todo: ½µµÍ³ðºÞ
# @author Alee
# @date 2010-12-16 20:50
# @version 1.0
#
# ÏêϸÃèÊö:½µµÍ³ðºÞ
#
#------------------------------------------------------------------------------ 
"""Version = 2010-12-16 20:50"""
#------------------------------------------------------------------------------
#µ¼Èë
import BaseAttack
import ChConfig
import IPY_GameWorld
import ShareDefine
import GameObj
 
##½µµÍ³ðºÞ
# @param attacker ¹¥»÷ÕßʵÀý
# @param defender ·ÀÊØÕßʵÀý
# @param curSkill ¼¼ÄÜʵÀý
# @param tagRoundPosX ÇøÓò×ø±êX
# @param tagRoundPosY ÇøÓò×ø±êY
# @param isEnhanceSkill ÊÇ·ñΪ¸½¼Ó¼¼ÄÜ
# @param tick Ê±¼ä´Á
# @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦
# @remarks ½µµÍ³ðºÞ
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
    #
    #²»ÊÇNPC²»´¦Àí
    if defender.GetGameObjType() != IPY_GameWorld.gotNPC:
        return
    
    skillPer = curSkill.GetEffect(0).GetEffectValue(0)
    skillPer /= float(ChConfig.Def_MaxRateValue)
 
    attackerID = attacker.GetID()
    attackerType = attacker.GetGameObjType()
    npcAngry = defender.GetNPCAngry()
    
    #³ðºÞÁбíΪ¹Ì¶¨³¤¶ÈÁбí, ¿ÉÒÔÔÚforÖÐɾ³ý
    for i in range(0, npcAngry.GetAngryCount()):
        
        angryTag = npcAngry.GetAngryValueTag(i)
        
        angryID = angryTag.GetObjID()
        angryType = angryTag.GetObjType()
        
        #²»¼ì²é¿ÕID
        if angryID == 0:
            continue
        
        #Ê©·¨Õߣ¬Çå¿Õ³ðºÞÖµ
        if attackerID == angryID and attackerType == angryType:
            updAngryValue = int(GameObj.GetAngryValue(angryTag) * skillPer)
            GameObj.SetAngryValue(angryTag, updAngryValue)
            break
    
    #´¦Àí¼¼ÄÜ´¥·¢ºÍ¹¥»÷³É¹¦Âß¼­
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)