49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using Gameplay.Common;
|
|
using UnityEngine;
|
|
namespace Gameplay.Buff
|
|
{
|
|
public class BuffBulletDamage2 : BaseBuff
|
|
{
|
|
protected override void _OnTrigger()
|
|
{
|
|
base._OnTrigger();
|
|
|
|
var sender = creator;
|
|
var senderAttack = sender.fightData.attack;
|
|
var floatValueA = _TryGetFloatParam(0);
|
|
var floatValueB = _TryGetFloatParam(1);
|
|
var finalDamage = floatValueA + senderAttack * floatValueB;
|
|
|
|
var scaleValue1 = _TryGetFloatParam(2);
|
|
var scaleValue2 = _TryGetFloatParam(3);
|
|
var scaleValue3 = _TryGetFloatParam(4);
|
|
// 如果目标是人形还要进行增伤
|
|
if (owner.avatarType == EAvatarType.Human)
|
|
{
|
|
finalDamage *= scaleValue1;
|
|
}
|
|
// 如果目标是载具还要进行增伤
|
|
if (owner.avatarType == EAvatarType.Vehicle)
|
|
{
|
|
finalDamage *= scaleValue2;
|
|
}
|
|
// 如果目标是建筑还要进行增伤
|
|
if (owner.avatarType == EAvatarType.Building)
|
|
{
|
|
finalDamage *= scaleValue3;
|
|
}
|
|
|
|
var scaleValueForLowHp = _TryGetFloatParam(5);
|
|
var nowHp = owner.aliveData.currentHp;
|
|
var maxHp = owner.aliveData.maxHp;
|
|
var lossHp = maxHp - nowHp;
|
|
var lossHpRate = lossHp / maxHp;
|
|
finalDamage *= 1 + scaleValueForLowHp * lossHpRate;
|
|
|
|
// 造成伤害
|
|
owner.TakeNormalDamage(Mathf.CeilToInt(finalDamage), sender, false);
|
|
}
|
|
|
|
}
|
|
}
|