示例#1
0
        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;
            }
        }
示例#2
0
        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);
        }