| #!/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, largeNum=True)  | 
|         #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)  | 
|   |