30 lines
994 B
C#
30 lines
994 B
C#
using UnityEngine;
|
|
namespace Gameplay.Buff
|
|
{
|
|
public class BuffBulletDamage4 : BaseBuff
|
|
{
|
|
|
|
protected override void _OnTrigger()
|
|
{
|
|
base._OnTrigger();
|
|
|
|
var paramA = _TryGetFloatParam(0);
|
|
var paramB = _TryGetFloatParam(1);
|
|
var paramC = _TryGetFloatParam(2);
|
|
var paramD = _TryGetFloatParam(3);
|
|
|
|
// 伤害公式
|
|
// 伤害 = (A * 攻击力 + B) * max(D, C * (1 - 敌方士气百分比))
|
|
var sender = creator;
|
|
var senderAttack = sender.fightData.attack;
|
|
var ownerMorale = owner.aliveData.currentMorale;
|
|
var maxMorale = owner.aliveData.maxMorale;
|
|
var moralePercent = ownerMorale / maxMorale;
|
|
var finalDamage = Mathf.FloorToInt((paramA * senderAttack + paramB) * Mathf.Max(paramD, paramC * (1 - moralePercent)));
|
|
owner.TakeNormalDamage(finalDamage, sender, false);
|
|
|
|
}
|
|
|
|
}
|
|
}
|