43 lines
1.8 KiB
C#
43 lines
1.8 KiB
C#
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_反击>();
|
|
SelectTargetHelper.GetTarget(skillOption.selectTarget, skillSender, (target, skillSender) =>
|
|
{
|
|
if (skillSender is not ModifierSkillSender modifierSkillSender)
|
|
{
|
|
Log.Error($"skillSender is not modifierSkillSender");
|
|
return;
|
|
}
|
|
//反击时施法者是攻击者
|
|
var attacker = skillSender.caster;
|
|
//反击 发起者
|
|
var beAtker = modifierSkillSender.target;
|
|
int skillId = SkillHotfixHelper.GetNomalSkillId(beAtker);
|
|
var targetComponent = beAtker.GetComponent<TargetableUnitComponent>();
|
|
var oldTarget = targetComponent.currTarget;
|
|
|
|
//临时改变;
|
|
targetComponent.currTarget = attacker;
|
|
var skillLogic = beAtker.GetComponent<SkillMgrComponent>().GetSkill(skillId);
|
|
var attackerComponent = beAtker.GetComponent<AttackComponent>();
|
|
attackerComponent.isFirstAtk = false;
|
|
if (skillLogic == null) return;
|
|
skillLogic.HandleEvent(SkillEventCondition.当技能施法时, new SkillSender
|
|
{
|
|
skillLogic = skillLogic,
|
|
caster = beAtker,
|
|
});
|
|
targetComponent.currTarget = oldTarget;
|
|
});
|
|
}
|
|
}
|
|
} |