44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using UnityEngine;
|
|
namespace Gameplay.Buff
|
|
{
|
|
public class BuffBulletDamage13 : BaseBuff
|
|
{
|
|
|
|
protected override void _OnTrigger()
|
|
{
|
|
base._OnTrigger();
|
|
|
|
// 【固定数值,攻击力系数,低血量百分比,低血量增伤百分比,如果敌方血量高于自己最终伤害缩放】
|
|
var sender = creator;
|
|
var senderAttack = sender.fightData.attack;
|
|
|
|
var fixedValue = _TryGetFloatParam(0);
|
|
var attackValue = _TryGetFloatParam(1);
|
|
|
|
var lowHpPercent = _TryGetFloatParam(2);
|
|
var lowHpScale = _TryGetFloatParam(3);
|
|
|
|
var highHpScale = _TryGetFloatParam(4);
|
|
|
|
var damage = fixedValue + senderAttack * attackValue;
|
|
|
|
// 低血量增伤
|
|
var hpPercent = owner.aliveData.currentHp / owner.aliveData.maxHp;
|
|
if (hpPercent < lowHpPercent)
|
|
{
|
|
damage *= (1 + lowHpScale);
|
|
}
|
|
|
|
// 高血量增伤
|
|
var isHighHp = owner.aliveData.currentHp > sender.aliveData.currentHp;
|
|
if (isHighHp)
|
|
{
|
|
damage *= highHpScale;
|
|
}
|
|
|
|
owner.TakeNormalDamage(Mathf.CeilToInt(damage), sender, false);
|
|
}
|
|
|
|
}
|
|
}
|