#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#
|
#
|
##@package SkillModule_25.py
|
#
|
# @todo:NPC NPCרÓà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
#
|
# @author jiang
|
# @date 2012-07-13
|
# @version 1.2
|
# @note:
|
#
|
# @change: "2012-07-19 17:30" jiang DoLogic_NPC_UseSkill_SummonNPC²ÎÊýÐÞ¸Ä
|
# @change: "2014-09-22 15:30" hxp Ôö¼Ó¿ÉÖ¸¶¨ÕÙ»½ÊÞ³öÏÖλÖÃΪÕÙ»½Õß½ÅÏÂ
|
#------------------------------------------------------------------------------
|
"""Version = 2014-09-22 15:30"""
|
#------------------------------------------------------------------------------
|
# µ¼Èë
|
import GameWorld
|
import SkillCommon
|
import BaseAttack
|
import ChConfig
|
#------------------------------------------------------------------------------
|
|
## ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
# @param attacker ¹¥»÷ÕßʵÀý
|
# @param defender ·ÀÊØÕßʵÀý
|
# @param curSkill ¼¼ÄÜʵÀý
|
# @param tagRoundPosX ÇøÓò×ø±êX
|
# @param tagRoundPosY ÇøÓò×ø±êY
|
# @param isEnhanceSkill ÊÇ·ñΪ¸½¼Ó¼¼ÄÜ
|
# @param tick ʱ¼ä´Á
|
# @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦
|
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
curSummonID = curSkill.GetEffect(0).GetEffectValue(0)
|
curSummonCount = curSkill.GetEffect(0).GetEffectValue(1) # µ¥´ÎÕÙ»½ÊýÁ¿
|
summonCountAll = curSkill.GetEffect(0).GetEffectValue(2) # ×ÜÕÙ»½ÊýÁ¿
|
|
if curSummonID <= 0 or curSummonCount <= 0:
|
GameWorld.ErrLog("NPCʹÓü¼ÄÜ %s£¬ÕÙ»½ID»òÕßÊýÁ¿ÓÐÎó"%curSkill.GetSkillID())
|
return False
|
|
maxAngryCount = attacker.GetNPCAngry().GetAngryCount()
|
|
# Ô¤¾¯ÕÙ»½
|
if attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnSkillID) == curSkill.GetSkillID():
|
posCnt = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosCnt)
|
for i in xrange(posCnt):
|
rebornPosX = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosX % i)
|
rebornPosY = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosY % i)
|
SkillCommon.DoLogic_NPC_UseSkill_SummonNPC(attacker, curSkill, curSummonID, summonCountAll, maxAngryCount,
|
tick, True, curSkill.GetAtkRadius(), rebornPosX, rebornPosY)
|
else:
|
#ÕÙ»½ÊÞλÖÃÔÚ·ÀÊØÕß½ÅÏÂ
|
if defender and attacker != defender:
|
tagRoundPosX = defender.GetPosX()
|
tagRoundPosY = defender.GetPosY()
|
|
isUnderAttacker = curSkill.GetEffect(1).GetEffectValue(0) # ÊÇ·ñÕÙ»½ÔÚÕÙ»½Õß½ÅÏÂ
|
if isUnderAttacker:
|
tagRoundPosX = attacker.GetPosX()
|
tagRoundPosY = attacker.GetPosY()
|
|
#ÕÙ»½
|
for i in range(0, curSummonCount):
|
SkillCommon.DoLogic_NPC_UseSkill_SummonNPC(attacker, curSkill, curSummonID, summonCountAll,
|
maxAngryCount, tick, True, curSkill.GetAtkRadius(), tagRoundPosX, tagRoundPosY)
|
|
return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
|