#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Skill.GameSkills.SkillModule_49  
 | 
#  
 | 
# @todo:»»Ñª¹¥»÷  
 | 
# @author hxp  
 | 
# @date 2024-04-02  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ÏûºÄ×ÔÉíx%µ±Ç°ÉúÃüÖµ£¬¿Û³ýµÐ·½µÈ¶îÉúÃüÖµ£¬×î¸ß²»³¬¹ý×ÔÉíx%¹¥»÷¡£  
 | 
#           Ð§¹û1£º AÖµ-ÏûºÄѪÁ¿°Ù·Ö±È£¬BÖµ-×î¸ß²»³¬¹ý¹¥»÷°Ù·Ö±È  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2024-04-02 19:00"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import ChConfig  
 | 
import SkillCommon  
 | 
import BaseAttack  
 | 
import GameWorld  
 | 
import GameObj  
 | 
  
 | 
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):  
 | 
    if not defender:  
 | 
        return  
 | 
      
 | 
    curHP = GameObj.GetHP(attacker)  
 | 
    tagHP = GameObj.GetHP(defender)  
 | 
    if curHP <= 1 or tagHP <= 0:  
 | 
        return  
 | 
      
 | 
    skillEffect = curSkill.GetEffect(0)  
 | 
    lostHPPer = skillEffect.GetEffectValue(0)  
 | 
    maxAtkPer = skillEffect.GetEffectValue(1)  
 | 
      
 | 
    maxHP = GameObj.GetMaxHP(attacker)  
 | 
    maxAtk = attacker.GetMaxAtk()  
 | 
      
 | 
    hpHurtValue = int(maxHP * lostHPPer / float(ChConfig.Def_MaxRateValue))  
 | 
    atkHurtValue = int(maxAtk * maxAtkPer / float(ChConfig.Def_MaxRateValue))  
 | 
      
 | 
    hurtValue = min(hpHurtValue, atkHurtValue, tagHP, curHP - 1) # ÖÁÉÙ±£Áô1µÎѪ  
 | 
      
 | 
    GameWorld.DebugLog("        »»Ñª: atkID=%s,defID=%s,skillID=%s,hurtValue=%s,hpHurtValue=%s,atkHurtValue=%s,curHP=%s,tagHP=%s"   
 | 
                       % (attacker.GetID(), defender.GetID(), curSkill.GetSkillID(), hurtValue, hpHurtValue, atkHurtValue, curHP, tagHP))  
 | 
    lostHP = SkillCommon.SkillLostHP(defender, curSkill, attacker, hurtValue, tick, isDoAttackResult=False, skillAffect=False)  
 | 
    if lostHP:  
 | 
        SkillCommon.SkillLostHP(attacker, curSkill, attacker, hurtValue, tick, isDoAttackResult=False, skillAffect=False)  
 | 
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)  
 |