#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Skill.GameSkills.SkillModule_18  
 | 
#  
 | 
# @todo:ȺÌå˲¼ä»ØÑª  
 | 
# @author hxp  
 | 
# @date 2017-11-24  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ÈºÌå˲¼ä»ØÑª  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2017-11-24 22:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
#µ¼Èë  
 | 
import ChConfig  
 | 
import SkillCommon  
 | 
import BaseAttack  
 | 
import GameObj  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
##ÊÍ·ÅÕßѪÁ¿ÉÏÏްٷֱȻØÑª  
 | 
# @param attacker ¹¥»÷Õß  
 | 
# @param defender ·ÀÊØÕß  
 | 
# @param curSkill ¼¼ÄÜʵÀý  
 | 
# @param tagRoundPosX ÇøÓò¼¼ÄÜÆðµãX  
 | 
# @param tagRoundPosY ÇøÓò¼¼ÄÜÆðµãY  
 | 
# @param tick Ê±¼ä´Á  
 | 
# @return ·µ»ØÖµ, ÊÇ·ñÊͷųɹ¦  
 | 
# @remarks ÊÍ·ÅÕßѪÁ¿ÉÏÏްٷֱȻØÑª  
 | 
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):  
 | 
    # Ð§¹û0Ϊ»Ö¸´ÊýÖµÉ趨£¬Ð§¹û1Ϊ»Ö¸´¹æÔòÉ趨  
 | 
      
 | 
    cureSetEff = curSkill.GetEffect(1) # »Ö¸´¹æÔòÉ趨Ч¹û  
 | 
    cureType = cureSetEff.GetEffectValue(0) # »Ö¸´ÀàÐÍ  
 | 
    cureCount = cureSetEff.GetEffectValue(1) # »Ö¸´¶ÔÏó¸öÊý  
 | 
    isSelfLimit = cureSetEff.GetEffectValue(2) # ÊÇ·ñÏÞÖÆ»Ö¸´×Ô¼º  
 | 
      
 | 
    cureObjList = []  
 | 
    if not isSelfLimit:  
 | 
        curHPPer = GameObj.GetHP(attacker) / float(GameObj.GetMaxHP(attacker))  
 | 
        cureObjList.append([curHPPer, attacker])  
 | 
          
 | 
    srcPosX, srcPosY = attacker.GetPosX(), attacker.GetPosY()  
 | 
    objList = BaseAttack.CheckAreaObjServer(attacker, curSkill, srcPosX, srcPosY, tick, BaseAttack.CheckTagIsBeInfection)  
 | 
      
 | 
    for obj in objList:  
 | 
        hpPer = GameObj.GetHP(obj) / float(GameObj.GetMaxHP(obj))  
 | 
        cureObjList.append([hpPer, obj])  
 | 
    cureObjList.sort() # °´µ±Ç°ÑªÁ¿°Ù·Ö±ÈÉýÐòÅÅ  
 | 
    if not cureObjList:  
 | 
        # Ã»ÓпÉÖÎÁƵÄÄ¿±ê  
 | 
        return  
 | 
      
 | 
    if cureObjList[0][0] >= 1:  
 | 
        # ¶¼ÂúѪ  
 | 
        #hpPer, obj = cureObjList[0]  
 | 
        #GameWorld.DebugLog("¶¼ÂúѪ£¬²»ÐèÒªÊͷŻָ´¼¼ÄÜ£¡objCnt=%s,hpPer=%s,HP=%s,maxHP=%s"   
 | 
        #                   % (len(cureObjList), hpPer, GameObj.GetHP(attacker), GameObj.GetMaxHP(attacker)))  
 | 
        return  
 | 
      
 | 
    targetList = []  
 | 
    valueList = []  
 | 
    for cureObjInfo in cureObjList[:cureCount]:  
 | 
        cureObj = cureObjInfo[1]  
 | 
        addValue = SkillCommon.GetCureHP(attacker, cureObj, curSkill, cureType)  
 | 
        #GameWorld.DebugLog("¼ÓѪ: curHP=%s,maxHP=%s,addHP=%s" % (GameObj.GetHP(obj), GameObj.GetMaxHP(obj), addValue))  
 | 
        #×ÜÁ¿ ×î´óÉúÃüÖµµÄ°Ù·Ö±È »ØÑª ¸½¼Ó¶àÉÙ   
 | 
        SkillCommon.SkillAddHP(cureObj, curSkill.GetSkillTypeID(), addValue, False)  
 | 
        targetList.append(cureObj)  
 | 
        valueList.append(addValue)  
 | 
          
 | 
    return BaseAttack.DoAreaAttackSuccess(attacker, GameObj.GetHP(attacker), targetList, valueList,   
 | 
                                          curSkill, tick, ChConfig.Def_HurtTYpe_Recovery)  
 | 
  
 |