using Gameplay.Common; using Gameplay.Skill; using UnityEngine; namespace Gameplay.Buff { public class BuffBulletDamage3 : 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; } if (_CheckIsFirstTime()) { // 第一次攻击 var scaleValueForFirstTime = _TryGetFloatParam(5); finalDamage *= scaleValueForFirstTime; AddHitUnitId(); } // 造成伤害 owner.TakeNormalDamage(Mathf.CeilToInt(finalDamage), sender, false); } private bool _CheckIsFirstTime() { var skill = SkillManager.instance.GetUnitSkillManager(creator).positiveSkill; var ownerUnitId = owner.GetID(); if (skill.cacheHitUnitIds.Contains(ownerUnitId)) { return false; } return true; } public void AddHitUnitId() { var skill = SkillManager.instance.GetUnitSkillManager(creator).positiveSkill; var unitId = owner.GetID(); skill.cacheHitUnitIds.Add(unitId); } } }