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, (target, skillSender) => { if (!(skillSender is ModifierSkillSender modifierSkillSender)) return; var modifierLogic = modifierSkillSender.modifierLogic; if (modifierLogic == null) return; BattleHelper.Calculate(SkillDamageType.护盾治疗, skillSender, target, skillOption.treatCalculate_Self, skillOption.treatCalculate_Target, out var data); modifierLogic.shield = MathHelper.RoundToInt(data.value); if (data.isCrit && skillOption.isCritEvent) { var dic = modifierLogic.modifierConfig.modifierEventDic; if (dic != null && dic.TryGetValue(ModifierEventCondition.当拥有modifier的单位暴击时, out var optionBaseList1)) foreach (var item in optionBaseList1) { var skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item); modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase); skillOptionLogicBase.HandleEvent(modifierSkillSender); } if (dic != null && dic.TryGetValue(ModifierEventCondition.当拥有modifier的单位被暴击时, out var optionBaseList2)) foreach (var item in optionBaseList2) { var skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item); modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase); skillOptionLogicBase.HandleEvent(modifierSkillSender); } } }); } } }