#!/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)