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