using Gameplay.Common; using Gameplay.Unit.Data; namespace Gameplay.Buff { using UnityEngine; public class BuffBulletDamage1 : 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 typeScale = _GetScaleForUnitType(); finalDamage *= typeScale; // 造成伤害 owner.TakeNormalDamage(Mathf.CeilToInt(finalDamage), sender, false); } private float _GetScaleForUnitType() { var scaleValue1 = _TryGetFloatParam(2, 1); var scaleValue2 = _TryGetFloatParam(3, 1); var scaleValue3 = _TryGetFloatParam(4, 1); // 如果目标是人形还要进行增伤 if (owner.gameunitType == EGameUnitType.Character) { return scaleValue1; } // 如果目标是载具还要进行增伤 if (owner.gameunitType == EGameUnitType.Vehicle) { return scaleValue2; } // 如果目标是建筑还要进行增伤 if (owner.gameunitType == EGameUnitType.Building) { return scaleValue3; } if (owner.gameunitType == EGameUnitType.Summon) { var unitSummon = owner as Summon.BaseSummon; if (unitSummon == null) { return 1f; } if (unitSummon.subUnitType == EGameUnitType.Character) { return scaleValue1; } if (unitSummon.subUnitType == EGameUnitType.Vehicle) { return scaleValue2; } if (unitSummon.subUnitType == EGameUnitType.Building) { return scaleValue3; } } return 1f; } } }