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