using Gameplay.Common; using Gameplay.Unit.Data; using UnityEngine; namespace Gameplay.Buff { public class BuffBulletDamage2 : BaseDamageBuff { 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); finalDamage *= _GetScaleForUnitType(scaleValue1, scaleValue2, 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(configData.AttackPowerLevel,Mathf.CeilToInt(finalDamage), sender, false); } } }