public static void evaluateLocation(Player player, int roll)
        {
            Tile location = _theBoard[player.Location];

            if (location == Tile.GoToJail) {
                player.sendToJail();
            } else if (location == Tile.LuxuryTax) {
                player.payFlatFee((int)Amounts.LuxuryTax);
            } else if (location == Tile.IncomeTax) {
                UnhandledDebtList.addTaxesDebt(player);
            } else if (location == Tile.Chance) {
                int ChestCard = Card.GetChanceCard(player);
                Irc.Output(Irc.getChannel(), ".chance " + player.Name + " " + ChestCard.ToString());
                Card.RunChanceCard(player);
            } else if (location == Tile.CommunityChest) {
                int card = Card.GetCommunityChestCard(player);
                Irc.Output(Irc.getChannel(), ".communityChest " + player.Name + " " + card.ToString());
                Card.RunCommunityChestCard(player);
            } else if ((location == Tile.FreeParking) || (location == Tile.Jail) || (location == Tile.Go)) {
                return;
            } else {
                TitleDeed titleDeed = Property.getTitleDeed(location);
                if (titleDeed != null) {
                    Player owner = titleDeed.Owner;

                    if (owner == null) {
                        Irc.Output(Irc.getChannel(), ".offer " + player.Name + " " + (int)titleDeed.Name + " " + titleDeed.Cost);
                    } else if (owner != player) {
                        int rent = titleDeed.getRent(roll);
                        if (rent != 0) {
                            player.payPlayer(rent, owner);
                        }
                    }
                }
            }
        }
        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;
            }
        }