Exemple #1
0
        public override TaskState Process()
        {
            switch (Type)
            {
            case EntityType.DECK:

                Playables.ForEach(p => Generic.ShuffleIntoDeck.Invoke(p.Controller, p));
                return(TaskState.COMPLETE);

            case EntityType.HAND:
                Playables.ForEach(p => Generic.AddHandPhase.Invoke(p.Controller, p));
                return(TaskState.COMPLETE);

            case EntityType.OP_HAND:
                Playables.ForEach(p => Generic.AddHandPhase.Invoke(p.Controller, p));
                return(TaskState.COMPLETE);

            case EntityType.OP_DECK:
                Playables.ForEach(p => Generic.ShuffleIntoDeck.Invoke(p.Controller, p));
                return(TaskState.COMPLETE);

            default:
                throw new NotImplementedException();
            }
        }
Exemple #2
0
        public override TaskState Process()
        {
            if (Controller.BoardZone.IsFull || Playables.Count == 0)
            {
                return(TaskState.STOP);
            }

            int space = Controller.BoardZone.MaxSize - Controller.BoardZone.Count;

            if (space < Playables.Count)
            {
                Playables = Playables.Take(space).ToList();
            }

            Playables.ForEach(p =>
            {
                if (RemoveFromZone)
                {
                    p.Zone.Remove(p);
                }

                Generic.SummonBlock.Invoke(Controller, (Minion)p, -1);
            });
            return(TaskState.COMPLETE);
        }
Exemple #3
0
        public override TaskState Process()
        {
            if (Playables.Count == 0)
            {
                return(TaskState.STOP);
            }

            var list = new List <IPlayable>();

            Playables.ForEach(p =>
            {
                list.Add(Generic.DrawBlock(Controller, p));
            });
            Playables = list;
            return(TaskState.COMPLETE);
        }
Exemple #4
0
        public override TaskState Process()
        {
            switch (PlayType)
            {
            case PlayType.SPELL:
                Playables.ForEach(p =>
                {
                    if (p is Spell && (p.Zone == null || Generic.RemoveFromZone(Controller, p)))
                    {
                        Generic.CastSpell.Invoke(Controller, (Spell)p, null, 0);
                    }
                });
                return(TaskState.COMPLETE);

            default:
                throw new NotImplementedException();
            }
        }
Exemple #5
0
        public override TaskState Process()
        {
            var result = new List <IPlayable>();

            switch (Type)
            {
            case EntityType.TARGET:
                var target = Target as IPlayable;
                if (target == null)
                {
                    return(TaskState.STOP);
                }
                for (var i = 0; i < Amount; i++)
                {
                    result.Add(Opposite ?
                               Entity.FromCard(target.Controller.Opponent, Cards.FromId(target.Card.Id)) :
                               Entity.FromCard(Controller, Cards.FromId(target.Card.Id)));
                }
                break;

            case EntityType.SOURCE:
                var source = Source as IPlayable;
                if (source == null)
                {
                    return(TaskState.STOP);
                }
                for (var i = 0; i < Amount; i++)
                {
                    result.Add(Opposite ?
                               Entity.FromCard(source.Controller.Opponent, Cards.FromId(source.Card.Id)) :
                               Entity.FromCard(Controller, Cards.FromId(source.Card.Id)));
                }
                break;

            case EntityType.STACK:
                if (Playables.Count < 1)
                {
                    return(TaskState.STOP);
                }
                Playables.ForEach(p =>
                {
                    for (var i = 0; i < Amount; i++)
                    {
                        result.Add(Opposite ?
                                   Entity.FromCard(p.Controller.Opponent, Cards.FromId(p.Card.Id)) :
                                   Entity.FromCard(Controller, Cards.FromId(p.Card.Id)));
                    }
                });
                break;

            case EntityType.OP_HERO_POWER:
                result.Add(Entity.FromCard(Controller, Cards.FromId(Controller.Opponent.Hero.Power.Card.Id)));
                break;

            default:
                throw new NotImplementedException();
            }

            Playables = result;
            return(TaskState.COMPLETE);
        }