NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Buff/Impl/BuffBulletDamage3.cs

53 lines
1.7 KiB
C#

using Gameplay.Skill;
using UnityEngine;
namespace Gameplay.Buff
{
public class BuffBulletDamage3 : 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);
if (_CheckIsFirstTime())
{
// 第一次攻击
var scaleValueForFirstTime = _TryGetFloatParam(5);
finalDamage *= scaleValueForFirstTime;
AddHitUnitId();
}
// 造成伤害
owner.TakeNormalDamage(configData.AttackPowerLevel,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);
}
}
}