public static void RunChanceCard( Player player )
        {
            int location = 0;
            int move = 0;

            switch ( _chanceCard ) {
                case ChanceCards.AdvanceGo: player.moveAndEval(Move.Absolute, (int) Tile.Go); break;
                case ChanceCards.AdvanceBoardWalk: player.moveAndEval(Move.Absolute, (int) Tile.Boardwalk); break;
                case ChanceCards.AdvanceIllinoisAve: player.moveAndEval(Move.Absolute, (int) Tile.IllinoisAvenue); break;
                case ChanceCards.AdvanceNearestRailroad: {
                        location = player.Location;
                        location %= 10;

                        if ( location < 5 ) {
                            move = 5 - location;
                        } else {
                            move = 15 - location;
                        }

                        player.simpleMove(Move.Relative, move);

                        TitleDeed titleDeed = Property.getTitleDeed((Tile) player.Location);
                        Player railroadOwner = titleDeed.Owner;
                        if ( ( railroadOwner != player ) && ( railroadOwner != null ) ) {
                            //for RailRoad the parameter passed to getRent is ignored
                            player.payPlayer(( (Railroad) titleDeed ).getRent(-1) * 2, railroadOwner);
                        } else if ( railroadOwner == null ) {
                            Irc.Output(Irc.getChannel(), ".offer " + player.Name + " " + (int) titleDeed.Name + " " + titleDeed.Cost);
                        }
                    }; break;
                case ChanceCards.AdvanceNearestRailroad2: {
                        location = player.Location;
                        location %= 10;

                        if ( location < 5 ) {
                            move = 5 - location;
                        } else {
                            move = 15 - location;
                        }

                        player.simpleMove(Move.Relative, move);

                        TitleDeed titleDeed = Property.getTitleDeed((Tile) player.Location);
                        Player railroadOwner = titleDeed.Owner;
                        if ( ( railroadOwner != player ) && ( railroadOwner != null ) ) {
                            //for RailRoad the parameter passed to getRent is ignored
                            player.payPlayer(( (Railroad) titleDeed ).getRent(-1) * 2, railroadOwner);
                        } else if ( railroadOwner == null ) {
                            Irc.Output(Irc.getChannel(), ".offer " + player.Name + " " + (int) titleDeed.Name + " " + titleDeed.Cost);
                        }
                    }; break;
                case ChanceCards.AdvanceNearestUtility: {
                        if ( ( player.Location < (int) Tile.ElectricCompany ) || ( player.Location >= (int) Tile.WaterWorks ) ) {
                            player.simpleMove(Move.Absolute, (int) Tile.ElectricCompany);
                        } else {
                            player.simpleMove(Move.Absolute, (int) Tile.WaterWorks);
                        }

                        TitleDeed titleDeed = Property.getTitleDeed((Tile) player.Location);
                        Player utilityOwner = titleDeed.Owner;
                        if ( ( utilityOwner != player ) && ( utilityOwner != null ) ) {
                            int die1, die2;
                            die1 = Die.Roll();
                            die2 = Die.Roll();

                            player.payPlayer(( (Utility) titleDeed ).getRent(( die1 + die2 ) * 10), utilityOwner);
                        } else if ( utilityOwner == null ) {
                            Irc.Output(Irc.getChannel(), ".offer " + player.Name + " " + (int) titleDeed.Name + " " + titleDeed.Cost);
                        }
                    }; break;
                case ChanceCards.AdvanceStCharles: player.moveAndEval(Move.Absolute, (int) Tile.StCharlesPlace); break;
                case ChanceCards.Back3: player.moveAndEval(Move.Relative, -3); break;
                case ChanceCards.BankDivident: player.addCash(50); break;
                case ChanceCards.BuildingAndLoanMatures: player.addCash(150); break;
                case ChanceCards.ChairmanOfBoard: {
                    foreach ( Player otherPlayer in _players ) {
                        if ( otherPlayer != player ) {
                            if ( !otherPlayer.Bankrupt && !player.Bankrupt) {
                                player.payPlayer(50, otherPlayer);
                            }
                        }
                    }
                }; break;
                case ChanceCards.GeneralRepairs: {
                    player.payFlatFee(player.Hotels * 100 + player.Houses * 25);
                } break;
                case ChanceCards.GetOutOfJailCard: GetOutOfJailFreeCard.ChanceOwner = player; break;
                case ChanceCards.JailNoGo: player.sendToJail(); break;
                case ChanceCards.PoorTax: player.payFlatFee(15); break;
                case ChanceCards.RideOnReading: player.moveAndEval(Move.Absolute, (int)Tile.ReadingRailroad); break;
            }
        }
 public static void RunCommunityChestCard( Player player )
 {
     //the number is generated in the Get function
     switch ( _communityChestCard ) {
         case CommunityChestCards.AdvanceGo: player.moveAndEval(Move.Absolute, (int) Tile.Go); break;
         case CommunityChestCards.BankError: player.addCash(200); break;
         case CommunityChestCards.LifeInsuranceMatures: player.addCash(100); break;
         case CommunityChestCards.DoctorFee: player.payFlatFee(50); break;
         case CommunityChestCards.FromSaleOfStock: player.addCash(45); break;
         case CommunityChestCards.GetOutOfJailCard: GetOutOfJailFreeCard.CommunityChestOwner = player; break;
         case CommunityChestCards.GoJailNoCollect: player.sendToJail(); break;
         case CommunityChestCards.GrandOperaOpening: {
             foreach ( Player otherPlayer in _players ) {
                 if ( otherPlayer != player ) {
                     if ( !otherPlayer.Bankrupt && !player.Bankrupt) {
                         otherPlayer.payPlayer(50, player);
                     }
                 }
             }
         }; break;
         case CommunityChestCards.IncomeTaxRefund: player.addCash(20); break;
         case CommunityChestCards.Inherit: player.addCash(100); break;
         case CommunityChestCards.PayHospital: player.payFlatFee(100); break;
         case CommunityChestCards.ReceiveForServices: player.addCash(25); break;
         case CommunityChestCards.SchoolTax: player.payFlatFee(150); break;
         case CommunityChestCards.SecondPrizeBeautyContest: player.addCash(10); break;
         case CommunityChestCards.StreetRepairs: {
             player.payFlatFee(player.Hotels * 115 + player.Houses * 40);
         }; break;
         case CommunityChestCards.XMASFundMatures: player.addCash(100); break;
     }
 }