2021-04-08 20:09:59 +08:00
|
|
|
|
using Cal;
|
|
|
|
|
namespace ET
|
|
|
|
|
{
|
|
|
|
|
public class SkillOptionLogic_反伤 : SkillOptionLogicBase
|
|
|
|
|
{
|
|
|
|
|
public override SkillOptionType skillOptionType => SkillOptionType.反伤;
|
|
|
|
|
public override SkillOptionBase skillOptionBase { get; set; }
|
|
|
|
|
|
|
|
|
|
SkillOption_反伤 skillOption;
|
|
|
|
|
public override void HandleEvent(ISkillSender skillSender)
|
|
|
|
|
{
|
|
|
|
|
skillOption = skillOptionBase.As<SkillOption_反伤>();
|
2023-09-07 00:06:37 +08:00
|
|
|
|
SelectTargetHelper.GetTarget(skillOption.selectTarget, skillSender, Action);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async ETTask Action(Unit target, ISkillSender skillSender)
|
|
|
|
|
{
|
|
|
|
|
if (skillSender is not ModifierSkillSender modifierSkillSender)
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
2023-09-07 00:06:37 +08:00
|
|
|
|
Log.Error($"skillSender is not modifierSkillSender");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//反伤伤害 受击者
|
|
|
|
|
Unit attacker = skillSender.caster;
|
|
|
|
|
//反伤伤害 发起者
|
|
|
|
|
Unit beAtker = modifierSkillSender.target;
|
|
|
|
|
if (!beAtker)
|
|
|
|
|
return;
|
|
|
|
|
AttackComponent attackComponent = attacker.GetComponent<AttackComponent>();
|
|
|
|
|
attackComponent.isFirstAtk = false;
|
|
|
|
|
BallisticData damageData = attackComponent.GetAttackData();
|
|
|
|
|
if (!SkillHelper.GetParam(this.skillOption.param, skillSender.skillConfigId, out float value))
|
|
|
|
|
return;
|
|
|
|
|
damageData.ChangeValue(damageData.value * value / 100);
|
|
|
|
|
beAtker.GetComponent<AttackComponent>().AttackTarget(attacker, damageData, skillSender, false);
|
2021-04-08 20:09:59 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|