using System.Collections.Generic; using System.Linq; using Wizard; using Wizard.Battle.View.Vfx; internal class Skill_loop_skill : SkillBase { public List LoopSkillList { get; private set; } public Skill_loop_skill(SkillParameter skillPrm, string option) : base(skillPrm, option) { LoopSkillList = new List(); } public override VfxWithLoading Start(CallParameter parameter) { VfxWithLoadingSequential result = VfxWithLoadingSequential.Create(); BattlePlayerReadOnlyInfoPair playerInfoPair = new BattlePlayerReadOnlyInfoPair(base.SkillPrm.ownerCard.SelfBattlePlayer, base.SkillPrm.ownerCard.OpponentBattlePlayer); SkillConditionCheckerOption skillConditionCheckerOption = new SkillConditionCheckerOption(); skillConditionCheckerOption.IsSkipPpCheck = true; int num = base.OptionValue.GetInt(SkillFilterCreator.ContentKeyword.loop_range_before_this_skill); int count = base.SkillPrm.ownerCard.Skills.IndexOf(this) - num; num++; for (int i = 0; i < parameter.targetCards.Count(); i++) { IEnumerable source = parameter.targetCards.ElementAt(i).Skills.Skip(count).Take(num); bool flag = false; for (int j = 0; j < source.Count(); j++) { SkillBase skillBase = source.ElementAt(j); bool flag2 = skillBase.CheckCondition(playerInfoPair, skillConditionCheckerOption, isPrePlay: false); if (skillBase.IsCheckLastTarget()) { flag2 = flag2 && flag; } else { flag = flag2; } if (flag2) { LoopSkillList.Add(skillBase); } } } return result; } }