diff --git a/src/board.c b/src/board.c
index 610c685..55484c6 100644
--- a/src/board.c
+++ b/src/board.c
@@ -98,7 +98,7 @@ static void board_stealCreds(char* str) {
 
   if(board_fail()) return;
 
-  player_credits += p->credits;
+  player->credits += p->credits;
   p->credits = 0;
   board_update(); // Update the lack of credits.
   player_message("You manage to steal the ship's Scred.");
diff --git a/src/land.c b/src/land.c
index 5b35653..51ea672 100644
--- a/src/land.c
+++ b/src/land.c
@@ -70,7 +70,7 @@ static void shipyard_yoursClose(char* str);
 static void shipyard_yoursUpdate(char* str);
 static void shipyard_yoursChange(char* str);
 static void shipyard_yoursTransport(char* str);
-static char shipyard_yoursTransportPrice(char* shipname);
+static int  shipyard_yoursTransportPrice(char* shipname);
 // Spaceport bar.
 static void spaceport_bar(void);
 static void spaceport_bar_close(char* str);
@@ -160,7 +160,7 @@ static void commodity_buy(char* str) {
   comname = toolkit_getList(secondary_wid, "lstGoods");
   com = commodity_get(comname);
 
-  if(player_credits <= q * com->medium) {
+  if(player->credits <= q * com->medium) {
     toolkit_alert("Not enough Scred!");
     return;
   }
@@ -170,7 +170,7 @@ static void commodity_buy(char* str) {
   }
 
   q = pilot_addCargo(player, com, q);
-  player_credits -= q * com->medium;
+  player->credits -= q * com->medium;
   commodity_update(NULL);
 }
 
@@ -185,7 +185,7 @@ static void commodity_sell(char* str) {
   com = commodity_get(comname);
 
   q = pilot_rmCargo(player, com, q);
-  player_credits += q * com->medium;
+  player->credits += q * com->medium;
   commodity_update(NULL);
 }
 
@@ -260,7 +260,7 @@ static void outfits_update(char* str) {
   (void)str;
   char* outfitname;
   Outfit* outfit;
-  char buf[80], buf2[16], buf3[16];
+  char buf[128], buf2[16], buf3[16];
 
   outfitname = toolkit_getList(secondary_wid, "lstOutfits");
   outfit = outfit_get(outfitname);
@@ -269,8 +269,8 @@ static void outfits_update(char* str) {
 
   window_modifyText(secondary_wid, "txtDescription", outfit->description);
   credits2str(buf2, outfit->price,  2);
-  credits2str(buf3, player_credits, 2);
-  snprintf(buf, 80,
+  credits2str(buf3, player->credits, 2);
+  snprintf(buf, 128,
            "%s\n"
            "%s\n"
            "%d\n"
@@ -319,13 +319,13 @@ static void outfits_buy(char* str) {
     return;
   }
   // Not enough $$.
-  else if(q*(int)outfit->price >= player_credits) {
-    credits2str(buf, q*outfit->price - player_credits, 2);
+  else if(q*(int)outfit->price >= player->credits) {
+    credits2str(buf, q*outfit->price - player->credits, 2);
     toolkit_alert("You need %s more SCred.", buf);
     return;
   }
 
-  player_credits -= outfit->price * pilot_addOutfit(player, outfit,
+  player->credits -= outfit->price * pilot_addOutfit(player, outfit,
                                                     MIN(q, outfit->max));
   outfits_update(NULL);
 }
@@ -347,7 +347,7 @@ static void outfits_sell(char* str) {
     return;
   }
 
-  player_credits += outfit->price * pilot_rmOutfit(player, outfit, q);
+  player->credits += outfit->price * pilot_rmOutfit(player, outfit, q);
   outfits_update(NULL);
 }
 
@@ -455,7 +455,7 @@ static void shipyard_update(char* str) {
   window_modifyText(secondary_wid, "txtDescription", ship->description);
 
   credits2str(buf2, ship->price,   2);
-  credits2str(buf3, player_credits, 2);
+  credits2str(buf3, player->credits, 2);
   snprintf(buf, 80,
            "%s\n"
            "%s\n"
@@ -571,11 +571,10 @@ static void shipyard_yoursUpdate(char* str) {
   // Update the image.
   window_modifyImage(terciary_wid, "imgTarget", ship->ship->gfx_target);
 
-  credits2str(buf2, (strcmp(loc, land_planet->name)==0) ? 0 :
-              shipyard_yoursTransportPrice(shipname), 2); // Transport.
+  credits2str(buf2, shipyard_yoursTransportPrice(shipname), 2); // Transport.
 
   credits2str(buf3, 0, 2); // Sell price.
-  snprintf(buf, 80,
+  snprintf(buf, 256,
       "%s\n"
       "%s\n"
       "%s\n"
@@ -653,11 +652,15 @@ static void shipyard_yoursTransport(char* str) {
     return;
   }
 
+  // Success.
   player->credits -= price;
   player_setLoc(shipname, land_planet->name);
+
+  // Update the window to reflect the change.
+  shipyard_yoursUpdate(NULL);
 }
 
-static char shipyard_yoursTransportPrice(char* shipname) {
+static int shipyard_yoursTransportPrice(char* shipname) {
   char* loc;
   Pilot* ship;
 
@@ -666,7 +669,7 @@ static char shipyard_yoursTransportPrice(char* shipname) {
   if(strcmp(loc, land_planet->name)==0) // Already here.
     return 0;
 
-  return ship->solid->mass*500;
+  return (int)ship->solid->mass*500;
 }
 
 // Spaceport bar.
diff --git a/src/player.c b/src/player.c
index 97abdf8..204725c 100644
--- a/src/player.c
+++ b/src/player.c
@@ -32,13 +32,13 @@ Pilot* player = NULL; // extern in pilot.h
 static Ship* player_ship = NULL; // Temp ship to hold when naming it.
 // More hacks.
 static double player_px, player_py, player_vx, player_vy, player_dir;
+static int player_credits = 0;  // Temp hack.
 // Player pilot stack - Ships she owns.
 static Pilot** player_stack = NULL;
 static char** player_lstack = NULL; // Names of the planet the ships are at.
 static int player_nstack    = 0;
 // Player global properties.
 char* player_name = NULL;       // Player name.
-int player_credits = 0;         // Ze monies.
 int combat_crating = 0;         // Ze rating.
 unsigned int player_flags = 0;  // Player flags.
 // Input.c
@@ -314,6 +314,7 @@ static void player_newShipMake(char* name) {
     player_lstack = realloc(player_lstack, sizeof(char*)*(player_nstack+1));
     player_lstack[player_nstack] = strdup(land_planet->name);
     player_nstack++;
+    if(!player_credits) player_credits = player->credits;
     pilot_destroy(player);
   }
 
@@ -327,6 +328,10 @@ static void player_newShipMake(char* name) {
                player_dir, &vp, &vv, PILOT_PLAYER);
 
   gl_bindCamera(&player->solid->pos); // Set opengl camera.
+
+  // Moniez!!
+  player->credits = player_credits;
+  player_credits = 0;
 }
 
 // Swaps the current ship with shipname.
@@ -692,7 +697,7 @@ void player_render(void) {
   gl_print(NULL, gui.misc.x + 8, j,
            &cConsole, "SCreds:");
 
-  credits2str(str, player_credits, 2);
+  credits2str(str, player->credits, 2);
 
   i = gl_printWidth(&gl_smallFont, str);
   gl_print(&gl_smallFont, gui.misc.x + gui.misc.w - 8 - i, j,
diff --git a/src/player.h b/src/player.h
index 2e67be2..826c153 100644
--- a/src/player.h
+++ b/src/player.h
@@ -21,7 +21,6 @@
 extern Pilot* pilot;
 extern char* player_name;
 extern unsigned int player_flags;
-extern int player_credits;
 extern int combat_crating;
 
 // Enums.