hxp
2023-11-08 e25e81a0a62baf5b6df6f9599cf791ef7085baa8
0312 【主干】【BT0.1】增加持续回血 按目标最大血量(效果1307)
1个文件已添加
76 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1307.py 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1307.py
New file
@@ -0,0 +1,76 @@
#!/usr/bin/python
# -*- coding: GBK -*-
##@package BuffProcess_1307
# @todo: 持继回血触发的buff逻辑实现 按目标最大生命回血
#
# @author Alee
# @date 2011-01-18 11:00
# @version 1.2
#
#---------------------------------------------------------------------
"""Version = 2013-10-31 14:45"""
#导入
import SkillCommon
import GameWorld
import ChConfig
import GameObj
#import PassiveBuffEffMng
#import SkillShell
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
#逻辑实现
## 持续性Buff处理
#  @param defender 承受者
#  @param curBuff 当前Buff
#  @param curEffect Buff效果
#  @param tick 当前时间
#  @return None
#  @remarks 持续性Buff处理
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    if curBuff.GetValue1() == 0:
        return
    curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
    singleAddHP = curBuff.GetValue()
    curBuff.SetValue1(max(curBuff.GetValue1() - 1, 0))
    SkillCommon.SkillAddHP(defender, curBuffSkillID, singleAddHP)
    return
# 消失前如有未执行次数则补上
#  @param defender 承受者
def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick):
    count = curBuff.GetValue1()
    #无剩余
    if count <= 0:
        return
    #已经死亡不触发
    if GameObj.GetHP(defender) <= 0:
        return
    SkillCommon.SkillAddHP(defender, curSkill.GetSkillTypeID(), curBuff.GetValue()*count)
    return
##持续治疗Buff,根据攻击者最大血量计算
# @param attacker 攻击者实例
# @param curSkill 技能实例
# @param curEffect 当前技能效果1
# @return 总值
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
    curEffect = curSkill.GetEffect(0)
    # 被动增强
#    addTime = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, None, curSkill, ChConfig.TriggerType_BuffTime)
#    buffTick = SkillShell.GetProcessBuffTick(curSkill, attacker)
#
#    count = int(addTime/buffTick + curEffect.GetEffectValue(2))
    count = curEffect.GetEffectValue(2)
    return [SkillCommon.GetCureHP(attacker, defender, curSkill, ChConfig.Def_Cure_TagMaxHP),
            count]