NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Buff/Impl/BuffBulletDamage10.cs

61 lines
2.2 KiB
C#

using Gameplay.Common;
using UnityEngine;
namespace Gameplay.Buff
{
public class BuffBulletDamage10 : BaseBuff
{
protected override void _OnTrigger()
{
base._OnTrigger();
// 【固定伤害,攻击力百分比,流血持续时间,流血伤害系数,第二次叠加系数】
var fixValue = _TryGetIntParam(0);
var attackPercent = _TryGetFloatParam(1);
var bleedDuration = _TryGetIntParam(2);
var bleedDamageRate = _TryGetFloatParam(3);
var bleedDamageRate2 = _TryGetFloatParam(4);
var isSecondAttack = false;
var lastAttackUnit = creator.controlData.continueSkillData.hitUnit;
var nowAttackUnit = owner;
if (lastAttackUnit == nowAttackUnit)
{
isSecondAttack = true;
}
else
{
creator.controlData.continueSkillData.hitUnit = nowAttackUnit;
}
var damageValue = Mathf.RoundToInt(fixValue + creator.fightData.attack * attackPercent);
var oldHp = owner.aliveData.hpAndShield;
owner.TakeNormalDamage(configData.AttackPowerLevel,damageValue, creator, false);
var newHp = owner.aliveData.hpAndShield;
var realDamage = oldHp - newHp;
var bleedScale = isSecondAttack ? bleedDamageRate2 : bleedDamageRate;
var bleedDamage = Mathf.RoundToInt(realDamage * bleedScale);
var createBuff = BuffManager.instance.CreateBuffById( creator, CodeDefine.BLEED_BUFF_ID);
if (createBuff == null)
{
DebugUtil.LogError("无法创建流血buff:" + CodeDefine.BLEED_BUFF_ID);
return;
}
var wrapBuff = createBuff as BuffDelayDamage;
if (wrapBuff == null)
{
DebugUtil.LogError("流血buff类型错误:" + CodeDefine.BLEED_BUFF_ID);
return;
}
wrapBuff.damageValue = bleedDamage;
wrapBuff.ForceSetExistTime(bleedDuration);
owner.buffManager.AddBuff(wrapBuff);
}
}
}