using System; using System.Linq; using Wizard; using Wizard.Battle.View.Vfx; public class SkillPreprocessTurnEndSkillAfterStop : SkillPreprocessSkillAfterStopBase { public SkillPreprocessTurnEndSkillAfterStop(string target) : base(target) { } protected override VfxBase OnStart(BattlePlayerPair playerPair, SkillBase skill, BattlePlayerBase battlePlayer, BattlePlayerBase battleEnemy, Func addTurnEndCallCountOnPlayerTurn, Func addTurnEndCallCountOnEnemyTurn) { Func callStopOnTurnEndSkillAfter = null; callStopOnTurnEndSkillAfter = delegate(SkillProcessor _) { if (!battleEnemy.IsSelfTurn) { return NullVfx.GetInstance(); } _callCount++; if ((_conditionFuncList.Count > 0 && _conditionFuncList.All((Func s) => s(playerPair, _callCount, _turnEndCallCount))) || _conditionFuncList.Count == 0) { BattlePlayerBase battlePlayerBase2 = battlePlayer; battlePlayerBase2.OnTurnEndSkillAfter = (Func)Delegate.Remove(battlePlayerBase2.OnTurnEndSkillAfter, callStopOnTurnEndSkillAfter); battlePlayer.OnTurnEnd -= addTurnEndCallCountOnPlayerTurn; battleEnemy.OnTurnEnd -= addTurnEndCallCountOnEnemyTurn; return StopSkill(skill, _); } return NullVfx.GetInstance(); }; BattlePlayerBase battlePlayerBase = battleEnemy; battlePlayerBase.OnTurnEndSkillAfter = (Func)Delegate.Combine(battlePlayerBase.OnTurnEndSkillAfter, callStopOnTurnEndSkillAfter); return NullVfx.GetInstance(); } }