53 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|