#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package SkillModule_7
|
#
|
# @todo: Íæ¼ÒºÍNPC¹«Óà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
# @author Alee
|
# @date 2010-12-22 09:30
|
# @version 1.3
|
#
|
# ÏêϸÃèÊö: Íæ¼ÒºÍNPC¹«Óà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
#
|
# @change: "2011-02-25 13:30" Alee ÕÙ»½²ÎÊýÐÞ¸Ä
|
# @change: "2011-06-24 15:10" Alee Ìí¼ÓÕÙ»½²»Í¬ÕÙ»½Ê޵ŦÄÜ
|
# @change: "2011-07-15 14:00" Alee ÐÞ¸ÄÕÙ»½º¯Êý
|
#---------------------------------------------------------------------
|
"""Version = 2011-07-15 14:00"""
|
#------------------------------------------------------------------------------
|
#µ¼Èë
|
import SkillCommon
|
import GameWorld
|
import ChConfig
|
import BaseAttack
|
import IPY_GameWorld
|
|
#Â߼ʵÏÖ
|
##Íæ¼ÒºÍNPC¹«Óà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
# @param attacker ¹¥»÷ÕßʵÀý
|
# @param defender ·ÀÊØÕßʵÀý
|
# @param curSkill ¼¼ÄÜʵÀý
|
# @param tagRoundPosX ÇøÓò×ø±êX
|
# @param tagRoundPosY ÇøÓò×ø±êY
|
# @param isEnhanceSkill ÊÇ·ñΪ¸½¼Ó¼¼ÄÜ
|
# @param tick ʱ¼ä´Á
|
# @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦
|
# @remarks Íæ¼ÒºÍNPC¹«Óà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å
|
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
summonResult = False
|
#·ÖÎªÍæ¼ÒÕÙ»½ºÍNPCÕÙ»½
|
if attacker.GetGameObjType() == IPY_GameWorld.gotNPC:
|
summonResult = NPCUseSkill_SummonNPC(attacker, defender, curSkill, tick)
|
else:
|
summonResult = PlayerUseSkill_SummonNPC(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, tick)
|
|
#ÕÙ»½²»³É¹¦
|
if not summonResult:
|
return summonResult
|
|
#´¦Àí¼¼ÄÜ´¥·¢ºÍ¹¥»÷³É¹¦Âß¼
|
return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
|
##Íæ¼ÒÕÙ»½ÊÞ
|
# @param attacker ¹¥»÷ÕßʵÀý
|
# @param defender ·ÀÊØÕßʵÀý
|
# @param curSkill ¼¼ÄÜʵÀý
|
# @param tagRoundPosX ÇøÓò×ø±êX
|
# @param tagRoundPosY ÇøÓò×ø±êY
|
# @param tick ʱ¼ä´Á
|
# @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦
|
# @remarks Íæ¼ÒÕÙ»½ÊÞ
|
def PlayerUseSkill_SummonNPC(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, tick):
|
curEffect = curSkill.GetEffect(0)
|
if curEffect == None:
|
GameWorld.Log("ÕÙ»½¼¼ÄÜÎÞЧ¹û,skillID = %s"%curSkill.GetSkillID(), attacker.GetPlayerID())
|
return False
|
|
curSummonID = curEffect.GetEffectValue(0)
|
if curSummonID == 0:
|
GameWorld.Log("¼¼ÄÜ %sÌî±í´íÎó,ÕÙ»½IDΪ0"%curSkill.GetSkillID(), attacker.GetPlayerID())
|
return False
|
|
#¼ì²éÕÙ»½´æÔڵĹæÔò
|
if not SkillCommon.SummonNPCOccurRule(attacker, curSummonID, tick):
|
return False
|
|
#ÑéÖ¤ÊÇ·ñÖ¸¶¨·Å¼¼ÄÜ
|
isAppointBornPos = True
|
if tagRoundPosX == -1 or tagRoundPosY == -1:
|
isAppointBornPos = False
|
|
SkillCommon.PlayerSummonNPC(attacker, curSkill, curSummonID, ChConfig.Def_SummonAppearDist,
|
tick, isAppointBornPos, tagRoundPosX, tagRoundPosY)
|
|
return True
|
|
##NPCÕÙ»½ÊÞ
|
# @param attacker ¹¥»÷ÕßʵÀý
|
# @param defender ·ÀÊØÕßʵÀý
|
# @param curSkill ¼¼ÄÜʵÀý
|
# @param tick ʱ¼ä´Á
|
# @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦
|
# @remarks NPCÕÙ»½ÊÞ
|
def NPCUseSkill_SummonNPC(attacker, defender, curSkill, tick):
|
curSummonID = curSkill.GetEffect(0).GetEffectValue(0)
|
curSummonCount = curSkill.GetEffect(0).GetEffectValue(1)
|
|
if curSummonID <= 0 or curSummonCount <= 0:
|
GameWorld.ErrLog("NPCʹÓü¼ÄÜ %s£¬ÕÙ»½ID»òÕßÊýÁ¿ÓÐÎó"%curSkill.GetSkillID())
|
return False
|
|
maxAngryCount = attacker.GetNPCAngry().GetAngryCount()
|
|
#ÕÙ»½
|
SkillCommon.DoLogic_NPC_UseSkill_SummonNPCAll(attacker, curSkill, curSummonID, curSummonCount,
|
maxAngryCount, tick, addAngry = True)
|
|
return True
|
|