Example #1
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;
        }
        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;
        }