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