#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package SkillModule_23 # # @todo: Å­µ¶Õ¶ # @author whx # @date 2012-05-23 17:30 # @version 1.0 # # ÏêϸÃèÊö:Å­µ¶Õ¶ # #------------------------------------------------------------------------------ """Version = 2012-05-23 17:30""" #------------------------------------------------------------------------------ #µ¼Èë import ChConfig import GameWorld import BaseAttack import PlayerControl import IPY_GameWorld import Player_Attack_Player import GameObj #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- #--------------------------------------------------------------------- ##Å­µ¶Õ¶ # @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): destX = defender.GetPosX() destY = defender.GetPosY() if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer: GameWorld.ErrLog("·ÇÍæ¼Ò²»¿ÉÊÍ·Å") return False #ÏÈÅжϸÃÍæ¼ÒÄÜ·ñ¹¥»÷£¬·ÀÖ¹×ÔÉíѪÁ¿¿Û³ýµ«Ã»Óй¥»÷ if not Player_Attack_Player.GetCanAttack(attacker, defender, curSkill, tick): return False #ÊÇÕϰ­µã,²»ÄÜÊÍ·Å£¬Ìø³ö if not GameWorld.GetMap().CanMove(destX, destY): PlayerControl.NotifyCode(attacker, "04BBF813-7A30-47A8-927DE1ACCC4F378E") return False #ѪÁ¿ÉÏÏÞ attackerMaxHP = GameObj.GetMaxHP(attacker) defenderMaxHP = GameObj.GetMaxHP(defender) disHP = max(0, attackerMaxHP - defenderMaxHP) #Ч¹û1µÄAÖµ£ºÑªÁ¿²îµÄÍò·ÖÂÊ£¬BÖµ¹Ì¶¨É˺¦ skillEffect = curSkill.GetEffect(0) skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue) addSkillHert = int(skillEffect.GetEffectValue(1) + disHP*skillPer) #Ч¹û2µÄAÖµ£º×ÔÉíѪÁ¿µÄÍò·ÖÂÊ,BÖµ¹Ì¶¨É˺¦ selfSkillEffect = curSkill.GetEffect(1) selfSkillPer = selfSkillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue) addSelfSkillHert = selfSkillEffect.GetEffectValue(1) #Ïȿ۳ý×ÔÉíѪÁ¿ attackerHP = GameObj.GetHP(attacker) #·ÀÖ¹²ß»®±íÅäÖÃΪ0 curHP = int(max(attackerHP * (1 - selfSkillPer) - addSelfSkillHert, 1)) GameObj.SetHP(attacker, curHP) #ʹÓü¼ÄÜ result = BaseAttack.Attack(attacker, defender, curSkill, tick, 0, addSkillHert, 1, isEnhanceSkill) #·þÎñ¶ËÖÃλ GameWorld.ResetPlayerPos(attacker, destX, destY, curSkill.GetSkillID()) return result