public static void ActionEffect(eTrickActionTiming action_timing, Unit target, int grid_x, int grid_y, RandXorshift rand, LogMapTrick log_mt = null) { if (target == null) { return; } TrickData trick_data = TrickData.SearchEffect(grid_x, grid_y); if (trick_data == null || !trick_data.checkTarget(target, false) || target.IsJump) { return; } if (log_mt != null) { log_mt.TrickData = trick_data; log_mt.TargetInfoLists.Clear(); } List <Unit> target_lists = new List <Unit>(); if (trick_data.checkTarget(target, true)) { target_lists.Add(target); } TrickData.addTargetAreaEff(grid_x, grid_y, trick_data, target_lists); switch (action_timing) { case eTrickActionTiming.TURN_START: trick_data.actionEffectTurnStart(target_lists, rand); break; case eTrickActionTiming.TURN_END: trick_data.actionEffectTurnEnd(target_lists, rand, log_mt); trick_data.decActionCount(); break; } }
private bool actionEffectTurnEnd(List <Unit> target_lists, RandXorshift rand, LogMapTrick log_mt) { if (target_lists == null) { return(false); } bool flag = false; using (List <Unit> .Enumerator enumerator = target_lists.GetEnumerator()) { while (enumerator.MoveNext()) { Unit current = enumerator.Current; LogMapTrick.TargetInfo log_mt_ti = (LogMapTrick.TargetInfo)null; if (log_mt != null) { log_mt_ti = new LogMapTrick.TargetInfo(); log_mt_ti.Target = current; } switch (this.mTrickParam.DamageType) { case eTrickDamageType.DAMAGE: flag |= this.actionDamage(current, log_mt_ti); break; case eTrickDamageType.HEAL: flag |= this.actionHeal(current, log_mt_ti); break; } flag |= this.actionCond(current, rand, log_mt_ti); flag |= this.actionKnockBack(current, rand, log_mt_ti); if (log_mt != null) { log_mt.TargetInfoLists.Add(log_mt_ti); } } } return(flag); }