예제 #1
0
 public override void OnPlay(State state, Player player)
 {
     Random r = new Random();
     int skips = r.Next(1, state.Players.Count - 1);
     if (skips == 1) state.Send(String.Format(Messages.PlayS, state.Players.Next));
     else state.Send(String.Format(Messages.PlaySX, skips));
     state.NextTurnPush = skips + 1;
 }
예제 #2
0
        public override void OnPlay(State state, Player player)
        {
            state.Send(this + "\u000f | " + String.Format(Messages.DrawsFour, state.Players.Next));
            state.DealCards(state.Players.Next, 4);

            state.Send("Also, " + String.Format(Messages.ExplWild, player));
            state.NextInState = InputState.Wild;
            state.NextTurnPush = 0;
        }
예제 #3
0
        public override void OnPlay(State state, Player player)
        {
            state.Send(this + "\u000f | " + Messages.ExplWmd3);
            foreach (Player p in state.Players) {
                if (p == state.Players.Current) continue;
                state.DealCards(p, 3);
            }

            state.Send("Also, " + String.Format(Messages.ExplWild, player));
            state.NextInState = InputState.Wild;
            state.NextTurnPush = 0;
        }
예제 #4
0
        public override void OnDraw(State state, Player player)
        {
            player.Hand.Remove(this);
            state.Send(String.Format(Messages.DrawEffect, player) + " "
                + this + "\u000f | " + String.Format(Messages.Expl_Q, player));

            state.NextTopCard = this;
        }
        public override void OnDraw(State state, Player player)
        {
            player.Hand.Remove(this);
            state.Send(String.Format(Messages.DrawEffect, player) + " "
                + this + "\u000f | " + String.Format(Messages.ExplSid3, player));

            state.DealCards(player, 3);
        }
예제 #6
0
        public override void OnDraw(State state, Player player)
        {
            player.Hand.Remove(this);

            Random r = new Random();
            state.Send(String.Format(Messages.DrawEffect, player) + " "
                + this + "\u000f | " + String.Format(Messages.Expl_RWD, player));
            if (r.Next(1) == 0) {
                // Good outcome
                state.Send(Messages.Draw_RWD_Good);
                state.Send(this + "\u000f | " + String.Format(Messages.ExplWild, player));
                state.NextInState = InputState.Wild;
            } else {
                // Bad outcome
                state.Send(Messages.Draw_RWD_Bad);
                state.DealCards(player, 5);
            }
        }
예제 #7
0
        public override void OnPlay(State state, Player player)
        {
            state.Send(this + "\u000f | " + Messages.ExplDH);
            List<Tuple<Player, int>> amounts = new List<Tuple<Player, int>>();
            // Get hand counts and remove contents
            foreach (Player p in state.Players) {
                amounts.Add(new Tuple<Player, int>(p, p.Hand.Count));
                state.DiscardPile.Add(p.Hand);
                p.Hand.Clear();
            }

            // Deal new cards
            foreach (var value in amounts) {
                state.DealCards(value.Item1, value.Item2);
            }
        }
        public override void OnDraw(State state, Player player)
        {
            player.Hand.Remove(this);
            state.Send(String.Format(Messages.DrawEffect, player) + " "
                + this + "\u000f | " +
                String.Format(Messages.Expl_3Dis, DispCard.Get(CardColor.Wild, CardFace.SID3), player));

            int max = 3;
            if (player.Hand.Count < max) max = player.Hand.Count;
            Card[] withdraw = player.Hand.Draw(max);
            state.DiscardPile.Add(withdraw);
            string list = "";
            foreach (Card c in withdraw) list += " " + c.ToString();
            if (list.Length > 0) list = list.Substring(1);
            state.SendPriv(player.Nick, String.Format(Messages.Play_3Dis_Lose, list));

            state.NextTurnPush = 1;
        }
예제 #9
0
        public override void OnPlay(State state, Player player)
        {
            Random r = new Random();
            Player[] pool = state.Players.ToArray();
            Player victim;
            do {
                victim = pool[r.Next(pool.Length)];
            } while (victim == player);

            state.Send(String.Format(Messages.Play_EResultPub, player, victim));
            Card pc = player.Hand.Draw();
            Card vc = victim.Hand.Draw();
            player.Hand.Add(vc);
            victim.Hand.Add(pc);
            state.SendPriv(player.Nick, String.Format(Messages.Play_EResultPriv, pc, victim, vc));
            state.SendPriv(victim.Nick, String.Format(Messages.Play_EResultPriv, vc, player, pc));

            state.NextTopCard = null;
        }
예제 #10
0
 public override void OnPlay(State state, Player player)
 {
     state.Send(this + "\u000f | " + String.Format(Messages.Expl_E, player));
     state.NextTurnPush = 0;
 }
예제 #11
0
 public override void OnPlay(State state, Player player)
 {
     state.Send(String.Format(Messages.DrawsFour, state.Players.Next));
     state.DealCards(state.Players.Next, 4);
 }
예제 #12
0
 public override void OnPlay(State state, Player player)
 {
     state.NextTurnPush = 2;
     state.Send(String.Format(Messages.PlayS, state.Players.Next));
 }
예제 #13
0
 public override void OnPlay(State state, Player player)
 {
     state.Send(Messages.PlayR);
     state.Players.Reverse();
 }