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); } } }