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(); } }
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); }
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); }
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(); } }
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); }