#!/usr/bin/python # -*- coding: GBK -*- # # @todo: # # @author: Alee # @date 2017-12-7 ÏÂÎç05:18:11 # @version 1.0 # # @note: ³ÖÐø¶¾É˺¦£¬ÕæÊµ¼ÆËã # #--------------------------------------------------------------------- #µ¼Èë import SkillCommon import GameWorld import ChConfig import GameObj import AttackCommon import SkillShell import PassiveBuffEffMng import BaseAttack import BuffSkill #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ ## ³ÖÐøÐÔBuff´¦Àí # @param defender ³ÐÊÜÕß # @param curBuff µ±Ç°Buff # @param curEffect BuffЧ¹û # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick): if curBuff.GetValue2() == 0: return layer = max(curBuff.GetLayer(), 1) #µ¥´ÎÉ˺¦, ¶¾Óв㼶µÄÇé¿ö singleDecHP = curBuff.GetValue()*layer #GameWorld.DebugLog("1033---------%s-%s-%s-%s"%(curBuff.GetValue(), layer, hurtPer, singleDecHP ) ) #buffÓµÓÐÕß buffOwner = SkillCommon.GetBuffOwner(curBuff) curBuffSkillID = curBuff.GetSkill().GetSkillTypeID() # SkillLostHPǰµ÷Óà ËÀÍö»òÕ߯äËûÇé¿ö»áÈ¡ÏûcurBuff curBuff.SetValue2(max(curBuff.GetValue2() - 1, 0)) SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed) return ##³ÖÐøÉ˺¦Buff, ¸ù¾Ý¹¥»÷ÕßÉ˺¦¼ÆËã # @param attacker ¹¥»÷ÕßʵÀý # @param curSkill ¼¼ÄÜʵÀý # @param curEffect µ±Ç°¼¼ÄÜЧ¹û1 # @return ×ÜÖµ def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict): curEffect = curSkill.GetEffect(0) skillPer = curEffect.GetEffectValue(0)/float(ChConfig.Def_MaxRateValue) skillEnhance = curEffect.GetEffectValue(1) # ¿Í»§¶Ë±íÏÖÆ®×ÖΪÁ÷Ѫ£¬ÎÞÐè֪ͨÆäËûÉËѪÀàÐÍ hurtValue, hurtType = AttackCommon.CalcHurtHP(attacker, defender, curSkill, skillEnhance, skillPer, GameWorld.GetGameWorld().GetTick(), ChConfig.Def_Skill_HappenState_HitOn) # µ¥´ÎÉ˺¦Öµ£¬É˺¦ÀàÐÍ return [hurtValue, hurtType] # ´ÎÊý£¨ÅäºÏЧ¹ûID9999µÄ¼ä¸ô£© def DoAddBuffOver(curObj, curBuff, curEffect, tick, buffOwner): if not buffOwner: return buffTick = SkillShell.GetProcessBuffTick(curBuff.GetSkill(), buffOwner) curBuff.SetValue2(curBuff.GetRemainTime()/buffTick) return # ÏûʧǰÈçÓÐδִÐдÎÊýÔò²¹ÉÏ # @param defender ³ÐÊÜÕß def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick): #ÒѾ­ËÀÍö²»´¥·¢ if GameObj.GetHP(defender) <= 0: return count = curBuff.GetValue2() #ÎÞÊ£Óà if count > 0: SkillCommon.SkillLostHP(defender, curSkill.GetSkillTypeID(), SkillCommon.GetBuffOwner(curBuff), curBuff.GetValue()*count, tick, hurtType=ChConfig.Def_HurtType_Bleed) #ÒѾ­ËÀÍö²»´¥·¢ if GameObj.GetHP(defender) <= 0: return BuffBoom(defender, curSkill, curBuff, tick) return # buff±¬Õ¨£¬É˺¦ËãÊÍ·ÅbuffÕߣ¬Í¨Öª¿Í»§¶Ë±íÏÖΪÖÐBUFFÕß,ĿǰֻÄÜ´¦ÀíÒ»ÖÖ±¬Õ¨ def BuffBoom(defender, curSkill, curBuff, tick): #buffÓµÓÐÕß attacker = SkillCommon.GetBuffOwner(curBuff) if not attacker: return skills = PassiveBuffEffMng.GetPassiveSkillByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BuffBoom) if not skills: return boomSkill = skills[0] curEffect = curSkill.GetEffect(0) skillPer = curEffect.GetEffectValue(0) skillEnhance = curEffect.GetEffectValue(1) BaseAttack.AttackAreaDefenderNotify(attacker, defender, defender.GetPosX(), defender.GetPosY(), boomSkill, skillPer, skillEnhance, tick) return