hxp
2019-10-21 21dd820440a5ca0b335a300ce466b67e54d78b01
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -3,9 +3,7 @@
#
##@package
#
# @todo: 灼烧(流派专用,额外公式), 持续过程中可能会被改变伤害或者持续时长,无法用次数控制,无层级概念
#        若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
#        不同释放者可共存多个灼烧
# @todo: 灼烧(流派专用,额外公式)
# @author: Alee
# @date 2019-4-28 下午04:12:17
# @version 1.0
@@ -23,6 +21,7 @@
import PassiveBuffEffMng
import GameObj
import BuffSkill
import SkillShell
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -37,14 +36,19 @@
#  @return None
#  @remarks 函数详细说明.
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    if curBuff.GetValue2() == 0:
        return
    #单次伤害
    singleDecHP = curBuff.GetValue()
    buffOwner = SkillCommon.GetBuffOwner(curBuff)
    
    curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
    
    SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
    # SkillLostHP前调用 死亡或者其他情况会取消curBuff
    curBuff.SetValue2(max(curBuff.GetValue2() - 1, 0))
    
    SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Burn)
    if buffOwner and GameObj.GetHP(buffOwner) > 0:
        # 此处暂无法用被动效果实现
        buffManager = defender.GetProcessDeBuffState()
@@ -52,10 +56,10 @@
                                                                           buffOwner.GetID(), buffOwner.GetGameObjType())
        if burnToHPEffect:
            addHP = singleDecHP*burnToHPEffect.GetEffectValue(0)/ChConfig.Def_MaxRateValue
            SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, buffOwner, addHP, tick, hurtType=ChConfig.Def_HurtTYpe_Recovery)
            SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, addHP)
    return
# 灼烧的特征为延长buff时间,重算伤害
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
    curEffect = curSkill.GetEffect(0)
    skillPer = curEffect.GetEffectValue(0)
@@ -71,11 +75,31 @@
    
    return [hurtValue]
# 次数(配合效果ID9999的间隔)
def DoAddBuffOver(curObj, curBuff, curEffect, tick, buffOwner):
    if not buffOwner:
        return
    buffTick = SkillShell.GetProcessBuffTick(curBuff.GetSkill(), buffOwner)
    curBuff.SetValue2(curBuff.GetRemainTime()/buffTick)
    return
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_Burn)
    if GameObj.GetHP(defender) <= 0:
        return
    # 在防御者身上同时取消同一个释放者的相关buff
    defender.SetDict(ChConfig.Def_PlayerKey_BurnOwnerID, curBuff.GetOwnerID())