#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package SkillModule_12
|
#
|
# @todo: Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å
|
# @author Alee
|
# @date 2010-12-31 17:43
|
# @version 1.3
|
#
|
# ÏêϸÃèÊö: Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å
|
# @change: "2011-1-11 17:30" Alee ²ÎÊý´íÎó,×ø±êÆðµãºÍË¥¼õ
|
# @change: "2011-04-27 15:50" Alee ×Öµäȡֵ·À·¶
|
# @change: "2013-08-15 19:00" Alee ²¹×ãÄ¿±êÒÅ©µã
|
#
|
#------------------------------------------------------------------------------
|
"""Version = 2013-08-15 19:00"""
|
#------------------------------------------------------------------------------
|
#µ¼Èë
|
import ChConfig
|
import BaseAttack
|
import GameWorld
|
#---------------------------------------------------------------------
|
##Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å
|
# @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):
|
skillEffect = curSkill.GetEffect(0)
|
skillPer = skillEffect.GetEffectValue(0)
|
skillEnhance = skillEffect.GetEffectValue(1)
|
|
#---¹¥»÷±éÀúÆðµãÓÅÏȼ¶ 1.ÕÒÖ¸¶¨µã 2.·ÀÊØÕߣ¨°üÀ¨×Ô¼º£©---
|
if tagRoundPosX == -1 or tagRoundPosY == -1:
|
if not defender:
|
GameWorld.ErrLog("SkillModule_12 not defender!")
|
return
|
#ÆðµãÊǹ¥»÷·½£¬»¹ÊÇÊܺ¦·½£¬»¹ÊÇµãµØ
|
tagRoundPosX = defender.GetPosX()
|
tagRoundPosY = defender.GetPosY()
|
|
attackRad = curSkill.GetAtkRadius()
|
|
attackMatrix = ChConfig.Def_Angle_MatrixDict.get(attackRad)
|
if attackMatrix == None:
|
GameWorld.ErrLog("ÀàÐÍ´íÎó(%s), ÓнǶȵĹ¥»÷¾ØÕó"%attackRad)
|
return False
|
|
srcPosX, srcPosY = attacker.GetPosX(), attacker.GetPosY()
|
skillMatrix = GameWorld.MatrixCircle(attackMatrix, attacker.GetPosX(), attacker.GetPosY(),
|
tagRoundPosX, tagRoundPosY)
|
|
#¼ÆËãÆ«ÒÆ²úÉú¶µã£¬²¹×ãÄ¿±êµã
|
desDist = GameWorld.GetDist(srcPosX, srcPosY, tagRoundPosX, tagRoundPosY)
|
atkDist = curSkill.GetAtkDist()
|
if atkDist != 0 and desDist <= atkDist:
|
insertIndex = int(desDist/float(atkDist)*len(skillMatrix))
|
if (tagRoundPosX, tagRoundPosY) not in skillMatrix:
|
skillMatrix.insert(insertIndex, (tagRoundPosX, tagRoundPosY))
|
|
#ʹÓü¼ÄÜ
|
return BaseAttack.AttackerSkillAttackArea(attacker, defender, attacker.GetPosX(), attacker.GetPosY(),
|
curSkill, skillPer, skillEnhance, tick, [],
|
isEnhanceSkill, skillMatrix)
|
|