public static void PerformSpaceActions(int fiPlayerNumber, int fiPosition)
 {
     if (Property[fiPosition].ColorNum == -1) {							// If property is non-purchasable
         switch (Property[fiPosition].Name) {
             case "Go":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON GO!";
                 Board.GameLog = "      COLLECT $200";
                 Player[fiPlayerNumber].Cash += 200;
                 break;
             case "Community Chest":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON COMMUNITY CHEST! DRAW CARD:";
                 string fsCommunityChestCard;
                 fsCommunityChestCard = CommunityChestDeck.DrawCard();
                 Board.GameLog = "      " + fsCommunityChestCard;
                 ExecuteCardDesc("Community Chest", fsCommunityChestCard, fiPlayerNumber);
                 break;
             case "Income Tax":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON INCOME TAX!";
                 Player[fiPlayerNumber].Cash -= 200;
                 if (Config.FreeParking == true) {
                     Board.GameLog = "      PAY $200 TO FREE PARKING";
                     FreeParkingCash += 200;
                 } else {
                     Board.GameLog = "      PAY $200";
                 }
                 break;
             case "Chance":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON CHANCE! DRAW CARD:";
                 string fsChanceCard;
                 fsChanceCard = ChanceDeck.DrawCard();
                 Board.GameLog = "      " + fsChanceCard;
                 ExecuteCardDesc("Chance", fsChanceCard, fiPlayerNumber);
                 break;
             case "Just Visiting":
                 break;
             case "Free Parking":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON FREE PARKING!";
                 if (Config.FreeParking == true) {
                     Board.GameLog = "      COLLECT " + FreeParkingCash.ToString("C0");
                     Player[fiPlayerNumber].Cash += FreeParkingCash;
                     if (Config.FreeParking500 == true) {
                         FreeParkingCash = 500;
                         Board.GameLog = "      FREE PARKING RESET TO $500";
                     } else {
                         FreeParkingCash = 0;
                         Board.GameLog = "      FREE PARKING RESET TO $0";
                     }
                 }
                 break;
             case "Luxury Tax":
                 Board.GameLog = "   Player" + fiPlayerNumber.ToString() + " LANDS ON LUXURY TAX!";
                 Player[fiPlayerNumber].Cash -= 75;
                 if (Config.FreeParking == true) {
                     Board.GameLog = "      PAY $75 TO FREE PARKING";
                     FreeParkingCash += 75;
                 } else {
                     Board.GameLog = "      PAY $75";
                 }
                 break;
         }
     } else {
         // If property is a purchasable type
         if (Property[fiPosition].Owner == -1) {
             // If Property is Unowned
             StrategyClass Strategy = new StrategyClass(Player[fiPlayerNumber]);
             if (Strategy.BuyProperty(fiPosition) == true) {
                 PlayerBuysProperty(fiPlayerNumber, fiPosition);
             }
         } else {
             if (Property[fiPosition].Owner != fiPlayerNumber) {
                 // If landed on someone else's property
                 PlayerPaysRent(fiPlayerNumber, fiPosition);
             }
         }
     }
 }
 public static void NextTurn()
 {
     KickBrokePlayers();
     Board.GameLog = "   Player" + PlayerTurn.ToString() + " STATUS: CASH=" + Player[PlayerTurn].Cash.ToString("C0") + " ASSETS=" + Player[PlayerTurn].Assets.ToString("C0");
     StrategyClass Strategy = new StrategyClass(Player[PlayerTurn]);
     Strategy.BuyPropertyCutOffPct = 25;
     // Evaluate if any preturn trades should be run.
     Strategy.RunPreturnOptions();
     Random Random = new Random(RandomSeed);
     //int ciDice1, ciDice2, ciTotal;
     ciDice1 = Random.Next(1, 7);
     ciDice2 = Random.Next(1, 7);
     ciTotal = ciDice1 + ciDice2;
     //
     //	PLAYER IN JAIL
     //
     if (Player[PlayerTurn].CurrentPosition == 30) {						// If Player is in Jail
         if (Player[PlayerTurn].TurnInJail < 3) {						// If player is not ready to get out
             if (ciDice1 == ciDice2) {
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!";
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")";
                 Player[PlayerTurn].TurnInJail = 0;
                 Player[PlayerTurn].CurrentPosition = 10;
                 Property[30].PlayerOffSpace(PlayerTurn);
                 DoublesCount = 0;
                 MovePlayerAhead(PlayerTurn, ciTotal);
             } else {													// Player fails at rolling doubles and stays for another turn.
                 Board.GameLog = "Player" + PlayerTurn.ToString() + " FAILED TO ROLL DOUBLES (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!";
                 Player[PlayerTurn].TurnInJail++;
             }
         } else if (Player[PlayerTurn].TurnInJail == 3) {				// If player is ready to get out this turn
             if (ciDice1 == ciDice2) {															// Player rolls doubles to get out of jail
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!";
                 DoublesCount = 0;
             } else {													// Player fails at rolling doubles and pays $50
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " FAILED TO ROLL DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!";
                 Player[PlayerTurn].Cash -= 50;
                 if (Config.FreeParking == true) {
                     Board.GameLog = "      PAY $50 TO FREE PARKING";
                     FreeParkingCash += 50;
                 } else {
                     Board.GameLog = "      PAY $50";
                 }
             }
             Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")";
             Player[PlayerTurn].TurnInJail = 0;
             Player[PlayerTurn].CurrentPosition = 10;
             Property[30].PlayerOffSpace(PlayerTurn);
             MovePlayerAhead(PlayerTurn, ciTotal);
         }
         if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; }	// Set Next Player's Turn
     //
     //	PLAYER NOT IN JAIL
     //
     } else {															// If Player is not in Jail
         if (ciDice1 == ciDice2) {										// If Player rolled doubles
             if (DoublesCount < 2) {										// If first or second time rolling doubles
                 DoublesCount++;											// Increase Doubles Counter
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (DOUBLE " + ciDice1.ToString() + "s, ROLL " + DoublesCount.ToString() + ")";
                 MovePlayerAhead(PlayerTurn, ciTotal);					// Move Player Ahead
             } else if (DoublesCount == 2) {								// If third time rolling doubles
                 DoublesCount++;
                 Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (DOUBLE " + ciDice1.ToString() + "s, ROLL " + DoublesCount.ToString() + ") GO TO JAIL";
                 DoublesCount = 0;										// Reset DoubleCounter to 0
                 MovePlayerToJail(PlayerTurn);							// Send Player to Jail
                 if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; }		// Set Next Player's Turn
             }
         } else {														// If Player did not roll doubles
             Board.GameLog = "   Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")";
             DoublesCount = 0;											// Reset Doubles count to 0
             MovePlayerAhead(PlayerTurn, ciTotal);						// Move Player Ahead
             if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; }			// Set Next Player's Turn
         }
     }
     RandomSeed = Random.Next(1, int.MaxValue);
     Board.GameLog = "Player" + PlayerTurn.ToString() + "'s Turn:";
 }