(svn r11036) [NoAI] -Sync: with trunk r10774:11035. noai
authorrubidium
Sun, 02 Sep 2007 11:17:33 +0000
branchnoai
changeset 9701 d1ac22c62f64
parent 9700 e442ce398e83
child 9702 e782b59f1f6a
(svn r11036) [NoAI] -Sync: with trunk r10774:11035.
config.lib
src/ai/api/ai_company.cpp
src/aircraft.h
src/aircraft_cmd.cpp
src/aircraft_gui.cpp
src/articulated_vehicles.cpp
src/autoreplace_cmd.cpp
src/autoreplace_gui.cpp
src/blitter/32bpp_base.cpp
src/blitter/8bpp_base.cpp
src/build_vehicle_gui.cpp
src/callback_table.cpp
src/cargopacket.cpp
src/cargopacket.h
src/clear_cmd.cpp
src/command.cpp
src/date.cpp
src/debug.cpp
src/depot.cpp
src/depot.h
src/depot_gui.cpp
src/disaster_cmd.cpp
src/dummy_land.cpp
src/economy.cpp
src/elrail.cpp
src/engine.h
src/fios.cpp
src/functions.h
src/gfx.cpp
src/gfx.h
src/group.h
src/group_cmd.cpp
src/group_gui.cpp
src/gui.h
src/industry.h
src/industry_cmd.cpp
src/industry_map.h
src/lang/american.txt
src/lang/brazilian_portuguese.txt
src/lang/bulgarian.txt
src/lang/catalan.txt
src/lang/croatian.txt
src/lang/czech.txt
src/lang/danish.txt
src/lang/dutch.txt
src/lang/english.txt
src/lang/esperanto.txt
src/lang/estonian.txt
src/lang/finnish.txt
src/lang/french.txt
src/lang/galician.txt
src/lang/german.txt
src/lang/hungarian.txt
src/lang/icelandic.txt
src/lang/italian.txt
src/lang/japanese.txt
src/lang/korean.txt
src/lang/lithuanian.txt
src/lang/norwegian_bokmal.txt
src/lang/norwegian_nynorsk.txt
src/lang/piglatin.txt
src/lang/polish.txt
src/lang/portuguese.txt
src/lang/romanian.txt
src/lang/russian.txt
src/lang/simplified_chinese.txt
src/lang/slovak.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/swedish.txt
src/lang/traditional_chinese.txt
src/lang/turkish.txt
src/lang/ukrainian.txt
src/lang/unfinished/afrikaans.txt
src/lang/unfinished/frisian.txt
src/lang/unfinished/greek.txt
src/lang/unfinished/latvian.txt
src/macros.h
src/main_gui.cpp
src/map.cpp
src/minilzo.cpp
src/misc.cpp
src/misc/strapi.hpp
src/misc_gui.cpp
src/music/win32_m.cpp
src/network/network.cpp
src/network/network_gui.cpp
src/network/network_server.cpp
src/newgrf.cpp
src/newgrf_engine.cpp
src/newgrf_house.cpp
src/newgrf_industries.cpp
src/newgrf_industrytiles.cpp
src/newgrf_station.cpp
src/newgrf_text.cpp
src/oldloader.cpp
src/oldpool.cpp
src/oldpool.h
src/openttd.cpp
src/openttd.h
src/order.h
src/order_gui.cpp
src/os/macosx/macos.mm
src/os_timer.cpp
src/player.h
src/player_gui.cpp
src/rail_cmd.cpp
src/road_cmd.cpp
src/roadveh.h
src/roadveh_cmd.cpp
src/roadveh_gui.cpp
src/saveload.cpp
src/saveload.h
src/settings.cpp
src/settings_gui.cpp
src/ship.h
src/ship_cmd.cpp
src/ship_gui.cpp
src/signs.cpp
src/signs.h
src/smallmap_gui.cpp
src/station.cpp
src/station.h
src/station_cmd.cpp
src/station_gui.cpp
src/stdafx.h
src/string.h
src/strings.cpp
src/table/build_industry.h
src/table/control_codes.h
src/texteff.cpp
src/texteff.hpp
src/town.h
src/town_cmd.cpp
src/train.h
src/train_cmd.cpp
src/train_gui.cpp
src/tree_cmd.cpp
src/tunnelbridge_cmd.cpp
src/unmovable_cmd.cpp
src/variables.h
src/vehicle.cpp
src/vehicle.h
src/vehicle_gui.cpp
src/vehicle_gui.h
src/video/cocoa_v.mm
src/video/dedicated_v.cpp
src/video/sdl_v.cpp
src/video/win32_v.cpp
src/viewport.cpp
src/water_cmd.cpp
src/waypoint.cpp
src/waypoint.h
src/win32.cpp
src/window.cpp
--- a/config.lib	Sun Aug 19 14:04:13 2007 +0000
+++ b/config.lib	Sun Sep 02 11:17:33 2007 +0000
@@ -308,11 +308,16 @@
 	# Check if all params have valid values
 
 	# Endian only allows AUTO, LE and, BE
-	if [ -z "`echo $endian | egrep '^(AUTO|LE|BE)$'`" ]; then
+	if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then
 		echo "configure: error: invalid option --endian=$endian"
 		echo " Available options are: --endian=[AUTO|LE|BE]"
 		exit 1
 	fi
+	if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
+		echo "configure: error: invalid option --endian=$endian"
+		echo " PREPROCESSOR is only available for OSX"
+		exit 1
+	fi
 	# OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
 	if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2|WINCE|PSP)$'`" ]; then
 		echo "configure: error: invalid option --os=$os"
@@ -838,6 +843,14 @@
 		CFLAGS="$CFLAGS -fno-strict-aliasing"
 	fi
 
+	# GCC 4.2+ automatically assumes that signed overflows do
+	# not occur in signed arithmetics, whereas we are not
+	# sure that they will not happen. It furthermore complains
+	# about it's own optimized code in some places.
+	if [ $cc_version -ge 42 ]; then
+		CFLAGS="$CFLAGS -fno-strict-overflow"
+	fi
+
 	if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
 		LIBS="$LIBS -lpthread"
 		LIBS="$LIBS -lrt"
--- a/src/ai/api/ai_company.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/ai/api/ai_company.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,7 @@
 
 AICompany::CompanyIndex AICompany::ResolveCompanyIndex(AICompany::CompanyIndex company)
 {
-	if (company == MY_COMPANY) return (CompanyIndex)_current_player;
+	if (company == MY_COMPANY) return (CompanyIndex)((byte)_current_player);
 
 	return (IsValidPlayer((PlayerID)company) && GetPlayer((PlayerID)company)->is_active) ? company : INVALID_COMPANY;
 }
--- a/src/aircraft.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/aircraft.h	Sun Sep 02 11:17:33 2007 +0000
@@ -7,6 +7,8 @@
 
 #include "station_map.h"
 #include "vehicle.h"
+#include "engine.h"
+#include "variables.h"
 
 /** An aircraft can be one ot those types */
 enum AircraftSubType {
@@ -31,25 +33,6 @@
 	return v->subtype <= AIR_AIRCRAFT;
 }
 
-/** Check if this aircraft is in a hangar
- * @param v vehicle to check
- * @return true if in hangar
- */
-static inline bool IsAircraftInHangar(const Vehicle *v)
-{
-	assert(v->type == VEH_AIRCRAFT);
-	return v->vehstatus & VS_HIDDEN && IsHangarTile(v->tile);
-}
-
-/** Check if this aircraft is in a hangar and stopped
- * @param v vehicle to check
- * @return true if in hangar and stopped
- */
-static inline bool IsAircraftInHangarStopped(const Vehicle *v)
-{
-	return IsAircraftInHangar(v) && v->vehstatus & VS_STOPPED;
-}
-
 /** Checks if an aircraft is buildable at the tile in question
  * @param engine The engine to test
  * @param tile The tile where the hangar is
@@ -82,15 +65,6 @@
  */
 void CcBuildAircraft(bool success, TileIndex tile, uint32 p1, uint32 p2);
 
-/**
- * This is the Callback method after the cloning attempt of an aircraft
- * @param success indicates completion (or not) of the operation
- * @param tile unused
- * @param p1 unused
- * @param p2 unused
- */
-void CcCloneAircraft(bool success, TileIndex tile, uint32 p1, uint32 p2);
-
 /** Handle Aircraft specific tasks when a an Aircraft enters a hangar
  * @param *v Vehicle that enters the hangar
  */
@@ -128,7 +102,7 @@
 	Aircraft() { this->type = VEH_AIRCRAFT; }
 
 	/** We want to 'destruct' the right class. */
-	virtual ~Aircraft() {}
+	virtual ~Aircraft() { this->PreDestructor(); }
 
 	const char *GetTypeString() const { return "aircraft"; }
 	void MarkDirty();
@@ -137,6 +111,10 @@
 	WindowClass GetVehicleListWindowClass() const { return WC_AIRCRAFT_LIST; }
 	bool IsPrimaryVehicle() const { return IsNormalAircraft(this); }
 	int GetImage(Direction direction) const;
+	int GetDisplaySpeed() const { return this->cur_speed * 10 / 16; }
+	int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 16; }
+	Money GetRunningCost() const { return AircraftVehInfo(this->engine_type)->running_cost * _price.aircraft_running; }
+	bool IsInDepot() const { return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile); }
 	void Tick();
 };
 
--- a/src/aircraft_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/aircraft_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -172,7 +172,7 @@
 {
 	assert(v->subtype == AIR_HELICOPTER);
 
-	const Vehicle *w = v->next->next;
+	const Vehicle *w = v->Next()->Next();
 	if (is_custom_sprite(v->spritenum)) {
 		SpriteID spritenum = GetCustomRotorSprite(v, false);
 		if (spritenum != 0) return spritenum;
@@ -406,7 +406,7 @@
 		v->u.air.state = HANGAR;
 		v->u.air.previous_pos = v->u.air.pos;
 		v->u.air.targetairport = GetStationIndex(tile);
-		v->next = u;
+		v->SetNext(u);
 
 		v->service_interval = _patches.servint_aircraft;
 
@@ -430,8 +430,6 @@
 		if (v->subtype == AIR_HELICOPTER) {
 			Vehicle *w = vl[2];
 
-			u->next = w;
-
 			w = new (w) Aircraft();
 			w->direction = DIR_N;
 			w->owner = _current_player;
@@ -446,6 +444,8 @@
 			/* Use rotor's air.state to store the rotor animation frame */
 			w->u.air.state = HRS_ROTOR_STOPPED;
 			w->UpdateDeltaXY(INVALID_DIR);
+
+			u->SetNext(w);
 			VehiclePositionChanged(w);
 		}
 
@@ -453,7 +453,7 @@
 		RebuildVehicleLists();
 		InvalidateWindow(WC_COMPANY, v->owner);
 		if (IsLocalPlayer())
-			InvalidateAutoreplaceWindow(VEH_AIRCRAFT, v->group_id); //updates the replace Aircraft window
+			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); //updates the replace Aircraft window
 
 		GetPlayer(_current_player)->num_engines[p1]++;
 	}
@@ -486,7 +486,7 @@
 	Vehicle *v = GetVehicle(p1);
 
 	if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner)) return CMD_ERROR;
-	if (!IsAircraftInHangarStopped(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
+	if (!v->IsStoppedInDepot()) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
 
 	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 
@@ -527,7 +527,7 @@
 	}
 
 	if (flags & DC_EXEC) {
-		if (IsAircraftInHangarStopped(v)) {
+		if (v->IsStoppedInDepot()) {
 			DeleteVehicleNews(p1, STR_A014_AIRCRAFT_IS_WAITING_IN);
 		}
 
@@ -561,7 +561,7 @@
 
 	Vehicle *v = GetVehicle(p1);
 
-	if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner) || IsAircraftInHangar(v)) return CMD_ERROR;
+	if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner) || v->IsInDepot()) return CMD_ERROR;
 
 	if (v->current_order.type == OT_GOTO_DEPOT && !(p2 & DEPOT_LOCATE_HANGAR)) {
 		if (!!(p2 & DEPOT_SERVICE) == HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
@@ -635,7 +635,7 @@
 	Vehicle *v = GetVehicle(p1);
 
 	if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner)) return CMD_ERROR;
-	if (!IsAircraftInHangarStopped(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
+	if (!v->IsStoppedInDepot()) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
 
 	/* Check cargo */
 	CargoID new_cid = GB(p2, 0, 8);
@@ -679,7 +679,7 @@
 	if (flags & DC_EXEC) {
 		v->cargo_cap = pass;
 
-		Vehicle *u = v->next;
+		Vehicle *u = v->Next();
 		uint mail = IsCargoInClass(new_cid, CC_PASSENGERS) ? avi->mail_capacity : 0;
 		u->cargo_cap = mail;
 		v->cargo.Truncate(v->cargo_type == new_cid ? pass : 0);
@@ -697,17 +697,8 @@
 
 static void CheckIfAircraftNeedsService(Vehicle *v)
 {
-	if (_patches.servint_aircraft == 0) return;
-	if (!VehicleNeedsService(v)) return;
-	if (v->vehstatus & VS_STOPPED) return;
-
-	if (v->current_order.type == OT_GOTO_DEPOT &&
-			v->current_order.flags & OF_HALT_IN_DEPOT)
-		return;
-
-	if (_patches.gotodepot && VehicleHasDepotOrders(v)) return;
-
-	if (IsAircraftInHangar(v)) {
+	if (_patches.servint_aircraft == 0 || !VehicleNeedsService(v)) return;
+	if (v->IsInDepot()) {
 		VehicleServiceInDepot(v);
 		return;
 	}
@@ -717,7 +708,6 @@
 	if (st->IsValid() && st->airport_tile != 0 && st->Airport()->terminals != NULL) {
 //		printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
 //		v->u.air.targetairport = st->index;
-		if (v->current_order.type == OT_LOADING) v->LeaveStation();
 		v->current_order.type = OT_GOTO_DEPOT;
 		v->current_order.flags = OF_NON_STOP;
 		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
@@ -772,13 +762,13 @@
 
 	do {
 		v->cargo.AgeCargo();
-		v = v->next;
+		v = v->Next();
 	} while (v != NULL);
 }
 
 static void HelicopterTickHandler(Vehicle *v)
 {
-	Vehicle *u = v->next->next;
+	Vehicle *u = v->Next()->Next();
 
 	if (u->vehstatus & VS_HIDDEN) return;
 
@@ -830,13 +820,13 @@
 	v->z_pos = z;
 
 	v->cur_image = v->GetImage(v->direction);
-	if (v->subtype == AIR_HELICOPTER) v->next->next->cur_image = GetRotorImage(v);
+	if (v->subtype == AIR_HELICOPTER) v->Next()->Next()->cur_image = GetRotorImage(v);
 
 	BeginVehicleMove(v);
 	VehiclePositionChanged(v);
 	EndVehicleMove(v);
 
-	Vehicle *u = v->next;
+	Vehicle *u = v->Next();
 
 	int safe_x = clamp(x, 0, MapMaxX() * TILE_SIZE);
 	int safe_y = clamp(y - 1, 0, MapMaxY() * TILE_SIZE);
@@ -851,7 +841,7 @@
 	VehiclePositionChanged(u);
 	EndVehicleMove(u);
 
-	u = u->next;
+	u = u->Next();
 	if (u != NULL) {
 		u->x_pos = x;
 		u->y_pos = y;
@@ -871,9 +861,9 @@
 	v->subspeed = 0;
 	v->progress = 0;
 
-	Vehicle *u = v->next;
+	Vehicle *u = v->Next();
 	u->vehstatus |= VS_HIDDEN;
-	u = u->next;
+	u = u->Next();
 	if (u != NULL) {
 		u->vehstatus |= VS_HIDDEN;
 		u->cur_speed = 0;
@@ -1058,7 +1048,7 @@
 
 	/* Helicopter raise */
 	if (amd->flag & AMED_HELI_RAISE) {
-		Vehicle *u = v->next->next;
+		Vehicle *u = v->Next()->Next();
 
 		/* Make sure the rotors don't rotate too fast */
 		if (u->cur_speed > 32) {
@@ -1102,7 +1092,7 @@
 			int z = GetSlopeZ(x, y) + 1 + afc->delta_z;
 
 			if (z == v->z_pos) {
-				Vehicle *u = v->next->next;
+				Vehicle *u = v->Next()->Next();
 
 				/*  Increase speed of rotors. When speed is 80, we've landed. */
 				if (u->cur_speed >= 80) return true;
@@ -1412,7 +1402,7 @@
 void Aircraft::MarkDirty()
 {
 		this->cur_image = this->GetImage(this->direction);
-		if (this->subtype == AIR_HELICOPTER) this->next->next->cur_image = GetRotorImage(this);
+		if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this);
 		MarkAllViewportsDirty(this->left_coord, this->top_coord, this->right_coord + 1, this->bottom_coord + 1);
 }
 
@@ -1430,7 +1420,7 @@
 	SetDParam(0, amt);
 
 	v->cargo.Truncate(0);
-	v->next->cargo.Truncate(0);
+	v->Next()->cargo.Truncate(0);
 	const Station *st = GetStation(v->u.air.targetairport);
 	StringID newsitem;
 	if (st->airport_tile == 0) {
@@ -1530,11 +1520,11 @@
 	v->direction = DIR_SE;
 	v->vehstatus &= ~VS_HIDDEN;
 	{
-		Vehicle *u = v->next;
+		Vehicle *u = v->Next();
 		u->vehstatus &= ~VS_HIDDEN;
 
 		/* Rotor blades */
-		u = u->next;
+		u = u->Next();
 		if (u != NULL) {
 			u->vehstatus &= ~VS_HIDDEN;
 			u->cur_speed = 80;
@@ -2158,7 +2148,7 @@
 			v_oldstyle->tile = 0; // aircraft in air is tile=0
 
 			/* correct speed of helicopter-rotors */
-			if (v_oldstyle->subtype == AIR_HELICOPTER) v_oldstyle->next->next->cur_speed = 32;
+			if (v_oldstyle->subtype == AIR_HELICOPTER) v_oldstyle->Next()->Next()->cur_speed = 32;
 
 			/* set new position x,y,z */
 			SetAircraftPosition(v_oldstyle, gp.x, gp.y, GetAircraftFlyingAltitude(v_oldstyle));
--- a/src/aircraft_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/aircraft_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -53,22 +53,10 @@
 			_backup_orders_tile = 0;
 			RestoreVehicleOrders(v, _backup_orders_data);
 		}
-		ShowAircraftViewWindow(v);
+		ShowVehicleViewWindow(v);
 	}
 }
 
-/**
- * This is the Callback method after the cloning attempt of an aircraft
- * @param success indicates completion (or not) of the operation
- * @param tile unused
- * @param p1 unused
- * @param p2 unused
- */
-void CcCloneAircraft(bool success, TileIndex tile, uint32 p1, uint32 p2)
-{
-	if (success) ShowAircraftViewWindow(GetVehicle(_new_vehicle_id));
-}
-
 static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
@@ -92,13 +80,13 @@
 
 			SetDParam(0, (v->age + 365 < v->max_age) ? STR_AGE : STR_AGE_RED);
 			SetDParam(2, v->max_age / 366);
-			SetDParam(3, _price.aircraft_running * AircraftVehInfo(v->engine_type)->running_cost >> 8);
+			SetDParam(3, v->GetDisplayRunningCost());
 			DrawString(2, 15, STR_A00D_AGE_RUNNING_COST_YR, 0);
 		}
 
 		/* Draw max speed */
 		{
-			SetDParam(0, v->max_speed * 10 / 16);
+			SetDParam(0, v->GetDisplayMaxSpeed());
 			DrawString(2, 25, STR_A00E_MAX_SPEED, 0);
 		}
 
@@ -145,7 +133,7 @@
 
 					SetDParam(0, v->cargo_type);
 					SetDParam(1, v->cargo_cap);
-					u = v->next;
+					u = v->Next();
 					SetDParam(2, u->cargo_type);
 					SetDParam(3, u->cargo_cap);
 					DrawString(60, y, (u->cargo_cap != 0) ? STR_A019_CAPACITY : STR_A01A_CAPACITY, 0);
@@ -163,7 +151,7 @@
 
 					y += 10;
 				}
-			} while ( (v=v->next) != NULL);
+			} while ((v = v->Next()) != NULL);
 		}
 	} break;
 
@@ -224,7 +212,7 @@
 };
 
 
-static void ShowAircraftDetailsWindow(const Vehicle *v)
+void ShowAircraftDetailsWindow(const Vehicle *v)
 {
 	Window *w;
 	VehicleID veh = v->index;
@@ -237,163 +225,3 @@
 //	w->vscroll.cap = 6;
 //	w->traindetails_d.tab = 0;
 }
-
-
-static const Widget _aircraft_view_widgets[] = {
-{   WWT_CLOSEBOX,  RESIZE_NONE,  14,   0,  10,   0,  13, STR_00C5,                 STR_018B_CLOSE_WINDOW },
-{    WWT_CAPTION, RESIZE_RIGHT,  14,  11, 237,   0,  13, STR_A00A,                 STR_018C_WINDOW_TITLE_DRAG_THIS },
-{  WWT_STICKYBOX,    RESIZE_LR,  14, 238, 249,   0,  13, 0x0,                      STR_STICKY_BUTTON },
-{      WWT_PANEL,    RESIZE_RB,  14,   0, 231,  14, 103, 0x0,                      STR_NULL },
-{      WWT_INSET,    RESIZE_RB,  14,   2, 229,  16, 101, 0x0,                      STR_NULL },
-{    WWT_PUSHBTN,   RESIZE_RTB,  14,   0, 237, 104, 115, 0x0,                      STR_A027_CURRENT_AIRCRAFT_ACTION },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  14,  31, SPR_CENTRE_VIEW_VEHICLE,  STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  32,  49, SPR_SEND_AIRCRAFT_TODEPOT,STR_A02A_SEND_AIRCRAFT_TO_HANGAR },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  50,  67, SPR_REFIT_VEHICLE,        STR_A03B_REFIT_AIRCRAFT_TO_CARRY },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  68,  85, SPR_SHOW_ORDERS,          STR_A028_SHOW_AIRCRAFT_S_ORDERS },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  86, 103, SPR_SHOW_VEHICLE_DETAILS, STR_A02B_SHOW_AIRCRAFT_DETAILS },
-{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  32,  49, SPR_CLONE_AIRCRAFT,       STR_CLONE_AIRCRAFT_INFO },
-{      WWT_PANEL,   RESIZE_LRB,  14, 232, 249, 104, 103, 0x0,                      STR_NULL },
-{  WWT_RESIZEBOX,  RESIZE_LRTB,  14, 238, 249, 104, 115, 0x0,                      STR_NULL },
-{   WIDGETS_END},
-};
-
-
-static void AircraftViewWndProc(Window *w, WindowEvent *e)
-{
-	switch (e->event) {
-	case WE_PAINT: {
-		const Vehicle *v = GetVehicle(w->window_number);
-		StringID str;
-		bool is_localplayer = v->owner == _local_player;
-
-		SetWindowWidgetDisabledState(w,  7, !is_localplayer);
-		SetWindowWidgetDisabledState(w,  8, !IsAircraftInHangarStopped(v) || !is_localplayer);
-		SetWindowWidgetDisabledState(w, 11, !is_localplayer);
-
-
-		/* draw widgets & caption */
-		SetDParam(0, v->index);
-		DrawWindowWidgets(w);
-
-		if (v->vehstatus & VS_CRASHED) {
-			str = STR_8863_CRASHED;
-		} else if (v->vehstatus & VS_STOPPED) {
-			str = STR_8861_STOPPED;
-		} else {
-			switch (v->current_order.type) {
-			case OT_GOTO_STATION: {
-				SetDParam(0, v->current_order.dest);
-				SetDParam(1, v->cur_speed * 10 / 16);
-				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
-			} break;
-
-			case OT_GOTO_DEPOT: {
-				/* Aircrafts always go to a station, even if you say depot */
-				SetDParam(0, v->current_order.dest);
-				SetDParam(1, v->cur_speed * 10 / 16);
-				if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HASBIT(v->current_order.flags, OFB_PART_OF_ORDERS)) {
-					str = STR_HEADING_FOR_HANGAR + _patches.vehicle_speed;
-				} else {
-					str = STR_HEADING_FOR_HANGAR_SERVICE + _patches.vehicle_speed;
-				}
-			} break;
-
-			case OT_LOADING:
-				str = STR_882F_LOADING_UNLOADING;
-				break;
-
-			default:
-				if (v->num_orders == 0) {
-					str = STR_NO_ORDERS + _patches.vehicle_speed;
-					SetDParam(0, v->cur_speed * 10 / 16);
-				} else {
-					str = STR_EMPTY;
-				}
-				break;
-			}
-		}
-
-		/* draw the flag plus orders */
-		DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, w->widget[5].top + 1);
-		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
-		DrawWindowViewport(w);
-	} break;
-
-	case WE_CLICK: {
-		const Vehicle *v = GetVehicle(w->window_number);
-
-		switch (e->we.click.widget) {
-		case 5: /* start stop */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_AIRCRAFT | CMD_MSG(STR_A016_CAN_T_STOP_START_AIRCRAFT));
-			break;
-		case 6: /* center main view */
-			ScrollMainWindowTo(v->x_pos, v->y_pos);
-			break;
-		case 7: /* goto hangar */
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO));
-			break;
-		case 8: /* refit */
-			ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
-			break;
-		case 9: /* show orders */
-			ShowOrdersWindow(v);
-			break;
-		case 10: /* show details */
-			ShowAircraftDetailsWindow(v);
-			break;
-		case 11:
-			/* clone vehicle */
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, CcCloneAircraft, CMD_CLONE_VEHICLE | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
-			break;
-		}
-	} break;
-
-	case WE_RESIZE:
-		w->viewport->width          += e->we.sizing.diff.x;
-		w->viewport->height         += e->we.sizing.diff.y;
-		w->viewport->virtual_width  += e->we.sizing.diff.x;
-		w->viewport->virtual_height += e->we.sizing.diff.y;
-		break;
-
-	case WE_DESTROY:
-		DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
-		DeleteWindowById(WC_VEHICLE_DETAILS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_TIMETABLE, w->window_number);
-		break;
-
-	case WE_MOUSELOOP: {
-		const Vehicle *v = GetVehicle(w->window_number);
-		bool plane_stopped = IsAircraftInHangarStopped(v);
-
-		/* Widget 7 (send to hangar) must be hidden if the plane is already stopped in hangar.
-		 * Widget 11 (clone) should then be shown, since cloning is allowed only while in hangar and stopped.
-		 * This sytem allows to have two buttons, on top of each other*/
-		if (plane_stopped != IsWindowWidgetHidden(w, 7) || plane_stopped == IsWindowWidgetHidden(w, 11)) {
-			SetWindowWidgetHiddenState(w,  7, plane_stopped);  // send to hangar
-			SetWindowWidgetHiddenState(w, 11, !plane_stopped); // clone
-			SetWindowDirty(w);
-		}
-	} break;
-	}
-}
-
-
-static const WindowDesc _aircraft_view_desc = {
-	WDP_AUTO, WDP_AUTO, 250, 116, 250, 116,
-	WC_VEHICLE_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_aircraft_view_widgets,
-	AircraftViewWndProc
-};
-
-
-void ShowAircraftViewWindow(const Vehicle *v)
-{
-	Window *w = AllocateWindowDescFront(&_aircraft_view_desc, v->index);
-
-	if (w != NULL) {
-		w->caption_color = v->owner;
-		AssignWindowViewport(w, 3, 17, 0xE2, 0x54, w->window_number | (1 << 31), ZOOM_LVL_AIRCRAFT);
-	}
-}
--- a/src/articulated_vehicles.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/articulated_vehicles.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -41,11 +41,12 @@
 
 		/* Attempt to use pre-allocated vehicles until they run out. This can happen
 		 * if the callback returns different values depending on the cargo type. */
-		u->next = vl[i];
-		if (u->next == NULL) u->next = new InvalidVehicle();
-		if (u->next == NULL) return;
+		u->SetNext(vl[i]);
+		if (u->Next() == NULL) u->SetNext(new InvalidVehicle());
+		if (u->Next() == NULL) return;
 
-		u = u->next;
+		Vehicle *previous = u;
+		u = u->Next();
 
 		EngineID engine_type = GetFirstEngineOfType(type) + GB(callback, 0, 7);
 		bool flip_image = HASBIT(callback, 7);
@@ -106,6 +107,8 @@
 			} break;
 		}
 
+		previous->SetNext(u);
+
 		if (flip_image) u->spritenum++;
 
 		VehiclePositionChanged(u);
--- a/src/autoreplace_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/autoreplace_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -42,9 +42,9 @@
 			dest->day_counter  = source->day_counter;
 			dest->tick_counter = source->tick_counter;
 
-		} while (source->cargo.Count() > 0 && (dest = dest->next) != NULL);
+		} while (source->cargo.Count() > 0 && (dest = dest->Next()) != NULL);
 		dest = v;
-	} while ((source = source->next) != NULL);
+	} while ((source = source->Next()) != NULL);
 
 	/*
 	 * The of the train will be incorrect at this moment. This is due
@@ -52,7 +52,7 @@
 	 * the complete train, which is without the weight of cargo we just
 	 * moved back into some (of the) new wagon(s).
 	 */
-	if (dest->type == VEH_TRAIN) TrainConsistChanged(dest->first);
+	if (dest->type == VEH_TRAIN) TrainConsistChanged(dest->First());
 }
 
 static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, const EngineID engine_type)
@@ -61,7 +61,7 @@
 	const Vehicle *u;
 
 	if (v->type == VEH_TRAIN) {
-		u = GetFirstVehicleInChain(v);
+		u = v->First();
 	} else {
 		u = v;
 	}
@@ -104,13 +104,13 @@
 
 	/* the old engine didn't have cargo capacity, but the new one does
 	 * now we will figure out what cargo the train is carrying and refit to fit this */
-	v = GetFirstVehicleInChain(v);
+	v = v->First();
 	do {
 		if (v->cargo_cap == 0) continue;
 		/* Now we found a cargo type being carried on the train and we will see if it is possible to carry to this one */
 		if (v->cargo_type == new_cargo_type) return CT_NO_REFIT;
 		if (CanRefitTo(engine_type, v->cargo_type)) return v->cargo_type;
-	} while ((v = v->next) != NULL);
+	} while ((v = v->Next()) != NULL);
 	return CT_NO_REFIT; // We failed to find a cargo type on the old vehicle and we will not refit the new one
 }
 
@@ -189,7 +189,7 @@
 			}
 		}
 
-		if (new_v->type == VEH_TRAIN && HASBIT(old_v->u.rail.flags, VRF_REVERSE_DIRECTION) && !IsMultiheaded(new_v) && !(new_v->next != NULL && IsArticulatedPart(new_v->next))) {
+		if (new_v->type == VEH_TRAIN && HASBIT(old_v->u.rail.flags, VRF_REVERSE_DIRECTION) && !IsMultiheaded(new_v) && !(new_v->Next() != NULL && IsArticulatedPart(new_v->Next()))) {
 			// we are autorenewing to a single engine, so we will turn it as the old one was turned as well
 			SETBIT(new_v->u.rail.flags, VRF_REVERSE_DIRECTION);
 		}
@@ -200,9 +200,9 @@
 			 * sell the old engine in a moment
 			 */
 			/* Get the vehicle in front of the one we move out */
-			Vehicle *front = GetPrevVehicleInChain(old_v);
+			Vehicle *front = old_v->Previous();
 			/* If the vehicle in front is the rear end of a dualheaded engine, then we need to use the one in front of that one */
-			if (IsMultiheaded(front) && !IsTrainEngine(front)) front = GetPrevVehicleInChain(front);
+			if (IsMultiheaded(front) && !IsTrainEngine(front)) front = front->Previous();
 			/* Now we move the old one out of the train */
 			DoCommand(0, (INVALID_VEHICLE << 16) | old_v->index, 0, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
 			/* Add the new vehicle */
@@ -236,7 +236,7 @@
 			}
 		}
 		/* We are done setting up the new vehicle. Now we move the cargo from the old one to the new one */
-		MoveVehicleCargo(new_v->type == VEH_TRAIN ? GetFirstVehicleInChain(new_v) : new_v, old_v);
+		MoveVehicleCargo(new_v->type == VEH_TRAIN ? new_v->First() : new_v, old_v);
 
 		// Get the name of the old vehicle if it has a custom name.
 		if (!IsCustomName(old_v->string_id)) {
@@ -247,12 +247,12 @@
 		}
 	} else { // flags & DC_EXEC not set
 		CommandCost tmp_move;
-		if (old_v->type == VEH_TRAIN && IsFrontEngine(old_v) && old_v->next != NULL) {
+		if (old_v->type == VEH_TRAIN && IsFrontEngine(old_v) && old_v->Next() != NULL) {
 			/* Verify that the wagons can be placed on the engine in question.
 			 * This is done by building an engine, test if the wagons can be added and then sell the test engine. */
 			DoCommand(old_v->tile, new_engine_type, 3, DC_EXEC, GetCmdBuildVeh(old_v));
 			Vehicle *temp = GetVehicle(_new_vehicle_id);
-			tmp_move = DoCommand(0, (temp->index << 16) | old_v->next->index, 1, 0, CMD_MOVE_RAIL_VEHICLE);
+			tmp_move = DoCommand(0, (temp->index << 16) | old_v->Next()->index, 1, 0, CMD_MOVE_RAIL_VEHICLE);
 			DoCommand(0, temp->index, 0, DC_EXEC, GetCmdSellVeh(old_v));
 		}
 
--- a/src/autoreplace_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/autoreplace_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -49,7 +49,7 @@
 {
 	Player *p = GetPlayer(_local_player);
 	byte type = GetEngine(e)->type;
-	uint num_engines = GetGroupNumEngines(id_g, e);
+	uint num_engines = GetGroupNumEngines(_local_player, id_g, e);
 
 	if (num_engines == 0 || p->num_engines[e] == 0) {
 		/* We don't have any of this engine type.
@@ -154,7 +154,7 @@
 
 		if (draw_left) {
 			const GroupID selected_group = WP(w, replaceveh_d).sel_group;
-			const uint num_engines = GetGroupNumEngines(selected_group, e);
+			const uint num_engines = GetGroupNumEngines(_local_player, selected_group, e);
 
 			/* Skip drawing the engines we don't have any of and haven't set for replacement */
 			if (num_engines == 0 && EngineReplacementForPlayer(GetPlayer(_local_player), e, selected_group) == INVALID_ENGINE) continue;
--- a/src/blitter/32bpp_base.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/blitter/32bpp_base.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -56,7 +56,7 @@
 		stepx = 1;
 	}
 
-	this->SetPixel(video, x, y, color);
+	if (x > 0 && y > 0 && x < screen_width && y < screen_height) this->SetPixel(video, x, y, color);
 	if (dx > dy) {
 		frac = dy - (dx / 2);
 		while (x != x2) {
--- a/src/blitter/8bpp_base.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/blitter/8bpp_base.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -60,7 +60,7 @@
 		stepx = 1;
 	}
 
-	this->SetPixel(video, x, y, color);
+	if (x > 0 && y > 0 && x < screen_width && y < screen_height) this->SetPixel(video, x, y, color);
 	if (dx > dy) {
 		frac = dy - (dx / 2);
 		while (x != x2) {
--- a/src/build_vehicle_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/build_vehicle_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -853,7 +853,8 @@
 
 	for (; min < max; min++, y += step_size) {
 		const EngineID engine = eng_list[min];
-		const uint num_engines = GetGroupNumEngines(selected_group, engine);
+		/* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_player here. */
+		const uint num_engines = GetGroupNumEngines(_local_player, selected_group, engine);
 
 		SetDParam(0, engine);
 		DrawString(x + x_offset, y, STR_ENGINE_NAME, engine == selected_id ? 0xC : 0x10);
--- a/src/callback_table.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/callback_table.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 
 /* aircraft_gui.cpp */
 CommandCallback CcBuildAircraft;
-CommandCallback CcCloneAircraft;
 
 /* airport_gui.cpp */
 CommandCallback CcBuildAirport;
@@ -48,16 +47,13 @@
 
 /* roadveh_gui.cpp */
 CommandCallback CcBuildRoadVeh;
-CommandCallback CcCloneRoadVeh;
 
 /* ship_gui.cpp */
 CommandCallback CcBuildShip;
-CommandCallback CcCloneShip;
 
 /* train_gui.cpp */
 CommandCallback CcBuildWagon;
 CommandCallback CcBuildLoco;
-CommandCallback CcCloneTrain;
 
 /* ai/ai.cpp */
 CommandCallback CcAI;
@@ -84,13 +80,9 @@
 	/* 0x12 */ CcPlaySound1E,
 	/* 0x13 */ CcStation,
 	/* 0x14 */ CcTerraform,
-	/* 0x15 */ CcCloneAircraft,
-	/* 0x16 */ CcCloneRoadVeh,
-	/* 0x17 */ CcCloneShip,
-	/* 0x18 */ CcCloneTrain,
-	/* 0x19 */ CcAI,
-	/* 0x1A */ CcCloneVehicle,
-	/* 0x1B */ CcGiveMoney,
+	/* 0x15 */ CcAI,
+	/* 0x16 */ CcCloneVehicle,
+	/* 0x17 */ CcGiveMoney,
 };
 
 const int _callback_table_count = lengthof(_callback_table);
--- a/src/cargopacket.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/cargopacket.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -16,9 +16,6 @@
 	/* Clean the cargo packet pool and create 1 block in it */
 	_CargoPacket_pool.CleanPool();
 	_CargoPacket_pool.AddBlockToPool();
-
-	/* Check whether our &cargolist == &cargolist.packets "hack" works */
-	CargoList::AssertOnWrongPacketOffset();
 }
 
 CargoPacket::CargoPacket(StationID source, uint16 count)
@@ -87,13 +84,6 @@
  *
  */
 
-/* static */ void CargoList::AssertOnWrongPacketOffset()
-{
-	CargoList cl;
-	if ((void*)&cl != (void*)cl.Packets()) NOT_REACHED();
-}
-
-
 CargoList::~CargoList()
 {
 	while (!packets.empty()) {
--- a/src/cargopacket.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/cargopacket.h	Sun Sep 02 11:17:33 2007 +0000
@@ -43,7 +43,7 @@
 	 * Is this a valid cargo packet ?
 	 * @return true if and only it is valid
 	 */
-	bool IsValid() const { return this->count != 0; }
+	inline bool IsValid() const { return this->count != 0; }
 
 	/**
 	 * Checks whether the cargo packet is from (exactly) the same source
@@ -67,6 +67,8 @@
  */
 #define FOR_ALL_CARGOPACKETS(cp) FOR_ALL_CARGOPACKETS_FROM(cp, 0)
 
+extern void SaveLoad_STNS(Station *st);
+
 /**
  * Simple collection class for a list of cargo packets
  */
@@ -93,21 +95,7 @@
 	uint days_in_transit; ///< Cache for the number of days in transit
 
 public:
-	/**
-	 * Needed for an ugly hack:
-	 *  - vehicles and stations need to store cargo lists, so they use CargoList as container
-	 *  - this internals of the container should be protected, e.g. private (or protected) by C++
-	 *  - for saving/loading we need to pass pointer to objects
-	 *  -> so *if* the pointer to the cargo list is the same as the pointer to the packet list
-	 *     encapsulated in the CargoList, we can just pass the CargoList as "offset".
-	 *     Normally we would then just add the offset of the packets variable within the cargo list
-	 *     but that is not possible because the variable is private. Furthermore we are not sure
-	 *     that this works on all platforms, we need to check whether the offset is actually 0.
-	 *     This cannot be done compile time, because the variable is private. So we need to write
-	 *     a function that does actually check the offset runtime and call it somewhere where it
-	 *     is always called but it should not be called often.
-	 */
-	static void AssertOnWrongPacketOffset();
+	friend void SaveLoad_STNS(Station *st);
 
 	/** Create the cargo list */
 	CargoList() { this->InvalidateCache(); }
--- a/src/clear_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/clear_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -24,41 +24,40 @@
 #include "industry.h"
 #include "water_map.h"
 
+/*
+ * In one terraforming command all four corners of a initial tile can be raised/lowered (though this is not available to the player).
+ * The maximal amount of height modifications is archieved when raising a complete flat land from sea level to MAX_TILE_HEIGHT or vice versa.
+ * This affects all corners with a manhatten distance smaller than MAX_TILE_HEIGHT to one of the initial 4 corners.
+ * Their maximal amount is computed to 4 * \sum_{i=1}^{h_max} i  =  2 * h_max * (h_max + 1).
+ */
+static const int TERRAFORMER_MODHEIGHT_SIZE = 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 1);
+
+/*
+ * The maximal amount of affected tiles (i.e. the tiles that incident with one of the corners above, is computed similiar to
+ * 1 + 4 * \sum_{i=1}^{h_max} (i+1)  =  1 + 2 * h_max + (h_max + 3).
+ */
+static const int TERRAFORMER_TILE_TABLE_SIZE = 1 + 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 3);
+
 struct TerraformerHeightMod {
-	TileIndex tile;
-	byte height;
+	TileIndex tile;   ///< Referenced tile.
+	byte height;      ///< New TileHeight (height of north corner) of the tile.
 };
 
 struct TerraformerState {
-	int height[4];
-	uint32 flags;
+	int modheight_count;                                         ///< amount of entries in "modheight".
+	int tile_table_count;                                        ///< amount of entries in "tile_table".
 
-	int direction;
-	int modheight_count;
-	int tile_table_count;
-
-	CommandCost cost;
-
-	TileIndex *tile_table;
-	TerraformerHeightMod *modheight;
-
+	TileIndex tile_table[TERRAFORMER_TILE_TABLE_SIZE];           ///< Dirty tiles, i.e. at least one corner changed.
+	TerraformerHeightMod modheight[TERRAFORMER_MODHEIGHT_SIZE];  ///< Height modifications.
 };
 
-static int TerraformAllowTileProcess(TerraformerState *ts, TileIndex tile)
-{
-	TileIndex *t;
-	int count;
-
-	if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) return -1;
-
-	t = ts->tile_table;
-	for (count = ts->tile_table_count; count != 0; count--, t++) {
-		if (*t == tile) return 0;
-	}
-
-	return 1;
-}
-
+/**
+ * Gets the TileHeight (height of north corner) of a tile as of current terraforming progress.
+ *
+ * @param ts TerraformerState.
+ * @param tile Tile.
+ * @return TileHeight.
+ */
 static int TerraformGetHeightOfTile(TerraformerState *ts, TileIndex tile)
 {
 	TerraformerHeightMod *mod = ts->modheight;
@@ -68,9 +67,46 @@
 		if (mod->tile == tile) return mod->height;
 	}
 
+	/* TileHeight unchanged so far, read value from map. */
 	return TileHeight(tile);
 }
 
+/**
+ * Stores the TileHeight (height of north corner) of a tile in a TerraformerState.
+ *
+ * @param ts TerraformerState.
+ * @param tile Tile.
+ * @param height New TileHeight.
+ */
+static void TerraformSetHeightOfTile(TerraformerState *ts, TileIndex tile, int height)
+{
+	/* Find tile in the "modheight" table.
+	 * Note: In a normal user-terraform command the tile will not be found in the "modheight" table.
+	 *       But during house- or industry-construction multiple corners can be terraformed at once. */
+	TerraformerHeightMod *mod = ts->modheight;
+	int count = ts->modheight_count;
+	while ((count > 0) && (mod->tile != tile)) {
+		mod++;
+		count--;
+	}
+
+	/* New entry? */
+	if (count == 0) {
+		assert(ts->modheight_count < TERRAFORMER_MODHEIGHT_SIZE);
+		ts->modheight_count++;
+	}
+
+	/* Finally store the new value */
+	mod->tile = tile;
+	mod->height = (byte)height;
+}
+
+/**
+ * Adds a tile to the "tile_table" in a TerraformerState.
+ *
+ * @param ts TerraformerState.
+ * @param tile Tile.
+ */
 static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile)
 {
 	int count;
@@ -78,15 +114,21 @@
 
 	count = ts->tile_table_count;
 
-	if (count >= 625) return;
-
 	for (t = ts->tile_table; count != 0; count--, t++) {
 		if (*t == tile) return;
 	}
 
+	assert(ts->tile_table_count < TERRAFORMER_TILE_TABLE_SIZE);
+
 	ts->tile_table[ts->tile_table_count++] = tile;
 }
 
+/**
+ * Adds all tiles that incident with the north corner of a specific tile to the "tile_table" in a TerraformerState.
+ *
+ * @param ts TerraformerState.
+ * @param tile Tile.
+ */
 static void TerraformAddDirtyTileAround(TerraformerState *ts, TileIndex tile)
 {
 	TerraformAddDirtyTile(ts, tile + TileDiffXY( 0, -1));
@@ -95,242 +137,184 @@
 	TerraformAddDirtyTile(ts, tile);
 }
 
-static int TerraformProc(TerraformerState *ts, TileIndex tile, int mode)
+/**
+ * Terraform the north corner of a tile to a specific height.
+ *
+ * @param ts TerraformerState.
+ * @param tile Tile.
+ * @param height Aimed height.
+ * @param return Error code or cost.
+ */
+static CommandCost TerraformTileHeight(TerraformerState *ts, TileIndex tile, int height)
 {
-	int r;
-	CommandCost ret;
+	CommandCost total_cost = CommandCost();
 
 	assert(tile < MapSize());
 
-	r = TerraformAllowTileProcess(ts, tile);
-	if (r <= 0) return r;
-
-	if (IsTileType(tile, MP_RAILWAY)) {
-		static const TrackBits safe_track[] = { TRACK_BIT_LOWER, TRACK_BIT_LEFT, TRACK_BIT_UPPER, TRACK_BIT_RIGHT };
-		static const Slope unsafe_slope[] = { SLOPE_S, SLOPE_W, SLOPE_N, SLOPE_E };
-
-		Slope tileh;
-		uint z;
-
-		/* Nothing could be built at the steep slope - this avoids a bug
-		 * when you have a single diagonal track in one corner on a
-		 * basement and then you raise/lower the other corner. */
-		tileh = GetTileSlope(tile, &z);
-		if (tileh == unsafe_slope[mode] ||
-				tileh == (SLOPE_STEEP | ComplementSlope(unsafe_slope[mode]))) {
-			_terraform_err_tile = tile;
-			_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
-			return -1;
-		}
+	/* Check range of destination height */
+	if (height < 0) return_cmd_error(STR_1003_ALREADY_AT_SEA_LEVEL);
+	if (height > MAX_TILE_HEIGHT) return_cmd_error(STR_1004_TOO_HIGH);
 
-		/* If we have a single diagonal track there, the other side of
-		 * tile can be terraformed. */
-		if (IsPlainRailTile(tile) && GetTrackBits(tile) == safe_track[mode]) {
-			/* If terraforming downwards prevent damaging a potential tunnel below.
-			 * This check is only necessary for flat tiles, because if the tile is
-			 * non-flat, then the corner opposing the rail is raised. Only this corner
-			 * can be lowered and this is a safe action
-			 */
-			if (tileh == SLOPE_FLAT &&
-					ts->direction == -1 &&
-					IsTunnelInWay(tile, z - TILE_HEIGHT)) {
-				_terraform_err_tile = tile;
-				_error_message = STR_1002_EXCAVATION_WOULD_DAMAGE;
-				return -1;
-			}
-			return 0;
-		}
-	}
+	/*
+	 * Check if the terraforming has any effect.
+	 * This can only be true, if multiple corners of the start-tile are terraformed (i.e. the terraforming is done by towns/industries etc.).
+	 * In this case the terraforming should fail. (Don't know why.)
+	 */
+	if (height == TerraformGetHeightOfTile(ts, tile)) return CMD_ERROR;
 
-	/* Canals can't be terraformed */
-	if (IsClearWaterTile(tile) && IsCanal(tile)) {
-		_terraform_err_tile = tile;
-		_error_message = STR_MUST_DEMOLISH_CANAL_FIRST;
-		return -1;
-	}
-
-	ret = DoCommand(tile, 0, 0, ts->flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR);
-
-	if (CmdFailed(ret)) {
-		_terraform_err_tile = tile;
-		return -1;
+	/* Check "too close to edge of map" */
+	uint x = TileX(tile);
+	uint y = TileY(tile);
+	if ((x <= 1) || (y <= 1) || (x >= MapMaxX() - 1) || (y >= MapMaxY() - 1)) {
+		/*
+		 * Determine a sensible error tile
+		 * Note: If x and y are both zero this will disable the error tile. (Tile 0 cannot be highlighted :( )
+		 */
+		if ((x == 1) && (y != 0)) x = 0;
+		if ((y == 1) && (x != 0)) y = 0;
+		_terraform_err_tile = TileXY(x, y);
+		return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
 	}
 
-	ts->cost.AddCost(ret.GetCost());
-
-	if (ts->tile_table_count >= 625) return -1;
-	ts->tile_table[ts->tile_table_count++] = tile;
-
-	return 0;
-}
-
-static bool TerraformTileHeight(TerraformerState *ts, TileIndex tile, int height)
-{
-	int nh;
-	TerraformerHeightMod *mod;
-	int count;
-
-	assert(tile < MapSize());
-
-	if (height < 0) {
-		_error_message = STR_1003_ALREADY_AT_SEA_LEVEL;
-		return false;
-	}
-
-	_error_message = STR_1004_TOO_HIGH;
-
-	if (height > MAX_TILE_HEIGHT) return false;
+	/* Mark incident tiles, that are involved in the terraforming */
+	TerraformAddDirtyTileAround(ts, tile);
 
-	nh = TerraformGetHeightOfTile(ts, tile);
-	if (nh < 0 || height == nh) return false;
-
-	if (TerraformProc(ts, tile, 0) < 0) return false;
-	if (TerraformProc(ts, tile + TileDiffXY( 0, -1), 1) < 0) return false;
-	if (TerraformProc(ts, tile + TileDiffXY(-1, -1), 2) < 0) return false;
-	if (TerraformProc(ts, tile + TileDiffXY(-1,  0), 3) < 0) return false;
-
-	mod = ts->modheight;
-	count = ts->modheight_count;
+	/* Store the height modification */
+	TerraformSetHeightOfTile(ts, tile, height);
 
-	for (;;) {
-		if (count == 0) {
-			if (ts->modheight_count >= 576) return false;
-			ts->modheight_count++;
-			break;
-		}
-		if (mod->tile == tile) break;
-		mod++;
-		count--;
-	}
+	/* Increment cost */
+	total_cost.AddCost(_price.terraform);
 
-	mod->tile = tile;
-	mod->height = (byte)height;
-
-	ts->cost.AddCost(_price.terraform);
-
+	/* Recurse to neighboured corners if height difference is larger than 1 */
 	{
-		int direction = ts->direction, r;
 		const TileIndexDiffC *ttm;
 
 		static const TileIndexDiffC _terraform_tilepos[] = {
-			{ 1,  0},
-			{-2,  0},
-			{ 1,  1},
-			{ 0, -2}
+			{ 1,  0}, // move to tile in SE
+			{-2,  0}, // undo last move, and move to tile in NW
+			{ 1,  1}, // undo last move, and move to tile in SW
+			{ 0, -2}  // undo last move, and move to tile in NE
 		};
 
 		for (ttm = _terraform_tilepos; ttm != endof(_terraform_tilepos); ttm++) {
 			tile += ToTileIndexDiff(*ttm);
 
-			r = TerraformGetHeightOfTile(ts, tile);
-			if (r != height && r - direction != height && r + direction != height) {
-				if (!TerraformTileHeight(ts, tile, r + direction))
-					return false;
+			/* Get TileHeight of neighboured tile as of current terraform progress */
+			int r = TerraformGetHeightOfTile(ts, tile);
+			int height_diff = height - r;
+
+			/* Is the height difference to the neighboured corner greater than 1? */
+			if (abs(height_diff) > 1) {
+				/* Terraform the neighboured corner. The resulting height difference should be 1. */
+				height_diff += (height_diff < 0 ? 1 : -1);
+				CommandCost cost = TerraformTileHeight(ts, tile, r + height_diff);
+				if (CmdFailed(cost)) return cost;
+				total_cost.AddCost(cost);
 			}
 		}
 	}
 
-	return true;
+	return total_cost;
 }
 
 /** Terraform land
  * @param tile tile to terraform
  * @param flags for this command type
- * @param p1 corners to terraform.
- * @param p2 direction; eg up or down
+ * @param p1 corners to terraform (SLOPE_xxx)
+ * @param p2 direction; eg up (non-zero) or down (zero)
  * @return error or cost of terraforming
  */
 CommandCost CmdTerraformLand(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	TerraformerState ts;
-	TileIndex t;
-	int direction;
-
-	TerraformerHeightMod modheight_data[576];
-	TileIndex tile_table_data[625];
+	CommandCost total_cost = CommandCost();
+	int direction = (p2 != 0 ? 1 : -1);
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
 	_terraform_err_tile = 0;
 
-	ts.direction = direction = p2 ? 1 : -1;
-	ts.flags = flags;
 	ts.modheight_count = ts.tile_table_count = 0;
-	ts.cost = CommandCost();
-	ts.modheight = modheight_data;
-	ts.tile_table = tile_table_data;
 
 	/* Make an extra check for map-bounds cause we add tiles to the originating tile */
 	if (tile + TileDiffXY(1, 1) >= MapSize()) return CMD_ERROR;
 
-	if (p1 & 1) {
-		t = tile + TileDiffXY(1, 0);
-		if (!TerraformTileHeight(&ts, t, TileHeight(t) + direction)) {
-			return CMD_ERROR;
-		}
-	}
-
-	if (p1 & 2) {
-		t = tile + TileDiffXY(1, 1);
-		if (!TerraformTileHeight(&ts, t, TileHeight(t) + direction)) {
-			return CMD_ERROR;
-		}
+	/* Compute the costs and the terraforming result in a model of the landscape */
+	if ((p1 & SLOPE_W) != 0) {
+		TileIndex t = tile + TileDiffXY(1, 0);
+		CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction);
+		if (CmdFailed(cost)) return cost;
+		total_cost.AddCost(cost);
 	}
 
-	if (p1 & 4) {
-		t = tile + TileDiffXY(0, 1);
-		if (!TerraformTileHeight(&ts, t, TileHeight(t) + direction)) {
-			return CMD_ERROR;
-		}
+	if ((p1 & SLOPE_S) != 0) {
+		TileIndex t = tile + TileDiffXY(1, 1);
+		CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction);
+		if (CmdFailed(cost)) return cost;
+		total_cost.AddCost(cost);
 	}
 
-	if (p1 & 8) {
-		t = tile + TileDiffXY(0, 0);
-		if (!TerraformTileHeight(&ts, t, TileHeight(t) + direction)) {
-			return CMD_ERROR;
-		}
+	if ((p1 & SLOPE_E) != 0) {
+		TileIndex t = tile + TileDiffXY(0, 1);
+		CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction);
+		if (CmdFailed(cost)) return cost;
+		total_cost.AddCost(cost);
 	}
 
+	if ((p1 & SLOPE_N) != 0) {
+		TileIndex t = tile + TileDiffXY(0, 0);
+		CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction);
+		if (CmdFailed(cost)) return cost;
+		total_cost.AddCost(cost);
+	}
+
+	/* Check if the terraforming is valid wrt. tunnels, bridges and objects on the surface */
 	{
-		/* Check if tunnel would take damage */
 		int count;
 		TileIndex *ti = ts.tile_table;
 
 		for (count = ts.tile_table_count; count != 0; count--, ti++) {
 			TileIndex tile = *ti;
 
-			uint z_min = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
-			uint z_max = z_min;
-			uint t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
-			z_min = min(z_min, t);
-			z_max = max(z_max, t);
-			t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
-			z_min = min(z_min, t);
-			z_max = max(z_max, t);
-			t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
-			z_min = min(z_min, t);
-			z_max = max(z_max, t);
+			/* Find new heights of tile corners */
+			uint z_N = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
+			uint z_W = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
+			uint z_S = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
+			uint z_E = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
 
+			/* Find min and max height of tile */
+			uint z_min = min(min(z_N, z_W), min(z_S, z_E));
+			uint z_max = max(max(z_N, z_W), max(z_S, z_E));
+
+			/* Compute tile slope */
+			uint tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT);
+			if (z_W > z_min) tileh += SLOPE_W;
+			if (z_S > z_min) tileh += SLOPE_S;
+			if (z_E > z_min) tileh += SLOPE_E;
+			if (z_N > z_min) tileh += SLOPE_N;
+
+			/* Check if bridge would take damage */
 			if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) &&
 					GetBridgeHeight(GetSouthernBridgeEnd(tile)) <= z_max * TILE_HEIGHT) {
+				_terraform_err_tile = tile; // highlight the tile under the bridge
 				return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 			}
+			/* Check if tunnel would take damage */
 			if (direction == -1 && IsTunnelInWay(tile, z_min * TILE_HEIGHT)) {
+				_terraform_err_tile = tile; // highlight the tile above the tunnel
 				return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
 			}
+			/* Check tiletype-specific things, and add extra-cost */
+			CommandCost cost = _tile_type_procs[GetTileType(tile)]->terraform_tile_proc(tile, flags, z_min * TILE_HEIGHT, (Slope) tileh);
+			if (CmdFailed(cost)) {
+				_terraform_err_tile = tile;
+				return cost;
+			}
+			total_cost.AddCost(cost);
 		}
 	}
 
 	if (flags & DC_EXEC) {
-		/* Clear the landscape at the tiles */
-		{
-			int count;
-			TileIndex *ti = ts.tile_table;
-			for (count = ts.tile_table_count; count != 0; count--, ti++) {
-				DoCommand(*ti, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
-			}
-		}
-
 		/* change the height */
 		{
 			int count;
@@ -341,7 +325,6 @@
 				TileIndex til = mod->tile;
 
 				SetTileHeight(til, mod->height);
-				TerraformAddDirtyTileAround(&ts, til);
 			}
 		}
 
@@ -354,7 +337,7 @@
 			}
 		}
 	}
-	return ts.cost;
+	return total_cost;
 }
 
 
@@ -400,7 +383,7 @@
 	BEGIN_TILE_LOOP(tile2, size_x, size_y, tile) {
 		curh = TileHeight(tile2);
 		while (curh != h) {
-			ret = DoCommand(tile2, 8, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND);
+			ret = DoCommand(tile2, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND);
 			if (CmdFailed(ret)) break;
 
 			if (flags & DC_EXEC) {
@@ -409,7 +392,7 @@
 					_additional_cash_required = ret.GetCost();
 					return cost;
 				}
-				DoCommand(tile2, 8, (curh > h) ? 0 : 1, flags, CMD_TERRAFORM_LAND);
+				DoCommand(tile2, SLOPE_N, (curh > h) ? 0 : 1, flags, CMD_TERRAFORM_LAND);
 			}
 
 			cost.AddCost(ret);
@@ -434,8 +417,6 @@
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
-	if (!EnsureNoVehicle(tile)) return CMD_ERROR;
-
 	if (IsOwnedLandTile(tile) && IsTileOwner(tile, _current_player)) {
 		return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
 	}
@@ -806,6 +787,11 @@
 	_opt.snow_line = _patches.snow_line_height * TILE_HEIGHT;
 }
 
+static CommandCost TerraformTile_Clear(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 extern const TileTypeProcs _tile_type_clear_procs = {
 	DrawTile_Clear,           ///< draw_tile_proc
 	GetSlopeZ_Clear,          ///< get_slope_z_proc
@@ -820,4 +806,5 @@
 	NULL,                     ///< get_produced_cargo_proc
 	NULL,                     ///< vehicle_enter_tile_proc
 	GetFoundation_Clear,      ///< get_foundation_proc
+	TerraformTile_Clear,      ///< terraform_tile_proc
 };
--- a/src/command.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/command.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -570,7 +570,7 @@
 	SubtractMoneyFromPlayer(res2);
 
 	if (IsLocalPlayer() && _game_mode != GM_EDITOR) {
-		if (res2.GetCost() != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
+		if (res2.GetCost() != 0 && tile != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
 		if (_additional_cash_required != 0) {
 			SetDParam(0, _additional_cash_required);
 			if (my_cmd) ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, error_part1, x, y);
--- a/src/date.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/date.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -182,7 +182,7 @@
 };
 
 extern void WaypointsDailyLoop();
-extern void TextMessageDailyLoop();
+extern void ChatMessageDailyLoop();
 extern void EnginesDailyLoop();
 extern void DisasterDailyLoop();
 
@@ -245,7 +245,7 @@
 	/* yeah, increase day counter and call various daily loops */
 	_date++;
 
-	TextMessageDailyLoop();
+	ChatMessageDailyLoop();
 
 	DisasterDailyLoop();
 	WaypointsDailyLoop();
@@ -309,7 +309,7 @@
 
 		/* Because the _date wraps here, and text-messages expire by game-days, we have to clean out
 		 *  all of them if the date is set back, else those messages will hang for ever */
-		InitTextMessage();
+		InitChatMessage();
 	}
 
 	if (_patches.auto_euro) CheckSwitchToEuro();
--- a/src/debug.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/debug.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -94,7 +94,14 @@
 		} else
 #endif /* ENABLE_NETWORK */
 		{
+#if defined(WINCE)
+			/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
+			TCHAR tbuf[512];
+			_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
+			NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
+#else
 			fprintf(stderr, "dbg: [%s] %s\n", dbg, buf);
+#endif
 			IConsoleDebug(dbg, buf);
 		}
 	}
--- a/src/depot.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/depot.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -37,6 +37,8 @@
  */
 Depot::~Depot()
 {
+	if (CleaningPool()) return;
+
 	/* Clear the depot from all order-lists */
 	RemoveOrderFromAllVehicles(OT_GOTO_DEPOT, this->index);
 
--- a/src/depot.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/depot.h	Sun Sep 02 11:17:33 2007 +0000
@@ -12,6 +12,7 @@
 #include "road_map.h"
 #include "rail_map.h"
 #include "water_map.h"
+#include "station_map.h"
 
 struct Depot;
 DECLARE_OLD_POOL(Depot, Depot, 3, 8000)
@@ -23,7 +24,7 @@
 	Depot(TileIndex xy = 0) : xy(xy) {}
 	~Depot();
 
-	bool IsValid() const { return this->xy != 0; }
+	inline bool IsValid() const { return this->xy != 0; }
 };
 
 static inline bool IsValidDepotID(DepotID index)
@@ -63,7 +64,7 @@
 			return IsTileType(tile, MP_RAILWAY) && GetRailTileType(tile)  == RAIL_TILE_DEPOT;
 
 		case TRANSPORT_ROAD:
-			return IsTileType(tile, MP_ROAD)  && GetRoadTileType(tile)  == ROAD_TILE_DEPOT;
+			return IsTileType(tile, MP_ROAD)    && GetRoadTileType(tile)  == ROAD_TILE_DEPOT;
 
 		case TRANSPORT_WATER:
 			return IsTileType(tile, MP_WATER)   && GetWaterTileType(tile) == WATER_TILE_DEPOT;
@@ -74,6 +75,21 @@
 	}
 }
 
+/**
+ * Is the given tile a tile with a depot on it?
+ * @param tile the tile to check
+ * @return true if and only if there is a depot on the tile.
+ */
+static inline bool IsDepotTile(TileIndex tile)
+{
+	switch (GetTileType(tile)) {
+		case MP_ROAD:    return GetRoadTileType(tile)  == ROAD_TILE_DEPOT;
+		case MP_WATER:   return GetWaterTileType(tile) == WATER_TILE_DEPOT;
+		case MP_RAILWAY: return GetRailTileType(tile)  == RAIL_TILE_DEPOT;
+		case MP_STATION: return IsHangar(tile);
+		default:         return false;
+	}
+}
 
 /**
  * Find out if the slope of the tile is suitable to build a depot of given direction
--- a/src/depot_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/depot_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -130,27 +130,20 @@
 
 extern int WagonLengthToPixels(int len);
 
+/**
+ * This is the Callback method after the cloning attempt of a vehicle
+ * @param success indicates completion (or not) of the operation
+ * @param tile unused
+ * @param p1 unused
+ * @param p2 unused
+ */
 void CcCloneVehicle(bool success, TileIndex tile, uint32 p1, uint32 p2)
 {
 	if (!success) return;
-	switch(GetVehicle(p1)->type) {
-		case VEH_TRAIN:    CcCloneTrain(   true, tile, p1, p2); break;
-		case VEH_ROAD:     CcCloneRoadVeh( true, tile, p1, p2); break;
-		case VEH_SHIP:     CcCloneShip(    true, tile, p1, p2); break;
-		case VEH_AIRCRAFT: CcCloneAircraft(true, tile, p1, p2); break;
-		default: NOT_REACHED();
-	}
-}
 
-static inline void ShowVehicleViewWindow(const Vehicle *v)
-{
-	switch (v->type) {
-		case VEH_TRAIN:    ShowTrainViewWindow(v);    break;
-		case VEH_ROAD:     ShowRoadVehViewWindow(v);  break;
-		case VEH_SHIP:     ShowShipViewWindow(v);     break;
-		case VEH_AIRCRAFT: ShowAircraftViewWindow(v); break;
-		default: NOT_REACHED();
-	}
+	Vehicle *v = GetVehicle(_new_vehicle_id);
+
+	ShowVehicleViewWindow(v);
 }
 
 static void DepotSellAllConfirmationCallback(Window *w, bool confirmed)
@@ -286,7 +279,7 @@
 		/*Draw the train counter */
 		i = 0;
 		u = v;
-		do i++; while ( (u=u->next) != NULL); // Determine length of train
+		do i++; while ((u = u->Next()) != NULL); // Determine length of train
 		SetDParam(0, i);                      // Set the counter
 		DrawStringRightAligned(w->widget[DEPOT_WIDGET_MATRIX].right - 1, y + 4, STR_TINY_BLACK, 0); // Draw the counter
 	}
@@ -363,10 +356,10 @@
 			x += skip;
 
 			/* find the vehicle in this row that was clicked */
-			while (v != NULL && (x -= v->u.rail.cached_veh_length) >= 0) v = v->next;
+			while (v != NULL && (x -= v->u.rail.cached_veh_length) >= 0) v = v->Next();
 
 			/* if an articulated part was selected, find its parent */
-			while (v != NULL && IsArticulatedPart(v)) v = GetPrevVehicleInChain(v);
+			while (v != NULL && IsArticulatedPart(v)) v = v->Previous();
 
 			d->wagon = v;
 
@@ -405,7 +398,7 @@
 	if (wagon == NULL) {
 		if (head != NULL) wagon = GetLastVehicleInChain(head);
 	} else  {
-		wagon = GetPrevVehicleInChain(wagon);
+		wagon = wagon->Previous();
 		if (wagon == NULL) return;
 	}
 
@@ -482,7 +475,7 @@
 	if (v == NULL) return;
 
 	if (v->HasFront() && !v->IsPrimaryVehicle()) {
-		v = GetFirstVehicleInChain(v);
+		v = v->First();
 		/* Do nothing when clicking on a train in depot with no loc attached */
 		if (v->type == VEH_TRAIN && !IsFrontEngine(v)) return;
 	}
@@ -902,7 +895,7 @@
 							} else if (gdvp.wagon == NULL || gdvp.wagon->index != sel) {
 								TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head);
 							} else if (gdvp.head != NULL && IsFrontEngine(gdvp.head)) {
-								ShowTrainViewWindow(gdvp.head);
+								ShowVehicleViewWindow(gdvp.head);
 							}
 						}
 					} else if (GetVehicleFromDepotWndPt(w, e->we.dragdrop.pt.x, e->we.dragdrop.pt.y, &v, NULL) == MODE_DRAG_VEHICLE &&
--- a/src/disaster_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/disaster_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -158,7 +158,7 @@
 	VehiclePositionChanged(v);
 	EndVehicleMove(v);
 
-	if ((u = v->next) != NULL) {
+	if ((u = v->Next()) != NULL) {
 		int safe_x = clamp(x, 0, MapMaxX() * TILE_SIZE);
 		int safe_y = clamp(y - 1, 0, MapMaxY() * TILE_SIZE);
 		BeginVehicleMove(u);
@@ -173,7 +173,7 @@
 		VehiclePositionChanged(u);
 		EndVehicleMove(u);
 
-		if ((u = u->next) != NULL) {
+		if ((u = u->Next()) != NULL) {
 			BeginVehicleMove(u);
 			u->x_pos = x;
 			u->y_pos = y;
@@ -611,7 +611,7 @@
 		w = new DisasterVehicle();
 		if (w == NULL) return;
 
-		u->next = w;
+		u->SetNext(w);
 		InitializeDisasterVehicle(w, -6 * TILE_SIZE, v->y_pos, 0, DIR_SW, ST_Big_Ufo_Destroyer_Shadow);
 		w->vehstatus |= VS_SHADOW;
 	} else if (v->current_order.dest == 0) {
@@ -782,7 +782,7 @@
 	/* Allocate shadow too? */
 	u = new DisasterVehicle();
 	if (u != NULL) {
-		v->next = u;
+		v->SetNext(u);
 		InitializeDisasterVehicle(u, x, 0, 0, DIR_SE, ST_Zeppeliner_Shadow);
 		u->vehstatus |= VS_SHADOW;
 	}
@@ -807,7 +807,7 @@
 	/* Allocate shadow too? */
 	u = new DisasterVehicle();
 	if (u != NULL) {
-		v->next = u;
+		v->SetNext(u);
 		InitializeDisasterVehicle(u, x, 0, 0, DIR_SE, ST_Small_Ufo_Shadow);
 		u->vehstatus |= VS_SHADOW;
 	}
@@ -843,7 +843,7 @@
 
 	u = new DisasterVehicle();
 	if (u != NULL) {
-		v->next = u;
+		v->SetNext(u);
 		InitializeDisasterVehicle(u, x, y, 0, DIR_SE, ST_Airplane_Shadow);
 		u->vehstatus |= VS_SHADOW;
 	}
@@ -878,13 +878,13 @@
 
 	u = new DisasterVehicle();
 	if (u != NULL) {
-		v->next = u;
+		v->SetNext(u);
 		InitializeDisasterVehicle(u, x, y, 0, DIR_SW, ST_Helicopter_Shadow);
 		u->vehstatus |= VS_SHADOW;
 
 		w = new DisasterVehicle();
 		if (w != NULL) {
-			u->next = w;
+			u->SetNext(w);
 			InitializeDisasterVehicle(w, x, y, 140, DIR_SW, ST_Helicopter_Rotors);
 		}
 	}
@@ -910,7 +910,7 @@
 	/* Allocate shadow too? */
 	u = new DisasterVehicle();
 	if (u != NULL) {
-		v->next = u;
+		v->SetNext(u);
 		InitializeDisasterVehicle(u, x, y, 0, DIR_NW, ST_Big_Ufo_Shadow);
 		u->vehstatus |= VS_SHADOW;
 	}
--- a/src/dummy_land.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/dummy_land.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -68,6 +68,11 @@
 	return 0;
 }
 
+static CommandCost TerraformTile_Dummy(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return_cmd_error(STR_0001_OFF_EDGE_OF_MAP);
+}
+
 extern const TileTypeProcs _tile_type_dummy_procs = {
 	DrawTile_Dummy,           /* draw_tile_proc */
 	GetSlopeZ_Dummy,          /* get_slope_z_proc */
@@ -82,4 +87,5 @@
 	NULL,                     /* get_produced_cargo_proc */
 	NULL,                     /* vehicle_enter_tile_proc */
 	GetFoundation_Dummy,      /* get_foundation_proc */
+	TerraformTile_Dummy,      /* terraform_tile_proc */
 };
--- a/src/economy.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/economy.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -70,7 +70,7 @@
 		uint num = 0;
 
 		FOR_ALL_STATIONS(st) {
-			if (st->owner == owner) num += CountBitsSet(st->facilities);
+			if (st->owner == owner) num += COUNTBITS(st->facilities);
 		}
 
 		value.AddCost(num * _price.station_value * 25);
@@ -146,7 +146,7 @@
 		const Station* st;
 
 		FOR_ALL_STATIONS(st) {
-			if (st->owner == owner) num += CountBitsSet(st->facilities);
+			if (st->owner == owner) num += COUNTBITS(st->facilities);
 		}
 		_score_part[owner][SCORE_STATIONS] = num;
 	}
@@ -191,7 +191,7 @@
 
 /* Generate score for variety of cargo */
 	{
-		uint num = CountBitsSet(p->cargo_types);
+		uint num = COUNTBITS(p->cargo_types);
 		_score_part[owner][SCORE_CARGO] = num;
 		if (update) p->cargo_types = 0;
 	}
@@ -508,11 +508,10 @@
 
 void DrawNewsBankrupcy(Window *w)
 {
-	Player *p;
-
 	DrawNewsBorder(w);
 
-	p = GetPlayer((PlayerID)GB(WP(w,news_d).ni->string_id, 0, 4));
+	const NewsItem *ni = WP(w, news_d).ni;
+	Player *p = GetPlayer((PlayerID)GB(ni->string_id, 0, 4));
 	DrawPlayerFace(p->face, p->player_color, 2, 23);
 	GfxFillRect(3, 23, 3 + 91, 23 + 118, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
 
@@ -520,9 +519,9 @@
 
 	DrawStringMultiCenter(49, 148, STR_7058_PRESIDENT, 94);
 
-	switch (WP(w,news_d).ni->string_id & 0xF0) {
+	switch (ni->string_id & 0xF0) {
 	case NB_BTROUBLE:
-		DrawStringCentered(w->width>>1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
+		DrawStringCentered(w->width >> 1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
 
 		SetDParam(0, p->index);
 
@@ -533,25 +532,21 @@
 			w->width - 101);
 		break;
 
-	case NB_BMERGER: {
-		int32 price;
-
-		DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
-		CopyInDParam(0,WP(w,news_d).ni->params, 2);
-		SetDParam(2, p->index);
-		price = WP(w,news_d).ni->params[2];
-		SetDParam(3, price);
+	case NB_BMERGER:
+		DrawStringCentered(w->width >> 1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
+		SetDParam(0, ni->params[0]);
+		SetDParam(1, p->index);
+		SetDParam(2, ni->params[1]);
 		DrawStringMultiCenter(
 			((w->width - 101) >> 1) + 98,
 			90,
-			price==0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR,
+			ni->params[1] == 0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR,
 			w->width - 101);
 		break;
-	}
 
 	case NB_BBANKRUPT:
-		DrawStringCentered(w->width>>1, 1, STR_705C_BANKRUPT, 0);
-		CopyInDParam(0,WP(w,news_d).ni->params, 2);
+		DrawStringCentered(w->width >> 1, 1, STR_705C_BANKRUPT, 0);
+		SetDParam(0, ni->params[0]);
 		DrawStringMultiCenter(
 			((w->width - 101) >> 1) + 98,
 			90,
@@ -560,9 +555,9 @@
 		break;
 
 	case NB_BNEWCOMPANY:
-		DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
+		DrawStringCentered(w->width >> 1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
 		SetDParam(0, p->index);
-		CopyInDParam(1,WP(w,news_d).ni->params, 2);
+		SetDParam(1, ni->params[0]);
 		DrawStringMultiCenter(
 			((w->width - 101) >> 1) + 98,
 			90,
@@ -587,28 +582,25 @@
 		return STR_02B6;
 	case NB_BMERGER:
 		SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
-		SetDParam(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
-		CopyInDParam(2,ni->params, 2);
-		SetDParam(4, p->index);
-		CopyInDParam(5,ni->params + 2, 1);
+		SetDParam(1, ni->params[1] == 0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR);
+		SetDParam(2, ni->params[0]);
+		SetDParam(3, p->index);
+		SetDParam(4, ni->params[1]);
 		return STR_02B6;
 	case NB_BBANKRUPT:
 		SetDParam(0, STR_705C_BANKRUPT);
 		SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
-		CopyInDParam(2,ni->params, 2);
+		SetDParam(2, ni->params[0]);
 		return STR_02B6;
 	case NB_BNEWCOMPANY:
 		SetDParam(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
 		SetDParam(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
 		SetDParam(2, p->index);
-		CopyInDParam(3,ni->params, 2);
+		SetDParam(3, ni->params[0]);
 		return STR_02B6;
 	default:
 		NOT_REACHED();
 	}
-
-	/* useless, but avoids compiler warning this way */
-	return 0;
 }
 
 static void PlayersGenStatistics()
@@ -1419,7 +1411,7 @@
 	/* Start unloading in at the first possible moment */
 	front_v->load_unload_time_rem = 1;
 
-	for (Vehicle *v = front_v; v != NULL; v = v->next) {
+	for (Vehicle *v = front_v; v != NULL; v = v->Next()) {
 		/* No cargo to unload */
 		if (v->cargo_cap == 0 || v->cargo.Empty()) continue;
 
@@ -1436,7 +1428,7 @@
 			CargoPacket *cp = *it;
 			if (!cp->paid_for &&
 					cp->source != last_visited &&
-					ge->acceptance &&
+					HASBIT(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) &&
 					(front_v->current_order.flags & OF_TRANSFER) == 0) {
 				/* Deliver goods to the station */
 				st->time_since_unload = 0;
@@ -1444,8 +1436,8 @@
 				/* handle end of route payment */
 				Money profit = DeliverGoods(cp->count, v->cargo_type, cp->source, last_visited, cp->source_xy, cp->days_in_transit);
 				cp->paid_for = true;
-				route_profit   += profit - cp->feeder_share; // display amount paid for final route delivery, A-D of a chain A-B-C-D
-				vehicle_profit += profit;                    // whole vehicle is not payed for transfers picked up earlier
+				route_profit   += profit; // display amount paid for final route delivery, A-D of a chain A-B-C-D
+				vehicle_profit += profit - cp->feeder_share;                    // whole vehicle is not payed for transfers picked up earlier
 
 				result |= 1;
 
@@ -1506,7 +1498,7 @@
 	if (--v->load_unload_time_rem != 0) {
 		if (_patches.improved_load && HASBIT(v->current_order.flags, OFB_FULL_LOAD)) {
 			/* 'Reserve' this cargo for this vehicle, because we were first. */
-			for (; v != NULL; v = v->next) {
+			for (; v != NULL; v = v->Next()) {
 				if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
 			}
 		}
@@ -1536,7 +1528,7 @@
 	StationID last_visited = v->last_station_visited;
 	Station *st = GetStation(last_visited);
 
-	for (; v != NULL; v = v->next) {
+	for (; v != NULL; v = v->Next()) {
 		if (v->cargo_cap == 0) continue;
 
 		byte load_amount = EngInfo(v->engine_type)->load_amount;
@@ -1552,13 +1544,14 @@
 			uint amount_unloaded = _patches.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
 			bool remaining; // Are there cargo entities in this vehicle that can still be unloaded here?
 
-			if (ge->acceptance && !(u->current_order.flags & OF_TRANSFER)) {
+			if (HASBIT(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.flags & OF_TRANSFER)) {
 				/* The cargo has reached it's final destination, the packets may now be destroyed */
 				remaining = v->cargo.MoveTo(NULL, amount_unloaded, CargoList::MTA_FINAL_DELIVERY, last_visited);
 
 				result |= 1;
 			} else if (u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) {
 				remaining = v->cargo.MoveTo(&ge->cargo, amount_unloaded);
+				SETBIT(ge->acceptance_pickup, GoodsEntry::PICKUP);
 
 				result |= 2;
 			} else {
@@ -1598,6 +1591,7 @@
 		/* if last speed is 0, we treat that as if no vehicle has ever visited the station. */
 		ge->last_speed = min(t, 255);
 		ge->last_age = _cur_year - u->build_year;
+		ge->days_since_pickup = 0;
 
 		/* If there's goods waiting at the station, and the vehicle
 		 * has capacity for it, load it on the vehicle. */
@@ -1633,11 +1627,11 @@
 			anything_loaded = true;
 
 			ge->cargo.MoveTo(&v->cargo, cap, CargoList::MTA_CARGO_LOAD, st->xy);
-			ge->days_since_pickup = 0;
+
+			st->time_since_load = 0;
+			st->last_vehicle_type = v->type;
 
 			unloading_time += cap;
-			st->time_since_load = 0;
-			st->last_vehicle_type = v->type;
 
 			result |= 2;
 		}
@@ -1655,7 +1649,7 @@
 	 * enough to fill the previous wagons) */
 	if (_patches.improved_load && HASBIT(u->current_order.flags, OFB_FULL_LOAD)) {
 		/* Update left cargo */
-		for (v = u; v != NULL; v = v->next) {
+		for (v = u; v != NULL; v = v->Next()) {
 			if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
 		}
 	}
@@ -1806,11 +1800,16 @@
 	Player *p;
 	CommandCost cost;
 
-	/* Check if buying shares is allowed (protection against modified clients */
-	if (!IsValidPlayer((PlayerID)p1) || !_patches.allow_shares) return CMD_ERROR;
+	/* Check if buying shares is allowed (protection against modified clients) */
+	/* Cannot buy own shares */
+	if (!IsValidPlayer((PlayerID)p1) || !_patches.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR;
+
+	p = GetPlayer((PlayerID)p1);
+
+	/* Cannot buy shares of non-existent nor bankrupted company */
+	if (!p->is_active) return CMD_ERROR;
 
 	SET_EXPENSES_TYPE(EXPENSES_OTHER);
-	p = GetPlayer((PlayerID)p1);
 
 	/* Protect new companies from hostile takeovers */
 	if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_7080_PROTECTED);
@@ -1852,11 +1851,16 @@
 	Player *p;
 	Money cost;
 
-	/* Check if buying shares is allowed (protection against modified clients */
-	if (!IsValidPlayer((PlayerID)p1) || !_patches.allow_shares) return CMD_ERROR;
+	/* Check if selling shares is allowed (protection against modified clients) */
+	/* Cannot sell own shares */
+	if (!IsValidPlayer((PlayerID)p1) || !_patches.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR;
+
+	p = GetPlayer((PlayerID)p1);
+
+	/* Cannot sell shares of non-existent nor bankrupted company */
+	if (!p->is_active) return CMD_ERROR;
 
 	SET_EXPENSES_TYPE(EXPENSES_OTHER);
-	p = GetPlayer((PlayerID)p1);
 
 	/* Those lines are here for network-protection (clients can be slow) */
 	if (GetAmountOwnedBy(p, _current_player) == 0) return CommandCost();
--- a/src/elrail.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/elrail.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -293,7 +293,8 @@
 				AddSortableSpriteToDraw(
 					sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
 					sss->x_size, sss->y_size, sss->z_size,
-					GetTileZ(ti->tile) + sss->z_offset
+					GetTileZ(ti->tile) + sss->z_offset,
+					HASBIT(_transparent_opt, TO_BUILDINGS)
 				);
 				break;
 			}
--- a/src/engine.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/engine.h	Sun Sep 02 11:17:33 2007 +0000
@@ -284,7 +284,7 @@
 	EngineRenew(EngineID from = INVALID_ENGINE, EngineID to = INVALID_ENGINE) : from(from), to(to), next(NULL) {}
 	~EngineRenew() { this->from = INVALID_ENGINE; }
 
-	bool IsValid() const { return this->from != INVALID_ENGINE; }
+	inline bool IsValid() const { return this->from != INVALID_ENGINE; }
 };
 
 #define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) if (er->IsValid())
--- a/src/fios.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/fios.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -108,7 +108,9 @@
 	char *path = _fios_path;
 
 	switch (item->type) {
-#if defined(WIN32) || defined(__OS2__)
+#if defined(WINCE)
+	case FIOS_TYPE_DRIVE: sprintf(path, PATHSEP ""); break;
+#elif defined(WIN32) || defined(__OS2__)
 	case FIOS_TYPE_DRIVE: sprintf(path, "%c:" PATHSEP, item->title[0]); break;
 #endif
 
--- a/src/functions.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/functions.h	Sun Sep 02 11:17:33 2007 +0000
@@ -136,7 +136,6 @@
 void ShowHighscoreTable(int difficulty, int8 rank);
 
 int FindFirstBit(uint32 x);
-int CountBitsSet(uint32 value);
 
 void AfterLoadTown();
 void UpdatePatches();
--- a/src/gfx.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/gfx.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -62,7 +62,7 @@
 	if (xo == 0 && yo == 0) return;
 
 	if (_cursor.visible) UndrawMouseCursor();
-	UndrawTextMessage();
+	UndrawChatMessage();
 
 	blitter->ScrollBuffer(_screen.dst_ptr, left, top, width, height, xo, yo);
 	/* This part of the screen is now dirty. */
@@ -495,10 +495,10 @@
 	DrawPixelInfo *dpi = _cur_dpi;
 	FontSize size = _cur_fontsize;
 	WChar c;
-	byte color;
 	int xo = x, yo = y;
 
-	color = real_color & 0xFF;
+	byte color = real_color & 0xFF;
+	byte previous_color = color;
 
 	if (color != 0xFE) {
 		if (x >= dpi->left + dpi->width ||
@@ -548,8 +548,12 @@
 			y += GetCharacterHeight(size);
 			goto check_bounds;
 		} else if (c >= SCC_BLUE && c <= SCC_BLACK) { // change color?
+			previous_color = color;
 			color = (byte)(c - SCC_BLUE);
 			goto switch_color;
+		} else if (c == SCC_PREVIOUS_COLOUR) { // revert to the previous color
+			Swap(color, previous_color);
+			goto switch_color;
 		} else if (c == SCC_SETX) { // {SETX}
 			x = xo + (byte)*string++;
 		} else if (c == SCC_SETXY) {// {SETXY}
@@ -840,6 +844,11 @@
 
 void DrawMouseCursor()
 {
+#if defined(WINCE)
+	/* Don't ever draw the mouse for WinCE, as we work with a stylus */
+	return;
+#endif
+
 	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
 	int x;
 	int y;
@@ -903,7 +912,7 @@
 			UndrawMouseCursor();
 		}
 	}
-	UndrawTextMessage();
+	UndrawChatMessage();
 
 	DrawOverlappedWindowForAll(left, top, right, bottom);
 
--- a/src/gfx.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/gfx.h	Sun Sep 02 11:17:33 2007 +0000
@@ -194,7 +194,7 @@
 
 uint32 InteractiveRandom(); //< Used for random sequences that are not the same on the other end of the multiplayer link
 uint InteractiveRandomRange(uint max);
-void DrawTextMessage();
+void DrawChatMessage();
 void DrawMouseCursor();
 void ScreenSizeChanged();
 void HandleExitGameRequest();
--- a/src/group.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/group.h	Sun Sep 02 11:17:33 2007 +0000
@@ -29,8 +29,6 @@
 	Group(StringID str = STR_NULL);
 	virtual ~Group();
 
-	void QuickFree();
-
 	bool IsValid() const;
 };
 
@@ -78,15 +76,17 @@
  * @param id_e The EngineID of the engine to count
  * @return The number of engines with EngineID id_e in the group
  */
-static inline uint GetGroupNumEngines(GroupID id_g, EngineID id_e)
+static inline uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e)
 {
 	if (IsValidGroupID(id_g)) return GetGroup(id_g)->num_engines[id_e];
 
-	uint num = GetPlayer(_local_player)->num_engines[id_e];
+	uint num = GetPlayer(p)->num_engines[id_e];
 	if (!IsDefaultGroupID(id_g)) return num;
 
 	const Group *g;
-	FOR_ALL_GROUPS(g) num -= g->num_engines[id_e];
+	FOR_ALL_GROUPS(g) {
+		if (g->owner == p) num -= g->num_engines[id_e];
+	}
 	return num;
 }
 
--- a/src/group_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/group_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -50,15 +50,10 @@
 
 Group::~Group()
 {
-	this->QuickFree();
+	DeleteName(this->string_id);
 	this->string_id = STR_NULL;
 }
 
-void Group::QuickFree()
-{
-	DeleteName(this->string_id);
-}
-
 bool Group::IsValid() const
 {
 	return this->string_id != STR_NULL;
@@ -221,12 +216,13 @@
 
 	if (!IsValidVehicleID(p2) || (!IsValidGroupID(new_g) && !IsDefaultGroupID(new_g))) return CMD_ERROR;
 
+	Vehicle *v = GetVehicle(p2);
+
 	if (IsValidGroupID(new_g)) {
 		Group *g = GetGroup(new_g);
-		if (g->owner != _current_player) return CMD_ERROR;
+		if (g->owner != _current_player || g->vehicle_type != v->type) return CMD_ERROR;
 	}
 
-	Vehicle *v = GetVehicle(p2);
 	if (v->owner != _current_player || !v->IsPrimaryVehicle()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
@@ -376,7 +372,7 @@
 
 	assert(v->IsValid() && v->type == VEH_TRAIN && IsFrontEngine(v));
 
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g);
 
 		u->group_id = new_g;
@@ -399,7 +395,7 @@
 	assert(v->IsValid() && v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v)));
 
 	GroupID new_g = IsFrontEngine(v) ? v->group_id : (GroupID)DEFAULT_GROUP;
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g);
 
 		u->group_id = new_g;
--- a/src/group_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/group_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -451,36 +451,20 @@
 			max = min(w->vscroll2.pos + w->vscroll2.cap, gv->l.list_length);
 			for (i = w->vscroll2.pos ; i < max ; ++i) {
 				const Vehicle* v = gv->sort_list[i];
-				StringID str;
 
 				assert(v->type == gv->vehicle_type && v->owner == owner);
 
 				DrawVehicleImage(v, x + 19, y2 + 6, w->hscroll.cap, 0, gv->vehicle_sel);
 				DrawVehicleProfitButton(v, x, y2 + 13);
 
-				if (IsVehicleInDepot(v)) {
-					str = STR_021F;
-				} else {
-					str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
-				}
 				SetDParam(0, v->unitnumber);
-				DrawString(x, y2 + 2, str, 0);
+				DrawString(x, y2 + 2, v->IsInDepot() ? STR_021F : (v->age > v->max_age - 366 ? STR_00E3 : STR_00E2), 0);
 
 				if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG2) DrawSmallOrderList(v, x + 138, y2);
 
-				if (v->profit_this_year < 0) {
-					str = v->profit_last_year < 0 ?
-							STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :
-							STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR;
-				} else {
-					str = v->profit_last_year < 0 ?
-							STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :
-							STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR;
-				}
-
 				SetDParam(0, v->profit_this_year);
 				SetDParam(1, v->profit_last_year);
-				DrawString(x + 19, y2 + w->resize.step_height - 8, str, 0);
+				DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
 
 				if (IsValidGroupID(v->group_id)) {
 					SetDParam(0, v->group_id);
@@ -668,13 +652,7 @@
 					v = gv->sort_list[id_v];
 
 					if (vindex == v->index) {
-						switch (gv->vehicle_type) {
-							default: NOT_REACHED(); break;
-							case VEH_TRAIN:    ShowTrainViewWindow(v);    break;
-							case VEH_ROAD:     ShowRoadVehViewWindow(v);  break;
-							case VEH_SHIP:     ShowShipViewWindow(v);     break;
-							case VEH_AIRCRAFT: ShowAircraftViewWindow(v); break;
-						}
+						ShowVehicleViewWindow(v);
 					}
 
 					break;
@@ -780,6 +758,8 @@
 
 void ShowPlayerGroup(PlayerID player, VehicleType vehicle_type)
 {
+	if (!IsValidPlayer(player)) return;
+
 	WindowClass wc;
 
 	switch (vehicle_type) {
--- a/src/gui.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/gui.h	Sun Sep 02 11:17:33 2007 +0000
@@ -42,17 +42,14 @@
 void ReinitGuiAfterToggleElrail(bool disable);
 
 /* train_gui.cpp */
-void ShowTrainViewWindow(const Vehicle *v);
 void ShowOrdersWindow(const Vehicle *v);
 
 /* road_gui.cpp */
 void ShowBuildRoadToolbar(RoadType roadtype);
 void ShowBuildRoadScenToolbar();
-void ShowRoadVehViewWindow(const Vehicle *v);
 
 /* dock_gui.cpp */
 void ShowBuildDocksToolbar();
-void ShowShipViewWindow(const Vehicle *v);
 
 /* aircraft_gui.cpp */
 void ShowBuildAirToolbar();
--- a/src/industry.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/industry.h	Sun Sep 02 11:17:33 2007 +0000
@@ -118,11 +118,12 @@
 	Date construction_date;             ///< Date of the construction of the industry
 	uint8 construction_type;            ///< Way the industry was constructed (@see IndustryConstructionType)
 	Date last_cargo_accepted_at;        ///< Last day cargo was accepted by this industry
+	byte selected_layout;               ///< Which tile layout was used when creating the industry
 
 	Industry(TileIndex tile = 0) : xy(tile) {}
 	~Industry();
 
-	bool IsValid() const { return this->xy != 0; }
+	inline bool IsValid() const { return this->xy != 0; }
 };
 
 struct IndustryTileTable {
@@ -132,7 +133,7 @@
 
 /** Data related to the handling of grf files.  Common to both industry and industry tile */
 struct GRFFileProps {
-	uint8 subst_id;
+	uint16 subst_id;
 	uint16 local_id;                      ///< id defined by the grf file for this industry
 	struct SpriteGroup *spritegroup;      ///< pointer to the different sprites of the industry
 	const struct GRFFile *grffile;        ///< grf file that introduced this industry
@@ -211,7 +212,7 @@
 
 /* industry_cmd.cpp*/
 const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries data
-const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx, bool full_check = true);  ///< Array of industry tiles data
+const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles data
 void ResetIndustries();
 void PlantRandomFarmField(const Industry *i);
 
@@ -219,6 +220,22 @@
 extern IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
 extern IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
 
+static inline IndustryGfx GetTranslatedIndustryTileID(IndustryGfx gfx)
+{
+	/* the 0xFF should be GFX_WATERTILE_SPECIALCHECK but for reasons of include mess,
+	 * we'll simplify the writing.
+	 * Basically, the first test is required since the GFX_WATERTILE_SPECIALCHECK value
+	 * will never be assigned as a tile index and is only required in order to do some
+	 * tests while building the industry (as in WATER REQUIRED */
+	if (gfx != 0xFF) {
+		assert(gfx < INVALID_INDUSTRYTILE);
+		const IndustryTileSpec *it = &_industry_tile_specs[gfx];
+		return it->grf_prop.override == INVALID_INDUSTRYTILE ? gfx : it->grf_prop.override;
+	} else {
+		return gfx;
+	}
+}
+
 /* smallmap_gui.cpp */
 void BuildIndustriesLegend();
 
--- a/src/industry_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/industry_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -113,23 +113,19 @@
  * This will ensure at once : proper access and
  * not allowing modifications of it.
  * @param gfx of industrytile (which is the index in _industry_tile_specs)
- * @param full_check (default to true) verify if an override is available.
- *  If so, use it instead of the gfx provided.
  * @pre gfx < INVALID_INDUSTRYTILE
  * @return a pointer to the corresponding industrytile spec
  **/
-const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx, bool full_check)
+const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx)
 {
 	assert(gfx < INVALID_INDUSTRYTILE);
-	const IndustryTileSpec *its = &_industry_tile_specs[gfx];
-	if (full_check && its->grf_prop.override != INVALID_INDUSTRYTILE) {
-		its = &_industry_tile_specs[its->grf_prop.override];
-	}
-	return its;
+	return &_industry_tile_specs[gfx];
 }
 
 Industry::~Industry()
 {
+	if (CleaningPool()) return;
+
 	/* Industry can also be destroyed when not fully initialized.
 	 * This means that we do not have to clear tiles either. */
 	if (this->width == 0) {
@@ -272,9 +268,11 @@
 		} else {
 			/* No sprite group (or no valid one) found, meaning no graphics associated.
 			 * Use the substitute one instead */
-			gfx = indts->grf_prop.subst_id;
-			/* And point the industrytile spec accordingly */
-			indts = GetIndustryTileSpec(indts->grf_prop.subst_id);
+			if (indts->grf_prop.subst_id != INVALID_INDUSTRYTILE) {
+				gfx = indts->grf_prop.subst_id;
+				/* And point the industrytile spec accordingly */
+				indts = GetIndustryTileSpec(gfx);
+			}
 		}
 	}
 
@@ -1181,14 +1179,15 @@
 	_error_message = STR_0239_SITE_UNSUITABLE;
 
 	do {
+		IndustryGfx gfx = GetTranslatedIndustryTileID(it->gfx);
 		TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
 
 		if (!IsValidTile(cur_tile)) {
-			if (it->gfx == 0xff) continue;
+			if (gfx == GFX_WATERTILE_SPECIALCHECK) continue;
 			return false;
 		}
 
-		if (it->gfx == 0xFF) {
+		if (gfx == GFX_WATERTILE_SPECIALCHECK) {
 			if (!IsTileType(cur_tile, MP_WATER) ||
 					GetTileSlope(cur_tile, NULL) != SLOPE_FLAT) {
 				return false;
@@ -1202,7 +1201,7 @@
 
 			if (HASBIT(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
 				if (custom_shape_check != NULL) *custom_shape_check = true;
-				if (!PerformIndustryTileSlopeCheck(cur_tile, its, type, it->gfx)) return false;
+				if (!PerformIndustryTileSlopeCheck(cur_tile, its, type, gfx)) return false;
 			} else {
 				if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
 					/* As soon as the tile is not water, bail out.
@@ -1340,7 +1339,7 @@
 			if (!CheckCanTerraformSurroundingTiles(tile_walk, h, 0)) return false;
 			/* This is not 100% correct check, but the best we can do without modifying the map.
 			 *  What is missing, is if the difference in height is more than 1.. */
-			if (CmdFailed(DoCommand(tile_walk, 8, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND))) return false;
+			if (CmdFailed(DoCommand(tile_walk, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND))) return false;
 		}
 	} END_TILE_LOOP(tile_walk, size_x, size_y, cur_tile)
 
@@ -1352,7 +1351,7 @@
 				/* We give the terraforming for free here, because we can't calculate
 				 *  exact cost in the test-round, and as we all know, that will cause
 				 *  a nice assert if they don't match ;) */
-				DoCommand(tile_walk, 8, (curh > h) ? 0 : 1, flags, CMD_TERRAFORM_LAND);
+				DoCommand(tile_walk, SLOPE_N, (curh > h) ? 0 : 1, flags, CMD_TERRAFORM_LAND);
 				curh += (curh > h) ? -1 : 1;
 			}
 		} END_TILE_LOOP(tile_walk, size_x, size_y, cur_tile)
@@ -1394,7 +1393,7 @@
 	return true;
 }
 
-static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, const Town *t, Owner owner)
+static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, byte layout, const Town *t, Owner owner)
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 	uint32 r;
@@ -1441,6 +1440,11 @@
 	i->construction_type = (_game_mode == GM_EDITOR) ? ICT_SCENARIO_EDITOR :
 			(_generating_world ? ICT_MAP_GENERATION : ICT_NORMAL_GAMEPLAY);
 
+	/* Adding 1 here makes it conform to specs of var44 of varaction2 for industries
+	 * 0 = created prior of newindustries
+	 * else, chosen layout + 1 */
+	i->selected_layout = layout + 1;
+
 	if (!_generating_world) i->last_month_production[0] = i->last_month_production[1] = 0;
 
 	i->prod_level = 0x10;
@@ -1448,7 +1452,7 @@
 	do {
 		TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
 
-		if (it->gfx != 0xFF) {
+		if (it->gfx != GFX_WATERTILE_SPECIALCHECK) {
 			byte size;
 
 			size = it->ti.x;
@@ -1512,7 +1516,7 @@
 
 	if (flags & DC_EXEC) {
 		if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
-		DoCreateNewIndustry(i, tile, type, it, t, OWNER_NONE);
+		DoCreateNewIndustry(i, tile, type, it, itspec_index, t, OWNER_NONE);
 		i_auto_delete.Detach();
 	}
 
@@ -1967,6 +1971,10 @@
 			)) >> 8;
 }
 
+static CommandCost TerraformTile_Industry(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); // funny magic bulldozer
+}
 
 extern const TileTypeProcs _tile_type_industry_procs = {
 	DrawTile_Industry,           /* draw_tile_proc */
@@ -1982,6 +1990,7 @@
 	GetProducedCargo_Industry,   /* get_produced_cargo_proc */
 	NULL,                        /* vehicle_enter_tile_proc */
 	GetFoundation_Industry,      /* get_foundation_proc */
+	TerraformTile_Industry,      /* terraform_tile_proc */
 };
 
 static const SaveLoad _industry_desc[] = {
@@ -2015,6 +2024,7 @@
 	SLE_CONDVAR(Industry, construction_date,          SLE_INT32,                 70, SL_MAX_VERSION),
 	SLE_CONDVAR(Industry, construction_type,          SLE_UINT8,                 70, SL_MAX_VERSION),
 	SLE_CONDVAR(Industry, last_cargo_accepted_at,     SLE_INT32,                 70, SL_MAX_VERSION),
+	SLE_CONDVAR(Industry, selected_layout,            SLE_UINT8,                 73, SL_MAX_VERSION),
 
 	/* reserve extra space in savegame here. (currently 32 bytes) */
 	SLE_CONDNULL(32, 2, SL_MAX_VERSION),
--- a/src/industry_map.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/industry_map.h	Sun Sep 02 11:17:33 2007 +0000
@@ -48,6 +48,7 @@
 	GFX_BUBBLE_CATCHER                 = 162,
 	GFX_TOFFEE_QUARY                   = 165,
 	GFX_SUGAR_MINE_SIEVE               = 174,
+	GFX_WATERTILE_SPECIALCHECK         = 255,  ///< not really a tile, but rather a very special check
 };
 
 /**
@@ -132,7 +133,7 @@
 static inline IndustryGfx GetIndustryGfx(TileIndex t)
 {
 	assert(IsTileType(t, MP_INDUSTRY));
-	return _m[t].m5;
+	return GetTranslatedIndustryTileID(_m[t].m5 | (GB(_m[t].m6, 2, 1) << 8));
 }
 
 /**
--- a/src/lang/american.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/american.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Too close to edge of map
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Not enough cash - requires {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flat land required
 STR_0008_WAITING                                                :{BLACK}Waiting: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... buoy is in use!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordinates: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Can't remove part of station...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Can't convert railtype here...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Which map do you want to play?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximum allowed clients:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Choose a maximum number of clients. Not all slots need to be filled.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (advertize)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 players
-STR_NETWORK_1_PLAYERS                                           :1 player
-STR_NETWORK_2_PLAYERS                                           :2 players
-STR_NETWORK_3_PLAYERS                                           :3 players
-STR_NETWORK_4_PLAYERS                                           :4 players
-STR_NETWORK_5_PLAYERS                                           :5 players
-STR_NETWORK_6_PLAYERS                                           :6 players
-STR_NETWORK_7_PLAYERS                                           :7 players
-STR_NETWORK_8_PLAYERS                                           :8 players
-STR_NETWORK_9_PLAYERS                                           :9 players
-STR_NETWORK_10_PLAYERS                                          :10 players
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max companies:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limit the server to a certain number of companies
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max spectators:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limit the server to a certain number of spectators
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Language spoken:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Other players will know which language is spoken on the server.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start Game
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start a new network game from a random map, or scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Load Game
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Railroad track with normal signals
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Railroad track with pre-signals
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Railroad track with exit-signals
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Railroad track with combo-signals
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Railway track with normal and pre-signals
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Railway track with normal and exit-signals
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Railway track with normal and combo-signals
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Railway track with pre- and exit-signals
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Railway track with pre- and combo-signals
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Railway track with exit- and combo-signals
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Must remove railway station first
 
 
@@ -3361,10 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Rename the selected group
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Click to protect this group from global autoreplace
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit this year: {GREEN}{CURRENCY} {BLACK}(last year: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit this year: {RED}{CURRENCY} {BLACK}(last year: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit this year: {GREEN}{CURRENCY} {BLACK}(last year: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit this year: {RED}{CURRENCY} {BLACK}(last year: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/brazilian_portuguese.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Muito próximo da borda do mapa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Não há dinheiro - requer {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Precisa de terreno plano
 STR_0008_WAITING                                                :{BLACK}Aguardando: {WHITE}{STRING}
@@ -1265,7 +1264,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...bóia está em uso!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Impossível remover parte da estação...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Impossível converter o tipo de linha aqui...
@@ -1376,34 +1375,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Proteja o jogo com uma senha se não desejar que seja publicamente acessível
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Selecionar um mapa:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Em qual mapa deseja jogar?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não precisam estar todos preenchidos
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Rede Local
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Rede Local / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (divulgar)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 jogadores
-STR_NETWORK_1_PLAYERS                                           :1 jogador
-STR_NETWORK_2_PLAYERS                                           :2 jogadores
-STR_NETWORK_3_PLAYERS                                           :3 jogadores
-STR_NETWORK_4_PLAYERS                                           :4 jogadores
-STR_NETWORK_5_PLAYERS                                           :5 jogadores
-STR_NETWORK_6_PLAYERS                                           :6 jogadores
-STR_NETWORK_7_PLAYERS                                           :7 jogadores
-STR_NETWORK_8_PLAYERS                                           :8 jogadores
-STR_NETWORK_9_PLAYERS                                           :9 jogadores
-STR_NETWORK_10_PLAYERS                                          :10 jogadores
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não precisam estar todos preenchidos
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P ia ias}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Máximo de empresas:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limita o servidor para uma certa quantia de empresas
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectator{P "" es}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max espectadores:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limita o servidor para um certa quantia de espectadores
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Idioma falado:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Outros jogadores saberão o idioma utilizado no servidor.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Iniciar Jogo
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Iniciar um novo jogo em rede com mapa ou cenário aleatórios
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Abrir Jogo
@@ -1631,13 +1619,13 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Ferrovia com sinais normais
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ferrovia com pré-sinais
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ferrovia com sinais de saída
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ferrovia com sinais combinados
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ferrovia com sinais combo
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Linha de trem com sinais normais e pré-sinais
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Linha de trem com sinais normais e de saída
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Linha de trem com sinais normais e sinais combo
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Ferrovia com sinais normais e combo
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Linha de trem com pré-sinais e de saída
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Linha de trem com pré-sinais e sinais combo
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Linha de trem com sinais de saída e sinais combo
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ferrovia com pré-sinais e combo
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ferrovia com sinais combo e de saída
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Remova a estação de trem antes
 
 
@@ -1999,9 +1987,9 @@
 STR_482F_COST                                                   :{BLACK}Custo: {YELLOW}{CURRENCY}
 STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Impossível construir este tipo de indústria aqui...
 STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...a floresta só pode ser plantada acima do nível de neve
-STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} anuncia falência iminente!
-STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Problemas de abastecimento forçaram {INDUSTRY} a anunciar falência iminente!
-STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Falta de árvores nas proximidades forçaram {INDUSTRY} a anunciar falência iminente!
+STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} anuncia o fechamento!
+STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Problemas de abastecimento forçaram {INDUSTRY} a anunciar o fechamento!
+STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Falta de árvores nas proximidades forçaram {INDUSTRY} a anunciar o fechamento!
 STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} aumenta a produção!
 STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Nova jazida de carvão encontrada em {INDUSTRY}!{}A expectativa é dobrar a produção!
 STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Novas reservas de petróleo encontradas em {INDUSTRY}!{}A expectativa é dobrar a produção!
@@ -3365,11 +3353,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Renomeia o grupo selecionado
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Clique para excluir esse grupo da substituição automática
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Lucros do ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucros do ano: {RED}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucros do ano {GREEN}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Lucros do ano: {RED}{CURRENCY} {BLACK}(ano passado {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/bulgarian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/bulgarian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Края на картата е прекалено близо
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Недостатъчно пари - трябват {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Трябва равна земя
 STR_0008_WAITING                                                :{BLACK}Чакане: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...шамандурата се използва!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Координати: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Не може да се премахва част от гарата...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Тук не може да се променя типа на жп линията...
@@ -1374,34 +1372,19 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Защитаване на вашата игра с парола за да не е публично достъпна
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Избор на карта:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Коя карта желаете да играете?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Макс. клиенти:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Интернет
 STR_NETWORK_LAN_INTERNET                                        :LAN / Интернет
 STR_NETWORK_INTERNET_ADVERTISE                                  :Интернет (реклама)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 играча
-STR_NETWORK_1_PLAYERS                                           :1 играч
-STR_NETWORK_2_PLAYERS                                           :2 играча
-STR_NETWORK_3_PLAYERS                                           :3 играча
-STR_NETWORK_4_PLAYERS                                           :4 играча
-STR_NETWORK_5_PLAYERS                                           :5 играча
-STR_NETWORK_6_PLAYERS                                           :6 играча
-STR_NETWORK_7_PLAYERS                                           :7 играча
-STR_NETWORK_8_PLAYERS                                           :8 играча
-STR_NETWORK_9_PLAYERS                                           :9 играча
-STR_NETWORK_10_PLAYERS                                          :10 играча
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Макс. клиенти:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Макс. компании:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ограничаване на играта до определен брой компании
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Макс. наблюдатели:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ограничаване на сървъра до определен брой наблюдатели
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Говорим език:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Другите играчи ще знаят езика на който се говори на сървъра
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Начало на игра
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Започване на нова мрежова игра от случайна карта или сценарий
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Зареждане на игра
@@ -1629,10 +1612,7 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :ЖП линия с нормални сигнали
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :ЖП линия с пре-сигнали
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :ЖП линия с изходни сигнали
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :ЖП линия с комбинирани сигнали
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Железопътна линиа с нормални и изходни сигнали
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Железопътна линиа с нормални и съединени сигнали
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Железопътна линиа с изходни и съединени сигнали
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Железопътната гара трябва да бъде премахната първо
 
 
@@ -1661,6 +1641,7 @@
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Строене на път
 STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Построи секциа от трамвайна линиа
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Строене на гараж (за строене и сервиз на МПС-та)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Строене на автогара
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Строене на товарна гара
 STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Построи пъгническа трамвайна гара
@@ -2629,6 +2610,7 @@
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Ремонт без спиране в {TOWN} влаково депо
 
 STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Патувай (без разписание)
 STR_TIMETABLE_TRAVEL_FOR                                        :Патувай за {STRING}
 STR_TIMETABLE_STAY_FOR                                          :и остани за {STRING}
 STR_TIMETABLE_DAYS                                              :{COMMA} ден{P "" s}
@@ -2675,6 +2657,7 @@
 STR_REFIT_TIP                                                   :{BLACK}Избор какво преустройсто да се направи. Щракване със задържан контрол премахва инструкцията
 STR_REFIT_ORDER                                                 :(Преустройство към {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Разписание
+STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Виж разписанието
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Заповеди)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Край на Заповедите - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
@@ -2691,6 +2674,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Не може да зададеш нова заповед...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Не може да изтриеш тази заповед...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Не може да промениш тази заповед...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Не може да промениш тази заповед...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Не може да прескочиш настоящата заповед...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Не може да прескочиш до избраната заповед...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Не може да преместиш машината...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Задния локомотив ще следва винаги предния си събрат
 STR_8838_N_A                                                    :Не се предлага{SKIP}
@@ -2722,11 +2708,16 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Капацитет на влаковата композиция
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Общ капацитет на влака, разбит по типове товар
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Пътен лист - натиснете върху назначение за маркиране. CTRL + натискане - центрира върху станцията
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Прескачане на настоящата заповед и започване на цледващата. CTRL + клик прескача до избраната заповед
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Изтриване на избраното назначение
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Преминавай през избраното назначение без спиране
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Добавяне на назначение преди избраната или в края на списъка
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Изчакай на избраното назначение до пълно зареждане с товар
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Разтоварва на избраното назначение целия товар
+STR_TIMETABLE_TOOLTIP                                           :{BLACK}Времетаблица - кликни върху заповед за да я маркираш.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Промени времетраенето на маркираната заповед
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Изчисти времетраенето на маркираната заповед
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Преправи закъснялата бройка, такаче превозните средства да са на време
 STR_SERVICE_HINT                                                :{BLACK}Пропусни освен ако е необходим ремонт
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Цена: {CURRENCY} Тегло: {WEIGHT_S}{}Скорост: {VELOCITY}  Мощност: {POWER}{}Разход: {CURRENCY}/г.{}Капацитет: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Развален
@@ -2749,6 +2740,7 @@
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Изхвърляне на товара при достигане на избраното назначение
 STR_886F_TRANSFER                                               :{BLACK}Транфер
 STR_CLEAR_TIME                                                  :{BLACK}Изчисти времето
+STR_RESET_LATENESS                                              :{BLACK}Преправи закъснялата бройка
 
 STR_TRAIN_STOPPING                                              :{RED}Спира
 STR_TRAIN_STOPPING_VEL                                          :{RED}Спира, {VELOCITY}
@@ -2760,7 +2752,13 @@
 STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Нов {STRING} е на разположение! - {ENGINE}
 
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Превозни средства могат да чакат само на гари.
+STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Това превознот средство не спира на тази гара.
 STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Промени времето
+STR_TIMETABLE_STATUS_ON_TIME                                    :Това превознот средство е в момента на време
+STR_TIMETABLE_STATUS_LATE                                       :Това превознот средство е в момента с {STRING} закъснение
+STR_TIMETABLE_STATUS_EARLY                                      :Това превознот средство е в момента с {STRING} по-рано
+STR_TIMETABLE_TOTAL_TIME                                        :Ще трябва {STRING} за това разписание да бъде приклучено
 STR_TIMETABLE_AUTOFILL                                          :{BLACK}Афтонапълване
 
 ##id 0x9000
@@ -3289,6 +3287,7 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Използвай прозрачност за сгради като гари, депа, пътни точки и висящи жици
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Използвай прозрачност за мостове
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Използвай прозрачност за сгради като фарове и антени, може би в бъдеще за украси
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Вклучи прозрачност за товарещи указатели
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3304,6 +3303,10 @@
 STR_GROUP_ALL_ROADS                                             :Всички пътни превозни средства
 STR_GROUP_ALL_SHIPS                                             :Всички кораби
 STR_GROUP_ALL_AIRCRAFTS                                         :Всички самолети
+STR_GROUP_DEFAULT_TRAINS                                        :Безгрупни влакове
+STR_GROUP_DEFAULT_ROADS                                         :Безгрупни пътни превозни средства
+STR_GROUP_DEFAULT_SHIPS                                         :Безгрупни кораби
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Безгрупни самолети
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Добави споделени превозни средства
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Премахни всички превозни средсва
@@ -3328,11 +3331,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Преименувай избраната група
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Щракни да защитиш тази група от глобална автоматична замяна
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Печалба тази година: {GREEN}{CURRENCY} {BLACK}(предишната година: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Печалба тази година: {RED}{CURRENCY} {BLACK}(предишната година: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Печалба тази година: {GREEN}{CURRENCY} {BLACK}(предишната година: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Печалба тази година: {RED}{CURRENCY} {BLACK}(предишната година: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
@@ -3351,3 +3349,4 @@
 STR_FUND_NEW_INDUSTRY                                           :{BLACK}Фонд
 STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Перспектива
 STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Построи
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Избери правилната промишленост от следниат списък
--- a/src/lang/catalan.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/catalan.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Massa a prop del marc del mapa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}No tens prou diners - et fan falta {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Es necessita un terreny pla
 STR_0008_WAITING                                                :{BLACK}Esperant: {WHITE}{STRING}
@@ -1263,7 +1262,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boia en ús!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordenades: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordenades: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}No es pot treure part de la estació...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Aquí no es pot convertir el tipus de via...
@@ -1374,34 +1373,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Protegeix el teu joc amb una contrasenya si no vols que d'altre gent el pugui utilitzar
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Selecciona un mapa:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}amb quin mapa vols jugar?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Màxim de clients permesos:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Tria el nombre màxim de clients. No és necessari omplir tots els llocs.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (anunci)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 jugadors
-STR_NETWORK_1_PLAYERS                                           :1 jugador
-STR_NETWORK_2_PLAYERS                                           :2 jugadors
-STR_NETWORK_3_PLAYERS                                           :3 jugadors
-STR_NETWORK_4_PLAYERS                                           :4 jugadors
-STR_NETWORK_5_PLAYERS                                           :5 jugadors
-STR_NETWORK_6_PLAYERS                                           :6 jugadors
-STR_NETWORK_7_PLAYERS                                           :7 jugadors
-STR_NETWORK_8_PLAYERS                                           :8 jugadors
-STR_NETWORK_9_PLAYERS                                           :9 jugadors
-STR_NETWORK_10_PLAYERS                                          :10 jugadors
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} client{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Màxim de clients permesos:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Tria el nombre màxim de clients. No és necessari omplir tots els llocs.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} companyi{P a es}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Màx companyies:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limita el servidor a un cert nombre de companyies
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectador{P "" s}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Màx espectadors:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limita el servidor a un cert nombre de espectadors
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Idioma parlat:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Els altres jugadors sabran quin idioma es parla en aquest servidor.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Inicia el Joc
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Inicia un nou joc de xarxa des de un mapa aleatori, o escenari
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Carrega Joc
@@ -3361,11 +3349,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Canvia el nom del grup seleccionat
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Clica per protegir aquest grup de l'autosubstitueix global
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Benefici aquest any: {GREEN}{CURRENCY} {BLACK}(any passat: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Benefici aquest any: {RED}{CURRENCY} {BLACK}(any passat: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Benefici aquest any: {GREEN}{CURRENCY} {BLACK}(any passat: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Benefici aquest any: {RED}{CURRENCY} {BLACK}(any passat: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/croatian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/croatian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Preblizu rubu karte
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nedovoljno gotovine - potrebno je {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebna ravna površina
 STR_0008_WAITING                                                :{BLACK}Čekanje: {WHITE}{STRING}
@@ -694,7 +693,7 @@
 STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Izgradi tvornicu
 STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Izgradi čeličanu
 STR_026A_CONSTRUCT_FARM                                         :{BLACK}Izgradi farmu
-STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Izgradi rudnik bakra
+STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Izgradi rudnik željeza
 STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Izgradi naftna polja
 STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Izgradi banku (može biti izgrađena samo u gradovima s više od 1200 stanovnika)
 STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Izgradi tvornicu papira
@@ -1265,7 +1264,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...plutača je u uporabi!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinate: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinate: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Ne možeš ukloniti dio stanice...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Ne možeš pretvoriti vrstu tračnica ovdje...
@@ -1376,34 +1375,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Zaštiti svoju igru pomoću zaporke ukoliko ne želiš da bude javno dostupna
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Izaberi kartu:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Koju kartu želiš igrati?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maks klijenata:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izaberi maksimalan broj klijenata. Ne moraju sva mjesta biti popunjena.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (oglasi)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 igrača
-STR_NETWORK_1_PLAYERS                                           :1 igrač
-STR_NETWORK_2_PLAYERS                                           :2 igrača
-STR_NETWORK_3_PLAYERS                                           :3 igrača
-STR_NETWORK_4_PLAYERS                                           :4 igrača
-STR_NETWORK_5_PLAYERS                                           :5 igrača
-STR_NETWORK_6_PLAYERS                                           :6 igrača
-STR_NETWORK_7_PLAYERS                                           :7 igrača
-STR_NETWORK_8_PLAYERS                                           :8 igrača
-STR_NETWORK_9_PLAYERS                                           :9 igrača
-STR_NETWORK_10_PLAYERS                                          :10 igrača
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} klijen{P t a ata}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maks klijenata:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izaberi maksimalan broj klijenata. Ne moraju sva mjesta biti popunjena.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} tvrtk{P a e i}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks tvrki:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ograniči poslužitelj na određeni broj tvrtki
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} gledatelj{P "" a a}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks promatrača:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ograniči poslužitelj na određeni broj gledatelja
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Jezik kojim se govori:
-STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Drugi igrači znati će kojim se jezikom govori na poslužitelju
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Drugi igrači znat će kojim se jezikom govori na poslužitelju
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Započni igru
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Započni novu igru u mreži na nasumičnoj mapi ili iz nasumičnog scenarija
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Učitaj igru
@@ -1610,7 +1598,7 @@
 STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Ovdje ne možeš postaviti znakove...
 STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Ovdje ne možeš graditi tračnice...
 STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Odavde ne možeš ukloniti tračnice...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Odavde ne možeš maknuti signale...
+STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Ovdje ne možeš maknuti znakove...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Smjer spremišta vlakova
 STR_1015_RAILROAD_CONSTRUCTION                                  :Izgradnja tračnica
 STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Izgradnja električne željezničke pruge
@@ -1619,7 +1607,7 @@
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Izgradi tračnicu
 STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Izgradi spremište vlakova (za gradnju i servisiranje vlakova)
 STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Izgradi željezničku stanicu
-STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Izgradi željezničke signale
+STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Izgradi željezničke znakove
 STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Izgradi željeznički most
 STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}Izgradi željeznički tunel
 STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Prebacuj izgradnju/uklanjanje za tračnice i željezničke signale
@@ -1628,16 +1616,16 @@
 STR_1021_RAILROAD_TRACK                                         :Tračnica
 STR_1023_RAILROAD_TRAIN_DEPOT                                   :Spremište vlakova
 STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...područje je u vlasništvu druge tvrke
-STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Željezničke tračnice s normalnim znakovima
-STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Željezničke tračnice s prethodno postavljenim znakovima
-STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Željezničke tračnice s izlaznim znakovima
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Željezničke tračnice s kombo znakovima
-STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Tračnice sa normalnim i pre-signalima
-STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Tračnice sa normalnim i izlaznim-signalima
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Tračnice sa normalnim i kombiniranim-signalima
-STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Tračnice sa pre- i izlaznim signalima
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tračnice sa pre- i kombiniranim signalima
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tračnice sa izlaznim i kombiniranim signalima
+STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Tračnice s normalnim znakovima
+STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Tračnice s prethodno postavljenim znakovima
+STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Tračnice s izlaznim znakovima
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Tračnice s kombo znakovima
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Tračnice sa normalnim i prethodno postavljenim znakovima
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Tračnice sa normalnim i izlaznim znakovima
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Tračnice s normalnim i kombo znakovima
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Tračnice sa prethodno postavljenim i izlaznim znakovima
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tračnice s prethodno postavljenim i kombo znakovima
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tračnice s izlaznim i kombo znakovima
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Morati prvo maknuti željezničku stanicu
 
 
@@ -2412,7 +2400,7 @@
 STR_803F_GRAIN_HOPPER                                           :Tegljač žita
 STR_8040_WOOD_TRUCK                                             :Kamion za drva
 STR_8041_IRON_ORE_HOPPER                                        :Tegljač željeza
-STR_8042_STEEL_TRUCK                                            :Kamion za željezo
+STR_8042_STEEL_TRUCK                                            :Kamion za čelik
 STR_8043_ARMORED_VAN                                            :Oklopno vozilo
 STR_8044_FOOD_VAN                                               :Kamion za hranu
 STR_8045_PAPER_TRUCK                                            :Kamion za papir
@@ -2493,7 +2481,7 @@
 STR_8090_WITCOMBE_WOOD_TRUCK                                    :Witcombe Kamion za drva
 STR_8091_FOSTER_WOOD_TRUCK                                      :Foster Kamion za drva
 STR_8092_MORELAND_WOOD_TRUCK                                    :Moreland Kamion za drva
-STR_8093_MPS_IRON_ORE_TRUCK                                     :MPS Kamion za željeznu rudu
+STR_8093_MPS_IRON_ORE_TRUCK                                     :MPS Kamion za željezo
 STR_8094_UHL_IRON_ORE_TRUCK                                     :Uhl Kamion za željezu rudu
 STR_8095_CHIPPY_IRON_ORE_TRUCK                                  :Chippy Kamion za željeznu rudu
 STR_8096_BALOGH_STEEL_TRUCK                                     :Balogh Kamion za čelik
@@ -2754,7 +2742,7 @@
 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Dobit ove godine: {LTBLUE}{CURRENCY}  (prošle godine: {CURRENCY})
 STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Pouzdanost: {LTBLUE}{COMMA}%  {BLACK}Kvarova od zadnjeg servisa: {LTBLUE}{COMMA}
 STR_8861_STOPPED                                                :{RED}Zaustavljen
-STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}Ne mogu natjerati vlak da ignorira signale dok je opasnost...
+STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}Ne mogu natjerati vlak da ignorira znakove dok je opasnost...
 STR_8863_CRASHED                                                :{RED}Slupan!
 
 STR_8865_NAME_TRAIN                                             :{WHITE}Imenuj vlak
@@ -3363,11 +3351,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Preimenuj odabranu grupu
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klikni kako bi zaštitio ovu grupu od globalne automatske zamjene
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Dobit ove godine: {GREEN}{CURRENCY} {BLACK}(prošle godine: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Dobit ove godine: {RED}{CURRENCY} {BLACK}(prošle godine: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Dobit ove godine: {GREEN}{CURRENCY} {BLACK}(prošle godine: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Dobit ove godine: {RED}{CURRENCY} {BLACK}(prošle godine: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/czech.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/czech.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Moc blízko k okraji mapy
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nedostatek peněz - je potřeba {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Je potřeba plochá země
 STR_0008_WAITING                                                :{BLACK}Čeká tu: {WHITE}{STRING}
@@ -1321,7 +1320,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... bójka je používána!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Souřadnice: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Souřadnice: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nemůžu odstranit část stanice...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Zde nemohu změnit typ kolejí...
@@ -1432,34 +1431,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Svoji hru si můžeš ochránit heslem, když nechceš, aby se ti do ni hlásili jiní lidé
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Vyber mapu:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ve které mapě si chceš zahrát?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximální počet hráčů:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Zvol maximální počet hráčů. Může se jich připojit i méně.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (oznámit)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 hráčů
-STR_NETWORK_1_PLAYERS                                           :1 hráč
-STR_NETWORK_2_PLAYERS                                           :2 hráči
-STR_NETWORK_3_PLAYERS                                           :3 hráči
-STR_NETWORK_4_PLAYERS                                           :4 hráči
-STR_NETWORK_5_PLAYERS                                           :5 hráčů
-STR_NETWORK_6_PLAYERS                                           :6 hráčů
-STR_NETWORK_7_PLAYERS                                           :7 hráčů
-STR_NETWORK_8_PLAYERS                                           :8 hráčů
-STR_NETWORK_9_PLAYERS                                           :9 hráčů
-STR_NETWORK_10_PLAYERS                                          :10 hráčů
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} klient{P "" i ů}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximální počet hráčů:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Zvol maximální počet hráčů. Může se jich připojit i méně.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} společnost{P "" i í}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maximální počet společností:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Omezit serverem počet společností
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} pozorovatel{P "" é ů}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maximální počet pozorovatelů:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Omezit serverem pocet pozorovatelů
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Jazyk ve hře:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Aby ostatní hráči věděli, jakým jazykem se bude ve hře mluvit.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Začít hru
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Hru po síti začít s náhodnou mapou nebo se scénářem
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Nahrát hru
@@ -3425,11 +3413,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Přejmenovat vybranou skupinu
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Kliknutím nebude na tuto skupinu mít vliv automatická výměna vozidel
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/danish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/danish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}For tæt på kanten af kortet
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Ikke nok penge - kræver {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Landskabet skal være fladt
 STR_0008_WAITING                                                :{BLACK}Venter: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... bøjen er i brug!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinater: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan ikke fjerne en del af en station...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan ikke konvertere jernbanetype her...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Hvilket kort vil du spille?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maksimalt antal tilladte klienter:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Vælg det maksimale antal klienter. Det er ikke nødvendigt at fylde dem alle
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (bekendtgør spillet)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spillere
-STR_NETWORK_1_PLAYERS                                           :1 spiller
-STR_NETWORK_2_PLAYERS                                           :2 spillere
-STR_NETWORK_3_PLAYERS                                           :3 spillere
-STR_NETWORK_4_PLAYERS                                           :4 spillere
-STR_NETWORK_5_PLAYERS                                           :5 spillere
-STR_NETWORK_6_PLAYERS                                           :6 spillere
-STR_NETWORK_7_PLAYERS                                           :7 spillere
-STR_NETWORK_8_PLAYERS                                           :8 spillere
-STR_NETWORK_9_PLAYERS                                           :9 spillere
-STR_NETWORK_10_PLAYERS                                          :10 spillere
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. selskaber:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Begræns serveren til et bestemt antal selskaber
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks. tilskuere:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Begræns serveren til et bestemt antal tilskurere
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Talt sprog:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Andre spillere vil vide hvilket sprog, der bliver talt på serveren
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start spillet
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start et nyt netværksspil med et tilfældigt kort eller et scenarie
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Hent et spil
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Jernbane med almindelige signaler
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbane med præ-signaler
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbane med exit-signaler
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbane med kombi-signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Jernbanespor med normale og præ-signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Jernbanespor med normale og exit-signaler
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Jernbanespor med normale og kombi-signaler
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Jernbanespor med præ- og exit-signaler
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Jernbanespor med præ- og kombi-signaler
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Jernbanespor med exit- og kombi-signaler
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Jernbanestation skal fjernes først
 
 
@@ -3361,10 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Omdøb den valgte gruppe
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klik for at beskytte denne gruppe mod global auto-udskiftning
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Afkast i indeværende år: {GREEN}{CURRENCY} {BLACK}(sidste år: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Afkast i indeværende år: {RED}{CURRENCY} {BLACK}(sidste år: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Afkast i indeværende år: {GREEN}{CURRENCY} {BLACK}(sidste år: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Afkast i indeværende år: {RED}{CURRENCY} {BLACK}(sidste år: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/dutch.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/dutch.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Te dicht bij de rand van de kaart
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Niet genoeg geld - {CURRENCY} nodig
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Vlak land nodig
 STR_0008_WAITING                                                :{BLACK}Wachtend: {WHITE}{STRING}
@@ -238,7 +237,7 @@
 STR_010C_RUBBER_PLANTATION                                      :{BLACK}{TINYFONT}Rubberplantage
 STR_010D_WATER_SUPPLY                                           :{BLACK}{TINYFONT}Waterbron
 STR_010E_WATER_TOWER                                            :{BLACK}{TINYFONT}Watertoren
-STR_010F_LUMBER_MILL                                            :{BLACK}{TINYFONT}Houtkapperij
+STR_010F_LUMBER_MILL                                            :{BLACK}{TINYFONT}Houtzagerij
 STR_0110_COTTON_CANDY_FOREST                                    :{BLACK}{TINYFONT}Suikerspinbos
 STR_0111_CANDY_FACTORY                                          :{BLACK}{TINYFONT}Snoepfabriek
 STR_0112_BATTERY_FARM                                           :{BLACK}{TINYFONT}Batterijplantage
@@ -640,7 +639,7 @@
 STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}Kan hier geen nieuwe stad bouwen...
 STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...te dicht bij de rand van de kaart
 STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...te dicht bij een andere stad
-STR_0239_SITE_UNSUITABLE                                        :{WHITE}...lokatie ongeschikt
+STR_0239_SITE_UNSUITABLE                                        :{WHITE}...locatie ongeschikt
 STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...te veel steden
 STR_CANNOT_GENERATE_TOWN                                        :{WHITE}Kan geen enkele stad bouwen
 STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...er is geen ruimte meer op de kaart
@@ -665,7 +664,7 @@
 STR_024D_FOOD_PROCESSING_PLANT                                  :{BLACK}Voedselverwerkingsfabriek
 STR_024E_PRINTING_WORKS                                         :{BLACK}Drukkerij
 STR_024F_GOLD_MINE                                              :{BLACK}Goudmijn
-STR_0250_LUMBER_MILL                                            :{BLACK}Houtkapperij
+STR_0250_LUMBER_MILL                                            :{BLACK}Houtzagerij
 STR_0251_FRUIT_PLANTATION                                       :{BLACK}Fruitplantage
 STR_0252_RUBBER_PLANTATION                                      :{BLACK}Rubberplantage
 STR_0253_WATER_SUPPLY                                           :{BLACK}Waterbron
@@ -700,7 +699,7 @@
 STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Plaats drukkerij
 STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Plaats goudmijn
 STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Plaats bank (alleen in steden)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Plaats houtkapperij (kapt regenwoud en produceert hout)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Plaats houtzagerij (kapt regenwoud en produceert hout)
 STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Plant fruitplantage
 STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Plant rubberplantage
 STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Plaats waterbron
@@ -810,9 +809,9 @@
 STR_TOWN_POPULATION                                             :{BLACK}Wereldbevolking: {COMMA}
 STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Kijkvenster {COMMA}
 STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}Kopieer naar kijkvenster
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}Kopieer de lokatie van het algemene scherm naar dit kijkvenster
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}Kopieer de locatie van het algemene scherm naar dit kijkvenster
 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Plak van kijkvenster
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Plak de lokatie van dit kijkvenster naar het algemene scherm
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Plak de locatie van dit kijkvenster naar het algemene scherm
 
 STR_02E0_CURRENCY_UNITS                                         :{BLACK}Valuta
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
@@ -909,26 +908,26 @@
 STR_CURR_ATS                                                    :Australische Shilling (ATS)
 STR_CURR_BEF                                                    :Belgische Franken (BEF)
 STR_CURR_CHF                                                    :Zwitserse Franken (CHF)
-STR_CURR_CZK                                                    :Tsjechise Koruna (CZK)
+STR_CURR_CZK                                                    :Tsjechische Corona (CZK)
 STR_CURR_DEM                                                    :Duitse Mark (DEM)
 STR_CURR_DKK                                                    :Deense Kronen (DKK)
 STR_CURR_ESP                                                    :Spaanse Peseta (ESP)
 STR_CURR_FIM                                                    :Finse Mark (FIM)
 STR_CURR_FRF                                                    :Franse Franc (FRF)
-STR_CURR_GRD                                                    :Griekse Drachma (GRD)
+STR_CURR_GRD                                                    :Griekse Drachme (GRD)
 STR_CURR_HUF                                                    :Hongaarse Forint (HUF)
 STR_CURR_ISK                                                    :IJslandse Kronen (ISK)
 STR_CURR_ITL                                                    :Italiaanse Lieren (ITL)
 STR_CURR_NLG                                                    :Nederlandse Gulden (NLG)
-STR_CURR_NOK                                                    :Noorweegse Kronen (NOK)
+STR_CURR_NOK                                                    :Noorse Kronen (NOK)
 STR_CURR_PLN                                                    :Poolse Zloty (PLN)
 STR_CURR_ROL                                                    :Roemeense Leu (ROL)
 STR_CURR_RUR                                                    :Russische Rubel (RUR)
 STR_CURR_SIT                                                    :Sloveense Tolar (SIT)
 STR_CURR_SEK                                                    :Zweedse Kronen (SEK)
 STR_CURR_YTL                                                    :Turkse Lire (YTL)
-STR_CURR_SKK                                                    :Slovaakse Koruna (SKK)
-STR_CURR_BRR                                                    :Brazilliaanse Real (BRL)
+STR_CURR_SKK                                                    :Slowaakse Corona (SKK)
+STR_CURR_BRR                                                    :Braziliaanse Real (BRL)
 
 STR_CURR_CUSTOM                                                 :Aangepast...
 
@@ -980,7 +979,7 @@
 STR_SMALL_RIGHT_ARROW                                           :{TINYFONT}{RIGHTARROW}
 
 STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}Kan orderlijst niet delen...
-STR_CANT_COPY_ORDER_LIST                                        :{WHITE}Kan orderlijst niet kopieren...
+STR_CANT_COPY_ORDER_LIST                                        :{WHITE}Kan orderlijst niet kopiëren...
 STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Einde gedeelde orders - -
 
 STR_TRAIN_IS_LOST                                               :{WHITE}Trein {COMMA} is verdwaald.
@@ -1079,12 +1078,12 @@
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :vlak
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Ruig
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Erg ruig
-STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Boomplaatser alogeritme: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Boomplaatser algoritme: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Geen
 STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Origineel
 STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Verbeterd
-STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION                           :{LTBLUE}Heightmap draaiing: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :Tegen de klok
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION                           :{LTBLUE}Hoogtekaart draaiing: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :Tegen de klok in
 STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :Met de klok mee
 STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}De hoogte van een plat scenario wordt: {ORANGE}{STRING}
 
@@ -1094,7 +1093,7 @@
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Omgekeerde scrollrichting: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Vloeiend scrollen kijkvenster: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Toon dimensie informatie bij het gebruik van diverse bouw-tools: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Laat all bedrijfslogo's zien: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Laat alle bedrijfslogo's zien: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Niets
 STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Eigen bedrijf
 STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Alle bedrijven
@@ -1142,7 +1141,7 @@
 STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Standaard reparatie interval voor schepen: {ORANGE}uit
 STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Schakel onderhoud uit wanneer defecten uit staan: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Zet wagon snelheidslimieten aan: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Schakel electrische sporen uit: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Schakel elektrische sporen uit: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Kleurenfoto's komen in: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STARTING_YEAR                                :{LTBLUE}Beginjaar: {ORANGE}{STRING}
@@ -1152,7 +1151,7 @@
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Bij slepen, plaats seinen elke: {ORANGE}{STRING} tegel(s)
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Plaats automatisch semaphore seinen voor: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}De stadindeling "geen wegen" is niet geldig in de scenario editor
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}De stadsindeling "geen wegen" is niet geldig in de scenario editor
 STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Selecteer stedelijke wegindeling: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :geen wegen
 STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :standaard
@@ -1206,7 +1205,7 @@
 STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Magische bulldozer (industrieën en andere onverplaatsbare objecten verwijderen): {ORANGE}{STRING}
 STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Tunnels mogen elkaar kruisen: {ORANGE}{STRING}
 STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Bouwen in gepauzeerde toestand: {ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Jetvliegtuigen storten niet (vaak) neer op kleine vliegvelden: {ORANGE} {STRING}
+STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Jet vliegtuigen storten niet (vaak) neer op kleine vliegvelden: {ORANGE} {STRING}
 STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Verander klimaat: {ORANGE} {STRING}
 STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Verander datum: {ORANGE} {DATE_SHORT}
 STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Sta aanpassen productiewaarden toe: {ORANGE}{STRING}
@@ -1263,7 +1262,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... boei is in gebruik!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coördinaten: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coördinaten: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan deel van station niet weghalen...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan railtype hier niet veranderen...
@@ -1374,34 +1373,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Bescherm je spel met een wachtwoord als je niet wil dat andere mensen meespelen
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Selecteer een kaart:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Op welke kaart wil je spelen?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximaal aantal spelers
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Kies een maximaal aantal toegestane spelers. Niet alle posities hoeven gebruikt te worden.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Netwerk
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (adverteren)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spelers
-STR_NETWORK_1_PLAYERS                                           :1 speler
-STR_NETWORK_2_PLAYERS                                           :2 spelers
-STR_NETWORK_3_PLAYERS                                           :3 spelers
-STR_NETWORK_4_PLAYERS                                           :4 spelers
-STR_NETWORK_5_PLAYERS                                           :5 spelers
-STR_NETWORK_6_PLAYERS                                           :6 spelers
-STR_NETWORK_7_PLAYERS                                           :7 spelers
-STR_NETWORK_8_PLAYERS                                           :8 spelers
-STR_NETWORK_9_PLAYERS                                           :9 spelers
-STR_NETWORK_10_PLAYERS                                          :10 spelers
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} speler{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximaal aantal spelers
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Kies een maximaal aantal toegestane spelers. Niet alle posities hoeven gebruikt te worden.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} bedr{P ijf ijven}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max bedrijven:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Beperk de server tot een bepaald aantal bedrijven
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} toeschouwer{P "" s}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max toeschouwers:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Beperk de server tot een bepaald aantal toeschouwers
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Gesproken taal:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Andere spelers zullen weten welke taal er wordt gesproken op de server.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start spel
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start een nieuw netwerkspel van een willekeurige kaart, of scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Laad spel
@@ -1412,10 +1400,10 @@
 STR_NETWORK_LANG_ENGLISH                                        :Engels
 STR_NETWORK_LANG_GERMAN                                         :Duits
 STR_NETWORK_LANG_FRENCH                                         :Frans
-STR_NETWORK_LANG_BRAZILIAN                                      :Brazilliaans
+STR_NETWORK_LANG_BRAZILIAN                                      :Braziliaans
 STR_NETWORK_LANG_BULGARIAN                                      :Bulgaars
 STR_NETWORK_LANG_CHINESE                                        :Chinees
-STR_NETWORK_LANG_CZECH                                          :Tchechisch
+STR_NETWORK_LANG_CZECH                                          :Tsjechisch
 STR_NETWORK_LANG_DANISH                                         :Deens
 STR_NETWORK_LANG_DUTCH                                          :Nederlands
 STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
@@ -1431,7 +1419,7 @@
 STR_NETWORK_LANG_PORTUGUESE                                     :Portugees
 STR_NETWORK_LANG_ROMANIAN                                       :Roemeens
 STR_NETWORK_LANG_RUSSIAN                                        :Russisch
-STR_NETWORK_LANG_SLOVAK                                         :Slovaaks
+STR_NETWORK_LANG_SLOVAK                                         :Slowaaks
 STR_NETWORK_LANG_SLOVENIAN                                      :Sloveens
 STR_NETWORK_LANG_SPANISH                                        :Spaans
 STR_NETWORK_LANG_SWEDISH                                        :Zweeds
@@ -1479,7 +1467,7 @@
 STR_NETWORK_CONNECTING_SPECIAL_2                                :{BLACK}Ophalen bedrijfsinformatie...
 ############ End of leave-in-this-order
 STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} spelers{P "" s} voor ons
-STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} kbytes gedownloaded
+STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} kbytes opgehaald
 
 STR_NETWORK_DISCONNECT                                          :{BLACK}Verbinding verbroken
 
@@ -1498,13 +1486,13 @@
 STR_NETWORK_ERR_SERVER_START                                    :{WHITE} Kan server niet starten.
 STR_NETWORK_ERR_CLIENT_START                                    :{WHITE} Kan geen verbinding maken.
 STR_NETWORK_ERR_TIMEOUT                                         :{WHITE} Verbinding #{NUM} duurde te lang.
-STR_NETWORK_ERR_SERVER_ERROR                                    :{WHITE} Er is een protocol-fout gemaakt en onze verbinding is gesloten.
+STR_NETWORK_ERR_SERVER_ERROR                                    :{WHITE} Er is een protocolfout gemaakt en onze verbinding is gesloten.
 STR_NETWORK_ERR_WRONG_REVISION                                  :{WHITE} De revisie van deze client komt niet overeen met de revisie van de server.
 STR_NETWORK_ERR_WRONG_PASSWORD                                  :{WHITE} Ongeldig wachtwoord.
 STR_NETWORK_ERR_SERVER_FULL                                     :{WHITE} De server is vol
 STR_NETWORK_ERR_SERVER_BANNED                                   :{WHITE}Je bent verbannen van deze server
 STR_NETWORK_ERR_KICKED                                          :{WHITE} Je bent van de server geschopt
-STR_NETWORK_ERR_CHEATER                                         :{WHITE} Valsspelen is niet toegestaan op deze server
+STR_NETWORK_ERR_CHEATER                                         :{WHITE} Vals spelen is niet toegestaan op deze server
 
 STR_NETWORK_ERR_LEFT                                            :heeft het spel verlaten
 ############ Leave those lines in this order!!
@@ -1540,7 +1528,7 @@
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE} De server wordt opnieuw gestart...{}Wacht aub...
 
 STR_NETWORK_SERVER                                              :Server
-STR_NETWORK_CLIENT                                              :Client
+STR_NETWORK_CLIENT                                              :Speler
 STR_NETWORK_SPECTATORS                                          :Toeschouwer
 
 STR_NETWORK_CLIENTLIST_NONE                                     :(geen)
@@ -1601,7 +1589,7 @@
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Spoorwegconstructie
 STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Geëlectrificeerde spoorwegconstructie
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Monorailconstructie
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}MagLevconstructie
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}MagLev constructie
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Kies spoorbrug
 STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Kan hier geen treindepot bouwen...
 STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Kan hier geen treinstation bouwen...
@@ -1611,9 +1599,9 @@
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Kan hier geen seinen weghalen...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Bouw Treindepot
 STR_1015_RAILROAD_CONSTRUCTION                                  :Spoorwegconstructie
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Geëlectrificeerde spoorwegconstructie
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Geëlektrificeerde spoorwegconstructie
 STR_1016_MONORAIL_CONSTRUCTION                                  :Monorailconstructie
-STR_1017_MAGLEV_CONSTRUCTION                                    :MagLevconstructie
+STR_1017_MAGLEV_CONSTRUCTION                                    :MagLev constructie
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Plaats spoor
 STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Bouw treindepot (om treinen te bouwen en te onderhouden)
 STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Bouw treinstation
@@ -1646,7 +1634,7 @@
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Wegenbouw
 STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Bouw tramrails
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Kies brug
-STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... een richtings wegen kunnen geen kruisingen hebben
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... eenrichtingswegen kunnen geen kruisingen hebben
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan hier geen weg bouwen...
 STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan geen tramrails bouwen hier...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan hier geen weg weghalen...
@@ -1701,9 +1689,9 @@
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Kan stad niet hernoemen...
 STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}De gemeenteraad van {TOWN} staat dit niet toe
 STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Plaatsnamen - klik op naam om het hoofdbeeld te centreren op de stad
-STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centreer het hoofdbeeld op de lokatie van de stad
+STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centreer het hoofdbeeld op de locatie van de stad
 STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Hernoem stad
-STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Passagiers afelopen maand: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
+STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Passagiers afgelopen maand: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
 STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Post afgelopen maand: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
 STR_200F_TALL_OFFICE_BLOCK                                      :Hoog kantoorgebouw
 STR_2010_OFFICE_BLOCK                                           :Kantoorgebouw
@@ -1758,7 +1746,7 @@
 STR_2042_DO_IT                                                  :{BLACK}Doe het
 STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Lijst met dingen die mogelijk zijn in deze stad - klik op een item voor meer details
 STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Voer de geselecteerde actie uit in de bovenstaande lijst
-STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Mogelijkheiden:
+STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Mogelijkheden:
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Kleine reclamecampagne
 STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Middelgrote reclamecampagne
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Grote reclamecampagne
@@ -1772,7 +1760,7 @@
 STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Begin een grote advertentiecampagne, om meer passagiers en goederen naar je transportdiensten te trekken.{}  Kosten: {CURRENCY}
 STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Betaal een vernieuwing van het wegdek. Veroorzaakt merkbare verstoring van het wegverkeer tot 6 maanden.{}  Kosten: {CURRENCY}
 STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Bouw een standbeeld ter ere van jouw bedrijf.{} Kosten: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Betaal de bouw van nieuwe commerciele gebouwen in de stad.{}  Kosten: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Betaal de bouw van nieuwe commerciële gebouwen in de stad.{}  Kosten: {CURRENCY}
 STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Koop 1 jaar exclusieve transportrechten in deze stad. De gemeenteraad staat passagiers en goederen toe alleen jouw stations te gebruiken.{} Kosten: {CURRENCY}
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Koop het plaatselijk gezag om om je rang te verhogen, met het gevaar van een strenge sanctie, wanneer gepakt.{}  Kosten: {CURRENCY}
 STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Verkeerschaos in {TOWN}!{}{}Wegreparatie betaald door {COMPANY} zorgt voor 6 maanden van irritatie bij weggebruikers!
@@ -1860,8 +1848,8 @@
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Geen -
 STR_304B_SITE_UNSUITABLE                                        :{WHITE}...plaats ongeschikt
-STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Te dicht bij een andere dok
-STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Verwijder eerst dock
+STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Te dicht bij een andere haven
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Verwijder eerst haven
 STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Selecteer treinstation richting
 STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Selecteer aantal platforms voor station
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Selecteer lengte van station
@@ -1869,7 +1857,7 @@
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Selecteer richting van vrachtwagenstation
 STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Selecteer passagiers tram station richting
 STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Selecteer vracht tram station richting
-STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centreer hoofdbeeld op lokatie van station
+STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centreer hoofdbeeld op locatie van station
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Bekijk stationsreputaties
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Hernoem station
 STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Laat lijst van gevraagde goederen zien
@@ -1886,7 +1874,7 @@
 STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Markeer het dekkingsgebied van de voorgestelde locatie
 STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}Markeer het dekkingsgebied van de voorgestelde locatie niet
 STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Dekkingsgebied markeren
-STR_3068_DOCK                                                   :{WHITE}Dok
+STR_3068_DOCK                                                   :{WHITE}Haven
 STR_3069_BUOY                                                   :Boei
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boei in de weg
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...station te verspreid
@@ -1931,7 +1919,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Selecteer nieuw speltype
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Selecteer scenario (groen), vooraf ingesteld spel (blauw), or willekeurig nieuw spel
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Genereer willekeurig nieuw spel
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laad Heightmap
+STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laad Hoogtekaart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} in de weg
@@ -1953,7 +1941,7 @@
 STR_4810_PAPER_MILL                                             :Papierfabriek
 STR_4811_GOLD_MINE                                              :Goudmijn
 STR_4812_BANK                                                   :Bank
-STR_4813_DIAMOND_MINE                                           :Diamandmijn
+STR_4813_DIAMOND_MINE                                           :Diamantmijn
 STR_4814_IRON_ORE_MINE                                          :IJzermijn
 STR_4815_FRUIT_PLANTATION                                       :Boomgaard
 STR_4816_RUBBER_PLANTATION                                      :Rubberboerderij
@@ -1961,7 +1949,7 @@
 STR_4818_WATER_TOWER                                            :Watertoren
 STR_4819_FACTORY                                                :Fabriek
 STR_481A_FARM                                                   :Boerderij
-STR_481B_LUMBER_MILL                                            :Houtkapperij
+STR_481B_LUMBER_MILL                                            :Houtzagerij
 STR_481C_COTTON_CANDY_FOREST                                    :Suikerspinbos
 STR_481D_CANDY_FACTORY                                          :Snoepfabriek
 STR_481E_BATTERY_FARM                                           :Batterijplantage
@@ -2051,8 +2039,8 @@
 STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Object in de weg
 STR_5801_TRANSMITTER                                            :Zender
 STR_5802_LIGHTHOUSE                                             :Vuurtoren
-STR_5803_COMPANY_HEADQUARTERS                                   :Bedrijfs Hoofdkwartier
-STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...bedrijfs hoofdkwartier in de weg
+STR_5803_COMPANY_HEADQUARTERS                                   :Bedrijfshoofdkwartier
+STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...bedrijfshoofdkwartier in de weg
 STR_5805_COMPANY_OWNED_LAND                                     :Door een bedrijf opgekocht terrein
 STR_5806_CAN_T_PURCHASE_THIS_LAND                               :{WHITE}Kan dit stuk land niet kopen...
 STR_5807_YOU_ALREADY_OWN_IT                                     :{WHITE}...het is al van jou!
@@ -2106,7 +2094,7 @@
 ############ end of savegame specific region!
 
 ##id 0x6800
-STR_6800_DIFFICULTY_LEVEL                                       :{WHITE}Moeilijksheidsgraad
+STR_6800_DIFFICULTY_LEVEL                                       :{WHITE}Moeilijkheidsgraad
 STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Opslaan
 
 ############ range for difficulty levels starts
@@ -2258,19 +2246,19 @@
 STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Legenda voor bedrijfsgrafieken
 STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Klik hier om dit bedrijf weer te geven of te verbergen op de grafiek
 STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Eenheden van goederen afgeleverd
-STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Bedrijfs prestatie score (maximale score=1000)
+STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Bedrijfsprestatie score (maximale score=1000)
 STR_7052_COMPANY_VALUES                                         :{WHITE}Bedrijfswaarde
 STR_7053_COMPANY_LEAGUE_TABLE                                   :{WHITE}Bedrijfscompetitietabel
 STR_7054                                                        :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
 STR_7055                                                        :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM}  '{STRING}'
 STR_7056_TRANSPORT_COMPANY_IN_TROUBLE                           :{BLACK}{BIGFONT}Transportbedrijf in de problemen!
-STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} wordt verkocht of failliet verklaard tenzij finanicele situatie snel verbetert!
+STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} wordt verkocht of failliet verklaard tenzij financiële situatie snel verbetert!
 STR_7058_PRESIDENT                                              :{BLACK}{PLAYERNAME}{}(Directeur)
 STR_7059_TRANSPORT_COMPANY_MERGER                               :{BLACK}{BIGFONT}Transportbedrijf overgenomen!
 STR_705A_HAS_BEEN_SOLD_TO_FOR                                   :{BLACK}{BIGFONT}{COMPANY} is verkocht aan {COMPANY} voor {CURRENCY}!
 STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT                         :{WHITE}We zoeken voor een transportbedrijf dat ons bedrijf over kan nemen.{}{}Wil je {COMPANY} kopen voor {CURRENCY}?
 STR_705C_BANKRUPT                                               :{BLACK}{BIGFONT}Failliet!
-STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}{COMPANY} is gesloten door schuldeisers en alle eigendomen zijn verkocht!
+STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}{COMPANY} is gesloten door schuldeisers en alle eigendommen zijn verkocht!
 STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}Nieuw transportbedrijf opgestart!
 STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} begint werkzaamheden bij {TOWN}!
 STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Kan bedrijf niet kopen...
@@ -2289,9 +2277,9 @@
 STR_706D_PRESIDENT                                              :President
 STR_706E_TYCOON                                                 :Tycoon
 STR_706F_BUILD_HQ                                               :{BLACK}Bouw HQ
-STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Bouw bedrijfs hoofdkwartier / bekijk bedrijfs hoodkwartier
-STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Herbouw bedrijfs hoofdkwartier ergens anders voor 1% van de bedrijfswaarde
-STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Kan bedrijfs hoofdkwartier niet bouwen
+STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Bouw bedrijfshoofdkwartier / bekijk bedrijfshoofdkwartier
+STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Herbouw bedrijfshoofdkwartier ergens anders voor 1% van de bedrijfswaarde
+STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Kan bedrijfshoofdkwartier niet bouwen
 STR_7072_VIEW_HQ                                                :{BLACK}Bekijk HQ
 STR_RELOCATE_HQ                                                 :{BLACK}Verplaats HQ
 STR_COMPANY_PASSWORD                                            :{BLACK}Wachtwoord
@@ -2339,7 +2327,7 @@
 STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Laat wegvoertuig kleurschema's zien
 STR_LIVERY_SHIP_TIP                                             :{BLACK}Laat schip kleurschema's zien
 STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Laat de vliegtuig kleurschema's zien
-STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Kies de oofdkleur voor het geselecteerde schema
+STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Kies de hoofdkleur voor het geselecteerde schema
 STR_LIVERY_SECONDARY_TIP                                        :{BLACK}Kies de tweede kleur voor het geselecteerde schema
 STR_LIVERY_PANEL_TIP                                            :{BLACK}Kies een kleurschema om te wijzigen, of meerdere schema's met CTRL+klik. Klik in het venster het gebruik van het kleurschema te kiezen
 
@@ -2381,7 +2369,7 @@
 STR_8022_WOOD_TRUCK                                             :Houttruck
 STR_8023_IRON_ORE_HOPPER                                        :IJzererts Wagon
 STR_8024_STEEL_TRUCK                                            :Staaltruck
-STR_8025_ARMORED_VAN                                            :Gepanserde wagen
+STR_8025_ARMORED_VAN                                            :Gepantserde wagen
 STR_8026_FOOD_VAN                                               :Voedselwagen
 STR_8027_PAPER_TRUCK                                            :Papiertruck
 STR_8028_COPPER_ORE_HOPPER                                      :Kopererts Wagon
@@ -2411,7 +2399,7 @@
 STR_8040_WOOD_TRUCK                                             :Hout Truck
 STR_8041_IRON_ORE_HOPPER                                        :IJzererts Wagon
 STR_8042_STEEL_TRUCK                                            :Staal Truck
-STR_8043_ARMORED_VAN                                            :Gepanserde wagen
+STR_8043_ARMORED_VAN                                            :Gepantserde wagen
 STR_8044_FOOD_VAN                                               :Voedselwagen
 STR_8045_PAPER_TRUCK                                            :Papier Truck
 STR_8046_COPPER_ORE_HOPPER                                      :Koper erts Wagon
@@ -2443,7 +2431,7 @@
 STR_8060_WOOD_TRUCK                                             :Hout Truck
 STR_8061_IRON_ORE_HOPPER                                        :IJzererts Wagon
 STR_8062_STEEL_TRUCK                                            :Staal Truck
-STR_8063_ARMORED_VAN                                            :Gepanserde wagen
+STR_8063_ARMORED_VAN                                            :Gepantserde wagen
 STR_8064_FOOD_VAN                                               :Voedselwagen
 STR_8065_PAPER_TRUCK                                            :Papier Truck
 STR_8066_COPPER_ORE_HOPPER                                      :Koper erts Wagon
@@ -2497,9 +2485,9 @@
 STR_8096_BALOGH_STEEL_TRUCK                                     :Balogh Staal Truck
 STR_8097_UHL_STEEL_TRUCK                                        :Uhl Staal Truck
 STR_8098_KELLING_STEEL_TRUCK                                    :Kelling Staal Truck
-STR_8099_BALOGH_ARMORED_TRUCK                                   :Balogh Gepanserde Truck
-STR_809A_UHL_ARMORED_TRUCK                                      :Uhl Gepanserde Truck
-STR_809B_FOSTER_ARMORED_TRUCK                                   :Foster Gepanserde Truck
+STR_8099_BALOGH_ARMORED_TRUCK                                   :Balogh Gepantserde Truck
+STR_809A_UHL_ARMORED_TRUCK                                      :Uhl Gepantserde Truck
+STR_809B_FOSTER_ARMORED_TRUCK                                   :Foster Gepantserde Truck
 STR_809C_FOSTER_FOOD_VAN                                        :Foster Voedsel Wagen
 STR_809D_PERRY_FOOD_VAN                                         :Perry Voedsel Wagen
 STR_809E_CHIPPY_FOOD_VAN                                        :Chippy Voedsel Wagen
@@ -2601,7 +2589,7 @@
 STR_80FE_GURU_X2_HELICOPTER                                     :Guru X2 Helikopter
 STR_80FF_POWERNAUT_HELICOPTER                                   :Powernaut Helikopter
 STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Bericht van voertuigenfabrikant
-STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}We hebben zojuist een nieuwe {STRING} ontworpen - ben je geinteresseerd in een jaar lang exclusief gebruik van dit voertuig, zodat we kunnen zien of het goed werkt voordat we het wereldwijd beschikbaar maken?
+STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}We hebben zojuist een nieuwe {STRING} ontworpen - ben je geïnteresseerd in een jaar lang exclusief gebruik van dit voertuig, zodat we kunnen zien of het goed werkt voordat we het wereldwijd beschikbaar maken?
 STR_8102_RAILROAD_LOCOMOTIVE                                    :spoorweg locomotief
 STR_8103_ROAD_VEHICLE                                           :wegvoertuig
 STR_8104_AIRCRAFT                                               :vliegtuig
@@ -2659,18 +2647,18 @@
 STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Treinen
 
 STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Nieuwe spoorvoertuigen
-STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Nieuwe electrische spoorvoertuigen
+STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Nieuwe elektrische spoorvoertuigen
 STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Nieuwe monorailvoertuigen
-STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Nieuwe maglevvoertuigen
+STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Nieuwe maglev voertuigen
 STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Rails Voertuig
 
 STR_881F_BUILD_VEHICLE                                          :{BLACK}Bouw voertuig
 STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Kloon voertuig
-STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}Hierdoor wordt een kopie gebouw van dit voertuig. Control-click deelt de orders
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}Hierdoor wordt een kopie gebouwd van een voertuig. Klik op deze knop en dan op een voertuig binnen of buiten het depot. Control-click deelt de orders
+STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}Hierdoor wordt een kopie gebouw van dit voertuig. Control-klik deelt de orders
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}Hierdoor wordt een kopie gebouwd van een voertuig. Klik op deze knop en dan op een voertuig binnen of buiten het depot. Control-klik deelt de orders
 STR_CLONE_TRAIN                                                 :{BLACK}Kloon Trein
-STR_CLONE_TRAIN_INFO                                            :{BLACK}Hierdoor wordt een kopie gebouw van deze trein inclusief wagons. Control-click deelt de orders
-STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Hierdoor wordt een kopie gebouwd van een trein inclusief wagons. Klik op deze knop en dan op een trein binnen of buiten het depot. Control-click deelt de orders
+STR_CLONE_TRAIN_INFO                                            :{BLACK}Hierdoor wordt een kopie gebouw van deze trein inclusief wagons. Control-klik deelt de orders
+STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Hierdoor wordt een kopie gebouwd van een trein inclusief wagons. Klik op deze knop en dan op een trein binnen of buiten het depot. Control-klik deelt de orders
 STR_8820_RENAME                                                 :{BLACK}Hernoemen
 STR_8823_SKIP                                                   :{BLACK}Sla over
 STR_8824_DELETE                                                 :{BLACK}Verwijder
@@ -2708,11 +2696,11 @@
 STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}Kan treinonderdeel niet verkopen
 STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Kan geen route naar lokale depot vinden
 STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}Kan trein niet starten of stoppen...
-STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Reparatieinterval: {LTBLUE}{COMMA}dagen{BLACK}   Laatste reparatie: {LTBLUE}{DATE_LONG}
+STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Reparatie-interval: {LTBLUE}{COMMA}dagen{BLACK}   Laatste reparatie: {LTBLUE}{DATE_LONG}
 STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Service interval: {LTBLUE}{COMMA}%{BLACK}   Laatste service: {LTBLUE}{DATE_LONG}
 STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Treinen - klik op een trein voor informatie
 STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Bouw nieuwe treinen (treindepot nodig)
-STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Treinen - klik op trein voor info., sleep voertuig om toe tevoegen/verwijderen van trein
+STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Treinen - klik op trein voor info., sleep voertuig om toe toevoegen/verwijderen van trein
 STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Bouw nieuw treinonderdeel
 STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Sleep treinonderdeel hier om het te verkopen
 STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Centreer het scherm op de locatie van de trein depot
@@ -2726,12 +2714,12 @@
 STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Forceer trein verder te rijden zonder te wachten op een groen signaal
 STR_884B_REVERSE_DIRECTION_OF_TRAIN                             :{BLACK}Keer trein om
 STR_884C_SHOW_TRAIN_DETAILS                                     :{BLACK}Toon trein details
-STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Vergroot reperatie interval
+STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Vergroot reparatie-interval
 STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Verklein reparatieinterval
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Laat details zien van vervoerde goederen
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Laat details zien van treinvoertuigen
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Laat de mogelijkheden van elk voertuig zien
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Laat totale capaiteit van trein zien, gescheiden door goederentype
+STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Laat totale capaciteit van trein zien, gescheiden door goederentype
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orderlijst - klik op een order om deze te selecteren. CTRL + klikken gaat naar het station
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sla huidige order over, en begin met de volgende. CTRL + klik, begin direct met geselecteerde order
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Verwijder de geselecteerde order
@@ -2784,8 +2772,8 @@
 STR_TIMETABLE_STATUS_ON_TIME                                    :Dit voertuig loopt op schema
 STR_TIMETABLE_STATUS_LATE                                       :Dit voertuig heeft {STRING} vertraging
 STR_TIMETABLE_STATUS_EARLY                                      :Dit voertuig is {STRING} te vroeg
-STR_TIMETABLE_TOTAL_TIME                                        :Dit tijdscheme duurt {STRING} om te volbrengen
-STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Dit tijdscheme duurt minstens {STRING} om te volbrengen (niet alles geselecteerd)
+STR_TIMETABLE_TOTAL_TIME                                        :Dit tijdschema duurt {STRING} om te volbrengen
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Dit tijdschema duurt minstens {STRING} om te volbrengen (niet alles geselecteerd)
 STR_TIMETABLE_AUTOFILL                                          :{BLACK}Auto aanvullen
 STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Vul het tijdschema automatisch met de waardes van de eerste reis
 
@@ -2819,14 +2807,14 @@
 STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Bouw nieuwe wegvoertuigen (heeft wegvoertuigdepot nodig)
 STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Huidige actie van voertuig - klik hier om voertuig te starten of te stoppen
 STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Laat orders van voertuig zien
-STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Centreer hoofdscherm op de lokatie van het voertuig
+STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Centreer hoofdscherm op de locatie van het voertuig
 STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Stuur voertuig naar depot
 STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}Dwing het voertuig om om te draaien
 STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Laat details van wegvoertuig zien
 STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}Voertuigen - klik op voertuig voor informatie
 STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Bouw nieuw wegvoertuig
 STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Sleep een wegvoertuig hier om het te verkopen
-STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Centreer hoofdscherm op wegvoertuigs depot lokatie
+STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Centreer hoofdscherm op wegvoertuigdepot locatie
 STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Wegvoertuig selectie lijst - klik op voertuig voor informatie
 STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Bouw het geselecteerde wegvoertuig
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Prijs: {CURRENCY}{}Snelheid: {VELOCITY}{}Brandstofkosten: {CURRENCY}/jr{}Capaciteit: {CARGO}
@@ -2838,7 +2826,7 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Benoem wegvoertuig
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste bus arriveert in {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste vrachtwagen arriveert in {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Infwoners feesten . . .{}Eerste passagiers tram arriveert in {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste passagiers tram arriveert in {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste vracht tram arriveert in {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}Bestuurder verongelukt door treinbotsing
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}{COMMA} verongelukt door treinbotsing
@@ -2858,17 +2846,17 @@
 STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Selecteer welk type vracht het wagen moet vervoeren
 
 ##id 0x9800
-STR_9800_DOCK_CONSTRUCTION                                      :Dokbouw
-STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Dokbouw
-STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Kan hier geen dok bouwen...
+STR_9800_DOCK_CONSTRUCTION                                      :Havenbouw
+STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Havenbouw
+STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Kan hier geen haven bouwen...
 STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN} Scheepswerf
 STR_9804_NEW_SHIPS                                              :{BLACK}Nieuwe schepen
 STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} Schepen
 STR_9808_NEW_SHIPS                                              :{WHITE}Nieuwe schepen
 STR_9809_BUILD_SHIP                                             :{BLACK}Bouw schip
 STR_CLONE_SHIP                                                  :{BLACK}Kloon Schip
-STR_CLONE_SHIP_INFO                                             :{BLACK}Hierdoor wordt een kopie gebouw van dit schip. Control-click deelt de orders
-STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Hierdoor wordt een kopie gebouwd van een schip. Klik op deze knop en dan op een schip binnen of buiten het depot. Control-click deelt de orders
+STR_CLONE_SHIP_INFO                                             :{BLACK}Hierdoor wordt een kopie gebouw van dit schip. Control-klik deelt de orders
+STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Hierdoor wordt een kopie gebouwd van een schip. Klik op deze knop en dan op een schip binnen of buiten het depot. Control-klik deelt de orders
 STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Schip moet gestopt zijn binnen een depot
 STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}Kan schip niet verkopen...
 STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Kan schip niet kopen...
@@ -2894,14 +2882,14 @@
 STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Schepen - klik op schip voor informatie
 STR_9820_BUILD_NEW_SHIP                                         :{BLACK}Bouw nieuw schip
 STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}Sleep schip hierheen om het te verkopen
-STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centreer hoofdbeeld op de lokatie van het schipdepot
+STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centreer hoofdbeeld op de locatie van het schipdepot
 STR_9823_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Schepen - klik op een schip voor informatie
 STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Bouw nieuwe schepen (heeft schipdepot nodig)
 STR_9825_SHIP_SELECTION_LIST_CLICK                              :{BLACK}Schepenlijst - klik op een schip voor informatie
 STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Bouw het geselecteerde schip
 STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Actie van dit schip - klik hier om het te starten of te stoppen
 STR_9828_SHOW_SHIP_S_ORDERS                                     :{BLACK}Laat orders van schip zien
-STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centreer hoofdbeeld op de lokatie van dit schip
+STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centreer hoofdbeeld op de locatie van dit schip
 STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Stuur schip naar depot
 STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Laat details van schip zien
 STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Prijs: {CURRENCY} Max. snelheid: {VELOCITY}{}Capaciteit: {CARGO}{}Brandstofkosten: {CURRENCY}/jr
@@ -2920,7 +2908,7 @@
 STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Ombouwen)
 STR_983C_REFIT_SHIP                                             :{BLACK}Schip ombouwen
 STR_983D_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Selecteer type goederen dat dit schip moet vervoeren
-STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Bouw schip om om geselecteerde goederen te vervoeren
+STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Bouw schip om, om geselecteerde goederen te vervoeren
 STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Selecteer goederentype om te vervoeren:
 STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nieuwe capaciteit: {GOLD}{CARGO}{}{BLACK}Ombouwkosten: {GOLD}{CURRENCY}
 STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Kan schip niet ombouwen...
@@ -2934,8 +2922,8 @@
 STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Vliegtuighangar
 STR_A003_NEW_AIRCRAFT                                           :{BLACK}Nieuw vliegtuig
 STR_CLONE_AIRCRAFT                                              :{BLACK}Kloon Vliegtuig
-STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Hierdoor wordt een kopie gebouw van dit vliegtuig. Control-click deelt de orders
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Hierdoor wordt een kopie gebouw van een vliegtuig. Klik op deze knop en dan op een vliegtuig binnen of buiten de hangar. Control-click deelt de orders
+STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Hierdoor wordt een kopie gebouw van dit vliegtuig. Control-klik deelt de orders
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Hierdoor wordt een kopie gebouw van een vliegtuig. Klik op deze knop en dan op een vliegtuig binnen of buiten de hangar. Control-klik deelt de orders
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}Nieuw Vliegtuig
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Bouw Vliegtuig
 STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Kan vliegtuig niet bouwen...
@@ -2956,7 +2944,7 @@
 STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Vliegtuig {COMMA} wacht in de vliegtuig hangar
 STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Vliegtuig in de weg
 STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}Kan vliegtuig niet stoppen/starten...
-STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Vliegutig is in the lucht
+STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Vliegtuig is in the lucht
 STR_A019_CAPACITY                                               :{BLACK}Capaciteit: {LTBLUE}{CARGO}, {CARGO}
 STR_A01A_CAPACITY                                               :{BLACK}Capaciteit: {LTBLUE}{CARGO}
 STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Vliegtuig moet gestopt zijn in een hangar
@@ -2968,12 +2956,12 @@
 STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Vliegtuig - klik op vliegtuig voor informatie
 STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Bouw nieuw vliegtuig
 STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Sleep vliegtuig hierheen om het te verkopen
-STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Centreer hoofdbeeld op hangarlokatie
+STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Centreer hoofdbeeld op hangarlocatie
 STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Vliegtuiglijst - klik op een vliegtuig voor informatie
 STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Bouw het geselecteerde vliegtuig
 STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Actie van huidig vliegtuig - klik hier om het vliegtuig te stoppen of te starten
 STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Laat vliegtuigorders zien
-STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Centreer hoofdbeeld op de vliegtuiglokatie
+STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Centreer hoofdbeeld op de vliegtuiglocatie
 STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Stuur vliegtuig naar hangar
 STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Laat vliegtuigdetails zien
 STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Prijs: {CURRENCY} Max. snelheid: {VELOCITY}{}Capaciteit: {COMMA} passagiers, {COMMA} zakken post{}Brandstofkosten: {CURRENCY}/jr
@@ -2993,26 +2981,26 @@
 STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Omgebouwd)
 STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Vliegtuig ombouwen
 STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Selecteer goederentype om te vervoeren door het vliegtuig
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Bouw vliegtuig om om het geselecteerde goederentype te vervoeren
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Bouw vliegtuig om, om het geselecteerde goederentype te vervoeren
 STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Selecteer goederentype om te vervoeren:
 STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nieuwe capaciteit: {GOLD}{STRING}{}{BLACK}Ombouwkosten: {GOLD}{CURRENCY}
 STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Kan vliegtuig niet ombouwen...
 STR_GO_TO_AIRPORT_HANGAR                                        :Ga naar {STATION} hanger
-SERVICE_AT_AIRPORT_HANGAR                                       :Reperatie bij {STATION} hanger
+SERVICE_AT_AIRPORT_HANGAR                                       :Reparatie bij {STATION} hanger
 
 STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Dienstregeling)
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Zeppelin ongeluk bij {STATION}!
 STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Voertuig vernietigd in botsing met 'UFO'
-STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Olieraffinaderij in de buurt van {TOWN} is explodeerd!
+STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Olieraffinaderij in de buurt van {TOWN} is geëxplodeerd!
 STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}Fabriek in de buurt van {TOWN} is vernietigd onder verdachte omstandigheden!
 STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}'UFO' landt in de buurt van {TOWN}!
 STR_B005_COAL_MINE_SUBSIDENCE_LEAVES                            :{BLACK}{BIGFONT}Instorting van kolenmijn laat spoor van vernietiging achter in de buurt van {TOWN}!
 STR_B006_FLOOD_VEHICLE_DESTROYED                                :{BLACK}{BIGFONT}Overstromingen!{}Minstens {COMMA} zijn vermist of dood na overstromingen!
 
 STR_BRIBE_FAILED                                                :{WHITE}Je poging tot omkopen is
-STR_BRIBE_FAILED_2                                              :{WHITE}ondekt door regionale onderzoekers
+STR_BRIBE_FAILED_2                                              :{WHITE}ontdekt door een regionale onderzoeker
 STR_BUILD_DATE                                                  :{BLACK}Bouwjaar: {LTBLUE}{DATE_LONG}
 
 STR_PERFORMANCE_DETAIL                                          :{WHITE}Detail van de prestatiewaarde
@@ -3035,7 +3023,7 @@
 ############ End of order list
 STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Aantal voertuigen. Dit is inclusief wegvoertuigen, treinen, schepen en vliegtuigen.
 STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Aantal stationsonderdelen. Elke deel van een station (b.v. trein station, bushalte, vliegveld) wordt geteld, zelfs als deze zijn verbonden met een station.
-STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}De winst van de voertuigen met het laagste inkomen (van alle voeruigen ouder dan 2 jaar)
+STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}De winst van de voertuigen met het laagste inkomen (van alle voertuigen ouder dan 2 jaar)
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Het hoeveelheid aan geld dat is verdient in de maand met de laagste winst van de afgelopen 12 kwartalen
 STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Het hoeveelheid aan geld dat is verdient in de maand met de hoogste winst van de afgelopen 12 kwartalen
 STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Het aantal eenheden aan goederen dat is bezorgd in de afgelopen vier kwartalen.
@@ -3062,7 +3050,7 @@
 STR_NEWGRF_ERROR_VERSION_NUMBER                                 :{STRING} werkt niet met de TTDPatch versie, gerapporteerd door OpenTTD.
 STR_NEWGRF_ERROR_DOS_OR_WINDOWS                                 :{STRING} is voor de {STRING} versie van TTD.
 STR_NEWGRF_ERROR_UNSET_SWITCH                                   :{STRING} is ontwikkeld voor {STRING}
-STR_NEWGRF_ERROR_INVALID_PARAMETER                              :Ongeldide parameter voor {STRING}: parameter {STRING} ({NUM})
+STR_NEWGRF_ERROR_INVALID_PARAMETER                              :Ongeldige parameter voor {STRING}: parameter {STRING} ({NUM})
 STR_NEWGRF_ERROR_LOAD_BEFORE                                    :{STRING} moet geladen zijn voor {STRING}.
 STR_NEWGRF_ERROR_LOAD_AFTER                                     :{STRING} moet geladen zijn na {STRING}.
 STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE                          :het GRF bestand is bedoelt voor het vertalen van
@@ -3135,7 +3123,7 @@
 
 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Geef een lijst van alle treinen met huidig depot in hun orders
 STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Geef een lijst van alle wegvoertuigen met huidig depot in hun orders
-STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Geef een lijst van alle schepen met huidig schepswerf in hun orders
+STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Geef een lijst van alle schepen met huidig scheepswerf in hun orders
 STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Geef een lijst van alle vliegtuigen met een hangar van dit vliegveld in hun orders
 
 STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Vervang automatisch alle treinen in het depot
@@ -3156,7 +3144,7 @@
 STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Selecteer het type locmotief om te vervangen
 STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Selecteer een nieuw type locomotief die je wil gebruiken om het links geselecteerde type locomotief te vervangen
 STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief niet wil vervangen
-STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Klik op deze knop als je de aan de linkerkant geseleteerde locomotief wil vervangen met die aan de rechterkant
+STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief wil vervangen met die aan de rechterkant
 STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Selecteer een railtype waar je locomotieven voor wil selecteren
 STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Dit geeft weer waarmee de aan de linkerkant geselecteerde locomotief mee vervangen wordt
 STR_REPLACE_HELP                                                :{BLACK}Deze optie stelt je in staat om een type voertuig te selecteren en die te vervangen door een andere, zodra de voertuigen een depot inrijden
@@ -3193,7 +3181,7 @@
 ############ Lists rail types
 
 STR_RAIL_VEHICLES                                               :Treinstellen
-STR_ELRAIL_VEHICLES                                             :Electrische spoorvoertuigen
+STR_ELRAIL_VEHICLES                                             :Elektrische spoorvoertuigen
 STR_MONORAIL_VEHICLES                                           :Monorail Voertuigen
 STR_MAGLEV_VEHICLES                                             :Maglev Voertuigen
 
@@ -3248,7 +3236,7 @@
 STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Hoogtekaart naam:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Grootte: {ORANGE}{NUM} x {NUM}
-STR_GENERATION_WORLD                                            :{WHITE}Wereld creeren
+STR_GENERATION_WORLD                                            :{WHITE}Wereld creëren
 STR_GENERATION_ABORT                                            :{BLACK}Stop
 STR_GENERATION_ABORT_CAPTION                                    :{WHITE}Stop Wereld Generatie
 STR_GENERATION_ABORT_MESSAGE                                    :{YELLOW}Weet je zeker dat je de actie wilt stoppen?
@@ -3261,7 +3249,7 @@
 STR_SETTINGUP_GAME                                              :{BLACK}Spel aan het configureren
 STR_PREPARING_TILELOOP                                          :{BLACK}Bezig met vlakken
 STR_PREPARING_GAME                                              :{BLACK}Voorbereiden spel
-STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Deze aktie past de moeilijkheidsgraag aan naam custom
+STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Deze actie past de moeilijkheidsgraad aan naar custom
 STR_SE_FLAT_WORLD                                               :{WHITE}Vlak land
 STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Genereer een vlakke kaart
 STR_SE_RANDOM_LAND                                              :{WHITE}Willekeurig land
@@ -3361,11 +3349,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Hernoem de geselecteerde groep
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klik om deze groep te beschermen tegen globaal automatisch vervangen
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Winst dit jaar: {GREEN}{CURRENCY} {BLACK}(vorig jaar: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Winst dit jaar: {RED}{CURRENCY} {BLACK}(vorig jaar: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Winst dit jaar: {GREEN}{CURRENCY} {BLACK}(vorig jaar: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Winst dit jaar: {RED}{CURRENCY} {BLACK}(vorig jaar: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
@@ -3373,7 +3356,7 @@
 STR_SIGN_NAME                                                   :{SIGN}
 STR_VEHICLE_NAME                                                :{VEHICLE}
 
-STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Naam moet unique zijn
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Naam moet uniek zijn
 
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Ga naar volgende bord
--- a/src/lang/english.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/english.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Too close to edge of map
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Not enough cash - requires {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flat land required
 STR_0008_WAITING                                                :{BLACK}Waiting: {WHITE}{STRING}
@@ -1104,6 +1103,12 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Scroll map
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Off
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Map scrollwheel speed: {ORANGE}{STRING1}
+
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU                          :{LTBLUE}Right-click emulation: {ORANGE}{STRING1}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND                  :Command-click
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL                  :Control-click
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF                      :Off
+
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automatically pause when starting a new game: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Use the advanced vehicle list: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Use loading indicators: {ORANGE}{STRING1}
@@ -1263,7 +1268,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...buoy is in use!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordinates: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordinates: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Can't remove part of station...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Can't convert railtype here...
@@ -1374,34 +1379,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Protect your game with a password if you don't want it to be publicly accessible
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Select a map:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Which map do you want to play?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max clients:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (advertise)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 players
-STR_NETWORK_1_PLAYERS                                           :1 player
-STR_NETWORK_2_PLAYERS                                           :2 players
-STR_NETWORK_3_PLAYERS                                           :3 players
-STR_NETWORK_4_PLAYERS                                           :4 players
-STR_NETWORK_5_PLAYERS                                           :5 players
-STR_NETWORK_6_PLAYERS                                           :6 players
-STR_NETWORK_7_PLAYERS                                           :7 players
-STR_NETWORK_8_PLAYERS                                           :8 players
-STR_NETWORK_9_PLAYERS                                           :9 players
-STR_NETWORK_10_PLAYERS                                          :10 players
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} client{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max clients:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P y ies}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max companies:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limit the server to a certain amount of companies
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} spectator{P "" s}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max spectators:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limit the server to a certain amount of spectators
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Language spoken:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Other players will know which language is spoken on the server
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start Game
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start a new network game from a random map, or scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Load Game
@@ -3361,11 +3355,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Rename the selected group
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Click to protect this group from global autoreplace
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit this year: {GREEN}{CURRENCY} {BLACK}(last year: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit this year: {RED}{CURRENCY} {BLACK}(last year: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit this year: {GREEN}{CURRENCY} {BLACK}(last year: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit this year: {RED}{CURRENCY} {BLACK}(last year: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/esperanto.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/esperanto.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Tro proksime al la mapa rando
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Ne sufiĉe da mono - vi bezonas {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesas ebena lando
 STR_0008_WAITING                                                :{BLACK}Atendas: {WHITE}{STRING}
@@ -1246,7 +1245,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...buo estas uzata
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinatoj: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Ne povas forigi stacidomeron...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Ne povas transigi reltipon ĉi tie...
@@ -1359,32 +1357,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kiun mapon vi volas ludi?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Klienta maksimumo:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Elektu klientan maksimumon. Ne ĉiuj lokoj estas plenigendaj
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Loka reto
 STR_NETWORK_INTERNET                                            :Interreto
 STR_NETWORK_LAN_INTERNET                                        :Loka reto / Interreto
 STR_NETWORK_INTERNET_ADVERTISE                                  :Interreto (reklamu)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 ludantoj
-STR_NETWORK_1_PLAYERS                                           :1 ludanto
-STR_NETWORK_2_PLAYERS                                           :2 ludantoj
-STR_NETWORK_3_PLAYERS                                           :3 ludantoj
-STR_NETWORK_4_PLAYERS                                           :4 ludantoj
-STR_NETWORK_5_PLAYERS                                           :5 ludantoj
-STR_NETWORK_6_PLAYERS                                           :6 ludantoj
-STR_NETWORK_7_PLAYERS                                           :7 ludantoj
-STR_NETWORK_8_PLAYERS                                           :8 ludantoj
-STR_NETWORK_9_PLAYERS                                           :9 ludantoj
-STR_NETWORK_10_PLAYERS                                          :10 ludantoj
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Kompania maksimumo:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limu la servilon al certa kvanto da kompanioj
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Spektanta maksimumo:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limigu la servilon al certa kvanto da spektantoj
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Parolata lingvo:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Aliaj ludantoj scios kiu lingvo paroliĝas en la servilo
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Startu Ludon
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Komencu novan retan ludon de hazarda mapo, aŭ scenaro
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Ŝarĝu Ludon
@@ -1587,7 +1569,6 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Reloj kun normalaj signaloj
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Reloj kun antaŭ-signaloj
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Reloj kun elir-signaloj
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Reloj kun kombin-signaloj
 
 
 
--- a/src/lang/estonian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/estonian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Kaardi äärele liiga lähedal
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Pole piisavalt raha - vajad {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Maapind peab olema tasane
 STR_0008_WAITING                                                :{BLACK}Ootel: {WHITE}{STRING}
@@ -693,7 +692,7 @@
 STR_0207_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Konkurendi jaama saabus esimene veovahend
 STR_0208_ACCIDENTS_DISASTERS                                    :{YELLOW}Õnnetused / katastroofid
 STR_0209_COMPANY_INFORMATION                                    :{YELLOW}Ettevõtte teave
-STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Ava / sulge tööstuseid
+STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Tööstuste avamised ja sulgemised
 STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Muutused majanduses
 STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Soovitused ja teated mängija veovahendite kohta
 STR_020C_NEW_VEHICLES                                           :{YELLOW}Uus veerem
@@ -1363,7 +1362,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...poi on kasutusel!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinaadid: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinaadid: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Siinset jaamablokki ei saa lammutada...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Siin ei saa raudteetüüpi muuta...
@@ -1474,34 +1473,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Kaitse oma mäng parooliga, kui sa ei taha, et kõik sellele ligi pääseksid
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Vali kaart:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Millist kaarti sa tahad mängida?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Suurim klientide arv:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Määra suurim klientide arv. Kõik vabad kohad ei pea täidetud olema
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :kohtvõrk (LAN)
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (reklaami)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 mängijat
-STR_NETWORK_1_PLAYERS                                           :1 mängija
-STR_NETWORK_2_PLAYERS                                           :2 mängijat
-STR_NETWORK_3_PLAYERS                                           :3 mängijat
-STR_NETWORK_4_PLAYERS                                           :4 mängijat
-STR_NETWORK_5_PLAYERS                                           :5 mängijat
-STR_NETWORK_6_PLAYERS                                           :6 mängijat
-STR_NETWORK_7_PLAYERS                                           :7 mängijat
-STR_NETWORK_8_PLAYERS                                           :8 mängijat
-STR_NETWORK_9_PLAYERS                                           :9 mängijat
-STR_NETWORK_10_PLAYERS                                          :10 mängijat
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} klient{P "" i}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Suurim klientide arv:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Määra suurim klientide arv. Kõik vabad kohad ei pea täidetud olema
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} ettevõte{P "" t}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Enim ettevõtteid:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Luba serveris X mängijat
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} pealtvaataja{P "" t}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Enim pealtvaatajaid
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Luba serveris X vaatajat
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Räägitav keel:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Teistele mängijatele teadmiseks, et mis keelt serveris räägitakse
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Alusta mängu
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Uue võrgumängu alustamine suvalise kaardiga
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Mängu laadimine
@@ -1578,7 +1566,7 @@
 STR_NETWORK_CONNECTING_SPECIAL_1                                :{BLACK}Hangin mängu infot...
 STR_NETWORK_CONNECTING_SPECIAL_2                                :{BLACK}Hangin ettevõtte infot...
 ############ End of leave-in-this-order
-STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} kelint{P "" e} sinu ees
+STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} klient{P "" i} sinu ees
 STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} kbaiti tõmmatud
 
 STR_NETWORK_DISCONNECT                                          :{BLACK}Katkesta
@@ -1729,13 +1717,13 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Rööbastee läbisõidusignaalidega
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Rööbastee sissesõidusignaalidega
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Rööbastee väljasõidusignaalidega
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Rööbastee mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Raudtee mitmiksignaalidega
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Rööbastee läbisõidu- ja hoiatussignaalidega
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Rööbastee läbisõidu- ja väljasõidusignaalidega
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Rööbastee läbisõidu- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Raudtee tava- ja mitmiksignaalidega
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Rööbastee hoiatus- ja väljasõidusignaalidega
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Rööbastee hoiatus- ja mitmiksignaalidega
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Rööbastee väljasõidu- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Raudtee eel- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Raudtee väljumis- ja mitmiksignaalidega
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Raudteejaama peab eelnevalt lammutama
 
 
@@ -3221,7 +3209,7 @@
 STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Näita kõiki lennukeid, mille sõidugraafik sisaldab seda lennujaama
 STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Näita kõiki laevu, mille sõidugraafik sisaldab seda sadamat
 
-STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Jagatud sõidugraafik{COMMA} Auto{P "" d}
+STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}{COMMA} sõiduki vahel jagatud sõidugraafik
 STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid
 
 ### depot strings
@@ -3461,11 +3449,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Nimeta valitud üksus ümber
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klõpsa, et seda üksust üldise iseväljavahetuse eest kaitsta
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/finnish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/finnish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Liian lähellä kartan reunaa.
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Käteinen ei riitä - tarvitaan {CURRENCY}.
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Tarvitaan tasaista maata.
 STR_0008_WAITING                                                :{BLACK}Lähdössä: {WHITE}{STRING}
@@ -402,7 +401,7 @@
 STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Käytettävissä olevat ajoneuvot
 STR_AVAILABLE_SHIPS                                             :{BLACK}Käytettävissä olevat laivat
 STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Käytettävissä olevat ilma-alukset
-STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Näytä lista mahdollisista moottorimalleista tälle kulkuneuvolle.
+STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Näytä lista saatavilla olevista moottorityypeistä tälle ajoneuvotyypille.
 STR_MANAGE_LIST                                                 :{BLACK}Muokkaa listaa
 STR_MANAGE_LIST_TIP                                             :{BLACK}Ohjaa kaikkia listan ajoneuvoja
 STR_REPLACE_VEHICLES                                            :Korvaa liikennevälineitä
@@ -1260,7 +1259,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...poiju on käytössä!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinaatit: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinaatit: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Aseman osaa ei voi poistaa...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Raidetyyppiä ei voi muuntaa...
@@ -1358,7 +1357,7 @@
 STR_NETWORK_SERVER_OFFLINE                                      :{SILVER}PALVELIN KIINNI
 STR_NETWORK_SERVER_FULL                                         :{SILVER}PALVELIN TÄYNNÄ
 STR_NETWORK_VERSION_MISMATCH                                    :{SILVER}VERSIO EI TÄSMÄÄ
-STR_NETWORK_GRF_MISMATCH                                        :{SILVER}NEWGRF YHTEENSOPIMATTOMUUS
+STR_NETWORK_GRF_MISMATCH                                        :{SILVER}NEWGRF ei täsmää
 
 STR_NETWORK_JOIN_GAME                                           :{BLACK}Liity peliin
 
@@ -1371,34 +1370,20 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Jos peliin ei halua ulkopuolisia, voi sen suojata salasanalla.
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Valitse kartta:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Mitä karttaa haluat pelata?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Pelaajien enimmäismäärä:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Pelaajien enimmäismäärä. Pelissä voi olla myös vähemmän pelaajia.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Lähiverkko
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Lähiverkko/Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (mainosta)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 pelaajaa
-STR_NETWORK_1_PLAYERS                                           :1 pelaaja
-STR_NETWORK_2_PLAYERS                                           :2 pelaajaa
-STR_NETWORK_3_PLAYERS                                           :3 pelaajaa
-STR_NETWORK_4_PLAYERS                                           :4 pelaajaa
-STR_NETWORK_5_PLAYERS                                           :5 pelaajaa
-STR_NETWORK_6_PLAYERS                                           :6 pelaajaa
-STR_NETWORK_7_PLAYERS                                           :7 pelaajaa
-STR_NETWORK_8_PLAYERS                                           :8 pelaajaa
-STR_NETWORK_9_PLAYERS                                           :9 pelaajaa
-STR_NETWORK_10_PLAYERS                                          :10 pelaajaa
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Pelaajien enimmäismäärä:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Pelaajien enimmäismäärä. Pelissä voi olla myös vähemmän pelaajia.
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Yhtiöiden enimmäismäärä:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Rajoita yhtiöiden määrää palvelimella
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Katsojien enimmäismäärä:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Rajoita katsojien määrää palvelimella
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Puhuttu kieli:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Toiset pelaajat tietävät tästä, mitä kieltä palvelimella puhutaan.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Aloita peli
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Aloita uusi verkkopeli skenaariolla tai satunnaisella kartalla.
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Lataa peli
@@ -1626,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Rautatie tavallisin opastimin
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Rautatie esiopastimin
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Rautatie poistumisopastimin
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Rautatie yhdistetyin opastimin
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Rautatie esisignaaleilla
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Rautatie poistumis-signaaleilla
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Rautatie yhdistelmäsignaaleilla
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Rautatie esi- ja poistumissignaaleilla
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Rautatie esi- ja yhdistelmäsignaaleilla
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Rautatie poistumis- ja yhdistelmäsignaaleilla
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Poista asema ensin
 
 
@@ -2745,7 +2726,7 @@
 STR_885C_BROKEN_DOWN                                            :{RED}Rikki
 STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Ikä: {LTBLUE}{STRING}{BLACK}   Käyttökustannukset: {LTBLUE}{CURRENCY}/vuosi
 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Paino: {LTBLUE}{WEIGHT_S}  {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Huippunopeus: {LTBLUE}{VELOCITY}
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Paino: {LTBLUE}{WEIGHT_S} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Huippunopeus: {LTBLUE}{VELOCITY} {BLACK}Suurin vetokyky.: {LTBLUE}{FORCE}
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Massa: {LTBLUE}{WEIGHT_S} {BLACK}Voima: {LTBLUE}{POWER}{BLACK} Huippunopeus: {LTBLUE}{VELOCITY} {BLACK}Huippuvääntö: {LTBLUE}{FORCE}
 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Tuotto tänä vuonna: {LTBLUE}{CURRENCY}  (viime vuonna: {CURRENCY})
 STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Luotettavuus: {LTBLUE}{COMMA}%  {BLACK}Hajoamisia viime huollon jälkeen: {LTBLUE}{COMMA}
 STR_8861_STOPPED                                                :{RED}Pysäytetty
@@ -3213,7 +3194,7 @@
 STR_PURCHASE_INFO_REFITTABLE_TO                                 :{BLACK}Sovitettavissa: {GOLD}
 STR_PURCHASE_INFO_ALL_TYPES                                     :Kaikki rahtityypit
 STR_PURCHASE_INFO_ALL_BUT                                       :Kaikki paitsi {GOLD}
-STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Suurin vetokyky: {GOLD}{FORCE}
+STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Suurin vääntömomentti: {GOLD}{FORCE}
 
 ########### String for New Landscape Generator
 
@@ -3358,11 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Nimeä valittu ryhmä
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Poista ryhmä automaattisesti korvattavien joukosta
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Tulos tänä vuonna: {GREEN}{CURRENCY} {BLACK}(viime vuonna: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Tulos tänä vuonna: {RED}{CURRENCY} {BLACK}(viime vuonna: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Tulos tänä vuonna: {GREEN}{CURRENCY} {BLACK}(viime vuonna: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Tulos tänä vuonna: {RED}{CURRENCY} {BLACK}(viime vuonna: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/french.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/french.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Trop près des bords de la carte
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Fonds insuffisants{}Somme de {CURRENCY} requise
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Terrain plat requis
 STR_0008_WAITING                                                :{BLACK}En attente: {WHITE}{STRING}
@@ -1264,7 +1263,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... bouée utilisée !
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordonnées: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordonnées: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Impossible de supprimer une partie de la gare...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Impossible de convertir le type de rail...
@@ -1375,34 +1374,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Protéger votre partie avec un mot de passe si vous ne souhaitez pas que d'autres l'utilisent
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Choisir une carte:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Sur quelle carte désirez-vous jouer?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Nombre de clients max. :
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'être remplis.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (publier)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 joueurs
-STR_NETWORK_1_PLAYERS                                           :1 joueur
-STR_NETWORK_2_PLAYERS                                           :2 joueurs
-STR_NETWORK_3_PLAYERS                                           :3 joueurs
-STR_NETWORK_4_PLAYERS                                           :4 joueurs
-STR_NETWORK_5_PLAYERS                                           :5 joueurs
-STR_NETWORK_6_PLAYERS                                           :6 joueurs
-STR_NETWORK_7_PLAYERS                                           :7 joueurs
-STR_NETWORK_8_PLAYERS                                           :8 joueurs
-STR_NETWORK_9_PLAYERS                                           :9 joueurs
-STR_NETWORK_10_PLAYERS                                          :10 joueurs
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} client{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Nombre de clients max. :
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'être remplis.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compagnie{P "" s}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max compagnies:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limiter le serveur à un certain nombre de compagnies
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} spectateur{P "" s}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max spectateurs:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limiter le serveur à un certain nombre de spectateurs
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Langue utilisée :
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Les autres joueurs sauront quelle langue est parlée sur ce serveur.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Démarrer la partie
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Démarrer une nouvelle partie réseau à partir d'une carte aléatoire ou d'un scénario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Charger une partie
@@ -3362,11 +3350,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Renommer le groupe sélectionné
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Cliquer pour protéger ce groupe contre l'auto-remplacement global
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit cette année: {GREEN}{CURRENCY} {BLACK}(an dernier: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit cette année: {RED}{CURRENCY} {BLACK}(an dernier: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit cette année: {GREEN}{CURRENCY} {BLACK}(an dernier: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit cette année: {RED}{CURRENCY} {BLACK}(an dernier: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/galician.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/galician.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Demasiado cerca do borde do mapa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Diñeiro insuficiente - necesitas {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesitas terreo chan
 STR_0008_WAITING                                                :{BLACK}Esperando: {WHITE}{STRING}
@@ -1182,7 +1181,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...a boia está en uso!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Non se pode eliminar parte da estación...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Non se pode converti-lo tipo de vía aí...
@@ -1291,32 +1289,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}¿Que mapa queres xogar?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes permitidos:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolle o máximo número de clientes. Non tódolas liñas teñen que estar cubertas
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (anunciar)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 xogadores
-STR_NETWORK_1_PLAYERS                                           :1 xogador
-STR_NETWORK_2_PLAYERS                                           :2 xogadores
-STR_NETWORK_3_PLAYERS                                           :3 xogadores
-STR_NETWORK_4_PLAYERS                                           :4 xogadores
-STR_NETWORK_5_PLAYERS                                           :5 xogadores
-STR_NETWORK_6_PLAYERS                                           :6 xogadores
-STR_NETWORK_7_PLAYERS                                           :7 xogadores
-STR_NETWORK_8_PLAYERS                                           :8 xogadores
-STR_NETWORK_9_PLAYERS                                           :9 xogadores
-STR_NETWORK_10_PLAYERS                                          :10 xogadores
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Nº máx. de compañías:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limita-lo servidor a unha certa cantidade de compañías
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Nº máx. de espectadores:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limita-lo servidor a unha certa cantidade de espectadores
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Idioma falado:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Outros xogadores sabrán cal é o idioma que se fala no servidor
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Iniciar Partida
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Comezar unha nova partida en rede a partires dun mapa aleatorio, ou un escenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Cargar Partida
@@ -1531,7 +1513,6 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Vía de ferrocarril con sinais normais
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Vía de ferrocarril con pre-sinais
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :vía de ferrocarril con sinais de saída
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Via de ferrocarril con sinais combinados
 
 
 
--- a/src/lang/german.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/german.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -8,14 +8,13 @@
 
 ##id 0x0000
 STR_NULL                                                        :
-STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Zu weit vom Kartenrand entfernt
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Zu nahe am Kartenrand
-STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nicht genug Geld - {CURRENCY} benötigt!
+STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Zu weit vom Spielfeldrand entfernt
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Zu nahe am Spielfeldrand
+STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nicht genug Geld - {CURRENCY} erforderlich
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Ebenes Land erforderlich
-STR_0008_WAITING                                                :{BLACK}Wartend:  {WHITE}{STRING}
+STR_0008_WAITING                                                :{BLACK}Im Wartezustand:  {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
 STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (unterwegs von
 STR_000B                                                        :{YELLOW}{STATION})
@@ -153,14 +152,14 @@
 STR_ABBREV_ALL                                                  :{TINYFONT}ALLE
 STR_00AE                                                        :{WHITE}{DATE_SHORT}
 STR_00AF                                                        :{WHITE}{DATE_LONG}
-STR_00B0_MAP                                                    :{WHITE}Karte - {STRING}
+STR_00B0_MAP                                                    :{WHITE}Weltkarte - {STRING}
 STR_00B1_GAME_OPTIONS                                           :{WHITE}Spieleinstellungen
 STR_00B2_MESSAGE                                                :{YELLOW}Nachricht
 STR_00B3_MESSAGE_FROM                                           :{YELLOW}Nachricht von {STRING}
 STR_POPUP_CAUTION_CAPTION                                       :{WHITE}Achtung!
-STR_00B4_CAN_T_DO_THIS                                          :{WHITE}Kann dies nicht tun....
-STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}Kann das Gebiet nicht räumen....
-STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle Rechte vorbehalten
+STR_00B4_CAN_T_DO_THIS                                          :{WHITE}Befehl nicht ausführbar...
+STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}Gebiet kann nicht geräumt werden...
+STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Ursprüngliches Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, Alle Rechte vorbehalten
 STR_00B7_VERSION                                                :{BLACK}OpenTTD Version {REV}
 STR_00BA_COPYRIGHT_OPENTTD                                      :{BLACK}OpenTTD {COPYRIGHT}2002-2007 OpenTTD-Team
 STR_TRANSLATED_BY                                               :{BLACK}  Übersetzer -
@@ -170,7 +169,7 @@
 STR_00C7_QUIT                                                   :{WHITE}Verlassen
 STR_00C8_YES                                                    :{BLACK}Ja
 STR_00C9_NO                                                     :{BLACK}Nein
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Bist du sicher, dass du das Spiel abbrechen und zu {STRING} zurückkehren willst?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Sind Sie sicher, dass Sie das Spiel abbrechen und zu {STRING} zurückkehren wollen?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -227,14 +226,14 @@
 STR_0100_FACTORY                                                :{BLACK}{TINYFONT}Fabrik
 STR_0101_PRINTING_WORKS                                         :{BLACK}{TINYFONT}Druckerei
 STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Ölquellen
-STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Eisenerzmine
+STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Eisenerzbergwerk
 STR_0104_STEEL_MILL                                             :{BLACK}{TINYFONT}Stahlfabrik
 STR_0105_BANK                                                   :{BLACK}{TINYFONT}Bank
 STR_0106_PAPER_MILL                                             :{BLACK}{TINYFONT}Papiermühle
 STR_0107_GOLD_MINE                                              :{BLACK}{TINYFONT}Goldmine
 STR_0108_FOOD_PROCESSING_PLANT                                  :{BLACK}{TINYFONT}Nahrungsmittelfabrik
 STR_0109_DIAMOND_MINE                                           :{BLACK}{TINYFONT}Diamantenmine
-STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Kupfermine
+STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Kupfererzbergwerk
 STR_010B_FRUIT_PLANTATION                                       :{BLACK}{TINYFONT}Fruchtplantage
 STR_010C_RUBBER_PLANTATION                                      :{BLACK}{TINYFONT}Kautschukplantage
 STR_010D_WATER_SUPPLY                                           :{BLACK}{TINYFONT}Wasserquelle
@@ -299,7 +298,7 @@
 STR_0141_LOAD_GAME                                              :{BLACK}Spiel laden
 STR_SINGLE_PLAYER                                               :{BLACK}Einzelspieler
 STR_MULTIPLAYER                                                 :{BLACK}Mehrspieler
-STR_SCENARIO_EDITOR                                             :{BLACK}Szenario Editor
+STR_SCENARIO_EDITOR                                             :{BLACK}Szenarieneditor
 
 STR_64                                                          :64
 STR_128                                                         :128
@@ -307,7 +306,7 @@
 STR_512                                                         :512
 STR_1024                                                        :1024
 STR_2048                                                        :2048
-STR_MAPSIZE                                                     :{BLACK}Kartengröße:
+STR_MAPSIZE                                                     :{BLACK}Spielfeldgröße:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spieleinstellungen
 
@@ -364,7 +363,7 @@
 STR_015D_LOAD_GAME                                              :Spiel laden
 STR_015E_QUIT_GAME                                              :Spiel beenden
 STR_015F_QUIT                                                   :Beenden
-STR_ABANDON_GAME_QUERY                                          :{YELLOW}Bist du sicher, dass du das Spiel beenden willst?
+STR_ABANDON_GAME_QUERY                                          :{YELLOW}Sind Sie sicher, dass Sie das Spiel beenden wollen?
 STR_0161_QUIT_GAME                                              :{WHITE}Spiel beenden
 STR_SORT_ORDER_TIP                                              :{BLACK}Sortierreihenfolge auswählen (absteigend/aufsteigend)
 STR_SORT_CRITERIA_TIP                                           :{BLACK}Sortierkriterium auswählen
@@ -378,8 +377,8 @@
 STR_SORT_BY_DROPDOWN_NAME                                       :Name
 STR_SORT_BY_DATE                                                :{BLACK}Datum
 STR_SORT_BY_NUMBER                                              :Nummer
-STR_SORT_BY_PROFIT_LAST_YEAR                                    :Profit letztes Jahr
-STR_SORT_BY_PROFIT_THIS_YEAR                                    :Profit dieses Jahr
+STR_SORT_BY_PROFIT_LAST_YEAR                                    :Gewinn im letzten Jahr
+STR_SORT_BY_PROFIT_THIS_YEAR                                    :Gewinn in diesem Jahr
 STR_SORT_BY_AGE                                                 :Alter
 STR_SORT_BY_RELIABILITY                                         :Zuverlässigkeit
 STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Gesamtkapazität pro Fracht
@@ -396,21 +395,21 @@
 STR_ENGINE_SORT_RUNNING_COST                                    :Betriebskosten
 STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Leistung/Betriebskosten
 STR_ENGINE_SORT_CARGO_CAPACITY                                  :Frachtkapazität
-STR_NO_WAITING_CARGO                                            :{BLACK}Keine Fracht wartet
-STR_SELECT_ALL_FACILITIES                                       :{BLACK}Wähle alle Anlagen
-STR_SELECT_ALL_TYPES                                            :{BLACK}Wähle alle Frachtarten (einschließlich ohne wartender Fracht)
+STR_NO_WAITING_CARGO                                            :{BLACK}Keine Fracht im Wartezustand
+STR_SELECT_ALL_FACILITIES                                       :{BLACK}Alle Anlagen auswählen
+STR_SELECT_ALL_TYPES                                            :{BLACK}Alle Frachtarten auswählen (einschließlich keine Fracht)
 STR_AVAILABLE_TRAINS                                            :{BLACK}Verfügbare Züge
 STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Verfügbare Fahrzeuge
 STR_AVAILABLE_SHIPS                                             :{BLACK}Verfügbare Schiffe
 STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Verfügbare Flugzeuge
-STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Zeige eine Liste von verfügbaren Fahrzeugen für diesen Fahrzeugtyp
-STR_MANAGE_LIST                                                 :{BLACK}Verwalte die Liste
+STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Verfügbare Fahrzeuge für diesen Fahrzeugtyp auflisten
+STR_MANAGE_LIST                                                 :{BLACK}Liste verwalten
 STR_MANAGE_LIST_TIP                                             :{BLACK}Aufträge an alle Fahrzeuge in der Liste verschicken
-STR_REPLACE_VEHICLES                                            :Ersetze Fahrzeuge
-STR_SEND_TRAIN_TO_DEPOT                                         :Sende nach Depot
-STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Sende nach Depot
-STR_SEND_SHIP_TO_DEPOT                                          :Sende nach Depot
-STR_SEND_AIRCRAFT_TO_HANGAR                                     :Sende nach Hangar
+STR_REPLACE_VEHICLES                                            :Fahrzeuge ersetzen
+STR_SEND_TRAIN_TO_DEPOT                                         :Ins Depot schicken
+STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Ins Depot schicken
+STR_SEND_SHIP_TO_DEPOT                                          :In die Werft schicken
+STR_SEND_AIRCRAFT_TO_HANGAR                                     :In den Hangar schicken
 STR_SEND_FOR_SERVICING                                          :Zur Wartung schicken
 
 ############ range for months starts
@@ -445,8 +444,8 @@
 STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Fahrzeuglisten der Firmen
 STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Schiffslisten der Firmen
 STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Flugzeuglisten der Firmen
-STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Heranzoomen (vergrößern)
-STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Wegzoomen (verkleinern)
+STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Ansicht vergrößern (hereinzoomen)
+STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Ansicht verkleinern (herauszoomen)
 STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Gleise legen
 STR_0182_BUILD_ROADS                                            :{BLACK}Straßen bauen
 STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}Hafen bauen
@@ -465,16 +464,16 @@
 STR_018D_DEMOLISH_BUILDINGS_ETC                                 :{BLACK}Gebäude usw. auf einem Planquadrat abreißen
 STR_018E_LOWER_A_CORNER_OF_LAND                                 :{BLACK}Land absenken
 STR_018F_RAISE_A_CORNER_OF_LAND                                 :{BLACK}Land anheben
-STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Scrollbalken - Liste auf- und abwärts blättern
-STR_HSCROLL_BAR_SCROLLS_LIST                                    :{BLACK}Scrollbalken - Liste nach links und rechts blättern
-STR_0191_SHOW_LAND_CONTOURS_ON_MAP                              :{BLACK}Höhenlinien auf der Karte anzeigen
-STR_0192_SHOW_VEHICLES_ON_MAP                                   :{BLACK}Fahrzeuge auf der Karte anzeigen
-STR_0193_SHOW_INDUSTRIES_ON_MAP                                 :{BLACK}Industrien auf der Karte anzeigen
-STR_0194_SHOW_TRANSPORT_ROUTES_ON                               :{BLACK}Transportwege auf der Karte anzeigen
-STR_0195_SHOW_VEGETATION_ON_MAP                                 :{BLACK}Vegetation auf der Karte anzeigen
-STR_0196_SHOW_LAND_OWNERS_ON_MAP                                :{BLACK}Landeigentümer auf der Karte anzeigen
-STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Stadtnamen anzeigen an/aus
-STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}Profit laufendes Jahr: {CURRENCY} (vorheriges Jahr: {CURRENCY})
+STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Bildlaufleiste - Liste auf- und abwärts blättern
+STR_HSCROLL_BAR_SCROLLS_LIST                                    :{BLACK}Bildlaufleiste - Liste nach links und rechts blättern
+STR_0191_SHOW_LAND_CONTOURS_ON_MAP                              :{BLACK}Höhenlinien auf der Weltkarte anzeigen
+STR_0192_SHOW_VEHICLES_ON_MAP                                   :{BLACK}Fahrzeuge auf der Weltkarte anzeigen
+STR_0193_SHOW_INDUSTRIES_ON_MAP                                 :{BLACK}Industrien auf der Weltkarte anzeigen
+STR_0194_SHOW_TRANSPORT_ROUTES_ON                               :{BLACK}Transportwege auf der Weltkarte anzeigen
+STR_0195_SHOW_VEGETATION_ON_MAP                                 :{BLACK}Vegetation auf der Weltkarte anzeigen
+STR_0196_SHOW_LAND_OWNERS_ON_MAP                                :{BLACK}Landeigentümer auf der Weltkarte anzeigen
+STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Städtenamen anzeigen ein/aus
+STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}Gewinn im laufenden Jahr: {CURRENCY} (vergangenes Jahr: {CURRENCY})
 
 ############ range for service numbers starts
 STR_AGE                                                         :{COMMA} Jahr{P "" e} ({COMMA})
@@ -544,8 +543,8 @@
 STR_01D6_OLD_STYLE                                              :{TINYFONT}Traditionell
 STR_01D7_NEW_STYLE                                              :{TINYFONT}Modern
 STR_01D8_EZY_STREET                                             :{TINYFONT}Ezy Street
-STR_01D9_CUSTOM_1                                               :{TINYFONT}Individuell 1
-STR_01DA_CUSTOM_2                                               :{TINYFONT}Individuell 2
+STR_01D9_CUSTOM_1                                               :{TINYFONT}Benutzerdefiniert 1
+STR_01DA_CUSTOM_2                                               :{TINYFONT}Benutzerdefiniert 2
 STR_01DB_MUSIC_VOLUME                                           :{BLACK}{TINYFONT}Musiklautstärke
 STR_01DC_EFFECTS_VOLUME                                         :{BLACK}{TINYFONT}Soundlautstärke
 STR_01DD_MIN_MAX                                                :{BLACK}{TINYFONT}MIN  '  '  ' '  '  '  MAX
@@ -573,15 +572,15 @@
 STR_01F3_SELECT_ALL_TRACKS_PROGRAM                              :{BLACK}Programm 'Alle Titel' wählen
 STR_01F4_SELECT_OLD_STYLE_MUSIC                                 :{BLACK}Programm 'Traditionell' wählen
 STR_01F5_SELECT_NEW_STYLE_MUSIC                                 :{BLACK}Programm 'Modern' wählen
-STR_01F6_SELECT_CUSTOM_1_USER_DEFINED                           :{BLACK}Programm 'Individuell 1' (benutzerdefiniert) wählen
-STR_01F7_SELECT_CUSTOM_2_USER_DEFINED                           :{BLACK}Programm 'Individuell 2' (benutzerdefiniert) wählen
-STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Lösche laufendes Programm  (nur für Individuell 1 und Individuell 2)
+STR_01F6_SELECT_CUSTOM_1_USER_DEFINED                           :{BLACK}Programm 'Benutzerdefiniert 1' wählen
+STR_01F7_SELECT_CUSTOM_2_USER_DEFINED                           :{BLACK}Programm 'Benutzerdefiniert 2' wählen
+STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Lösche laufendes Programm  (nur für Benutzerdefiniert 1 und 2)
 STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Musikeinstellungen speichern
-STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Klicke auf den Musiktitel, um ihn in das laufende Programm zu übernehmen (nur für Individuell 1 und Individuell 2)
+STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Klicke auf den Musiktitel, um ihn in das laufende Programm zu übernehmen (nur für Benutzerdefiniert 1 und 2)
 STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Klicke auf einen Musiktitel, um ihn aus der aktuellen Liste zu entfernen(Custom1 or Custom2 only)
 STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Schalte Programmauswahl an/aus
 STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Zeige Musiktitelauswahl
-STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Anklicken, um die Ansicht auf die Industrie/Stadt zu zentrieren
+STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Klick auf Dienstleistung scrollt Hauptansicht zur Industrie/Stadt
 STR_01FE_DIFFICULTY                                             :{BLACK}Schwierigkeit ({STRING})
 STR_01FF                                                        :{TINYFONT}{BLACK}{DATE_LONG}
 STR_0200_LAST_MESSAGE_NEWS_REPORT                               :Letzte Mitteilung / Nachricht
@@ -629,8 +628,8 @@
 STR_022A_GENERATE_RANDOM_LAND                                   :{BLACK}Erzeuge Land durch Zufall
 STR_022B_RESET_LANDSCAPE                                        :{BLACK}Landfläche wiederherstellen
 STR_022C_RESET_LANDSCAPE                                        :{WHITE}Landfläche wiederherstellen
-STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Entferne das gesamte Spielereigentum von der Karte
-STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Bist du sicher, daß du das gesamte Spielereigentum entfernen willst?
+STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Das gesamte Spielereigentum von der Karte entfernen
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Sind Sie sicher, dass das gesamte Spielereigentum entfernt werden soll?
 STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Landfläche erzeugen
 STR_022F_TOWN_GENERATION                                        :{BLACK}Stadt errichten
 STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Industrie errichten
@@ -638,13 +637,13 @@
 STR_0233_TOWN_GENERATION                                        :{WHITE}Stadt errichten
 STR_0234_NEW_TOWN                                               :{BLACK}Neue Stadt
 STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Neue Stadt errichten
-STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}Kann hier keine Stadt errichten...
-STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...zu dicht am Kartenrand
+STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}Stadt kann hier nicht errichtet werden...
+STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...zu dicht am Spielfeldrand
 STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...zu dicht an einer anderen Stadt
 STR_0239_SITE_UNSUITABLE                                        :{WHITE}...ungeeigneter Standort
 STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...zu viele Städte
 STR_CANNOT_GENERATE_TOWN                                        :{WHITE}Bau von Städten unmöglich
-STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...es ist kein Platz mehr auf der Karte.
+STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...es ist kein Platz mehr auf dem Spielfeld.
 STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Vergrößere die Stadt
 STR_023C_EXPAND                                                 :{BLACK}Ausdehnen
 STR_023D_RANDOM_TOWN                                            :{BLACK}Zufällige Stadt
@@ -657,9 +656,9 @@
 STR_0244_OIL_REFINERY                                           :{BLACK}Ölraffinerie
 STR_0245_OIL_RIG                                                :{BLACK}Ölbohrinsel
 STR_0246_FACTORY                                                :{BLACK}Fabrik
-STR_0247_STEEL_MILL                                             :{BLACK}Stahlwerk
+STR_0247_STEEL_MILL                                             :{BLACK}Stahlwalzwerk
 STR_0248_FARM                                                   :{BLACK}Bauernhof
-STR_0249_IRON_ORE_MINE                                          :{BLACK}Eisenerzmine
+STR_0249_IRON_ORE_MINE                                          :{BLACK}Eisenerzbergwerk
 STR_024A_OIL_WELLS                                              :{BLACK}Ölquellen
 STR_024B_BANK                                                   :{BLACK}Bank
 STR_024C_PAPER_MILL                                             :{BLACK}Papiermühle
@@ -672,7 +671,7 @@
 STR_0253_WATER_SUPPLY                                           :{BLACK}Wasserquelle
 STR_0254_WATER_TOWER                                            :{BLACK}Wasserturm
 STR_0255_DIAMOND_MINE                                           :{BLACK}Diamantenmine
-STR_0256_COPPER_ORE_MINE                                        :{BLACK}Kupfermine
+STR_0256_COPPER_ORE_MINE                                        :{BLACK}Kupfererzbergwerk
 STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Zuckerwattewald
 STR_0258_CANDY_FACTORY                                          :{BLACK}Bonbonfabrik
 STR_0259_BATTERY_FARM                                           :{BLACK}Batterieplantage
@@ -689,23 +688,23 @@
 STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Sägewerk errichten
 STR_0265_PLANT_FOREST                                           :{BLACK}Wald aufforsten
 STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Ölraffinerie errichten
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Ölbohrinsel errichten (Kann nur am Kartenrand erfolgen)
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Ölbohrinsel errichten (nur am Spielfeldrand möglich)
 STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Fabrik errichten
-STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Stahlwerk errichten
+STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Stahlwalzwerk errichten
 STR_026A_CONSTRUCT_FARM                                         :{BLACK}Bauernhof errichten
-STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Eisenerzmine errichten
+STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Eisenerzbergwerk errichten
 STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Ölquellen errichten
 STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Bank errichten (Nur in Städten mit mehr als 1200 Einwohnern möglich)
 STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Papiermühle errichten
 STR_026F_CONSTRUCT_FOOD_PROCESSING                              :{BLACK}Nahrungsmittelfabrik errichten
 STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Druckerei errichten
 STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Goldmine errichten
-STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Bank errichten (Kann nur in Städten errichtet werden)
+STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Bank errichten (nur in Städten möglich)
 STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Holzmühle errichten (Zur Säuberung des Regenwaldes und zur Holzproduktion)
 STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Fruchtplantage aufforsten
 STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Kautschukplantage aufforsten
 STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Wasserquelle errichten
-STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Wasserturm errichten (Kann nur in Städten errichtet werden)
+STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Wasserturm errichten (nur in Städten möglich)
 STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Diamantenmine errichten
 STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Kupfermine errichten
 STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Zuckerwattewald aufforsten
@@ -719,7 +718,7 @@
 STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}Luftblasengenerator errichten
 STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Karamellgrube errichten
 STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Zuckerbergwerk errichten
-STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}Kann {STRING} hier nicht bauen...
+STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}{STRING} kann hier nicht gebaut werden...
 STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...erst muss eine Stadt errichtet werden
 STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...pro Stadt nur einmal erlaubt
 STR_0288_PLANT_TREES                                            :{BLACK}Bäume pflanzen
@@ -745,7 +744,7 @@
 STR_029A_PLAY_SCENARIO                                          :{BLACK}Szenario spielen
 STR_PLAY_HEIGHTMAP                                              :{BLACK}Reliefkarte spielen
 STR_PLAY_HEIGHTMAP_HINT                                         :{BLACK}Ein neues Spiel mit Reliefkarte als Landschaft starten
-STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Bist du dir sicher, dass du das Szenario verlassen willst?
+STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Sind Sie sicher, dass Sie das Szenario verlassen wollen?
 STR_029C_QUIT_EDITOR                                            :{WHITE}Bearbeitung beenden
 STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...kann nur in Städten mit mehr als 1200 Einwohnern gebaut werden
 STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Startdatum auf 1 Jahr früher setzen
@@ -867,8 +866,8 @@
 STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT                            :{WHITE}...kann nur im Wüstengebiet errichtet werden
 STR_0319_PAUSED                                                 :{YELLOW}* *  ANGEHALTEN  *  *
 
-STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Screenshot ist gespeichert als '{STRING}'
-STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Screenshot misslungen!
+STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Screenshot gespeichert als '{STRING}'
+STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Screenshot fehlgeschlagen
 
 STR_0329_PURCHASE_LAND_FOR_FUTURE                               :{BLACK}Land für künftige Nutzung kaufen
 STR_032F_AUTOSAVE                                               :{RED}Autosicherung
@@ -946,7 +945,7 @@
 
 STR_OPTIONS_SCREENSHOT_FORMAT                                   :{BLACK}Screenshotformat
 STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Wähle das zu benutzende Screenshotformat aus
+STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Format auswählen, in dem Screenshots abgespeichert werden sollen
 
 STR_AUTOSAVE_1_MONTH                                            :Jeden Monat
 STR_AUTOSAVE_FAILED                                             :{WHITE}Autosicherung fehlgeschlagen
@@ -964,8 +963,8 @@
 STR_MONTH_NOV                                                   :November
 STR_MONTH_DEC                                                   :Dezember
 
-STR_HEADING_FOR_STATION                                         :{LTBLUE}Unterwegs zu {STATION}
-STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Unterwegs zu {STATION}, {VELOCITY}
+STR_HEADING_FOR_STATION                                         :{LTBLUE}Unterwegs nach {STATION}
+STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Unterwegs nach {STATION}, {VELOCITY}
 STR_NO_ORDERS                                                   :{LTBLUE}Keine Aufträge
 STR_NO_ORDERS_VEL                                               :{LTBLUE}Keine Aufträge, {VELOCITY}
 
@@ -980,39 +979,39 @@
 
 STR_SMALL_RIGHT_ARROW                                           :{TINYFONT}{RIGHTARROW}
 
-STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}Der Fahrplan kann nicht gemeinsam benutzt werden...
-STR_CANT_COPY_ORDER_LIST                                        :{WHITE}Kann Fahrplan nicht kopieren...
-STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Ende des gemeinsamen Fahrplans - -
+STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}Fehler beim Erstellen eines gemeinsam genutzten Fahrplans...
+STR_CANT_COPY_ORDER_LIST                                        :{WHITE}Fahrplan kann nicht kopiert werden...
+STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Ende des gemeinsam genutzten Fahrplans - -
 
-STR_TRAIN_IS_LOST                                               :{WHITE}Zug {COMMA} findet den Weg nicht.
+STR_TRAIN_IS_LOST                                               :{WHITE}Zug {COMMA} hat sich verirrt.
 STR_TRAIN_IS_UNPROFITABLE                                       :{WHITE}Einkommen von Zug {COMMA} war letztes Jahr {CURRENCY}
 STR_EURO_INTRODUCE                                              :{BLACK}{BIGFONT}Europäische Währungsunion!{}{}Der Euro wird einzige Währung für alltägliche Zahlungsvorgänge.
 
 # Start of order review system.
 # DON'T ADD OR REMOVE LINES HERE
-STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Zug {COMMA} hat zu wenige Aufträge im Fahrplan
-STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Zug {COMMA} hat einen leeren Auftrag
-STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Zug {COMMA} hat doppelte Aufträge
-STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Zug {COMMA} hat einen ungültigen Stationsnamen im Fahrplan
-STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Fahrzeug {COMMA} hat zu wenige Aufträge im Fahrplan
-STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Fahrzeug {COMMA} hat einen leeren Auftrag
-STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Fahrzeug {COMMA} hat doppelte Aufträge
-STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Fahrzeug {COMMA} hat einen ungültigen Stationsnamen im Fahrplan
-STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Schiff {COMMA} hat zu wenige Aufträge im Fahrplan
-STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Schiff {COMMA} hat einen leeren Auftrag
-STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Schiff {COMMA} hat doppelte Aufträge
-STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Schiff {COMMA} hat einen ungültigen Stationsnamen im Fahrplan
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Flugzeug {COMMA} hat zu wenige Aufträge im Flugplan
-STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Flugzeug {COMMA} hat einen leeren Auftrag
-STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Flugzeug {COMMA} hat doppelte Aufträge
-STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Flugzeug {COMMA} hat einen ungültigen Stationsnamen im Fahrplan
+STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Zug {COMMA} hat nicht genug Aufträge im Fahrplan
+STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Zug {COMMA} hat keine Aufträge
+STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Zug {COMMA} hat einen Auftrag mehrfach
+STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Zug {COMMA} hat einen ungültigen Bahnhof im Fahrplan
+STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Fahrzeug {COMMA} hat nicht genug Aufträge im Fahrplan
+STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Fahrzeug {COMMA} hat keine Aufträge
+STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Fahrzeug {COMMA} hat einen Auftrag mehrfach
+STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Fahrzeug {COMMA} hat eine ungültige Haltestelle im Fahrplan
+STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Schiff {COMMA} hat nicht genug Aufträge im Fahrplan
+STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Schiff {COMMA} hat keine Aufträge
+STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Schiff {COMMA} hat einen Auftrag mehrfach
+STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Schiff {COMMA} hat einen ungültigen Hafen im Fahrplan
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Flugzeug {COMMA} hat nicht genug Aufträge im Fahrplan
+STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Flugzeug {COMMA} hat keine Aufträge
+STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Flugzeug {COMMA} hat einen Auftrag mehrfach
+STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Flugzeug {COMMA} hat einen ungültigen Flughafen im Fahrplan
 # end of order system
 
 STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Zug {COMMA} kann nicht erneuert werden (Geld fehlt)
 STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Fahrzeug {COMMA} kann nicht erneuert werden (Geld fehlt)
 STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Schiff {COMMA} kann nicht erneuert werden (Geld fehlt)
 STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Flugzeug {COMMA} kann nicht erneuert werden (Geld fehlt)
-STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}Zug {COMMA} nach Ersetzung zu lang
+STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}Zug {COMMA} nach Erneuerung zu lang
 
 STR_CONFIG_PATCHES                                              :{BLACK}Einstellungen der Patches
 STR_CONFIG_PATCHES_TIP                                          :{BLACK}Einstellungen der Patches
@@ -1035,10 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Liefere Fracht nur, wenn die Station diese annimmt: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Erlaube das Bauen von sehr langen Brücken: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Erlaube "Gehe zum Depot"-Aufträge im Fahrplan: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Finanziere Bau von Primärindustrie: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Methode zum manuellen Bau von Primärindustrien: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :keine
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :wie andere Industrie
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :erkundend
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :wie andere Industrien
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :mit Prospektion
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Erlaube mehrere gleichartige Industrien pro Stadt: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Gleiche Industrien können nahe beieinander gebaut werden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Lange Datumsanzeige in der Statusleiste (links unten): {ORANGE}{STRING}
@@ -1046,13 +1045,13 @@
 STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Zeige Firmenfinanzen am Ende des Jahres: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}TTDPatch kompatibles "Nonstop"-Verhalten: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Fahrzeugwarteschlange (mit Überlagerung): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Karte scrollen, wenn die Maus am Bildrand anstößt: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Spielfeld scrollen, wenn die Maus am Bildrand anstößt: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Bestechen der Stadtverwaltung erlauben: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Ungleichmäßige Bahnhöfe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Neue globale Wegfindung für alle Fahrzeuge: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Frachtgewicht erhöhen um schwere Züge zu simulieren: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Erlaube Bushaltestellen an städtischen Straßen: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Erlaube das Bauen aneinanderliegender Stationen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Bushaltestellen an städtischen Straßen erlauben: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Bau angrenzender Stationen erlauben: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Kleine Flughäfen immer erlauben: {ORANGE}{STRING}
 
@@ -1073,53 +1072,53 @@
 STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Land Generator: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Original
 STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :TerraGenesis
-STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Maximaler Abstand der Ölraffinerien vom Kartenrand{ORANGE}{STRING}
+STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Maximaler Abstand der Ölraffinerien vom Spielfeldrand: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SNOWLINE_HEIGHT                              :{LTBLUE}Schneegrenze auf: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Rauhheit (nur TerraGenesis) : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Rauheit (nur TerraGenesis): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH             :Sehr sanft
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Sanft
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Rauh
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Sehr rauh
-STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Baumplazierungsalgorithmus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Baumplatzierungsalgorithmus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Keiner
 STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Original
 STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Verbessert
 STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION                           :{LTBLUE}Drehung der Reliefkarte: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :links
 STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :rechts
-STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Höhenstufe der Karte eines flachen Szenarios: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Höhenstufe des Spielfeldes in einem flachen Szenario: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Maximale Stationsgröße: {ORANGE}{STRING} {RED}Achtung: Große Werte verlangsamen das Spiel
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Hubschrauber auf Helipads automatisch warten: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Landschaftsbau-Toolbar an Eisenbahn/Straßen/Hafen/Flughafen-Toolbar binden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Beim Verschieben mit der Maus die Ansicht in die Gegenrichtung verschieben: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Weiches Scrollen in den Ansichten: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Optimierten Bildlauf in den Ansichten verwenden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Zeige Tooltip mit Abmessungen bei verschiedenen Bauwerkzeugen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Anzeigen der Firmenlackierungen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Keine
 STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Eigene Firma
 STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Alle Firmen
 STR_CONFIG_PATCHES_PREFER_TEAMCHAT                              :{LTBLUE}Bevorzuge Teamchat mit <ENTER>: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING                        :{LTBLUE}Funktion des Scrollrads: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Karte vergrößern
-STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Kartenansicht verschieben
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING                        :{LTBLUE}Funktion des Mausrads: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Spielfeld vergrößern
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Hauptansicht verschieben
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Aus
-STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Scrollradgeschwindigkeit auf der Karte: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Mausradgeschwindigkeit auf dem Spielfeld: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automatische Pause bei Spielstart: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Erweiterte Fahrzeugliste benutzen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Ladestandanzeiger verwenden: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Aktiviere Fahrpläne für Fahrzeuge: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Zeige Zeitpläne in Ticks anstatt in Tagen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Fahrpläne für Fahrzeuge aktivieren: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Zeitpläne in Ticks anstatt in Tagen anzeigen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Standard-Gleistyp (bei Spielbeginn/geladenem Spiel): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :normales Gleis
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :elektrifiziertes Gleis
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Einschienenbahn
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Magnetschwebebahn
-STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :zuerst verfügbarer
-STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Neuste
-STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Meistbenutze
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :erster verfügbarer
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :letzter verfügbarer
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :meistbenutzer
 
-STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Zeige Bauwerkzeuge auch wenn keine passenden Fahrzeuge verfügbar sind: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Bauwerkzeuge auch anzeigen, wenn keine passenden Fahrzeuge verfügbar sind: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maximale Anzahl der Züge pro Spieler: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximale Anzahl der Straßenfahrzeuge pro Spieler: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Maximale Anzahl der Flugzeuge pro Spieler: {ORANGE}{STRING}
@@ -1153,13 +1152,13 @@
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Errichte Signale alle {ORANGE}{STRING} Felder beim Ziehen mit der Maus
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automatischer Bau von Formsignalen bis: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Der Stadtaufbau "keine weiteren Straßen" ist im Szenarioeditor nicht möglich
-STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Wähle den Stadtstraßenaufbau: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Der Stadtaufbau "keine weiteren Straßen" ist im Szenarieneditor nicht möglich
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Stadtstraßenaufbau auswählen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :keine weiteren Straßen
 STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :Vorgabe
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :bessere Straßen
-STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 Gitter
-STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 Gitter
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2×2-Gitter
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3×3-Gitter
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Position der Werkzeugleiste: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Links
@@ -1167,14 +1166,14 @@
 STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Rechts
 STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Fenster schnappen aneinander, wenn näher als: {ORANGE}{STRING} px
 STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Fenster schnappen aneinander, wenn näher als: {ORANGE}ausgeschaltet
-STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Stadtwachstumgeschwindigkeit: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :Keins
-STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Langsam
-STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Normal
-STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Schnell
-STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Sehr schnell
-STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Anteil der Städte die doppelt so schnell wachsen: {ORANGE}1 in {STRING}
-STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Anteil der Städte die doppelt so schnell wachsen: {ORANGE}Keine
+STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Wachstumsgeschwindigkeit von Städten: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :keine
+STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :langsam
+STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :mittel
+STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :schnell
+STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :sehr schnell
+STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Anteil der Städte die doppelt so schnell wachsen: {ORANGE}jede {STRING}.
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Anteil der Städte die doppelt so schnell wachsen: {ORANGE}keine
 STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Startmultiplikator der Stadtgröße: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Oberfläche
@@ -1200,8 +1199,8 @@
 STR_TOYLAND_LANDSCAPE                                           :Fantastisch
 
 STR_CHEATS                                                      :{WHITE}Cheats
-STR_CHEATS_TIP                                                  :{BLACK}Kontrollfelder zeigen, ob du diesen Cheat schonmal benutzt hast.
-STR_CHEATS_WARNING                                              :{BLACK}Achtung! Du bist im Begriff, deine Mitspieler zu betrügen. Denke daran, dass dies niemals vergessen werden wird.
+STR_CHEATS_TIP                                                  :{BLACK}Die Kontrollkästchen zeigen an, ob dieser Cheat schonmal verwendet worden ist.
+STR_CHEATS_WARNING                                              :{BLACK}Achtung! Sie sind im Begriff, Ihre Mitspieler zu betrügen. Bedenken Sie, dass sie Ihnen das niemals verzeihen werden.
 STR_CHEAT_MONEY                                                 :{LTBLUE}Kontostand um {CURRENCY} erhöhen
 STR_CHEAT_CHANGE_PLAYER                                         :{LTBLUE}Folgenden Spieler steuern: {ORANGE}{COMMA}
 STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Mächtigeres Abrisswerkzeug: {ORANGE}{STRING}
@@ -1228,25 +1227,25 @@
 STR_WAYPOINT_VIEWPORT                                           :{WHITE}{WAYPOINT}
 STR_WAYPOINT_VIEWPORT_TINY                                      :{TINYFONT}{WHITE}{WAYPOINT}
 STR_WAYPOINT_RAW                                                :{WAYPOINT}
-STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Wegpunktename ändern
+STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Wegpunktname ändern
 
-STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}Kann Wegpunktname nicht ändern...
-STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Ändere Gleis in einen Wegpunkt
-STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}Kann Wegpunkt hier nicht bauen...
-STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}Kann Wegpunkt hier nicht entfernen...
+STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}Wegpunktname kann nicht geändert werden...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Schiene in einen Wegpunkt umwandeln
+STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}Wegpunkt kann hier nicht gebaut werden...
+STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}Wegpunkt kann hier nicht entfernt werden...
 
-STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Bauen von Gleisen unter Verwendung des Automatikmodus
+STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Bauen von Schienen unter Verwendung des Autoschienenmodus
 
 STR_NO_TOWN_IN_SCENARIO                                         :{WHITE}...in diesem Szenario gibt es keine Stadt
 
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Soll wirklich eine zufällige Landschaft erzeugt werden?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Viele zufällige Städte
-STR_RANDOM_TOWNS_TIP                                            :{BLACK}Bedecke die Karte mit zufällig platzierten Städten
+STR_RANDOM_TOWNS_TIP                                            :{BLACK}Das Spielfeld mit zufällig platzierten Städten füllen
 STR_MANY_RANDOM_INDUSTRIES                                      :Viele zufällige Industrien
-STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Bedecke die Karte mit zufällig platzierten Industrien
-STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kann keine Industrie erzeugen...
+STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Das Spielfeld mit zufällig platzierten Industrien füllen
+STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Industrie kann nicht erzeugt werden...
 
-STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Öffne die Landschaftsbau-Toolbar, um Land zu senken/heben, Bäume zu pflanzen, etc.
+STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Die Landschaftsbau-Toolbar ermöglicht es, Land zu senken/heben, Bäume zu pflanzen, etc.
 STR_LANDSCAPING_TOOLBAR                                         :{WHITE}Landschaftsbau
 STR_LEVEL_LAND_TOOLTIP                                          :{BLACK}Land ausgleichen
 
@@ -1254,21 +1253,21 @@
 STR_TREES_RANDOM_TYPE                                           :{BLACK}Zufällige Baumart
 STR_TREES_RANDOM_TYPE_TIP                                       :{BLACK}Zufällige Baumart pflanzen
 
-STR_CANT_BUILD_CANALS                                           :{WHITE}Kann hier keinen Kanal bauen...
+STR_CANT_BUILD_CANALS                                           :{WHITE}Kanal kann hier nicht gebaut werden...
 STR_BUILD_CANALS_TIP                                            :{BLACK}Kanalbau.
 STR_LANDINFO_CANAL                                              :Kanal
 
-STR_CANT_BUILD_LOCKS                                            :{WHITE}Kann hier keine Schleuse bauen...
+STR_CANT_BUILD_LOCKS                                            :{WHITE}Schleuse kann hier nicht gebaut werden...
 STR_BUILD_LOCKS_TIP                                             :{BLACK}Schleusen bauen
 STR_LANDINFO_LOCK                                               :Schleuse
 
-STR_BUOY_IS_IN_USE                                              :{WHITE}... Boje wird genutzt!
+STR_BUOY_IS_IN_USE                                              :{WHITE}... Boje ist in Benutzung
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinaten: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinaten: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
-STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kann den Teil des Bahnhofs nicht entfernen...
-STR_CANT_CONVERT_RAIL                                           :{WHITE}Kann Gleistyp hier nicht verändern...
-STR_CONVERT_RAIL_TIP                                            :{BLACK}Konvertiere / Erweitere den Typ des Gleises
+STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Dieser Teil des Bahnhofs kann nicht entfernt werden...
+STR_CANT_CONVERT_RAIL                                           :{WHITE}Gleistyp kann hier nicht verändert werden...
+STR_CONVERT_RAIL_TIP                                            :{BLACK}Gleis umwandeln / erweitern
 
 STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP                                :{BLACK}Lok hierher ziehen, um den ganzen Zug zu verkaufen
 
@@ -1278,7 +1277,7 @@
 STR_SELECT_STATION_TYPE_TIP                                     :{BLACK}Wähle die Stationsart aus, die gebaut werden soll
 
 STR_FAST_FORWARD                                                :{BLACK}Spiel vorspulen
-STR_MESSAGE_HISTORY                                             :{WHITE}Vorhergehende Nachrichten
+STR_MESSAGE_HISTORY                                             :{WHITE}Vergangene Nachrichten
 STR_MESSAGE_HISTORY_TIP                                         :{BLACK}Eine Liste der aktuellen Nachrichten
 STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Alles deaktivieren
 STR_MESSAGES_ENABLE_ALL                                         :{BLACK}Alles aktivieren
@@ -1287,11 +1286,11 @@
 STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Wald aufforsten
 STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Ölbohrinsel errichten
 STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Bauernhof errichten
-STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Kupfermine errichten
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Kupfererzmine errichten
 STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Nach Öl bohren
 STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Goldmine errichten
 STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Diamantenmine errichten
-STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Eisenerzmine errichten
+STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Eisenerzbergwerk errichten
 STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Fruchtplantage aufforsten
 STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Kautschukplantage aufforsten
 STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Wasserquelle errichten
@@ -1314,20 +1313,20 @@
 STR_RAIL_REFIT_VEHICLE                                          :{BLACK}Zug umrüsten
 STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wähle die Frachten aus, die der Zug befördern soll
 STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Umrüstung des Zuges auf die ausgewählte Frachtart
-STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}Kann den Zug nicht umrüsten...
+STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}Zug kann nicht umgerüstet werden...
 STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Wartungsintervalle in Prozent: {ORANGE}{STRING}
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Produktion ändern
 
-TEMP_AI_IN_PROGRESS                                             :{WHITE}Willkommen bei der neuen KI. Erwarte Fehler. Falls du einen findest, mache einen Screenshot und berichte im Forum. Viel Spaß!
+TEMP_AI_IN_PROGRESS                                             :{WHITE}Willkommen bei der neuen KI. Fehlfunktionen können vorkommen. In diesem Falle bitten wir um einen Screenshot und einen Fehlerbericht im Forum. Viel Spaß!
 TEMP_AI_ACTIVATED                                               :{WHITE}Achtung: Die neue KI ist noch im Alpha-Stadium. Derzeit funktionieren nur Straßenfahrzeuge.
-TEMP_AI_MULTIPLAYER                                             :{WHITE}Warnung: Diese Funktion ist noch experimentell. Bitte melde jedwede Probleme damit an truelight@openttd.org.
+TEMP_AI_MULTIPLAYER                                             :{WHITE}Warnung: Diese Funktion ist noch im experimentellen Stadium. Probleme bitte an truelight@openttd.org melden.
 
 ############ network gui strings
 
 STR_NETWORK_MULTIPLAYER                                         :{WHITE}Mehrspieler
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Spielername:
-STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Mit diesem Namen identifizieren dich andere Spieler
+STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Dieser Name wird Sie anderen Spielern gegenüber identifizieren
 STR_NETWORK_CONNECTION                                          :{BLACK}Verbindung:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Wähle zwischen Internet oder LAN-Verbindung aus
 
@@ -1353,7 +1352,7 @@
 STR_NETWORK_CLIENTS                                             :{SILVER}Teilnehmer:  {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
 STR_NETWORK_LANGUAGE                                            :{SILVER}Sprache:  {WHITE}{STRING}
 STR_NETWORK_TILESET                                             :{SILVER}Landschaft:  {WHITE}{STRING}
-STR_NETWORK_MAP_SIZE                                            :{SILVER}Kartengröße:  {WHITE}{COMMA}x{COMMA}
+STR_NETWORK_MAP_SIZE                                            :{SILVER}Spielfeldgröße:  {WHITE}{COMMA}x{COMMA}
 STR_NETWORK_SERVER_VERSION                                      :{SILVER}Serverversion:  {WHITE}{STRING}
 STR_NETWORK_SERVER_ADDRESS                                      :{SILVER}Serveradresse:  {WHITE}{STRING} : {NUM}
 STR_NETWORK_START_DATE                                          :{SILVER}Startdatum:  {WHITE}{DATE_SHORT}
@@ -1373,38 +1372,27 @@
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Der Name des Spieles wird anderen Spielern im Mehrspielerdialog angezeigt
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}Passwort setzen
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Vergebe ein Passwort, um zu verhindern, dass unbefugte Leute beitreten können
-STR_NETWORK_SELECT_MAP                                          :{BLACK}Karte auswählen:
-STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Welche Karte möchtest du spielen?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max. Teilnehmeranzahl:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Wählt die max. Anzahl an Teilnehmern aus. Nicht alle Slots müssen belegt werden.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SELECT_MAP                                          :{BLACK}Spielfeld auswählen:
+STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Welches Spielfeld soll verwendet werden?
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (ankündigen)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 Spieler
-STR_NETWORK_1_PLAYERS                                           :1 Spieler
-STR_NETWORK_2_PLAYERS                                           :2 Spieler
-STR_NETWORK_3_PLAYERS                                           :3 Spieler
-STR_NETWORK_4_PLAYERS                                           :4 Spieler
-STR_NETWORK_5_PLAYERS                                           :5 Spieler
-STR_NETWORK_6_PLAYERS                                           :6 Spieler
-STR_NETWORK_7_PLAYERS                                           :7 Spieler
-STR_NETWORK_8_PLAYERS                                           :8 Spieler
-STR_NETWORK_9_PLAYERS                                           :9 Spieler
-STR_NETWORK_10_PLAYERS                                          :10 Spieler
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} Client{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max. Teilnehmeranzahl:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Auswahl der maximal erlaubten Anzahl von Teilnehmern. Nicht alle Slots müssen belegt werden.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} Firm{P a en}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max. Firmenanzahl:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Begrenzt den Server auf eine gewisse Anzahl an Firmen
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} Beobachter
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max. Beobachteranzahl:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Begrenzt den Server auf eine gewisse Anzahl an Beobachter
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Gesprochene Sprachen:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Damit andere Spieler wissen, welche Sprache auf diesem Server gesprochen wird.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Spiel beginnen
-STR_NETWORK_START_GAME_TIP                                      :{BLACK}Startet ein neues Mehrspielerspiel auf einer Zufallskarte oder einem Szenario
+STR_NETWORK_START_GAME_TIP                                      :{BLACK}Startet ein neues Mehrspielerspiel auf einem zufällig generierten Spielfeld oder einem Szenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Spiel Laden
 STR_NETWORK_LOAD_GAME_TIP                                       :{BLACK}Lädt ein gespeichertes Spiel
 
@@ -1418,7 +1406,7 @@
 STR_NETWORK_LANG_CHINESE                                        :Chinesisch
 STR_NETWORK_LANG_CZECH                                          :Tschechisch
 STR_NETWORK_LANG_DANISH                                         :Dänisch
-STR_NETWORK_LANG_DUTCH                                          :Holländisch
+STR_NETWORK_LANG_DUTCH                                          :Niederländisch
 STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
 STR_NETWORK_LANG_FINNISH                                        :Finnisch
 STR_NETWORK_LANG_HUNGARIAN                                      :Ungarisch
@@ -1443,7 +1431,7 @@
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Mehrspielerlobby
 
 STR_NETWORK_PREPARE_TO_JOIN                                     :{BLACK}Spieleintritt vorbereiten:   {ORANGE}{STRING}
-STR_NETWORK_COMPANY_LIST_TIP                                    :{BLACK}Eine Liste aller Firmen, die sich im Spiel befinden. Du kannst einer Firma beitreten oder eine eigene Firma gründen, sofern ein Platz frei ist.
+STR_NETWORK_COMPANY_LIST_TIP                                    :{BLACK}Eine Liste aller Firmen, die sich im Spiel befinden. Sie können einer Firma beitreten oder eine eigene Firma gründen, sofern ein Platz frei ist.
 STR_NETWORK_NEW_COMPANY                                         :{BLACK}Neues Unternehmen
 STR_NETWORK_NEW_COMPANY_TIP                                     :{BLACK}Ein neues Unternehmen gründen
 STR_NETWORK_SPECTATE_GAME                                       :{BLACK}Beim Spiel zusehen
@@ -1472,71 +1460,71 @@
 STR_NETWORK_CONNECTING_1                                        :{BLACK}(1/6) Verbinden...
 STR_NETWORK_CONNECTING_2                                        :{BLACK}(2/6) Autorisieren...
 STR_NETWORK_CONNECTING_3                                        :{BLACK}(3/6) Warten...
-STR_NETWORK_CONNECTING_4                                        :{BLACK}(4/6) Herunterladen der Karte..
+STR_NETWORK_CONNECTING_4                                        :{BLACK}(4/6) Herunterladen des Spielfeldes...
 STR_NETWORK_CONNECTING_5                                        :{BLACK}(5/6) Spieldaten verarbeiten...
 STR_NETWORK_CONNECTING_6                                        :{BLACK}(6/6) Registrieren...
 
 STR_NETWORK_CONNECTING_SPECIAL_1                                :{BLACK}Spielinformationen holen...
 STR_NETWORK_CONNECTING_SPECIAL_2                                :{BLACK}Firmeninformationen holen...
 ############ End of leave-in-this-order
-STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} Teilnehmer vor dir
+STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} Teilnehmer vor Ihnen
 STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} KB bisher heruntergeladen
 
 STR_NETWORK_DISCONNECT                                          :{BLACK}Trennen
 
-STR_NETWORK_GIVE_MONEY_CAPTION                                  :{WHITE}Gib an, wieviel Geld du geben möchtest
-STR_NETWORK_NEED_GAME_PASSWORD_CAPTION                          :{WHITE}Server ist geschützt. Gib das Passwort ein
-STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION                       :{WHITE}Firma ist geschützt! Passwort eingeben
+STR_NETWORK_GIVE_MONEY_CAPTION                                  :{WHITE}Wieviel Geld soll vergeben werden?
+STR_NETWORK_NEED_GAME_PASSWORD_CAPTION                          :{WHITE}Server ist geschützt. Passwort eingeben:
+STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION                       :{WHITE}Firma ist geschützt. Passwort eingeben:
 STR_NETWORK_CLIENT_LIST                                         :{WHITE}Teilnehmerliste
 
 STR_NETWORK_ERR_NOTAVAILABLE                                    :{WHITE}Keine Netzwerkschnittstellen gefunden oder ohne ENABLE_NETWORK kompiliert
 STR_NETWORK_ERR_NOSERVER                                        :{WHITE}Keine Netzwerkspiele gefunden
-STR_NETWORK_ERR_NOCONNECTION                                    :{WHITE}Der Server antwortete nicht auf die Anfrage
-STR_NETWORK_ERR_NEWGRF_MISMATCH                                 :{WHITE} Konnte Verbindung nicht herstellen, da die NewGRF Versionen nicht übereinstimmen.
+STR_NETWORK_ERR_NOCONNECTION                                    :{WHITE} Der Server antwortet nicht
+STR_NETWORK_ERR_NEWGRF_MISMATCH                                 :{WHITE} Konnte Verbindung nicht herstellen, da die NewGRF-Versionen nicht übereinstimmen.
 STR_NETWORK_ERR_DESYNC                                          :{WHITE}Synchronisation des Netzwerkspiels fehlgeschlagen
 STR_NETWORK_ERR_LOSTCONNECTION                                  :{WHITE}Verbindung zum Netzwerkspiel verloren
 STR_NETWORK_ERR_SAVEGAMEERROR                                   :{WHITE}Spielstand konnte nicht vom Server geladen werden
 STR_NETWORK_ERR_SERVER_START                                    :{WHITE}Server konnte nicht gestartet werden
 STR_NETWORK_ERR_CLIENT_START                                    :{WHITE}Verbindung konnte nicht hergestellt werden
-STR_NETWORK_ERR_TIMEOUT                                         :{WHITE}Verbindung #{NUM} abgelaufen
+STR_NETWORK_ERR_TIMEOUT                                         :{WHITE} Verbindung #{NUM} hat das Zeitlimit überschritten
 STR_NETWORK_ERR_SERVER_ERROR                                    :{WHITE}Protokollfehler: Die Verbindung musste getrennt werden
 STR_NETWORK_ERR_WRONG_REVISION                                  :{WHITE}Ihre Version entspricht nicht der Serverversion
 STR_NETWORK_ERR_WRONG_PASSWORD                                  :{WHITE}Falsches Passwort
 STR_NETWORK_ERR_SERVER_FULL                                     :{WHITE}Der Server ist voll
-STR_NETWORK_ERR_SERVER_BANNED                                   :{WHITE}Du bist von diesem Server verbannt
-STR_NETWORK_ERR_KICKED                                          :{WHITE}Du wurdest vom Server gekickt
+STR_NETWORK_ERR_SERVER_BANNED                                   :{WHITE} Sie sind auf diesem Server gesperrt
+STR_NETWORK_ERR_KICKED                                          :{WHITE} Sie wurden vom Server ausgeschlossen
 STR_NETWORK_ERR_CHEATER                                         :{WHITE}Mogeln ist auf diesem Server nicht erlaubt
 
 STR_NETWORK_ERR_LEFT                                            :hat das Spiel verlassen
 ############ Leave those lines in this order!!
 STR_NETWORK_ERR_CLIENT_GENERAL                                  :Allgemeiner Fehler
 STR_NETWORK_ERR_CLIENT_DESYNC                                   :Synchronisationsfehler
-STR_NETWORK_ERR_CLIENT_SAVEGAME                                 :Karte konnte nicht geladen werden.
+STR_NETWORK_ERR_CLIENT_SAVEGAME                                 :Spielfeld konnte nicht geladen werden.
 STR_NETWORK_ERR_CLIENT_CONNECTION_LOST                          :Verbindung verloren
 STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR                           :Protokollfehler
-STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH                          :NewGRF Versionen stimmen nicht überein
-STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED                           :nicht authorisiert
-STR_NETWORK_ERR_CLIENT_NOT_EXPECTED                             :Unerwartetes Paket empfangen
+STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH                          :NewGRF-Versionen stimmen nicht überein
+STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED                           :nicht autorisiert
+STR_NETWORK_ERR_CLIENT_NOT_EXPECTED                             :Unerwartetes Datenpaket empfangen
 STR_NETWORK_ERR_CLIENT_WRONG_REVISION                           :Falsche Version
 STR_NETWORK_ERR_CLIENT_NAME_IN_USE                              :Name wird bereits verwendet
 STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD                           :Falsches Spielpasswort
-STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH                          :Falsche-SpielerID in DoCommand (Verarbeitungsfehler)
-STR_NETWORK_ERR_CLIENT_KICKED                                   :gekickt
-STR_NETWORK_ERR_CLIENT_CHEATER                                  :versuchte einen Cheat zu nutzen
+STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH                          :Falsche Spieler-ID in DoCommand (Verarbeitungsfehler)
+STR_NETWORK_ERR_CLIENT_KICKED                                   :ausgeschlossen
+STR_NETWORK_ERR_CLIENT_CHEATER                                  :hat versucht zu mogeln
 STR_NETWORK_ERR_CLIENT_SERVER_FULL                              :Server voll
 ############ End of leave-in-this-order
-STR_NETWORK_CLIENT_JOINED                                       :hat das Spiel betreten
-STR_NETWORK_GIVE_MONEY                                          :gab dir etwas Geld ({CURRENCY})
-STR_NETWORK_GAVE_MONEY_AWAY                                     :Du hast {STRING} etwas Geld gegeben ({CURRENCY})
+STR_NETWORK_CLIENT_JOINED                                       :betritt das Spiel
+STR_NETWORK_GIVE_MONEY                                          :schenkt Ihnen {CURRENCY}
+STR_NETWORK_GAVE_MONEY_AWAY                                     :Sie haben {STRING} {CURRENCY} geschenkt
 STR_NETWORK_CHAT_COMPANY_CAPTION                                :[Team] :
 STR_NETWORK_CHAT_COMPANY                                        :[Team] {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_TO_COMPANY                                     :[Team] An {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_TO_COMPANY                                     :[Team] an {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_CLIENT_CAPTION                                 :[Privat] :
 STR_NETWORK_CHAT_CLIENT                                         :[Privat] {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_TO_CLIENT                                      :[Privat] An {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_TO_CLIENT                                      :[Privat] an {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[Alle] :
 STR_NETWORK_CHAT_ALL                                            :[Alle] {STRING}: {GRAY}{STRING}
-STR_NETWORK_NAME_CHANGE                                         :hat seinen Namen geändert zu
+STR_NETWORK_NAME_CHANGE                                         :ändert seinen Namen in
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE}Der Server hat das Spiel beendet
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE}Der Server startet neu...{}Bitte warten...
 
@@ -1545,31 +1533,31 @@
 STR_NETWORK_SPECTATORS                                          :Zuschauer
 
 STR_NETWORK_CLIENTLIST_NONE                                     :(keiner)
-STR_NETWORK_CLIENTLIST_KICK                                     :Kicken
-STR_NETWORK_CLIENTLIST_GIVE_MONEY                               :Geld geben
+STR_NETWORK_CLIENTLIST_KICK                                     :Ausschließen
+STR_NETWORK_CLIENTLIST_GIVE_MONEY                               :Geld schenken
 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL                             :Mit allen sprechen
 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY                         :Mit eigener Firma sprechen
 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT                          :Private Nachricht
 
 
-STR_NETWORK_SEND                                                :{BLACK}Senden
+STR_NETWORK_SEND                                                :{BLACK}Abschicken
 
 ############ end network gui strings
 
 
-STR_CONFIG_PATCHES_MAP_X                                        :{LTBLUE}X-Abmessung der Karte: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAP_Y                                        :{LTBLUE}Y-Abmessung der Karte: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAP_X                                        :{LTBLUE}X-Abmessung des Spielfeldes: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAP_Y                                        :{LTBLUE}Y-Abmessung des Spielfeldes: {ORANGE}{STRING}
 
 
 ##### PNG-MAP-Loader
 
-STR_PNGMAP_ERROR                                                :{WHITE}Kann Landschaft nicht aus PNG-Datei laden...
+STR_PNGMAP_ERROR                                                :{WHITE}Landschaft kann nicht aus PNG-Datei geladen werden...
 STR_PNGMAP_ERR_FILE_NOT_FOUND                                   :{WHITE}...Datei nicht gefunden.
-STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...kann Grafik-Typ nicht umwandeln. 8- oder 24-bit PNG Datei erforderlich.
-STR_PNGMAP_ERR_MISC                                             :{WHITE}...irgend etwas ging schief. Sorry. (Vielleicht eine kaputte Datei)
+STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...Bildtyp kann nicht umgewandelt werden. 8- oder 24-bit-PNG-Datei erforderlich.
+STR_PNGMAP_ERR_MISC                                             :{WHITE}...irgend etwas ging schief. Sorry. (Vielleicht eine kaputte Datei?)
 
-STR_BMPMAP_ERROR                                                :{WHITE}Kann Landschaft nicht aus BMP-Datei laden...
-STR_BMPMAP_ERR_IMAGE_TYPE                                       :{WHITE}...kann Bildtyp nicht umwandeln.
+STR_BMPMAP_ERROR                                                :{WHITE}Landschaft kann nicht aus BMP-Datei geladen werden...
+STR_BMPMAP_ERR_IMAGE_TYPE                                       :{WHITE}...Bildtyp kann nicht umgewandelt werden.
 
 ##id 0x0800
 STR_0800_COST                                                   :{TINYFONT}{RED}Kosten: {CURRENCY}
@@ -1580,8 +1568,8 @@
 STR_FEEDER                                                      :{YELLOW}Umladen: {CURRENCY}
 STR_0805_ESTIMATED_COST                                         :{WHITE}Geschätzte Kosten: {CURRENCY}
 STR_0807_ESTIMATED_INCOME                                       :{WHITE}Geschätzte Einnahmen: {CURRENCY}
-STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}Kann das Land nicht anheben...
-STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}Kann das Land nicht absenken...
+STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}Land kann nicht angehoben werden...
+STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}Land kann nicht abgesenkt werden...
 STR_080A_ROCKS                                                  :Gebirge
 STR_080B_ROUGH_LAND                                             :Unebenes Land
 STR_080C_BARE_LAND                                              :Kahles Land
@@ -1604,12 +1592,12 @@
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Einschienenbahnbau
 STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Magnetschwebebahnbau
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Eisenbahnbrücke auswählen
-STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Kann hier kein Zugdepot bauen...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Kann hier keinen Bahnhof bauen...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Kann hier kein Signal aufstellen...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Kann hier keine Gleise legen...
+STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Zugdepot kann hier nicht gebaut werden...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Bahnhof kann hier nicht gebaut werden...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Signal kann hier nicht aufgestellt werden...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Gleise können hier nicht verlegt werden...
 STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Gleise können nicht abgerissen werden...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Kann die Signale hier nicht entfernen...
+STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Signale können hier nicht entfernt werden...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Zugdepotausrichtung
 STR_1015_RAILROAD_CONSTRUCTION                                  :Eisenbahnbau
 STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Bau elektrifizierter Strecken
@@ -1630,14 +1618,14 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Gleis mit normalen Signalen
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Gleis mit Vorsignalen
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Gleis mit Ausfahrsignalen
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Gleis mit kombinierten Vor-/Ausfahrsignalen
-STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Eisenbahnschienen mit Vor- und Hauptsignalen
-STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Eisenbahnschienen mit Haupt- und Ausfahrsignalen
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Eisenbahnschienen mit Haupt- und Kombinationssignalen
-STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Eisenbahnschienen mit Vor- und Ausfahrsignalen
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Eisenbahnschienen mit Vor- und Kombinationssignalen
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Eisenbahnschienen mit Ausfahr- und Kombinationssignalen
-STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Bahnhof muss erst entfernt werden
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Gleise mit Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Gleis mit Vor- und Hauptsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Gleis mit Haupt- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Gleise mit normalen und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Gleis mit Vor- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Gleise mit Vor-  und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Gleise mit Ausfahr- und Kombinationssignalen
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Bahnhof muss erst abgerissen werden
 
 
 
@@ -1647,35 +1635,35 @@
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Straßenbau
 STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Straßenbahnbau
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Brücke wählen
-STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... Einbahnstraßen können keinen Abzweig haben
-STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kann hier keine Straße bauen...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kann Straßenbahn hier nicht bauen...
-STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kann diese Straße nicht entfernen...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kann Straßenbahn hier nicht entfernen...
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... Einbahnstraßen können keine Abzweigung haben
+STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Straße kann hier nicht gebaut werden...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Straßenbahn kann hier nicht gebaut werden...
+STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Diese Straße kann nicht entfernt werden...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Straßenbahn kann hier nicht entfernt werden...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Fahrzeugdepot-Ausr.
 STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Ausrichtung des Straßenbahndepots
-STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kann Fahrzeugdepot hier nicht bauen...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kann Straßenbahndepot hier nicht bauen...
-STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kann Busbahnhof nicht bauen...
-STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kann Lkw-Ladeplatz nicht bauen...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kann Haltestelle hier nicht bauen...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kann Güterverladestelle hier nicht bauen...
+STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Fahrzeugdepot kann hier nicht gebaut werden...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Straßenbahndepot kann hier nicht gebaut werden...
+STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Busbahnhof kann nicht gebaut werden...
+STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Lkw-Ladeplatz kann nicht gebaut werden...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Straßenbahnhaltestelle kann hier nicht gebaut werden...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Güterverladestelle kann hier nicht gebaut werden...
 STR_180A_ROAD_CONSTRUCTION                                      :Straßenbau
 STR_180A_TRAMWAY_CONSTRUCTION                                   :Straßenbahnbau
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Straße bauen
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Baue Straßenbahnabschnitt
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Straßenbahnabschnitt bauen
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Fahrzeugdepot bauen (zum Bau und zur Wartung von Fahrzeugen)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Baue Straßenbahndepot (zum Erstellen und Warten von Straßenbahnen)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Straßenbahndepot bauen (zum Erstellen und Warten von Straßenbahnen)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Busbahnhof bauen
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Lkw-Ladeplatz bauen
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Baue Haltestelle
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Baue Güterverladestelle
+STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Straßenbahnhaltestelle bauen
+STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Güterverladestelle bauen
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Straßenbrücke bauen
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Baue Straßenbahnbrücke
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Straßenbahnbrücke bauen
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Straßentunnel bauen
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Baue Straßenbahntunnel
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Straßenbahntunnel bauen
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Zwischen Bau/Abriss der Straße umschalten
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Umschalten zwischen bauen/entfernen für Straßenbahnbau
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Umschalten zwischen Bauen/Entfernen für Straßenbahnbau
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Fahrzeugdepots wählen
 STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Straßenbahndepots wählen
 STR_1814_ROAD                                                   :Straße
@@ -1683,9 +1671,9 @@
 STR_1816_TREE_LINED_ROAD                                        :Straße mit Bäumen
 STR_1817_ROAD_VEHICLE_DEPOT                                     :Fahrzeugdepot
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Bahnübergang
-STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kann Bushaltestelle nicht entfernen...
-STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kann LKW-Ladestelle nicht entfernen...
-STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE} Haltestelle kann nicht entfernt werden...
+STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Bushaltestelle kann nicht entfernt werden...
+STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}LKW-Ladestelle kann nicht entfernt werden...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Straßenbahnhaltestelle kann nicht entfernt werden...
 STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Güterverladestelle kann nicht entfernt werden...
 
 ##id 0x2000
@@ -1701,8 +1689,8 @@
 STR_2007_RENAME_TOWN                                            :Stadt umbenennen
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Die Stadt kann nicht umbenannt werden...
 STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Die Stadtverwaltung von {TOWN} erteilt keine Genehmigung
-STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Städtenamen - klicke auf den Namen, um die Stadt anzuzeigen
-STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Ansicht auf Stadt zentrieren
+STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Städtenamen - Klick auf den Namen scrollt Hauptansicht zur Stadt
+STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Hauptansicht zur Stadt scrollen
 STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Stadt umbenennen
 STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Passagiere letzten Monat: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
 STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Postsäcke letzten Monat: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
@@ -1736,18 +1724,18 @@
 STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Bereits vergebene Subventionen:
 STR_202C_FROM_TO                                                :{ORANGE}{STRING} von {STATION} nach {STATION}{YELLOW} ({COMPANY}
 STR_202D_UNTIL                                                  :{YELLOW}, bis {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Subventionsangebot abgelaufen:{}{}{STRING} von {STRING} nach {STRING} wird nicht mehr subventioniert.
-STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Subventionsende: {}{}{STRING} Dienstleistung von {STATION} nach {STATION} wird nicht mehr subventioniert.
-STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Subventionsangebot {}{}Erster {STRING}transport von {STRING} nach {STRING} wird ein Jahr von der Stadtverwaltung subventioniert!
-STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention wird vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} bringt im nächsten Jahr einen 50% höheren Frachtpreis!
-STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention wird vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} bringt im nächsten Jahr den doppelten Frachtpreis!
-STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention wird vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} bringt im nächsten Jahr den dreifachen Frachtpreis!
-STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention wird vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} bringt im nächsten Jahr den vierfachen Frachtpreis!
-STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Die Stadtverwaltung {TOWN} erlaubt nicht den Bau eines weiteren Flughafens in der Stadt
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Subventionsangebot abgelaufen:{}{}{STRING}transport von {STRING} nach {STRING} wird nicht mehr subventioniert.
+STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Subventionsende:{}{}{STRING}transport von {STATION} nach {STATION} wird nicht mehr subventioniert.
+STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Subventionsangebot:{}{}Erster {STRING}transport von {STRING} nach {STRING} wird ein Jahr von den örtlichen Behörden subventioniert!
+STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} erhält im nächsten Jahr einen 50% höheren Preis!
+STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} erhält im nächsten Jahr den doppelten Preis!
+STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} erhält im nächsten Jahr den dreifachen Preis!
+STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvention vergeben an {COMPANY}!{}{}{STRING}transport von {STATION} nach {STATION} erhält im nächsten Jahr den vierfachen Preis!
+STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Die Stadtverwaltung von {TOWN} verweigert die Genehmigung für den Bau eines weiteren Flughafens in der Stadt
 STR_2036_COTTAGES                                               :Landhaus
 STR_2037_HOUSES                                                 :Haus
 STR_2038_FLATS                                                  :Wohnhaus
-STR_2039_TALL_OFFICE_BLOCK                                      :Hohes Geschäftshaus
+STR_2039_TALL_OFFICE_BLOCK                                      :Geschäftshochhaus
 STR_203A_SHOPS_AND_OFFICES                                      :Läden und Büros
 STR_203B_SHOPS_AND_OFFICES                                      :Läden und Büros
 STR_203C_THEATER                                                :Theater
@@ -1756,10 +1744,10 @@
 STR_203F_HOUSES                                                 :Häuser
 STR_2040_CINEMA                                                 :Kino
 STR_2041_SHOPPING_MALL                                          :Einkaufszentrum
-STR_2042_DO_IT                                                  :{BLACK}Tu es
-STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Liste der verfügbaren Handlungen in dieser Stadt - klicke hier für Einzelheiten
-STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Ausführung der markierten Handlung
-STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Verfügbare Handlungen:
+STR_2042_DO_IT                                                  :{BLACK}Ausführen
+STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Liste der verfügbaren Maßnahmen in dieser Stadt - Klick zeigt Einzelheiten an
+STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Ausgewählte Maßnahme durchführen
+STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Verfügbare Maßnahmen:
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Kleine Werbekampagne
 STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Mittlere Werbekampagne
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Große Werbekampagne
@@ -1803,7 +1791,7 @@
 STR_2809_CAN_T_PLACE_SIGN_HERE                                  :{WHITE}Schild kann hier nicht aufgestellt werden...
 STR_280A_SIGN                                                   :Schild
 STR_280B_EDIT_SIGN_TEXT                                         :{WHITE}Schildtext ändern
-STR_280C_CAN_T_CHANGE_SIGN_NAME                                 :{WHITE}Kann Schildnamen nicht ändern...
+STR_280C_CAN_T_CHANGE_SIGN_NAME                                 :{WHITE}Schildname kann nicht geändert werden...
 STR_280D_SELECT_TREE_TYPE_TO_PLANT                              :{BLACK}Wähle die zu pflanzende Baumart
 STR_280E_TREES                                                  :Bäume
 STR_280F_RAINFOREST                                             :Regenwald
@@ -1828,7 +1816,7 @@
 STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Flughafen muss erst abgerissen werden
 
 STR_3030_RENAME_STATION_LOADING                                 :Station/Ladeplatz umbenennen
-STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Kann die Station nicht umbenennen...
+STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Station kann nicht umbenannt werden...
 STR_3032_RATINGS                                                :{BLACK}Einschätzung
 STR_3033_ACCEPTS                                                :{BLACK}Akzeptiert
 STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Örtliche Bewertung der Transportunternehmen:
@@ -1846,16 +1834,16 @@
 
 STR_303D                                                        :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
 STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} akzeptiert keine {STRING} mehr
-STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} akzeptiert keine {STRING} oder {STRING} mehr
-STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} akzeptiert jetzt {STRING}
-STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} akzeptiert jetzt {STRING} und {STRING}
+STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} akzeptiert keine {STRING} und keine {STRING} mehr
+STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} akzeptiert jetzt auch {STRING}
+STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} akzeptiert jetzt auch {STRING} und {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Busbahnhof-Ausr.
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lkw-Ladeplatz-Ausr.
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Ausrichtung der Haltestelle
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Ausrichtung der Straßenbahnhaltestelle
 STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Ausrichtung der Güterverladestelle
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Der Busbahnhof muss erst abgerissen werden
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Der Lkw-Ladeplatz muss erst abgerissen werden
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Haltestelle muss vorher abgerissen werden
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Straßenbahnhaltestelle muss vorher abgerissen werden
 STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Güterverladestelle muss vorher abgerissen werden
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Haltestelle{P "" n}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
@@ -1868,9 +1856,9 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Bahnsteiglänge wählen
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Busbahnhofsausrichtung wählen
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Ladeplatzausrichtung wählen
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Ausrichtung für die Haltestelle wählen
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Ausrichtung für die Straßenbahnhaltestelle wählen
 STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Ausrichtung für die Güterverladestelle wählen
-STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Ansicht auf die Station zentrieren
+STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Hauptansicht zur Station scrollen
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Stationsbewertung anzeigen
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Name der Station ändern
 STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Zeige Liste der akzeptierten Frachten
@@ -1884,9 +1872,9 @@
 STR_3061_TRUCK_LOADING_AREA                                     :Lkw-Ladeplatz
 STR_3062_BUS_STATION                                            :Busbahnhof
 STR_3063_SHIP_DOCK                                              :Schiffshafen
-STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Einzugsgebiet angezeigen
+STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Einzugsgebiet anzeigen
 STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}Einzugsgebiet nicht angezeigen
-STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Zeige Einzugsgebiet
+STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Einzugsgebiet anzeigen
 STR_3068_DOCK                                                   :{WHITE}Hafen
 STR_3069_BUOY                                                   :Boje
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...Boje ist im Weg
@@ -1901,13 +1889,13 @@
 ##id 0x3800
 STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Werftausrichtung
 STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...muss auf Wasser gebaut werden
-STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Kann hier keine Werft bauen...
+STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Werft kann hier nicht gebaut werden...
 STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Werftausrichtung auswählen
 STR_3804_WATER                                                  :Wasser
 STR_3805_COAST_OR_RIVERBANK                                     :Küste oder Flussufer
 STR_3806_SHIP_DEPOT                                             :Werft
 STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...kann nicht auf Wasser gebaut werden
-STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Kanal muß erst abgerissen werden
+STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Kanal muss erst abgerissen werden
 
 ##id 0x4000
 STR_4000_SAVE_GAME                                              :{WHITE}Spiel speichern
@@ -1916,15 +1904,15 @@
 STR_4003_DELETE                                                 :{BLACK}Löschen
 STR_4004                                                        :{COMPANY}, {DATE_LONG}
 STR_4005_BYTES_FREE                                             :{BLACK}{COMMA} Megabyte{P "" s} frei
-STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Kann vom Laufwerk nicht lesen
+STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Laufwerk nicht betriebsbereit
 STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Spielspeicherung fehlgeschlagen{}{STRING}
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Datei kann nicht gelöscht werden
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING}
 STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :interner Fehler: {STRING}
-STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Defekte Spielstandsdatei - {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Spielstandsdatei defekt - {STRING}
 STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Spielstand wurde mit neuerer Version erstellt
-STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Datei nicht lesbar
-STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Kann Datei nicht schreiben
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Datei kann nicht gelesen werden
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Datei kann nicht geschrieben werden
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Liste der Laufwerke, Verzeichnisse und gespeicherten Spiele
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Ausgewählter Spielname
 STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Lösche gewählten Spielstand
@@ -1945,9 +1933,9 @@
 STR_4807_OIL_RIG                                                :{G=w}Ölbohrinsel
 STR_4808_FACTORY                                                :{G=w}Fabrik
 STR_4809_PRINTING_WORKS                                         :{G=w}Druckerei
-STR_480A_STEEL_MILL                                             :{G=n}Stahlwerk
+STR_480A_STEEL_MILL                                             :{G=n}Stahlwalzwerk
 STR_480B_FARM                                                   :{G=m}Bauernhof
-STR_480C_COPPER_ORE_MINE                                        :{G=w}Kupfermine
+STR_480C_COPPER_ORE_MINE                                        :{G=n}Kupfererzbergwerk
 STR_480D_OIL_WELLS                                              :{G=w}Ölquellen
 STR_480E_BANK                                                   :{G=w}Bank
 STR_480F_FOOD_PROCESSING_PLANT                                  :{G=w}Nahrungsmittelfabrik
@@ -1955,7 +1943,7 @@
 STR_4811_GOLD_MINE                                              :{G=w}Goldmine
 STR_4812_BANK                                                   :{G=w}Bank
 STR_4813_DIAMOND_MINE                                           :{G=w}Diamantenmine
-STR_4814_IRON_ORE_MINE                                          :{G=w}Eisenerzmine
+STR_4814_IRON_ORE_MINE                                          :{G=n}Eisenerzbergwerk
 STR_4815_FRUIT_PLANTATION                                       :{G=w}Fruchtplantage
 STR_4816_RUBBER_PLANTATION                                      :{G=w}Kautschukplantage
 STR_4817_WATER_SUPPLY                                           :{G=w}Wasserquelle
@@ -1982,7 +1970,7 @@
 ############ range for requires ends
 
 ############ range for produces starts
-STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Auf Verarbeitung wartende Fracht:
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Zur Verarbeitung bereitstehende Fracht:
 STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
 STR_4827_PRODUCES                                               :{BLACK}Produziert: {YELLOW}{STRING}
 STR_4828_PRODUCES                                               :{BLACK}Produziert: {YELLOW}{STRING}, {STRING}
@@ -1990,11 +1978,11 @@
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion im letzten Monat:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% befördert)
-STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Zentriere die Ansicht auf das Industriegebiet
+STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Hauptansicht zum Industriegebiet scrollen
 STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Neue{G r "" s} {STRING} wird nahe {TOWN} gebaut!
 STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Neue{G r "" s} {STRING} wird nahe {TOWN} aufgeforstet!
 STR_482F_COST                                                   :{BLACK}Kosten: {YELLOW}{CURRENCY}
-STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Kann diese Industrie hier nicht bauen...
+STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Industrie kann hier nicht gebaut werden...
 STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...Wald kann nur oberhalb der Schneegrenze gepflanzt werden
 STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} gibt bevorstehende Schließung bekannt!
 STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Wegen fehlender Rohstoffe kündigt {INDUSTRY} die drohende Schließung an!
@@ -2003,21 +1991,21 @@
 STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Neue Kohlevorkommen bei {INDUSTRY} gefunden!{}Förderung verdoppelt!
 STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Neue Ölfunde bei {INDUSTRY}!{}Förderung wird vermutlich verdoppelt!
 STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Neue Getreideanbaumethoden bei {INDUSTRY} werden Erträge verdoppeln!
-STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}{INDUSTRY} Produktion sinkt um 50%
+STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}Produktion bei {INDUSTRY} sinkt um 50%
 STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Insektenplage bei {INDUSTRY} verursacht Schaden!{}Produktion sinkt um 50%
-STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...kann nur in der Nähe des Kartenrandes errichtet werden
-STR_INDUSTRY_PROD_GOUP                                          :{BLACK}{BIGFONT}{STRING}produktion bei {INDUSTRY} erhöht sich um {COMMA}%!
-STR_INDUSTRY_PROD_GODOWN                                        :{BLACK}{BIGFONT}{STRING}produktion bei {INDUSTRY} verringert sich um {COMMA}%!
+STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...kann nur in der Nähe des Spielfeldrandes errichtet werden
+STR_INDUSTRY_PROD_GOUP                                          :{BLACK}{BIGFONT}{STRING}produktion von {INDUSTRY} erhöht sich um {COMMA}%!
+STR_INDUSTRY_PROD_GODOWN                                        :{BLACK}{BIGFONT}{STRING}produktion von {INDUSTRY} verringert sich um {COMMA}%!
 
 ##id 0x5000
 STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}Zug im Tunnel
 STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Fahrzeug im Tunnel
 STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Ein anderer Tunnel ist im Weg
-STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Kann das Land am anderen Ende des Tunnels nicht anheben
+STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Land kann am anderen Ende des Tunnels nicht angehoben werden
 STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Der Tunnel muss zuerst abgerissen werden
 STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Die Brücke muss erst abgerissen werden
 STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Anfang und Ende können nicht im selben Feld liegen
-STR_5009_LEVEL_LAND_OR_WATER_REQUIRED                           :{WHITE}Ebenes Land oder Wasser muss unter der Brücke sein
+STR_5009_LEVEL_LAND_OR_WATER_REQUIRED                           :{WHITE}Unter der Brücke ist ebenes Land oder Wasser erforderlich
 STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Anfang und Ende müssen auf einer Ebene liegen
 STR_500B_SITE_UNSUITABLE_FOR_TUNNEL                             :{WHITE}Platz ist nicht für einen Tunnel geeignet
 STR_500D                                                        :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2029,8 +2017,8 @@
 STR_5013_CONCRETE                                               :Betonbrücke
 STR_5014_TUBULAR_STEEL                                          :Rundstahlbrücke
 STR_BRIDGE_TUBULAR_SILICON                                      :Siliziumrundbrücke
-STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}Kann die Brücke hier nicht bauen...
-STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}Kann den Tunnel hier nicht bauen...
+STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}Brücke kann hier nicht gebaut werden...
+STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}Tunnel kann hier nicht gebaut werden...
 STR_5017_RAILROAD_TUNNEL                                        :Eisenbahntunnel
 STR_5018_ROAD_TUNNEL                                            :Straßentunnel
 STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Stahlhängebrücke
@@ -2079,7 +2067,7 @@
 STR_SV_STNAME_HALT                                              :{STRING} Halt
 STR_SV_STNAME_VALLEY                                            :{STRING} Tal
 STR_SV_STNAME_HEIGHTS                                           :{STRING} Höhe
-STR_SV_STNAME_WOODS                                             :{STRING} Wald
+STR_SV_STNAME_WOODS                                             :{STRING} Waldfrieden
 STR_SV_STNAME_LAKESIDE                                          :{STRING} Seeblick
 STR_SV_STNAME_EXCHANGE                                          :{STRING} Zentrum
 STR_SV_STNAME_AIRPORT                                           :{STRING} Flughafen
@@ -2114,7 +2102,7 @@
 STR_6801_EASY                                                   :{BLACK}Leicht
 STR_6802_MEDIUM                                                 :{BLACK}Normal
 STR_6803_HARD                                                   :{BLACK}Schwer
-STR_6804_CUSTOM                                                 :{BLACK}Individuell
+STR_6804_CUSTOM                                                 :{BLACK}Benutzerdefiniert
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
@@ -2222,12 +2210,12 @@
 STR_7027_LOAN                                                   :{WHITE}Kredit
 STR_MAX_LOAN                                                    :{WHITE}Maximaler Kredit:  {BLACK}{CURRENCY}
 STR_7028                                                        :{BLACK}{CURRENCY}
-STR_7029_BORROW                                                 :{BLACK}Leihen {SKIP}{SKIP}{CURRENCY}
-STR_702A_REPAY                                                  :{BLACK}Rückzahlen {SKIP}{SKIP}{CURRENCY}
+STR_7029_BORROW                                                 :{BLACK}{SKIP}{SKIP}{CURRENCY} leihen
+STR_702A_REPAY                                                  :{BLACK}{SKIP}{SKIP}{CURRENCY} zurückzahlen
 STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...Maximaler Kredit ist {CURRENCY}
-STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Kann keinen weiteren Kredit aufnehmen ...
+STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Weitere Kreditaufnahme nicht möglich ...
 STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...Kredit bereits zurückgezahlt
-STR_702E_REQUIRED                                               :{WHITE}...{CURRENCY} benötigt
+STR_702E_REQUIRED                                               :{WHITE}...erfordert {CURRENCY}
 STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Kredit kann nicht getilgt werden...
 STR_INSUFFICIENT_FUNDS                                          :{WHITE}Von der Bank geliehenes Geld kann nicht abgegeben werden...
 STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Neues Profil für Manager aussuchen
@@ -2274,7 +2262,7 @@
 STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}{COMPANY} ist von den Gläubigern geschlossen worden, alles Vermögen wurde veräussert!
 STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}Neue Transportfirma gegründet!
 STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} startet bei {TOWN}!
-STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Kann die Firma nicht kaufen...
+STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Firmenkauf nicht möglich...
 STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Frachtbeförderungspreise
 STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Tage unterwegs
 STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Zahlung für 10 gelieferte Einheiten (oder 10.000 Liter) Fracht über eine Strecke von 20 Feldern
@@ -2292,28 +2280,28 @@
 STR_706F_BUILD_HQ                                               :{BLACK}Firmensitz bauen
 STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Firmensitz bauen / anzeigen
 STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Errichte Firmensitz für 1% des Firmenwertes an anderer Stelle neu.
-STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Kann keinen Firmensitz bauen ...
-STR_7072_VIEW_HQ                                                :{BLACK}Zeige Firmensitz
+STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Firmensitz kann nicht gebaut werden ...
+STR_7072_VIEW_HQ                                                :{BLACK}Firmensitz anzeigen
 STR_RELOCATE_HQ                                                 :{BLACK}Firmensitz verlegen
 STR_COMPANY_PASSWORD                                            :{BLACK}Passwort
-STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Schütze deine Firma mit einem Passwort, um unautorisierten Spielern den Beitritt zu verwehren.
+STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Sie können Ihre Firma mit einem Passwort schützen, sodass nur ausgewählte Spieler beitreten können.
 STR_SET_COMPANY_PASSWORD                                        :Firmenpasswort setzen
 STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Weltwirtschaftskrise!{}{}Finanzexperten befürchten schlimmsten Zusammenbruch der Wirtschaft!
 STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Wirtschaftskrise beendet!{}{}Aufschwung des Handels gibt Vertrauen in die Industrie und stärkt die Wirtschaft!
 STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Schalter für großes/kleines Fenster
 STR_7076_COMPANY_VALUE                                          :{GOLD}Firmenwert: {WHITE}{CURRENCY}
-STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Kaufe 25% Anteil an Firma
-STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Verkaufe 25% Anteil an Firma
-STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Kaufe 25% Anteil an dieser Firma
-STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}Verkaufe 25% Anteil an dieser Firma
-STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}Kann 25% Anteil an dieser Firma nicht kaufen...
-STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kann 25% Anteil an dieser Firma nicht verkaufen...
+STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}25% der Aktien der Firma kaufen
+STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}25% der Aktien der Firma verkaufen
+STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}25% der Aktien dieser Firma kaufen
+STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}25% der Aktien dieser Firma verkaufen
+STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}Kauf von 25% der Aktien dieser Firma nicht möglich...
+STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Verkauf von 25% der Aktien dieser Firma nicht möglich...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% Eigentum von {COMPANY})
 STR_707E_OWNED_BY_OWNED_BY                                      :{WHITE}({COMMA}% Eigentum von {COMPANY}{}   {COMMA}% Eigentum von {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} wurde von {COMPANY} übernommen!
-STR_7080_PROTECTED                                              :{WHITE}Dieses Unternehmen handelt noch nicht mit Anteilen...
+STR_7080_PROTECTED                                              :{WHITE}Dieses Unternehmen ist noch nicht an der Börse...
 
-STR_LIVERY_DEFAULT                                              :Standard Lackierung
+STR_LIVERY_DEFAULT                                              :Standardlackierung
 STR_LIVERY_STEAM                                                :Dampflok
 STR_LIVERY_DIESEL                                               :Diesellok
 STR_LIVERY_ELECTRIC                                             :E-Lok
@@ -2324,7 +2312,7 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passagierwagen (Dampf)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passagierwagen (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passagierwagen (elektrisch)
-STR_LIVERY_FREIGHT_WAGON                                        :Güterwagen
+STR_LIVERY_FREIGHT_WAGON                                        :Güterwaggon
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Lastwagen
 STR_LIVERY_PASSENGER_SHIP                                       :Passagierfähre
@@ -2372,26 +2360,26 @@
 STR_8018_SH_40_ELECTRIC                                         :SH '40' (Elektrisch)
 STR_8019_T_I_M_ELECTRIC                                         :'T.I.M.' (Elektrisch)
 STR_801A_ASIASTAR_ELECTRIC                                      :'AsiaStar' (Elektrisch)
-STR_801B_PASSENGER_CAR                                          :Passagierwagen
-STR_801C_MAIL_VAN                                               :Postwagen
-STR_801D_COAL_CAR                                               :Kohlenwagen
+STR_801B_PASSENGER_CAR                                          :Passagierwaggon
+STR_801C_MAIL_VAN                                               :Postwaggon
+STR_801D_COAL_CAR                                               :Kohlenwaggon
 STR_801E_OIL_TANKER                                             :Öltanker
 STR_801F_LIVESTOCK_VAN                                          :Viehtransporter
-STR_8020_GOODS_VAN                                              :Güterwagen
+STR_8020_GOODS_VAN                                              :Güterwaggon
 STR_8021_GRAIN_HOPPER                                           :Getreidetransporter
-STR_8022_WOOD_TRUCK                                             :Holzwagen
-STR_8023_IRON_ORE_HOPPER                                        :Eisenerzwagen
+STR_8022_WOOD_TRUCK                                             :Holzwaggon
+STR_8023_IRON_ORE_HOPPER                                        :Eisenerzwaggon
 STR_8024_STEEL_TRUCK                                            :Stahltransporter
 STR_8025_ARMORED_VAN                                            :Sicherheitstransporter
 STR_8026_FOOD_VAN                                               :Lebensmitteltransporter
 STR_8027_PAPER_TRUCK                                            :Papiertransporter
-STR_8028_COPPER_ORE_HOPPER                                      :Kupfererzwagen
+STR_8028_COPPER_ORE_HOPPER                                      :Kupfererzwaggon
 STR_8029_WATER_TANKER                                           :Wassertanker
 STR_802A_FRUIT_TRUCK                                            :Fruchttransporter
-STR_802B_RUBBER_TRUCK                                           :Kautschukwagen
+STR_802B_RUBBER_TRUCK                                           :Kautschukwaggon
 STR_802C_SUGAR_TRUCK                                            :Zuckerlaster
-STR_802D_COTTON_CANDY_HOPPER                                    :Zuckerwattewagen
-STR_802E_TOFFEE_HOPPER                                          :Karamellwagen
+STR_802D_COTTON_CANDY_HOPPER                                    :Zuckerwattewaggon
+STR_802E_TOFFEE_HOPPER                                          :Karamellwaggon
 STR_802F_BUBBLE_VAN                                             :Luftblasentransporter
 STR_8030_COLA_TANKER                                            :Colatanker
 STR_8031_CANDY_VAN                                              :Bonbontransporter
@@ -2402,25 +2390,25 @@
 STR_8036_X2001_ELECTRIC                                         :'X2001' (Elektrisch)
 STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Millennium Z1' (Elektrisch)
 STR_8038_WIZZOWOW_Z99                                           :Wizzowow Z99
-STR_8039_PASSENGER_CAR                                          :Passagierwagen
-STR_803A_MAIL_VAN                                               :Postwagen
-STR_803B_COAL_CAR                                               :Kohlewagen
+STR_8039_PASSENGER_CAR                                          :Passagierwaggon
+STR_803A_MAIL_VAN                                               :Postwaggon
+STR_803B_COAL_CAR                                               :Kohlewaggon
 STR_803C_OIL_TANKER                                             :Öltanker
 STR_803D_LIVESTOCK_VAN                                          :Viehtransporter
-STR_803E_GOODS_VAN                                              :Güterwagen
-STR_803F_GRAIN_HOPPER                                           :Getreidewagen
-STR_8040_WOOD_TRUCK                                             :Holzwagen
-STR_8041_IRON_ORE_HOPPER                                        :Eisenerzwagen
+STR_803E_GOODS_VAN                                              :Güterwaggon
+STR_803F_GRAIN_HOPPER                                           :Getreidewaggon
+STR_8040_WOOD_TRUCK                                             :Holzwaggon
+STR_8041_IRON_ORE_HOPPER                                        :Eisenerzwaggon
 STR_8042_STEEL_TRUCK                                            :Stahltransporter
 STR_8043_ARMORED_VAN                                            :Sicherheitstransporter
 STR_8044_FOOD_VAN                                               :Lebensmitteltransporter
 STR_8045_PAPER_TRUCK                                            :Papiertransporter
-STR_8046_COPPER_ORE_HOPPER                                      :Kupfererzwagen
+STR_8046_COPPER_ORE_HOPPER                                      :Kupfererzwaggon
 STR_8047_WATER_TANKER                                           :Wassertanker
 STR_8048_FRUIT_TRUCK                                            :Fruchttransporter
 STR_8049_RUBBER_TRUCK                                           :Kautschuktransporter
 STR_804A_SUGAR_TRUCK                                            :Zuckertransporter
-STR_804B_COTTON_CANDY_HOPPER                                    :Zuckerwattewagen
+STR_804B_COTTON_CANDY_HOPPER                                    :Zuckerwattewaggon
 STR_804C_TOFFEE_HOPPER                                          :Karamelltransporter
 STR_804D_BUBBLE_VAN                                             :Luftblasentransporter
 STR_804E_COLA_TANKER                                            :Colatransporter
@@ -2428,31 +2416,31 @@
 STR_8050_TOY_VAN                                                :Spielwarentransporter
 STR_8051_BATTERY_TRUCK                                          :Batterietransporter
 STR_8052_FIZZY_DRINK_TRUCK                                      :Limonadetransporter
-STR_8053_PLASTIC_TRUCK                                          :Plastikwagen
-STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Lev1 'Leviathan' (Elektrisch)
-STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Lev2 'Cyclops' (Elektrisch)
-STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Lev3 'Pegasus' (Elektrisch)
-STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Lev4 'Chimaera' (Elektrisch)
+STR_8053_PLASTIC_TRUCK                                          :Plastikwaggon
+STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Lev1 'Leviathan' (elektrisch)
+STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Lev2 'Cyclops' (elektrisch)
+STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Lev3 'Pegasus' (elektrisch)
+STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Lev4 'Chimaera' (elektrisch)
 STR_8058_WIZZOWOW_ROCKETEER                                     :Wizzowow Rocketeer
-STR_8059_PASSENGER_CAR                                          :Passagierwagen
-STR_805A_MAIL_VAN                                               :Postwagen
-STR_805B_COAL_CAR                                               :Kohlewagen
+STR_8059_PASSENGER_CAR                                          :Passagierwaggon
+STR_805A_MAIL_VAN                                               :Postwaggon
+STR_805B_COAL_CAR                                               :Kohlewaggon
 STR_805C_OIL_TANKER                                             :Öltanker
 STR_805D_LIVESTOCK_VAN                                          :Viehtransporter
-STR_805E_GOODS_VAN                                              :Warenwagen
+STR_805E_GOODS_VAN                                              :Warenwaggon
 STR_805F_GRAIN_HOPPER                                           :Getreidetransporter
-STR_8060_WOOD_TRUCK                                             :Holzwagen
-STR_8061_IRON_ORE_HOPPER                                        :Eisenerzwagen
+STR_8060_WOOD_TRUCK                                             :Holzwaggon
+STR_8061_IRON_ORE_HOPPER                                        :Eisenerzwaggon
 STR_8062_STEEL_TRUCK                                            :Stahltransporter
 STR_8063_ARMORED_VAN                                            :Sicherheitstransporter
 STR_8064_FOOD_VAN                                               :Lebensmitteltransporter
 STR_8065_PAPER_TRUCK                                            :Papiertransporter
-STR_8066_COPPER_ORE_HOPPER                                      :Kupfererzwagen
+STR_8066_COPPER_ORE_HOPPER                                      :Kupfererzwaggon
 STR_8067_WATER_TANKER                                           :Wassertanker
 STR_8068_FRUIT_TRUCK                                            :Fruchttransporter
-STR_8069_RUBBER_TRUCK                                           :Kautschukwagen
+STR_8069_RUBBER_TRUCK                                           :Kautschukwaggon
 STR_806A_SUGAR_TRUCK                                            :Zuckertransporter
-STR_806B_COTTON_CANDY_HOPPER                                    :Zuckerwattewagen
+STR_806B_COTTON_CANDY_HOPPER                                    :Zuckerwattewaggon
 STR_806C_TOFFEE_HOPPER                                          :Karamelltransporter
 STR_806D_BUBBLE_VAN                                             :Luftblasentransporter
 STR_806E_COLA_TANKER                                            :Colatransporter
@@ -2460,7 +2448,7 @@
 STR_8070_TOY_VAN                                                :Spielwarentransporter
 STR_8071_BATTERY_TRUCK                                          :Batterielaster
 STR_8072_FIZZY_DRINK_TRUCK                                      :Limonadetransporter
-STR_8073_PLASTIC_TRUCK                                          :Plastikwagen
+STR_8073_PLASTIC_TRUCK                                          :Plastikwaggon
 STR_8074_MPS_REGAL_BUS                                          :MPS Regal Bus
 STR_8075_HEREFORD_LEOPARD_BUS                                   :Hereford Leopard Bus
 STR_8076_FOSTER_BUS                                             :Foster Bus
@@ -2612,7 +2600,7 @@
 
 ##id 0x8800
 STR_8800_TRAIN_DEPOT                                            :{WHITE}{TOWN} Zugdepot
-STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Zug erreicht {STATION}!
+STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Der erste Zug erreicht {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Details)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Zug ist im Weg
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
@@ -2635,9 +2623,9 @@
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Wartung (ohne Halt) bei {TOWN} Zugdepot
 
 STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
-STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Fahre (ohne Fahrplan)
-STR_TIMETABLE_TRAVEL_FOR                                        :Fahre für {STRING}
-STR_TIMETABLE_STAY_FOR                                          :und bleibe für {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Fahren (ohne Fahrplan)
+STR_TIMETABLE_TRAVEL_FOR                                        :{STRING} lang fahren
+STR_TIMETABLE_STAY_FOR                                          :und {STRING} lang bleiben
 STR_TIMETABLE_DAYS                                              :{COMMA} Tag{P "" e}
 STR_TIMETABLE_TICKS                                             :{COMMA} Tick{P "" s}
 
@@ -2673,56 +2661,56 @@
 STR_CLONE_TRAIN_INFO                                            :{BLACK}Baut eine Kopie des Zuges mit allen Waggons. Strg+Klick erzeugt gemeinsamen Fahrplan
 STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Baut eine Kopie des Zuges mit allen Waggons. Klicke diese Schaltfläche und dann auf einen Zug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan
 STR_8820_RENAME                                                 :{BLACK}Umbenennen
-STR_8823_SKIP                                                   :{BLACK}Übergehen
+STR_8823_SKIP                                                   :{BLACK}Überspringen
 STR_8824_DELETE                                                 :{BLACK}Löschen
 STR_8825_NON_STOP                                               :{BLACK}ohne Halt
 STR_8826_GO_TO                                                  :{BLACK}Nach
 STR_8827_FULL_LOAD                                              :{BLACK}Beladen
 STR_8828_UNLOAD                                                 :{BLACK}Entladen
-STR_REFIT                                                       :{BLACK}Ersetzen
-STR_REFIT_TIP                                                   :{BLACK}Wähle welche Frachtart du ersetzen möchtest. STRG+Klick um die Auswahl rückgängig zu machen
-STR_REFIT_ORDER                                                 :(Ersetzen zu {STRING})
+STR_REFIT                                                       :{BLACK}Umrüsten
+STR_REFIT_TIP                                                   :{BLACK}Frachtart auswählen, auf die umgerüstet werden soll. Strg+Klick, um einen Umrüstungsauftrag wieder zu entfernen
+STR_REFIT_ORDER                                                 :(umrüsten auf {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Fahrplan
-STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Gehe zur Fahrplanansicht
+STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Zur Fahrplanansicht wechseln
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Aufträge)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Ende der Aufträge - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
 STR_SERVICE                                                     :{BLACK}Wartung
-STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}Kann Schienenfahrzeug nicht bauen...
+STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}Schienenfahrzeug kann nicht gebaut werden...
 STR_882C_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Gebaut: {LTBLUE}{NUM}{BLACK}  Wert: {LTBLUE}{CURRENCY}
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Wert: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Laden / Entladen
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Zug muss im Depot angehalten sein
-STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Kann den Zug nicht ins Depot schicken...
+STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Zug kann nicht ins Depot geschickt werden...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Kein Platz für weitere Aufträge
 STR_8832_TOO_MANY_ORDERS                                        :{WHITE}Zu viele Aufträge
-STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Kann keinen neuen Auftrag hinzufügen...
-STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Kann den Auftrag nicht löschen...
-STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Kann den Auftrag nicht bearbeiten...
-STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Kann diesen Auftrag nicht verschieben...
-STR_CAN_T_SKIP_ORDER                                            :{WHITE}Kann diesen Auftrag nicht auslassen...
-STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Kann nicht zum gewählten Auftrag wechseln...
-STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Kann das Fahrzeug nicht bewegen...
+STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Neuer Auftrag kann nicht hinzugefügt werden...
+STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Auftrag kann nicht gelöscht werden...
+STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Auftrag kann nicht bearbeitet werden...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Auftrag kann nicht verschoben werden...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Auftrag kann nicht ausgelassen werden...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Wechseln zum ausgewählten Auftrag nicht möglich...
+STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Fahrzeug kann nicht bewegt werden...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Hintere Lok folgt immer der vorderen Lok
 STR_8838_N_A                                                    :k.A.{SKIP}
-STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}Kann Schienenfahrzeug nicht verkaufen...
-STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Kann keinen weg zum Depot finden
-STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}Kann den Zug nicht anhalten/starten ...
+STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}Schienenfahrzeug kann nicht verkauft werden...
+STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Weg zum Depot kann nicht gefunden werden
+STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}Zug kann nicht angehalten/losgeschickt werden ...
 STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}Tage {BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG}
 STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}%{BLACK}   Letzte Wartung: {LTBLUE}{DATE_LONG}
 STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Züge - für Einzelheiten auf den jeweiligen Zug klicken
 STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Neue Züge bauen (setzt Zugdepot voraus)
 STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Züge - für Einzelheiten auf den Zug klicken; Waggon ziehen, um ihn an-/abzukoppeln
-STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Baue neues Schienenfahrzeug
+STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Neues Schienenfahrzeug bauen
 STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Schienenfahrzeug hierher ziehen, um es zu verkaufen
-STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Ansicht auf das Zugdepot zentrieren
+STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Hauptansicht zum Zugdepot scrollen
 STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Zugfahrzeugliste - Einzelheiten durch Anklicken des Fahrzeuges
-STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Baue das angewählte Fahrzeug
+STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Angewähltes Fahrzeug bauen
 STR_8845_RENAME_TRAIN_VEHICLE_TYPE                              :{BLACK}Umbenennen der Waggontypen
 STR_8846_CURRENT_TRAIN_ACTION_CLICK                             :{BLACK}Laufende Zugbewegung - Klicke hier, um den Zug anzuhalten / zu starten
 STR_8847_SHOW_TRAIN_S_ORDERS                                    :{BLACK}Anzeige der Zugaufträge
-STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Ansicht auf den Zug zentrieren
+STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Hauptansicht zum Zug scrollen
 STR_8849_SEND_TRAIN_TO_DEPOT                                    :{BLACK}Zug ins Depot schicken
 STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Zug zur Weiterfahrt zwingen, ohne das Signal zu beachten
 STR_884B_REVERSE_DIRECTION_OF_TRAIN                             :{BLACK}Zug umkehren
@@ -2734,30 +2722,30 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Zeige Kapazität jedes Fahrzeugs
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Auftragsliste - zum Markieren hier anklicken
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Den aktuellen Auftrag auslassen und den Nächsten starten. STRG + Klick geht zum ausgewählten Auftrag
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Übergehe den laufenden Auftrag, und starte den nächsten
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Lösche den markierten Auftrag
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Führe den markierten Auftrag ohne Halt durch
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Füge einen neuen Auftrag vor dem markierten Auftrag ein, oder setze ihn ans Ende der Liste
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Der markierte Auftrag wird nur nach voller Beladung ausgeführt
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Beim markierten Auftrag wird die volle Entladung veranlasst
 STR_TIMETABLE_TOOLTIP                                           :{BLACK}Fahrplan - Einträge anklicken um sie zu markieren.
-STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Ändere den Zeitrahmen für den markierten Auftrag
-STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Lösche den Zeitrahmen für den markierten Auftrag
-STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Setze den Verspätungsmelder zurück, das Fahrzeug ist dann pünktlich.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Zeitrahmen für den markierten Auftrag ändern
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Zeitrahmen für den markierten Auftrag löschen
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Verspätungsmelder zurücksetzen (das Fahrzeug gilt dann als pünktlich).
 STR_SERVICE_HINT                                                :{BLACK}Überspringe diesen Auftrag, sofern keine Wartung benötigt wird
-STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Kosten: {CURRENCY}   Gewicht: {WEIGHT_S}{}Geschwindigk.: {VELOCITY} Leistung: {POWER}{}Betriebskosten: {CURRENCY}/Jahr{}Kapazität: {CARGO}
+STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Kosten: {CURRENCY}   Gewicht: {WEIGHT_S}{}Geschwindigk.: {VELOCITY} Leistung: {POWER}{}Betriebskosten: {CURRENCY} pro Jahr{}Kapazität: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Panne
-STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY}/Jahr
+STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY} pro Jahr
 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Gewicht: {LTBLUE}{WEIGHT_S}  {BLACK}Leistung: {LTBLUE}{POWER}{BLACK}  Höchstgeschwindigk.: {LTBLUE}{VELOCITY}
 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Gewicht: {LTBLUE}{WEIGHT_S} {BLACK}Leistung: {LTBLUE}{POWER}{BLACK} Höchstgeschw.: {LTBLUE}{VELOCITY} {BLACK}Max. Zugkraft: {LTBLUE}{FORCE}
-STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Profit lfd. Jahr: {LTBLUE}{CURRENCY}  (letztes Jahr: {CURRENCY})
+STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Gewinn lfd. Jahr: {LTBLUE}{CURRENCY}  (vergangenes Jahr: {CURRENCY})
 STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Zuverlässigkeit: {LTBLUE}{COMMA}% {BLACK}Ausfälle seit letzter Wartung: {LTBLUE}{COMMA}
 STR_8861_STOPPED                                                :{RED}Angehalten
 STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}Der Zug kann das Signal nicht ohne Gefahr passieren...
 STR_8863_CRASHED                                                :{RED}Zusammenstoß!
 
 STR_8865_NAME_TRAIN                                             :{WHITE}Name des Zuges
-STR_8866_CAN_T_NAME_TRAIN                                       :{WHITE}Kann den Zug nicht benennen...
+STR_8866_CAN_T_NAME_TRAIN                                       :{WHITE}Zug kann nicht benannt werden...
 STR_8867_NAME_TRAIN                                             :{BLACK}Name des Zuges
 STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Zugunglück!{}{COMMA} sterben in einem Feuerball nach Zusammenstoß
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Die Zugbewegung kann nicht umgekehrt werden...
@@ -2766,7 +2754,7 @@
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Beim markierten Eintrag wird die Ladung in den Bahnhof entladen (für späteren Weitertransport)
 STR_886F_TRANSFER                                               :{BLACK}Umladen
 STR_CLEAR_TIME                                                  :{BLACK}Zeit löschen
-STR_RESET_LATENESS                                              :{BLACK}Setze Verspätungszähler zurück
+STR_RESET_LATENESS                                              :{BLACK}Verspätungszähler zurücksetzen
 
 STR_TRAIN_STOPPING                                              :{RED}Halte an
 STR_TRAIN_STOPPING_VEL                                          :{RED}Halte an, {VELOCITY}
@@ -2781,14 +2769,14 @@
 STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Kein Fahrplan für das Fahrzeug...
 STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Fahrzeuge halten nur an Stationen.
 STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Das Fahrzeug hält nicht an dieser Station.
-STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Ändere Zeit
+STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Zeit ändern
 STR_TIMETABLE_STATUS_ON_TIME                                    :Das Fahrzeug ist derzeit pünktlich.
 STR_TIMETABLE_STATUS_LATE                                       :Dieses Fahrzeug hat {STRING} Verspätung
 STR_TIMETABLE_STATUS_EARLY                                      :Dieses Fahrzeug ist {STRING} zu früh
 STR_TIMETABLE_TOTAL_TIME                                        :Dieser Fahrplan benötigt {STRING}
 STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Dieser Fahrplan benötigt mindestens {STRING} (nicht alle geplant)
-STR_TIMETABLE_AUTOFILL                                          :{BLACK}Autom. Füllung
-STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Ergänze den Fahrplan automatisch mit den Werten der ersten Fahrt
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Autom. ausfüllen
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Fahrplan automatisch mit den Ergebnissen der ersten Fahrt ergänzen
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Fahrzeug ist im Weg
@@ -2797,126 +2785,126 @@
 STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Fahrzeugdepot
 STR_9004_NEW_VEHICLES                                           :{BLACK}Neue Fahrzeuge
 STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Neue Fahrzeuge
-STR_9007_BUILD_VEHICLE                                          :{BLACK}Baue Fahrzeug
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kann das Fahrzeug nicht bauen...
+STR_9007_BUILD_VEHICLE                                          :{BLACK}Fahrzeug bauen
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Fahrzeug kann nicht gebaut werden...
 STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Einzelheiten)
-STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY}/Jahr
+STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY} pro Jahr
 STR_900E_MAX_SPEED                                              :{BLACK}Höchstgeschwindigk.: {LTBLUE}{VELOCITY}
-STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Profit lfd. Jahr: {LTBLUE}{CURRENCY}  (letztes Jahr: {CURRENCY})
+STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Gewinn lfd. Jahr: {LTBLUE}{CURRENCY}  (vergangenes Jahr: {CURRENCY})
 STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Zuverlässigkeit: {LTBLUE}{COMMA}% {BLACK}Pannen seit letzter Wartung: {LTBLUE}{COMMA}
 STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}  Gebaut: {LTBLUE}{NUM}{BLACK} Wert: {LTBLUE}{CURRENCY}
 STR_9012_CAPACITY                                               :{BLACK}Kapazität: {LTBLUE}{CARGO}
 STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...muss in einem Fahrzeugdepot angehalten werden
-STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}Kann das Fahrzeug nicht verkaufen...
-STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}Kann das Fahrzeug nicht anhalten/starten...
+STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}Fahrzeug kann nicht verkauft werden...
+STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}Fahrzeug kann nicht angehalten/losgeschickt werden...
 STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Fahrzeug {COMMA} wartet im Depot
-STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Unterwegs zu {TOWN} Fahrzeugdepot
-STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Unterwegs zu {TOWN} Fahrzeugdepot, {VELOCITY}
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Wartung in {TOWN} Fahrzeugdepot
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Wartung in {TOWN} Fahrzeugdepot, {VELOCITY}
-STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}Kann das Fahrzeug nicht zum Depot schicken...
-STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Kann kein Fahrzeugdepot finden
+STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Unterwegs zum Fahrzeugdepot {TOWN}
+STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Unterwegs zum Fahrzeugdepot {TOWN}, {VELOCITY}
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Wartung im Fahrzeugdepot {TOWN}
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Wartung im Fahrzeugdepot {TOWN}, {VELOCITY}
+STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}Fahrzeug kann nicht ins Depot geschickt werden...
+STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Fahrzeugdepot unauffindbar
 STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}Straßenfahrzeuge - für Einzelheiten auf das Fahrzeug klicken
-STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Baue neues Fahrzeug (setzt Fahrzeugdepot voraus)
-STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Laufende Fahrzeugbewegung - Klicke hier, um das Fahrzeug anzuhalten / zu starten
-STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Zeige Aufträge für das Fahrzeug
-STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Ansicht auf das Fahrzeug zentrieren
-STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Schicke das Fahrzeug ins Depot
+STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Neues Fahrzeug bauen (erfordert ein Fahrzeugdepot)
+STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Laufende Fahrzeugbewegung - Klick zum Anhalten bzw. Losschicken
+STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Aufträge für das Fahrzeug anzeigen
+STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Hauptansicht auf das Fahrzeug richten
+STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Das Fahrzeug ins Depot schicken
 STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}Das Fahrzeug zur Umkehr zwingen
-STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Zeige Einzelheiten des Fahrzeuges
+STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Einzelheiten des Fahrzeuges anzeigen
 STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}Straßenfahrzeuge - für Einzelheiten auf das Fahrzeug klicken
-STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Baue neues Fahrzeug
+STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Neues Fahrzeug bauen
 STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Ziehe Fahrzeug hierher, um es zu verkaufen
-STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Ansicht auf das Fahrzeugdepot zentrieren
+STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Hauptansicht zum Fahrzeugdepot scrollen
 STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Fahrzeugauswahlliste - Klicke auf ein Fahrzeug für Einzelheiten
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Baue das ausgewählte Fahrzeug
-STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Kosten: {CURRENCY}{}Geschwindigk.: {VELOCITY}{}Betriebskosten: {CURRENCY}/Jahr{}Ladevermögen: {CARGO}
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Ausgewähltes Fahrzeug bauen
+STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Kosten: {CURRENCY}{}Geschwindigk.: {VELOCITY}{}Betriebskosten: {CURRENCY} pro Jahr{}Ladevermögen: {CARGO}
 STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Kapazität: {LTBLUE}
 STR_BARE_CARGO                                                  :{CARGO}
 
 STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Name des Fahrzeuges
-STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}Kann das Fahrzeug nicht benennen...
+STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}Fahrzeug kann nicht benannt werden...
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Name des Fahrzeuges
-STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Bus erreicht {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Lkw erreicht {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Der erste Bus erreicht {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Der erste Lkw erreicht {STATION}!
 STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}!
-STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}Fahrer stirbt in einem Feuerball nach Zusammenstoß mit einem Zug
-STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}{COMMA} sterben nach Zusammenstoß mit einem Zug im Feuerball
-STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Das Fahrzeug kann nicht gewendet werden...
-STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}Fahrzeuge die aus mehreren Einheiten bestehen, können nicht gedreht werden.
+STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}Fahrer stirbt in Inferno nach Zusammenstoß mit Zug
+STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}{COMMA} sterben in Inferno nach Zusammenstoß mit Zug
+STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Das Fahrzeug kann nicht wenden...
+STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}Fahrzeuge, die aus mehreren Einheiten bestehen, können nicht wenden.
 STR_9034_RENAME                                                 :{BLACK}Umbenennen
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Fahrzeug umbenennen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Fahrzeug umbenennen
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kann das Fahrzeug nicht umbenennen...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Fahre zu {TOWN} Fahrzeugdepot
-STR_SERVICE_AT_ROADVEH_DEPOT                                    :Wartung bei {TOWN} Fahrzeugdepot
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Fahrzeug kann nicht umbenannt werden...
+STR_9038_GO_TO_ROADVEH_DEPOT                                    :Fahre zum Fahrzeugdepot {TOWN}
+STR_SERVICE_AT_ROADVEH_DEPOT                                    :Wartung im Fahrzeugdepot {TOWN}
 
-STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Straßenfahrzeug für den Transport anderer Güter ausrüsten
-STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Erneuere Straßenfahrzeug
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Straßenfahrzeug für den Transport des markierten Gutes ausrüsten
-STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}Kann Straßenfahrzeug nicht erneuern...
-STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wähle die Frachtart aus, die vom Straßenfahrzeug transportiert werden soll
+STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Straßenfahrzeug für den Transport anderer Güter umrüsten
+STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Straßenfahrzeug erneuern
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Straßenfahrzeug für den Transport des markierten Gutes umrüsten
+STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}Straßenfahrzeug kann nicht umgerüstet werden...
+STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wählen Sie aus, welche Fracht das Straßenfahrzeug transportieren soll
 
 ##id 0x9800
 STR_9800_DOCK_CONSTRUCTION                                      :Hafenanlage bauen
 STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Hafenanlage bauen
-STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Kann den Hafen hier nicht bauen...
+STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Hafen kann hier nicht gebaut werden...
 STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN} Werft
 STR_9804_NEW_SHIPS                                              :{BLACK}Neue Schiffe
 STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} Schiff{P "" e}
 STR_9808_NEW_SHIPS                                              :{WHITE}Neue Schiffe
-STR_9809_BUILD_SHIP                                             :{BLACK}Baue Schiff
+STR_9809_BUILD_SHIP                                             :{BLACK}Schiff bauen
 STR_CLONE_SHIP                                                  :{BLACK}Schiff duplizieren
 STR_CLONE_SHIP_INFO                                             :{BLACK}Baut eine Kopie des Schiffes. Strg+Klick erzeugt gemeinsamen Fahrplan
 STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Baut eine Kopie des Schiffes. Klicke diese Schaltfläche und dann auf eine Schiff innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan
 STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Schiff muss in der Werft angehalten werden
-STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}Kann das Schiff nicht verkaufen...
-STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Kann das Schiff nicht bauen...
+STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}Schiff kann nicht verkauft werden...
+STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Schiff kann nicht gebaut werden...
 STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Schiff ist im Weg
 STR_980F                                                        :{WHITE}{VEHICLE}
 STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (Einzelheiten)
-STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY}/Jahr
+STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY} pro Jahr
 STR_9813_MAX_SPEED                                              :{BLACK}Höchstgeschwindigk.: {LTBLUE}{VELOCITY}
-STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Profit lfd. Jahr: {LTBLUE}{CURRENCY}  (letztes Jahr: {CURRENCY})
+STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Gewinn lfd. Jahr: {LTBLUE}{CURRENCY}  (vergangenes Jahr: {CURRENCY})
 STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Zuverlässigkeit: {LTBLUE}{COMMA}% {BLACK}Pannen seit letzter Wartung: {LTBLUE}{COMMA}
 STR_9816_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK} Gebaut: {LTBLUE}{NUM}{BLACK}   Wert: {LTBLUE}{CURRENCY}
 STR_9817_CAPACITY                                               :{BLACK}Kapazität: {LTBLUE}{CARGO}
-STR_9818_CAN_T_STOP_START_SHIP                                  :{WHITE}Kann das Schiff nicht anhalten/starten...
-STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}Kann das Schiff nicht in die Werft schicken...
-STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Kann keine Werft finden
-STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Unterwegs zu {TOWN} Werft
-STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Unterwegs zu {TOWN} Werft, {VELOCITY}
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Wartung in {TOWN} Werft
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Wartung in {TOWN} Werft, {VELOCITY}
+STR_9818_CAN_T_STOP_START_SHIP                                  :{WHITE}Schiff kann nicht angehalten/losgeschickt werden...
+STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}Schiff kann nicht in die Werft geschickt werden...
+STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Werft unauffindbar
+STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Unterwegs zur Werft {TOWN}
+STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Unterwegs zur Werft {TOWN}, {VELOCITY}
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Wartung in der Werft {TOWN}
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Wartung in der Werft {TOWN}, {VELOCITY}
 STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}Schiff {COMMA} wartet in der Werft
 STR_981D_BUILD_SHIP_DOCK                                        :{BLACK}Hafen bauen
 STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING                          :{BLACK}Werft bauen (für den Bau und die Wartung von Schiffen)
 STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Schiffe - für Einzelheiten auf das Schiff klicken
 STR_9820_BUILD_NEW_SHIP                                         :{BLACK}Neues Schiff bauen
 STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}Ziehe Schiff hierher, um es zu verkaufen
-STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Ansicht auf die Werft zentrieren
+STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Hauptansicht zur Werft scrollen
 STR_9823_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Schiffe - für Einzelheiten auf das Schiff klicken
-STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Baue neues Schiff (setzt Werft voraus)
+STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Neues Schiff bauen (erfordert eine Werft)
 STR_9825_SHIP_SELECTION_LIST_CLICK                              :{BLACK}Schiffauswahliste - für Einzelheiten auf das Schiff klicken
-STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Baue das ausgewählte Schiff
+STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Ausgewähltes Schiff bauen
 STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Laufende Schiffsbewegung - Klicke hier, um das Schiff anzuhalten / zu starten
 STR_9828_SHOW_SHIP_S_ORDERS                                     :{BLACK}Aufträge des Schiffes
-STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Anzeige auf das Schiff zentrieren
+STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Hauptansicht zum Schiff scrollen
 STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Schicke das Schiff zur Werft
 STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Zeige Einzelheiten des Schiffes
-STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Kosten: {CURRENCY}  Höchstgeschwindigk.: {VELOCITY}{}Kapazität: {CARGO}{}Betriebskosten: {CURRENCY}/Jahr
+STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Kosten: {CURRENCY}  Höchstgeschwindigk.: {VELOCITY}{}Kapazität: {CARGO}{}Betriebskosten: {CURRENCY} pro Jahr
 STR_982F_NAME_SHIP                                              :{BLACK}Schiffsname
 
 STR_9831_NAME_SHIP                                              :{WHITE}Schiffsname
-STR_9832_CAN_T_NAME_SHIP                                        :{WHITE}Kann Schiffsnamen nicht vergeben...
-STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Das erste Schiff erreicht {STATION}!
+STR_9832_CAN_T_NAME_SHIP                                        :{WHITE}Schiff kann nicht benannt werden...
+STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Das erste Schiff erreicht {STATION}!
 STR_9834_POSITION_BUOY_WHICH_CAN                                :{BLACK}Positionsboje, wird als Wegpunkt benötigt
-STR_9835_CAN_T_POSITION_BUOY_HERE                               :{WHITE}Kann die Boje hier nicht plazieren...
+STR_9835_CAN_T_POSITION_BUOY_HERE                               :{WHITE}Boje kann hier nicht platziert werden...
 STR_9836_RENAME                                                 :{BLACK}Umbenennen
 STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Schiff umbenennen
 STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Schiff umbenennen
-STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}Kann das Schiff nicht umbenennen...
+STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}Schiffstyp kann nicht umbenannt werden...
 STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Umrüstung des Schiffes zur Beförderung anderer Frachtarten
 STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Umrüsten)
 STR_983C_REFIT_SHIP                                             :{BLACK}Schiff umrüsten
@@ -2924,7 +2912,7 @@
 STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Umrüstung des Schiffes auf die ausgewählte Frachtart
 STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Wähle Frachtart für die Beförderung:
 STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Neue Kapazität: {GOLD}{CARGO}{}{BLACK}Kosten der Umrüstung: {GOLD}{CURRENCY}
-STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Kann das Schiff nicht umrüsten...
+STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Schiff kann nicht umgerüstet werden...
 STR_9842_REFITTABLE                                             :(umrüstbar)
 STR_GO_TO_SHIP_DEPOT                                            :Fahre zu {TOWN} Schiffswerft
 SERVICE_AT_SHIP_DEPOT                                           :Wartung in der {TOWN} Schiffswerft
@@ -2939,57 +2927,57 @@
 STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Baut eine Kopie des Flugzeuges. Klicke auf diese Schaltfläche und dann auf ein Flugzeug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}Neue Flugzeuge
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Flugzeug bauen
-STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Kann das Flugzeug nicht bauen...
+STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Flugzeug kann nicht gebaut werden...
 STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} Flugzeug{P "" e}
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Aufträge)
 STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Einzelheiten)
-STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY}/Jahr
+STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Alter: {LTBLUE}{STRING}{BLACK}  Betriebskosten: {LTBLUE}{CURRENCY} pro Jahr
 STR_A00E_MAX_SPEED                                              :{BLACK}Höchstgeschwindigk.: {LTBLUE}{VELOCITY}
-STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Profit lfd. Jahr: {LTBLUE}{CURRENCY}  (letztes Jahr: {CURRENCY})
+STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Gewinn lfd. Jahr: {LTBLUE}{CURRENCY}  (vergangenes Jahr: {CURRENCY})
 STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Zuverlässigkeit: {LTBLUE}{COMMA}% {BLACK}Pannen seit letzter Wartung: {LTBLUE}{COMMA}
 STR_A011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK} Gebaut: {LTBLUE}{NUM}{BLACK}   Wert: {LTBLUE}{CURRENCY}
-STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}Kann das Flugzeug nicht in den Hangar schicken...
+STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}Flugzeug kann nicht in den Hangar geschickt werden...
 STR_HEADING_FOR_HANGAR                                          :{ORANGE}Unterwegs zu {STATION} Hangar
 STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Unterwegs zu {STATION} Hangar, {VELOCITY}
 STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Wartung in {STATION} Hangar
 STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Wartung in {STATION} Hangar, {VELOCITY}
 STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Flugzeug {COMMA} wartet im Hangar
 STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Flugzeug ist auf dem Weg
-STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}Kann das Flugzeug nicht anhalten/starten...
+STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}Flugzeug kann nicht angehalten/losgeschickt werden...
 STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Das Flugzeug ist in der Luft
 STR_A019_CAPACITY                                               :{BLACK}Kapazität: {LTBLUE}{CARGO}, {CARGO}
 STR_A01A_CAPACITY                                               :{BLACK}Kapazität: {LTBLUE}{CARGO}
 STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Flugzeug muss im Hangar angehalten werden
-STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Kann das Flugzeug nicht verkaufen...
+STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Flugzeug kann nicht verkauft werden...
 STR_A01D_AIRPORT_CONSTRUCTION                                   :Flughafenbau
-STR_A01E_BUILD_AIRPORT                                          :{BLACK}Baue Flughafen
+STR_A01E_BUILD_AIRPORT                                          :{BLACK}Flughafen bauen
 STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Flugzeuge - für Einzelheiten auf das Flugzeug klicken
-STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Baue neues Flugzeug (setzt Flughafen mit Hangar voraus)
+STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Neues Flugzeug bauen (erfordert einen Flughafen mit Hangar)
 STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Flugzeuge - für Einzelheiten auf das Flugzeug klicken
-STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Baue neues Flugzeug
+STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Neues Flugzeug bauen
 STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Zum Verkauf des Flugzeuges hierher ziehen
-STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Ansicht auf den Hangar zentrieren
-STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Flugzeugauswahlliste - Klicke auf das Flugzeug für weitere Einzelheiten
-STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Baue das augewählte Flugzeug
-STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Laufende Flugzeugbewegung - Klicke hier, um das Flugzeug anzuhalten / zu starten
+STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Hauptansicht zum Hangar scrollen
+STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Flugzeugauswahlliste - Klick auf das Flugzeug zeigt weitere Einzelheiten an
+STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Augewähltes Flugzeug bauen
+STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Laufende Flugzeugbewegung - Klick zum Anhalten bzw. losschicken
 STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Zeige Aufträge für das Flugzeug
-STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Ansicht auf das Flugzeug zentrieren
+STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Hauptansicht zum Flugzeug scrollen
 STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Schicke das Flugzeug in den Hangar
 STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Zeige Einzelheiten des Flugzeuges
-STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Kosten: {CURRENCY}  Höchstgeschwindigk.: {VELOCITY}{}Kapazität: {COMMA} Passagiere, {COMMA} Postsäcke{}Betriebskosten: {CURRENCY}/Jahr
+STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Kosten: {CURRENCY}  Höchstgeschw.: {VELOCITY}{}Kapazität: {COMMA} Passagiere, {COMMA} Postsäcke{}Betriebskosten: {CURRENCY} pro Jahr
 
 STR_A030_NAME_AIRCRAFT                                          :{WHITE}Flugzeugname
-STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}Kann Flugzeugname nicht vergeben...
+STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}Flugzeug kann nicht benannt werden...
 STR_A032_NAME_AIRCRAFT                                          :{BLACK}Flugzeugname
-STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Erstes Flugzeug landet auf {STATION}!
+STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Das erste Flugzeug startet von {STATION}!
 STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Flugzeugabsturz!{}{COMMA} sterben in einem Feuerball auf {STATION}
 STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Flugzeugabsturz!{}Dem Flugzeug ging der Treibstoff aus, {COMMA} sterben in einem Feuerball!
 STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
 STR_A037_RENAME                                                 :{BLACK}Umbenennen
 STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Flugzeug umbenennen
 STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Flugzeug umbenennen
-STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}Kann das Flugzeug nicht umbenennen...
+STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}Flugzeug kann nicht umbenannt werden...
 STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Umrüstung des Flugzeuges zum Transport anderer Frachten
 STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Umrüstung)
 STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Flugzeug umrüsten
@@ -2997,9 +2985,9 @@
 STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Umrüstung des Flugzeuges auf die ausgewählte Frachtart
 STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Wähle Frachtart für Umrüstung aus:
 STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Neue Kapazität: {GOLD}{STRING}{}{BLACK}Kosten der Umrüstung: {GOLD}{CURRENCY}
-STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Kann das Flugzeug nicht umrüsten...
-STR_GO_TO_AIRPORT_HANGAR                                        :Fliege zu {STATION} Hangar
-SERVICE_AT_AIRPORT_HANGAR                                       :Wartung im {STATION} Hangar
+STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Flugzeug kann nicht umgerüstet werden...
+STR_GO_TO_AIRPORT_HANGAR                                        :Flug zum Hangar von {STATION}
+SERVICE_AT_AIRPORT_HANGAR                                       :Wartung im Hangar von {STATION}
 
 STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Fahrplan)
 
@@ -3009,7 +2997,7 @@
 STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Explosion einer Ölraffinerie nahe {TOWN}!
 STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}Fabrik nahe {TOWN} unter mysteriösen Umständen zerstört!
 STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}'UFO' landet bei {TOWN}!
-STR_B005_COAL_MINE_SUBSIDENCE_LEAVES                            :{BLACK}{BIGFONT}Stolleneinbruch hinterläßt einen Pfad der Zerstörung bei {TOWN}!
+STR_B005_COAL_MINE_SUBSIDENCE_LEAVES                            :{BLACK}{BIGFONT}Stolleneinbruch bei {TOWN} hinterlässt Pfad der Zerstörung!
 STR_B006_FLOOD_VEHICLE_DESTROYED                                :{BLACK}{BIGFONT}Hochwasser!{}Mindestens {COMMA} Mensch{P "" en} vermisst oder tot nach schwerer Flut!
 
 STR_BRIBE_FAILED                                                :{WHITE}Ihr Bestechungsversuch wurde
@@ -3025,7 +3013,7 @@
 ############ Those following lines need to be in this order!!
 STR_PERFORMANCE_DETAIL_VEHICLES                                 :{BLACK}Fahrzeuge:
 STR_PERFORMANCE_DETAIL_STATIONS                                 :{BLACK}Stationen:
-STR_PERFORMANCE_DETAIL_MIN_PROFIT                               :{BLACK}Min. Profit:
+STR_PERFORMANCE_DETAIL_MIN_PROFIT                               :{BLACK}Min. Gewinn:
 STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Min. Einkom.:
 STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Max. Einkom.:
 STR_PERFORMANCE_DETAIL_DELIVERED                                :{BLACK}Geliefert:
@@ -3036,60 +3024,60 @@
 ############ End of order list
 STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Anzahl an Fahrzeugen (Straßenfahrzeuge, Züge, Schiffe und Flugzeuge/Helikopter)
 STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Anzahl an Stationen (Jeder Teil einer Station zählt einzeln: Bahnhof, Ladeplatz, Busbahnhof, Flugplatz)
-STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Geringster Profit der Fahrzeuge, die älter als 2 Jahre sind
+STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Geringster Gewinn der Fahrzeuge, die älter als 2 Jahre sind
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Geringste Monatseinnahmen in den letzten 12 Quartalen
 STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Höchste Monatseinnahmen in den letzten 12 Quartalen
 STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}In den letzten 4 Quartalen gelieferte Frachteinheiten
 STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Im letzten Quartal gelieferte Frachttypen
-STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Bargeld
-STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Schuldenfalle?
+STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Kontostand dieser Firma
+STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Das  von dieser Firma in Anspruch genommene Darlehen
 STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Erreichte Punkte von der maximal erreichbaren Anzahl
 
-STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}NewGRF Einstellungen
-STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}Newgrf Einstellungen
+STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}NewGRF-Einstellungen
+STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}NewGRF-Einstellungen
 STR_NEWGRF_APPLY_CHANGES                                        :{BLACK}Änderungen anwenden
 STR_NEWGRF_SET_PARAMETERS                                       :{BLACK}Parameter setzen
-STR_NEWGRF_TIP                                                  :{BLACK}Eine Liste aller Newgrf-Sets, die installiert sind. Per Klick auswählen.
-STR_NEWGRF_NO_FILES_INSTALLED                                   :{BLACK}Keine Newgrf-Dateien installiert. Bitte Installationsanleitung im Handbuch nachschlagen.
+STR_NEWGRF_TIP                                                  :{BLACK}Eine Liste aller NewGRF-Sets, die installiert sind. Per Klick auswählen.
+STR_NEWGRF_NO_FILES_INSTALLED                                   :{BLACK}Keine NewGRF-Dateien installiert. Bitte Installationsanleitung im Handbuch nachschlagen.
 STR_NEWGRF_FILENAME                                             :{BLACK}Dateiname: {SILVER}{STRING}
-STR_NEWGRF_GRF_ID                                               :{BLACK}GRF ID: {SILVER}{STRING}
+STR_NEWGRF_GRF_ID                                               :{BLACK}GRF-ID: {SILVER}{STRING}
 STR_NEWGRF_MD5SUM                                               :{BLACK}MD5-Summe: {SILVER}{STRING}
-STR_NEWGRF_CONFIRMATION_TEXT                                    :{YELLOW}Du bist dabei Änderungen während eines laufenden Spiels zu machen. Dies kann zum Absturz von OpenTTD führen.{}Bist du Dir wirklich sicher?
+STR_NEWGRF_CONFIRMATION_TEXT                                    :{YELLOW}Sie sind im Begriff, Änderungen während eines laufenden Spiels zu machen. Dies kann zum Absturz von OpenTTD führen.{}Sind Sie sicher?
 
 STR_NEWGRF_ERROR_MSG_INFO                                       :{SILVER}{STRING}
 STR_NEWGRF_ERROR_MSG_WARNING                                    :{RED}Warnung: {SILVER}{STRING}
 STR_NEWGRF_ERROR_MSG_ERROR                                      :{RED}Fehler: {SILVER}{STRING}
 STR_NEWGRF_ERROR_MSG_FATAL                                      :{RED}Fataler Fehler: {SILVER}{STRING}
-STR_NEWGRF_ERROR_VERSION_NUMBER                                 :{STRING} Arbeitet nicht zusammen mit der TTDPatch Version in OpenTTD.
-STR_NEWGRF_ERROR_DOS_OR_WINDOWS                                 :{STRING} Ist für die {STRING} Version von TTD.
-STR_NEWGRF_ERROR_UNSET_SWITCH                                   :{STRING} Ist erstellt für die Nutzung mit {STRING}
+STR_NEWGRF_ERROR_VERSION_NUMBER                                 :{STRING} funktioniert nicht im Zusammenhang mit der von OpenTTD ermittelten TTDPatch-Version.
+STR_NEWGRF_ERROR_DOS_OR_WINDOWS                                 :{STRING} ist für die {STRING}-Version von TTD.
+STR_NEWGRF_ERROR_UNSET_SWITCH                                   :{STRING} ist für die Nutzung mit {STRING} vorgesehen
 STR_NEWGRF_ERROR_INVALID_PARAMETER                              :Falscher Parameter für {STRING}: Parameter {STRING} ({NUM})
-STR_NEWGRF_ERROR_LOAD_BEFORE                                    :{STRING} Muß vor {STRING} geladen werden.
-STR_NEWGRF_ERROR_LOAD_AFTER                                     :{STRING} Muß nach {STRING} geladen werden.
-STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE                          :Die GRF Datei, die zur Übersetzung erstellt wurde
+STR_NEWGRF_ERROR_LOAD_BEFORE                                    :{STRING} muss vor {STRING} geladen werden.
+STR_NEWGRF_ERROR_LOAD_AFTER                                     :{STRING} muss nach {STRING} geladen werden.
+STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE                          :der GRF-Datei, die es übersetzen soll,
 
 STR_NEWGRF_ADD                                                  :{BLACK}Hinzufügen
-STR_NEWGRF_ADD_TIP                                              :{BLACK}Füge eine neue NewGRF Datei zu Liste hinzu
+STR_NEWGRF_ADD_TIP                                              :{BLACK}Eine neue NewGRF-Datei zur Liste hinzufügen
 STR_NEWGRF_REMOVE                                               :{BLACK}Entfernen
-STR_NEWGRF_REMOVE_TIP                                           :{BLACK}Entferne die ausgewählte NewGRF Datei von der Liste
+STR_NEWGRF_REMOVE_TIP                                           :{BLACK}Die ausgewählte NewGRF-Datei von der Liste entfernen
 STR_NEWGRF_MOVEUP                                               :{BLACK}Nach oben
-STR_NEWGRF_MOVEUP_TIP                                           :{BLACK}Schiebe die ausgewählte NewGRF Datei in der Liste nach oben
+STR_NEWGRF_MOVEUP_TIP                                           :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach oben verschieben
 STR_NEWGRF_MOVEDOWN                                             :{BLACK}Nach unten
-STR_NEWGRF_MOVEDOWN_TIP                                         :{BLACK}Schiebe die ausgewählte NewGRF Datei in der Liste nach unten
-STR_NEWGRF_FILE_TIP                                             :{BLACK}Eine Liste der installierten NewGRF Dateien. Wähle eine Datei und verändere deren Parameter
-STR_NEWGRF_PARAMETER                                            :{BLACK}Parameter: {SILVER}{STRING}
-STR_NEWGRF_PARAMETER_QUERY                                      :{BLACK}Schreibe neue NewGRF Parameter
+STR_NEWGRF_MOVEDOWN_TIP                                         :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach unten verschieben
+STR_NEWGRF_FILE_TIP                                             :{BLACK}Eine Liste der installierten NewGRF-Dateien. Zum Ändern der Einstellungen Datei auswählen
+STR_NEWGRF_PARAMETER                                            :{BLACK}Einstellung: {SILVER}{STRING}
+STR_NEWGRF_PARAMETER_QUERY                                      :{BLACK}Neue NewGRF-Einstellungen abspeichern
 STR_NEWGRF_NO_INFO                                              :{BLACK}Keine Informationen verfügbar
 
-STR_NEWGRF_ADD_CAPTION                                          :{WHITE}Verfügbare NewGRF Dateien
+STR_NEWGRF_ADD_CAPTION                                          :{WHITE}Verfügbare NewGRF-Dateien
 STR_NEWGRF_ADD_FILE                                             :{BLACK}Zur Auswahl hinzufügen
-STR_NEWGRF_ADD_FILE_TIP                                         :{BLACK}Füge die ausgewählte NewGRF Datei zu deiner Konfiguration hinzu
-STR_NEWGRF_RESCAN_FILES                                         :{BLACK}Aktualisiere Dateiliste
-STR_NEWGRF_RESCAN_FILES_TIP                                     :{BLACK}Aktualisiere die Liste der verfügbaren NewGRF Dateien
-STR_NEWGRF_DUPLICATE_GRFID                                      :{WHITE}Kann die Datei nicht hinzufügen: doppelte GRF ID
+STR_NEWGRF_ADD_FILE_TIP                                         :{BLACK}Ausgewählte NewGRF-Datei zur Konfiguration hinzufügen
+STR_NEWGRF_RESCAN_FILES                                         :{BLACK}Dateiliste aktualisieren
+STR_NEWGRF_RESCAN_FILES_TIP                                     :{BLACK}Liste der verfügbaren NewGRF-Dateien aktualisieren
+STR_NEWGRF_DUPLICATE_GRFID                                      :{WHITE}Datei kann nicht hinzugefügt werden: GRF-ID bereits vergeben
 
 STR_NEWGRF_NOT_FOUND                                            :{RED}Zugehörige Datei nicht gefunden
-STR_NEWGRF_DISABLED                                             :{RED}Ausgeschaltet
+STR_NEWGRF_DISABLED                                             :{RED}Deaktiviert
 STR_NEWGRF_COMPATIBLE_LOADED                                    :{ORANGE}Passende Datei nicht gefunden (kompatible GRF geladen)
 
 STR_NEWGRF_COMPATIBLE_LOAD_WARNING                              :{WHITE}Kompatible GRF(s) für fehlende Dateien geladen
@@ -3117,53 +3105,53 @@
 STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Flugzeug{P "" e}
 STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Schiff{P "" e}
 
-STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Zeige alle Züge, die diesen Bahnhof anfahren
-STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Zeige alle Fahrzeuge, die diese Station anfahren
-STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Zeige alle Flugzeuge, die diesen Flughafen anfliegen
-STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Zeige alle Schiffe, die diesen Hafen ansteuern
+STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Alle Züge, die diesen Bahnhof anfahren, anzeigen
+STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Alle Fahrzeuge, die diese Station anfahren, anzeigen
+STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Alle Flugzeuge, die diesen Flughafen anfliegen, anzeigen
+STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Alle Schiffe, die diesen Hafen ansteuern, anzeigen
 
 STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Gemeinsamer Fahrplan von {COMMA} Fahrzeug{P "" en}
-STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Zeige alle Fahrzeuge mit demselben Fahrplan
+STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Alle Fahrzeuge mit demselben Fahrplan anzeigen
 
 ### depot strings
-STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Möchtest du alle Fahrzeuge in diesem Depot verkaufen?
-STR_DEPOT_WRONG_DEPOT_TYPE                                      :Falsche Depotart
-
-STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Verkaufe alle Züge im Depot
-STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Verkaufe alle Fahrzeuge im Depot
-STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Verkaufe alle Schiffe in der Werft
-STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}Verkaufe alle Flugzeuge im Hangar
+STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Sollen alle Fahrzeuge in diesem Depot verkauft werden?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Falsche Art von Depot
 
-STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Zeige eine Liste mit allen Zügen, die dieses Depot anfahren
-STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Zeige eine Liste mit allen Fahrzeugen, die dieses Depot anfahren
-STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Zeige eine Liste mit allen Schiffen, die diese Werft anfahren
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Zeige alle Flugzeuge mit irgendeinem Hangar dieses Flughafens in ihrem Flugplan
+STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Alle Züge im Depot verkaufen
+STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Alle Fahrzeuge im Depot verkaufen
+STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Alle Schiffe in der Werft verkaufen
+STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}Alle Flugzeuge im Hangar verkaufen
 
-STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Ersetze alle Züge im Depot automatisch
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Ersetze alle Fahrzeuge im Depot automatisch
-STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Ersetze alle Schiffe in der Werft automatisch
-STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Ersetze alle Flugzeuge im Hangar automatisch
+STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Züge, die dieses Depot anfahren, auflisten
+STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Fahrzeuge, die dieses Depot anfahren, auflisten
+STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Schiffe, die diese Werft anfahren, auflisten
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Flugzeuge, die diesen Flughafen anfliegen, auflisten
+
+STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Alle Züge im Depot automatisch ersetzen
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Alle Fahrzeuge im Depot automatisch ersetzen
+STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Alle Schiffe in der Werft automatisch ersetzen
+STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Alle Flugzeuge im Hangar automatisch ersetzen
 
 STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} {P Zug Züge}
 STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} Fahrzeug{P "" e}
 STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA} Schiff{P "" e}
 STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA} Flugzeug
 
-STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Ersetze {STRING}
+STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}{STRING} ersetzen
 STR_REPLACE_VEHICLES_START                                      :{BLACK}Fahrzeugersetzung aktivieren
 STR_REPLACE_VEHICLES_STOP                                       :{BLACK}Fahrzeugersetzung deaktivieren
 STR_NOT_REPLACING                                               :{BLACK}Keine Ersetzung
 STR_NOT_REPLACING_VEHICLE_SELECTED                              :{BLACK}Kein Fahrzeug gewählt
-STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Wähle das zu ersetzende Fahrzeug
-STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Wähle den Fahrzeugtyp, der anstelle des links gewählten Fahrzeugs verwendet werden soll
-STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite nicht ersetzt werden soll
-STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite durch das auf der rechten Seite gewählte ersetzt werden soll
-STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Wähle einen Gleistyp für den Loks ersetzt werden sollen
-STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Hier wird angezeigt, gegen welches Fahrzeug das auf der linken Seite gewählte ersetzt wird
-STR_REPLACE_HELP                                                :{BLACK}Dieses Feature ermöglicht es, einen Fahrzeugtyp auszuwählen und ihn durch einen anderen ersetzen zu lassen. Dies geschieht automatisch, wenn das Fahrzeug regulär das Depot besucht.
+STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Zu ersetzenden Loktyp auswählen
+STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Loktyp auswählen, der anstelle des links gewählten Loktyps verwendet werden soll
+STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Klick zum Abbrechen der Ersetzung des Loktyps auf der linken Seite
+STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Klick zum Ersetzen des Loktyps auf der linken Seite mit dem auf der rechten Seite
+STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Schienentyp auswählen, für den Loks ersetzt werden sollen
+STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Hier wird angezeigt, gegen welche Lok die auf der linken Seite gewählte ersetzt wird
+STR_REPLACE_HELP                                                :{BLACK}Diese Funktion ermöglicht es, einen Loktyp durch einen anderen ersetzen zu lassen, sobald ein Zug des ursprünglichen Typs das Depot besucht.
 STR_REPLACE_REMOVE_WAGON                                        :{BLACK}Waggon-Entfernung: {ORANGE}{SKIP}{STRING}
-STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Zwinge das automatische Ersetzen die Länge eines Zuges beizubehalten, indem (vorne beginnend) Waggons entfernt werden, falls das Ersetzen der Lokomotive den Zug verlängern würde.
-STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Ersetze: {ORANGE}{SKIP}{SKIP}{STRING}
+STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Ursprüngliche Länge des Zugs beibehalten, indem (vorne beginnend) Waggons entfernt werden, falls das Ersetzen der Lokomotive den Zug verlängern würde.
+STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Ersetzen: {ORANGE}{SKIP}{SKIP}{STRING}
 STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} EXPERIMENTELLE FUNKTION {}Umschalter für Lok- oder Waggonersetzung{}Waggons werden nur ersetzt, wenn der neue Waggon den selben Warentyp transportieren kann wie der alte. Dies wird beim Ersetzen eines jeden Waggons einzeln geprüft.
 STR_RAIL_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Fahrzeug nicht verfügbar
 STR_ROAD_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Fahrzeug nicht verfügbar
@@ -3173,23 +3161,23 @@
 STR_ENGINES                                                     :Loks
 STR_WAGONS                                                      :Waggons
 
-STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Hier klicken um alle Züge im Depot anzuhalten
-STR_MASS_STOP_DEPOT_ROADVEH_TIP                                 :{BLACK}Hier klicken um alle Fahrzeuge im Depot anzuhalten
-STR_MASS_STOP_DEPOT_SHIP_TIP                                    :{BLACK}Hier klicken um alle Schiffe in der Werft anzuhalten
-STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Hier klicken um alle Flugzeuge im Hangar anzuhalten
+STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Alle Züge im Depot anhalten
+STR_MASS_STOP_DEPOT_ROADVEH_TIP                                 :{BLACK}Alle Fahrzeuge im Depot anhalten
+STR_MASS_STOP_DEPOT_SHIP_TIP                                    :{BLACK}Alle Schiffe in der Werft anhalten
+STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Alle Flugzeuge im Hangar anhalten
 
-STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Hier klicken um alle Züge im Depot zu starten
-STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Hier klicken um alle Fahrzeuge im Depot zu starten
-STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Hier klicken um alle Schiffe in der Werft zu starten
-STR_MASS_START_HANGAR_TIP                                       :{BLACK}Hier klicken um alle Flugzeuge im Hangar zu starten
+STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Alle Züge im Depot losschicken
+STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Alle Fahrzeuge im Depot losschicken
+STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Alle Schiffe in der Werft losschicken
+STR_MASS_START_HANGAR_TIP                                       :{BLACK}Alle Flugzeuge im Hangar losschicken
 
-STR_MASS_STOP_LIST_TIP                                          :{BLACK}Hier klicken um alle Fahrzeuge in der Liste anzuhalten
-STR_MASS_START_LIST_TIP                                         :{BLACK}Hier klicken um alle Fahrzeuge in der Liste zu starten
+STR_MASS_STOP_LIST_TIP                                          :{BLACK}Alle Fahrzeuge in der Liste anhalten
+STR_MASS_START_LIST_TIP                                         :{BLACK}Alle Fahrzeuge in der Liste losschicken
 
 STR_SHORT_DATE                                                  :{WHITE}{DATE_TINY}
-STR_SIGN_LIST_CAPTION                                           :{WHITE}Schilderliste - {COMMA} Schild{P "" er}
+STR_SIGN_LIST_CAPTION                                           :{WHITE}Schilderliste ({COMMA} Schild{P "" er})
 
-STR_ORDER_REFIT_FAILED                                          :{WHITE}{STRING} {COMMA} wurde wegen Problemen beim Umrüsten angehalten
+STR_ORDER_REFIT_FAILED                                          :{WHITE}{STRING} {COMMA} wurde aufgrund von Problemen beim Umrüsten angehalten
 
 ############ Lists rail types
 
@@ -3205,7 +3193,7 @@
 STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{WEIGHT_S}
 STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Geschwindigk.: {GOLD}{VELOCITY}{BLACK}   Leistung: {GOLD}{POWER}
 STR_PURCHASE_INFO_SPEED                                         :{BLACK}Geschwindigkeit: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Betriebskosten: {GOLD}{CURRENCY}/Jahr
+STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Betriebskosten: {GOLD}{CURRENCY} pro Jahr
 STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Kapazität: {GOLD}{CARGO} {STRING}
 STR_PURCHASE_INFO_DESIGNED_LIFE                                 :{BLACK}Entwurf: {GOLD}{NUM}{BLACK} Lebensdauer: {GOLD}{COMMA} Jahre
 STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA}%
@@ -3229,7 +3217,7 @@
 STR_RANDOM_SEED_HELP                                            :{BLACK}Gib einen Zufallsstartwert ein
 STR_LAND_GENERATOR                                              :{BLACK}Landgenerator:
 STR_TREE_PLACER                                                 :{BLACK}Baumalgorithmus
-STR_HEIGHTMAP_ROTATION                                          :{BLACK}Kartendrehung:
+STR_HEIGHTMAP_ROTATION                                          :{BLACK}Reliefkarte drehen:
 STR_TERRAIN_TYPE                                                :{BLACK}Landschaftstyp:
 STR_QUANTITY_OF_SEA_LAKES                                       :{BLACK}Gewässermenge:
 STR_SMOOTHNESS                                                  :{BLACK}Weichheit:
@@ -3238,43 +3226,43 @@
 STR_NUMBER_OF_TOWNS                                             :{BLACK}Städteanzahl:
 STR_NUMBER_OF_INDUSTRIES                                        :{BLACK}Industriedichte:
 STR_GENERATE_DATE                                               :{BLACK}{DATE_LONG}
-STR_SNOW_LINE_UP                                                :{BLACK}Höhenstufe der Schneegrenze um eins erhöhen
-STR_SNOW_LINE_DOWN                                              :{BLACK}Höhenstufe der Schneegrenze um eins reduzieren
-STR_SNOW_LINE_QUERY_CAPT                                        :{WHITE}Ändere die Höhe der Schneegrenze
-STR_START_DATE_QUERY_CAPT                                       :{WHITE}Ändere Startjahr
+STR_SNOW_LINE_UP                                                :{BLACK}Schneegrenze um eine Stufe erhöhen
+STR_SNOW_LINE_DOWN                                              :{BLACK}Schneegrenze um eine Stufe senken
+STR_SNOW_LINE_QUERY_CAPT                                        :{WHITE}Höhe der Schneegrenze ändern
+STR_START_DATE_QUERY_CAPT                                       :{WHITE}Startjahr ändern
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Skalierungswarnung
-STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Zu starke Skalierung der Karte ist nicht empfohlen. Trotzdem Generierung fortsetzen?
+STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Zu starke Skalierung des Spielfeldes wird nicht empfohlen. Generierung dennoch fortsetzen?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Städtebauwarnung
-STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Der Stadtaufbau "keine weiteren Straßen" ist nicht empfohlen. Mit der Generierung fortfahren?
+STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Der Stadtaufbau "keine weiteren Straßen" wird nicht empfohlen. Mit der Generierung fortfahren?
 STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Reliefkartenname:
-STR_HEIGHTMAP_SIZE                                              :{BLACK}Größe: {ORANGE}{NUM} x {NUM}
-STR_GENERATION_WORLD                                            :{WHITE}Generiere Welt...
+STR_HEIGHTMAP_SIZE                                              :{BLACK}Größe: {ORANGE}{NUM} × {NUM}
+STR_GENERATION_WORLD                                            :{WHITE}Spielfeld wird generiert...
 STR_GENERATION_ABORT                                            :{BLACK}Abbrechen
-STR_GENERATION_ABORT_CAPTION                                    :{WHITE}Weltgenerierung abbrechen
-STR_GENERATION_ABORT_MESSAGE                                    :{YELLOW}Soll die Weltgenerierung wirklich abgebrochen werden?
+STR_GENERATION_ABORT_CAPTION                                    :{WHITE}Spielfeldgenerierung abbrechen
+STR_GENERATION_ABORT_MESSAGE                                    :{YELLOW}Soll die Spielfeldgenerierung wirklich abgebrochen werden?
 STR_PROGRESS                                                    :{WHITE}{NUM}% abgeschlossen
 STR_GENERATION_PROGRESS                                         :{BLACK}{NUM} / {NUM}
-STR_WORLD_GENERATION                                            :{BLACK}Welterstellung
+STR_WORLD_GENERATION                                            :{BLACK}Spielfeldgenerierung
 STR_TREE_GENERATION                                             :{BLACK}Baumerzeugung
-STR_UNMOVABLE_GENERATION                                        :{BLACK}Erzeuge unbewegbare Objekte
-STR_CLEARING_TILES                                              :{BLACK}Erzeuge leere, felsige Landschaft
-STR_SETTINGUP_GAME                                              :{BLACK}Bereite Spiel vor
-STR_PREPARING_TILELOOP                                          :{BLACK}Belebe Welt
-STR_PREPARING_GAME                                              :{BLACK}Bereite Spiel vor
-STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Diese Aktion änderte den Schwierigkeitsgrad zu individuell
+STR_UNMOVABLE_GENERATION                                        :{BLACK}Unbewegliche Objekte werden erzeugt
+STR_CLEARING_TILES                                              :{BLACK}Leere, felsige Landschaft wird erzeugt
+STR_SETTINGUP_GAME                                              :{BLACK}Spiel wird vorbereitet
+STR_PREPARING_TILELOOP                                          :{BLACK}Spielfeld wird belebt
+STR_PREPARING_GAME                                              :{BLACK}Spiel wird vorbereitet
+STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Hierdurch wurde der Schwierigkeitsgrad auf "benutzerdefiniert" gestellt.
 STR_SE_FLAT_WORLD                                               :{WHITE}Flache Landschaft
-STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Erzeuge flache Landschaft
+STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Flache Landschaft erzeugen
 STR_SE_RANDOM_LAND                                              :{WHITE}Zufällige Landschaft
-STR_SE_NEW_WORLD                                                :{BLACK}Erzeuge neues Szenario
+STR_SE_NEW_WORLD                                                :{BLACK}Neues Szenario erzeugen
 STR_SE_CAPTION                                                  :{WHITE}Szenariotyp
-STR_FLAT_WORLD_HEIGHT_DOWN                                      :{BLACK}Höhenstufe des flachen Landes um eins reduzieren
-STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Höhenstufe das flachen Landes um eins erhöhen
-STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Ändere die Höhenstufe des flachen Landes
+STR_FLAT_WORLD_HEIGHT_DOWN                                      :{BLACK}Flachland um eine Stufe senken
+STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Flachland um eine Stufe erhöhen
+STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Flachlandhöhe ändern
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Höhe des Flachlands:
 STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
-STR_SMALLMAP_CENTER                                             :{BLACK}Zentriere Zusatzansicht auf akutelle Position
+STR_SMALLMAP_CENTER                                             :{BLACK}Zusatzansicht zur akutellen Position scrollen
 
 ########### String for new airports
 STR_SMALL_AIRPORT                                               :{BLACK}klein
@@ -3295,9 +3283,9 @@
 ############ Tooltip measurment
 
 STR_MEASURE_LENGTH                                              :{BLACK}Länge: {NUM}
-STR_MEASURE_AREA                                                :{BLACK}Gebiet: {NUM} x {NUM}
+STR_MEASURE_AREA                                                :{BLACK}Gebiet: {NUM} × {NUM}
 STR_MEASURE_LENGTH_HEIGHTDIFF                                   :{BLACK}Länge: {NUM}{}Höhenunterschied: {NUM} m
-STR_MEASURE_AREA_HEIGHTDIFF                                     :{BLACK}Gebiet: {NUM} x {NUM}{}Höhenunterschied: {NUM} m
+STR_MEASURE_AREA_HEIGHTDIFF                                     :{BLACK}Gebiet: {NUM} × {NUM}{}Höhenunterschied: {NUM} m
 
 ############ Date formatting
 STR_DATE_TINY                                                   :{STRING}-{STRING}-{NUM}
@@ -3306,19 +3294,19 @@
 
 ########
 
-STR_FEEDER_CARGO_VALUE                                          :{BLACK}Überweise Geld: {LTBLUE}{CURRENCY}
+STR_FEEDER_CARGO_VALUE                                          :{BLACK}Transfer-Kredit: {LTBLUE}{CURRENCY}
 STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD                            :{WHITE}...diese Straße ist in kommunaler Trägerschaft
 STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...Straße verläuft in die falsche Richtung
 
 STR_TRANSPARENCY_TOOLB                                          :{WHITE}Transparenzoptionen
-STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}Verändere die Transparenz für Stationsschilder
-STR_TRANSPARENT_TREES_DESC                                      :{BLACK}Verändere die Transparenz für Bäume
-STR_TRANSPARENT_HOUSES_DESC                                     :{BLACK}Verändere die Transparenz für Häuser
-STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Verändere die Transparenz für Industrien
-STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Verändere die Transparenz für Gebäude wie Bahnhöfe, Depots, Wegpunkte und Oberleitung
-STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Verändere die Transparenz für Brücken
-STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Verändere die Transparenz für Bauten wie Leuchttürme und Antennen, evtl. in der Zukunft auch für Sehenswürdigkeiten
-STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Transparenz für Ladestandsanzeige umschalten
+STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}Transparenz für Stationsschilder einstellen
+STR_TRANSPARENT_TREES_DESC                                      :{BLACK}Transparenz für Bäume einstellen
+STR_TRANSPARENT_HOUSES_DESC                                     :{BLACK}Transparenz für Häuser einstellen
+STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Transparenz für Industrien einstellen
+STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Transparenz für Gebäude wie Bahnhöfe, Depots, Wegpunkte und Oberleitung einstellen
+STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Transparenz für Brücken einstellen
+STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Transparenz für Bauten wie Leuchttürme und Antennen, evtl. in der Zukunft auch für Sehenswürdigkeiten, einstellen
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Transparenz für Ladestandsanzeige einstellen
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3339,33 +3327,28 @@
 STR_GROUP_DEFAULT_SHIPS                                         :Ungruppierte Schiffe
 STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ungruppierte Flugzeuge
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
-STR_GROUP_ADD_SHARED_VEHICLE                                    :Gemeinsame Fahrzeuge hinzufügen
-STR_GROUP_REMOVE_ALL_VEHICLES                                   :Entferne alle Fahrzeuge
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Gemeinsam genutzte Fahrzeuge hinzufügen
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Alle Fahrzeuge entfernen
 
 STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Z{P ug üge}
 STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Fahrzeug{P "" e}
 STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Schiff{P "" e}
 STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Flugzeug{P "" e}
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}Gruppe umbenennen
-STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Fahrzeuge ersetzen von "{GROUP}"
-
-STR_GROUP_CAN_T_CREATE                                          :{WHITE}Kann Gruppe nicht erstellen...
-STR_GROUP_CAN_T_DELETE                                          :{WHITE}Kann diese Gruppe nicht löschen...
-STR_GROUP_CAN_T_RENAME                                          :{WHITE}Kann Gruppe nicht umbenennen...
-STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Kann nicht alle Fahrzeuge dieser Gruppe entfernen...
-STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Kann das Fahrzeug nicht zu dieser Gruppe hinzufügen...
-STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Die gemeinsamen Fahrzeuge können nicht zur Gruppe hinzugefügt werden...
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Fahrzeuge in "{GROUP}" ersetzen
 
-STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Gruppen - Klicke auf eine Gruppe für eine Liste aller Fahrzeuge der Gruppe
-STR_GROUP_CREATE_TIP                                            :{BLACK}Klicken um eine Gruppe zu erstellen
-STR_GROUP_DELETE_TIP                                            :{BLACK}Die ausgewählte Gruppe löschen
-STR_GROUP_RENAME_TIP                                            :{BLACK}Die ausgewählte Gruppe umbenennen
-STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Hier klicken um diese Gruppe aus der automatischen Fahrzeugersetzung zu nehmen
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Gruppe kann nicht erstellt werden...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Gruppe kann nicht gelöscht werden...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Gruppe kann nicht umbenannt werden...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Entfernen aller Fahrzeuge dieser Gruppe nicht möglich...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Fahrzeug kann nicht zu dieser Gruppe hinzugefügt werden...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Gemeinsam genutztes Fahrzeug kann nicht zur Gruppe hinzugefügt werden...
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit dieses Jahr: {GREEN}{CURRENCY} {BLACK}(letztes Jahr: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit dieses Jahr: {RED}{CURRENCY} {BLACK}(letztes Jahr: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit dieses Jahr: {GREEN}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit dieses Jahr: {RED}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Gruppen - Klick auf eine Gruppe zeigt Liste aller Fahrzeuge der Gruppe an
+STR_GROUP_CREATE_TIP                                            :{BLACK}Neue Gruppe erstellen
+STR_GROUP_DELETE_TIP                                            :{BLACK}Ausgewählte Gruppe löschen
+STR_GROUP_RENAME_TIP                                            :{BLACK}Ausgewählte Gruppe umbenennen
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Diese Gruppe von der automatischen Fahrzeugersetzung ausschließen
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
@@ -3374,15 +3357,15 @@
 STR_SIGN_NAME                                                   :{SIGN}
 STR_VEHICLE_NAME                                                :{VEHICLE}
 
-STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Name muss eindeutig sein
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Name bereits vergeben
 
 #### Improved sign GUI
-STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Gehe zum nächsten Schild
-STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Gehe zum vorherigen Schild
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Zum nächsten Schild wechseln
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Zum vorherigen Schild wechseln
 
 ########
 
 STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finanzieren
-STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Erforsche
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospektieren
 STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Bauen
-STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Wähle die gewünschte Industrie aus der Liste
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Gewünschte Industrie aus der Liste auswählen
--- a/src/lang/hungarian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/hungarian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Túl közel van a térkép széléhez
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nincs elég pénzed - {CURRENCY} kellene
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Sima talaj szükséges
 STR_0008_WAITING                                                :{BLACK}Várakozik: {WHITE}{STRING}
@@ -1329,7 +1328,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... a bóját használják!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordináták: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordináták: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nem lehet eltávolítani az állomás részét...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Itt nem lehet átalakítani a sínt...
@@ -1440,34 +1439,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Védd le a játékodat jelszóval ha nem akarod hogy mások csatlakozzanak
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Válassz egy térképet:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Melyik terképen akarsz játszani?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximum hány játékos lehet:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Válaszd ki hány játékos kapcsolódhat maximum. Nem szükséges pont ennyi embernek éppen kapcsolódva lennie.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Helyi hálózat
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Hálózat / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (reklámoz)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 játékos
-STR_NETWORK_1_PLAYERS                                           :1 játékos
-STR_NETWORK_2_PLAYERS                                           :2 játékos
-STR_NETWORK_3_PLAYERS                                           :3 játékos
-STR_NETWORK_4_PLAYERS                                           :4 játékos
-STR_NETWORK_5_PLAYERS                                           :5 játékos
-STR_NETWORK_6_PLAYERS                                           :6 játékos
-STR_NETWORK_7_PLAYERS                                           :7 játékos
-STR_NETWORK_8_PLAYERS                                           :8 játékos
-STR_NETWORK_9_PLAYERS                                           :9 játékos
-STR_NETWORK_10_PLAYERS                                          :10 játékos
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} kliens
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximum hány játékos lehet:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Válaszd ki hány játékos kapcsolódhat maximum. Nem szükséges pont ennyi embernek éppen kapcsolódva lennie.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} vállalat
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max cégszám:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}A cégek maximális száma
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} megfigyelő
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max megfigyelő:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}A megfigyelők maximális száma
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Beszélt nyelv:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}A többi játékos megtudhatja milyen nyelven beszélnek a szerveren.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Játék elindítása
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Új hálózati játék kezdése véletlen térképpel vagy misszióval
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Játék betöltése
@@ -3464,11 +3452,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Kijelölt csoport átnevezése
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Csoport automata csere alóli mentességének beállításához kattints ide
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Idei profit: {GREEN}{CURRENCY} {BLACK}(tavalyi: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Idei profit: {RED}{CURRENCY} {BLACK}(tavalyi: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Idei profit: {GREEN}{CURRENCY} {BLACK}(tavalyi: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Idei profit: {RED}{CURRENCY} {BLACK}(tavalyi: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/icelandic.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/icelandic.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -10,7 +10,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Of nálægt brún kortsins
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Ekki nógu mikið reiðufé - þarf {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Sléttlendi nauðsynlegt
 STR_0008_WAITING                                                :{BLACK}Bíður: {WHITE}{STRING}
@@ -1213,7 +1212,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... bauja í notkun!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Hnit: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Get ekki fjarlægt hluta af stöð...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Get ekki breytt lestarteini...
@@ -1326,32 +1324,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Hvaða kort viltu spila?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Hámarksfjöldi notenda:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Veldu hámarksfjölda notenda. Ekki þarf að fylla öll pláss
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Staðarnet
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Staðarnet / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (auglýsa)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 leikmenn
-STR_NETWORK_1_PLAYERS                                           :1 leikmaður
-STR_NETWORK_2_PLAYERS                                           :2 leikmenn
-STR_NETWORK_3_PLAYERS                                           :3 leikmenn
-STR_NETWORK_4_PLAYERS                                           :4 leikmenn
-STR_NETWORK_5_PLAYERS                                           :5 leikmenn
-STR_NETWORK_6_PLAYERS                                           :6 leikmenn
-STR_NETWORK_7_PLAYERS                                           :7 leikmenn
-STR_NETWORK_8_PLAYERS                                           :8 leikmenn
-STR_NETWORK_9_PLAYERS                                           :9 leikmenn
-STR_NETWORK_10_PLAYERS                                          :10 leikmenn
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Hámarksfjöldi fyrirtækja:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Takmarka fjölda fyrirtækja á vefþjóni
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Hámarksfjöldi áhorfanda:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Takmarka fjölda áhorfanda á vefþjóninum
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Tungumál:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Aðrir notendur munu vita hvaða tungumál er talað á þjóninum
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Hefja leik
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Hefja nýjan netleik í sérvöldu korti eða landslagi af handahófi
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Hlaða leik
@@ -1554,7 +1536,6 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Lestarteinn með venjulegum ljósum
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Lestarteinn með forljósum
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Lestarteinn með útljósum
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Lestarteinn með samljósum
 
 
 
--- a/src/lang/italian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/italian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -1,6 +1,6 @@
 ##name Italian
 ##ownname Italiano
-##isocode it
+##isocode it_IT
 ##plural 0
 ##case ms mp fs fp
 ##gender m f
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Troppo vicino al bordo della mappa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Denaro insufficiente - servono {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Richiesto terreno pianeggiante
 STR_0008_WAITING                                                :{BLACK}In attesa: {WHITE}{STRING}
@@ -1265,7 +1264,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...la boa è in uso!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordinate: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordinate: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Impossibile rimuovere parte della stazione...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Impossibile convertire il tipo di rotaie qui...
@@ -1376,34 +1375,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Protegge la partita con una password in modo che non sia accessibile pubblicamente
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Seleziona una mappa:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Con quale mappa vuoi giocare?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max client:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Imposta il numero massimo di client. Non tutti i posti dovranno essere occupati
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (pubblicizza)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 giocatori
-STR_NETWORK_1_PLAYERS                                           :1 giocatore
-STR_NETWORK_2_PLAYERS                                           :2 giocatori
-STR_NETWORK_3_PLAYERS                                           :3 giocatori
-STR_NETWORK_4_PLAYERS                                           :4 giocatori
-STR_NETWORK_5_PLAYERS                                           :5 giocatori
-STR_NETWORK_6_PLAYERS                                           :6 giocatori
-STR_NETWORK_7_PLAYERS                                           :7 giocatori
-STR_NETWORK_8_PLAYERS                                           :8 giocatori
-STR_NETWORK_9_PLAYERS                                           :9 giocatori
-STR_NETWORK_10_PLAYERS                                          :10 giocatori
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} client
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max client:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Imposta il numero massimo di client. Non tutti i posti dovranno essere occupati
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compagni{P a e}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max compagnie:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limita il server a un certo numero di compagnie
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} spettator{P e i}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max spettatori:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limita il server a un certo numero di spettatori
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Lingua parlata:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Fa spaere agli altri giocatori quale lingua è parlata sul server
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Avvia partita
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Inizia una nuova partita in rete con una mappa casuale o uno scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Carica partita
@@ -3363,11 +3351,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Rinomina il gruppo selezionato
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Fare clic per proteggere questo gruppo dal rimpiazzo automatico
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profitto quest'anno: {GREEN}{CURRENCY} {BLACK}(anno scorso: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profitto quest'anno: {RED}{CURRENCY} {BLACK}(anno scorso: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profitto quest'anno: {GREEN}{CURRENCY} {BLACK}(anno scorso: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profitto quest'anno: {RED}{CURRENCY} {BLACK}(anno scorso: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/japanese.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/japanese.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}地図の端に近すぎます
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}資金が足りません。{CURRENCY}がかかります
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}平地が必要です
 STR_0008_WAITING                                                :{BLACK}到着待ち:{WHITE}{STRING}
@@ -1263,7 +1262,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...ブイは使用中です!
 
-STR_LANDINFO_COORDS                                             :{BLACK}座標:{LTBLUE}{NUM}x{NUM}({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}座標:{LTBLUE}{NUM}x{NUM}x{NUM}({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}駅の部分が破壊できません...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}ここに線路の種類が交換できません...
@@ -1374,34 +1373,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}ゲームをパスワードで保護することができます。正しいパスワードを入力しないと、接続できません。
 STR_NETWORK_SELECT_MAP                                          :{BLACK}地図を選択:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}プレイするマップを選択してください
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}最大接続数:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}接続できるコンピュータの最大数を選択します。
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :インターネット
 STR_NETWORK_LAN_INTERNET                                        :LAN/インターネット
 STR_NETWORK_INTERNET_ADVERTISE                                  :インターネット(公開)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0人のプレヤー
-STR_NETWORK_1_PLAYERS                                           :1人のプレヤー
-STR_NETWORK_2_PLAYERS                                           :2人のプレヤー
-STR_NETWORK_3_PLAYERS                                           :3人のプレヤー
-STR_NETWORK_4_PLAYERS                                           :4人のプレヤー
-STR_NETWORK_5_PLAYERS                                           :5人のプレヤー
-STR_NETWORK_6_PLAYERS                                           :6人のプレヤー
-STR_NETWORK_7_PLAYERS                                           :7人のプレヤー
-STR_NETWORK_8_PLAYERS                                           :8人のプレヤー
-STR_NETWORK_9_PLAYERS                                           :9人のプレヤー
-STR_NETWORK_10_PLAYERS                                          :10人のプレヤー
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}クライアント{NUM}人
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}最大接続数:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}接続できるコンピュータの最大数を選択します。
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}会社{NUM}つ
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}最高交通会社数:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}サーバ上の会社上限を指定します
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}観客者{NUM}人
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}最高傍観者人数:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}サーバ上の傍観者上限を指定します
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}言語:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}サーバ上の主の言語を表示します
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}ゲームを開始
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}ランダムな地図もしくはシナリオを用いて新規ネットワークゲームを開始します
 STR_NETWORK_LOAD_GAME                                           :{BLACK}ゲームを開く
@@ -3361,11 +3349,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}選択したグループの名称を変更します
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}このグループ内の車両を自動交換しません
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}今年の収益:{GREEN}{CURRENCY} {BLACK}(昨年:{GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}今年の収益:{RED}{CURRENCY} {BLACK}(昨年:{GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}今年の収益:{GREEN}{CURRENCY} {BLACK}(昨年:{RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}今年の収益:{RED}{CURRENCY} {BLACK}(昨年:{RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/korean.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/korean.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}맵 가장자리와 너무 가깝습니다!
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}재정이 부족합니다 - {CURRENCY} 이(가) 필요합니다
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}평지가 필요합니다!
 STR_0008_WAITING                                                :{BLACK}대기: {WHITE}{STRING}
@@ -1264,7 +1263,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...사용중인 부이입니다!
 
-STR_LANDINFO_COORDS                                             :{BLACK}고도 일치화: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}역의 일부를 제거할 수 없습니다...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}이곳의 철도 타입을 바꿀 수 없습니다...
@@ -1377,32 +1375,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}플레이할 맵을 선택합니다.
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}최대 접속자 수:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}최대 접속자수를 선택합니다. 모든 슬롯이 차있을 필요는 없습니다.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :인터넷
 STR_NETWORK_LAN_INTERNET                                        :LAN / 인터넷
 STR_NETWORK_INTERNET_ADVERTISE                                  :인터넷 (광고 허용)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :허용 안함
-STR_NETWORK_1_PLAYERS                                           :1명
-STR_NETWORK_2_PLAYERS                                           :2명
-STR_NETWORK_3_PLAYERS                                           :3명
-STR_NETWORK_4_PLAYERS                                           :4명
-STR_NETWORK_5_PLAYERS                                           :5명
-STR_NETWORK_6_PLAYERS                                           :6명
-STR_NETWORK_7_PLAYERS                                           :7명
-STR_NETWORK_8_PLAYERS                                           :8명
-STR_NETWORK_9_PLAYERS                                           :9명
-STR_NETWORK_10_PLAYERS                                          :10명
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}최대 회사수:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}서버의 회사의 수를 제한합니다
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}최대 관전자수:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}게임을 관전하는 접속자의 수를 제한합니다
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}대화 언어:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}서버에서 주로 사용하는 언어를 고르십시오.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}서버 열기
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}무작위 맵이나 시나리오로 새로운 네트워크 게임을 시작합니다.
 STR_NETWORK_LOAD_GAME                                           :{BLACK}맵 불러오기
@@ -1630,13 +1612,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :일반 신호등이 설치된 철도
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :PRE 신호등이 설치된 철도
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :출구 신호등이 설치된 철도
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :결합 신호등이 설치된 철도
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :일반 신호등과 PRE신호등이 설치된 철도
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :일반 신호등과 출구신호등이 설치된 철도
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :일반 신호등과 결합신호등이 설치된 철도
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :PRE 신호등과 출구신호등이 설치된 철도
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :PRE 신호등과 결합신호등이 설치된 철도
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :출구 신호등과 결합신호등이 설치된 철도
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}먼저 기차 정거장을 제거해야 합니다
 
 
@@ -3362,10 +3340,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}선택한 그룹 이름 바꾸기
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}전체 자동 교체로부터 이 그룹 보호
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}올해의 수입: {GREEN}{CURRENCY} {BLACK}(작년: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}올해의 수입: {RED}{CURRENCY} {BLACK}(작년: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}올해 수입: {GREEN}{CURRENCY} {BLACK}(작년: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}올해 수입: {RED}{CURRENCY} {BLACK}(작년: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/lithuanian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/lithuanian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Per arti žemėlapio krašto
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Neužtenka lėšų: reikia {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Paviršius turi būti lygus
 STR_0008_WAITING                                                :{BLACK}Laukia: {WHITE}{STRING}
@@ -1245,7 +1244,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...pluduras naudojamas!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinates: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Neimanoma pasalinti stoties dalies...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Neimanoma cia pakeisti begio tipo...
@@ -1358,32 +1356,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kuriame zemelapyje norite zaisti?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maksimalus klientu skaicius:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Pasirinkite maksimalu klientu skaiciu. Nebutinai visos jungtys turi buti uzpildytos
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Vietinis tinklas
 STR_NETWORK_INTERNET                                            :Internetas
 STR_NETWORK_LAN_INTERNET                                        :Vietinis tinklas/ Internetas
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internetas (visiems)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 zaideju
-STR_NETWORK_1_PLAYERS                                           :1 zaidejas
-STR_NETWORK_2_PLAYERS                                           :2 zaidejai
-STR_NETWORK_3_PLAYERS                                           :3 zaidejai
-STR_NETWORK_4_PLAYERS                                           :4 zaidejai
-STR_NETWORK_5_PLAYERS                                           :5 zaidejai
-STR_NETWORK_6_PLAYERS                                           :6 zaidejai
-STR_NETWORK_7_PLAYERS                                           :7 zaidejai
-STR_NETWORK_8_PLAYERS                                           :8 zaidejai
-STR_NETWORK_9_PLAYERS                                           :9 zaidejai
-STR_NETWORK_10_PLAYERS                                          :10 zaideju
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maksimum kompaniju:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Riboti serveri iki tam tikro skaiciaus kompaniju
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maksimum ziurovu:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Riboti serveri iki tam tikro skaiciaus ziurovu
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Kalba:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Kiti zaidejai zinos kokia kalba kalbama serveryje
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Pradeti zaidima
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Predeti nauja zaidima tinkle (atsitiktinis zemelapis ar scenarijus)
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Atverti zaidima
@@ -1586,7 +1568,6 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Gelezinkelio begiai su paprastais sviesoforais
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Gelezinkelio begiai su pre-sviesoforais
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Gelezinkelio begiai su exit-sviesoforais
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Gelezinkelio begiai su combo-sviesoforais
 
 
 
--- a/src/lang/norwegian_bokmal.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}For nært kanten av kartet
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Du har ikke nok penger - du trenger {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flatt land er nødvendig
 STR_0008_WAITING                                                :{BLACK}Venter: {WHITE}{STRING}
@@ -1244,7 +1243,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...bøye er i bruk!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinater: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan ikke fjerne del av stasjonen...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan ikke konvertere jernbanetype her...
@@ -1357,32 +1355,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Hvilket kart vil du spille?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maksimalt antall tillatte klienter
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Velg maksimalt antall klienter. Alle plassene trenger ikke bli tatt.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internett
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internett
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internett (annonser)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spillere
-STR_NETWORK_1_PLAYERS                                           :1 spiller
-STR_NETWORK_2_PLAYERS                                           :2 spillere
-STR_NETWORK_3_PLAYERS                                           :3 spillere
-STR_NETWORK_4_PLAYERS                                           :4 spillere
-STR_NETWORK_5_PLAYERS                                           :5 spillere
-STR_NETWORK_6_PLAYERS                                           :6 spillere
-STR_NETWORK_7_PLAYERS                                           :7 spillere
-STR_NETWORK_8_PLAYERS                                           :8 spillere
-STR_NETWORK_9_PLAYERS                                           :9 spillere
-STR_NETWORK_10_PLAYERS                                          :10 spillere
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. antall firmaer:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Begrens tjeneren til et bestemt antall firmaer
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks antall tilskuere
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Begrens tjeneren til et bestemt antall tilskuere
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Språk snakket på tjeneren:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Andre spillere skal kunne vite hvilket språk man snakker på denne tjeneren.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start spill
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start et nytt nettverksspill fra en tilfeldig bane, eller scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Last spill
@@ -1602,13 +1584,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Jernbanespor med normale signaler
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbanespor med for-signaler
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbanespor med forlat-signaler
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbanespor med kombinerte signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Togbane med normale og pre-signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Togbane med normale og utgangs-signaler
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Togbane med normale og kombinasjons-signaler
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Togbane med pre- og utgangs-signaler
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Togbane med pre- og kombinasjons-signaler
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Togbane med utgangs- og kombinasjons-signaler
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Må fjerne togbanestasjon først
 
 
@@ -3266,10 +3244,6 @@
 STR_GROUP_DELETE_TIP                                            :{BLACK}Fjern den valgte gruppen
 STR_GROUP_RENAME_TIP                                            :{BLACK}Gi nytt navn på den valgte gruppen
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Overskudd i år: {GREEN}{CURRENCY} {BLACK}(i fjor: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Overskudd i år: {RED}{CURRENCY} {BLACK}(i fjor: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Overskudd i år: {GREEN}{CURRENCY} {BLACK}(i fjor: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Overskudd i år: {RED}{CURRENCY} {BLACK}(i fjor: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/norwegian_nynorsk.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}For nært kanten av kartet
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Du har ikkje nok pengar - du treng {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flatt land er naudsynt
 STR_0008_WAITING                                                :{BLACK}Ventar: {WHITE}{STRING}
@@ -1264,7 +1263,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...bøye er i bruk!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinatar: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan ikkje fjerne del av stasjonen...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan ikkje konvertere jernbanetype her...
@@ -1377,32 +1375,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kva kart vil du spele?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maksimalt antal tillatne klientar
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Vel maksimalt antal klientar. Alle plassane treng ikkje å verte tekne
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internett
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internett
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internett (annonser)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spelarar
-STR_NETWORK_1_PLAYERS                                           :1 spelar
-STR_NETWORK_2_PLAYERS                                           :2 spelarar
-STR_NETWORK_3_PLAYERS                                           :3 spelarar
-STR_NETWORK_4_PLAYERS                                           :4 spelarar
-STR_NETWORK_5_PLAYERS                                           :5 spelarar
-STR_NETWORK_6_PLAYERS                                           :6 spelarar
-STR_NETWORK_7_PLAYERS                                           :7 spelarar
-STR_NETWORK_8_PLAYERS                                           :8 spelarar
-STR_NETWORK_9_PLAYERS                                           :9 spelarar
-STR_NETWORK_10_PLAYERS                                          :10 spelarar
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. antal firma:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Begrens tenaren til eit visst antal firma
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks antal tilskodarar
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Begrens tenaren til eit visst antal tilskodarar
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Språk som vert tala på tenaren:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Andre spelarar skal vete kva språk ein talar på denne tenaren
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Start spel
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Start eit nytt nettverksspel frå ein tilfeldig bane, eller eit scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Last spel
@@ -1630,13 +1612,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Jernbanespor med normale signal
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbanespor med for-signal
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbanespor med ut-signal
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbanespor med samansette signal
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Jernbanespor med normale- og pre-signal
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Jernbanespor med normale- og exit-spor
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Jernbanespor med normale- og blandingssignal
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Jernbanespor med pre- og exit-signal
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Jernbanespor med pre- og blandingssignal
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Jernbanespor med exit- og blandingssignal
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Må fjerne togstasjon først
 
 
@@ -3362,10 +3340,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Gje den valde gruppa nytt namn
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klikk for å beskytte denne gruppa frå å global automatisk erstatning
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/piglatin.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/piglatin.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Ootay oseclay otay edgeway ofway apmay
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Otnay enoughway ashcay - equiresray {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Atflay andlay equiredray
 STR_0008_WAITING                                                :{BLACK}Aitingway: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...uoybay isway inway useway!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Oordinatescay: {LTBLUE}{NUM}xay{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}An'tcay emoveray artpay ofway ationstay...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}An'tcay onvertcay ailtyperay erehay...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ichwhay apmay oday ouyay antway otay ayplay?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Axmay ientsclay:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Oosechay ethay aximummay umbernay ofway ientsclay. Otnay allway otsslay eednay otay ebay illedfay
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LANay
 STR_NETWORK_INTERNET                                            :Internetway
 STR_NETWORK_LAN_INTERNET                                        :LANay / Internetway
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internetway (advertiseway)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 ayersplay
-STR_NETWORK_1_PLAYERS                                           :1 ayerplay
-STR_NETWORK_2_PLAYERS                                           :2 ayersplay
-STR_NETWORK_3_PLAYERS                                           :3 ayersplay
-STR_NETWORK_4_PLAYERS                                           :4 ayersplay
-STR_NETWORK_5_PLAYERS                                           :5 ayersplay
-STR_NETWORK_6_PLAYERS                                           :6 ayersplay
-STR_NETWORK_7_PLAYERS                                           :7 ayersplay
-STR_NETWORK_8_PLAYERS                                           :8 ayersplay
-STR_NETWORK_9_PLAYERS                                           :9 ayersplay
-STR_NETWORK_10_PLAYERS                                          :10 ayersplay
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Axmay ompaniescay:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ompaniescay
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Axmay ectatorsspay:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ectatorsspay
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Anguagelay okenspay:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Otherway ayersplay illway owknay ichwhay anguagelay isway okenspay onway ethay erversay
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Artstay Amegay
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Artstay away ewnay etworknay amegay omfray away andomray apmay, orway enarioscay
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Oadlay Amegay
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Ailwayray acktray ithway ormalnay ignalssay
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ailwayray acktray ithway epray-ignalssay
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ailwayray acktray ithway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ailwayray acktray ithway ombocay-ignalssay
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Ailwayray acktray ithway ormalnay andway epray-ignalssay
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Ailwayray acktray ithway ormalnay andway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Ailwayray acktray ithway ormalnay andway ombocay-ignalssay
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Ailwayray acktray ithway epray- andway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ailwayray acktray ithway epray- andway ombocay-ignalssay
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ailwayray acktray ithway exitway- andway ombocay-ignalssay
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Ustmay emoveray ailwayray ationstay irstfay
 
 
@@ -3361,10 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Enameray ethay electedsay oupgray
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Ickclay otay otectpray isthay oupgray omfray obalglay autoreplaceway
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Ofitpray isthay earyay: {GREEN}{CURRENCY} {BLACK}(astlay earyay: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Ofitpray isthay earyay: {RED}{CURRENCY} {BLACK}(astlay earyay: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Ofitpray isthay earyay: {GREEN}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Ofitpray isthay earyay: {RED}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/polish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/polish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Zbyt blisko krawędzi mapy
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Za mało pieniędzy - wymagane {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Wymagany płaski teren
 STR_0008_WAITING                                                :{BLACK}Czeka: {WHITE}{STRING}
@@ -134,7 +133,7 @@
 STR_QUANTITY_MAIL                                               :{COMMA} pacz{P ka ki ek} poczty
 STR_QUANTITY_OIL                                                :{VOLUME} ropy
 STR_QUANTITY_LIVESTOCK                                          :{COMMA} sztuk{P a i ""} żywca
-STR_QUANTITY_GOODS                                              :{COMMA} towarów
+STR_QUANTITY_GOODS                                              :{COMMA} skrzy{P nia nie ń} towarów
 STR_QUANTITY_GRAIN                                              :{WEIGHT} zboża
 STR_QUANTITY_WOOD                                               :{WEIGHT} drewna
 STR_QUANTITY_IRON_ORE                                           :{WEIGHT} rudy żelaza
@@ -434,13 +433,13 @@
 STR_SORT_BY_PROFIT_THIS_YEAR                                    :Zysk w tym roku
 STR_SORT_BY_AGE                                                 :Wiek
 STR_SORT_BY_RELIABILITY                                         :Niezawodność
-STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Całkowita pojemność typu towaru
+STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Całkowita pojemność typu ładunku
 STR_SORT_BY_MAX_SPEED                                           :Prędkość maks.
 STR_SORT_BY_MODEL                                               :Model
 STR_SORT_BY_VALUE                                               :Wartość
 STR_SORT_BY_FACILITY                                            :Typ stacji
-STR_SORT_BY_WAITING                                             :Wartość czekającego towaru
-STR_SORT_BY_RATING_MAX                                          :Ocena towaru
+STR_SORT_BY_WAITING                                             :Wartość czekającego ładunku
+STR_SORT_BY_RATING_MAX                                          :Ocena ładunku
 STR_ENGINE_SORT_ENGINE_ID                                       :ID pojazdu
 STR_ENGINE_SORT_COST                                            :Cena
 STR_ENGINE_SORT_POWER                                           :Moc
@@ -448,9 +447,9 @@
 STR_ENGINE_SORT_RUNNING_COST                                    :Koszty użytkowania
 STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Moc/Koszty użytkowania
 STR_ENGINE_SORT_CARGO_CAPACITY                                  :Pojemność
-STR_NO_WAITING_CARGO                                            :{BLACK}Nie ma żadnego czekającego towaru
+STR_NO_WAITING_CARGO                                            :{BLACK}Nie ma żadnego czekającego ładunku
 STR_SELECT_ALL_FACILITIES                                       :{BLACK}Zaznacz wszystkie typy stacji
-STR_SELECT_ALL_TYPES                                            :{BLACK}Zaznacz wszystkie typy towaru (oraz brak czekającego towaru)
+STR_SELECT_ALL_TYPES                                            :{BLACK}Zaznacz wszystkie typy ładunku (oraz brak czekającego ładunku)
 STR_AVAILABLE_TRAINS                                            :{BLACK}Dostępne Lokomotywy
 STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Dostępne Samochody
 STR_AVAILABLE_SHIPS                                             :{BLACK}Dostępne Statki
@@ -699,7 +698,7 @@
 STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...nie ma więcej miejsca na mapie
 STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Zwiększ rozmiar miasta
 STR_023C_EXPAND                                                 :{BLACK}Rozszerz
-STR_023D_RANDOM_TOWN                                            :{BLACK}Dowolne miasto
+STR_023D_RANDOM_TOWN                                            :{BLACK}Losowe miasto
 STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION                          :{BLACK}Budowanie miasta w losowym miejscu
 STR_023F_INDUSTRY_GENERATION                                    :{WHITE}Tworzenie przedsiębiorstw
 STR_0240_COAL_MINE                                              :{BLACK}{G=f}Kopalnia Węgla
@@ -810,7 +809,7 @@
 STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...dozwolone jedno na miasto
 STR_0288_PLANT_TREES                                            :{BLACK}Posadź drzewa
 STR_0289_PLACE_SIGN                                             :{BLACK}Umieść napis
-STR_028A_RANDOM_TREES                                           :{BLACK}Dowolne drzewa
+STR_028A_RANDOM_TREES                                           :{BLACK}Losowe drzewa
 STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Pokryj krajobraz losowymi drzewami
 STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Umieść kamieniste tereny
 STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Umieść latarnię morską
@@ -1114,13 +1113,17 @@
 STR_CONFIG_PATCHES_REALISTICACCEL                               :{LTBLUE}Realistyczne przyspieszenie pociągów: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FORBID_90_DEG                                :{LTBLUE}Zabroń pociągom i statkom skręcać o 90st: {ORANGE}{STRING} {LTBLUE} (wymaga NPF)
 STR_CONFIG_PATCHES_JOINSTATIONS                                 :{LTBLUE}Połącz stacje budowane jedna obok drugiej: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_FULLLOADANY                                  :{LTBLUE}Opuść stację gdy dowolny towar jest pełny, gdy 'Załadunek': {ORANGE}{STRING}
+STR_CONFIG_PATCHES_FULLLOADANY                                  :{LTBLUE}Opuść stację gdy dowolny ładunek jest pełny, przy 'Załadunku': {ORANGE}{STRING}
 STR_CONFIG_PATCHES_IMPROVEDLOAD                                 :{LTBLUE}Użyj ulepszonego algorytmu załadunku: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GRADUAL_LOADING                              :{LTBLUE}Stopniowy załadunek pojazdów: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_INFLATION                                    :{LTBLUE}Inflacja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Dostarcz ładunek na stację tylko jeśli jest zapotrzebowanie: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Pozwól budować bardzo długie mosty: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Zezwalaj na wysyłanie do zajezdni: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Metoda budowania przedsiębiorstw pierwszego stopnia: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :budowa niedostępna
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :jak inne przedsiębiorstwa
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :przez poszukiwanie
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Pozwól na wiele podobnych przedsiębiorstw w mieście: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Przedsiębiorstwa jednego typu mogą być bud. obok siebie: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Zawsze pokazuj datę w długim formacie w pasku statusu: {ORANGE}{STRING}
@@ -1324,7 +1327,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Jesteś pewien że chcesz stworzyć losowy krajobraz?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Wiele losowych miast
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryj mapę losowo położonymi miastami
-STR_MANY_RANDOM_INDUSTRIES                                      :Wiele losowych przedsiębiorstw
+STR_MANY_RANDOM_INDUSTRIES                                      :Wiele losowych
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nie można stworzyć przedsiębiorstw...
 
@@ -1346,7 +1349,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boja w użyciu!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Pozycja: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Współrzędne: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nie można usunąć części stacji...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Nie można zmienić typu torów w tym miejscu...
@@ -1392,10 +1395,10 @@
 
 STR_INDUSTRY_TOO_CLOSE                                          :{WHITE}...zbyt blisko innego przedsiębiorstwa
 
-STR_RAIL_REFIT_VEHICLE_TO_CARRY                                 :{BLACK}Przebudowa pociągu do przewozu innego typu towaru
+STR_RAIL_REFIT_VEHICLE_TO_CARRY                                 :{BLACK}Przebudowa pociągu do przewozu innego typu ładunku
 STR_RAIL_REFIT_VEHICLE                                          :{BLACK}Przebudowa pociągu
 STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wybierz jaki ładunek ma przewozić pociąg
-STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Przebuduj pociąg do przewozu zaznaczonego typu towaru
+STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Przebuduj pociąg do przewozu zaznaczonego typu ładunku
 STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}Nie można przebudować pociągu...
 STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Okres między serwisowaniami w procentach: {ORANGE}{STRING}
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Zmiana produkcji
@@ -1457,34 +1460,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Zabezpiecz grę hasłem jeśli nie chcesz, by była publicznie dostępna
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Wybierz mapę:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Na której mapie chcesz grac?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Dopuszczalna ilość klientów:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Ustaw maksymalną liczbę klientów. Nie wszystkie pola muszą być wypełnione.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (publiczny)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 graczy
-STR_NETWORK_1_PLAYERS                                           :1 gracz
-STR_NETWORK_2_PLAYERS                                           :2 graczy
-STR_NETWORK_3_PLAYERS                                           :3 graczy
-STR_NETWORK_4_PLAYERS                                           :4 graczy
-STR_NETWORK_5_PLAYERS                                           :5 graczy
-STR_NETWORK_6_PLAYERS                                           :6 graczy
-STR_NETWORK_7_PLAYERS                                           :7 graczy
-STR_NETWORK_8_PLAYERS                                           :8 graczy
-STR_NETWORK_9_PLAYERS                                           :9 graczy
-STR_NETWORK_10_PLAYERS                                          :10 graczy
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} klient{P "" ów ów}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Dopuszczalna ilość klientów:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Ustaw maksymalną liczbę klientów. Nie wszystkie pola muszą być wypełnione.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} firm{P a y ""}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maksymalna ilość firm:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ogranicz serwer do określonej ilości firm
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} widz{P "" ów ów}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maksymalna ilość widzów:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ogranicz serwer do określonej ilości widzów
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Używany język:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Inni gracze będą poinformowani jaki język jest używany na serwerze
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Rozpocznij grę
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Uruchom nową grę sieciową z losową mapą lub scenariuszem
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Wczytaj Grę
@@ -1713,12 +1705,12 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Tory kolejowe z pre-sygnałami
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Tory kolejowe z exit-sygnałami
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Tory kolejowe z combo-sygnałami
-STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Torry kolejowe z normalnymi i pre-sygnałami
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Tory kolejowe z normalnymi i pre-sygnałami
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Tory kolejowe z normalnymi i exit-sygnałami
 STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Tory kolejowe z normalnymi i combo-sygnałami
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Tory kolejowe z pre- i exit-sygnałami
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tory kolejowe z pre- i combo-sygnałami
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tory kolejowe z exit- i combo-sygnałami
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tory kolejowe z pre i combo-sygnałami
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tory kolejowe z exit i combo-sygnałami
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Należy najpierw usunąć stację kolejową
 
 
@@ -1955,7 +1947,7 @@
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centruj główny widok na stacji
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Pokaż ocenę stacji
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Zmień nazwę stacji
-STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Pokaż listę akceptowanych towarów
+STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Pokaż listę akceptowanych ładunków
 STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Nazwa stacji - kliknij na nazwie aby wycentrować główny widok na stacji
 STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Wybierz wielkość/typ lotniska
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
@@ -2100,13 +2092,17 @@
 ############ range for requires ends
 
 ############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Ładunek oczekujący na przetworzenie:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produkuje: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produkuje: {YELLOW}{STRING}, {STRING}
 ############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Wyprodukowano w ostatnim miesiącu:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% przetransportowano)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centruj główny widok na przedsiębiorstwie
 STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Rozpoczęto budowę nowe{G go j go} {STRING.d} blisko {TOWN}!
-STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Now{G y a e} {STRING} został{G "" a o} posadzon{G y a e} blisko {TOWN}!
+STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Now{G y a e} {STRING} został{G 0 "" a o} posadzon{G 0 y a e} blisko {TOWN}!
 STR_482F_COST                                                   :{BLACK}Koszt: {YELLOW}{CURRENCY}
 STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Nie można tutaj wybudować tego przedsiębiorstwa...
 STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...las może być posadzony tylko powyżej linii śniegu
@@ -2391,7 +2387,7 @@
 STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Nie można kupić firmy...
 STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Stawki za Ładunek
 STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Dni w transporcie
-STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Oplata za przewóz 10 jednostek (lub 10,000 litrów) towaru na odległość 20 pól
+STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Oplata za przewóz 10 jednostek (lub 10,000 litrów) ładunku na odległość 20 pól
 STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Przełącznik wykresu ładunku wł./wył.
 STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
 STR_7066_ENGINEER                                               :Inżynier
@@ -2738,15 +2734,15 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Idź do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Idź do {STATION} (Przewieź i weź towar)
+STR_8807_GO_TO_TRANSFER                                         :Idź do {STATION} (Przewieź i weź ładunek)
 STR_8808_GO_TO_UNLOAD                                           :Idź do {STATION} (Wyładunek)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Idź do {STATION} (Przewieź i nie bierz towaru)
+STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Idź do {STATION} (Przewieź i nie bierz ładunku)
 STR_880A_GO_TO_LOAD                                             :Idź do {STATION} (Załadunek)
 STR_880B_GO_TO_TRANSFER_LOAD                                    :Idź do {STATION} (Przewieź i czekaj na pełen załadunek)
 STR_880C_GO_NON_STOP_TO                                         :Idź bez zatrzymywania do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Idź bez zatrzymywania do {STATION} (Przewieź i weź towar)
+STR_880D_GO_TO_NON_STOP_TRANSFER                                :Idź bez zatrzymywania do {STATION} (Przewieź i weź ładunek)
 STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Idź bez zatrzymywania do {STATION} (Wyładunek)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Idź bez zatrzymywania do {STATION} (Przewieź i nie bierz towaru)
+STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Idź bez zatrzymywania do {STATION} (Przewieź i nie bierz ładunku)
 STR_8810_GO_NON_STOP_TO_LOAD                                    :Idź bez zatrzymywania do {STATION} (Załadunek)
 STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Idź bez zatrzymywania do {STATION} (Przewieź i czekaj na pełen załadunek)
 STR_GO_TO_TRAIN_DEPOT                                           :Idź do zajezdni w {TOWN}
@@ -2800,7 +2796,7 @@
 STR_8827_FULL_LOAD                                              :{BLACK}Załadunek
 STR_8828_UNLOAD                                                 :{BLACK}Wyładunek
 STR_REFIT                                                       :{BLACK}Przebuduj
-STR_REFIT_TIP                                                   :{BLACK}Wybierz do przewozu jakiego towaru przebudować pojazd w tym zadaniu. CTRL+klik usuwa polecenie przebudowy
+STR_REFIT_TIP                                                   :{BLACK}Wybierz do przewozu jakiego ładunku przebudować pojazd w tym zadaniu. CTRL+klik usuwa polecenie przebudowy
 STR_REFIT_ORDER                                                 :(Przebuduj na {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Rozkład
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Otwórz widok rozkładu jazdy
@@ -2849,7 +2845,7 @@
 STR_884C_SHOW_TRAIN_DETAILS                                     :{BLACK}Pokaż szczegóły pociągu
 STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Zwiększ okres między serwisowaniem
 STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Zmniejsz okres między serwisowaniem
-STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaż szczegóły przewożonych towarów
+STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaż szczegóły przewożonych ładunków
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Pokaż szczegóły pociągu
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Pokaż pojemność każdego wagonu
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Pokaż całkowitą pojemność pociągu, według typu ładunku
@@ -2883,7 +2879,7 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nie można odwrócić kierunku jazdy pociągu...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Zmiana nazwy typu pociągu
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nie można zmienić nazwy typu pojazdu...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Spraw by w zaznaczonym poleceniu pojazd był zmuszony do pozostawienia towaru dla kolejnego pojazdu
+STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Spraw by w zaznaczonym poleceniu pojazd był zmuszony do pozostawienia ładunku dla kolejnego pojazdu
 STR_886F_TRANSFER                                               :{BLACK}Przewieź
 STR_CLEAR_TIME                                                  :{BLACK}Usuń czas
 STR_RESET_LATENESS                                              :{BLACK}Wyzeruj spóźnienia
@@ -2972,9 +2968,9 @@
 STR_9038_GO_TO_ROADVEH_DEPOT                                    :Idź do zajezdni sam. w {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Serwisuj w zajezdni sam. w {TOWN}
 
-STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Przebudowa samochodu do przewozu innego typu towaru
+STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Przebudowa samochodu do przewozu innego typu ładunku
 STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Przebudowa samochodu
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Przebuduj samochód do przewozu zaznaczonego typu towaru
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Przebuduj samochód do przewozu zaznaczonego typu ładunku
 STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}Nie można przebudować samochodu...
 STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wybierz ładunek jaki ma przewozić ten samochód
 
@@ -3037,11 +3033,11 @@
 STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Zmień nazwę typu statku
 STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Zmień nazwę typu statku
 STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}Nie można zmienić nazwy typu statku...
-STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Przebudowa statku do przewozu innego typu towaru
+STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Przebudowa statku do przewozu innego typu ładunku
 STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Przebudowa)
 STR_983C_REFIT_SHIP                                             :{BLACK}Przebudowa statku
 STR_983D_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wybierz jaki ładunek ma przewozić statek
-STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Przebuduj statek do przewozu zaznaczonego typu towaru
+STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Przebuduj statek do przewozu zaznaczonego typu ładunku
 STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Wybierz typ ładunku do przewozu:
 STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nowa pojemność: {GOLD}{CARGO}{}{BLACK}Koszt przebudowy: {GOLD}{CURRENCY}
 STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Nie można przebudować statku...
@@ -3110,12 +3106,12 @@
 STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Zmień nazwę typu samolotu
 STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Zmień nazwę typu samolotu
 STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}Nie można zmienić nazwy typu samolotu...
-STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Przebudowa samolotu do przewozu innego typu towaru
+STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Przebudowa samolotu do przewozu innego typu ładunku
 STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Przebudowa)
 STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Przebudowa samolotu
 STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Wybierz jaki ładunek ma przenosić samolot
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Przebuduj samolot do przewozu zaznaczonego typu towaru
-STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Wybierz typ towaru do przewozu:
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Przebuduj samolot do przewozu zaznaczonego typu ładunku
+STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Wybierz typ ładunku do przewozu:
 STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nowa pojemność: {GOLD}{STRING}{}{BLACK}Koszt przebudowy: {GOLD}{CURRENCY}
 STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Nie można przebudować samolotu...
 STR_GO_TO_AIRPORT_HANGAR                                        :Idź do hangaru na {STATION}
@@ -3149,7 +3145,7 @@
 STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Min. przychód:
 STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Maks. przychód:
 STR_PERFORMANCE_DETAIL_DELIVERED                                :{BLACK}Przewieziono:
-STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Towar:
+STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Ładunek:
 STR_PERFORMANCE_DETAIL_MONEY                                    :{BLACK}Pieniądze:
 STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Pożyczka:
 STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Łącznie:
@@ -3159,8 +3155,8 @@
 STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Minimalny zysk spośród wszystkich pojazdów, które mają conajmniej 2 lata.
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Ilość pieniędzy zarobiona w miesiącu z najmniejszym zyskiem w ostatnich 12 kwartałach
 STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Ilość pieniędzy zarobiona w miesiącu z największym zyskiem w ostatnich 12 kwartałach
-STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Ilość towaru przewieziona w poprzednich 4 kwartałach
-STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Ilość rożnych towarów przewiezionych w ostatnim kwartale
+STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Ilość ładunku przewiezionego w poprzednich 4 kwartałach
+STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Ilość rożnych typów ładunku przewiezionych w ostatnim kwartale
 STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Ilość pieniędzy w ręku
 STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Wielkość pożyczki wziętej przez firmę
 STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Suma przyznanych punktów
@@ -3284,7 +3280,7 @@
 STR_REPLACE_REMOVE_WAGON                                        :{BLACK}Usunięcie wagonów: {ORANGE}{SKIP}{STRING}
 STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Autowymiana zachowuje długość pociągu poprzez usuwanie wagonów (począwszy od początku), jeśli wymiana lokomotywy spowoduje wydłużenie pociągu.
 STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Zastępowanie: {ORANGE}{SKIP}{SKIP}{STRING}
-STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} EKSPERYMENTALNE NARZEDZIE {}Przejdź pomiędzy oknami zamiany lokomotyw i wagonów.{}Wymiana wagonu nastąpi tylko jeśli nowy wagon może być przebudowany do przewożenia tego samego towaru co poprzedni. Każdy wagon pociągu jest sprawdzany podczas procesu zamiany.
+STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} EKSPERYMENTALNE NARZĘDZIE {}Przejdź pomiędzy oknami zamiany lokomotyw i wagonów.{}Wymiana wagonu nastąpi tylko jeśli nowy wagon może być przebudowany do przewożenia tego samego typu ładunku co poprzedni. Każdy wagon pociągu jest sprawdzany podczas procesu zamiany.
 STR_RAIL_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Pojazd nie jest dostępny
 STR_ROAD_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Pojazd nie jest dostępny
 STR_SHIP_NOT_AVAILABLE                                          :{WHITE}Statek nie jest dostępny
@@ -3335,7 +3331,7 @@
 STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Pojemność: {GOLD}{COMMA} pasażerów, {COMMA} paczek poczty
 STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Moc: {GOLD}+{POWER}{BLACK} Waga: {GOLD}+{WEIGHT_S}
 STR_PURCHASE_INFO_REFITTABLE_TO                                 :{BLACK}Można przebudować na: {GOLD}
-STR_PURCHASE_INFO_ALL_TYPES                                     :Wszystkie typy towarów
+STR_PURCHASE_INFO_ALL_TYPES                                     :Wszystkie typy ładunków
 STR_PURCHASE_INFO_ALL_BUT                                       :Wszystko oprócz {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Siła Pociągowa: {GOLD}{FORCE}
 
@@ -3482,11 +3478,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Zmień nazwę zaznaczonej grupy
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Kliknij, aby ochronić tę grupę przed globalną zamianą pojazdów
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Zysk w tym roku: {GREEN}{CURRENCY} {BLACK}(w ostatnim roku: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Zysk w tym roku: {RED}{CURRENCY} {BLACK}(w ostatnim roku: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Zysk w tym roku: {GREEN}{CURRENCY} {BLACK}(w ostatnim roku: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Zysk w tym roku: {RED}{CURRENCY} {BLACK}(w ostatnim roku: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
@@ -3502,4 +3493,7 @@
 
 ########
 
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Ufunduj
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Zleć poszukiwanie
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Wybuduj
 STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Wybierz przedsiębiorstwo z listy
--- a/src/lang/portuguese.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/portuguese.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Muito perto da borda do mapa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Dinheiro insuficiente - necessário {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}É necessário terreno plano
 STR_0008_WAITING                                                :{BLACK}Em espera: {WHITE}{STRING}
@@ -1263,7 +1262,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boia está em uso!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Não é possível remover parte da estação...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Não é possível converter o tipo de linha aqui...
@@ -1374,34 +1373,18 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Proteja o jogo com uma senha se não desejar que pessoas indesejadas se juntem
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Seleccione um mapa:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Em que mapa deseja jogar?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não necessitam estar todos presentes.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Rede Local
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Rede Local / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (divulgar)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 jogadores
-STR_NETWORK_1_PLAYERS                                           :1 jogador
-STR_NETWORK_2_PLAYERS                                           :2 jogadores
-STR_NETWORK_3_PLAYERS                                           :3 jogadores
-STR_NETWORK_4_PLAYERS                                           :4 jogadores
-STR_NETWORK_5_PLAYERS                                           :5 jogadores
-STR_NETWORK_6_PLAYERS                                           :6 jogadores
-STR_NETWORK_7_PLAYERS                                           :7 jogadores
-STR_NETWORK_8_PLAYERS                                           :8 jogadores
-STR_NETWORK_9_PLAYERS                                           :9 jogadores
-STR_NETWORK_10_PLAYERS                                          :10 jogadores
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não necessitam estar todos presentes.
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Máximo de Companhias:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limitar o servidor a um certo número de Companhias
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Máximo de espectadores:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limitar o servidor a um certo número de espectadores
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Idioma falado:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Outros jogadores ficarão a conhecer o idioma utilizado no servidor.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Iniciar Jogo
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Iniciar um novo jogo em rede de um mapa aleatório, ou cenário
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Abrir Jogo
@@ -3361,11 +3344,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Mudar o nome do grupo seleccionado
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Clique para proteger este grupo da autosubstituição global
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/romanian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/romanian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Prea aproape de marginea hărţii
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nu ai destui bani - îţi trebuie {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesită teren plat
 STR_0008_WAITING                                                :{BLACK}În aşteptare: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... baliza in uz!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordonate: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nu pot demola o parte din statie...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Nu pot converti linia aici...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ce hartã doresti sa joci?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Numar maxim de clienti
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Alege un numar maxim de clienti. Nu trebuie ocupate toate locurile.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (fă reclamă)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 jucãtori
-STR_NETWORK_1_PLAYERS                                           :1 jucãtor
-STR_NETWORK_2_PLAYERS                                           :2 jucãtori
-STR_NETWORK_3_PLAYERS                                           :3 jucãtori
-STR_NETWORK_4_PLAYERS                                           :4 jucãtori
-STR_NETWORK_5_PLAYERS                                           :5 jucãtori
-STR_NETWORK_6_PLAYERS                                           :6 jucãtori
-STR_NETWORK_7_PLAYERS                                           :7 jucãtori
-STR_NETWORK_8_PLAYERS                                           :8 jucãtori
-STR_NETWORK_9_PLAYERS                                           :9 jucãtori
-STR_NETWORK_10_PLAYERS                                          :10 jucãtori
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maximum companii:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limiteazã serverle la un anumit numãr companii
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maxim spectatori:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limiteazã serverul la un anumit numãr de spectatori
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Limba vorbită:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Ceilalţi jucători vor şti în ce limbă se discută pe server.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Începe jocul
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Incepe un joc nou in retea cu o harta aleatoare sau intr-un scenariu
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Incarca joc
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Cale ferată cu semafoare normale
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Cale ferată cu pre-semafoare
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Cale ferată cu semafoare de ieşire
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Cale ferată cu semafoare combinate
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Cale ferată cu semafoare normale şi pre-semafoare
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Cale ferată cu semafoare normale şi semafoare de ieşire
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Cale ferată cu semafoare normale şi semafoare combinate
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Cale ferată cu pre-semafoare şi semafoare de ieşire
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Cale ferată cu pre-semafoare şi semafoare combinate
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Sina de cale ferata cu semnale de iesire si combinate
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Trebuie mai intai sa demolati gara
 
 
@@ -3361,10 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Redenumeste grupul selectat
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Click aici pentru a proteja acest grup de la inlocuirile automate globale
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit anul acesta: {GREEN}{CURRENCY} {BLACK}(anul trecut: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit anul acesta: {RED}{CURRENCY} {BLACK}(anul trecut: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit anul acesta: {GREEN}{CURRENCY} {BLACK}(anul trecut: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit anul acesta: {RED}{CURRENCY} {BLACK}(anul trecut: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/russian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/russian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Слишком близко к краю карты
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Недостаточно денег - требуется {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Необходимо ровное место
 STR_0008_WAITING                                                :{BLACK}Ожидает: {WHITE}{STRING}
@@ -1143,7 +1142,7 @@
 STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Обслуживание кораблей: {ORANGE}кажд{P 1 ый ые ые} {STRING} д{P 1 ень ня ней}/%
 STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Обслуживание кораблей: {ORANGE}не обслуживаются
 STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Не обслуживать транспорт, если отключены поломки: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Использовать органичение скорости у вагонов (если есть): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Использовать ограничение скорости у вагонов (если есть): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Выключить электрофицированную железную дорогу: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Цветные газеты появляются: {ORANGE}в {STRING} году
@@ -1265,7 +1264,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...этот буй используется!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Координаты: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Невозможно удалить часть станции...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Невозможно преобразовать тип рельса здесь...
@@ -1378,32 +1376,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Какую карту вы хотите играть?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Макс. клиентов:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Выбор максимального числа клиентов. Не все места должны быть заняты
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Локальная сеть
 STR_NETWORK_INTERNET                                            :Интернет
 STR_NETWORK_LAN_INTERNET                                        :Лок. сеть/Интернет
 STR_NETWORK_INTERNET_ADVERTISE                                  :Интернет (объявл.)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 игроков
-STR_NETWORK_1_PLAYERS                                           :1 игрок
-STR_NETWORK_2_PLAYERS                                           :2 игрока
-STR_NETWORK_3_PLAYERS                                           :3 игрока
-STR_NETWORK_4_PLAYERS                                           :4 игрока
-STR_NETWORK_5_PLAYERS                                           :5 игроков
-STR_NETWORK_6_PLAYERS                                           :6 игроков
-STR_NETWORK_7_PLAYERS                                           :7 игроков
-STR_NETWORK_8_PLAYERS                                           :8 игроков
-STR_NETWORK_9_PLAYERS                                           :9 игроков
-STR_NETWORK_10_PLAYERS                                          :10 игроков
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Макс. компаний:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ограничить максимальное число компаний на сервере
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Макс. наблюдателей:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ограничить максимальное количество наблюдателей на сервере
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Язык общения:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Другие игроки будут знать, на каком языке говорят на сервере
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Запуск игры
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Запуск новой сетевой игры с произвольной карты или сценария
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Загрузка игры
@@ -1631,13 +1613,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Ж/Д путь с обычным сигналом
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ж/Д путь с пресигналами
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ж/Д путь с выходными сигналами
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ж/Д путь с комбинированными сигналами
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Рельсы и нормальными и пре-сигналами
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Рельсы и нормальными и выходными сигналами
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Рельсы с нормальными и комбо-сигналами
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Рельсы с пре- и выходными сигналами
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Рельсы с пре- и комбо-сигналами
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Рельсы с выходными и комбо-сигналами
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Сначала удалите ЖД станцию
 
 
@@ -3374,11 +3352,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Переименовать выбранную группу
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}В зажатом состоянии защищает группу от всеобщей автозамены
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Прибыль этот год: {GREEN}{CURRENCY} {BLACK}(прошлый год: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибыль этот год: {RED}{CURRENCY} {BLACK}(прошлый год: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибыль за год: {GREEN}{CURRENCY} {BLACK}(прошлый год: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Прибыль за год: {RED}{CURRENCY} {BLACK}(прошлый год: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/simplified_chinese.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/simplified_chinese.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}距离地图边界过近
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}没有足够的现金 - 需要 {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}需要平坦的地面
 STR_0008_WAITING                                                :{BLACK}等待:{WHITE}{STRING}
@@ -1236,7 +1235,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}浮标正在被使用……
 
-STR_LANDINFO_COORDS                                             :{BLACK}坐标:{LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}不能拆除站台的一部分……
 STR_CANT_CONVERT_RAIL                                           :{WHITE}不能转换铁路的类型……
@@ -1349,32 +1347,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}选择你要玩的地图
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}玩家数目:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}选择可以参加的玩家上限(达不到此数量仍然可以开始游戏)
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :局域网
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :局域网 / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (advertise)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 个
-STR_NETWORK_1_PLAYERS                                           :1 个
-STR_NETWORK_2_PLAYERS                                           :2 个
-STR_NETWORK_3_PLAYERS                                           :3 个
-STR_NETWORK_4_PLAYERS                                           :4 个
-STR_NETWORK_5_PLAYERS                                           :5 个
-STR_NETWORK_6_PLAYERS                                           :6 个
-STR_NETWORK_7_PLAYERS                                           :7 个
-STR_NETWORK_8_PLAYERS                                           :8 个
-STR_NETWORK_9_PLAYERS                                           :9 个
-STR_NETWORK_10_PLAYERS                                          :10个
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}公司数量:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}限制服务器上可以创建的公司数量
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}旁观数量:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}限制服务器上旁观者的数量
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}语言选项:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}其他玩家可以知道服务器的官方语言
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}开始游戏
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}以指定场景或随机地图开始游戏
 STR_NETWORK_LOAD_GAME                                           :{BLACK}读取游戏
@@ -1577,7 +1559,6 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :带有普通信号的铁路
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :带有入口信号的铁路
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :带有出口新乡的铁路
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :带有组合信号的铁路
 
 
 
--- a/src/lang/slovak.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/slovak.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -10,10 +10,9 @@
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Za okrajom mapy
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Príliš blízko okraja mapy
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Príliš blízko okraja mapy.
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Malá hotovost - potrebných {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebný rovný terén
 STR_0008_WAITING                                                :{BLACK}Caka: {WHITE}{STRING}
@@ -259,7 +258,7 @@
 STR_00E1_TOO_MANY_VEHICLES_IN_GAME                              :{WHITE}V hre je prílis vela dopravných prostriedkov
 STR_00E2                                                        :{BLACK}{COMMA}
 STR_00E3                                                        :{RED}{COMMA}
-STR_00E4_LOCATION                                               :{BLACK}Pozícia
+STR_00E4_LOCATION                                               :{BLACK}Poloha
 STR_00E5_CONTOURS                                               :Vrstevnice
 STR_00E6_VEHICLES                                               :Dopravné prostriedky
 STR_00E7_INDUSTRIES                                             :Priemysel
@@ -380,7 +379,7 @@
 STR_0153_SUBSIDIES                                              :Dotácie
 
 STR_UNITS_IMPERIAL                                              :Imperialne
-STR_UNITS_METRIC                                                :Metricke
+STR_UNITS_METRIC                                                :Metrické
 STR_UNITS_SI                                                    :SI
 
 STR_UNITS_VELOCITY_IMPERIAL                                     :{COMMA} mph
@@ -495,7 +494,7 @@
 STR_016F                                                        :{TINYFONT}{STRING}{} {STRING}{}{NUM}
 STR_0170                                                        :{TINYFONT}{STRING}-
 STR_0171_PAUSE_GAME                                             :{BLACK}Pauza
-STR_0172_SAVE_GAME_ABANDON_GAME                                 :{BLACK}Uložit hru, opustit hru, ukoncit program
+STR_0172_SAVE_GAME_ABANDON_GAME                                 :{BLACK}Uložit hru, opustit hru, ukoncit OpenTTD
 STR_0173_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Zoznam staníc spolocnosti
 STR_0174_DISPLAY_MAP                                            :{BLACK}Zobrazit mapu
 STR_0175_DISPLAY_MAP_TOWN_DIRECTORY                             :{BLACK}Zobrazit mapu, zoznam miest
@@ -683,7 +682,7 @@
 STR_021C_OF_ACHIEVES_STATUS                                     :{WHITE}{BIGFONT}{PLAYERNAME} z {COMPANY} ziskal oznacenie '{STRING}' !
 STR_021F                                                        :{BLUE}{COMMA}
 STR_0221_OPENTTD                                                :{YELLOW}OpenTTD
-STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Editor scenarov
+STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Editor scenárov
 STR_0223_LAND_GENERATION                                        :{WHITE}Generovanie uzemia
 STR_0224                                                        :{BLACK}{UPARROW}
 STR_0225                                                        :{BLACK}{DOWNARROW}
@@ -702,7 +701,7 @@
 STR_0234_NEW_TOWN                                               :{BLACK}Nove mesto
 STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Stavat nove mesto
 STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}Tu sa mesto neda postavit...
-STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...prilis blizko okraja mapy
+STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}... príliš blízko okraja mapy
 STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...prilis blizko ineho mesta
 STR_0239_SITE_UNSUITABLE                                        :{WHITE}...miesto je nepouzitelne
 STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...prilis vela miest
@@ -752,7 +751,7 @@
 STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Postavit pilu
 STR_0265_PLANT_FOREST                                           :{BLACK}Vysadit les
 STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Postavit ropnu rafineriu
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Postavit vrtnu plosinu (da sa postavit len blizko kraja mapy)
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Postavit vrtnu plosinu (da sa postavit len blizko okraja mapy)
 STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Postavit tovaren
 STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Postavit oceliaren
 STR_026A_CONSTRUCT_FARM                                         :{BLACK}Postavit farmu
@@ -796,17 +795,17 @@
 STR_CREATE_LAKE                                                 :{BLACK}Definovat oblast vody.{}Vytvorí kanál, pri stlacení CTRL na úrovni mora zaplaví okolie
 STR_0290_DELETE                                                 :{BLACK}Vymazat
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Kompletne vymazat toto mesto
-STR_0292_SAVE_SCENARIO                                          :Ulozit scenar
+STR_0292_SAVE_SCENARIO                                          :Ulozit scenár
 STR_0293_LOAD_SCENARIO                                          :Nahrat scenár
 STR_LOAD_HEIGHTMAP                                              :Nahrat výškovú mapu
 STR_0294_QUIT_EDITOR                                            :Ukoncit editor
 STR_0295                                                        :
-STR_0296_QUIT                                                   :Ukoncit program
+STR_0296_QUIT                                                   :Ukoncit OpenTTD
 STR_0297_SAVE_SCENARIO_LOAD_SCENARIO                            :{BLACK}Ulozit scenar, nahrat scenar, ukoncit editor scenara, ukoncit program
 STR_0298_LOAD_SCENARIO                                          :{WHITE}Nahrat scenár
 STR_0299_SAVE_SCENARIO                                          :{WHITE}Ulozit scenar
-STR_029A_PLAY_SCENARIO                                          :{BLACK}Hrat scenar
-STR_PLAY_HEIGHTMAP                                              :{BLACK}Hrat vyskovu mapu
+STR_029A_PLAY_SCENARIO                                          :{BLACK}Hrat scenár
+STR_PLAY_HEIGHTMAP                                              :{BLACK}Hrat výškovú mapu
 STR_PLAY_HEIGHTMAP_HINT                                         :{BLACK}Zacat novu hru s pouzitim vyskovej mapy ako krajiny
 STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Si si isty ze chces ukoncit tento scenar ?
 STR_029C_QUIT_EDITOR                                            :{WHITE}Ukoncit Editor
@@ -828,7 +827,7 @@
 STR_FULL                                                        :Plne
 STR_02BA                                                        :{SILVER}- -  {COMPANY}  - -
 STR_02BB_TOWN_DIRECTORY                                         :Zoznam miest
-STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Nazvy vozidiel
+STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Názvy vozidiel
 STR_02BD                                                        :{BLACK}{STRING}
 STR_02BE_DEFAULT                                                :Vychodzie
 STR_02BF_CUSTOM                                                 :Vlastne
@@ -884,31 +883,31 @@
 STR_MEASURING_UNITS                                             :{BLACK}Jednotky vzdialenosti
 STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
 STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Výber jednotiek vzdialenosti
-STR_02E6_ROAD_VEHICLES                                          :{BLACK}Cestne vozidla
+STR_02E6_ROAD_VEHICLES                                          :{BLACK}Cestné vozidlá
 STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Strana po ktorej jazdia cestne vozidla
 STR_02E9_DRIVE_ON_LEFT                                          :Jazdia nalavo
 STR_02EA_DRIVE_ON_RIGHT                                         :Jazdia napravo
-STR_02EB_TOWN_NAMES                                             :{BLACK}Nazvy miest
+STR_02EB_TOWN_NAMES                                             :{BLACK}Názvy miest
 STR_02EC                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}Vyber styl nazvov miest
 
-STR_02F4_AUTOSAVE                                               :{BLACK}Automaticke ukladanie
+STR_02F4_AUTOSAVE                                               :{BLACK}Automatické ukladanie
 STR_02F5                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Vyber interval automatickeho ukladania
 STR_02F7_OFF                                                    :Vypnute
 STR_02F8_EVERY_3_MONTHS                                         :Kazde 3 mesiace
-STR_02F9_EVERY_6_MONTHS                                         :Kazdych 6 mesiacov
-STR_02FA_EVERY_12_MONTHS                                        :Kazdych 12 mesiacov
+STR_02F9_EVERY_6_MONTHS                                         :Každých 6 mesiacov
+STR_02FA_EVERY_12_MONTHS                                        :Každých 12 mesiacov
 STR_02FB_START_A_NEW_GAME                                       :{BLACK}Spustit novu hru
 STR_02FC_LOAD_A_SAVED_GAME                                      :{BLACK}Nahrat ulozenú hru
-STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Vytvorit vlastny svet / scenar
+STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Vytvorit vlastny scenar
 STR_02FF_SELECT_SINGLE_PLAYER_GAME                              :{BLACK}Vyberte hru pre 1 hraca
 STR_0300_SELECT_MULTIPLAYER_GAME                                :{BLACK}Vyberte hru pre 2-8 hracov
 STR_0301_DISPLAY_GAME_OPTIONS                                   :{BLACK}Zobraz nastavenia hry
 STR_0302_DISPLAY_DIFFICULTY_OPTIONS                             :{BLACK}Zobraz nastavenia obtiaznosti
 STR_0303_START_A_NEW_GAME_USING                                 :{BLACK}Spustit novu hru s pouzitim vlastneho scenara
-STR_0304_QUIT                                                   :{BLACK}Ukoncit program
+STR_0304_QUIT                                                   :{BLACK}Ukoncit OpenTTD
 STR_0305_QUIT_OPENTTD                                           :{BLACK}Ukoncit 'OpenTTD'
 STR_0307_OPENTTD                                                :{WHITE}OpenTTD {REV}
 STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}... moze byt postavene len v meste
@@ -994,24 +993,24 @@
 STR_CURR_SKK                                                    :Slovenske Koruny (SKK)
 STR_CURR_BRR                                                    :Brazílske Realy (BRL)
 
-STR_CURR_CUSTOM                                                 :Vlastna ...
+STR_CURR_CUSTOM                                                 :Vlastná ...
 
 STR_OPTIONS_LANG                                                :{BLACK}Jazyk
 STR_OPTIONS_LANG_CBO                                            :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_OPTIONS_LANG_TIP                                            :{BLACK}Vyber jazyka rozhrania
 
-STR_OPTIONS_FULLSCREEN                                          :{BLACK}Cela obrazovka
+STR_OPTIONS_FULLSCREEN                                          :{BLACK}Celá obrazovka
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Zaskrtnite, ak chcete hrat OpenTTD na celej obrazovke
 
-STR_OPTIONS_RES                                                 :{BLACK}Rozlisenie obrazovky
+STR_OPTIONS_RES                                                 :{BLACK}Rozlíšenie obrazovky
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_OPTIONS_RES_TIP                                             :{BLACK}Vyber rozlisenia obrazovky
 
-STR_OPTIONS_SCREENSHOT_FORMAT                                   :{BLACK}Format screenshotov
+STR_OPTIONS_SCREENSHOT_FORMAT                                   :{BLACK}Formát screenshotov
 STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Vyber format screenshotov
 
-STR_AUTOSAVE_1_MONTH                                            :Kazdy mesiac
+STR_AUTOSAVE_1_MONTH                                            :Každý mesiac
 STR_AUTOSAVE_FAILED                                             :{WHITE}Autoulozenie zlyhalo
 
 STR_MONTH_JAN                                                   :Januar
@@ -1100,7 +1099,7 @@
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Umoznit zaradenie depa do zoznamu prikazov: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Sposob výstavby priemyslu produkujúceho suroviny: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :žiadny
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :rovnaký ako ostatný priemysel
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :normálny
 STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vyhladávací
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Umoznit viac priemyslu rovnakeho typu v jednom meste: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Rovnaky priemysel moze byt stavany blizko seba: {ORANGE}{STRING}
@@ -1109,7 +1108,7 @@
 STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Zobrazit rozpocet na konci roku: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}TTDPatch kompatibilna interpretacia prikazu nonstop: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Radenie cestnych vozidiel (podla mnozstva tovaru): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Posuvat okno ked je kurzor mysi na jeho okraji: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Posúvat pohlad ked je kurzor myši na okraji okna: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Umoznit podplacanie miestnej spravy: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Roznorode stanice: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Novy globalny algoritmus hladania cesty (NPF namiesto NTP): {ORANGE}{STRING}
@@ -1133,7 +1132,7 @@
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Zobrazit pocet obyvatelov mesta v jeho nazve: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Neviditelne stromy (pri priesvitnych budovach): {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Generator uzemia: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Generátor uzemia: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Povodny
 STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :TerraGenesis
 STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Max. vzdialenost ropnych rafinerii od okraja mapy: {ORANGE}{STRING}
@@ -1153,24 +1152,24 @@
 STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Vyskova uroven pre rovinaty scenar: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Max. rozsah stanice: {ORANGE}{STRING} {RED}Pozor: Vysoke hodnoty spomaluju hru
-STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Automaticke opravy vrtulnikov v heliporte: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Automatické opravy vrtulníkov v heliporte: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Otvarat panel uprav terenu s panelom stavby trati, ciest, ... : {ORANGE}{STRING}
-STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Pri posuvani mapy mysou posuvat opacnym smerom: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Pri posúvaní pohladu myšou posúvat mapu opacným smerom: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Plynulé posúvanie pohladu: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Zobrazit info o rozmerom pri vystavbe: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Zobrazit údaje o rozmeroch pri výstavbe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Zobrazit farebne schemy spolocnosti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Ziadne
-STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Vlastna spolocnost
+STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Vlastná spolocnost
 STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Vsetky spolocnosti
 STR_CONFIG_PATCHES_PREFER_TEAMCHAT                              :{LTBLUE}Preferovaný teamový chat: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING                        :{LTBLUE}Funkcia scrolovacieho kolieska: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Zvacšit mapu
 STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Posúvat mapu
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Vypnuté
-STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rychlost posúvania mapy: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rychlost posúvania pohladu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automaticka pauza pri štarte novej hry: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Použit vylepšený zoznam vozidiel: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Použit ukazovatele nakladnia: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Zobrazovat ukazovatele nakladania a vykladania: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Povolit cestovné poriadky pre vozidlá: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Zobrazovat cestovné poriadky v tikoch namiesto dní: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Predvolený typ kolají (v novej/nahranej hre): {ORANGE}{STRING}
@@ -1180,12 +1179,12 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Maglev
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :Prvé dostupné
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Posledné dostupné
-STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Najcastejsie používané
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Najpoužívanejšie
 
-STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Zobrazit nástroje výstavby ak nie sú dostupné žiadne vhodné vozidlá: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Zobrazit nástroje výstavby ak nie sú dostupné vhodné vozidlá: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maximalny pocet vlakov hraca: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximalny pocet automobilov hraca: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Maximalny pocet lietadiel hraca: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Maximálny pocet lietadiel hráca: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Maximalny pocet lodi hraca: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_AI_BUILDS_TRAINS                             :{LTBLUE}Zakazat vlaky pre pocitac: {ORANGE}{STRING}
@@ -1217,7 +1216,7 @@
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automatická stavba semafórov pred: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Struktúra mesta "žiadne cesty naviac" nie je platná v editore scenárov
-STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Štruktúra mestských ciestt: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Struktúra mestských ciest: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :žiadne cesty naviac
 STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :štandardná
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :lepšie cesty
@@ -1236,13 +1235,13 @@
 STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Normálny
 STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Rýchly
 STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Velmi rýchly
-STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Pomer miest, ktoré budú rást 2x rýchlejšie: {ORANGE}1 v {STRING}
-STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Pomer miest, ktoré budú rást 2x rýchlejšie: {ORANGE}Žiadny
+STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Pomer miest, ktoré sa budú rozvíjat rýchlejšie: {ORANGE}1 z {STRING}
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Pomer miest, ktoré sa budú rozvíjat rýchlejšie: {ORANGE}Žiadny
 STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Násobok pociatocnej velkosti mesta: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Rozhranie
 STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Vystavba
-STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Vozidla
+STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Vozidlá
 STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Stanice
 STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Ekonomika
 STR_CONFIG_PATCHES_AI                                           :{BLACK}Protivnici
@@ -1327,7 +1326,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... boja sa pouziva!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Suradnice: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Súradnice: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nemozno odstranit cast stanice ...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Tu nemozno zkonvertovat typ zeleznice ...
@@ -1438,34 +1437,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Ochran hru heslom, ak nechcec aby sa pripajali ostatni ludia
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Vyber mapu:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ktoru mapu chces hrat?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximalny pocet klientov:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Zvol maximalny pocet klientov. Moze sa ich pripojit aj menej.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (oznamit)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 hracov
-STR_NETWORK_1_PLAYERS                                           :1 hrac
-STR_NETWORK_2_PLAYERS                                           :2 hráci
-STR_NETWORK_3_PLAYERS                                           :3 hráci
-STR_NETWORK_4_PLAYERS                                           :4 hráci
-STR_NETWORK_5_PLAYERS                                           :5 hrácov
-STR_NETWORK_6_PLAYERS                                           :6 hrácov
-STR_NETWORK_7_PLAYERS                                           :7 hrácov
-STR_NETWORK_8_PLAYERS                                           :8 hrácov
-STR_NETWORK_9_PLAYERS                                           :9 hrácov
-STR_NETWORK_10_PLAYERS                                          :10 hrácov
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} klient{P "" i ov}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maximálny pocet klientov:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Zvol maximalny pocet klientov. Moze sa ich pripojit aj menej.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} spolocnost{P "" i í}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max. pocet spolocnosti:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Obmedzi maximalny pocet spolocnosti na serveri
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} pozorovatel{P "" ia ov}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max. pocet divakov:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Omedzi maximalny pocet divakov na serveri
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Jazyk hracov:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Aby ostatni hraci vedeli, akym jazykom sa bude hovorit na serveri.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Spustit hru
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Zacat sietovu hru z nahodnej mapy alebo scenara
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Nahrat hru
@@ -1693,13 +1681,13 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Zeleznicne kolaje so standartnym semaforom
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Zeleznicne kolaje s pre-signalmi
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Zeleznicne kolaje s exit-signalmi
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Zeleznicne kolaje s combo-signalmi
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Zeleznicné kolaje s combo signálmi
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Železnicné kolaje s normálnymi a pre-signálmi
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Železnicné kolaje s normálnymi a exit-signálmi
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Železnicné kolaje s normálnymi a combo-signálmi
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Zeleznicné kolaje s normálnymi a combo signálmi
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Železnicné kolaje s pre- a exit-signálmi
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Železnicné kolaje s pre- a combo-signálmi
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Železnicné kolaje s exit- a combo-signálmi
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Zeleznicné kolaje s pre- a combo signálmi
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Zeleznicné kolaje s exit- a combo signálmi
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Je potrebné najprv odstránit železnicnú stanicu
 
 
@@ -1764,7 +1752,7 @@
 STR_2007_RENAME_TOWN                                            :Premenovat mesto
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Mesto nemoze byt odstranene ...
 STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} miestna sprava to nedovoli
-STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Nazvy miest - kliknut na meno pre pohlad na stred mesta
+STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Názvy miest - kliknite na názov pre pohlad mesto
 STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Pohlad na stred mesta
 STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Zmenit nazov mesta
 STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Cestujuci posledny mesiac: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
@@ -1803,7 +1791,7 @@
 STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Dotacia ukoncena:{}{}Preprava {STRING.g} z {STATION} do {STATION} uz viac nebude dotovana.
 STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Ponuka dotacie:{}{}Prva preprava {STRING.g} z {STRING} do {STRING} bude dotovana miestnou spravou!
 STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Dotacia udelena spolocnosti {COMPANY}!{}{}Preprava {STRING.g} z {STATION} do {STATION} bude buduci rok o 50% vynosnejsia!
-STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Dotacia udelena spolocnosti {COMPANY}!{}{}Preprava {STRING.g} z {STATION} to {STATION} bude buduci rok 2x vynosejnsia!
+STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Dotácia udelená spolocnosti {COMPANY}!{}{}Preprava {STRING.g} z {STATION} to {STATION} bude budúci rok 2x výnosnejšia!
 STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Dotacia udelena spolocnosti {COMPANY}!{}{}Preprava {STRING.g} z {STATION} do {STATION} bude buduci rok 3x vynosnejsia!
 STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Dotacia udelena spolocnosti {COMPANY}!{}{}Preprava {STRING.g} z {STATION} do {STATION} bude buduci rok 4x vynosnejsia!
 STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Miestna sprava {TOWN} odmietla stavbu letiska v tomto meste
@@ -1824,7 +1812,7 @@
 STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Vykonat vybranu cinnost
 STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Dostupne cinnosti:
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Mala reklamna kampan
-STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Stredna reklamna kampan
+STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Stredná reklamná kampan
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Velka reklamna kampan
 STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Financovat rekonstrukciu ciest
 STR_204A_BUILD_STATUE_OF_COMPANY                                :Postavit sochu majitela spolocnosti
@@ -1937,7 +1925,7 @@
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Zobrazit hodnotenie stanice
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Zmenit nazov stanice
 STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Zobrazit zoznam prijimaneho nakladu
-STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Nazvy stanic - kliknut pre vycentrovanie pohladu na poziciu stanice
+STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Názvy staíic - kliknite pre pohlad na polohu stanice
 STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Vybrat velkost/typ letiska
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
 STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
@@ -2174,26 +2162,26 @@
 STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Ulozit
 
 ############ range for difficulty levels starts
-STR_6801_EASY                                                   :{BLACK}Lahka
-STR_6802_MEDIUM                                                 :{BLACK}Stredna
-STR_6803_HARD                                                   :{BLACK}Tazka
-STR_6804_CUSTOM                                                 :{BLACK}Vlastna
+STR_6801_EASY                                                   :{BLACK}Lahká
+STR_6802_MEDIUM                                                 :{BLACK}Stredná
+STR_6803_HARD                                                   :{BLACK}Tažká
+STR_6804_CUSTOM                                                 :{BLACK}Vlastná
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
 STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Max. pocet konkurentov: {ORANGE}{COMMA}
-STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Zaciatok konkurencie: {ORANGE}{STRING}
+STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Vznik konkurencie: {ORANGE}{STRING}
 STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Pocet miest: {ORANGE}{STRING}
 STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Pocet priemyslu: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Maximalny prvotny uver: {ORANGE}{CURRENCY}
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Maximálny prvotný úver: {ORANGE}{CURRENCY}
 STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Pociatocny urok: {ORANGE}{COMMA}%
-STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Naklady na prevadzku vozidiel: {ORANGE}{STRING}
+STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Náklady na prevádzku vozidiel: {ORANGE}{STRING}
 STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Rychlost konkurencie: {ORANGE}{STRING}
 STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Inteligencia konkurencie: {ORANGE}{STRING}
 STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Poruchy vozidiel: {ORANGE}{STRING}
 STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Nasobok dotacii: {ORANGE}{STRING}
-STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Naklady na vystavbu: {ORANGE}{STRING}
-STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Typ terenu: {ORANGE}{STRING}
+STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Náklady na výstavbu: {ORANGE}{STRING}
+STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Typ terénu: {ORANGE}{STRING}
 STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Rozsah oceanov/jazier: {ORANGE}{STRING}
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomika: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Otacanie vlakov: {ORANGE}{STRING}
@@ -2202,10 +2190,10 @@
 ############ range for difficulty settings ends
 
 STR_26816_NONE                                                  :Ziadny
-STR_NUM_VERY_LOW                                                :Velmi malý
-STR_6816_LOW                                                    :Nizke
-STR_6817_NORMAL                                                 :Normalne
-STR_6818_HIGH                                                   :Vysoke
+STR_NUM_VERY_LOW                                                :Velmi nízky
+STR_6816_LOW                                                    :Nízky
+STR_6817_NORMAL                                                 :Normálny
+STR_6818_HIGH                                                   :Vysoký
 STR_6819                                                        :{BLACK}{SMALLLEFTARROW}
 STR_681A                                                        :{BLACK}{SMALLRIGHTARROW}
 STR_681B_VERY_SLOW                                              :Velmi Pomale
@@ -2214,12 +2202,12 @@
 STR_681E_FAST                                                   :Rychle
 STR_681F_VERY_FAST                                              :Velmi rychle
 STR_VERY_LOW                                                    :Velmi nizke
-STR_6820_LOW                                                    :Nizke
+STR_6820_LOW                                                    :Nízky
 STR_6821_MEDIUM                                                 :Stredne
-STR_6822_HIGH                                                   :Vysoke
+STR_6822_HIGH                                                   :Vysoký
 STR_6823_NONE                                                   :Ziadne
 STR_6824_REDUCED                                                :Znizene
-STR_6825_NORMAL                                                 :Normalne
+STR_6825_NORMAL                                                 :Normálny
 STR_6826_X1_5                                                   :x1.5
 STR_6827_X2                                                     :x2
 STR_6828_X3                                                     :x3
@@ -2260,7 +2248,7 @@
 STR_700E_FINANCES                                               :{WHITE}{COMPANY} Financie {BLACK}{COMPANYNUM}
 STR_700F_EXPENDITURE_INCOME                                     :{WHITE}Vydavky/Prijmy
 STR_7010                                                        :{WHITE}{NUM}
-STR_7011_CONSTRUCTION                                           :{GOLD}Vystavba
+STR_7011_CONSTRUCTION                                           :{GOLD}Výstavba
 STR_7012_NEW_VEHICLES                                           :{GOLD}Nove vozidla
 STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Prevadzka vlakov
 STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Prevadzka automobilov
@@ -2340,7 +2328,7 @@
 STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Spolocnost nie je mozne kupit ...
 STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Ceny prepravy
 STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Pocet dni transportu
-STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Platba za prepravenie 10 jednotiek (alebo 10,000 litrov) nakladu cez 20 stvorcov terenu
+STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Platba za prepravu 10 jednotiek (alebo 10 000 litrov) nákladu cez 20 stvorcov
 STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Graf pre typ nakladu zap./vyp.
 STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
 STR_7066_ENGINEER                                               :Inzinier
@@ -2810,7 +2798,7 @@
 STR_SERVICE_HINT                                                :{BLACK}Vynechat tento prikaz pokial nie je potrebna oprava
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Cena: {CURRENCY} Hmotnost: {WEIGHT_S}{}Rýchlost: {VELOCITY}  Výkon: {POWER}{}Náklady na prevádzku: {CURRENCY}/rok{}Kapacita: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Pokazene
-STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Naklady na prevadzku: {LTBLUE}{CURRENCY}/rok
+STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Náklady na prevádzku: {LTBLUE}{CURRENCY}/rok
 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_S}  {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rýchlost: {LTBLUE}{VELOCITY}
 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_S} {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rýchlost: {LTBLUE}{VELOCITY} {BLACK}Max. T.S.: {LTBLUE}{FORCE}
 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Zisk tento rok: {LTBLUE}{CURRENCY}  (predchadzajuci rok: {CURRENCY})
@@ -2863,7 +2851,7 @@
 STR_9007_BUILD_VEHICLE                                          :{BLACK}Zakupit vozidlo
 STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nie je mozne zakupit automobil ...
 STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
-STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Naklady na prevadzku: {LTBLUE}{CURRENCY}/rok
+STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Náklady na prevádzku: {LTBLUE}{CURRENCY}/rok
 STR_900E_MAX_SPEED                                              :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY}
 STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Zisk tento rok: {LTBLUE}{CURRENCY}  (posledny rok: {CURRENCY})
 STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Spolahlivost: {LTBLUE}{COMMA}%  {BLACK}Pocet poruch od posledneho servisu: {LTBLUE}{COMMA}
@@ -2893,7 +2881,7 @@
 STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Centrovat pohlad na poziciu garaze
 STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Vyber vozidiel - kliknut pre detaily
 STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Zakupit vybrany automobil
-STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Cena: {CURRENCY}{}Rychlost: {VELOCITY}{}Naklady na prevadzku: {CURRENCY}/rok{}Kapacita: {CARGO}
+STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Cena: {CURRENCY}{}Rýchlost: {VELOCITY}{}Náklady na prevádzku: {CURRENCY}/rok{}Kapacita: {CARGO}
 STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Kapacita: {LTBLUE}
 STR_BARE_CARGO                                                  :{CARGO}
 
@@ -2939,7 +2927,7 @@
 STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Lod v ceste
 STR_980F                                                        :{WHITE}{VEHICLE}
 STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
-STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Naklady na prevadzku: {LTBLUE}{CURRENCY}/rok
+STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Náklady na prevádzku: {LTBLUE}{CURRENCY}/rok
 STR_9813_MAX_SPEED                                              :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY}
 STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Zisk tento rok: {LTBLUE}{CURRENCY}  (posledny rok: {CURRENCY})
 STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Spolahlivost: {LTBLUE}{COMMA}%  {BLACK}Pocet poruch od posledneho servisu: {LTBLUE}{COMMA}
@@ -2968,7 +2956,7 @@
 STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Vycentrovat pohlad na lod
 STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Poslat lod do lodenice
 STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Zobrazit detaily o lodi
-STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Cena: {CURRENCY} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO}{}Naklady na prevadzku: {CURRENCY}/rok
+STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Cena: {CURRENCY} Max. rýchlost: {VELOCITY}{}Kapacita: {CARGO}{}Náklady na prevádzku: {CURRENCY}/rok
 STR_982F_NAME_SHIP                                              :{BLACK}Pomenovat lod
 
 STR_9831_NAME_SHIP                                              :{WHITE}Pomenovat lod
@@ -3007,7 +2995,7 @@
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Prikazy)
 STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
-STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Naklady na prevadzku: {LTBLUE}{CURRENCY}/rok
+STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Vek: {LTBLUE}{STRING}{BLACK}   Náklady na prevádzku: {LTBLUE}{CURRENCY}/rok
 STR_A00E_MAX_SPEED                                              :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY}
 STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Zisk tento rok: {LTBLUE}{CURRENCY}  (posledny rok: {CURRENCY})
 STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Spolahlivost: {LTBLUE}{COMMA}%  {BLACK}Pocet poruch od posledneho servisu: {LTBLUE}{COMMA}
@@ -3040,7 +3028,7 @@
 STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Vycentrovat pohlad na lietadlo
 STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Poslat lietadlo do hangaru
 STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Zobrazit detaily o lietadle
-STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Cena: {CURRENCY} Max. rychlost: {VELOCITY}{}Kapacita: {COMMA} cestujucich, {COMMA} balikov posty{}Naklady na prevadzku: {CURRENCY}/rok
+STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Cena: {CURRENCY} Max. rýchlost: {VELOCITY}{}Kapacita: {COMMA} cestujúcich, {COMMA} balíkov pošty{}Náklady na prevádzku: {CURRENCY}/rok
 
 STR_A030_NAME_AIRCRAFT                                          :{WHITE}Pomenovat lietadlo
 STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}Nie je mozne pomenovat lietadlo ...
@@ -3268,7 +3256,7 @@
 STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{WEIGHT_S}
 STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK}   Vykon: {GOLD}{POWER}
 STR_PURCHASE_INFO_SPEED                                         :{BLACK}Rychlost: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Naklady na prevadzku: {GOLD}{CURRENCY}/rok
+STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Náklady na prevádzku: {GOLD}{CURRENCY}/rok
 STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Kapacita: {GOLD}{CARGO} {STRING}
 STR_PURCHASE_INFO_DESIGNED_LIFE                                 :{BLACK}Vyrobene: {GOLD}{NUM}{BLACK} Zivotnost: {GOLD}{COMMA} rokov
 STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Max. spolahlivost: {GOLD}{COMMA}%
@@ -3285,15 +3273,15 @@
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generovat
-STR_RANDOM                                                      :{BLACK}Novy kod
+STR_RANDOM                                                      :{BLACK}Nový kód
 STR_RANDOM_HELP                                                 :{BLACK}Zmenit nahodny kod pre generovanie terenu
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Generovanie krajiny
-STR_RANDOM_SEED                                                 :{BLACK}Nahodny kod:
+STR_RANDOM_SEED                                                 :{BLACK}Náhodný kód:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Kliknite pre zadanie nahodneho kodu
-STR_LAND_GENERATOR                                              :{BLACK}Generator krajiny:
-STR_TREE_PLACER                                                 :{BLACK}Generator stromov:
+STR_LAND_GENERATOR                                              :{BLACK}Generátor krajiny:
+STR_TREE_PLACER                                                 :{BLACK}Generátor stromov:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Orientacia vyskovej mapy:
-STR_TERRAIN_TYPE                                                :{BLACK}Typ terenu:
+STR_TERRAIN_TYPE                                                :{BLACK}Typ terénu:
 STR_QUANTITY_OF_SEA_LAKES                                       :{BLACK}Mnozstvo jazier:
 STR_SMOOTHNESS                                                  :{BLACK}Clenitost:
 STR_SNOW_LINE_HEIGHT                                            :{BLACK}Vyska linie snehu:
@@ -3381,7 +3369,7 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Prepnút priehladnost staníc, garáží, tratí, ...
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Prepnút priehladnost mostov
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Prepnút priehladnost objektov ako sú majáky a antény
-STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Prepnút priehladnost pre ukazovatele nakladnia
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Prepnút priehladnost pre ukazovatele nakladania a vykladania
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3425,11 +3413,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Premenovat vybranú skupinu
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Kliknite pre znemoznenie automatického nahradzovania v skupine
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Zisk tento rok: {GREEN}{CURRENCY} {BLACK}(minulý rok: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Zisk tento rok: {RED}{CURRENCY} {BLACK}(lminulý rok: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Zisk tento rok: {GREEN}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Zisk tento rok: {RED}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/slovenian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/slovenian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Preblizu roba zemljevida
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Premalo denarja - potrebuješ {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebno je ravno zemljišče
 STR_0008_WAITING                                                :{BLACK}Čaka: {WHITE}{STRING}
@@ -1305,7 +1304,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE} ... boja v uporabi!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinate: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinate: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Ni mogoče odstraniti dela postaje ...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Ni mogoče spremeniti tipa železnice tukaj ...
@@ -1416,34 +1415,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Zaščiti igro z geslom, če želiš preprečiti dostop nepovabljenim
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Izberi ozemlje:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kateri zemljevid želiš igrati?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Dovoljeno število gostov:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izberite največje število gostov. Ni potrebno, da so vsi prisotni
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Lokalno omrežje
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :Lokalno omrežje / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (oglašuj)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 igralcev
-STR_NETWORK_1_PLAYERS                                           :1 igralec
-STR_NETWORK_2_PLAYERS                                           :2 igralca
-STR_NETWORK_3_PLAYERS                                           :3 igralci
-STR_NETWORK_4_PLAYERS                                           :4 igralci
-STR_NETWORK_5_PLAYERS                                           :5 igralcev
-STR_NETWORK_6_PLAYERS                                           :6 igralcev
-STR_NETWORK_7_PLAYERS                                           :7 igralcev
-STR_NETWORK_8_PLAYERS                                           :8 igralcev
-STR_NETWORK_9_PLAYERS                                           :9 igralcev
-STR_NETWORK_10_PLAYERS                                          :10 igralcev
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} gost{P "" a i ov}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Dovoljeno število gostov:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izberite največje število gostov. Ni potrebno, da so vsi prisotni
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} podjet{P je ji ja ij}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Dovoljeno število podjetij:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Omeji strežnik na določeno število podjetij
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} opazoval{P ec ca ci cev}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Največje število opazovalcev:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Omeji strežnik na določeno število opazovalcev
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Govorni jezik:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Drugi igralci bodo lahko vedeli, kateri jezik se govori na strežniku
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Začni igro
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Poženi novo večigralsko igro na naključnem ozemlju
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Naloži igro
@@ -1674,10 +1662,10 @@
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Železniški tiri s kombiniranimi signali
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Tiri z normalnimi in uvodnimi signali
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Tiri z normalnimi in izhodnimi signali
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Tiri z normalnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Železniški tiri z normalnimi in kombiniranimi signali
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Tiri z uvodnimi in izhodnimi signali
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tiri z uvodnimi in kombiniranimi signali
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tiri z izhodnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Železniški tiri s pred- in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Železniški tiri z izhodnimi in kombiniranimi signali
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Najprej moraš odstraniti železniško postajo
 
 
@@ -3441,11 +3429,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Preimenuj izbrano skupino
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klikni za zaščito skupine pred splošno samoobnovo
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Dobiček letos: {GREEN}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Dobiček letos: {RED}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Dobiček letos: {GREEN}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Dobiček letos: {RED}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/spanish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/spanish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -12,7 +12,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Demasiado cerca del borde del mapa
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}No hay suficiente dinero - se requiere {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Se requiere terreno llano
 STR_0008_WAITING                                                :{BLACK}Esperando: {WHITE}{STRING}
@@ -1264,7 +1263,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boya en uso!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Coordenadas: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}No se puede retirar parte de la estación...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}No se puede convertir tipo de raíl aquí...
@@ -1375,34 +1374,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Proteje tu juego con una contraseña si no quieres que otras personas se unan a él
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Selecciona mapa:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}¿En qué mapa desea jugar?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máx. clientes permitidos:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Seleccione un número máximo de clientes. No todos los slots serán ocupados.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (anuncio)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 jugadores
-STR_NETWORK_1_PLAYERS                                           :1 jugador
-STR_NETWORK_2_PLAYERS                                           :2 jugadores
-STR_NETWORK_3_PLAYERS                                           :3 jugadores
-STR_NETWORK_4_PLAYERS                                           :4 jugadores
-STR_NETWORK_5_PLAYERS                                           :5 jugadores
-STR_NETWORK_6_PLAYERS                                           :6 jugadores
-STR_NETWORK_7_PLAYERS                                           :7 jugadores
-STR_NETWORK_8_PLAYERS                                           :8 jugadores
-STR_NETWORK_9_PLAYERS                                           :9 jugadores
-STR_NETWORK_10_PLAYERS                                          :10 jugadores
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máx. clientes permitidos:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Seleccione un número máximo de clientes. No todos los slots serán ocupados.
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compañia{P y s}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Máximo compañías:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limitar el servidor a un cierto número de compañías
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectador{P "" es}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Espectadores máximos
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Limitar el servidor a un cierto número de espectadores
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Idioma hablado:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Otros jugadores sabrán cual es el idioma hablado en este servidor.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Empezar Juego
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Empezar un nuevo juego en red desde un mapa al azar o escenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Cargar Juego
@@ -3362,11 +3350,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Renombrar el grupo seleccionado
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Pulsa para proteger este grupo del auto reemplazado global
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Beneficio este año: {GREEN}{CURRENCY} {BLACK}(año pasado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Beneficio este año: {RED}{CURRENCY} {BLACK}(año pasado: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Beneficio este año: {GREEN}{CURRENCY} {BLACK}(año pasado: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Beneficio este año: {RED}{CURRENCY} {BLACK}(año pasado: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/swedish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/swedish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}För nära kanten av kartan
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Inte tillräckligt med pengar - krävs {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Platt mark krävs
 STR_0008_WAITING                                                :{BLACK}Väntar: {WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}... bojen används!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinater: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan ej ta bort del av station...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan inte konvertera spårtyp här...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Vilken karta vill du spela?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max antal tillåtna klienter:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Välj max antal tillåtna klienter. Alla platser måste inte fyllas.
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (publik)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :Inga spelare
-STR_NETWORK_1_PLAYERS                                           :1 spelare
-STR_NETWORK_2_PLAYERS                                           :2 spelare
-STR_NETWORK_3_PLAYERS                                           :3 spelare
-STR_NETWORK_4_PLAYERS                                           :4 spelare
-STR_NETWORK_5_PLAYERS                                           :5 spelare
-STR_NETWORK_6_PLAYERS                                           :6 spelare
-STR_NETWORK_7_PLAYERS                                           :7 spelare
-STR_NETWORK_8_PLAYERS                                           :8 spelare
-STR_NETWORK_9_PLAYERS                                           :9 spelare
-STR_NETWORK_10_PLAYERS                                          :10 spelare
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max företag:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Begränsa antalet företag på servern
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max observatörer:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Begränsa antalet observatörer på servern
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Språk som talas:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Andra spelare kommer vara medvetna vilket språk som talas på servern.
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Starta spelet
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Starta ett nytt spel med en slumpmässig karta eller från ett scenario
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Ladda spel
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Järnväg med vanliga signaler
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Järnväg med för-signaler
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Järnväg med utgående signaler
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Järnväg med kombinerade signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Järnväg med normala signaler och för-signaler
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Järnväg med normala signaler och utfarts-signaler
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Järnväg med normala signaler och kombo-signaler
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Järnväg med för- och utfarts-signaler
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Järnväg med för- och kombo-signaler
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Järnväg med utfards-signaler och kombo-signaler
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Måste ta bort tågstationen först
 
 
@@ -3357,10 +3335,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Döp om den valda gruppen
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klicka för att skydda denna grupp från globalt autoutbyte
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Vinst detta år: {GREEN}{CURRENCY} {BLACK}(förra året: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Vinst detta år: {RED}{CURRENCY} {BLACK}(förra året: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Vinst detta år: {GREEN}{CURRENCY} {BLACK}(förra året: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Vinst detta år: {RED}{CURRENCY} {BLACK}(förra året: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/traditional_chinese.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/traditional_chinese.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}太接近版圖邊緣
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}現金不足 - 需要 {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}需要平地
 STR_0008_WAITING                                                :{BLACK}等候:{WHITE}{STRING}
@@ -1263,7 +1262,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...浮標正被使用!
 
-STR_LANDINFO_COORDS                                             :{BLACK}座標:{LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}不能移除車站部份...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}無法轉換軌道種類...
@@ -1376,32 +1374,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}您想玩哪個地圖?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}客戶端上限:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}選擇連線人數上限。未必每個名額都需連線
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :局域網絡(LAN)
 STR_NETWORK_INTERNET                                            :互聯網
 STR_NETWORK_LAN_INTERNET                                        :局域網/互聯網
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (廣告)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 位玩家
-STR_NETWORK_1_PLAYERS                                           :1 位玩家
-STR_NETWORK_2_PLAYERS                                           :2 位玩家
-STR_NETWORK_3_PLAYERS                                           :3 位玩家
-STR_NETWORK_4_PLAYERS                                           :4 位玩家
-STR_NETWORK_5_PLAYERS                                           :5 位玩家
-STR_NETWORK_6_PLAYERS                                           :6 位玩家
-STR_NETWORK_7_PLAYERS                                           :7 位玩家
-STR_NETWORK_8_PLAYERS                                           :8 位玩家
-STR_NETWORK_9_PLAYERS                                           :9 位玩家
-STR_NETWORK_10_PLAYERS                                          :10 位玩家
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}公司上限:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}限制伺服器可以建立的公司數
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}觀看者上限:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}限制可加入的觀察者數量
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}所用的語言:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}讓其他人知道這個伺服器使用的交談語言
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}開始遊戲
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}以隨機地圖或劇本開始新的網路遊戲
 STR_NETWORK_LOAD_GAME                                           :{BLACK}載入遊戲
@@ -1629,13 +1611,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :有一般號誌的鐵軌
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :有入口號誌的鐵軌
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :有出口號誌的鐵軌
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :有綜合號誌的鐵軌
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :有一般號誌及入口號誌的鐵軌
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :有一般號誌及出口號誌的鐵軌
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :有一般號誌及綜合號誌的鐵軌
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :有入口號誌及出口號誌的鐵軌
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :有入口號誌及綜合號誌的鐵軌
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :有出口號誌及綜合號誌的鐵軌
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}必須先移除火車站
 
 
@@ -3361,10 +3339,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}為群組重新命名
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}點此可避免此群組內的設備被來自全域的設定替換
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}本年盈餘: {GREEN}{CURRENCY} {BLACK}(去年: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}本年盈餘:{RED}{CURRENCY} {BLACK}(去年: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}本年盈餘: {GREEN}{CURRENCY} {BLACK}(去年: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}本年盈餘: {RED}{CURRENCY} {BLACK}(去年:{RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/turkish.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/turkish.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -11,7 +11,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Sınıra çok yakın
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Para Yetersiz - şu kadar gerekli: {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Yerin düzleştirilmesi lazım
 STR_0008_WAITING                                                :{BLACK}Bekleyen: {WHITE}{STRING}
@@ -1254,7 +1253,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...samandıra kullanımda!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinatlar: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}İstasyonun parçasi kaldırılamaz...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Ray türü değiştirilemiyor...
@@ -1367,32 +1365,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Hangi haritada oynamak istiyorsun?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}İzin verilen en fazla oyuncu:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}İzin verilen en fazla oyuncu sayısını seç. Her yerin dolması gerekmez
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :İnternet
 STR_NETWORK_LAN_INTERNET                                        :LAN / internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :İnternet (reklam vererek)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 oyuncu
-STR_NETWORK_1_PLAYERS                                           :1 oyuncu
-STR_NETWORK_2_PLAYERS                                           :2 oyuncu
-STR_NETWORK_3_PLAYERS                                           :3 oyuncu
-STR_NETWORK_4_PLAYERS                                           :4 oyuncu
-STR_NETWORK_5_PLAYERS                                           :5 oyuncu
-STR_NETWORK_6_PLAYERS                                           :6 oyuncu
-STR_NETWORK_7_PLAYERS                                           :7 oyuncu
-STR_NETWORK_8_PLAYERS                                           :8 oyuncu
-STR_NETWORK_9_PLAYERS                                           :9 oyuncu
-STR_NETWORK_10_PLAYERS                                          :10 oyuncu
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}En fazla şirket:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Sunucudaki şirket sayısını sınırla
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}En fazla izleyici:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Sunucudaki izleyici sayısını sınırla
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Konuşulan dil:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Diğer oyuncular sunucuda hangi dilin konuşulacağını bilecek
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Oyunu Başlat
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Rastgele harita ya da senaryoda network oyunu aç
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Oyun Yükle
@@ -1613,13 +1595,9 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Normal sinyalli ray
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ön-sinayalli ray
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Çıkış-sinyalli ray
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ön+çikis-sinyalli ray
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Normal ve ön sinyalli ray
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Normal ve çıkış sinyalli ray
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Normal ve birleşik sinyalli ray
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Ön ve Çıkış sinyalli ray
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ön ve birleşik sinyalli ray
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Çıkış ve birleşik sinyalli ray
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Önce tren istasyonu kaldırılmalı
 
 
@@ -3330,10 +3308,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Seçili grubun ismini değiştir
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Bu grubu otomatik yenilemeden ayrı tutmak için tıklayın
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Bu seneki gelir: {GREEN}{CURRENCY} {BLACK}(geçen sene: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Bu seneki gelir: {RED}{CURRENCY} {BLACK}(geçen sene: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Bu seneki gelir: {GREEN}{CURRENCY} {BLACK}(geçen sene: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Bu seneki gelir: {RED}{CURRENCY} {BLACK}(geçen sene: {RED}{CURRENCY}{BLACK})
 
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
--- a/src/lang/ukrainian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/ukrainian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Надто близько до краю карти
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Недостатньо коштів - потрібно {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Потрібна рівна ділянка
 STR_0008_WAITING                                                :{BLACK}Чекає: {WHITE}{STRING}
@@ -1389,7 +1388,7 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...бакен використовується!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Координати: {LTBLUE}{NUM}x{NUM} ({STRING})
+STR_LANDINFO_COORDS                                             :{BLACK}Координати: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Не можна зруйнувати частину станції...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Тут не можна модернізувати колію...
@@ -1500,34 +1499,23 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Захистіть вашу гру паролем, якщо не бажаєте загального доступу
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Виберіть карту:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}На якій карті бажаєте грати?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Макс. клієнтів:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Виберіть максимальну кількість клієнтів. Не всі слоти мають бути зайняті
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :Локальна
 STR_NETWORK_INTERNET                                            :Інтернет
 STR_NETWORK_LAN_INTERNET                                        :Локальна/Інтернет
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (advertise)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 гравців
-STR_NETWORK_1_PLAYERS                                           :1 гравець
-STR_NETWORK_2_PLAYERS                                           :2 гравця
-STR_NETWORK_3_PLAYERS                                           :3 гравця
-STR_NETWORK_4_PLAYERS                                           :4 гравця
-STR_NETWORK_5_PLAYERS                                           :5 гравців
-STR_NETWORK_6_PLAYERS                                           :6 гравців
-STR_NETWORK_7_PLAYERS                                           :7 гравців
-STR_NETWORK_8_PLAYERS                                           :8 гравців
-STR_NETWORK_9_PLAYERS                                           :9 гравців
-STR_NETWORK_10_PLAYERS                                          :10 гравців
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} клієнт{P "" а ів}
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Макс. клієнтів:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Виберіть максимальну кількість клієнтів. Не всі слоти мають бути зайняті
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} компані{P я ї й}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Максимум компаній:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Обмежує кількість компаній на сервері
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} споглядач{P "" а ів}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Максмум глядачів:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Обмежує кількість глядачів на сервері
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Мова:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Інші гравці будуть знати якою мовою спілкуються на сервері
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Почати гру
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Почати нову мережну гру з випадковою картою або сценарієм
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Завантаження гри
@@ -1755,13 +1743,13 @@
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Колія зі звичайними сигналами
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Колія з вхідними сигналами
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Колія з вихідними сигналами
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Колія з комбінованими сигналами
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Колія з комбо-сигналами
 STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Залізнична колія зі звичайним та пре-сигналами
 STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Залізнична колія зі звичайним та вихід-сигналами
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Залізнична колія зі звичайним та комбо-сигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Колія з нормальними і комбо-сигналами
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Залізнична колія з пре- та вихід-сигналами
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Залізнична колія з пре- та комбо-сигналами
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Залізнична колія з вихід- та комбо-сигналами
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Колія з пре- і комбо-сигналами
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Колія з вихідними і комбо-сигналами
 STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Спочатку потрібно знести залізничну станцію
 
 
@@ -3524,11 +3512,6 @@
 STR_GROUP_RENAME_TIP                                            :{BLACK}Перейменувати вибрану групу
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Клікніть, щоб захистити групу від глобальної автозаміни
 
-STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Прибуток цього року: {GREEN}{CURRENCY} {BLACK}(торік: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибуток цього року: {RED}{CURRENCY} {BLACK}(торік: {GREEN}{CURRENCY}{BLACK})
-STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибуток цього року: {GREEN}{CURRENCY} {BLACK}(торік: {RED}{CURRENCY}{BLACK})
-STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Прибуток цього року: {RED}{CURRENCY} {BLACK}(торік: {RED}{CURRENCY}{BLACK})
-
 STR_COMPANY_NAME                                                :{COMPANY}
 STR_ENGINE_NAME                                                 :{ENGINE}
 STR_GROUP_NAME                                                  :{GROUP}
--- a/src/lang/unfinished/afrikaans.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -9,7 +9,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Te naby aan kant van kaart
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nie genoeg kontant nie - vereis {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Platte land vereis
 STR_0008_WAITING                                                :{BLACK}Wagtend: {WHITE}{STRING}
@@ -1142,7 +1141,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...baken is in gebruik!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Neweskikke: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Kan nie deel van stasie verwyder nie...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Kan nie spoor tipe hier verdoel nie...
@@ -1243,32 +1241,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Watter kaart wil jy speel?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Max kliente:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Kies die maksimum nommer van kielnte. Alle gleufe hoef nie om vol te wees nie
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internet
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internet
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (adverteer)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spelers
-STR_NETWORK_1_PLAYERS                                           :1 speler
-STR_NETWORK_2_PLAYERS                                           :2 spelers
-STR_NETWORK_3_PLAYERS                                           :3 spelers
-STR_NETWORK_4_PLAYERS                                           :4 spelers
-STR_NETWORK_5_PLAYERS                                           :5 spelers
-STR_NETWORK_6_PLAYERS                                           :6 spelers
-STR_NETWORK_7_PLAYERS                                           :7 spelers
-STR_NETWORK_8_PLAYERS                                           :8 spelers
-STR_NETWORK_9_PLAYERS                                           :9 spelers
-STR_NETWORK_10_PLAYERS                                          :10 spelers
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Max maatskappye:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Beperk die bedinder na 'n sekere bedrag van maatskappye
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Max aanskouers:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Beperk die bediender na 'n sekere bedrag van aanskouers
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Taal gepraat:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Ander spelers sal weet watter taal op die bediender gepraat is
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Begin Spel
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Begin 'n nuwe netwerk spel van 'n lukraak kaart, of draaiboek
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Laai Spel
--- a/src/lang/unfinished/frisian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/unfinished/frisian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -1,6 +1,6 @@
 ##name Frisian
 ##ownname Frysk
-##isocode fy
+##isocode fy_NL
 
 ##id 0x0000
 STR_NULL                                                        :
@@ -8,7 +8,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Te ticht by de râne fan 'e map
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Net genôch jild - {CURRENCY} nedich
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flak lân nedich
 STR_0008_WAITING                                                :{BLACK}Wachtsjend: {WHITE}{STRING}
--- a/src/lang/unfinished/greek.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/unfinished/greek.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -10,7 +10,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Πολυ κοντά στην άκρη του χάρτη
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Δεν υπάρχουν αρκετά χρήματα - απαιτούνται {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}.
-STR_0005                                                        :{RED}{CURRENCY}.
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Απαιτείται επίπεδο εδαφος
 STR_0008_WAITING                                                :{BLACK}Αναμονη: {WHITE}{STRING}
@@ -1211,7 +1210,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...σημαδούρα σε χρήση
 
-STR_LANDINFO_COORDS                                             :{BLACK}Συντεταγμένες: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Δεν μπορεί να διαλειθεί μέρος του σταθμού...
 STR_CONVERT_RAIL_TIP                                            :{BLACK}Μετατρέψτε/Αλλάξτε τον τύπο της γραμμής
--- a/src/lang/unfinished/latvian.txt	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/lang/unfinished/latvian.txt	Sun Sep 02 11:17:33 2007 +0000
@@ -13,7 +13,6 @@
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Pārāk tuvu kartes malai
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nepietiek naudas - nepieciešami {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
-STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Zemei jābūt plakanai
 STR_0008_WAITING                                                :{BLACK}Gaidam: {WHITE}{STRING.a}
@@ -1190,7 +1189,6 @@
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boja jau tiek lietota!
 
-STR_LANDINFO_COORDS                                             :{BLACK}Koordinātes: {LTBLUE}{NUM}x{NUM} ({STRING})
 
 STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nevar novākt daļu stacijas
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Nevar pārveidot sliežu veidu šeit...
@@ -1302,32 +1300,16 @@
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kuru karti jūs vēlaties spēlēt?
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maks. klientu sk.:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izvēlaties maksimālo klientu skaitu. Ne visiem slotiem ir jābūt aizpildītiem
-STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internets
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internets
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internets (reklamēt)
-STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_0_PLAYERS                                           :0 spēlētāju
-STR_NETWORK_1_PLAYERS                                           :1 spēlētājs
-STR_NETWORK_2_PLAYERS                                           :2 clienti
-STR_NETWORK_3_PLAYERS                                           :3 spēlētāji
-STR_NETWORK_4_PLAYERS                                           :4 spēlētāji
-STR_NETWORK_5_PLAYERS                                           :5 spēlētāji
-STR_NETWORK_6_PLAYERS                                           :6 spēlētāji
-STR_NETWORK_7_PLAYERS                                           :7 spēlētāji
-STR_NETWORK_8_PLAYERS                                           :8 spēlētāji
-STR_NETWORK_9_PLAYERS                                           :9 spēlētāji
-STR_NETWORK_10_PLAYERS                                          :10 spēlētāji
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. uzņēmumu sk.:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ierobežo serveri noteiktam uzņēmumu daudzumam
-STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks. novērotāju sk.:
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ierobēžo serveri noteiktam novērotāju skaitam
-STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Valodu, kurā runā:
 STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Citi lietotāji zinās, kurā valodā tiek runāts uz servera
-STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Sakt spçli
 STR_NETWORK_START_GAME_TIP                                      :{BLACK}Sāk jaunu tīkla spēli ar nejaušu karti vai scenāriju
 STR_NETWORK_LOAD_GAME                                           :{BLACK}Ielādēt spēli
--- a/src/macros.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/macros.h	Sun Sep 02 11:17:33 2007 +0000
@@ -421,6 +421,28 @@
 }
 
 /**
+ * Counts the number of set bits in a variable.
+ *
+ * @param value the value to count the number of bits in.
+ * @return the number of bits.
+ */
+template<typename T> static inline uint COUNTBITS(T value)
+{
+	uint num;
+
+	/* This loop is only called once for every bit set by clearing the lowest
+	 * bit in each loop. The number of bits is therefore equal to the number of
+	 * times the loop was called. It was found at the following website:
+	 * http://graphics.stanford.edu/~seander/bithacks.html */
+
+	for (num = 0; value != 0; num++) {
+		value &= (T)(value - 1);
+	}
+
+	return num;
+}
+
+/**
  * Returns true if value a has only one bit set to 1
  *
  * This macro returns true if only one bit is set.
--- a/src/main_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/main_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -90,7 +90,7 @@
 #ifdef ENABLE_NETWORK
 	case 3: { // Give money, you can only give money in excess of loan
 		const Player *p = GetPlayer(_current_player);
-		Money money = min(p->player_money - p->current_loan, atoi(str) / _currency->rate);
+		Money money = min(p->player_money - p->current_loan, (Money)(atoi(str) / _currency->rate));
 
 		uint32 money_c = clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0
 
@@ -1086,7 +1086,7 @@
 		StringID msg =
 			mode ? STR_0808_CAN_T_RAISE_LAND_HERE : STR_0809_CAN_T_LOWER_LAND_HERE;
 
-		DoCommandP(tile, 8, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO | CMD_MSG(msg));
+		DoCommandP(tile, SLOPE_N, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO | CMD_MSG(msg));
 	} else {
 		SndPlayTileFx(SND_1F_SPLAT, tile);
 
@@ -1113,7 +1113,7 @@
 
 		BEGIN_TILE_LOOP(tile2, sizex, sizey, tile) {
 			if (TileHeight(tile2) == h) {
-				DoCommandP(tile2, 8, (uint32)mode, NULL, CMD_TERRAFORM_LAND | CMD_AUTO);
+				DoCommandP(tile2, SLOPE_N, (uint32)mode, NULL, CMD_TERRAFORM_LAND | CMD_AUTO);
 			}
 		} END_TILE_LOOP(tile2, sizex, sizey, tile)
 	}
@@ -2068,7 +2068,7 @@
 		if (p != NULL) {
 			/* Draw player money */
 			SetDParam(0, p->player_money);
-			DrawStringCentered(w->widget[2].left + 70, 1, p->player_money >= 0 ? STR_0004 : STR_0005, 0);
+			DrawStringCentered(w->widget[2].left + 70, 1, STR_0004, 0);
 		}
 
 		/* Draw status bar */
--- a/src/map.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/map.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -84,7 +84,7 @@
 
 		snprintf(buf, lengthof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed",
 			exp, tile, add);
-#if !defined(_MSC_VER)
+#if !defined(_MSC_VER) || defined(WINCE)
 		fprintf(stderr, "%s:%d %s\n", file, line, buf);
 #else
 		_assert(buf, (char*)file, line);
--- a/src/minilzo.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/minilzo.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -60,7 +60,7 @@
 #  define LZO_HAVE_CONFIG_H
 #endif
 
-#if !defined(LZO_NO_SYS_TYPES_H)
+#if !defined(LZO_NO_SYS_TYPES_H) && !defined(WINCE)
 #  include <sys/types.h>
 #endif
 #include <stdio.h>
--- a/src/misc.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/misc.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -151,7 +151,7 @@
 	InitializeCheats();
 
 	InitTextEffects();
-	InitTextMessage();
+	InitChatMessage();
 	InitializeAnimatedTiles();
 
 	InitializeLandscapeVariables(false);
@@ -273,22 +273,6 @@
 	return i;
 }
 
-int CountBitsSet(uint32 value)
-{
-	int num;
-
-	/* This loop is only called once for every bit set by clearing the lowest
-	 * bit in each loop. The number of bits is therefore equal to the number of
-	 * times the loop was called. It was found at the following website:
-	 * http://graphics.stanford.edu/~seander/bithacks.html */
-
-	for (num = 0; value != 0; num++) {
-		value &= value - 1;
-	}
-
-	return num;
-}
-
 static void Save_NAME()
 {
 	int i;
--- a/src/misc/strapi.hpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/misc/strapi.hpp	Sun Sep 02 11:17:33 2007 +0000
@@ -38,7 +38,7 @@
 /** ::vsprintf wrapper specialization for char */
 template <> /*static*/ inline int CStrApiBaseT<char>::SPrintFL(char *buf, size_t count, const char *fmt, va_list args)
 {
-#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(WINCE) // VC 8.0 and above
 	return ::vsnprintf_s(buf, count, count - 1, fmt, args);
 #else /* ! VC 8.0 and above */
 	return ::vsnprintf(buf, count, fmt, args);
@@ -55,7 +55,7 @@
 /** ::vsprintf wrapper specialization for wchar_t */
 template <> /*static*/ inline int CStrApiBaseT<wchar_t>::SPrintFL(wchar_t *buf, size_t count, const wchar_t *fmt, va_list args)
 {
-#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(WINCE) // VC 8.0 and above
 	return ::_vsnwprintf_s(buf, count, count - 1, fmt, args);
 #else /* ! VC 8.0 and above */
 # if defined(_WIN32)
--- a/src/misc_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/misc_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -130,7 +130,8 @@
 	snprintf(_userstring, lengthof(_userstring), "0x%.4X", tile);
 	SetDParam(0, TileX(tile));
 	SetDParam(1, TileY(tile));
-	SetDParam(2, STR_SPEC_USERSTRING);
+	SetDParam(2, TileHeight(tile));
+	SetDParam(3, STR_SPEC_USERSTRING);
 	GetString(_landinfo_data[3], STR_LANDINFO_COORDS, lastof(_landinfo_data[3]));
 
 	SetDParam(0, STR_01A9_NONE);
--- a/src/music/win32_m.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/music/win32_m.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -11,6 +11,7 @@
 	bool playing;
 	int new_vol;
 	HANDLE wait_obj;
+	HANDLE thread;
 	UINT_PTR devid;
 	char start_song[260];
 } _midi;
@@ -84,8 +85,6 @@
 
 static DWORD WINAPI MidiThread(LPVOID arg)
 {
-	_midi.wait_obj = CreateEvent(NULL, FALSE, FALSE, NULL);
-
 	do {
 		char *s;
 		int vol;
@@ -102,7 +101,7 @@
 			s[0] = '\0';
 
 			// Delay somewhat in case we don't manage to play.
-			if (!_midi.playing) Sleep(5000);
+			if (!_midi.playing) WaitForMultipleObjects(1, &_midi.wait_obj, FALSE, 5000);
 		}
 
 		if (_midi.stop_song && _midi.playing) {
@@ -116,14 +115,13 @@
 		WaitForMultipleObjects(1, &_midi.wait_obj, FALSE, 1000);
 	} while (!_midi.terminate);
 
-	DeleteObject(_midi.wait_obj);
+	MidiIntStopSong();
 	return 0;
 }
 
 const char *MusicDriver_Win32::Start(const char * const *parm)
 {
 	MIDIOUTCAPS midicaps;
-	DWORD threadId;
 	UINT nbdev;
 	UINT_PTR dev;
 	char buf[16];
@@ -143,7 +141,8 @@
 		}
 	}
 
-	if (CreateThread(NULL, 8192, MidiThread, 0, 0, &threadId) == NULL) return "Failed to create thread";
+	if (NULL == (_midi.wait_obj = CreateEvent(NULL, FALSE, FALSE, NULL))) return "Failed to create event";
+	if (NULL == (_midi.thread = CreateThread(NULL, 8192, MidiThread, 0, 0, NULL))) return "Failed to create thread";
 
 	return NULL;
 }
@@ -152,4 +151,7 @@
 {
 	_midi.terminate = true;
 	SetEvent(_midi.wait_obj);
+	WaitForMultipleObjects(1, &_midi.thread, true, INFINITE);
+	CloseHandle(_midi.wait_obj);
+	CloseHandle(_midi.thread);
 }
--- a/src/network/network.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/network/network.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -200,7 +200,7 @@
 	debug_dump_commands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message);
 #endif /* DUMP_COMMANDS */
 	IConsolePrintF(color, "%s", message);
-	AddTextMessage(color, duration, "%s", message);
+	AddChatMessage(color, duration, "%s", message);
 }
 
 // Calculate the frame-lag of a client
--- a/src/network/network_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/network/network_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -35,6 +35,7 @@
 struct network_d {
 	PlayerID company;        // select company in network lobby
 	byte field;              // select text-field in start-server and game-listing
+	byte widget_id;          ///< The widget that has the pop-up input menu
 	NetworkGameList *server; // selected server in lobby and game-listing
 	FiosItem *map;           // selected map in start-server
 };
@@ -70,21 +71,6 @@
 	INVALID_STRING_ID
 };
 
-static const StringID _players_dropdown[] = {
-	STR_NETWORK_0_PLAYERS,
-	STR_NETWORK_1_PLAYERS,
-	STR_NETWORK_2_PLAYERS,
-	STR_NETWORK_3_PLAYERS,
-	STR_NETWORK_4_PLAYERS,
-	STR_NETWORK_5_PLAYERS,
-	STR_NETWORK_6_PLAYERS,
-	STR_NETWORK_7_PLAYERS,
-	STR_NETWORK_8_PLAYERS,
-	STR_NETWORK_9_PLAYERS,
-	STR_NETWORK_10_PLAYERS,
-	INVALID_STRING_ID
-};
-
 static StringID _language_dropdown[NETLANG_COUNT + 1] = {STR_NULL};
 
 void SortNetworkLanguages()
@@ -264,7 +250,7 @@
 				sel->info.grfconfig == NULL);
 
 		SetDParam(0, 0x00);
-		SetDParam(7, _lan_internet_types_dropdown[_network_lan_internet]);
+		SetDParam(1, _lan_internet_types_dropdown[_network_lan_internet]);
 		DrawWindowWidgets(w);
 
 		DrawEditBox(w, &WP(w, network_ql_d).q, 3);
@@ -535,38 +521,38 @@
 }
 
 static const Widget _network_game_window_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,   BGC,     0,    10,     0,    13, STR_00C5,                    STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_RIGHT,  BGC,    11,   449,     0,    13, STR_NETWORK_MULTIPLAYER,     STR_NULL},
-{      WWT_PANEL,   RESIZE_RB,     BGC,     0,   449,    14,   263, 0x0,                         STR_NULL},
+{   WWT_CLOSEBOX,   RESIZE_NONE,   BGC,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,   RESIZE_RIGHT,  BGC,    11,   449,     0,    13, STR_NETWORK_MULTIPLAYER,        STR_NULL},
+{      WWT_PANEL,   RESIZE_RB,     BGC,     0,   449,    14,   263, 0x0,                            STR_NULL},
 
 /* LEFT SIDE */
-{      WWT_PANEL,   RESIZE_LR,     BGC,   290,   440,    22,    33, 0x0,                         STR_NETWORK_ENTER_NAME_TIP},
-
-{      WWT_INSET,   RESIZE_NONE,   BGC,    90,   181,    22,    33, STR_NETWORK_COMBO1,          STR_NETWORK_CONNECTION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   170,   180,    23,    32, STR_0225,                    STR_NETWORK_CONNECTION_TIP},
+{      WWT_PANEL,   RESIZE_LR,     BGC,   290,   440,    22,    33, 0x0,                            STR_NETWORK_ENTER_NAME_TIP},
 
-{ WWT_PUSHTXTBTN,   RESIZE_RIGHT,  BTC,    10,    70,    42,    53, STR_NETWORK_GAME_NAME,       STR_NETWORK_GAME_NAME_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_LR,     BTC,    71,   150,    42,    53, STR_NETWORK_CLIENTS_CAPTION, STR_NETWORK_CLIENTS_CAPTION_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_LR,     BTC,   151,   190,    42,    53, STR_EMPTY,                   STR_NETWORK_INFO_ICONS_TIP},
+{      WWT_INSET,   RESIZE_NONE,   BGC,    90,   181,    22,    33, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP},
+{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   170,   180,    23,    32, STR_0225,                       STR_NETWORK_CONNECTION_TIP},
 
-{     WWT_MATRIX,   RESIZE_RB,     BGC,    10,   190,    54,   236, (13 << 8) + 1,               STR_NETWORK_CLICK_GAME_TO_SELECT},
-{  WWT_SCROLLBAR,   RESIZE_LRB,    BGC,   191,   202,    42,   236, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{ WWT_PUSHTXTBTN,   RESIZE_RIGHT,  BTC,    10,    70,    42,    53, STR_NETWORK_GAME_NAME,          STR_NETWORK_GAME_NAME_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_LR,     BTC,    71,   150,    42,    53, STR_NETWORK_CLIENTS_CAPTION,    STR_NETWORK_CLIENTS_CAPTION_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_LR,     BTC,   151,   190,    42,    53, STR_EMPTY,                      STR_NETWORK_INFO_ICONS_TIP},
 
-{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,    10,   110,   246,   257, STR_NETWORK_FIND_SERVER,     STR_NETWORK_FIND_SERVER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   118,   218,   246,   257, STR_NETWORK_ADD_SERVER,      STR_NETWORK_ADD_SERVER_TIP},
+{     WWT_MATRIX,   RESIZE_RB,     BGC,    10,   190,    54,   236, (13 << 8) + 1,                  STR_NETWORK_CLICK_GAME_TO_SELECT},
+{  WWT_SCROLLBAR,   RESIZE_LRB,    BGC,   191,   202,    42,   236, STR_NULL,                       STR_0190_SCROLL_BAR_SCROLLS_LIST},
+
+{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,    10,   110,   246,   257, STR_NETWORK_FIND_SERVER,        STR_NETWORK_FIND_SERVER_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   118,   218,   246,   257, STR_NETWORK_ADD_SERVER,         STR_NETWORK_ADD_SERVER_TIP},
 
 /* RIGHT SIDE */
-{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   226,   326,   246,   257, STR_NETWORK_START_SERVER,    STR_NETWORK_START_SERVER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   334,   434,   246,   257, STR_012E_CANCEL,             STR_NULL},
-
-{      WWT_PANEL,   RESIZE_LRB,    BGC,   210,   440,    42,   236, 0x0,                         STR_NULL},
+{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   226,   326,   246,   257, STR_NETWORK_START_SERVER,       STR_NETWORK_START_SERVER_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_TB,     BTC,   334,   434,   246,   257, STR_012E_CANCEL,                STR_NULL},
 
-{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   215,   315,   215,   226, STR_NETWORK_JOIN_GAME,       STR_NULL},
-{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   330,   435,   215,   226, STR_NETWORK_REFRESH,         STR_NETWORK_REFRESH_TIP},
+{      WWT_PANEL,   RESIZE_LRB,    BGC,   210,   440,    42,   236, 0x0,                            STR_NULL},
 
-{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   330,   435,   197,   208, STR_NEWGRF_SETTINGS_BUTTON,  STR_NULL},
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   215,   315,   215,   226, STR_NETWORK_JOIN_GAME,          STR_NULL},
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   330,   435,   215,   226, STR_NETWORK_REFRESH,            STR_NETWORK_REFRESH_TIP},
 
-{  WWT_RESIZEBOX,   RESIZE_LRTB,   BGC,   438,   449,   252,   263, 0x0,                         STR_RESIZE_BUTTON },
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,   BTC,   330,   435,   197,   208, STR_NEWGRF_SETTINGS_BUTTON,     STR_NULL},
+
+{  WWT_RESIZEBOX,   RESIZE_LRTB,   BGC,   438,   449,   252,   263, 0x0,                            STR_RESIZE_BUTTON },
 
 {   WIDGETS_END},
 };
@@ -631,11 +617,11 @@
 		int y = NSSWND_START, pos;
 		const FiosItem *item;
 
-		SetDParam( 7, _connection_types_dropdown[_network_advertise]);
-		SetDParam( 9, _players_dropdown[_network_game_info.clients_max]);
-		SetDParam(11, _players_dropdown[_network_game_info.companies_max]);
-		SetDParam(13, _players_dropdown[_network_game_info.spectators_max]);
-		SetDParam(15, STR_NETWORK_LANG_ANY + _network_game_info.server_lang);
+		SetDParam(1, _connection_types_dropdown[_network_advertise]);
+		SetDParam(2, _network_game_info.clients_max);
+		SetDParam(3, _network_game_info.companies_max);
+		SetDParam(4, _network_game_info.spectators_max);
+		SetDParam(5, STR_NETWORK_LANG_ANY + _network_game_info.server_lang);
 		DrawWindowWidgets(w);
 
 		GfxFillRect(11, 63, 258, 215, 0xD7);
@@ -676,11 +662,12 @@
 		nd->field = e->we.click.widget;
 		switch (e->we.click.widget) {
 		case 0: /* Close 'X' */
-		case 19: /* Cancel button */
+		case 22: /* Cancel button */
 			ShowNetworkGameWindow();
 			break;
 
 		case 4: /* Set password button */
+			nd->widget_id = 4;
 			ShowQueryString(BindCString(_network_server_password), STR_NETWORK_SET_PASSWORD, 20, 250, w, CS_ALPHANUMERAL);
 			break;
 
@@ -696,16 +683,38 @@
 		case 7: case 8: /* Connection type */
 			ShowDropDownMenu(w, _connection_types_dropdown, _network_advertise, 8, 0, 0); // do it for widget 8
 			break;
-		case 9: case 10: /* Number of Players (hide 0 and 1 players) */
-			ShowDropDownMenu(w, _players_dropdown, _network_game_info.clients_max, 10, 0, 3);
+		case  9: case 11: // Click on up/down button for number of players
+		case 12: case 14: // Click on up/down button for number of companies
+		case 15: case 17: // Click on up/down button for number of spectators
+			/* Don't allow too fast scrolling */
+			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
+				HandleButtonClick(w, e->we.click.widget);
+				SetWindowDirty(w);
+				switch (e->we.click.widget) {
+					default: NOT_REACHED();
+					case  9: case 11: _network_game_info.clients_max    = clamp(_network_game_info.clients_max    + e->we.click.widget - 10, 2, MAX_CLIENTS); break;
+					case 12: case 14: _network_game_info.companies_max  = clamp(_network_game_info.companies_max  + e->we.click.widget - 13, 1, MAX_PLAYERS); break;
+					case 15: case 17: _network_game_info.spectators_max = clamp(_network_game_info.spectators_max + e->we.click.widget - 16, 0, MAX_CLIENTS); break;
+				}
+			}
+			_left_button_clicked = false;
 			break;
-		case 11: case 12: /* Number of Companies (hide 0, 9 and 10 companies; max is 8) */
-			ShowDropDownMenu(w, _players_dropdown, _network_game_info.companies_max, 12, 0, 1537);
+		case 10: // Click on number of players
+			nd->widget_id = 10;
+			SetDParam(0, _network_game_info.clients_max);
+			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_CLIENTS, 3, 50, w, CS_NUMERAL);
 			break;
-		case 13: case 14: /* Number of Spectators */
-			ShowDropDownMenu(w, _players_dropdown, _network_game_info.spectators_max, 14, 0, 0);
+		case 13: // Click on number of companies
+			nd->widget_id = 13;
+			SetDParam(0, _network_game_info.companies_max);
+			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_COMPANIES, 3, 50, w, CS_NUMERAL);
 			break;
-		case 15: case 16: { /* Language */
+		case 16: // Click on number of companies
+			nd->widget_id = 16;
+			SetDParam(0, _network_game_info.spectators_max);
+			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_SPECTATORS, 3, 50, w, CS_NUMERAL);
+			break;
+		case 18: case 19: { /* Language */
 			uint sel = 0;
 			for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) {
 				if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _network_game_info.server_lang) {
@@ -713,10 +722,10 @@
 					break;
 				}
 			}
-			ShowDropDownMenu(w, _language_dropdown, sel, 16, 0, 0);
+			ShowDropDownMenu(w, _language_dropdown, sel, 19, 0, 0);
 			break;
 		}
-		case 17: /* Start game */
+		case 20: /* Start game */
 			_is_network_server = true;
 
 			if (nd->map == NULL) { // start random new game
@@ -733,7 +742,7 @@
 				}
 			}
 			break;
-		case 18: /* Load game */
+		case 21: /* Load game */
 			_is_network_server = true;
 			/* XXX - WC_NETWORK_WINDOW should stay, but if it stays, it gets
 			 * copied all the elements of 'load game' and upon closing that, it segfaults */
@@ -769,39 +778,57 @@
 		}
 		break;
 
-	case WE_ON_EDIT_TEXT: {
-		ttd_strlcpy(_network_server_password, e->we.edittext.str, lengthof(_network_server_password));
-		_network_game_info.use_password = (_network_server_password[0] != '\0');
+	case WE_ON_EDIT_TEXT:
+		if (e->we.edittext.str == NULL) break;
+
+		if (nd->widget_id == 4) {
+			ttd_strlcpy(_network_server_password, e->we.edittext.str, lengthof(_network_server_password));
+			_network_game_info.use_password = (_network_server_password[0] != '\0');
+		} else {
+			int32 value = atoi(e->we.edittext.str);
+			InvalidateWidget(w, nd->widget_id);
+			switch (nd->widget_id) {
+				default: NOT_REACHED();
+				case 10: _network_game_info.clients_max    = clamp(value, 2, MAX_CLIENTS); break;
+				case 13: _network_game_info.companies_max  = clamp(value, 1, MAX_PLAYERS); break;
+				case 16: _network_game_info.spectators_max = clamp(value, 0, MAX_CLIENTS); break;
+			}
+		}
+
 		SetWindowDirty(w);
-	} break;
+		break;
 	}
 }
 
 static const Widget _network_start_server_window_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,   BGC,     0,    10,     0,    13, STR_00C5,                      STR_018B_CLOSE_WINDOW },
-{    WWT_CAPTION,   RESIZE_NONE,   BGC,    11,   419,     0,    13, STR_NETWORK_START_GAME_WINDOW, STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,   BGC,     0,   419,    14,   243, 0x0,                           STR_NULL},
-
-{      WWT_PANEL,   RESIZE_NONE,   BGC,   100,   272,    22,    33, 0x0,                           STR_NETWORK_NEW_GAME_NAME_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   285,   405,    22,    33, STR_NETWORK_SET_PASSWORD,      STR_NETWORK_PASSWORD_TIP},
+{   WWT_CLOSEBOX,   RESIZE_NONE,   BGC,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW },
+{    WWT_CAPTION,   RESIZE_NONE,   BGC,    11,   419,     0,    13, STR_NETWORK_START_GAME_WINDOW,  STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,   BGC,     0,   419,    14,   243, 0x0,                            STR_NULL},
 
-{      WWT_INSET,   RESIZE_NONE,   BGC,    10,   271,    62,   216, 0x0,                           STR_NETWORK_SELECT_MAP_TIP},
-{  WWT_SCROLLBAR,   RESIZE_NONE,   BGC,   259,   270,    63,   215, 0x0,                           STR_0190_SCROLL_BAR_SCROLLS_LIST},
-/* Combo boxes to control Connection Type / Max Clients / Max Companies / Max Observers / Language */
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,    77,    88, STR_NETWORK_COMBO1,            STR_NETWORK_CONNECTION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,    78,    87, STR_0225,                      STR_NETWORK_CONNECTION_TIP},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   109,   120, STR_NETWORK_COMBO2,            STR_NETWORK_NUMBER_OF_CLIENTS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   110,   119, STR_0225,                      STR_NETWORK_NUMBER_OF_CLIENTS_TIP},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   141,   152, STR_NETWORK_COMBO3,            STR_NETWORK_NUMBER_OF_COMPANIES_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   142,   151, STR_0225,                      STR_NETWORK_NUMBER_OF_COMPANIES_TIP},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   173,   184, STR_NETWORK_COMBO4,            STR_NETWORK_NUMBER_OF_SPECTATORS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   174,   183, STR_0225,                      STR_NETWORK_NUMBER_OF_SPECTATORS_TIP},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   205,   216, STR_NETWORK_COMBO5,            STR_NETWORK_LANGUAGE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   206,   215, STR_0225,                      STR_NETWORK_LANGUAGE_TIP},
+{      WWT_PANEL,   RESIZE_NONE,   BGC,   100,   272,    22,    33, 0x0,                            STR_NETWORK_NEW_GAME_NAME_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   285,   405,    22,    33, STR_NETWORK_SET_PASSWORD,       STR_NETWORK_PASSWORD_TIP},
 
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,    40,   140,   224,   235, STR_NETWORK_START_GAME,        STR_NETWORK_START_GAME_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   150,   250,   224,   235, STR_NETWORK_LOAD_GAME,         STR_NETWORK_LOAD_GAME_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   260,   360,   224,   235, STR_012E_CANCEL,               STR_NULL},
+{      WWT_INSET,   RESIZE_NONE,   BGC,    10,   271,    62,   216, 0x0,                            STR_NETWORK_SELECT_MAP_TIP},
+{  WWT_SCROLLBAR,   RESIZE_NONE,   BGC,   259,   270,    63,   215, 0x0,                            STR_0190_SCROLL_BAR_SCROLLS_LIST},
+/* Combo/selection boxes to control Connection Type / Max Clients / Max Companies / Max Observers / Language */
+{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,    77,    88, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP},
+{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,    78,    87, STR_0225,                       STR_NETWORK_CONNECTION_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   280,   291,   109,   120, SPR_ARROW_DOWN,                 STR_NETWORK_NUMBER_OF_CLIENTS_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BGC,   292,   397,   109,   120, STR_NETWORK_CLIENTS_SELECT,     STR_NETWORK_NUMBER_OF_CLIENTS_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   398,   410,   109,   120, SPR_ARROW_UP,                   STR_NETWORK_NUMBER_OF_CLIENTS_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   280,   291,   141,   152, SPR_ARROW_DOWN,                 STR_NETWORK_NUMBER_OF_COMPANIES_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BGC,   292,   397,   141,   152, STR_NETWORK_COMPANIES_SELECT,   STR_NETWORK_NUMBER_OF_COMPANIES_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   398,   410,   141,   152, SPR_ARROW_UP,                   STR_NETWORK_NUMBER_OF_COMPANIES_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   280,   291,   173,   184, SPR_ARROW_DOWN,                 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BGC,   292,   397,   173,   184, STR_NETWORK_SPECTATORS_SELECT,  STR_NETWORK_NUMBER_OF_SPECTATORS_TIP},
+{     WWT_IMGBTN,   RESIZE_NONE,   BGC,   398,   410,   173,   184, SPR_ARROW_UP,                   STR_NETWORK_NUMBER_OF_SPECTATORS_TIP},
+
+{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   205,   216, STR_NETWORK_LANGUAGE_COMBO,     STR_NETWORK_LANGUAGE_TIP},
+{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   206,   215, STR_0225,                       STR_NETWORK_LANGUAGE_TIP},
+
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,    40,   140,   224,   235, STR_NETWORK_START_GAME,         STR_NETWORK_START_GAME_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   150,   250,   224,   235, STR_NETWORK_LOAD_GAME,          STR_NETWORK_LOAD_GAME_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,   260,   360,   224,   235, STR_012E_CANCEL,                STR_NULL},
 {   WIDGETS_END},
 };
 
--- a/src/network/network_server.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/network/network_server.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -822,6 +822,11 @@
 		return false;
 	}
 
+	if (cp->cmd != CMD_PLAYER_CTRL && !IsValidPlayer(cp->player) && ci->client_index != NETWORK_SERVER_INDEX) {
+		IConsolePrintF(_icolour_err, "WARNING: spectator issueing command from client %d (IP: %s), kicking...", ci->client_index, GetPlayerIP(ci));
+		return false;
+	}
+
 	return true;
 }
 
--- a/src/newgrf.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -1242,6 +1242,14 @@
 				housespec->random_colour[2] = 0x0C;  // they stand for red, blue, orange and green
 				housespec->random_colour[3] = 0x06;
 
+				/* Make sure that the third cargo type is valid in this
+				 * climate. This can cause problems when copying the properties
+				 * of a house that accepts food, where the new house is valid
+				 * in the temperate climate. */
+				if (!GetCargo(housespec->accepts_cargo[2])->IsValid()) {
+					housespec->cargo_acceptance[2] = 0;
+				}
+
 				/**
 				 * New houses do not (currently) expect to have a default start
 				 * date before 1930, as this breaks the build date stuff.
@@ -1280,9 +1288,13 @@
 
 				/* If value of goods is negative, it means in fact food or, if in toyland, fizzy_drink acceptance.
 				 * Else, we have "standard" 3rd cargo type, goods or candy, for toyland once more */
-				housespec->accepts_cargo[2] = (goods >= 0) ? ((_opt.landscape == LT_TOYLAND) ? CT_CANDY : CT_GOODS) :
+				CargoID cid = (goods >= 0) ? ((_opt.landscape == LT_TOYLAND) ? CT_CANDY : CT_GOODS) :
 						((_opt.landscape == LT_TOYLAND) ? CT_FIZZY_DRINKS : CT_FOOD);
 
+				/* Make sure the cargo type is valid in this climate. */
+				if (!GetCargo(cid)->IsValid()) goods = 0;
+
+				housespec->accepts_cargo[2] = cid;
 				housespec->cargo_acceptance[2] = abs(goods); // but we do need positive value here
 			} break;
 
@@ -1712,12 +1724,7 @@
 				IndustryTileSpec **tilespec = &_cur_grffile->indtspec[indtid + i];
 				byte subs_id = grf_load_byte(&buf);
 
-				if (subs_id == 0xFF) {
-					/* Instead of defining a new industry, a substitute industry id
-					 * of 0xFF disables the old industry with the current id. */
-					tsp->enabled = false;
-					continue;
-				} else if (subs_id >= NEW_INDUSTRYTILEOFFSET) {
+				if (subs_id >= NEW_INDUSTRYTILEOFFSET) {
 					/* The substitute id must be one of the original industry tile. */
 					grfmsg(2, "IndustryTilesChangeInfo: Attempt to use new industry tile %u as substitute industry tile for %u. Ignoring.", subs_id, indtid + i);
 					return false;
--- a/src/newgrf_engine.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_engine.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -516,14 +516,14 @@
 				byte chain_before = 0;
 				byte chain_after  = 0;
 
-				for (u = GetFirstVehicleInChain(v); u != v; u = u->next) {
+				for (u = v->First(); u != v; u = u->Next()) {
 					chain_before++;
 					if (variable == 0x41 && u->engine_type != v->engine_type) chain_before = 0;
 				}
 
-				while (u->next != NULL && (variable == 0x40 || u->next->engine_type == v->engine_type)) {
+				while (u->Next() != NULL && (variable == 0x40 || u->Next()->engine_type == v->engine_type)) {
 					chain_after++;
-					u = u->next;
+					u = u->Next();
 				}
 
 				return chain_before | chain_after << 8 | (chain_before + chain_after + (variable == 0x41)) << 16;
@@ -544,7 +544,7 @@
 			memset(common_cargos, 0, sizeof(common_cargos));
 			memset(common_subtypes, 0, sizeof(common_subtypes));
 
-			for (u = v; u != NULL; u = u->next) {
+			for (u = v; u != NULL; u = u->Next()) {
 				/* Skip empty engines */
 				if (u->cargo_cap == 0) continue;
 
@@ -579,7 +579,7 @@
 			if (v->type != VEH_AIRCRAFT) return UINT_MAX;
 
 			{
-				const Vehicle *w = v->next;
+				const Vehicle *w = v->Next();
 				uint16 altitude = v->z_pos - w->z_pos; // Aircraft height - shadow height
 				byte airporttype;
 
@@ -610,8 +610,8 @@
 			 */
 			if (v->type != VEH_TRAIN) return 0;
 
-			const Vehicle *u_p = GetPrevVehicleInChain(v);
-			const Vehicle *u_n = v->next;
+			const Vehicle *u_p = v->Previous();
+			const Vehicle *u_n = v->Next();
 			DirDiff f = (u_p == NULL) ?  DIRDIFF_SAME : DirDifference(u_p->direction, v->direction);
 			DirDiff b = (u_n == NULL) ?  DIRDIFF_SAME : DirDifference(v->direction, u_n->direction);
 			DirDiff t = ChangeDirDiff(f, b);
@@ -644,7 +644,7 @@
 
 			{
 				uint count = 0;
-				for (; v != NULL; v = v->next) {
+				for (; v != NULL; v = v->Next()) {
 					if (v->engine_type == parameter) count++;
 				}
 				return count;
@@ -735,7 +735,7 @@
 		case 0x57: return GB(ClampToI32(v->profit_last_year),  8, 24);
 		case 0x58: return GB(ClampToI32(v->profit_last_year), 16, 16);
 		case 0x59: return GB(ClampToI32(v->profit_last_year), 24,  8);
-		case 0x5A: return v->next == NULL ? INVALID_VEHICLE : v->next->index;
+		case 0x5A: return v->Next() == NULL ? INVALID_VEHICLE : v->Next()->index;
 		case 0x5C: return ClampToI32(v->value);
 		case 0x5D: return GB(ClampToI32(v->value),  8, 24);
 		case 0x5E: return GB(ClampToI32(v->value), 16, 16);
@@ -758,8 +758,8 @@
 				case 0x75: return GB(v->u.rail.cached_power,  8, 24);
 				case 0x76: return GB(v->u.rail.cached_power, 16, 16);
 				case 0x77: return GB(v->u.rail.cached_power, 24,  8);
-				case 0x7C: return v->first->index;
-				case 0x7D: return GB(v->first->index, 8, 8);
+				case 0x7C: return v->First()->index;
+				case 0x7D: return GB(v->First()->index, 8, 8);
 				case 0x7F: return 0; // Used for vehicle reversing hack in TTDP
 			}
 			break;
@@ -804,7 +804,7 @@
 	if (v == NULL) return group->g.real.loading[0];
 
 	if (v->type == VEH_TRAIN) {
-		in_motion = GetFirstVehicleInChain(v)->current_order.type != OT_LOADING;
+		in_motion = v->First()->current_order.type != OT_LOADING;
 	} else {
 		in_motion = v->current_order.type != OT_LOADING;
 	}
@@ -832,7 +832,7 @@
 	res->ResolveReal   = &VehicleResolveReal;
 
 	res->u.vehicle.self   = v;
-	res->u.vehicle.parent = (v != NULL && v->HasFront()) ? GetFirstVehicleInChain(v) : v;
+	res->u.vehicle.parent = (v != NULL && v->HasFront()) ? v->First() : v;
 
 	res->u.vehicle.self_type = engine_type;
 
@@ -914,7 +914,7 @@
 
 	if (v == NULL) return group->g.result.sprite;
 
-	return group->g.result.sprite + (info_view ? 0 : (v->next->next->u.air.state % group->g.result.num_sprites));
+	return group->g.result.sprite + (info_view ? 0 : (v->Next()->Next()->u.air.state % group->g.result.num_sprites));
 }
 
 
@@ -1033,14 +1033,14 @@
 			 * i.e.), so we give them all the NEW_CARGO triggered
 			 * vehicle's portion of random bits. */
 			assert(first);
-			DoTriggerVehicle((v->type == VEH_TRAIN) ? GetFirstVehicleInChain(v) : v, VEHICLE_TRIGGER_ANY_NEW_CARGO, new_random_bits, false);
+			DoTriggerVehicle((v->type == VEH_TRAIN) ? v->First() : v, VEHICLE_TRIGGER_ANY_NEW_CARGO, new_random_bits, false);
 			break;
 
 		case VEHICLE_TRIGGER_DEPOT:
 			/* We now trigger the next vehicle in chain recursively.
 			 * The random bits portions may be different for each
 			 * vehicle in chain. */
-			if (v->next != NULL) DoTriggerVehicle(v->next, trigger, 0, true);
+			if (v->Next() != NULL) DoTriggerVehicle(v->Next(), trigger, 0, true);
 			break;
 
 		case VEHICLE_TRIGGER_EMPTY:
@@ -1048,14 +1048,14 @@
 			 * recursively.  The random bits portions must be same
 			 * for each vehicle in chain, so we give them all
 			 * first chained vehicle's portion of random bits. */
-			if (v->next != NULL) DoTriggerVehicle(v->next, trigger, first ? new_random_bits : base_random_bits, false);
+			if (v->Next() != NULL) DoTriggerVehicle(v->Next(), trigger, first ? new_random_bits : base_random_bits, false);
 			break;
 
 		case VEHICLE_TRIGGER_ANY_NEW_CARGO:
 			/* Now pass the trigger recursively to the next vehicle
 			 * in chain. */
 			assert(!first);
-			if (v->next != NULL) DoTriggerVehicle(v->next, VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false);
+			if (v->Next() != NULL) DoTriggerVehicle(v->Next(), VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false);
 			break;
 	}
 }
--- a/src/newgrf_house.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_house.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -33,6 +33,8 @@
 
 void CheckHouseIDs()
 {
+	InitializeBuildingCounts();
+
 	for (TileIndex t = 0; t < MapSize(); t++) {
 		HouseID house_id;
 
@@ -42,13 +44,11 @@
 		if (!GetHouseSpecs(house_id)->enabled && house_id >= NEW_HOUSE_OFFSET) {
 			/* The specs for this type of house are not available any more, so
 			 * replace it with the substitute original house type. */
-			SetHouseType(t, _house_mngr.GetSubstituteID(house_id));
+			house_id = _house_mngr.GetSubstituteID(house_id);
+			SetHouseType(t, house_id);
 		}
+		IncreaseBuildingCount(GetTownByTile(t), house_id);
 	}
-
-	InitializeBuildingCounts();
-	AfterLoadCountBuildings();
-
 }
 
 HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid)
--- a/src/newgrf_industries.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_industries.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -78,7 +78,7 @@
 /** Make an analysis of a tile and check for its belonging to the same
  * industry, and/or the same grf file
  * @param new_tile TileIndex of the tile to query
- * @param old_tile TileINdex of teh reference tile
+ * @param old_tile TileIndex of the reference tile
  * @param i Industry to which old_tile belongs to
  * @return value encoded as per NFO specs */
 uint32 GetIndustryIDAtOffset(TileIndex new_tile, TileIndex old_tile, const Industry *i)
@@ -87,8 +87,8 @@
 
 		if (GetIndustryIndex(new_tile) == i->index) {  // Does it belong to the same industry?
 			IndustryGfx gfx = GetIndustryGfx(new_tile);
-			const IndustryTileSpec *indtsp = GetIndustryTileSpec(gfx, false);
-			const IndustryTileSpec *indold = GetIndustryTileSpec(GetIndustryGfx(old_tile), false);
+			const IndustryTileSpec *indtsp = GetIndustryTileSpec(gfx);
+			const IndustryTileSpec *indold = GetIndustryTileSpec(GetIndustryGfx(old_tile));
 
 			if (gfx < NEW_INDUSTRYOFFSET) {  // Does it belongs to an old type?
 				/* It is an old tile.  We have to see if it's been overriden */
@@ -133,6 +133,56 @@
 	return best_dist;
 }
 
+/** Implementation of both var 67 and 68
+ * since the mechanism is almost the same, it is easier to regroup them on the same
+ * function.
+ * @param param_setID parameter given to the callback, which is the set id, or the local id, in our terminology
+ * @param layout_filter on what layout do we filter?
+ * @param current Industry for which the inquiry is made
+ * @return the formatted answer to the callback : rr(reserved) cc(count) dddd(manhattan distance of closest sister)
+ */
+static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout_filter, const Industry *current)
+{
+	uint32 GrfID = GetRegister(0x100);  ///< Get the GRFID of the definition to look for in register 100h
+	IndustryType ind_index;
+	uint32 closest_dist = MAX_UVALUE(uint32);
+	byte count = 0;
+
+	/* Determine what will be the industry type to look for */
+	switch (GrfID) {
+		case 0:  // this is a default industry type
+			ind_index = param_setID;
+			break;
+
+		case 0xFFFFFFFF: // current grf
+			ind_index = GetIndustrySpec(current->type)->grf_prop.grffile->grfid;
+			/*Fall through*/
+
+		default: //use the grfid specified in register 100h
+			ind_index = MapNewGRFIndustryType(param_setID, GrfID);
+			break;
+	}
+
+	if (layout_filter == 0) {
+		/* If the filter is 0, it could be because none was specified as well as being really a 0.
+		 * In either case, just do the regular var67 */
+		closest_dist = GetClosestIndustry(current->xy, ind_index, current);
+		count = GetIndustryTypeCount(ind_index);
+	} else {
+		/* Count only those who match the same industry type and layout filter
+		 * Unfortunately, we have to do it manually */
+		const Industry *i;
+		FOR_ALL_INDUSTRIES(i) {
+			if (i->type == ind_index && i != current && i->selected_layout == layout_filter) {
+				closest_dist = min(closest_dist, DistanceManhattan(current->xy, i->xy));
+				count++;
+			}
+		}
+	}
+
+	return count << 16 | GB(closest_dist, 0, 16);
+}
+
 /** This function implements the industries variables that newGRF defines.
  * @param variable that is queried
  * @param parameter unused
@@ -160,6 +210,9 @@
 		/* Manhattan distance of closes dry/water tile */
 		case 0x43: return GetClosestWaterDistance(tile, (object->u.industry_location.spec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
 
+		/* Layout number */
+		case 0x44: return industry->selected_layout;
+
 		/* Get industry ID at offset param */
 		case 0x60: return GetIndustryIDAtOffset(GetNearbyTile(parameter, industry->xy), tile, industry);
 
@@ -169,7 +222,7 @@
 		case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
 
 		/* Animation stage of nearby tiles */
-		case 0x63 : {
+		case 0x63: {
 			tile = GetNearbyTile(parameter, tile);
 			if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == industry) {
 				return GetIndustryAnimationState(tile);
@@ -185,11 +238,9 @@
 		case 0x66: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceSquare(tile, industry->town->xy), 0xFFFF);
 
 		/* Count of industry, distance of closest instance
-		 * format is rr(reserved) cc(count)  dddd(manhattan distance of closest sister)
-		 * A lot more should be done, since it has to check for local id, grf id etc...
-		 * let's just say it is a beginning ;) */
-		case 0x67: return GetIndustryTypeCount(industry->type) << 16 | 0;
-		case 0x68: break;
+		 * 68 is the same as 67, but with a filtering on selected layout */
+		case 0x67:
+		case 0x68: return GetCountAndDistanceOfClosestInstance(parameter, variable == 0x68 ? GB(GetRegister(0x101), 0, 8) : 0, industry);
 
 		/* Industry structure access*/
 		case 0x80: return industry->xy;
--- a/src/newgrf_industrytiles.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_industrytiles.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -35,7 +35,7 @@
 	byte tile_type;
 	bool is_same_industry;
 
-	tile = GetNearbyTile(parameter, tile);
+	if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required
 	is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
 	tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1 | (is_same_industry ? 1 : 0);
 
@@ -236,6 +236,7 @@
 {
 	Industry ind;
 	ind.xy = 0;
+	ind.width = 0;
 	ind.type = type;
 
 	uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, 0, gfx, &ind, tile);
--- a/src/newgrf_station.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_station.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -429,7 +429,7 @@
 			uint32 value = 0;
 
 			for (cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
-				if (st->goods[cargo_type].acceptance) SETBIT(value, cargo_type);
+				if (HASBIT(st->goods[cargo_type].acceptance_pickup, GoodsEntry::PICKUP)) SETBIT(value, cargo_type);
 			}
 			return value;
 		}
@@ -467,7 +467,7 @@
 			case 0x62: return ge->rating;
 			case 0x63: return ge->cargo.DaysInTransit();
 			case 0x64: return ge->last_speed | (ge->last_age << 8);
-			case 0x65: return ge->acceptance << 3;
+			case 0x65: return GB(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1) << 3;
 		}
 	}
 
@@ -476,7 +476,7 @@
 		const GoodsEntry *g = &st->goods[GB(variable - 0x8C, 3, 4)];
 		switch (GB(variable - 0x8C, 0, 3)) {
 			case 0: return g->cargo.Count();
-			case 1: return GB(min(g->cargo.Count(), 4095), 0, 4) | (g->acceptance << 7);
+			case 1: return GB(min(g->cargo.Count(), 4095), 0, 4) | (GB(g->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1) << 7);
 			case 2: return g->days_since_pickup;
 			case 3: return g->rating;
 			case 4: return g->cargo.Source();
--- a/src/newgrf_text.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/newgrf_text.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -101,7 +101,7 @@
 	{"es_ES", GRFLX_SPANISH},
 	{"af_ZA", GRFLX_AFRIKAANS},
 	{"hr_HR", GRFLX_CROATIAN},
-	{"cs_CS", GRFLX_CZECH},
+	{"cs_CZ", GRFLX_CZECH},
 	{"ca_ES", GRFLX_CATALAN},
 	{"da_DA", GRFLX_DANISH},
 	{"nl_NL", GRFLX_DUTCH},
--- a/src/oldloader.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/oldloader.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -579,12 +579,15 @@
 	Station *st = GetStation(_current_station_id);
 	GoodsEntry *ge = &st->goods[num];
 	bool ret = LoadChunk(ls, ge, goods_chunk);
-	if (ret && GB(_waiting_acceptance, 0, 12) != 0) {
+	if (!ret) return false;
+
+	SB(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1, HASBIT(_waiting_acceptance, 15));
+	SB(ge->acceptance_pickup, GoodsEntry::PICKUP, 1, _cargo_source != 0xFF);
+	if (GB(_waiting_acceptance, 0, 12) != 0) {
 		CargoPacket *cp = new CargoPacket();
 		cp->source          = (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source;
 		cp->count           = GB(_waiting_acceptance, 0, 12);
 		cp->days_in_transit = _cargo_days;
-		ge->acceptance      = HASBIT(_waiting_acceptance, 15);
 		ge->cargo.Append(cp);
 	}
 	return ret;
@@ -1056,7 +1059,7 @@
 			default:   v->spritenum >>= 1; break;
 		}
 
-		if (_old_next_ptr != 0xFFFF) v->next = GetVehicle(_old_next_ptr);
+		if (_old_next_ptr != 0xFFFF) v->SetNext(GetVehicle(_old_next_ptr));
 
 		v->string_id = RemapOldStringID(_old_string_id);
 
--- a/src/oldpool.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/oldpool.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -18,6 +18,7 @@
 
 	DEBUG(misc, 4, "[Pool] (%s) cleaning pool..", this->name);
 
+	this->cleaning_pool = true;
 	/* Free all blocks */
 	for (i = 0; i < this->current_blocks; i++) {
 		if (this->clean_block_proc != NULL) {
@@ -25,6 +26,7 @@
 		}
 		free(this->blocks[i]);
 	}
+	this->cleaning_pool = false;
 
 	/* Free the block itself */
 	free(this->blocks);
--- a/src/oldpool.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/oldpool.h	Sun Sep 02 11:17:33 2007 +0000
@@ -25,7 +25,7 @@
 				OldMemoryPoolNewBlock *new_block_proc, OldMemoryPoolCleanBlock *clean_block_proc) :
 		name(name), max_blocks(max_blocks), block_size_bits(block_size_bits),
 		new_block_proc(new_block_proc), clean_block_proc(clean_block_proc), current_blocks(0),
-		total_items(0), item_size(item_size), first_free_index(0), blocks(NULL) {}
+		total_items(0), cleaning_pool(false), item_size(item_size), first_free_index(0), blocks(NULL) {}
 
 	const char* name;     ///< Name of the pool (just for debugging)
 
@@ -40,6 +40,7 @@
 	uint current_blocks;        ///< How many blocks we have in our pool
 	uint total_items;           ///< How many items we now have in this pool
 
+	bool cleaning_pool;         ///< Are we currently cleaning the pool?
 public:
 	const uint item_size;       ///< How many bytes one block is
 	uint first_free_index;      ///< The index of the first free pool item in this pool
@@ -84,6 +85,15 @@
 	{
 		return this->name;
 	}
+
+	/**
+	 * Is the pool in the cleaning phase?
+	 * @return true if it is
+	 */
+	inline bool CleaningPool() const
+	{
+		return this->cleaning_pool;
+	}
 };
 
 template <typename T>
@@ -121,7 +131,6 @@
 
 /**
  * Generic function to free a new block in a pool.
- * This function uses QuickFree that is intended to only free memory that would be lost if the pool is freed.
  * @param start_item the first item that needs to be cleaned
  * @param end_item   the last item that needs to be cleaned
  */
@@ -130,9 +139,7 @@
 {
 	for (uint i = start_item; i <= end_item; i++) {
 		T *t = Tpool->Get(i);
-		if (t->IsValid()) {
-			t->QuickFree();
-		}
+		delete t;
 	}
 }
 
@@ -157,15 +164,6 @@
 	}
 
 	/**
-	 * Called on each object when the pool is being destroyed, so one
-	 * can free allocated memory without the need for freeing for
-	 * example orders.
-	 */
-	virtual void QuickFree()
-	{
-	}
-
-	/**
 	 * An overriden version of new that allocates memory on the pool.
 	 * @param size the size of the variable (unused)
 	 * @return the memory that is 'allocated'
@@ -227,31 +225,14 @@
 	{
 	}
 
-	/**
-	 * Is this a valid object or not?
-	 * @return true if and only if it is valid
-	 */
-	virtual bool IsValid() const
-	{
-		return false;
-	}
-
-protected:
-	/**
-	 * Allocate a pool item; possibly allocate a new block in the pool.
-	 * @return the allocated pool item (or NULL when the pool is full).
-	 */
-	static T *AllocateRaw()
-	{
-		return AllocateRaw(Tpool->first_free_index);
-	}
-
+private:
 	/**
 	 * Allocate a pool item; possibly allocate a new block in the pool.
 	 * @param first the first pool item to start searching
+	 * @pre first <= Tpool->GetSize()
 	 * @return the allocated pool item (or NULL when the pool is full).
 	 */
-	static T *AllocateRaw(uint &first)
+	static inline T *AllocateSafeRaw(uint &first)
 	{
 		uint last_minus_one = Tpool->GetSize() - 1;
 
@@ -271,6 +252,37 @@
 
 		return NULL;
 	}
+
+protected:
+	/**
+	 * Allocate a pool item; possibly allocate a new block in the pool.
+	 * @return the allocated pool item (or NULL when the pool is full).
+	 */
+	static inline T *AllocateRaw()
+	{
+		return AllocateSafeRaw(Tpool->first_free_index);
+	}
+
+	/**
+	 * Allocate a pool item; possibly allocate a new block in the pool.
+	 * @param first the first pool item to start searching
+	 * @return the allocated pool item (or NULL when the pool is full).
+	 */
+	static inline T *AllocateRaw(uint &first)
+	{
+		if (first >= Tpool->GetSize() && !Tpool->AddBlockToPool()) return NULL;
+
+		return AllocateSafeRaw(first);
+	}
+
+	/**
+	 * Are we cleaning this pool?
+	 * @return true if we are
+	 */
+	static inline bool CleaningPool()
+	{
+		return Tpool->CleaningPool();
+	}
 };
 
 
--- a/src/openttd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/openttd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -460,6 +460,11 @@
 		}
 	}
 
+#if defined(WINCE) && defined(_DEBUG)
+	/* Switch on debug lvl 4 for WinCE if Debug release, as you can't give params, and you most likely do want this information */
+	SetDebugString("4");
+#endif
+
 	DeterminePaths(argv[0]);
 	CheckExternalFiles();
 
@@ -1027,7 +1032,7 @@
 		SetDParam(0, _local_player);
 		SetDParam(1, _date);
 		GetString(buf, STR_4004, lastof(buf));
-		ttd_strlcpy(buf, ".sav", sizeof(buf));
+		ttd_strlcat(buf, ".sav", lengthof(buf));
 	} else {
 		/* generate a savegame name and number according to _patches.max_num_autosaves */
 		snprintf(buf, sizeof(buf), "autosave%d.sav", _autosave_ctr);
@@ -2107,6 +2112,18 @@
 				CLRBIT(v->vehicle_flags, VF_LOADING_FINISHED);
 			}
 		}
+	} else if (CheckSavegameVersion(59)) {
+		/* For some reason non-loading vehicles could be in the station's loading vehicle list */
+
+		Station *st;
+		FOR_ALL_STATIONS(st) {
+			std::list<Vehicle *>::iterator iter;
+			for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end();) {
+				Vehicle *v = *iter;
+				iter++;
+				if (v->current_order.type != OT_LOADING) st->loading_vehicles.remove(v);
+			}
+		}
 	}
 
 	if (CheckSavegameVersion(58)) {
@@ -2161,6 +2178,16 @@
 		}
 	}
 
+	if (CheckSavegameVersion(74)) {
+		Station *st;
+		FOR_ALL_STATIONS(st) {
+			for (CargoID c = 0; c < NUM_CARGO; c++) {
+				st->goods[c].last_speed = 0;
+				if (st->goods[c].cargo.Count() != 0) SETBIT(st->goods[c].acceptance_pickup, GoodsEntry::PICKUP);
+			}
+		}
+	}
+
 
 	return true;
 }
--- a/src/openttd.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/openttd.h	Sun Sep 02 11:17:33 2007 +0000
@@ -473,6 +473,20 @@
 /** @see VehicleEnterTileStatus to see what the return values mean */
 typedef uint32 VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y);
 typedef Foundation GetFoundationProc(TileIndex tile, Slope tileh);
+/**
+ * Called when a tile is affected by a terraforming operation.
+ * The function has to check if terraforming of the tile is allowed and return extra terraform-cost that depend on the tiletype.
+ * With DC_EXEC in flags it has to perform tiletype-specific actions (like clearing land etc., but not the terraforming itself).
+ *
+ * @note The terraforming has not yet taken place. So GetTileZ() and GetTileSlope() refer to the landscape before the terraforming operation.
+ *
+ * @param tile      The involved tile.
+ * @param flags     Command flags passed to the terraform command (DC_EXEC, DC_QUERY_COST, etc.).
+ * @param z_new     TileZ after terraforming.
+ * @param tileh_new Slope after terraforming.
+ * @return Error code or extra cost for terraforming (like clearing land, building foundations, etc., but not the terraforming itself.)
+ */
+typedef CommandCost TerraformTileProc(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new);
 
 struct TileTypeProcs {
 	DrawTileProc *draw_tile_proc;
@@ -488,6 +502,7 @@
 	GetProducedCargoProc *get_produced_cargo_proc;
 	VehicleEnterTileProc *vehicle_enter_tile_proc;
 	GetFoundationProc *get_foundation_proc;
+	TerraformTileProc *terraform_tile_proc;
 };
 
 
--- a/src/order.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/order.h	Sun Sep 02 11:17:33 2007 +0000
@@ -107,7 +107,11 @@
 	Order() : refit_cargo(CT_NO_REFIT) {}
 	~Order() { this->type = OT_NOTHING; }
 
-	bool IsValid() const;
+	/**
+	 * Check if a Order really exists.
+	 */
+	inline bool IsValid() const { return this->type != OT_NOTHING; }
+
 	void Free();
 	void FreeChain();
 };
@@ -140,14 +144,6 @@
 	return GetOrderPoolSize();
 }
 
-/**
- * Check if a Order really exists.
- */
-inline bool Order::IsValid() const
-{
-	return this->type != OT_NOTHING;
-}
-
 inline void Order::Free()
 {
 	this->type  = OT_NOTHING;
--- a/src/order_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/order_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -356,7 +356,7 @@
 	if (u->type != v->type) return false;
 
 	if (u->HasFront() && !u->IsPrimaryVehicle()) {
-		u = GetFirstVehicleInChain(u);
+		u = u->First();
 		if (!u->IsPrimaryVehicle()) return false;
 	}
 
--- a/src/os/macosx/macos.mm	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/os/macosx/macos.mm	Sun Sep 02 11:17:33 2007 +0000
@@ -158,3 +158,16 @@
 	ShowMacDialog(error, buffer, "Quit");
 	abort();
 }
+
+
+/** Determine the current user's locale. */
+const char *GetCurrentLocale(const char *)
+{
+	static char retbuf[32] = { '\0' };
+	NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
+	NSArray* languages = [defs objectForKey:@"AppleLanguages"];
+	NSString* preferredLang = [languages objectAtIndex:0];
+	/* preferredLang is either 2 or 5 characters long ("xx" or "xx_YY"). */
+	strncpy(retbuf, [preferredLang cString], 31);
+	return retbuf;
+}
--- a/src/os_timer.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/os_timer.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -8,7 +8,7 @@
 
 /* rdtsc for MSC_VER, uses simple inline assembly, or _rdtsc
  * from external win64.asm because VS2005 does not support inline assembly */
-#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE)
+#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE) && !defined(WINCE)
 # if _MSC_VER >= 1400
 #include <intrin.h>
 uint64 _rdtsc()
@@ -71,6 +71,9 @@
 /* In all other cases we have no support for rdtsc. No major issue,
  * you just won't be able to profile your code with TIC()/TOC() */
 #if !defined(RDTSC_AVAILABLE)
+/* MSVC (in case of WinCE) can't handle #warning */
+# if !defined(_MSC_VER)
 #warning "(non-fatal) No support for rdtsc(), you won't be able to profile with TIC/TOC"
+# endif
 uint64 _rdtsc() {return 0;}
 #endif
--- a/src/player.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/player.h	Sun Sep 02 11:17:33 2007 +0000
@@ -85,8 +85,8 @@
 void SetLocalPlayer(PlayerID new_player);
 #define FOR_ALL_PLAYERS(p) for (p = _players; p != endof(_players); p++)
 
-VARDEF PlayerID _local_player;
-VARDEF PlayerID _current_player;
+VARDEF PlayerByte _local_player;
+VARDEF PlayerByte _current_player;
 
 VARDEF Player _players[MAX_PLAYERS];
 /* NOSAVE: can be determined from player structs */
--- a/src/player_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/player_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -117,26 +117,6 @@
 {   WIDGETS_END},
 };
 
-static const Widget _other_player_finances_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   379,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
-{     WWT_IMGBTN,   RESIZE_NONE,    14,   380,   394,     0,    13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   395,   406,     0,    13, 0x0,                    STR_STICKY_BUTTON},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   406,    14,   169, 0x0,                    STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   406,   170,   203, 0x0,                    STR_NULL},
-{   WIDGETS_END},
-};
-
-static const Widget _other_player_finances_small_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   253,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
-{     WWT_IMGBTN,   RESIZE_NONE,    14,   254,   267,     0,    13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   268,   279,     0,    13, 0x0,                    STR_STICKY_BUTTON},
-{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                    STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   279,    14,    47, 0x0,                    STR_NULL},
-{   WIDGETS_END},
-};
-
 static const Widget _player_finances_small_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,   RESIZE_NONE,    14,    11,   253,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
@@ -157,15 +137,24 @@
 		PlayerID player = (PlayerID)w->window_number;
 		const Player *p = GetPlayer(player);
 
-		/* Borrow/repay buttons only exist for local player */
-		if (player == _local_player) {
-			/* Borrow button only shows when there is any more money to loan */
-			SetWindowWidgetDisabledState(w, 6, p->current_loan == _economy.max_loan);
+		/* Recheck the size of the window as it might need to be resized due to the local player changing */
+		int new_height = ((player != _local_player) ? 0 : 12) + ((WP(w, def_d).data_1 != 0) ? 48 : 204);
+		if (w->height != new_height) {
+			/* Make window dirty before and after resizing */
+			SetWindowDirty(w);
+			w->height = new_height;
+			SetWindowDirty(w);
 
-			/* Repay button only shows when there is any more money to repay */
-			SetWindowWidgetDisabledState(w, 7, p->current_loan == 0);
+			SetWindowWidgetHiddenState(w, 6, player != _local_player);
+			SetWindowWidgetHiddenState(w, 7, player != _local_player);
 		}
 
+		/* Borrow button only shows when there is any more money to loan */
+		SetWindowWidgetDisabledState(w, 6, p->current_loan == _economy.max_loan);
+
+		/* Repay button only shows when there is any more money to repay */
+		SetWindowWidgetDisabledState(w, 7, player != _local_player || p->current_loan == 0);
+
 		SetDParam(0, p->index);
 		SetDParam(1, p->index);
 		SetDParam(2, LOAN_INTERVAL);
@@ -212,39 +201,14 @@
 	PlayerFinancesWndProc
 };
 
-static const WindowDesc _other_player_finances_desc = {
-	WDP_AUTO, WDP_AUTO, 407, 204, 407, 204,
-	WC_FINANCES, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
-	_other_player_finances_widgets,
-	PlayerFinancesWndProc
-};
-
-static const WindowDesc _other_player_finances_small_desc = {
-	WDP_AUTO, WDP_AUTO, 280, 48, 280, 48,
-	WC_FINANCES, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
-	_other_player_finances_small_widgets,
-	PlayerFinancesWndProc
-};
-
 static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied)
 {
-	Window *w;
-	int mode;
-
-	static const WindowDesc * const desc_table[2 * 2] = {
-		&_player_finances_desc, &_player_finances_small_desc,
-		&_other_player_finances_desc, &_other_player_finances_small_desc,
-	};
-
 	if (!IsValidPlayer(player)) return;
 
-	mode = (player != _local_player) * 2 + show_small;
-	w = AllocateWindowDescFront(desc_table[mode], player);
+	Window *w = AllocateWindowDescFront(show_small ? &_player_finances_small_desc : &_player_finances_desc, player);
 	if (w != NULL) {
 		w->caption_color = w->window_number;
-		WP(w, def_d).data_1 = mode;
+		WP(w, def_d).data_1 = show_small;
 		if (show_stickied) w->flags4 |= WF_STICKY;
 	}
 }
--- a/src/rail_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/rail_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -78,6 +78,44 @@
  *               11uuuudd => rail depot
  */
 
+/** Struct used in EnsureNoTrainOnTrack() */
+struct TrainOnTrackData {
+	TileIndex tile;       ///< tile to check
+	uint z;               ///< tile max Z
+	TrackBits rail_bits;  ///< trackbits of interest
+};
+
+static void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data)
+{
+	const TrainOnTrackData *info = (const TrainOnTrackData *)data;
+
+	if (v->tile != info->tile || v->type != VEH_TRAIN) return NULL;
+	if (v->z_pos > info->z) return NULL;
+
+	if ((v->u.rail.track != info->rail_bits) && !TracksOverlap(v->u.rail.track | info->rail_bits)) return NULL;
+
+	_error_message = VehicleInTheWayErrMsg(v);
+	return v;
+}
+
+/**
+ * Tests if a vehicle interacts with the specified track.
+ * All track bits interact except parallel TRACK_BIT_HORZ or TRACK_BIT_VERT.
+ *
+ * @param tile The tile.
+ * @param track The track.
+ */
+static bool EnsureNoTrainOnTrack(TileIndex tile, Track track)
+{
+	TrainOnTrackData info;
+
+	info.tile = tile;
+	info.z = GetTileMaxZ(tile);
+	info.rail_bits = TrackToTrackBits(track);
+
+	return VehicleFromPos(tile, &info, EnsureNoTrainOnTrackProc) == NULL;
+}
+
 static bool CheckTrackCombination(TileIndex tile, TrackBits to_build, uint flags)
 {
 	TrackBits current; // The current track layout
@@ -239,7 +277,7 @@
 	switch (GetTileType(tile)) {
 		case MP_RAILWAY:
 			if (!CheckTrackCombination(tile, trackbit, flags) ||
-					!EnsureNoVehicleOnGround(tile)) {
+					!EnsureNoTrainOnTrack(tile, track)) {
 				return CMD_ERROR;
 			}
 			if (!IsTileOwner(tile, _current_player) ||
@@ -374,7 +412,7 @@
 
 			if (!IsPlainRailTile(tile) ||
 					(_current_player != OWNER_WATER && !CheckTileOwnership(tile)) ||
-					!EnsureNoVehicleOnGround(tile)) {
+					!EnsureNoTrainOnTrack(tile, track)) {
 				return CMD_ERROR;
 			}
 
@@ -646,7 +684,7 @@
 	SignalVariant sigvar = (pre_signal ^ HASBIT(p1, 4)) ? SIG_SEMAPHORE : SIG_ELECTRIC;
 	CommandCost cost;
 
-	if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoVehicleOnGround(tile))
+	if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoTrainOnTrack(tile, track))
 		return CMD_ERROR;
 
 	/* Protect against invalid signal copying */
@@ -934,7 +972,7 @@
 
 	if (!ValParamTrackOrientation(track) ||
 			!IsTileType(tile, MP_RAILWAY) ||
-			!EnsureNoVehicleOnGround(tile) ||
+			!EnsureNoTrainOnTrack(tile, track) ||
 			!HasSignalOnTrack(tile, track)) {
 		return CMD_ERROR;
 	}
@@ -2117,7 +2155,7 @@
 			v->u.rail.track = TRACK_BIT_DEPOT,
 			v->vehstatus |= VS_HIDDEN; /* hide it */
 			v->direction = ReverseDir(v->direction);
-			if (v->next == NULL) VehicleEnterDepot(v);
+			if (v->Next() == NULL) VehicleEnterDepot(v);
 			v->tile = tile;
 
 			InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
@@ -2126,7 +2164,7 @@
 	} else if (fract_coord_leave == fract_coord) {
 		if (DiagDirToDir(dir) == v->direction) {
 			/* leave the depot? */
-			if ((v = v->next) != NULL) {
+			if ((v = v->Next()) != NULL) {
 				v->vehstatus &= ~VS_HIDDEN;
 				v->u.rail.track = (DiagDirToAxis(dir) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y);
 			}
@@ -2136,6 +2174,73 @@
 	return VETSB_CONTINUE;
 }
 
+static CommandCost TerraformTile_Track(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	if (IsPlainRailTile(tile)) {
+		uint z_old;
+		Slope tileh_old = GetTileSlope(tile, &z_old);
+		TrackBits rail_bits = GetTrackBits(tile);
+
+		_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
+
+		/* When there is only a single horizontal/vertical track, one corner can be terraformed. */
+		Slope allowed_corner;
+		switch (rail_bits) {
+			case TRACK_BIT_RIGHT: allowed_corner = SLOPE_W; break;
+			case TRACK_BIT_UPPER: allowed_corner = SLOPE_S; break;
+			case TRACK_BIT_LEFT:  allowed_corner = SLOPE_E; break;
+			case TRACK_BIT_LOWER: allowed_corner = SLOPE_N; break;
+			default: return CMD_ERROR;
+		}
+
+		Slope track_corners = ComplementSlope(allowed_corner);
+
+		Foundation f_old = GetRailFoundation(tileh_old, rail_bits);
+		switch (f_old) {
+			case FOUNDATION_NONE:
+				/* Everything is valid, which only changes allowed_corner */
+
+				/* Compute height of track */
+				if (tileh_old == track_corners) z_old += TILE_HEIGHT;
+				if (tileh_new == track_corners) {
+					z_new += TILE_HEIGHT;
+				} else {
+					/* do not build a foundation */
+					if ((tileh_new != SLOPE_FLAT) && (tileh_new != allowed_corner)) return CMD_ERROR;
+				}
+
+				/* Track height must remain unchanged */
+				if (z_old != z_new) return CMD_ERROR;
+				break;
+
+			case FOUNDATION_LEVELED:
+				/* Is allowed_corner covered by the foundation? */
+				if ((tileh_old & allowed_corner) == 0) return CMD_ERROR;
+
+				/* allowed_corner may only be raised -> steep slope */
+				if ((z_old != z_new) || (tileh_new != (tileh_old | SLOPE_STEEP))) return CMD_ERROR;
+				break;
+
+			case FOUNDATION_STEEP_LOWER:
+				/* Only allow to lower highest corner */
+				if ((z_old != z_new) || (tileh_new != (tileh_old & ~SLOPE_STEEP))) return CMD_ERROR;
+				break;
+
+			case FOUNDATION_STEEP_HIGHER:
+				return CMD_ERROR;
+
+			default: NOT_REACHED();
+		}
+
+		/* Make the ground dirty */
+		if ((flags & DC_EXEC) != 0) SetRailGroundType(tile, RAIL_GROUND_BARREN);
+
+		/* allow terraforming, no extra costs */
+		return CommandCost();
+	}
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 
 extern const TileTypeProcs _tile_type_rail_procs = {
 	DrawTile_Track,           /* draw_tile_proc */
@@ -2151,4 +2256,5 @@
 	NULL,                     /* get_produced_cargo_proc */
 	VehicleEnter_Track,       /* vehicle_enter_tile_proc */
 	GetFoundation_Track,      /* get_foundation_proc */
+	TerraformTile_Track,      /* terraform_tile_proc */
 };
--- a/src/road_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/road_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -33,19 +33,6 @@
 #include "tunnel_map.h"
 #include "misc/autoptr.hpp"
 
-
-static uint CountRoadBits(RoadBits r)
-{
-	uint count = 0;
-
-	if (r & ROAD_NW) ++count;
-	if (r & ROAD_SW) ++count;
-	if (r & ROAD_SE) ++count;
-	if (r & ROAD_NE) ++count;
-	return count;
-}
-
-
 bool CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, Owner owner, bool *edge_road, RoadType rt)
 {
 	RoadBits present;
@@ -225,7 +212,7 @@
 					MarkTileDirtyByTile(tile);
 				}
 			}
-			return CommandCost(CountRoadBits(c) * _price.remove_road);
+			return CommandCost(COUNTBITS(c) * _price.remove_road);
 		}
 
 		case ROAD_TILE_CROSSING: {
@@ -487,7 +474,7 @@
 		pieces &= ComplementRoadBits(existing);
 	}
 
-	cost.AddCost(CountRoadBits(pieces) * _price.build_road);
+	cost.AddCost(COUNTBITS(pieces) * _price.build_road);
 	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
 		/* Pay for *every* tile of the bridge or tunnel */
 		cost.MultiplyCost(DistanceManhattan(IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile), tile));
@@ -588,6 +575,7 @@
 	TileIndex start_tile, tile;
 	CommandCost cost, ret;
 	bool had_bridge = false;
+	bool had_tunnel = false;
 	bool had_success = false;
 	DisallowedRoadDirections drd = DRD_NORTHBOUND;
 
@@ -633,12 +621,19 @@
 			_error_message = INVALID_STRING_ID;
 		} else {
 			had_success = true;
-			/* Only pay for the upgrade on one side of the bridge */
-			if (IsBridgeTile(tile)) {
-				if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
-					cost.AddCost(ret);
+			/* Only pay for the upgrade on one side of the bridges and tunnels */
+			if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+				if (IsBridge(tile)) {
+					if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
+						cost.AddCost(ret);
+					}
+					had_bridge = true;
+				} else {
+					if ((!had_tunnel || GetTunnelDirection(tile) == DIAGDIR_SE || GetTunnelDirection(tile) == DIAGDIR_SW)) {
+						cost.AddCost(ret);
+					}
+					had_tunnel = true;
 				}
-				had_bridge = true;
 			} else {
 				cost.AddCost(ret);
 			}
@@ -665,7 +660,7 @@
 CommandCost CmdRemoveLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	TileIndex start_tile, tile;
-	CommandCost cost, ret;
+	CommandCost cost, ret, money;
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
@@ -687,6 +682,7 @@
 		p2 ^= IS_INT_INSIDE(p2 & 3, 1, 3) ? 3 : 0;
 	}
 
+	money.AddCost(GetAvailableMoneyForCommand());
 	tile = start_tile;
 	/* Start tile is the small number. */
 	for (;;) {
@@ -697,8 +693,18 @@
 
 		/* try to remove the halves. */
 		if (bits != 0) {
-			ret = DoCommand(tile, rt << 4 | bits, 0, flags, CMD_REMOVE_ROAD);
-			if (CmdSucceeded(ret)) cost.AddCost(ret);
+			ret = DoCommand(tile, rt << 4 | bits, 0, flags & ~DC_EXEC, CMD_REMOVE_ROAD);
+			if (CmdSucceeded(ret)) {
+				if (flags & DC_EXEC) {
+					money.AddCost(-ret.GetCost());
+					if (money.GetCost() < 0) {
+						_additional_cash_required = DoCommand(end_tile, start_tile, p2, flags & ~DC_EXEC, CMD_REMOVE_LONG_ROAD).GetCost();
+						return cost;
+					}
+					DoCommand(tile, rt << 4 | bits, 0, flags, CMD_REMOVE_ROAD);
+				}
+				cost.AddCost(ret);
+			}
 		}
 
 		if (tile == end_tile) break;
@@ -1320,7 +1326,7 @@
 				v->u.road.state = RVSB_IN_DEPOT;
 				v->vehstatus |= VS_HIDDEN;
 				v->direction = ReverseDir(v->direction);
-				if (v->next == NULL) VehicleEnterDepot(v);
+				if (v->Next() == NULL) VehicleEnterDepot(v);
 				v->tile = tile;
 
 				InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
@@ -1366,6 +1372,11 @@
 	}
 }
 
+static CommandCost TerraformTile_Road(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 
 extern const TileTypeProcs _tile_type_road_procs = {
 	DrawTile_Road,           /* draw_tile_proc */
@@ -1381,4 +1392,5 @@
 	NULL,                    /* get_produced_cargo_proc */
 	VehicleEnter_Road,       /* vehicle_enter_tile_proc */
 	GetFoundation_Road,      /* get_foundation_proc */
+	TerraformTile_Road,      /* terraform_tile_proc */
 };
--- a/src/roadveh.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/roadveh.h	Sun Sep 02 11:17:33 2007 +0000
@@ -6,7 +6,8 @@
 #define ROADVEH_H
 
 #include "vehicle.h"
-
+#include "engine.h"
+#include "variables.h"
 
 enum RoadVehicleSubType {
 	RVST_FRONT,
@@ -40,23 +41,11 @@
 static inline bool RoadVehHasArticPart(const Vehicle *v)
 {
 	assert(v->type == VEH_ROAD);
-	return v->next != NULL && IsRoadVehArticPart(v->next);
+	return v->Next() != NULL && IsRoadVehArticPart(v->Next());
 }
 
 
-static inline bool IsRoadVehInDepot(const Vehicle *v)
-{
-	assert(v->type == VEH_ROAD);
-	return v->u.road.state == 254;
-}
-
-static inline bool IsRoadVehInDepotStopped(const Vehicle *v)
-{
-	return IsRoadVehInDepot(v) && v->vehstatus & VS_STOPPED;
-}
-
 void CcBuildRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2);
-void CcCloneRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2);
 
 
 /**
@@ -72,7 +61,7 @@
 	RoadVehicle() { this->type = VEH_ROAD; }
 
 	/** We want to 'destruct' the right class. */
-	virtual ~RoadVehicle() {}
+	virtual ~RoadVehicle() { this->PreDestructor(); }
 
 	const char *GetTypeString() const { return "road vehicle"; }
 	void MarkDirty();
@@ -82,6 +71,10 @@
 	bool IsPrimaryVehicle() const { return IsRoadVehFront(this); }
 	bool HasFront() const { return true; }
 	int GetImage(Direction direction) const;
+	int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
+	int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
+	Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running; }
+	bool IsInDepot() const { return this->u.road.state == RVSB_IN_DEPOT; }
 	void Tick();
 };
 
--- a/src/roadveh_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/roadveh_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -141,9 +141,9 @@
 	assert(v->type == VEH_ROAD);
 	assert(IsRoadVehFront(v));
 
-	for (Vehicle *u = v; u != NULL; u = u->next) {
-		/* Update the v->first cache. */
-		if (u->first == NULL) u->first = v;
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
+		/* Check the v->first cache. */
+		assert(u->First() == v);
 
 		/* Update the 'first engine' */
 		u->u.road.first_engine = (v == u) ? INVALID_ENGINE : v->engine_type;
@@ -260,7 +260,6 @@
 		v->vehicle_flags = 0;
 		if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE);
 
-		v->first = NULL;
 		v->cargo_cap = GetVehicleProperty(v, 0x0F, rvi->capacity);
 
 		AddArticulatedParts(vl, VEH_ROAD);
@@ -271,7 +270,7 @@
 		RebuildVehicleLists();
 		InvalidateWindow(WC_COMPANY, v->owner);
 		if (IsLocalPlayer())
-			InvalidateAutoreplaceWindow(VEH_ROAD, v->group_id); // updates the replace Road window
+			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Road window
 
 		GetPlayer(_current_player)->num_engines[p1]++;
 	}
@@ -305,7 +304,7 @@
 	}
 
 	if (flags & DC_EXEC) {
-		if (IsRoadVehInDepotStopped(v)) {
+		if (v->IsStoppedInDepot()) {
 			DeleteVehicleNews(p1, STR_9016_ROAD_VEHICLE_IS_WAITING);
 		}
 
@@ -336,9 +335,10 @@
 {
 	TileIndex tile = v->tile;
 
-	if (!IsTileDepotType(tile, TRANSPORT_ROAD) || !(v->vehstatus & VS_STOPPED)) return false;
+	if (!IsTileDepotType(tile, TRANSPORT_ROAD)) return false;
+	if (IsRoadVehFront(v) && !(v->vehstatus & VS_STOPPED)) return false;
 
-	for (; v != NULL; v = v->next) {
+	for (; v != NULL; v = v->Next()) {
 		if (v->u.road.state != RVSB_IN_DEPOT || v->tile != tile) return false;
 	}
 	return true;
@@ -469,7 +469,7 @@
 
 	if (v->vehstatus & VS_CRASHED) return CMD_ERROR;
 
-	if (IsRoadVehInDepot(v)) return CMD_ERROR;
+	if (v->IsInDepot()) return CMD_ERROR;
 
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
@@ -534,12 +534,11 @@
 	if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
 
 	if (v->vehstatus & VS_STOPPED ||
-			v->u.road.roadtype == ROADTYPE_TRAM ||
-			v->u.road.crashed_ctr != 0 ||
+			v->vehstatus & VS_CRASHED ||
 			v->breakdown_ctr != 0 ||
 			v->u.road.overtaking != 0 ||
 			v->u.road.state == RVSB_WORMHOLE ||
-			IsRoadVehInDepot(v) ||
+			v->IsInDepot() ||
 			v->cur_speed < 5) {
 		return CMD_ERROR;
 	}
@@ -557,8 +556,10 @@
 
 void RoadVehicle::MarkDirty()
 {
-	this->cur_image = this->GetImage(this->direction);
-	MarkAllViewportsDirty(this->left_coord, this->top_coord, this->right_coord + 1, this->bottom_coord + 1);
+	for (Vehicle *v = this; v != NULL; v = v->Next()) {
+		v->cur_image = v->GetImage(v->direction);
+		MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
+	}
 }
 
 void RoadVehicle::UpdateDeltaXY(Direction direction)
@@ -598,8 +599,8 @@
 static void DeleteLastRoadVeh(Vehicle *v)
 {
 	Vehicle *u = v;
-	for (; v->next != NULL; v = v->next) u = v;
-	u->next = NULL;
+	for (; v->Next() != NULL; v = v->Next()) u = v;
+	u->SetNext(NULL);
 
 	DeleteWindowById(WC_VEHICLE_VIEW, v->index);
 
@@ -645,7 +646,7 @@
 		v->UpdateDeltaXY(v->direction);
 		v->cur_image = v->GetImage(v->direction);
 		SetRoadVehPosition(v, v->x_pos, v->y_pos);
-	} while ((v = v->next) != NULL);
+	} while ((v = v->Next()) != NULL);
 }
 
 static void RoadVehIsCrashed(Vehicle *v)
@@ -678,7 +679,7 @@
 
 	v->u.road.crashed_ctr++;
 
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (IsCargoInClass(u->cargo_type, CC_PASSENGERS)) pass += u->cargo.Count();
 
 		u->vehstatus |= VS_CRASHED;
@@ -707,7 +708,7 @@
 
 static void RoadVehCheckTrainCrash(Vehicle *v)
 {
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (u->u.road.state == RVSB_WORMHOLE) continue;
 
 		TileIndex tile = u->tile;
@@ -795,24 +796,17 @@
 
 	switch (order->type) {
 		case OT_GOTO_STATION: {
-			const RoadStop* rs;
-
 			if (order->dest == v->last_station_visited) {
 				v->last_station_visited = INVALID_STATION;
 			}
 
-			rs = GetStation(order->dest)->GetPrimaryRoadStop(
-				IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK
-			);
+			const RoadStop *rs = GetStation(order->dest)->GetPrimaryRoadStop(v);
 
 			TileIndex dest = INVALID_TILE;
 			if (rs != NULL) {
 				uint mindist = MAX_UVALUE(uint);
 
-				for (; rs != NULL; rs = rs->next) {
-					/* The vehicle cannot go to this roadstop */
-					if ((GetRoadTypes(rs->xy) & v->u.road.compatible_roadtypes) == ROADTYPES_NONE) continue;
-
+				for (; rs != NULL; rs = rs->GetNextRoadStop(v)) {
 					uint dist = DistanceManhattan(v->tile, rs->xy);
 
 					if (dist < mindist) {
@@ -873,10 +867,10 @@
 
 	return
 		v->type == VEH_ROAD &&
-		!IsRoadVehInDepot(v) &&
+		!v->IsInDepot() &&
 		myabs(v->z_pos - rvf->veh->z_pos) < 6 &&
 		v->direction == rvf->dir &&
-		GetFirstVehicleInChain(rvf->veh) != GetFirstVehicleInChain(v) &&
+		rvf->veh->First() != v->First() &&
 		(dist_x[v->direction] >= 0 || (x_diff > dist_x[v->direction] && x_diff <= 0)) &&
 		(dist_x[v->direction] <= 0 || (x_diff < dist_x[v->direction] && x_diff >= 0)) &&
 		(dist_y[v->direction] >= 0 || (y_diff > dist_y[v->direction] && y_diff <= 0)) &&
@@ -1092,7 +1086,7 @@
 static int PickRandomBit(uint bits)
 {
 	uint i;
-	uint num = RandomRange(CountBitsSet(bits));
+	uint num = RandomRange(COUNTBITS(bits));
 
 	for (i = 0; !(bits & 1) || (int)--num >= 0; bits >>= 1, i++) {}
 	return i;
@@ -1144,7 +1138,7 @@
 	FindRoadToChooseData frd;
 	Trackdir best_track;
 
-	uint32 r  = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
+	uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
 	TrackdirBits signal    = (TrackdirBits)GB(r, 16, 16);
 	TrackdirBits trackdirs = (TrackdirBits)GB(r,  0, 16);
 
@@ -1155,8 +1149,9 @@
 		}
 	} else if (IsTileType(tile, MP_STATION) && IsStandardRoadStopTile(tile)) {
 		/* Standard road stop (drive-through stops are treated as normal road) */
-		if (!IsTileOwner(tile, v->owner) || GetRoadStopDir(tile) == enterdir) {
-			/* different station owner or wrong orientation */
+
+		if (!IsTileOwner(tile, v->owner) || GetRoadStopDir(tile) == enterdir || RoadVehHasArticPart(v)) {
+			/* different station owner or wrong orientation or the vehicle has articulated parts */
 			trackdirs = TRACKDIR_BIT_NONE;
 		} else {
 			/* Our station */
@@ -1167,7 +1162,7 @@
 				trackdirs = TRACKDIR_BIT_NONE;
 			} else {
 				/* Proper station type, check if there is free loading bay */
-				if (!_patches.roadveh_queue &&  IsStandardRoadStopTile(tile) &&
+				if (!_patches.roadveh_queue && IsStandardRoadStopTile(tile) &&
 						!GetRoadStopByTile(tile, rstype)->HasFreeBay()) {
 					/* Station is full and RV queuing is off */
 					trackdirs = TRACKDIR_BIT_NONE;
@@ -1340,7 +1335,7 @@
 static bool RoadVehLeaveDepot(Vehicle *v, bool first)
 {
 	/* Don't leave if not all the wagons are in the depot. */
-	for (const Vehicle *u = v; u != NULL; u = u->next) {
+	for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (u->u.road.state != RVSB_IN_DEPOT || u->tile != v->tile) return false;
 	}
 
@@ -1379,9 +1374,9 @@
 	return true;
 }
 
-static Trackdir FollowPreviousRoadVehicle(const Vehicle *v, const Vehicle *prev, TileIndex tile, DiagDirection entry_dir)
+static Trackdir FollowPreviousRoadVehicle(const Vehicle *v, const Vehicle *prev, TileIndex tile, DiagDirection entry_dir, bool already_reversed)
 {
-	if (prev->tile == v->tile) {
+	if (prev->tile == v->tile && !already_reversed) {
 		/* If the previous vehicle is on the same tile as this vehicle is
 		 * then it must have reversed. */
 		return _road_reverse_table[entry_dir];
@@ -1446,7 +1441,7 @@
 	/* If this vehicle is in a depot and we've reached this point it must be
 	 * one of the articulated parts. It will stay in the depot until activated
 	 * by the previous vehicle in the chain when it gets to the right place. */
-	if (IsRoadVehInDepot(v)) return true;
+	if (v->IsInDepot()) return true;
 
 	/* Save old vehicle position to use at end of move to set viewport area dirty */
 	BeginVehicleMove(v);
@@ -1494,7 +1489,7 @@
 			/* If this is the front engine, look for the right path. */
 			dir = RoadFindPathToDest(v, tile, (DiagDirection)(rd.x & 3));
 		} else {
-			dir = FollowPreviousRoadVehicle(v, prev, tile, (DiagDirection)(rd.x & 3));
+			dir = FollowPreviousRoadVehicle(v, prev, tile, (DiagDirection)(rd.x & 3), false);
 		}
 
 		if (dir == INVALID_TRACKDIR) {
@@ -1586,11 +1581,18 @@
 
 	if (rd.x & RDE_TURNED) {
 		/* Vehicle has finished turning around, it will now head back onto the same tile */
-		Trackdir dir = RoadFindPathToDest(v, v->tile, (DiagDirection)(rd.x & 3));
+		Trackdir dir;
 		uint32 r;
 		Direction newdir;
 		const RoadDriveEntry *rdp;
 
+		if (IsRoadVehFront(v)) {
+			/* If this is the front engine, look for the right path. */
+			dir = RoadFindPathToDest(v, v->tile, (DiagDirection)(rd.x & 3));
+		} else {
+			dir = FollowPreviousRoadVehicle(v, prev, v->tile, (DiagDirection)(rd.x & 3), true);
+		}
+
 		if (dir == INVALID_TRACKDIR) {
 			v->cur_speed = 0;
 			return false;
@@ -1627,11 +1629,11 @@
 	/* This vehicle is not in a wormhole and it hasn't entered a new tile. If
 	 * it's on a depot tile, check if it's time to activate the next vehicle in
 	 * the chain yet. */
-	if (v->next != NULL &&
+	if (v->Next() != NULL &&
 			IsTileType(v->tile, MP_ROAD) && GetRoadTileType(v->tile) == ROAD_TILE_DEPOT) {
 
 		if (v->u.road.frame == v->u.road.cached_veh_length + RVC_DEPOT_START_FRAME) {
-			RoadVehLeaveDepot(v->next, false);
+			RoadVehLeaveDepot(v->Next(), false);
 		}
 	}
 
@@ -1794,7 +1796,7 @@
 	if (v->u.road.reverse_ctr != 0) v->u.road.reverse_ctr--;
 
 	/* handle crashed */
-	if (v->u.road.crashed_ctr != 0) {
+	if (v->vehstatus & VS_CRASHED) {
 		RoadVehIsCrashed(v);
 		return;
 	}
@@ -1817,12 +1819,12 @@
 
 	if (v->current_order.type == OT_LOADING) return;
 
-	if (IsRoadVehInDepot(v) && RoadVehLeaveDepot(v, true)) return;
+	if (v->IsInDepot() && RoadVehLeaveDepot(v, true)) return;
 
 	/* Check if vehicle needs to proceed, return if it doesn't */
 	if (!RoadVehAccelerate(v)) return;
 
-	for (Vehicle *prev = NULL; v != NULL; prev = v, v = v->next) {
+	for (Vehicle *prev = NULL; v != NULL; prev = v, v = v->Next()) {
 		if (!IndividualRoadVehicleController(v, prev)) break;
 	}
 }
@@ -1842,29 +1844,15 @@
 
 static void CheckIfRoadVehNeedsService(Vehicle *v)
 {
-	const Depot* depot;
-
-	if (_patches.servint_roadveh == 0) return;
-	if (!VehicleNeedsService(v)) return;
-	if (v->vehstatus & VS_STOPPED) return;
-	if (_patches.gotodepot && VehicleHasDepotOrders(v)) return;
-
-	/* Don't interfere with a depot visit scheduled by the user, or a
-	 * depot visit by the order list. */
-	if (v->current_order.type == OT_GOTO_DEPOT &&
-			(v->current_order.flags & (OF_HALT_IN_DEPOT | OF_PART_OF_ORDERS)) != 0)
-		return;
-
 	/* If we already got a slot at a stop, use that FIRST, and go to a depot later */
-	if (v->u.road.slot != NULL) return;
-
-	if (IsRoadVehInDepot(v)) {
+	if (v->u.road.slot != NULL || _patches.servint_roadveh == 0 || !VehicleNeedsService(v)) return;
+	if (v->IsInDepot()) {
 		VehicleServiceInDepot(v);
 		return;
 	}
 
 	/* XXX If we already have a depot order, WHY do we search over and over? */
-	depot = FindClosestRoadDepot(v);
+	const Depot *depot = FindClosestRoadDepot(v);
 
 	if (depot == NULL || DistanceManhattan(v->tile, depot->xy) > 12) {
 		if (v->current_order.type == OT_GOTO_DEPOT) {
@@ -1916,9 +1904,9 @@
 
 	/* update destination */
 	if (v->current_order.type == OT_GOTO_STATION && v->u.road.slot == NULL && !(v->vehstatus & VS_CRASHED)) {
-		Station* st = GetStation(v->current_order.dest);
-		RoadStop* rs = st->GetPrimaryRoadStop(IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK);
-		RoadStop* best = NULL;
+		Station *st = GetStation(v->current_order.dest);
+		RoadStop *rs = st->GetPrimaryRoadStop(v);
+		RoadStop *best = NULL;
 
 		if (rs != NULL) {
 			/* We try to obtain a slot if:
@@ -1935,7 +1923,7 @@
 					v->unitnumber, v->index, st->index, st->xy
 				);
 				/* Now we find the nearest road stop that has a free slot */
-				for (; rs != NULL; rs = rs->next) {
+				for (; rs != NULL; rs = rs->GetNextRoadStop(v)) {
 					dist = RoadFindPathToStop(v, rs->xy);
 					if (dist == UINT_MAX) {
 						DEBUG(ms, 4, " stop 0x%X is unreachable, not treating further", rs->xy);
@@ -2005,7 +1993,7 @@
  * @param p2 Bitstuffed elements
  * - p2 = (bit 0-7) - the new cargo type to refit to
  * - p2 = (bit 8-15) - the new cargo subtype to refit to
- * - p2 = (bit 16) - refit only this vehicle (ignored)
+ * - p2 = (bit 16) - refit only this vehicle
  * @return cost of refit or error
  */
 CommandCost CmdRefitRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -2014,7 +2002,9 @@
 	CommandCost cost;
 	CargoID new_cid = GB(p2, 0, 8);
 	byte new_subtype = GB(p2, 8, 8);
+	bool only_this = HASBIT(p2, 16);
 	uint16 capacity = CALLBACK_FAILED;
+	uint total_capacity = 0;
 
 	if (!IsValidVehicleID(p1)) return CMD_ERROR;
 
@@ -2023,63 +2013,79 @@
 	if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
 	if (!CheckRoadVehInDepotStopped(v)) return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
 
-	if (new_cid >= NUM_CARGO || !CanRefitTo(v->engine_type, new_cid)) return CMD_ERROR;
+	if (new_cid >= NUM_CARGO) return CMD_ERROR;
 
 	SET_EXPENSES_TYPE(EXPENSES_ROADVEH_RUN);
 
-	if (HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_REFIT_CAPACITY)) {
-		/* Back up the cargo type */
-		CargoID temp_cid = v->cargo_type;
-		byte temp_subtype = v->cargo_subtype;
-		v->cargo_type = new_cid;
-		v->cargo_subtype = new_subtype;
+	for (; v != NULL; v = v->Next()) {
+		/* XXX: We refit all the attached wagons en-masse if they can be
+		 * refitted. This is how TTDPatch does it.  TODO: Have some nice
+		 * [Refit] button near each wagon. */
+		if (!CanRefitTo(v->engine_type, new_cid)) continue;
 
-		/* Check the refit capacity callback */
-		capacity = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
+		if (v->cargo_cap == 0) continue;
 
-		/* Restore the original cargo type */
-		v->cargo_type = temp_cid;
-		v->cargo_subtype = temp_subtype;
+		if (HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_REFIT_CAPACITY)) {
+			/* Back up the cargo type */
+			CargoID temp_cid = v->cargo_type;
+			byte temp_subtype = v->cargo_subtype;
+			v->cargo_type = new_cid;
+			v->cargo_subtype = new_subtype;
+
+			/* Check the refit capacity callback */
+			capacity = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
+
+			/* Restore the original cargo type */
+			v->cargo_type = temp_cid;
+			v->cargo_subtype = temp_subtype;
+		}
+
+		if (capacity == CALLBACK_FAILED) {
+			/* callback failed or not used, use default capacity */
+			const RoadVehicleInfo *rvi = RoadVehInfo(v->engine_type);
+
+			CargoID old_cid = rvi->cargo_type;
+			/* normally, the capacity depends on the cargo type, a vehicle can
+			 * carry twice as much mail/goods as normal cargo, and four times as
+			 * many passengers
+			 */
+			capacity = GetVehicleProperty(v, 0x0F, rvi->capacity);
+			switch (old_cid) {
+				case CT_PASSENGERS: break;
+				case CT_MAIL:
+				case CT_GOODS: capacity *= 2; break;
+				default:       capacity *= 4; break;
+			}
+			switch (new_cid) {
+				case CT_PASSENGERS: break;
+				case CT_MAIL:
+				case CT_GOODS: capacity /= 2; break;
+				default:       capacity /= 4; break;
+			}
+		}
+
+		if (capacity == 0) continue;
+
+		total_capacity += capacity;
+
+		if (IsHumanPlayer(v->owner) && new_cid != v->cargo_type) {
+			cost.AddCost(GetRefitCost(v->engine_type));
+		}
+
+		if (flags & DC_EXEC) {
+			v->cargo_cap = capacity;
+			v->cargo.Truncate((v->cargo_type == new_cid) ? capacity : 0);
+			v->cargo_type = new_cid;
+			v->cargo_subtype = new_subtype;
+			InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+			InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
+			RebuildVehicleLists();
+		}
+
+		if (only_this) break;
 	}
 
-	if (capacity == CALLBACK_FAILED) {
-		/* callback failed or not used, use default capacity */
-		const RoadVehicleInfo *rvi = RoadVehInfo(v->engine_type);
-
-		CargoID old_cid = rvi->cargo_type;
-		/* normally, the capacity depends on the cargo type, a vehicle can
-		 * carry twice as much mail/goods as normal cargo, and four times as
-		 * many passengers
-		 */
-		capacity = GetVehicleProperty(v, 0x0F, rvi->capacity);
-		switch (old_cid) {
-			case CT_PASSENGERS: break;
-			case CT_MAIL:
-			case CT_GOODS: capacity *= 2; break;
-			default:       capacity *= 4; break;
-		}
-		switch (new_cid) {
-			case CT_PASSENGERS: break;
-			case CT_MAIL:
-			case CT_GOODS: capacity /= 2; break;
-			default:       capacity /= 4; break;
-		}
-	}
-	_returned_refit_capacity = capacity;
-
-	if (IsHumanPlayer(v->owner) && new_cid != v->cargo_type) {
-		cost = GetRefitCost(v->engine_type);
-	}
-
-	if (flags & DC_EXEC) {
-		v->cargo_cap = capacity;
-		v->cargo.Truncate((v->cargo_type == new_cid) ? capacity : 0);
-		v->cargo_type = new_cid;
-		v->cargo_subtype = new_subtype;
-		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
-		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
-		RebuildVehicleLists();
-	}
+	_returned_refit_capacity = total_capacity;
 
 	return cost;
 }
--- a/src/roadveh_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/roadveh_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -46,7 +46,7 @@
 		}
 
 		dx += length;
-		v = v->next;
+		v = v->Next();
 	} while (v != NULL && dx < max_length);
 }
 
@@ -65,7 +65,7 @@
 		/* Add space for the cargo amount for each part. */
 		do {
 			height_extension += 11;
-		} while ((v = v->next) != NULL);
+		} while ((v = v->Next()) != NULL);
 
 		ResizeWindow(w, 0, height_extension);
 	} break;
@@ -91,13 +91,13 @@
 
 			SetDParam(0, (v->age + 365 < v->max_age) ? STR_AGE : STR_AGE_RED);
 			SetDParam(2, v->max_age / 366);
-			SetDParam(3, RoadVehInfo(v->engine_type)->running_cost * _price.roadveh_running >> 8);
+			SetDParam(3, v->GetDisplayRunningCost());
 			DrawString(2, 15, STR_900D_AGE_RUNNING_COST_YR, 0);
 		}
 
 		/* Draw max speed */
 		{
-			SetDParam(0, v->max_speed * 10 / 32);
+			SetDParam(0, v->GetDisplayMaxSpeed());
 			DrawString(2, 25, STR_900E_MAX_SPEED, 0);
 		}
 
@@ -128,7 +128,7 @@
 
 			memset(max_cargo, 0, sizeof(max_cargo));
 
-			for (const Vehicle *u = v; u != NULL; u = u->next) {
+			for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 				max_cargo[u->cargo_type] += u->cargo_cap;
 			}
 
@@ -145,13 +145,15 @@
 
 					if (!first) strecat(capacity, ", ", lastof(capacity));
 					strecat(capacity, buffer, lastof(capacity));
+
+					first = false;
 				}
 			}
 
 			SetDParamStr(0, capacity);
 			DrawStringTruncated(34, 67 + y_offset, STR_JUST_STRING, 0, w->width - 34);
 
-			for (const Vehicle *u = v; u != NULL; u = u->next) {
+			for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 				str = STR_8812_EMPTY;
 				if (!u->cargo.Empty()) {
 					SetDParam(0, u->cargo_type);
@@ -249,7 +251,8 @@
 	RoadVehDetailsWndProc
 };
 
-static void ShowRoadVehDetailsWindow(const Vehicle *v)
+
+void ShowRoadVehDetailsWindow(const Vehicle *v)
 {
 	Window *w;
 	VehicleID veh = v->index;
@@ -261,178 +264,6 @@
 	w->caption_color = v->owner;
 }
 
-void CcCloneRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2)
-{
-	if (success) ShowRoadVehViewWindow(GetVehicle(_new_vehicle_id));
-}
-
-static void RoadVehViewWndProc(Window *w, WindowEvent *e)
-{
-	switch (e->event) {
-	case WE_PAINT: {
-		Vehicle *v = GetVehicle(w->window_number);
-		StringID str;
-		bool is_localplayer = v->owner == _local_player;
-
-		SetWindowWidgetDisabledState(w,  7, !is_localplayer);
-		SetWindowWidgetDisabledState(w,  8, !is_localplayer || v->u.road.roadtype == ROADTYPE_TRAM);
-		SetWindowWidgetDisabledState(w, 11, !is_localplayer);
-		/* Disable refit button if vehicle not refittable */
-		SetWindowWidgetDisabledState(w, 12, !is_localplayer ||
-				EngInfo(v->engine_type)->refit_mask == 0);
-
-		/* draw widgets & caption */
-		SetDParam(0, v->index);
-		DrawWindowWidgets(w);
-
-		if (v->u.road.crashed_ctr != 0) {
-			str = STR_8863_CRASHED;
-		} else if (v->breakdown_ctr == 1) {
-			str = STR_885C_BROKEN_DOWN;
-		} else if (v->vehstatus & VS_STOPPED) {
-			str = STR_8861_STOPPED;
-		} else {
-			switch (v->current_order.type) {
-			case OT_GOTO_STATION: {
-				SetDParam(0, v->current_order.dest);
-				SetDParam(1, v->cur_speed * 10 / 32);
-				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
-			} break;
-
-			case OT_GOTO_DEPOT: {
-				Depot *depot = GetDepot(v->current_order.dest);
-				SetDParam(0, depot->town_index);
-				SetDParam(1, v->cur_speed * 10 / 32);
-				if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HASBIT(v->current_order.flags, OFB_PART_OF_ORDERS)) {
-					str = STR_HEADING_FOR_ROAD_DEPOT + _patches.vehicle_speed;
-				} else {
-					str = STR_HEADING_FOR_ROAD_DEPOT_SERVICE + _patches.vehicle_speed;
-				}
-			} break;
-
-			case OT_LOADING:
-			case OT_LEAVESTATION:
-				str = STR_882F_LOADING_UNLOADING;
-				break;
-
-			default:
-				if (v->num_orders == 0) {
-					str = STR_NO_ORDERS + _patches.vehicle_speed;
-					SetDParam(0, v->cur_speed * 10 / 32);
-				} else {
-					str = STR_EMPTY;
-				}
-				break;
-			}
-		}
-
-		/* draw the flag plus orders */
-		DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, w->widget[5].top + 1);
-		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
-		DrawWindowViewport(w);
-	} break;
-
-	case WE_CLICK: {
-		const Vehicle *v = GetVehicle(w->window_number);
-
-		switch (e->we.click.widget) {
-		case 5: /* start stop */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_ROADVEH | CMD_MSG(STR_9015_CAN_T_STOP_START_ROAD_VEHICLE));
-			break;
-		case 6: /* center main view */
-			ScrollMainWindowTo(v->x_pos, v->y_pos);
-			break;
-		case 7: /* goto depot */
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL, CMD_SEND_ROADVEH_TO_DEPOT | CMD_MSG(STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT));
-			break;
-		case 8: /* turn around */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_TURN_ROADVEH | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN));
-			break;
-		case 9: /* show orders */
-			ShowOrdersWindow(v);
-			break;
-		case 10: /* show details */
-			ShowRoadVehDetailsWindow(v);
-			break;
-		case 11: /* clone vehicle */
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, CcCloneRoadVeh, CMD_CLONE_VEHICLE | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE));
-			break;
-		case 12: /* Refit vehicle */
-			ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
-			break;
-		}
-	} break;
-
-	case WE_RESIZE:
-		w->viewport->width          += e->we.sizing.diff.x;
-		w->viewport->height         += e->we.sizing.diff.y;
-		w->viewport->virtual_width  += e->we.sizing.diff.x;
-		w->viewport->virtual_height += e->we.sizing.diff.y;
-		break;
-
-	case WE_DESTROY:
-		DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
-		DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_DETAILS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_TIMETABLE, w->window_number);
-		break;
-
-	case WE_MOUSELOOP: {
-			const Vehicle *v = GetVehicle(w->window_number);
-			bool rv_stopped = IsRoadVehInDepotStopped(v);
-
-			/* Widget 7 (send to depot) must be hidden if the truck/bus is already stopped in depot.
-			 * Widget 11 (clone) should then be shown, since cloning is allowed only while in depot and stopped.
-			 * This sytem allows to have two buttons, on top of each other.
-			 * The same system applies to widget 8 and 12, force turn around and refit. */
-			if (rv_stopped != IsWindowWidgetHidden(w, 7) || rv_stopped == IsWindowWidgetHidden(w, 11)) {
-				SetWindowWidgetHiddenState(w,  7, rv_stopped);  // send to depot
-				SetWindowWidgetHiddenState(w,  8, rv_stopped);  // force turn around
-				SetWindowWidgetHiddenState(w, 11, !rv_stopped); // clone
-				SetWindowWidgetHiddenState(w, 12, !rv_stopped); // refit
-				SetWindowDirty(w);
-			}
-		}
-	}
-}
-
-static const Widget _roadveh_view_widgets[] = {
-{   WWT_CLOSEBOX, RESIZE_NONE,  14,   0,  10,   0,  13, STR_00C5,                STR_018B_CLOSE_WINDOW },
-{    WWT_CAPTION, RESIZE_RIGHT, 14,  11, 237,   0,  13, STR_9002,                STR_018C_WINDOW_TITLE_DRAG_THIS },
-{  WWT_STICKYBOX, RESIZE_LR,    14, 238, 249,   0,  13, 0x0,                     STR_STICKY_BUTTON },
-{      WWT_PANEL, RESIZE_RB,    14,   0, 231,  14, 103, 0x0,                     STR_NULL },
-{      WWT_INSET, RESIZE_RB,    14,   2, 229,  16, 101, 0x0,                     STR_NULL },
-{    WWT_PUSHBTN, RESIZE_RTB,   14,   0, 237, 104, 115, 0x0,                     STR_901C_CURRENT_VEHICLE_ACTION },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  14,  31, SPR_CENTRE_VIEW_VEHICLE, STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  32,  49, SPR_SEND_ROADVEH_TODEPOT,STR_901F_SEND_VEHICLE_TO_DEPOT },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  50,  67, SPR_FORCE_VEHICLE_TURN,  STR_9020_FORCE_VEHICLE_TO_TURN_AROUND },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  68,  85, SPR_SHOW_ORDERS,         STR_901D_SHOW_VEHICLE_S_ORDERS },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  86, 103, SPR_SHOW_VEHICLE_DETAILS,STR_9021_SHOW_ROAD_VEHICLE_DETAILS },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  32,  49, SPR_CLONE_ROADVEH,       STR_CLONE_ROAD_VEHICLE_INFO },
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  50,  67, SPR_REFIT_VEHICLE,       STR_REFIT_ROAD_VEHICLE_TO_CARRY },
-{      WWT_PANEL, RESIZE_LRB,   14, 232, 249, 104, 103, 0x0,                     STR_NULL },
-{  WWT_RESIZEBOX, RESIZE_LRTB,  14, 238, 249, 104, 115, 0x0,                     STR_NULL },
-{ WIDGETS_END }
-};
-
-static const WindowDesc _roadveh_view_desc = {
-	WDP_AUTO, WDP_AUTO, 250, 116, 250, 116,
-	WC_VEHICLE_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_roadveh_view_widgets,
-	RoadVehViewWndProc,
-};
-
-void ShowRoadVehViewWindow(const Vehicle *v)
-{
-	Window *w = AllocateWindowDescFront(&_roadveh_view_desc, v->index);
-
-	if (w != NULL) {
-		w->caption_color = v->owner;
-		AssignWindowViewport(w, 3, 17, 0xE2, 0x54, w->window_number | (1 << 31), ZOOM_LVL_ROADVEH);
-	}
-}
-
 void CcBuildRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2)
 {
 	const Vehicle *v;
@@ -444,5 +275,5 @@
 		_backup_orders_tile = 0;
 		RestoreVehicleOrders(v, _backup_orders_data);
 	}
-	ShowRoadVehViewWindow(v);
+	ShowVehicleViewWindow(v);
 }
--- a/src/saveload.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/saveload.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -27,10 +27,9 @@
 #include "variables.h"
 #include "table/strings.h"
 #include "strings.h"
-#include <setjmp.h>
 #include <list>
 
-extern const uint16 SAVEGAME_VERSION = 72;
+extern const uint16 SAVEGAME_VERSION = 74;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
@@ -53,7 +52,6 @@
 	ReaderProc *read_bytes;              ///< savegame loader function
 
 	const ChunkHandler* const *chs;      ///< the chunk of data that is being processed atm (vehicles, signs, etc.)
-	const SaveLoad* const *includes;     ///< the internal layouf of the given chunk
 
 	/* When saving/loading savegames, they are always saved to a temporary memory-place
 	 * to be flushed to file (save) or to final place (load) when full. */
@@ -68,7 +66,6 @@
 	void (*excpt_uninit)();              ///< the function to execute on any encountered error
 	StringID error_str;                  ///< the translateable error message to show
 	char *extra_msg;                     ///< the error message
-	jmp_buf excpt;                       ///< @todo used to jump to "exception handler";  really ugly
 } _sl;
 
 
@@ -143,7 +140,7 @@
 	_sl.error_str = string;
 	free(_sl.extra_msg);
 	_sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg);
-	longjmp(_sl.excpt, 0);
+	throw std::exception();
 }
 
 /** Read in a single byte from file. If the temporary buffer is full,
@@ -757,7 +754,7 @@
 			}
 			break;
 		case SL_WRITEBYTE: return 1; // a byte is logically of size 1
-		case SL_INCLUDE: return SlCalcObjLength(object, _sl.includes[sld->version_from]);
+		case SL_VEH_INCLUDE: return SlCalcObjLength(object, GetVehicleDescription(VEH_END));
 		default: NOT_REACHED();
 	}
 	return 0;
@@ -806,11 +803,9 @@
 		}
 		break;
 
-	/* SL_INCLUDE loads common code for a type
-	 * XXX - variable renaming abuse
-	 * include_index: common code to include from _desc_includes[], abused by sld->version_from */
-	case SL_INCLUDE:
-		SlObject(ptr, _sl.includes[sld->version_from]);
+	/* SL_VEH_INCLUDE loads common code for vehicles */
+	case SL_VEH_INCLUDE:
+		SlObject(ptr, GetVehicleDescription(VEH_END));
 		break;
 	default: NOT_REACHED();
 	}
@@ -1283,12 +1278,6 @@
 	NULL,
 };
 
-/* used to include a vehicle desc in another desc. */
-extern const SaveLoad _common_veh_desc[];
-static const SaveLoad* const _desc_includes[] = {
-	_common_veh_desc
-};
-
 /**
  * Pointers cannot be saved to a savegame, so this functions gets
  * the index of the item, and if not available, it hussles with
@@ -1521,9 +1510,42 @@
 	uint32 hdr[2];
 
 	_sl.excpt_uninit = NULL;
-	/* XXX - Setup setjmp error handler if an error occurs anywhere deep during
-	 * loading/saving execute a longjmp() and continue execution here */
-	if (setjmp(_sl.excpt)) {
+	try {
+		fmt = GetSavegameFormat(_savegame_format);
+
+		/* We have written our stuff to memory, now write it to file! */
+		hdr[0] = fmt->tag;
+		hdr[1] = TO_BE32(SAVEGAME_VERSION << 16);
+		if (fwrite(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE);
+
+		if (!fmt->init_write()) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor");
+
+		{
+			uint i;
+			uint count = 1 << Savegame_POOL_BLOCK_SIZE_BITS;
+
+			assert(_ts.count == _sl.offs_base);
+			for (i = 0; i != _Savegame_pool.GetBlockCount() - 1; i++) {
+				_sl.buf = _Savegame_pool.blocks[i];
+				fmt->writer(count);
+			}
+
+			/* The last block is (almost) always not fully filled, so only write away
+			 * as much data as it is in there */
+			_sl.buf = _Savegame_pool.blocks[i];
+			fmt->writer(_ts.count - (i * count));
+		}
+
+		fmt->uninit_write();
+		assert(_ts.count == _sl.offs_base);
+		GetSavegameFormat("memory")->uninit_write(); // clean the memorypool
+		fclose(_sl.fh);
+
+		if (threaded) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE);
+
+		return SL_OK;
+	}
+	catch (...) {
 		AbortSaveLoad();
 		if (_sl.excpt_uninit != NULL) _sl.excpt_uninit();
 
@@ -1537,40 +1559,6 @@
 		}
 		return SL_ERROR;
 	}
-
-	fmt = GetSavegameFormat(_savegame_format);
-
-	/* We have written our stuff to memory, now write it to file! */
-	hdr[0] = fmt->tag;
-	hdr[1] = TO_BE32(SAVEGAME_VERSION << 16);
-	if (fwrite(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE);
-
-	if (!fmt->init_write()) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor");
-
-	{
-		uint i;
-		uint count = 1 << Savegame_POOL_BLOCK_SIZE_BITS;
-
-		assert(_ts.count == _sl.offs_base);
-		for (i = 0; i != _Savegame_pool.GetBlockCount() - 1; i++) {
-			_sl.buf = _Savegame_pool.blocks[i];
-			fmt->writer(count);
-		}
-
-		/* The last block is (almost) always not fully filled, so only write away
-		 * as much data as it is in there */
-		_sl.buf = _Savegame_pool.blocks[i];
-		fmt->writer(_ts.count - (i * count));
-	}
-
-	fmt->uninit_write();
-	assert(_ts.count == _sl.offs_base);
-	GetSavegameFormat("memory")->uninit_write(); // clean the memorypool
-	fclose(_sl.fh);
-
-	if (threaded) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE);
-
-	return SL_OK;
 }
 
 static void* SaveFileToDiskThread(void *arg)
@@ -1616,10 +1604,127 @@
 		return SL_OK;
 	}
 
-	/* XXX - Setup setjmp error handler if an error occurs anywhere deep during
-	 * loading/saving execute a longjmp() and continue execution here */
 	_sl.excpt_uninit = NULL;
-	if (setjmp(_sl.excpt)) {
+	try {
+		_sl.fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb);
+
+		/* Make it a little easier to load savegames from the console */
+		if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", SAVE_DIR);
+		if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", BASE_DIR);
+
+		if (_sl.fh == NULL) {
+			SlError(mode == SL_SAVE ? STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE : STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
+		}
+
+		_sl.bufe = _sl.bufp = NULL;
+		_sl.offs_base = 0;
+		_sl.save = (mode != 0);
+		_sl.chs = _chunk_handlers;
+
+		/* General tactic is to first save the game to memory, then use an available writer
+		 * to write it to file, either in threaded mode if possible, or single-threaded */
+		if (mode == SL_SAVE) { /* SAVE game */
+			fmt = GetSavegameFormat("memory"); // write to memory
+
+			_sl.write_bytes = fmt->writer;
+			_sl.excpt_uninit = fmt->uninit_write;
+			if (!fmt->init_write()) {
+				DEBUG(sl, 0, "Initializing writer '%s' failed.", fmt->name);
+				return AbortSaveLoad();
+			}
+
+			_sl_version = SAVEGAME_VERSION;
+
+			BeforeSaveGame();
+			SlSaveChunks();
+			SlWriteFill(); // flush the save buffer
+
+			SaveFileStart();
+			if (_network_server ||
+						(save_thread = OTTDCreateThread(&SaveFileToDiskThread, NULL)) == NULL) {
+				if (!_network_server) DEBUG(sl, 1, "Cannot create savegame thread, reverting to single-threaded mode...");
+
+				SaveOrLoadResult result = SaveFileToDisk(false);
+				SaveFileDone();
+
+				return result;
+			}
+		} else { /* LOAD game */
+			assert(mode == SL_LOAD);
+	#ifdef DEBUG_DUMP_COMMANDS
+			debug_dump_commands("ddc:load:%s\n", filename);
+	#endif /* DUMP_COMMANDS */
+
+			if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
+
+			/* see if we have any loader for this type. */
+			for (fmt = _saveload_formats; ; fmt++) {
+				/* No loader found, treat as version 0 and use LZO format */
+				if (fmt == endof(_saveload_formats)) {
+					DEBUG(sl, 0, "Unknown savegame type, trying to load it as the buggy format");
+	#if defined(WINCE)
+					/* Of course some system had not to support rewind ;) */
+					fseek(_sl.fh, 0L, SEEK_SET);
+					clearerr(_sl.fh);
+	#else
+					rewind(_sl.fh);
+	#endif
+					_sl_version = 0;
+					_sl_minor_version = 0;
+					fmt = _saveload_formats + 1; // LZO
+					break;
+				}
+
+				if (fmt->tag == hdr[0]) {
+					/* check version number */
+					_sl_version = TO_BE32(hdr[1]) >> 16;
+					/* Minor is not used anymore from version 18.0, but it is still needed
+					 * in versions before that (4 cases) which can't be removed easy.
+					 * Therefor it is loaded, but never saved (or, it saves a 0 in any scenario).
+					 * So never EVER use this minor version again. -- TrueLight -- 22-11-2005 */
+					_sl_minor_version = (TO_BE32(hdr[1]) >> 8) & 0xFF;
+
+					DEBUG(sl, 1, "Loading savegame version %d", _sl_version);
+
+					/* Is the version higher than the current? */
+					if (_sl_version > SAVEGAME_VERSION) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME);
+					break;
+				}
+			}
+
+			_sl.read_bytes = fmt->reader;
+			_sl.excpt_uninit = fmt->uninit_read;
+
+			/* loader for this savegame type is not implemented? */
+			if (fmt->init_read == NULL) {
+				char err_str[64];
+				snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name);
+				SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
+			}
+
+			if (!fmt->init_read()) {
+				char err_str[64];
+				snprintf(err_str, lengthof(err_str), "Initializing loader '%s' failed", fmt->name);
+				SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
+			}
+
+			/* Old maps were hardcoded to 256x256 and thus did not contain
+			 * any mapsize information. Pre-initialize to 256x256 to not to
+			 * confuse old games */
+			InitializeGame(IG_DATE_RESET, 256, 256);
+
+			SlLoadChunks();
+			fmt->uninit_read();
+			fclose(_sl.fh);
+
+			/* After loading fix up savegame for any internal changes that
+			 * might've occured since then. If it fails, load back the old game */
+			if (!AfterLoadGame()) return SL_REINIT;
+		}
+
+		return SL_OK;
+	}
+	catch (...) {
 		AbortSaveLoad();
 
 		/* deinitialize compressor. */
@@ -1631,125 +1736,6 @@
 		/* A saver/loader exception!! reinitialize all variables to prevent crash! */
 		return (mode == SL_LOAD) ? SL_REINIT : SL_ERROR;
 	}
-
-	_sl.fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb);
-
-	/* Make it a little easier to load savegames from the console */
-	if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", SAVE_DIR);
-	if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", BASE_DIR);
-
-	if (_sl.fh == NULL) {
-		SlError(mode == SL_SAVE ? STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE : STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
-	}
-
-	_sl.bufe = _sl.bufp = NULL;
-	_sl.offs_base = 0;
-	_sl.save = (mode != 0);
-	_sl.includes = _desc_includes;
-	_sl.chs = _chunk_handlers;
-
-	/* General tactic is to first save the game to memory, then use an available writer
-	 * to write it to file, either in threaded mode if possible, or single-threaded */
-	if (mode == SL_SAVE) { /* SAVE game */
-		fmt = GetSavegameFormat("memory"); // write to memory
-
-		_sl.write_bytes = fmt->writer;
-		_sl.excpt_uninit = fmt->uninit_write;
-		if (!fmt->init_write()) {
-			DEBUG(sl, 0, "Initializing writer '%s' failed.", fmt->name);
-			return AbortSaveLoad();
-		}
-
-		_sl_version = SAVEGAME_VERSION;
-
-		BeforeSaveGame();
-		SlSaveChunks();
-		SlWriteFill(); // flush the save buffer
-
-		SaveFileStart();
-		if (_network_server ||
-					(save_thread = OTTDCreateThread(&SaveFileToDiskThread, NULL)) == NULL) {
-			if (!_network_server) DEBUG(sl, 1, "Cannot create savegame thread, reverting to single-threaded mode...");
-
-			SaveOrLoadResult result = SaveFileToDisk(false);
-			SaveFileDone();
-
-			return result;
-		}
-	} else { /* LOAD game */
-		assert(mode == SL_LOAD);
-#ifdef DEBUG_DUMP_COMMANDS
-		debug_dump_commands("ddc:load:%s\n", filename);
-#endif /* DUMP_COMMANDS */
-
-		if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
-
-		/* see if we have any loader for this type. */
-		for (fmt = _saveload_formats; ; fmt++) {
-			/* No loader found, treat as version 0 and use LZO format */
-			if (fmt == endof(_saveload_formats)) {
-				DEBUG(sl, 0, "Unknown savegame type, trying to load it as the buggy format");
-#if defined(WINCE)
-				/* Of course some system had not to support rewind ;) */
-				fseek(_sl.fh, 0L, SEEK_SET);
-				clearerr(_sl.fh);
-#else
-				rewind(_sl.fh);
-#endif
-				_sl_version = 0;
-				_sl_minor_version = 0;
-				fmt = _saveload_formats + 1; // LZO
-				break;
-			}
-
-			if (fmt->tag == hdr[0]) {
-				/* check version number */
-				_sl_version = TO_BE32(hdr[1]) >> 16;
-				/* Minor is not used anymore from version 18.0, but it is still needed
-				 * in versions before that (4 cases) which can't be removed easy.
-				 * Therefor it is loaded, but never saved (or, it saves a 0 in any scenario).
-				 * So never EVER use this minor version again. -- TrueLight -- 22-11-2005 */
-				_sl_minor_version = (TO_BE32(hdr[1]) >> 8) & 0xFF;
-
-				DEBUG(sl, 1, "Loading savegame version %d", _sl_version);
-
-				/* Is the version higher than the current? */
-				if (_sl_version > SAVEGAME_VERSION) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME);
-				break;
-			}
-		}
-
-		_sl.read_bytes = fmt->reader;
-		_sl.excpt_uninit = fmt->uninit_read;
-
-		/* loader for this savegame type is not implemented? */
-		if (fmt->init_read == NULL) {
-			char err_str[64];
-			snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name);
-			SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
-		}
-
-		if (!fmt->init_read()) {
-			char err_str[64];
-			snprintf(err_str, lengthof(err_str), "Initializing loader '%s' failed", fmt->name);
-			SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
-		}
-
-		/* Old maps were hardcoded to 256x256 and thus did not contain
-		 * any mapsize information. Pre-initialize to 256x256 to not to
-		 * confuse old games */
-		InitializeGame(IG_DATE_RESET, 256, 256);
-
-		SlLoadChunks();
-		fmt->uninit_read();
-		fclose(_sl.fh);
-
-		/* After loading fix up savegame for any internal changes that
-		 * might've occured since then. If it fails, load back the old game */
-		if (!AfterLoadGame()) return SL_REINIT;
-	}
-
-	return SL_OK;
 }
 
 /** Do a save when exiting the game (patch option) _patches.autosave_on_exit */
--- a/src/saveload.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/saveload.h	Sun Sep 02 11:17:33 2007 +0000
@@ -161,15 +161,15 @@
 typedef uint32 VarType;
 
 enum SaveLoadTypes {
-	SL_VAR       =  0,
-	SL_REF       =  1,
-	SL_ARR       =  2,
-	SL_STR       =  3,
-	SL_LST       =  4,
+	SL_VAR         =  0,
+	SL_REF         =  1,
+	SL_ARR         =  2,
+	SL_STR         =  3,
+	SL_LST         =  4,
 	// non-normal save-load types
-	SL_WRITEBYTE =  8,
-	SL_INCLUDE   =  9,
-	SL_END       = 15
+	SL_WRITEBYTE   =  8,
+	SL_VEH_INCLUDE =  9,
+	SL_END         = 15
 };
 
 typedef byte SaveLoadType;
@@ -210,8 +210,6 @@
 
 /* Translate values ingame to different values in the savegame and vv */
 #define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value)
-/* Load common code and put it into each struct (currently only for vehicles */
-#define SLE_INCLUDE(base, variable, include_index) SLE_GENERAL(SL_INCLUDE, base, variable, 0, 0, include_index, 0)
 
 /* The same as the ones at the top, only the offset is given directly; used for unions */
 #define SLE_GENERALX(cmd, offset, type, param1, param2) {false, cmd, type, 0, param1, param2, (void*)(offset)}
@@ -222,7 +220,7 @@
 #define SLE_REFX(offset, type) SLE_CONDREFX(offset, type, 0, SL_MAX_VERSION)
 
 #define SLE_WRITEBYTEX(offset, something) SLE_GENERALX(SL_WRITEBYTE, offset, 0, something, 0)
-#define SLE_INCLUDEX(offset, type) SLE_GENERALX(SL_INCLUDE, offset, type, 0, SL_MAX_VERSION)
+#define SLE_VEH_INCLUDEX() SLE_GENERALX(SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION)
 
 /* End marker */
 #define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL}
--- a/src/settings.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/settings.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -1278,9 +1278,9 @@
 	 SDTG_BOOL("autoclean_companies",             S, 0, _network_autoclean_companies,  false,              STR_NULL, NULL),
 	  SDTG_VAR("autoclean_unprotected",SLE_UINT8, S, 0, _network_autoclean_unprotected,12, 0,     60,   0, STR_NULL, NULL),
 	  SDTG_VAR("autoclean_protected",  SLE_UINT8, S, 0, _network_autoclean_protected,  36, 0,    180,   0, STR_NULL, NULL),
-	  SDTG_VAR("max_companies",        SLE_UINT8, S, 0, _network_game_info.companies_max,   8, 0,  8,   0, STR_NULL, NULL),
-	  SDTG_VAR("max_clients",          SLE_UINT8, S, 0, _network_game_info.clients_max,    10, 0, 10,   0, STR_NULL, NULL),
-	  SDTG_VAR("max_spectators",       SLE_UINT8, S, 0, _network_game_info.spectators_max, 10, 0, 10,   0, STR_NULL, NULL),
+	  SDTG_VAR("max_companies",        SLE_UINT8, S, 0, _network_game_info.companies_max,   8, 1, MAX_PLAYERS, 0, STR_NULL, NULL),
+	  SDTG_VAR("max_clients",          SLE_UINT8, S, 0, _network_game_info.clients_max,    10, 2, MAX_CLIENTS, 0, STR_NULL, NULL),
+	  SDTG_VAR("max_spectators",       SLE_UINT8, S, 0, _network_game_info.spectators_max, 10, 0, MAX_CLIENTS, 0, STR_NULL, NULL),
 	  SDTG_VAR("restart_game_year",    SLE_INT32, S,D0, _network_restart_game_year,    0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
 	  SDTG_VAR("min_players",          SLE_UINT8, S, 0, _network_min_players,               0, 0, 10,   0, STR_NULL, NULL),
 	SDTG_OMANY("server_lang",          SLE_UINT8, S, 0, _network_game_info.server_lang,     0, 28, "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN", STR_NULL, NULL),
@@ -1342,6 +1342,10 @@
 	SDT_BOOL(Patches, prefer_teamchat,               S, 0, false,        STR_CONFIG_PATCHES_PREFER_TEAMCHAT,       NULL),
 	SDT_VAR(Patches, scrollwheel_scrolling,SLE_UINT8,S,MS, 0,  0,  2, 0, STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING, NULL),
 	SDT_VAR(Patches,scrollwheel_multiplier,SLE_UINT8,S, 0, 5,  1, 15, 1, STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER,NULL),
+#ifdef __APPLE__
+	/* We might need to emulate a right mouse button on mac */
+	SDT_VAR(Patches,right_mouse_btn_emulation,SLE_UINT8,S,MS,0, 0, 2, 0, STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU,   NULL),
+#endif
 	SDT_BOOL(Patches, pause_on_newgame,              S, 0, false,        STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME,     NULL),
 	SDT_BOOL(Patches, advanced_vehicle_list,         S, 0, true,         STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS,     NULL),
 	SDT_BOOL(Patches, timetable_in_ticks,            S, 0, false,        STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS,    NULL),
--- a/src/settings_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/settings_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -650,6 +650,10 @@
 	 *  Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */
 	"scrollwheel_scrolling",
 	"scrollwheel_multiplier",
+#ifdef __APPLE__
+	/* We might need to emulate a right mouse button on mac */
+	"right_mouse_btn_emulation",
+#endif
 	"pause_on_newgame",
 	"advanced_vehicle_list",
 	"loading_indicators",
--- a/src/ship.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/ship.h	Sun Sep 02 11:17:33 2007 +0000
@@ -6,24 +6,13 @@
 #define SHIP_H
 
 #include "vehicle.h"
+#include "engine.h"
+#include "variables.h"
 
 void CcBuildShip(bool success, TileIndex tile, uint32 p1, uint32 p2);
-void CcCloneShip(bool success, TileIndex tile, uint32 p1, uint32 p2);
 void RecalcShipStuff(Vehicle *v);
 void GetShipSpriteSize(EngineID engine, uint &width, uint &height);
 
-static inline bool IsShipInDepot(const Vehicle *v)
-{
-	assert(v->type == VEH_SHIP);
-	return v->u.ship.state == 0x80;
-}
-
-static inline bool IsShipInDepotStopped(const Vehicle *v)
-{
-	return IsShipInDepot(v) && v->vehstatus & VS_STOPPED;
-}
-
-
 /**
  * This class 'wraps' Vehicle; you do not actually instantiate this class.
  * You create a Vehicle using AllocateVehicle, so it is added to the pool
@@ -37,7 +26,7 @@
 	Ship() { this->type = VEH_SHIP; }
 
 	/** We want to 'destruct' the right class. */
-	virtual ~Ship() {}
+	virtual ~Ship() { this->PreDestructor(); }
 
 	const char *GetTypeString() const { return "ship"; }
 	void MarkDirty();
@@ -47,6 +36,10 @@
 	void PlayLeaveStationSound() const;
 	bool IsPrimaryVehicle() const { return true; }
 	int GetImage(Direction direction) const;
+	int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
+	int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
+	Money GetRunningCost() const { return ShipVehInfo(this->engine_type)->running_cost * _price.ship_running; }
+	bool IsInDepot() const { return this->u.ship.state == 0x80; }
 	void Tick();
 };
 
--- a/src/ship_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/ship_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -140,24 +140,13 @@
 
 static void CheckIfShipNeedsService(Vehicle *v)
 {
-	const Depot* depot;
-
-	if (_patches.servint_ships == 0) return;
-	if (!VehicleNeedsService(v))     return;
-	if (v->vehstatus & VS_STOPPED)   return;
-
-	if (v->current_order.type == OT_GOTO_DEPOT &&
-			v->current_order.flags & OF_HALT_IN_DEPOT)
-		return;
-
-	if (_patches.gotodepot && VehicleHasDepotOrders(v)) return;
-
-	if (IsShipInDepot(v)) {
+	if (_patches.servint_ships == 0 || !VehicleNeedsService(v)) return;
+	if (v->IsInDepot()) {
 		VehicleServiceInDepot(v);
 		return;
 	}
 
-	depot = FindClosestShipDepot(v);
+	const Depot *depot = FindClosestShipDepot(v);
 
 	if (depot == NULL || DistanceManhattan(v->tile, depot->xy) > 12) {
 		if (v->current_order.type == OT_GOTO_DEPOT) {
@@ -168,7 +157,6 @@
 		return;
 	}
 
-	if (v->current_order.type == OT_LOADING) v->LeaveStation();
 	v->current_order.type = OT_GOTO_DEPOT;
 	v->current_order.flags = OF_NON_STOP;
 	v->current_order.dest = depot->index;
@@ -355,7 +343,7 @@
 	Axis axis;
 	uint m;
 
-	if (!IsShipInDepot(v)) return;
+	if (!v->IsInDepot()) return;
 
 	tile = v->tile;
 	axis = GetShipDepotAxis(tile);
@@ -678,7 +666,7 @@
 	GetNewVehiclePosResult gp = GetNewVehiclePos(v);
 	if (gp.old_tile == gp.new_tile) {
 		/* Staying in tile */
-		if (IsShipInDepot(v)) {
+		if (v->IsInDepot()) {
 			gp.x = v->x_pos;
 			gp.y = v->y_pos;
 		} else {
@@ -897,7 +885,7 @@
 		RebuildVehicleLists();
 		InvalidateWindow(WC_COMPANY, v->owner);
 		if (IsLocalPlayer())
-			InvalidateAutoreplaceWindow(VEH_SHIP, v->group_id); // updates the replace Ship window
+			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Ship window
 
 		GetPlayer(_current_player)->num_engines[p1]++;
 
@@ -925,7 +913,7 @@
 
 	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 
-	if (!IsShipInDepotStopped(v)) {
+	if (!v->IsStoppedInDepot()) {
 		return_cmd_error(STR_980B_SHIP_MUST_BE_STOPPED_IN);
 	}
 
@@ -967,7 +955,7 @@
 	}
 
 	if (flags & DC_EXEC) {
-		if (IsShipInDepotStopped(v)) {
+		if (v->IsStoppedInDepot()) {
 			DeleteVehicleNews(p1, STR_981C_SHIP_IS_WAITING_IN_DEPOT);
 		}
 
@@ -1007,7 +995,7 @@
 
 	if (v->vehstatus & VS_CRASHED) return CMD_ERROR;
 
-	if (IsShipInDepot(v)) return CMD_ERROR;
+	if (v->IsInDepot()) return CMD_ERROR;
 
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
@@ -1079,7 +1067,7 @@
 
 	if (v->type != VEH_SHIP || !CheckOwnership(v->owner)) return CMD_ERROR;
 
-	if (!IsShipInDepotStopped(v)) {
+	if (!v->IsStoppedInDepot()) {
 		return_cmd_error(STR_980B_SHIP_MUST_BE_STOPPED_IN);
 	}
 
--- a/src/ship_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/ship_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -50,13 +50,13 @@
 
 			SetDParam(0, (v->age + 365 < v->max_age) ? STR_AGE : STR_AGE_RED);
 			SetDParam(2, v->max_age / 366);
-			SetDParam(3, ShipVehInfo(v->engine_type)->running_cost * _price.ship_running >> 8);
+			SetDParam(3, v->GetDisplayRunningCost());
 			DrawString(2, 15, STR_9812_AGE_RUNNING_COST_YR, 0);
 		}
 
 		/* Draw max speed */
 		{
-			SetDParam(0, v->max_speed * 10 / 32);
+			SetDParam(0, v->GetDisplayMaxSpeed());
 			DrawString(2, 25, STR_9813_MAX_SPEED, 0);
 		}
 
@@ -163,7 +163,7 @@
 	ShipDetailsWndProc
 };
 
-static void ShowShipDetailsWindow(const Vehicle *v)
+void ShowShipDetailsWindow(const Vehicle *v)
 {
 	Window *w;
 	VehicleID veh = v->index;
@@ -184,169 +184,5 @@
 		_backup_orders_tile = 0;
 		RestoreVehicleOrders(v, _backup_orders_data);
 	}
-	ShowShipViewWindow(v);
-}
-
-void CcCloneShip(bool success, TileIndex tile, uint32 p1, uint32 p2)
-{
-	if (success) ShowShipViewWindow(GetVehicle(_new_vehicle_id));
+	ShowVehicleViewWindow(v);
 }
-
-static void ShipViewWndProc(Window *w, WindowEvent *e)
-{
-	switch (e->event) {
-		case WE_PAINT: {
-			Vehicle *v = GetVehicle(w->window_number);
-			StringID str;
-			bool refitable_and_stopped_in_depot = ShipVehInfo(v->engine_type)->refittable && IsShipInDepotStopped(v);
-			bool is_localplayer = v->owner == _local_player;
-
-			SetWindowWidgetDisabledState(w,  7, !is_localplayer);
-			SetWindowWidgetDisabledState(w,  8,
-			                             !is_localplayer ||      // Disable if owner is not local player
-			                             !refitable_and_stopped_in_depot); // Disable if the ship is not refitable or stopped in a depot
-			SetWindowWidgetDisabledState(w, 11, !is_localplayer);
-
-			/* draw widgets & caption */
-			SetDParam(0, v->index);
-			DrawWindowWidgets(w);
-
-			if (v->breakdown_ctr == 1) {
-				str = STR_885C_BROKEN_DOWN;
-			} else if (v->vehstatus & VS_STOPPED) {
-				str = STR_8861_STOPPED;
-			} else {
-				switch (v->current_order.type) {
-					case OT_GOTO_STATION: {
-						SetDParam(0, v->current_order.dest);
-						SetDParam(1, v->cur_speed * 10 / 32);
-						str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
-					} break;
-
-					case OT_GOTO_DEPOT: {
-						Depot *depot = GetDepot(v->current_order.dest);
-						SetDParam(0, depot->town_index);
-						SetDParam(1, v->cur_speed * 10 / 32);
-						if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HASBIT(v->current_order.flags, OFB_PART_OF_ORDERS)) {
-							str = STR_HEADING_FOR_SHIP_DEPOT + _patches.vehicle_speed;
-						} else {
-							str = STR_HEADING_FOR_SHIP_DEPOT_SERVICE + _patches.vehicle_speed;
-						}
-					} break;
-
-					case OT_LOADING:
-					case OT_LEAVESTATION:
-						str = STR_882F_LOADING_UNLOADING;
-						break;
-
-					default:
-						if (v->num_orders == 0) {
-							str = STR_NO_ORDERS + _patches.vehicle_speed;
-							SetDParam(0, v->cur_speed * 10 / 32);
-						} else {
-							str = STR_EMPTY;
-						}
-						break;
-				}
-			}
-
-		/* draw the flag plus orders */
-		DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, w->widget[5].top + 1);
-		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
-		DrawWindowViewport(w);
-	} break;
-
-		case WE_CLICK: {
-			const Vehicle *v = GetVehicle(w->window_number);
-
-			switch (e->we.click.widget) {
-				case 5: /* start stop */
-					DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_SHIP | CMD_MSG(STR_9818_CAN_T_STOP_START_SHIP));
-					break;
-				case 6: /* center main view */
-					ScrollMainWindowTo(v->x_pos, v->y_pos);
-					break;
-				case 7: /* goto hangar */
-					DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL, CMD_SEND_SHIP_TO_DEPOT | CMD_MSG(STR_9819_CAN_T_SEND_SHIP_TO_DEPOT));
-					break;
-				case 8: /* refit */
-					ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
-					break;
-				case 9: /* show orders */
-					ShowOrdersWindow(v);
-					break;
-				case 10: /* show details */
-					ShowShipDetailsWindow(v);
-					break;
-				case 11: {
-					/* clone vehicle */
-					DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, CcCloneShip, CMD_CLONE_VEHICLE | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP));
-				} break;
-			}
-		} break;
-
-		case WE_RESIZE:
-			w->viewport->width          += e->we.sizing.diff.x;
-			w->viewport->height         += e->we.sizing.diff.y;
-			w->viewport->virtual_width  += e->we.sizing.diff.x;
-			w->viewport->virtual_height += e->we.sizing.diff.y;
-			break;
-
-		case WE_DESTROY:
-			DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
-			DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
-			DeleteWindowById(WC_VEHICLE_DETAILS, w->window_number);
-			DeleteWindowById(WC_VEHICLE_TIMETABLE, w->window_number);
-			break;
-
-		case WE_MOUSELOOP: {
-			const Vehicle *v = GetVehicle(w->window_number);
-			bool ship_stopped = IsShipInDepotStopped(v);
-
-			/* Widget 7 (send to depot) must be hidden if the ship is already stopped in depot.
-			 * Widget 11 (clone) should then be shown, since cloning is allowed only while in depot and stopped.
-			 * This sytem allows to have two buttons, on top of each otherother*/
-			if (ship_stopped != IsWindowWidgetHidden(w, 7) || ship_stopped == IsWindowWidgetHidden(w, 11)) {
-				SetWindowWidgetHiddenState(w,  7, ship_stopped);  // send to depot
-				SetWindowWidgetHiddenState(w, 11, !ship_stopped); // clone
-				SetWindowDirty(w);
-			}
-		}
-	}
-}
-
-static const Widget _ship_view_widgets[] = {
-{   WWT_CLOSEBOX, RESIZE_NONE,  14,   0,  10,   0,  13, STR_00C5,                STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION, RESIZE_RIGHT, 14,  11, 237,   0,  13, STR_980F,                STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX, RESIZE_LR,    14, 238, 249,   0,  13, 0x0,                     STR_STICKY_BUTTON},
-{      WWT_PANEL, RESIZE_RB,    14,   0, 231,  14, 103, 0x0,                     STR_NULL},
-{      WWT_INSET, RESIZE_RB,    14,   2, 229,  16, 101, 0x0,                     STR_NULL},
-{    WWT_PUSHBTN, RESIZE_RTB,   14,   0, 237, 104, 115, 0x0,                     STR_9827_CURRENT_SHIP_ACTION_CLICK},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  14,  31, SPR_CENTRE_VIEW_VEHICLE, STR_9829_CENTER_MAIN_VIEW_ON_SHIP},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  32,  49, SPR_SEND_SHIP_TODEPOT,   STR_982A_SEND_SHIP_TO_DEPOT},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  50,  67, SPR_REFIT_VEHICLE,       STR_983A_REFIT_CARGO_SHIP_TO_CARRY},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  68,  85, SPR_SHOW_ORDERS,         STR_9828_SHOW_SHIP_S_ORDERS},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  86, 103, SPR_SHOW_VEHICLE_DETAILS, STR_982B_SHOW_SHIP_DETAILS},
-{ WWT_PUSHIMGBTN, RESIZE_LR,    14, 232, 249,  32,  49, SPR_CLONE_SHIP,          STR_CLONE_SHIP_INFO},
-{      WWT_PANEL, RESIZE_LRB,   14, 232, 249, 104, 103, 0x0,                     STR_NULL },
-{  WWT_RESIZEBOX, RESIZE_LRTB,  14, 238, 249, 104, 115, 0x0,                     STR_NULL },
-{ WIDGETS_END }
-};
-
-static const WindowDesc _ship_view_desc = {
-	WDP_AUTO, WDP_AUTO, 250, 116, 250, 116,
-	WC_VEHICLE_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_ship_view_widgets,
-	ShipViewWndProc
-};
-
-void ShowShipViewWindow(const Vehicle *v)
-{
-	Window *w = AllocateWindowDescFront(&_ship_view_desc, v->index);
-
-	if (w != NULL) {
-		w->caption_color = v->owner;
-		AssignWindowViewport(w, 3, 17, 0xE2, 0x54, w->window_number | (1 << 31), ZOOM_LVL_SHIP);
-	}
-}
--- a/src/signs.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/signs.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -13,6 +13,7 @@
 #include "saveload.h"
 #include "command.h"
 #include "variables.h"
+#include "string.h"
 #include "misc/autoptr.hpp"
 
 SignID _new_sign_id;
@@ -28,15 +29,10 @@
 
 Sign::~Sign()
 {
-	this->QuickFree();
+	DeleteName(this->str);
 	this->str = STR_NULL;
 }
 
-void Sign::QuickFree()
-{
-	DeleteName(this->str);
-}
-
 /**
  *
  * Update the coordinate of one sign
@@ -133,7 +129,7 @@
 
 	/* If _cmd_text 0 means the new text for the sign is non-empty.
 	 * So rename the sign. If it is empty, it has no name, so delete it */
-	if (_cmd_text[0] != '\0') {
+	if (!StrEmpty(_cmd_text)) {
 		/* Create the name */
 		StringID str = AllocateName(_cmd_text, 0);
 		if (str == 0) return CMD_ERROR;
--- a/src/signs.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/signs.h	Sun Sep 02 11:17:33 2007 +0000
@@ -26,9 +26,7 @@
 	/** Destroy the sign */
 	~Sign();
 
-	bool IsValid() const { return this->str != STR_NULL; }
-
-	void QuickFree();
+	inline bool IsValid() const { return this->str != STR_NULL; }
 };
 
 enum {
--- a/src/smallmap_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/smallmap_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -169,28 +169,6 @@
 	_legend_land_owners,
 };
 
-static inline void WRITE_PIXELS(void *d, uint32 val)
-{
-	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
-	uint8 *val8 = (uint8 *)&val;
-
-	blitter->SetPixel(d, 0, 0, val8[0]);
-	blitter->SetPixel(d, 1, 0, val8[1]);
-	blitter->SetPixel(d, 2, 0, val8[2]);
-	blitter->SetPixel(d, 3, 0, val8[3]);
-}
-
-static inline void WRITE_PIXELS_OR(void *d, uint32 val)
-{
-	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
-	uint8 *val8 = (uint8 *)&val;
-
-	blitter->SetPixelIfEmpty(d, 0, 0, val8[0]);
-	blitter->SetPixelIfEmpty(d, 1, 0, val8[1]);
-	blitter->SetPixelIfEmpty(d, 2, 0, val8[2]);
-	blitter->SetPixelIfEmpty(d, 3, 0, val8[3]);
-}
-
 #define MKCOLOR(x) TO_LE32X(x)
 
 /**
@@ -290,14 +268,31 @@
 static void DrawSmallMapStuff(void *dst, uint xc, uint yc, int pitch, int reps, uint32 mask, GetSmallMapPixels *proc)
 {
 	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
-	void *dst_ptr_end = blitter->MoveTo(_screen.dst_ptr, _screen.width, _screen.height - 1);
+	void *dst_ptr_abs_end = blitter->MoveTo(_screen.dst_ptr, 0, _screen.height);
+	void *dst_ptr_end = blitter->MoveTo(dst_ptr_abs_end, -4, 0);
 
 	do {
 		/* check if the tile (xc,yc) is within the map range */
 		if (xc < MapMaxX() && yc < MapMaxY()) {
 			/* check if the dst pointer points to a pixel inside the screen buffer */
-			if (dst > _screen.dst_ptr && dst < dst_ptr_end)
-				WRITE_PIXELS_OR(dst, proc(TileXY(xc, yc)) & mask);
+			if (dst < _screen.dst_ptr) continue;
+			if (dst >= dst_ptr_abs_end) continue;
+
+			uint32 val = proc(TileXY(xc, yc)) & mask;
+			uint8 *val8 = (uint8 *)&val;
+
+			if (dst <= dst_ptr_end) {
+				blitter->SetPixelIfEmpty(dst, 0, 0, val8[0]);
+				blitter->SetPixelIfEmpty(dst, 1, 0, val8[1]);
+				blitter->SetPixelIfEmpty(dst, 2, 0, val8[2]);
+				blitter->SetPixelIfEmpty(dst, 3, 0, val8[3]);
+			} else {
+				/* It happens that there are only 1, 2 or 3 pixels left to fill, so in that special case, write till the end of the video-buffer */
+				int i = 0;
+				do {
+					blitter->SetPixelIfEmpty(dst, 0, 0, val8[i]);
+				} while (i++, dst = blitter->MoveTo(dst, 1, 0), dst < dst_ptr_abs_end);
+			}
 		}
 	/* switch to next tile in the column */
 	} while (xc++, yc++, dst = blitter->MoveTo(dst, pitch, 0), --reps != 0);
--- a/src/station.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/station.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -34,6 +34,8 @@
 #include "yapf/yapf.h"
 #include "date.h"
 #include "helpers.hpp"
+#include "cargotype.h"
+#include "roadveh.h"
 
 Station::Station(TileIndex tile)
 {
@@ -64,6 +66,15 @@
 {
 	DEBUG(station, cDebugCtorLevel, "I-%3d", index);
 
+	DeleteName(this->string_id);
+	free(this->speclist);
+
+	if (CleaningPool()) return;
+
+	while (!loading_vehicles.empty()) {
+		loading_vehicles.front()->LeaveStation();
+	}
+
 	MarkDirty();
 	RebuildStationLists();
 	InvalidateWindowClasses(WC_STATION_LIST);
@@ -81,14 +92,29 @@
 	for (CargoID c = 0; c < NUM_CARGO; c++) {
 		goods[c].cargo.Truncate(0);
 	}
-
-	this->QuickFree();
 }
 
-void Station::QuickFree()
+
+/**
+ * Get the primary road stop (the first road stop) that the given vehicle can load/unload.
+ * @param v the vehicle to get the first road stop for
+ * @return the first roadstop that this vehicle can load at
+ */
+RoadStop *Station::GetPrimaryRoadStop(const Vehicle *v) const
 {
-	DeleteName(this->string_id);
-	free(this->speclist);
+	RoadStop *rs = this->GetPrimaryRoadStop(IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK);
+
+	for (; rs != NULL; rs = rs->next) {
+		/* The vehicle cannot go to this roadstop (different roadtype) */
+		if ((GetRoadTypes(rs->xy) & v->u.road.compatible_roadtypes) == ROADTYPES_NONE) continue;
+		/* The vehicle is articulated and can therefor not go the a standard road stop */
+		if (IsStandardRoadStopTile(rs->xy) && RoadVehHasArticPart(v)) continue;
+
+		/* The vehicle can actually go to this road stop. So, return it! */
+		break;
+	}
+
+	return rs;
 }
 
 /** Called when new facility is built on the station. If it is the first facility
@@ -211,14 +237,6 @@
 	return (had_vehicle_of_type & HVOT_BUOY) != 0;
 }
 
-/** Determines whether a station exists
- * @todo replace 0 by INVALID_TILE
- */
-bool Station::IsValid() const
-{
-	return xy != 0;
-}
-
 
 /************************************************************************/
 /*                     StationRect implementation                       */
@@ -394,6 +412,8 @@
   */
 RoadStop::~RoadStop()
 {
+	if (CleaningPool()) return;
+
 	/* Clear the slot assignment of all vehicles heading for this road stop */
 	if (num_vehicles != 0) {
 		Vehicle *v;
@@ -409,12 +429,6 @@
 	xy = 0;
 }
 
-/** Determines whether a RoadStop is a valid (i.e. existing) one */
-bool RoadStop::IsValid() const
-{
-	return xy != 0;
-}
-
 /** Checks whether there is a free bay in this road stop */
 bool RoadStop::HasFreeBay() const
 {
@@ -477,3 +491,23 @@
 {
 	SB(status, 7, 1, busy);
 }
+
+/**
+ * Get the next road stop accessible by this vehicle.
+ * @param v the vehicle to get the next road stop for.
+ * @return the next road stop accessible.
+ */
+RoadStop *RoadStop::GetNextRoadStop(const Vehicle *v) const
+{
+	for (RoadStop *rs = this->next; rs != NULL; rs = rs->next) {
+		/* The vehicle cannot go to this roadstop (different roadtype) */
+		if ((GetRoadTypes(rs->xy) & v->u.road.compatible_roadtypes) == ROADTYPES_NONE) continue;
+		/* The vehicle is articulated and can therefor not go the a standard road stop */
+		if (IsStandardRoadStopTile(rs->xy) && RoadVehHasArticPart(v)) continue;
+
+		/* The vehicle can actually go to this road stop. So, return it! */
+		return rs;
+	}
+
+	return NULL;
+}
--- a/src/station.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/station.h	Sun Sep 02 11:17:33 2007 +0000
@@ -24,15 +24,20 @@
 static const byte INITIAL_STATION_RATING = 175;
 
 struct GoodsEntry {
+	enum AcceptancePickup {
+		ACCEPTANCE,
+		PICKUP
+	};
+
 	GoodsEntry() :
-		acceptance(false),
+		acceptance_pickup(0),
 		days_since_pickup(255),
 		rating(INITIAL_STATION_RATING),
 		last_speed(0),
 		last_age(255)
 	{}
 
-	bool acceptance;
+	byte acceptance_pickup;
 	byte days_since_pickup;
 	byte rating;
 	byte last_speed;
@@ -48,7 +53,7 @@
 		TRUCK                               ///< A standard stop for trucks
 	};
 
-	static const int  cDebugCtorLevel =  3;  ///< Debug level on which Contructor / Destructor messages are printed
+	static const int  cDebugCtorLevel =  5;  ///< Debug level on which Contructor / Destructor messages are printed
 	static const uint LIMIT           = 16;  ///< The maximum amount of roadstops that are allowed at a single station
 	static const uint MAX_BAY_COUNT   =  2;  ///< The maximum number of loading bays
 
@@ -60,7 +65,11 @@
 	RoadStop(TileIndex tile = 0);
 	virtual ~RoadStop();
 
-	bool IsValid() const;
+	/**
+	 * Determines whether a road stop exists
+	 * @return true if and only is the road stop exists
+	 */
+	inline bool IsValid() const { return this->xy != 0; }
 
 	/* For accessing status */
 	bool HasFreeBay() const;
@@ -70,6 +79,8 @@
 	void FreeBay(uint nr);
 	bool IsEntranceBusy() const;
 	void SetEntranceBusy(bool busy);
+
+	RoadStop *GetNextRoadStop(const Vehicle *v) const;
 };
 
 struct StationSpecList {
@@ -102,17 +113,19 @@
 };
 
 struct Station : PoolItem<Station, StationID, &_Station_pool> {
-	public:
-		RoadStop *GetPrimaryRoadStop(RoadStop::Type type) const
-		{
-			return type == RoadStop::BUS ? bus_stops : truck_stops;
-		}
+public:
+	RoadStop *GetPrimaryRoadStop(RoadStop::Type type) const
+	{
+		return type == RoadStop::BUS ? bus_stops : truck_stops;
+	}
 
-		const AirportFTAClass *Airport() const
-		{
-			if (airport_tile == 0) return GetAirport(AT_DUMMY);
-			return GetAirport(airport_type);
-		}
+	RoadStop *GetPrimaryRoadStop(const Vehicle *v) const;
+
+	const AirportFTAClass *Airport() const
+	{
+		if (airport_tile == 0) return GetAirport(AT_DUMMY);
+		return GetAirport(airport_type);
+	}
 
 	TileIndex xy;
 	RoadStop *bus_stops;
@@ -154,13 +167,11 @@
 
 	StationRect rect; ///< Station spread out rectangle (not saved) maintained by StationRect_xxx() functions
 
-	static const int cDebugCtorLevel = 3;
+	static const int cDebugCtorLevel = 5;
 
 	Station(TileIndex tile = 0);
 	virtual ~Station();
 
-	void QuickFree();
-
 	void AddFacility(byte new_facility_bit, TileIndex facil_xy);
 	void MarkDirty() const;
 	void MarkTilesDirty(bool cargo_change) const;
@@ -168,7 +179,12 @@
 	uint GetPlatformLength(TileIndex tile, DiagDirection dir) const;
 	uint GetPlatformLength(TileIndex tile) const;
 	bool IsBuoy() const;
-	bool IsValid() const;
+
+	/**
+	 * Determines whether a station exists
+	 * @return true if and only is the station exists
+	 */
+	inline bool IsValid() const { return this->xy != 0; }
 };
 
 enum StationType {
@@ -206,7 +222,9 @@
 	CA_BUS             =  3,
 	CA_TRUCK           =  3,
 	CA_TRAIN           =  4,
-	CA_DOCK            =  5
+	CA_DOCK            =  5,
+
+	MAX_CATCHMENT      = 10, ///< Airports have a catchment up to this number.
 };
 
 void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint radius);
--- a/src/station_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/station_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -389,7 +389,7 @@
 	uint mask = 0;
 
 	for (CargoID i = 0; i < NUM_CARGO; i++) {
-		if (st->goods[i].acceptance) mask |= 1 << i;
+		if (HASBIT(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) mask |= 1 << i;
 	}
 	return mask;
 }
@@ -570,7 +570,7 @@
 				(is_passengers && !(st->facilities & (byte)~FACIL_TRUCK_STOP)))
 			amt = 0;
 
-		st->goods[i].acceptance = (amt >= 8);
+		SB(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE, 1, amt >= 8);
 	}
 
 	// Only show a message in case the acceptance was actually changed.
@@ -2343,8 +2343,8 @@
 				}
 
 				/* For normal (non drive-through) road stops */
-				/* Check if station is busy or if there are no free bays. */
-				if (rs->IsEntranceBusy() || !rs->HasFreeBay()) return VETSB_CANNOT_ENTER;
+				/* Check if station is busy or if there are no free bays or whether it is a articulated vehicle. */
+				if (rs->IsEntranceBusy() || !rs->HasFreeBay() || RoadVehHasArticPart(v)) return VETSB_CANNOT_ENTER;
 
 				SETBIT(v->u.road.state, RVS_IN_ROAD_STOP);
 
@@ -2384,10 +2384,12 @@
 		/* Slowly increase the rating back to his original level in the case we
 		 *  didn't deliver cargo yet to this station. This happens when a bribe
 		 *  failed while you didn't moved that cargo yet to a station. */
-		if (ge->days_since_pickup == 255 && ge->rating < INITIAL_STATION_RATING)
+		if (!HASBIT(ge->acceptance_pickup, GoodsEntry::PICKUP) && ge->rating < INITIAL_STATION_RATING) {
 			ge->rating++;
+		}
+
 		/* Only change the rating if we are moving this cargo */
-		if (ge->last_speed != 0) {
+		if (HASBIT(ge->acceptance_pickup, GoodsEntry::PICKUP)) {
 			byte_inc_sat(&ge->days_since_pickup);
 
 			int rating = 0;
@@ -2519,7 +2521,7 @@
 			for (CargoID i = 0; i < NUM_CARGO; i++) {
 				GoodsEntry* ge = &st->goods[i];
 
-				if (ge->days_since_pickup != 255) {
+				if (ge->acceptance_pickup != 0) {
 					ge->rating = clamp(ge->rating + amount, 0, 255);
 				}
 			}
@@ -2530,6 +2532,7 @@
 static void UpdateStationWaiting(Station *st, CargoID type, uint amount)
 {
 	st->goods[type].cargo.Append(new CargoPacket(st->index, amount));
+	SETBIT(st->goods[type].acceptance_pickup, GoodsEntry::PICKUP);
 
 	InvalidateWindow(WC_STATION_VIEW, st->index);
 	st->MarkTilesDirty(true);
@@ -2595,9 +2598,9 @@
 	if (_patches.modified_catchment) {
 		w_prod = w;
 		h_prod = h;
-		w += 16;
-		h += 16;
-		max_rad = 8;
+		w += 2 * MAX_CATCHMENT;
+		h += 2 * MAX_CATCHMENT;
+		max_rad = MAX_CATCHMENT;
 	} else {
 		w_prod = 0;
 		h_prod = 0;
@@ -2616,16 +2619,16 @@
 			if (around[i] == NULL) {
 				if (!st->IsBuoy() &&
 						(st->town->exclusive_counter == 0 || st->town->exclusivity == st->owner) && // check exclusive transport rights
-						st->goods[type].rating != 0 && st->goods[type].last_speed != 0 && // we actually service the station
-						(!_patches.selectgoods || st->goods[type].last_speed > 0) && // if last_speed is 0, no vehicle has been there.
+						st->goods[type].rating != 0 && // when you've got the lowest rating you can get, it's better not to give cargo anymore
+						(!_patches.selectgoods || st->goods[type].last_speed != 0) && // we are servicing the station (or cargo is dumped on all stations)
 						((st->facilities & ~FACIL_BUS_STOP)   != 0 || IsCargoInClass(type, CC_PASSENGERS)) && // if we have other fac. than a bus stop, or the cargo is passengers
 						((st->facilities & ~FACIL_TRUCK_STOP) != 0 || !IsCargoInClass(type, CC_PASSENGERS))) { // if we have other fac. than a cargo bay or the cargo is not passengers
 					if (_patches.modified_catchment) {
 						// min and max coordinates of the producer relative
-						const int x_min_prod = 9;
-						const int x_max_prod = 8 + w_prod;
-						const int y_min_prod = 9;
-						const int y_max_prod = 8 + h_prod;
+						const int x_min_prod = max_rad + 1;
+						const int x_max_prod = max_rad + w_prod;
+						const int y_min_prod = max_rad + 1;
+						const int y_max_prod = max_rad + h_prod;
 
 						int rad = FindCatchmentRadius(st);
 
@@ -2746,7 +2749,7 @@
 	st->build_date = _date;
 
 	for (CargoID j = 0; j < NUM_CARGO; j++) {
-		st->goods[j].acceptance = false;
+		st->goods[j].acceptance_pickup = 0;
 		st->goods[j].days_since_pickup = 255;
 		st->goods[j].rating = INITIAL_STATION_RATING;
 		st->goods[j].last_speed = 0;
@@ -2876,6 +2879,11 @@
 	}
 }
 
+static CommandCost TerraformTile_Station(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 
 extern const TileTypeProcs _tile_type_station_procs = {
 	DrawTile_Station,           /* draw_tile_proc */
@@ -2891,6 +2899,7 @@
 	NULL,                       /* get_produced_cargo_proc */
 	VehicleEnter_Station,       /* vehicle_enter_tile_proc */
 	GetFoundation_Station,      /* get_foundation_proc */
+	TerraformTile_Station,      /* terraform_tile_proc */
 };
 
 static const SaveLoad _roadstop_desc[] = {
@@ -2975,25 +2984,6 @@
 static uint16 _cargo_days;
 static Money  _cargo_feeder_share;
 
-static const SaveLoad _goods_desc[] = {
-	SLEG_CONDVAR(            _waiting_acceptance, SLE_UINT16,                  0, 67),
-	 SLE_CONDVAR(GoodsEntry, acceptance,          SLE_BOOL,                   68, SL_MAX_VERSION),
-	SLE_CONDNULL(2,                                                           51, 67),
-	     SLE_VAR(GoodsEntry, days_since_pickup,   SLE_UINT8),
-	     SLE_VAR(GoodsEntry, rating,              SLE_UINT8),
-	SLEG_CONDVAR(            _cargo_source,       SLE_FILE_U8 | SLE_VAR_U16,   0, 6),
-	SLEG_CONDVAR(            _cargo_source,       SLE_UINT16,                  7, 67),
-	SLEG_CONDVAR(            _cargo_source_xy,    SLE_UINT32,                 44, 67),
-	SLEG_CONDVAR(            _cargo_days,         SLE_UINT8,                   0, 67),
-	     SLE_VAR(GoodsEntry, last_speed,          SLE_UINT8),
-	     SLE_VAR(GoodsEntry, last_age,            SLE_UINT8),
-	SLEG_CONDVAR(            _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64),
-	SLEG_CONDVAR(            _cargo_feeder_share, SLE_INT64,                  65, 67),
-	 SLE_CONDLST(GoodsEntry, cargo,               REF_CARGO_PACKET,           68, SL_MAX_VERSION),
-
-	SLE_END()
-};
-
 static const SaveLoad _station_speclist_desc[] = {
 	SLE_CONDVAR(StationSpecList, grfid,    SLE_UINT32, 27, SL_MAX_VERSION),
 	SLE_CONDVAR(StationSpecList, localidx, SLE_UINT8,  27, SL_MAX_VERSION),
@@ -3002,8 +2992,28 @@
 };
 
 
-static void SaveLoad_STNS(Station *st)
+void SaveLoad_STNS(Station *st)
 {
+	static const SaveLoad _goods_desc[] = {
+		SLEG_CONDVAR(            _waiting_acceptance, SLE_UINT16,                  0, 67),
+		 SLE_CONDVAR(GoodsEntry, acceptance_pickup,   SLE_UINT8,                  68, SL_MAX_VERSION),
+		SLE_CONDNULL(2,                                                           51, 67),
+		     SLE_VAR(GoodsEntry, days_since_pickup,   SLE_UINT8),
+		     SLE_VAR(GoodsEntry, rating,              SLE_UINT8),
+		SLEG_CONDVAR(            _cargo_source,       SLE_FILE_U8 | SLE_VAR_U16,   0, 6),
+		SLEG_CONDVAR(            _cargo_source,       SLE_UINT16,                  7, 67),
+		SLEG_CONDVAR(            _cargo_source_xy,    SLE_UINT32,                 44, 67),
+		SLEG_CONDVAR(            _cargo_days,         SLE_UINT8,                   0, 67),
+		     SLE_VAR(GoodsEntry, last_speed,          SLE_UINT8),
+		     SLE_VAR(GoodsEntry, last_age,            SLE_UINT8),
+		SLEG_CONDVAR(            _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64),
+		SLEG_CONDVAR(            _cargo_feeder_share, SLE_INT64,                  65, 67),
+		 SLE_CONDLST(GoodsEntry, cargo.packets,       REF_CARGO_PACKET,           68, SL_MAX_VERSION),
+
+		SLE_END()
+};
+
+
 	SlObject(st, _station_desc);
 
 	_waiting_acceptance = 0;
@@ -3013,7 +3023,7 @@
 		GoodsEntry *ge = &st->goods[i];
 		SlObject(ge, _goods_desc);
 		if (CheckSavegameVersion(68)) {
-			ge->acceptance = HASBIT(_waiting_acceptance, 15);
+			SB(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1, HASBIT(_waiting_acceptance, 15));
 			if (GB(_waiting_acceptance, 0, 12) != 0) {
 				/* Don't construct the packet with station here, because that'll fail with old savegames */
 				CargoPacket *cp = new CargoPacket();
@@ -3025,9 +3035,8 @@
 				cp->source_xy       = _cargo_source_xy;
 				cp->days_in_transit = _cargo_days;
 				cp->feeder_share    = _cargo_feeder_share;
+				SB(ge->acceptance_pickup, GoodsEntry::PICKUP, 1, 1);
 				ge->cargo.Append(cp);
-			} else {
-				ge->days_since_pickup = 255;
 			}
 		}
 	}
--- a/src/station_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/station_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -157,8 +157,8 @@
 	byte maxr2 = 0;
 
 	for (CargoID j = 0; j < NUM_CARGO; j++) {
-		if (st1->goods[j].days_since_pickup != 255) maxr1 = max(maxr1, st1->goods[j].rating);
-		if (st2->goods[j].days_since_pickup != 255) maxr2 = max(maxr2, st2->goods[j].rating);
+		if (HASBIT(st1->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr1 = max(maxr1, st1->goods[j].rating);
+		if (HASBIT(st2->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr2 = max(maxr2, st2->goods[j].rating);
 	}
 
 	return (_internal_sort_order & 1) ? maxr2 - maxr1 : maxr1 - maxr2;
@@ -771,7 +771,7 @@
 
 		for (CargoID i = 0; i < NUM_CARGO; i++) {
 			if (b >= endof(_userstring) - 5 - 1) break;
-			if (st->goods[i].acceptance) {
+			if (HASBIT(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) {
 				if (first) {
 					first = false;
 				} else {
@@ -797,7 +797,7 @@
 			if (!cs->IsValid()) continue;
 
 			const GoodsEntry *ge = &st->goods[i];
-			if (ge->days_since_pickup == 255) continue;
+			if (!HASBIT(ge->acceptance_pickup, GoodsEntry::PICKUP)) continue;
 
 			SetDParam(0, cs->name);
 			SetDParam(2, ge->rating * 101 >> 8);
--- a/src/stdafx.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/stdafx.h	Sun Sep 02 11:17:33 2007 +0000
@@ -142,7 +142,9 @@
 # define _WIN32_WINNT 0x0500       // Windows 2000
 
 # define _WIN32_WINDOWS 0x400      // Windows 95
+#if !defined(WINCE)
 # define WINVER 0x0400             // Windows NT 4.0 / Windows 95
+#endif
 # define _WIN32_IE_ 0x0401         // 4.01 (win98 and NT4SP5+)
 
 # define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
@@ -169,9 +171,11 @@
 # define NORETURN __declspec(noreturn)
 # define FORCEINLINE __forceinline
 # define inline _inline
-# define CDECL _cdecl
+# if !defined(WINCE)
+#  define CDECL _cdecl
+# endif
   int CDECL snprintf(char *str, size_t size, const char *format, ...);
-# if _MSC_VER < 1400
+# if _MSC_VER < 1400 || defined(WINCE)
    int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap);
 # endif
 
@@ -192,8 +196,14 @@
 #  endif
 # endif
 
-# define strcasecmp stricmp
-# define strncasecmp strnicmp
+# if defined(WINCE)
+#  define strcasecmp _stricmp
+#  define strncasecmp _strnicmp
+#  undef DEBUG
+# else
+#  define strcasecmp stricmp
+#  define strncasecmp strnicmp
+# endif
 /* suppress: warning C4005: 'offsetof' : macro redefinition (VC8) */
 #endif /* defined(_MSC_VER) */
 
--- a/src/string.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/string.h	Sun Sep 02 11:17:33 2007 +0000
@@ -49,7 +49,7 @@
 void strtolower(char *str);
 
 
-static inline bool StrEmpty(const char *s) { return s[0] == '\0'; }
+static inline bool StrEmpty(const char *s) { return s == NULL || s[0] == '\0'; }
 
 
 /** Get the length of a string, within a limited buffer */
--- a/src/strings.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/strings.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -343,6 +343,8 @@
 
 	/* convert from negative */
 	if (number < 0) {
+		if (buff + Utf8CharLen(SCC_RED) > last) return buff;
+		buff += Utf8Encode(buff, SCC_RED);
 		buff = strecpy(buff, "-", last);
 		number = -number;
 	}
@@ -383,6 +385,12 @@
 	 * The only remaining value is 1 (prefix), so everything that is not 0 */
 	if (spec->symbol_pos != 0) buff = strecpy(buff, spec->suffix, last);
 
+	if (cs.GetCost() < 0) {
+		if (buff + Utf8CharLen(SCC_PREVIOUS_COLOUR) > last) return buff;
+		buff += Utf8Encode(buff, SCC_PREVIOUS_COLOUR);
+		*buff = '\0';
+	}
+
 	return buff;
 }
 
@@ -680,7 +688,18 @@
 				const char* s = GetStringPtr(argv_orig[(byte)*str++]); // contains the string that determines gender.
 				int len;
 				int gender = 0;
-				if (s != NULL && Utf8Consume(&s) == SCC_GENDER_INDEX) gender = (byte)s[0];
+				if (s != NULL) {
+					wchar_t c = Utf8Consume(&s);
+					/* Switch case is always put before genders, so remove those bits */
+					if (c == SCC_SWITCH_CASE) {
+						/* Skip to the last (i.e. default) case */
+						for (uint num = (byte)*s++; num != 0; num--) s += 3 + (s[1] << 8) + s[2];
+
+						c = Utf8Consume(&s);
+					}
+					/* Does this string have a gender, if so, set it */
+					if (c == SCC_GENDER_INDEX) gender = (byte)s[0];
+				}
 				str = ParseStringChoice(str, gender, buff, &len);
 				buff += len;
 				break;
@@ -1218,7 +1237,8 @@
 }
 
 /* Win32 implementation in win32.cpp. */
-#ifndef WIN32
+/* OS X implementation in os/macosx/macos.mm. */
+#if !(defined(WIN32) || defined(__APPLE__))
 /** Determine the current charset based on the environment
  * First check some default values, after this one we passed ourselves
  * and if none exist return the value for $LANG
@@ -1242,7 +1262,7 @@
 
 	return getenv("LANG");
 }
-#endif /* ifndef WIN32 */
+#endif /* !(defined(WIN32) || defined(__APPLE__)) */
 
 static int CDECL LanguageCompareFunc(const void *a, const void *b)
 {
--- a/src/table/build_industry.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/table/build_industry.h	Sun Sep 02 11:17:33 2007 +0000
@@ -1177,7 +1177,7 @@
            c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
 	 {tbl, lengthof(tbl), min(255, d), d, pc, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m,            \
 	 {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
-	 sndc, snd, 0, 0, true, {0, 0, NULL, NULL, INVALID_INDUSTRYTYPE}}
+	 sndc, snd, 0, 0, true, {INVALID_INDUSTRYTYPE, 0, NULL, NULL, INVALID_INDUSTRYTYPE}}
 	/* Format:
 	   tile table                              count and sounds table
 	   cost multiplier                         appear chances(4ingame, 4random)  map colour
@@ -1573,7 +1573,7 @@
  * @param a2  next frame of animation
  * @param a3  chooses between animation or construction state
  */
-#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, 0xFFFF, 2, 0, 0, true, {0, 0, NULL, NULL, INVALID_INDUSTRYTILE}}
+#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, 0xFFFF, 2, 0, 0, true, {INVALID_INDUSTRYTILE, 0, NULL, NULL, INVALID_INDUSTRYTILE}}
 static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
 	/* Coal Mine */
 	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
--- a/src/table/control_codes.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/table/control_codes.h	Sun Sep 02 11:17:33 2007 +0000
@@ -88,6 +88,7 @@
 	SCC_GRAY,
 	SCC_DKBLUE,
 	SCC_BLACK,
+	SCC_PREVIOUS_COLOUR,
 
 	/* Special printable symbols.
 	 * These are mapped to the original glyphs */
--- a/src/texteff.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/texteff.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -41,31 +41,33 @@
 };
 
 
-struct TextMessage {
+struct ChatMessage {
 	char message[MAX_TEXTMESSAGE_LENGTH];
 	uint16 color;
 	Date end_date;
 };
 
+/* used for text effects */
 static TextEffect *_text_effect_list = NULL;
-static TextMessage _textmsg_list[MAX_CHAT_MESSAGES];
+static uint16 _num_text_effects = INIT_NUM_TEXT_MESSAGES;
 TileIndex _animated_tile_list[MAX_ANIMATED_TILES];
 
-static bool _textmessage_dirty = false;
-static bool _textmessage_visible = false;
-static uint16 _num_text_effects = INIT_NUM_TEXT_MESSAGES;
+/* used for chat window */
+static ChatMessage _chatmsg_list[MAX_CHAT_MESSAGES];
+static bool _chatmessage_dirty = false;
+static bool _chatmessage_visible = false;
 
 /* The chatbox grows from the bottom so the coordinates are pixels from
  * the left and pixels from the bottom. The height is the maximum height */
-static const Oblong _textmsg_box = {10, 30, 500, 150};
-static uint8 _textmessage_backup[150 * 500 * 6]; // (height * width)
+static const Oblong _chatmsg_box = {10, 30, 500, 150};
+static uint8 _chatmessage_backup[150 * 500 * 6]; // (height * width)
 
-static inline uint GetTextMessageCount()
+static inline uint GetChatMessageCount()
 {
 	uint i;
 
 	for (i = 0; i < MAX_CHAT_MESSAGES; i++) {
-		if (_textmsg_list[i].message[0] == '\0') break;
+		if (_chatmsg_list[i].message[0] == '\0') break;
 	}
 
 	return i;
@@ -75,7 +77,7 @@
  * @param color The colour this message is to be shown in
  * @param duration The duration of the chat message in game-days
  * @param message message itself in printf() style */
-void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...)
+void CDECL AddChatMessage(uint16 color, uint8 duration, const char *message, ...)
 {
 	char buf[MAX_TEXTMESSAGE_LENGTH];
 	const char *bufp;
@@ -91,45 +93,45 @@
 	Utf8TrimString(buf, MAX_TEXTMESSAGE_LENGTH);
 
 	/* Force linebreaks for strings that are too long */
-	lines = GB(FormatStringLinebreaks(buf, _textmsg_box.width - 8), 0, 16) + 1;
+	lines = GB(FormatStringLinebreaks(buf, _chatmsg_box.width - 8), 0, 16) + 1;
 	if (lines >= MAX_CHAT_MESSAGES) return;
 
-	msg_count = GetTextMessageCount();
+	msg_count = GetChatMessageCount();
 	/* We want to add more chat messages than there is free space for, remove 'old' */
 	if (lines > MAX_CHAT_MESSAGES - msg_count) {
 		int i = lines - (MAX_CHAT_MESSAGES - msg_count);
-		memmove(&_textmsg_list[0], &_textmsg_list[i], sizeof(_textmsg_list[0]) * (msg_count - i));
+		memmove(&_chatmsg_list[0], &_chatmsg_list[i], sizeof(_chatmsg_list[0]) * (msg_count - i));
 		msg_count = MAX_CHAT_MESSAGES - lines;
 	}
 
 	for (bufp = buf; lines != 0; lines--) {
-		TextMessage *tmsg = &_textmsg_list[msg_count++];
-		ttd_strlcpy(tmsg->message, bufp, sizeof(tmsg->message));
+		ChatMessage *cmsg = &_chatmsg_list[msg_count++];
+		ttd_strlcpy(cmsg->message, bufp, sizeof(cmsg->message));
 
 		/* The default colour for a message is player colour. Replace this with
 		 * white for any additional lines */
-		tmsg->color = (bufp == buf && color & IS_PALETTE_COLOR) ? color : (0x1D - 15) | IS_PALETTE_COLOR;
-		tmsg->end_date = _date + duration;
+		cmsg->color = (bufp == buf && color & IS_PALETTE_COLOR) ? color : (0x1D - 15) | IS_PALETTE_COLOR;
+		cmsg->end_date = _date + duration;
 
 		bufp += strlen(bufp) + 1; // jump to 'next line' in the formatted string
 	}
 
-	_textmessage_dirty = true;
+	_chatmessage_dirty = true;
 }
 
-void InitTextMessage()
+void InitChatMessage()
 {
 	uint i;
 
 	for (i = 0; i < MAX_CHAT_MESSAGES; i++) {
-		_textmsg_list[i].message[0] = '\0';
+		_chatmsg_list[i].message[0] = '\0';
 	}
 }
 
-/** Hide the textbox */
-void UndrawTextMessage()
+/** Hide the chatbox */
+void UndrawChatMessage()
 {
-	if (_textmessage_visible) {
+	if (_chatmessage_visible) {
 		Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
 		/* Sometimes we also need to hide the cursor
 		 *   This is because both textmessage and the cursor take a shot of the
@@ -143,20 +145,20 @@
 		 */
 
 		if (_cursor.visible) {
-			if (_cursor.draw_pos.x + _cursor.draw_size.x >= _textmsg_box.x &&
-				_cursor.draw_pos.x <= _textmsg_box.x + _textmsg_box.width &&
-				_cursor.draw_pos.y + _cursor.draw_size.y >= _screen.height - _textmsg_box.y - _textmsg_box.height &&
-				_cursor.draw_pos.y <= _screen.height - _textmsg_box.y) {
+			if (_cursor.draw_pos.x + _cursor.draw_size.x >= _chatmsg_box.x &&
+				_cursor.draw_pos.x <= _chatmsg_box.x + _chatmsg_box.width &&
+				_cursor.draw_pos.y + _cursor.draw_size.y >= _screen.height - _chatmsg_box.y - _chatmsg_box.height &&
+				_cursor.draw_pos.y <= _screen.height - _chatmsg_box.y) {
 				UndrawMouseCursor();
 			}
 		}
 
-		int x      = _textmsg_box.x;
-		int y      = _screen.height - _textmsg_box.y - _textmsg_box.height;
-		int width  = _textmsg_box.width;
-		int height = _textmsg_box.height;
+		int x      = _chatmsg_box.x;
+		int y      = _screen.height - _chatmsg_box.y - _chatmsg_box.height;
+		int width  = _chatmsg_box.width;
+		int height = _chatmsg_box.height;
 		if (y < 0) {
-			height = max(height + y, min(_textmsg_box.height, _screen.height));
+			height = max(height + y, min(_chatmsg_box.height, _screen.height));
 			y = 0;
 		}
 		if (x + width >= _screen.width) {
@@ -164,33 +166,33 @@
 		}
 		if (width <= 0 || height <= 0) return;
 
-		_textmessage_visible = false;
+		_chatmessage_visible = false;
 		/* Put our 'shot' back to the screen */
-		blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _textmessage_backup, width, height);
+		blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height);
 		/* And make sure it is updated next time */
 		_video_driver->MakeDirty(x, y, width, height);
 
-		_textmessage_dirty = true;
+		_chatmessage_dirty = true;
 	}
 }
 
 /** Check if a message is expired every day */
-void TextMessageDailyLoop()
+void ChatMessageDailyLoop()
 {
 	uint i;
 
 	for (i = 0; i < MAX_CHAT_MESSAGES; i++) {
-		TextMessage *tmsg = &_textmsg_list[i];
-		if (tmsg->message[0] == '\0') continue;
+		ChatMessage *cmsg = &_chatmsg_list[i];
+		if (cmsg->message[0] == '\0') continue;
 
 		/* Message has expired, remove from the list */
-		if (tmsg->end_date < _date) {
+		if (cmsg->end_date < _date) {
 			/* Move the remaining messages over the current message */
-			if (i != MAX_CHAT_MESSAGES - 1) memmove(tmsg, tmsg + 1, sizeof(*tmsg) * (MAX_CHAT_MESSAGES - i - 1));
+			if (i != MAX_CHAT_MESSAGES - 1) memmove(cmsg, cmsg + 1, sizeof(*cmsg) * (MAX_CHAT_MESSAGES - i - 1));
 
 			/* Mark the last item as empty */
-			_textmsg_list[MAX_CHAT_MESSAGES - 1].message[0] = '\0';
-			_textmessage_dirty = true;
+			_chatmsg_list[MAX_CHAT_MESSAGES - 1].message[0] = '\0';
+			_chatmessage_dirty = true;
 
 			/* Go one item back, because we moved the array 1 to the left */
 			i--;
@@ -198,27 +200,27 @@
 	}
 }
 
-/** Draw the textmessage-box */
-void DrawTextMessage()
+/** Draw the chat message-box */
+void DrawChatMessage()
 {
 	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
-	if (!_textmessage_dirty) return;
+	if (!_chatmessage_dirty) return;
 
 	/* First undraw if needed */
-	UndrawTextMessage();
+	UndrawChatMessage();
 
 	if (_iconsole_mode == ICONSOLE_FULL) return;
 
 	/* Check if we have anything to draw at all */
-	uint count = GetTextMessageCount();
+	uint count = GetChatMessageCount();
 	if (count == 0) return;
 
-	int x      = _textmsg_box.x;
-	int y      = _screen.height - _textmsg_box.y - _textmsg_box.height;
-	int width  = _textmsg_box.width;
-	int height = _textmsg_box.height;
+	int x      = _chatmsg_box.x;
+	int y      = _screen.height - _chatmsg_box.y - _chatmsg_box.height;
+	int width  = _chatmsg_box.width;
+	int height = _chatmsg_box.height;
 	if (y < 0) {
-		height = max(height + y, min(_textmsg_box.height, _screen.height));
+		height = max(height + y, min(_chatmsg_box.height, _screen.height));
 		y = 0;
 	}
 	if (x + width >= _screen.width) {
@@ -226,34 +228,35 @@
 	}
 	if (width <= 0 || height <= 0) return;
 
-	assert(blitter->BufferSize(width, height) < (int)sizeof(_textmessage_backup));
+	assert(blitter->BufferSize(width, height) < (int)sizeof(_chatmessage_backup));
 
 	/* Make a copy of the screen as it is before painting (for undraw) */
-	blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _textmessage_backup, width, height);
+	blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height);
 
 	_cur_dpi = &_screen; // switch to _screen painting
 
-	/* Paint a half-transparent box behind the text messages */
+	/* Paint a half-transparent box behind the chat messages */
 	GfxFillRect(
-			_textmsg_box.x,
-			_screen.height - _textmsg_box.y - count * 13 - 2,
-			_textmsg_box.x + _textmsg_box.width - 1,
-			_screen.height - _textmsg_box.y - 2,
+			_chatmsg_box.x,
+			_screen.height - _chatmsg_box.y - count * 13 - 2,
+			_chatmsg_box.x + _chatmsg_box.width - 1,
+			_screen.height - _chatmsg_box.y - 2,
 			PALETTE_TO_TRANSPARENT | (1 << USE_COLORTABLE) // black, but with some alpha for background
 		);
 
-	/* Paint the messages starting with the lowest at the bottom */
+	/* Paint the chat messages starting with the lowest at the bottom */
 	for (uint y = 13; count-- != 0; y += 13) {
-		DoDrawString(_textmsg_list[count].message, _textmsg_box.x + 3, _screen.height - _textmsg_box.y - y + 1, _textmsg_list[count].color);
+		DoDrawString(_chatmsg_list[count].message, _chatmsg_box.x + 3, _screen.height - _chatmsg_box.y - y + 1, _chatmsg_list[count].color);
 	}
 
 	/* Make sure the data is updated next flush */
 	_video_driver->MakeDirty(x, y, width, height);
 
-	_textmessage_visible = true;
-	_textmessage_dirty = false;
+	_chatmessage_visible = true;
+	_chatmessage_dirty = false;
 }
 
+/** Text Effects */
 static void MarkTextEffectAreaDirty(TextEffect *te)
 {
 	MarkAllViewportsDirty(
--- a/src/texteff.hpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/texteff.hpp	Sun Sep 02 11:17:33 2007 +0000
@@ -22,10 +22,10 @@
 void UpdateTextEffect(TextEffectID effect_id, StringID msg);
 void RemoveTextEffect(TextEffectID effect_id);
 
-void InitTextMessage();
-void DrawTextMessage();
-void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
-void UndrawTextMessage();
+void InitChatMessage();
+void DrawChatMessage();
+void CDECL AddChatMessage(uint16 color, uint8 duration, const char *message, ...);
+void UndrawChatMessage();
 
 /* misc_gui.cpp */
 TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID color);
--- a/src/town.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/town.h	Sun Sep 02 11:17:33 2007 +0000
@@ -159,9 +159,7 @@
 	/** Destroy the town */
 	~Town();
 
-	bool IsValid() const { return this->xy != 0; }
-
-	void QuickFree();
+	inline bool IsValid() const { return this->xy != 0; }
 };
 
 struct HouseSpec {
--- a/src/town_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/town_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -47,11 +47,16 @@
 
 Town::Town(TileIndex tile)
 {
+	if (tile != 0) _total_towns++;
 	this->xy = tile;
 }
 
 Town::~Town()
 {
+	DeleteName(this->townnametype);
+
+	if (CleaningPool()) return;
+
 	Industry *i;
 
 	/* Delete town authority window
@@ -86,15 +91,9 @@
 
 	MarkWholeScreenDirty();
 
-	this->QuickFree();
 	this->xy = 0;
 }
 
-void Town::QuickFree()
-{
-	DeleteName(this->townnametype);
-}
-
 // Local
 static int _grow_town_result;
 
@@ -648,7 +647,7 @@
  * @return true if one of the neighboring tiles at the
  *  given distance is a road tile else
  */
-static bool NeighborIsRoadTile(TileIndex tile, int dir, RoadBlockTitleDistance dist_multi)
+static bool IsNeighborRoadTile(TileIndex tile, int dir, RoadBlockTitleDistance dist_multi)
 {
 	return (HASBIT(GetTownRoadMask(TILE_ADD(tile, dist_multi * ToTileIndexDiff(_roadblock_tileadd[dir + 1]))), dir ^ 2) ||
 			HASBIT(GetTownRoadMask(TILE_ADD(tile, dist_multi * ToTileIndexDiff(_roadblock_tileadd[dir + 3]))), dir ^ 2) ||
@@ -673,7 +672,7 @@
 			/* No, try to build one in the direction.
 			 * if that fails clear the land, and if that fails exit.
 			 * This is to make sure that we can build a road here later. */
-			if (CmdFailed(DoCommand(tile, (dir & 1 ? ROAD_X : ROAD_Y), 0, DC_AUTO, CMD_BUILD_ROAD)) &&
+			if (CmdFailed(DoCommand(tile, (dir & ROAD_NW ? ROAD_X : ROAD_Y), 0, DC_AUTO, CMD_BUILD_ROAD)) &&
 					CmdFailed(DoCommand(tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR)))
 				return false;
 		}
@@ -686,17 +685,17 @@
 				default: NOT_REACHED();
 
 				case TL_ORIGINAL: /* Disallow the road if any neighboring tile has a road (distance: 1) */
-					return !NeighborIsRoadTile(tile, dir, RB_TILE_DIST1);
+					return !IsNeighborRoadTile(tile, dir, RB_TILE_DIST1);
 
 				case TL_BETTER_ROADS: /* Disallow the road if any neighboring tile has a road (distance: 1 and 2). */
-					return !(NeighborIsRoadTile(tile, dir, RB_TILE_DIST1) ||
-							NeighborIsRoadTile(tile, dir, RB_TILE_DIST2));
+					return !(IsNeighborRoadTile(tile, dir, RB_TILE_DIST1) ||
+							IsNeighborRoadTile(tile, dir, RB_TILE_DIST2));
 			}
 		}
 
 		/* If the tile is not a slope in the right direction, then
 		 * maybe terraform some. */
-		k = (dir & 1) ? SLOPE_NE : SLOPE_NW;
+		k = (dir & ROAD_NW) ? SLOPE_NE : SLOPE_NW;
 		if (k != slope && ComplementSlope(k) != slope) {
 			uint32 r = Random();
 
@@ -707,6 +706,7 @@
 					res = DoCommand(tile, slope, 0, DC_EXEC | DC_AUTO | DC_NO_WATER,
 					                      CMD_TERRAFORM_LAND);
 				} else {
+					/* Note: Do not replace " ^ 0xF" with ComplementSlope(). The slope might be steep. */
 					res = DoCommand(tile, slope ^ 0xF, 1, DC_EXEC | DC_AUTO | DC_NO_WATER,
 					                      CMD_TERRAFORM_LAND);
 				}
@@ -830,7 +830,7 @@
  * @return true if there are more than 2 house tiles next
  *  to the current one
  */
-static bool NeighborsAreHouseTiles(TileIndex tile)
+static bool AreNeighborsHouseTiles(TileIndex tile)
 {
 	uint counter = 0; ///< counts the house neighbor tiles
 
@@ -939,7 +939,7 @@
 					 *  at any side of the new road. */
 				}
 
-				rcmd = (RoadBits)((1 << a) + (1 << b));
+				rcmd = (RoadBits)((ROAD_NW << a) + (ROAD_NW << b));
 				break;
 		}
 
@@ -961,7 +961,7 @@
 
 			case TL_BETTER_ROADS:
 			case TL_ORIGINAL:
-				rcmd = (RoadBits)(1 << (block ^ 2));
+				rcmd = (RoadBits)(ROAD_NW << (block ^ 2));
 				break;
 		}
 	} else {
@@ -1000,7 +1000,7 @@
 			case TL_3X3_GRID: /* Use 2x2 grid afterwards! */
 				/* Fill gap if house has enougth neighbors */
 				tmptile2 = TILE_ADD(tmptile, ToTileIndexDiff(_roadblock_tileadd[i]));
-				if (NeighborsAreHouseTiles(tmptile2) && BuildTownHouse(t1, tmptile2)) {
+				if (AreNeighborsHouseTiles(tmptile2) && BuildTownHouse(t1, tmptile2)) {
 					_grow_town_result = -1;
 				}
 
@@ -1012,7 +1012,7 @@
 			case TL_BETTER_ROADS: /* Use original afterwards! */
 				/* Fill gap if house has enougth neighbors */
 				tmptile2 = TILE_ADD(tmptile, ToTileIndexDiff(_roadblock_tileadd[i]));
-				if (NeighborsAreHouseTiles(tmptile2) && BuildTownHouse(t1, tmptile2)) {
+				if (AreNeighborsHouseTiles(tmptile2) && BuildTownHouse(t1, tmptile2)) {
 					_grow_town_result = -1;
 				}
 
@@ -1040,7 +1040,7 @@
 		}
 
 		_grow_town_result = 0;
-		rcmd = (RoadBits)(1 << i);
+		rcmd = (RoadBits)(ROAD_NW << i);
 	}
 
 	/* Return if a water tile */
@@ -1084,19 +1084,17 @@
 
 	/* Quit if it selecting an appropiate bridge type fails a large number of times. */
 	j = 22;
-	{
-		int32 bridge_len = GetBridgeLength(tile, tmptile);
-		do {
-			byte bridge_type = RandomRange(MAX_BRIDGES - 1);
-			if (CheckBridge_Stuff(bridge_type, bridge_len)) {
-				if (CmdSucceeded(DoCommand(tile, tmptile, bridge_type | ((0x80 | ROADTYPES_ROAD) << 8), DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE)))
-					_grow_town_result = -1;
-
-				/* obviously, if building any bridge would fail, there is no need to try other bridge-types */
-				return;
-			}
-		} while (--j != 0);
-	}
+	do {
+		byte bridge_type = RandomRange(MAX_BRIDGES - 1);
+		/* Can we actually build the bridge? */
+		if (CmdSucceeded(DoCommand(tile, tmptile, bridge_type | ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE))) {
+			DoCommand(tile, tmptile, bridge_type | ((0x80 | ROADTYPES_ROAD) << 8), DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE);
+				_grow_town_result = -1;
+
+			/* obviously, if building any bridge would fail, there is no need to try other bridge-types */
+			return;
+		}
+	} while (--j != 0);
 }
 
 /** Returns "growth" if a house was built, or no if the build failed.
@@ -1138,7 +1136,7 @@
 		/* Exclude the source position from the bitmask
 		 * and return if no more road blocks available */
 		ClrBitT(mask, (block ^ 2));
-		if (mask == 0)
+		if (mask == ROAD_NONE)
 			return _grow_town_result;
 
 		/* Select a random bit from the blockmask, walk a step
@@ -1354,8 +1352,6 @@
 	extern int _nb_orig_names;
 	int x, i;
 
-	_total_towns++;
-
 	t->xy = tile;
 	t->num_houses = 0;
 	t->time_until_rebuild = 10;
@@ -2305,6 +2301,11 @@
 	_town_sort_dirty = true;
 }
 
+static CommandCost TerraformTile_Town(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 extern const TileTypeProcs _tile_type_town_procs = {
 	DrawTile_Town,           /* draw_tile_proc */
 	GetSlopeZ_Town,          /* get_slope_z_proc */
@@ -2319,6 +2320,7 @@
 	NULL,                    /* get_produced_cargo_proc */
 	NULL,                    /* vehicle_enter_tile_proc */
 	GetFoundation_Town,      /* get_foundation_proc */
+	TerraformTile_Town,      /* terraform_tile_proc */
 };
 
 
--- a/src/train.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/train.h	Sun Sep 02 11:17:33 2007 +0000
@@ -200,7 +200,7 @@
 static inline bool EngineHasArticPart(const Vehicle *v)
 {
 	assert(v->type == VEH_TRAIN);
-	return (v->next != NULL && IsArticulatedPart(v->next));
+	return (v->Next() != NULL && IsArticulatedPart(v->Next()));
 }
 
 /**
@@ -211,7 +211,7 @@
 static inline Vehicle *GetNextArticPart(const Vehicle *v)
 {
 	assert(EngineHasArticPart(v));
-	return v->next;
+	return v->Next();
 }
 
 /** Get the last part of a multi-part engine.
@@ -235,7 +235,7 @@
 	while (EngineHasArticPart(v)) v = GetNextArticPart(v);
 
 	/* v now contains the last artic part in the engine */
-	return v->next;
+	return v->Next();
 }
 
 void ConvertOldMultiheadToNew();
@@ -245,10 +245,12 @@
 int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped);
 void CcBuildLoco(bool success, TileIndex tile, uint32 p1, uint32 p2);
 void CcBuildWagon(bool success, TileIndex tile, uint32 p1, uint32 p2);
-void CcCloneTrain(bool success, TileIndex tile, uint32 p1, uint32 p2);
 
 byte FreightWagonMult(CargoID cargo);
 
+int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped);
+int CheckTrainStoppedInDepot(const Vehicle *v);
+
 /**
  * This class 'wraps' Vehicle; you do not actually instantiate this class.
  * You create a Vehicle using AllocateVehicle, so it is added to the pool
@@ -262,7 +264,7 @@
 	Train() { this->type = VEH_TRAIN; }
 
 	/** We want to 'destruct' the right class. */
-	virtual ~Train() {}
+	virtual ~Train() { this->PreDestructor(); }
 
 	const char *GetTypeString() const { return "train"; }
 	void MarkDirty();
@@ -273,6 +275,11 @@
 	bool IsPrimaryVehicle() const { return IsFrontEngine(this); }
 	bool HasFront() const { return true; }
 	int GetImage(Direction direction) const;
+	int GetDisplaySpeed() const { return this->cur_speed * 10 / 16; }
+	int GetDisplayMaxSpeed() const { return this->u.rail.cached_max_speed * 10 / 16; }
+	Money GetRunningCost() const;
+	bool IsInDepot() const { return CheckTrainInDepot(this, false) != -1; }
+	bool IsStoppedInDepot() const { return CheckTrainStoppedInDepot(this) >= 0; }
 	void Tick();
 };
 
--- a/src/train_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/train_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -71,7 +71,7 @@
 	uint32 total_power = 0;
 	uint32 max_te = 0;
 
-	for (const Vehicle *u = v; u != NULL; u = u->next) {
+	for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 		/* Power is not added for articulated parts */
 		if (IsArticulatedPart(u)) continue;
 
@@ -113,7 +113,7 @@
 {
 	uint32 weight = 0;
 
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		uint32 vweight = GetCargo(u->cargo_type)->weight * u->cargo.Count() * FreightWagonMult(u->cargo_type) / 16;
 
 		/* Vehicle weight is not added for articulated parts. */
@@ -159,11 +159,11 @@
 	v->u.rail.cached_total_length = 0;
 	v->u.rail.compatible_railtypes = 0;
 
-	for (Vehicle *u = v; u != NULL; u = u->next) {
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
 		const RailVehicleInfo *rvi_u = RailVehInfo(u->engine_type);
 
-		/* Update the v->first cache. This is faster than having to brute force it later. */
-		if (u->first == NULL) u->first = v;
+		/* Check the v->first cache. */
+		assert(u->First() == v);
 
 		/* update the 'first engine' */
 		u->u.rail.first_engine = v == u ? INVALID_ENGINE : first_engine;
@@ -236,7 +236,7 @@
 			veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
 		}
 		if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor;
-		veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
+		veh_len = clamp(veh_len, 0, u->Next() == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
 		u->u.rail.cached_veh_length = 8 - veh_len;
 		v->u.rail.cached_total_length += u->u.rail.cached_veh_length;
 	}
@@ -302,7 +302,7 @@
 static int GetTrainAcceleration(Vehicle *v, bool mode)
 {
 	int max_speed = 2000;
-	int speed = v->cur_speed * 10 / 16; //[mph]
+	int speed = v->GetDisplaySpeed(); //[mph]
 	int curvecount[2] = {0, 0};
 
 	/*first find the curve speed limit */
@@ -310,9 +310,9 @@
 	int sum = 0;
 	int pos = 0;
 	int lastpos = -1;
-	for (const Vehicle *u = v; u->next != NULL; u = u->next, pos++) {
+	for (const Vehicle *u = v; u->Next() != NULL; u = u->Next(), pos++) {
 		Direction dir = u->direction;
-		Direction ndir = u->next->direction;
+		Direction ndir = u->Next()->direction;
 		int i;
 
 		for (i = 0; i < 2; i++) {
@@ -372,7 +372,7 @@
 	int num = 0; //number of vehicles, change this into the number of axles later
 	int incl = 0;
 	int drag_coeff = 20; //[1e-4]
-	for (const Vehicle *u = v; u != NULL; u = u->next) {
+	for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 		num++;
 		drag_coeff += 3;
 
@@ -559,7 +559,7 @@
 			SetTrainWagon(v);
 
 			if (u != NULL) {
-				u->next = v;
+				u->SetNext(v);
 			} else {
 				SetFreeWagon(v);
 				InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
@@ -584,12 +584,12 @@
 			_new_vehicle_id = v->index;
 
 			VehiclePositionChanged(v);
-			TrainConsistChanged(GetFirstVehicleInChain(v));
-			UpdateTrainGroupID(GetFirstVehicleInChain(v));
+			TrainConsistChanged(v->First());
+			UpdateTrainGroupID(v->First());
 
 			InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 			if (IsLocalPlayer()) {
-				InvalidateAutoreplaceWindow(VEH_TRAIN, v->group_id); // updates the replace Train window
+				InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Train window
 			}
 			GetPlayer(_current_player)->num_engines[engine]++;
 		}
@@ -621,6 +621,7 @@
 
 static void AddRearEngineToMultiheadedTrain(Vehicle* v, Vehicle* u, bool building)
 {
+	u = new (u) Train();
 	u->direction = v->direction;
 	u->owner = v->owner;
 	u->tile = v->tile;
@@ -629,7 +630,6 @@
 	u->z_pos = v->z_pos;
 	u->u.rail.track = TRACK_BIT_DEPOT;
 	u->vehstatus = v->vehstatus & ~VS_STOPPED;
-	u = new (u) Train();
 	u->subtype = 0;
 	SetMultiheaded(u);
 	u->spritenum = v->spritenum + 1;
@@ -637,7 +637,7 @@
 	u->cargo_subtype = v->cargo_subtype;
 	u->cargo_cap = v->cargo_cap;
 	u->u.rail.railtype = v->u.rail.railtype;
-	if (building) v->next = u;
+	if (building) v->SetNext(u);
 	u->engine_type = v->engine_type;
 	u->build_year = v->build_year;
 	if (building) v->value >>= 1;
@@ -773,7 +773,7 @@
 			RebuildVehicleLists();
 			InvalidateWindow(WC_COMPANY, v->owner);
 			if (IsLocalPlayer())
-				InvalidateAutoreplaceWindow(VEH_TRAIN, v->group_id); // updates the replace Train window
+				InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Train window
 
 			GetPlayer(_current_player)->num_engines[p1]++;
 		}
@@ -793,7 +793,7 @@
 	if (!IsTileDepotType(tile, TRANSPORT_RAIL) || v->cur_speed != 0) return -1;
 
 	int count = 0;
-	for (; v != NULL; v = v->next) {
+	for (; v != NULL; v = v->Next()) {
 		/* This count is used by the depot code to determine the number of engines
 		 * in the consist. Exclude articulated parts so that autoreplacing to
 		 * engines with more articulated parts than before works correctly.
@@ -841,8 +841,7 @@
 
 	Vehicle *u;
 	for (u = first; GetNextVehicle(u) != v; u = GetNextVehicle(u)) {}
-	GetLastEnginePart(u)->next = GetNextVehicle(v);
-	v->first = NULL; // we shouldn't point to the old first, since the vehicle isn't in that chain anymore
+	GetLastEnginePart(u)->SetNext(GetNextVehicle(v));
 	return first;
 }
 
@@ -858,7 +857,7 @@
 			Vehicle *v = dst;
 
 			while (v->engine_type == eng) {
-				v = v->next;
+				v = v->Next();
 				if (v == NULL) return dst;
 			}
 		}
@@ -873,11 +872,12 @@
  */
 static void AddWagonToConsist(Vehicle *v, Vehicle *dest)
 {
-	UnlinkWagon(v, GetFirstVehicleInChain(v));
+	UnlinkWagon(v, v->First());
 	if (dest == NULL) return;
 
-	v->next = dest->next;
-	dest->next = v;
+	Vehicle *next = dest->Next();
+	dest->SetNext(v);
+	v->SetNext(next);
 	ClearFreeWagon(v);
 	ClearFrontEngine(v);
 }
@@ -897,7 +897,7 @@
 
 		/* make sure that there are no free cars before next engine */
 		Vehicle *u;
-		for (u = v; u->next != NULL && !IsTrainEngine(u->next); u = u->next) {}
+		for (u = v; u->Next() != NULL && !IsTrainEngine(u->Next()); u = u->Next()) {}
 
 		if (u == v->u.rail.other_multiheaded_part) continue;
 		AddWagonToConsist(v->u.rail.other_multiheaded_part, u);
@@ -934,19 +934,19 @@
 	}
 
 	/* if an articulated part is being handled, deal with its parent vehicle */
-	while (IsArticulatedPart(src)) src = GetPrevVehicleInChain(src);
+	while (IsArticulatedPart(src)) src = src->Previous();
 	if (dst != NULL) {
-		while (IsArticulatedPart(dst)) dst = GetPrevVehicleInChain(dst);
+		while (IsArticulatedPart(dst)) dst = dst->Previous();
 	}
 
 	/* don't move the same vehicle.. */
 	if (src == dst) return CommandCost();
 
 	/* locate the head of the two chains */
-	Vehicle *src_head = GetFirstVehicleInChain(src);
+	Vehicle *src_head = src->First();
 	Vehicle *dst_head;
 	if (dst != NULL) {
-		dst_head = GetFirstVehicleInChain(dst);
+		dst_head = dst->First();
 		if (dst_head->tile != src_head->tile) return CMD_ERROR;
 		/* Now deal with articulated part of destination wagon */
 		dst = GetLastEnginePart(dst);
@@ -1023,10 +1023,6 @@
 
 	/* do it? */
 	if (flags & DC_EXEC) {
-		/* clear the ->first cache */
-		for (Vehicle *u = src_head; u != NULL; u = u->next) u->first = NULL;
-		for (Vehicle *u = dst_head; u != NULL; u = u->next) u->first = NULL;
-
 		/* If we move the front Engine and if the second vehicle is not an engine
 		   add the whole vehicle to the DEFAULT_GROUP */
 		if (IsFrontEngine(src) && !IsDefaultGroupID(src->group_id)) {
@@ -1042,7 +1038,7 @@
 			if (src != src_head) {
 				Vehicle *v = src_head;
 				while (GetNextVehicle(v) != src) v = GetNextVehicle(v);
-				GetLastEnginePart(v)->next = NULL;
+				GetLastEnginePart(v)->SetNext(NULL);
 			} else {
 				InvalidateWindowData(WC_VEHICLE_DEPOT, src_head->tile); // We removed a line
 				src_head = NULL;
@@ -1052,7 +1048,7 @@
 			if (src_head == dst_head) dst_head = NULL;
 			/* unlink single wagon from linked list */
 			src_head = UnlinkWagon(src, src_head);
-			GetLastEnginePart(src)->next = NULL;
+			GetLastEnginePart(src)->SetNext(NULL);
 		}
 
 		if (dst == NULL) {
@@ -1098,17 +1094,16 @@
 				Vehicle *v;
 
 				for (v = src; GetNextVehicle(v) != NULL; v = GetNextVehicle(v));
-				GetLastEnginePart(v)->next = dst->next;
+				GetLastEnginePart(v)->SetNext(dst->Next());
 			}
-			dst->next = src;
+			dst->SetNext(src);
 		}
+
 		if (src->u.rail.other_multiheaded_part != NULL) {
 			if (src->u.rail.other_multiheaded_part == src_head) {
-				src_head = src_head->next;
+				src_head = src_head->Next();
 			}
 			AddWagonToConsist(src->u.rail.other_multiheaded_part, src);
-			/* previous line set the front engine to the old front. We need to clear that */
-			src->u.rail.other_multiheaded_part->first = NULL;
 		}
 
 		/* If there is an engine behind first_engine we moved away, it should become new first_engine
@@ -1219,8 +1214,8 @@
 
 	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 
-	while (IsArticulatedPart(v)) v = GetPrevVehicleInChain(v);
-	Vehicle *first = GetFirstVehicleInChain(v);
+	while (IsArticulatedPart(v)) v = v->Previous();
+	Vehicle *first = v->First();
 
 	/* make sure the vehicle is stopped in the depot */
 	if (CheckTrainStoppedInDepot(first) < 0) {
@@ -1263,9 +1258,6 @@
 			if ((flags & DC_EXEC) && v == first) {
 				Vehicle *new_f = GetNextVehicle(first);
 
-				/* 2.1 If the first wagon is sold, update the first-> pointers to NULL */
-				for (Vehicle *tmp = first; tmp != NULL; tmp = tmp->next) tmp->first = NULL;
-
 				/* 2.2 If there are wagons present after the deleted front engine, check
 				 * if the second wagon (which will be first) is an engine. If it is one,
 				 * promote it as a new train, retaining the unitnumber, orders */
@@ -1300,7 +1292,7 @@
 					first->next_shared = NULL;
 
 					/* If we deleted a window then open a new one for the 'new' train */
-					if (IsLocalPlayer() && w != NULL) ShowTrainViewWindow(new_f);
+					if (IsLocalPlayer() && w != NULL) ShowVehicleViewWindow(new_f);
 				}
 			}
 
@@ -1471,8 +1463,8 @@
 	Vehicle *a, *b;
 
 	/* locate vehicles to swap */
-	for (a = v; l != 0; l--) a = a->next;
-	for (b = v; r != 0; r--) b = b->next;
+	for (a = v; l != 0; l--) a = a->Next();
+	for (b = v; r != 0; r--) b = b->Next();
 
 	if (a != b) {
 		/* swap the hidden bits */
@@ -1540,30 +1532,30 @@
 static void AdvanceWagons(Vehicle *v, bool before)
 {
 	Vehicle *base = v;
-	Vehicle *first = base->next;
+	Vehicle *first = base->Next();
 	uint length = CountVehiclesInChain(v);
 
 	while (length > 2) {
 		/* find pairwise matching wagon
 		 * start<>end, start+1<>end-1, ... */
 		Vehicle *last = first;
-		for (uint i = length - 3; i > 0; i--) last = last->next;
+		for (uint i = length - 3; i > 0; i--) last = last->Next();
 
 		int differential = last->u.rail.cached_veh_length - base->u.rail.cached_veh_length;
 		if (before) differential *= -1;
 
 		if (differential > 0) {
 			/* disconnect last car to make sure only this subset moves */
-			Vehicle *tempnext = last->next;
-			last->next = NULL;
+			Vehicle *tempnext = last->Next();
+			last->SetNext(NULL);
 
 			for (int i = 0; i < differential; i++) TrainController(first, false);
 
-			last->next = tempnext;
+			last->SetNext(tempnext);
 		}
 
 		base = first;
-		first = first->next;
+		first = first->Next();
 		length -= 2;
 	}
 }
@@ -1594,7 +1586,7 @@
 	/* count number of vehicles */
 	int r = -1;
 	const Vehicle *u = v;
-	do r++; while ( (u = u->next) != NULL );
+	do r++; while ((u = u->Next()) != NULL);
 
 	AdvanceWagons(v, true);
 
@@ -1634,7 +1626,7 @@
 			return_cmd_error(STR_ONLY_TURN_SINGLE_UNIT);
 		}
 
-		Vehicle *front = GetFirstVehicleInChain(v);
+		Vehicle *front = v->First();
 		/* make sure the vehicle is stopped in the depot */
 		if (CheckTrainStoppedInDepot(front) < 0) {
 			return_cmd_error(STR_881A_TRAINS_CAN_ONLY_BE_ALTERED);
@@ -1646,8 +1638,8 @@
 			InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 		}
 	} else {
-		/*turn the whole train around */
-		if (v->u.rail.crash_anim_pos != 0 || v->breakdown_ctr != 0) return CMD_ERROR;
+		/* turn the whole train around */
+		if (v->vehstatus & VS_CRASHED || v->breakdown_ctr != 0) return CMD_ERROR;
 
 		if (flags & DC_EXEC) {
 			if (_patches.realistic_acceleration && v->cur_speed != 0) {
@@ -1773,12 +1765,12 @@
 				}
 			}
 		}
-	} while ((v = v->next) != NULL && !only_this);
+	} while ((v = v->Next()) != NULL && !only_this);
 
 	_returned_refit_capacity = num;
 
 	/* Update the train's cached variables */
-	if (flags & DC_EXEC) TrainConsistChanged(GetFirstVehicleInChain(GetVehicle(p1)));
+	if (flags & DC_EXEC) TrainConsistChanged(GetVehicle(p1)->First());
 
 	return cost;
 }
@@ -2018,7 +2010,7 @@
 			}
 			break;
 		}
-	} while ((v = v->next) != NULL);
+	} while ((v = v->Next()) != NULL);
 
 	if (sound) PlayVehicleSound(u, VSE_TRAIN_EFFECT);
 }
@@ -2047,7 +2039,7 @@
 static bool CheckTrainStayInDepot(Vehicle *v)
 {
 	/* bail out if not all wagons are in the same depot or not in a depot at all */
-	for (const Vehicle *u = v; u != NULL; u = u->next) {
+	for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 		if (u->u.rail.track != TRACK_BIT_DEPOT || u->tile != v->tile) return false;
 	}
 
@@ -2471,7 +2463,7 @@
 	do {
 		v->cur_image = v->GetImage(v->direction);
 		MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
-	} while ((v = v->next) != NULL);
+	} while ((v = v->Next()) != NULL);
 
 	/* need to update acceleration and cached values since the goods on the train changed. */
 	TrainCargoChanged(this);
@@ -2719,7 +2711,7 @@
 			myabs(v->x_pos - tcc->v->x_pos) < 6 &&
 			myabs(v->y_pos - tcc->v->y_pos) < 6 ) {
 
-		Vehicle *coll = GetFirstVehicleInChain(v);
+		Vehicle *coll = v->First();
 
 		/* it can't collide with its own wagons */
 		if (tcc->v == coll ||
@@ -2757,7 +2749,7 @@
 
 	TrainCollideChecker tcc;
 	tcc.v = v;
-	tcc.v_skip = v->next;
+	tcc.v_skip = v->Next();
 	tcc.num = 0;
 
 	/* find colliding vehicles */
@@ -2809,7 +2801,7 @@
 	Vehicle *prev;
 
 	/* For every vehicle after and including the given vehicle */
-	for (prev = GetPrevVehicleInChain(v); v != NULL; prev = v, v = v->next) {
+	for (prev = v->Previous(); v != NULL; prev = v, v = v->Next()) {
 		DiagDirection enterdir = DIAGDIR_BEGIN;
 		bool update_signals = false;
 		BeginVehicleMove(v);
@@ -2936,7 +2928,7 @@
 					goto invalid_rail;
 				}
 
-				if (IsLevelCrossingTile(v->tile) && v->next == NULL) {
+				if (IsLevelCrossingTile(v->tile) && v->Next() == NULL) {
 					UnbarCrossing(v->tile);
 					MarkTileDirtyByTile(v->tile);
 				}
@@ -2947,7 +2939,7 @@
 					v->tile = gp.new_tile;
 
 					if (GetTileRailType(gp.new_tile) != GetTileRailType(gp.old_tile)) {
-						TrainPowerChanged(GetFirstVehicleInChain(v));
+						TrainPowerChanged(v->First());
 					}
 
 					v->u.rail.track = chosen_track;
@@ -2999,7 +2991,7 @@
 
 			/* Signals can only change when the first
 			 * (above) or the last vehicle moves. */
-			if (v->next == NULL) TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir));
+			if (v->Next() == NULL) TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir));
 		}
 	}
 	return;
@@ -3030,8 +3022,8 @@
 	 * *u is then the one-before-last wagon, and *v the last
 	 * one which will physicially be removed */
 	Vehicle *u = v;
-	for (; v->next != NULL; v = v->next) u = v;
-	u->next = NULL;
+	for (; v->Next() != NULL; v = v->Next()) u = v;
+	u->SetNext(NULL);
 
 	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 	DeleteWindowById(WC_VEHICLE_VIEW, v->index);
@@ -3092,7 +3084,7 @@
 			   the bridge in that case */
 			if (v->u.rail.track != TRACK_BIT_WORMHOLE) AfterSetTrainPos(v, false);
 		}
-	} while ((v = v->next) != NULL);
+	} while ((v = v->Next()) != NULL);
 }
 
 static void HandleCrashedTrain(Vehicle *v)
@@ -3119,7 +3111,7 @@
 					EV_EXPLOSION_SMALL);
 				break;
 			}
-		} while ((u = u->next) != NULL);
+		} while ((u = u->Next()) != NULL);
 	}
 
 	if (state <= 240 && !(v->tick_counter & 3)) ChangeTrainDirRandomly(v);
@@ -3257,7 +3249,7 @@
 static void TrainLocoHandler(Vehicle *v, bool mode)
 {
 	/* train has crashed? */
-	if (v->u.rail.crash_anim_pos != 0) {
+	if (v->vehstatus & VS_CRASHED) {
 		if (!mode) HandleCrashedTrain(v);
 		return;
 	}
@@ -3315,6 +3307,25 @@
 }
 
 
+
+Money Train::GetRunningCost() const
+{
+	Money cost = 0;
+	const Vehicle *v = this;
+
+	do {
+		const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
+
+		byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost_base);
+		if (cost_factor == 0) continue;
+
+		cost += cost_factor * _price.running_rail[rvi->running_cost_class];
+	} while ((v = GetNextVehicle(v)) != NULL);
+
+	return cost;
+}
+
+
 void Train::Tick()
 {
 	if (_age_cargo_skip_counter == 0) this->cargo.AgeCargo();
@@ -3339,18 +3350,8 @@
 
 static void CheckIfTrainNeedsService(Vehicle *v)
 {
-	if (_patches.servint_trains == 0)                   return;
-	if (!VehicleNeedsService(v))                        return;
-	if (v->vehstatus & VS_STOPPED)                      return;
-	if (_patches.gotodepot && VehicleHasDepotOrders(v)) return;
-
-	/* Don't interfere with a depot visit scheduled by the user, or a
-	 * depot visit by the order list. */
-	if (v->current_order.type == OT_GOTO_DEPOT &&
-			(v->current_order.flags & (OF_HALT_IN_DEPOT | OF_PART_OF_ORDERS)) != 0)
-		return;
-
-	if (CheckTrainIsInsideDepot(v)) {
+	if (_patches.servint_trains == 0 || !VehicleNeedsService(v)) return;
+	if (v->IsInDepot()) {
 		VehicleServiceInDepot(v);
 		return;
 	}
@@ -3377,8 +3378,6 @@
 		return;
 	}
 
-	if (v->current_order.type == OT_LOADING) v->LeaveStation();
-
 	v->current_order.type = OT_GOTO_DEPOT;
 	v->current_order.flags = OF_NON_STOP;
 	v->current_order.dest = depot->index;
@@ -3386,22 +3385,6 @@
 	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
 }
 
-Money GetTrainRunningCost(const Vehicle *v)
-{
-	Money cost = 0;
-
-	do {
-		const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
-
-		byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost_base);
-		if (cost_factor == 0) continue;
-
-		cost += cost_factor * _price.running_rail[rvi->running_cost_class];
-	} while ((v = GetNextVehicle(v)) != NULL);
-
-	return cost;
-}
-
 void OnNewDay_Train(Vehicle *v)
 {
 	if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
@@ -3422,7 +3405,7 @@
 
 		if ((v->vehstatus & VS_STOPPED) == 0) {
 			/* running costs */
-			CommandCost cost(GetTrainRunningCost(v) / 364);
+			CommandCost cost(v->GetRunningCost() / 364);
 
 			v->profit_this_year -= cost.GetCost() >> 8;
 
@@ -3497,7 +3480,7 @@
 					}
 
 					Vehicle *w;
-					for (w = u->next; w != NULL && (w->engine_type != u->engine_type || w->u.rail.other_multiheaded_part != NULL); w = GetNextVehicle(w));
+					for (w = u->Next(); w != NULL && (w->engine_type != u->engine_type || w->u.rail.other_multiheaded_part != NULL); w = GetNextVehicle(w));
 					if (w != NULL) {
 						/* we found a car to partner with this engine. Now we will make sure it face the right way */
 						if (IsTrainEngine(w)) {
--- a/src/train_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/train_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -56,12 +56,7 @@
 		_backup_orders_tile = 0;
 		RestoreVehicleOrders(v, _backup_orders_data);
 	}
-	ShowTrainViewWindow(v);
-}
-
-void CcCloneTrain(bool success, TileIndex tile, uint32 p1, uint32 p2)
-{
-	if (success) ShowTrainViewWindow(GetVehicle(_new_vehicle_id));
+	ShowVehicleViewWindow(v);
 }
 
 /**
@@ -105,7 +100,7 @@
 		}
 		dx += width;
 
-		v = v->next;
+		v = v->Next();
 	} while (dx < count && v != NULL);
 
 	if (highlight_l != highlight_r) {
@@ -117,215 +112,6 @@
 	_cur_dpi = old_dpi;
 }
 
-static const Widget _train_view_widgets[] = {
-{   WWT_CLOSEBOX,  RESIZE_NONE, 14,   0,  10,   0,  13, STR_00C5,                STR_018B_CLOSE_WINDOW },
-{    WWT_CAPTION, RESIZE_RIGHT, 14,  11, 237,   0,  13, STR_882E,                STR_018C_WINDOW_TITLE_DRAG_THIS },
-{  WWT_STICKYBOX,    RESIZE_LR, 14, 238, 249,   0,  13, 0x0,                     STR_STICKY_BUTTON },
-{      WWT_PANEL,    RESIZE_RB, 14,   0, 231,  14, 121, 0x0,                     STR_NULL },
-{      WWT_INSET,    RESIZE_RB, 14,   2, 229,  16, 119, 0x0,                     STR_NULL },
-{    WWT_PUSHBTN,   RESIZE_RTB, 14,   0, 237, 122, 133, 0x0,                     STR_8846_CURRENT_TRAIN_ACTION_CLICK },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  14,  31, SPR_CENTRE_VIEW_VEHICLE, STR_8848_CENTER_MAIN_VIEW_ON_TRAIN },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  32,  49, SPR_SEND_TRAIN_TODEPOT,  STR_8849_SEND_TRAIN_TO_DEPOT },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  50,  67, SPR_IGNORE_SIGNALS,      STR_884A_FORCE_TRAIN_TO_PROCEED },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  68,  85, SPR_FORCE_VEHICLE_TURN,  STR_884B_REVERSE_DIRECTION_OF_TRAIN },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  86, 103, SPR_SHOW_ORDERS,         STR_8847_SHOW_TRAIN_S_ORDERS },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249, 104, 121, SPR_SHOW_VEHICLE_DETAILS,STR_884C_SHOW_TRAIN_DETAILS },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  68,  85, SPR_REFIT_VEHICLE,       STR_RAIL_REFIT_VEHICLE_TO_CARRY },
-{ WWT_PUSHIMGBTN,    RESIZE_LR, 14, 232, 249,  32,  49, SPR_CLONE_TRAIN,         STR_CLONE_TRAIN_INFO },
-{      WWT_PANEL,   RESIZE_LRB, 14, 232, 249, 122, 121, 0x0,                     STR_NULL },
-{  WWT_RESIZEBOX,  RESIZE_LRTB, 14, 238, 249, 122, 133, 0x0,                     STR_NULL },
-{ WIDGETS_END }
-};
-
-static void ShowTrainDetailsWindow(const Vehicle *v);
-
-static void TrainViewWndProc(Window *w, WindowEvent *e)
-{
-	switch (e->event) {
-	case WE_PAINT: {
-		const Vehicle *v, *u;
-		StringID str;
-		bool is_localplayer;
-
-		v = GetVehicle(w->window_number);
-
-		is_localplayer = v->owner == _local_player;
-		SetWindowWidgetDisabledState(w,  7, !is_localplayer);
-		SetWindowWidgetDisabledState(w,  8, !is_localplayer);
-		SetWindowWidgetDisabledState(w,  9, !is_localplayer);
-		SetWindowWidgetDisabledState(w, 13, !is_localplayer);
-
-		/* Disable cargo refit button, until we know we can enable it below. */
-		DisableWindowWidget(w, 12);
-
-		if (is_localplayer) {
-			/* See if any vehicle can be refitted */
-			for (u = v; u != NULL; u = u->next) {
-				if (EngInfo(u->engine_type)->refit_mask != 0 ||
-						(RailVehInfo(v->engine_type)->railveh_type != RAILVEH_WAGON && v->cargo_cap != 0)) {
-					EnableWindowWidget(w, 12);
-					/* We have a refittable carriage, bail out */
-					break;
-				}
-			}
-		}
-
-		/* draw widgets & caption */
-		SetDParam(0, v->index);
-		DrawWindowWidgets(w);
-
-		if (v->u.rail.crash_anim_pos != 0) {
-			str = STR_8863_CRASHED;
-		} else if (v->breakdown_ctr == 1) {
-			str = STR_885C_BROKEN_DOWN;
-		} else if (v->vehstatus & VS_STOPPED) {
-			if (v->u.rail.last_speed == 0) {
-				if (v->u.rail.cached_power == 0) {
-					str = STR_TRAIN_NO_POWER;
-				} else {
-					str = STR_8861_STOPPED;
-				}
-			} else {
-				SetDParam(0, v->u.rail.last_speed * 10 / 16);
-				str = STR_TRAIN_STOPPING + _patches.vehicle_speed;
-			}
-		} else {
-			switch (v->current_order.type) {
-			case OT_GOTO_STATION: {
-				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
-				SetDParam(0, v->current_order.dest);
-				SetDParam(1, v->u.rail.last_speed * 10 / 16);
-			} break;
-
-			case OT_GOTO_DEPOT: {
-				Depot *dep = GetDepot(v->current_order.dest);
-				SetDParam(0, dep->town_index);
-				if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HASBIT(v->current_order.flags, OFB_PART_OF_ORDERS)) {
-					str = STR_HEADING_FOR_TRAIN_DEPOT + _patches.vehicle_speed;
-				} else {
-					str = STR_HEADING_FOR_TRAIN_DEPOT_SERVICE + _patches.vehicle_speed;
-				}
-				SetDParam(1, v->u.rail.last_speed * 10 / 16);
-			} break;
-
-			case OT_LOADING:
-			case OT_LEAVESTATION:
-				str = STR_882F_LOADING_UNLOADING;
-				break;
-
-			case OT_GOTO_WAYPOINT: {
-				SetDParam(0, v->current_order.dest);
-				str = STR_HEADING_FOR_WAYPOINT + _patches.vehicle_speed;
-				SetDParam(1, v->u.rail.last_speed * 10 / 16);
-				break;
-			}
-
-			default:
-				if (v->num_orders == 0) {
-					str = STR_NO_ORDERS + _patches.vehicle_speed;
-					SetDParam(0, v->u.rail.last_speed * 10 / 16);
-				} else {
-					str = STR_EMPTY;
-				}
-				break;
-			}
-		}
-
-		/* draw the flag plus orders */
-		DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, w->widget[5].top + 1);
-		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
-		DrawWindowViewport(w);
-	} break;
-
-	case WE_CLICK: {
-		int wid = e->we.click.widget;
-		Vehicle *v = GetVehicle(w->window_number);
-
-		switch (wid) {
-		case 5: /* start/stop train */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_TRAIN | CMD_MSG(STR_883B_CAN_T_STOP_START_TRAIN));
-			break;
-		case 6: /* center main view */
-			ScrollMainWindowTo(v->x_pos, v->y_pos);
-			break;
-		case 7: /* goto depot */
-			/* TrainGotoDepot has a nice randomizer in the pathfinder, which causes desyncs... */
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL, CMD_SEND_TRAIN_TO_DEPOT | CMD_NO_TEST_IF_IN_NETWORK | CMD_MSG(STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT));
-			break;
-		case 8: /* force proceed */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL));
-			break;
-		case 9: /* reverse direction */
-			DoCommandP(v->tile, v->index, 0, NULL, CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_8869_CAN_T_REVERSE_DIRECTION));
-			break;
-		case 10: /* show train orders */
-			ShowOrdersWindow(v);
-			break;
-		case 11: /* show train details */
-			ShowTrainDetailsWindow(v);
-			break;
-		case 12:
-			ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
-			break;
-		case 13:
-			DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, NULL, CMD_CLONE_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
-			break;
-		}
-	} break;
-
-	case WE_RESIZE:
-		w->viewport->width          += e->we.sizing.diff.x;
-		w->viewport->height         += e->we.sizing.diff.y;
-		w->viewport->virtual_width  += e->we.sizing.diff.x;
-		w->viewport->virtual_height += e->we.sizing.diff.y;
-		break;
-
-	case WE_DESTROY:
-		DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
-		DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_DETAILS, w->window_number);
-		DeleteWindowById(WC_VEHICLE_TIMETABLE, w->window_number);
-		break;
-
-	case WE_MOUSELOOP: {
-		const Vehicle *v = GetVehicle(w->window_number);
-		bool train_stopped = CheckTrainStoppedInDepot(v)  >= 0;
-
-		/* Widget 7 (send to depot) must be hidden if the train is already stopped in hangar.
-		 * Widget 13 (clone) should then be shown, since cloning is allowed only while in depot and stopped.
-		 * This sytem allows to have two buttons, on top of each other.
-		 * The same system applies to widget 9 and 12, reverse direction and refit*/
-		if (train_stopped != IsWindowWidgetHidden(w, 7) || train_stopped == IsWindowWidgetHidden(w, 13)) {
-			SetWindowWidgetHiddenState(w,  7, train_stopped);  // send to depot
-			SetWindowWidgetHiddenState(w,  9, train_stopped);  // reverse direction
-			SetWindowWidgetHiddenState(w, 12, !train_stopped); // refit
-			SetWindowWidgetHiddenState(w, 13, !train_stopped); // clone
-			SetWindowDirty(w);
-		}
-		break;
-	}
-
-	}
-}
-
-static const WindowDesc _train_view_desc = {
-	WDP_AUTO, WDP_AUTO, 250, 134, 250, 134,
-	WC_VEHICLE_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_train_view_widgets,
-	TrainViewWndProc
-};
-
-void ShowTrainViewWindow(const Vehicle *v)
-{
-	Window *w = AllocateWindowDescFront(&_train_view_desc,v->index);
-
-	if (w != NULL) {
-		w->caption_color = v->owner;
-		AssignWindowViewport(w, 3, 17, 0xE2, 0x66, w->window_number | (1 << 31), ZOOM_LVL_TRAIN);
-	}
-}
-
 static void TrainDetailsCargoTab(const Vehicle *v, int x, int y)
 {
 	if (v->cargo_cap != 0) {
@@ -390,7 +176,7 @@
 		do {
 			act_cargo[u->cargo_type] += u->cargo.Count();
 			max_cargo[u->cargo_type] += u->cargo_cap;
-		} while ((u = u->next) != NULL);
+		} while ((u = u->Next()) != NULL);
 
 		/* Set scroll-amount seperately from counting, as to not compute num double
 		 * for more carriages of the same type
@@ -402,7 +188,7 @@
 	} else {
 		do {
 			if (!IsArticulatedPart(u) || u->cargo_cap != 0) num++;
-		} while ((u = u->next) != NULL);
+		} while ((u = u->Next()) != NULL);
 	}
 
 	SetVScrollCount(w, num);
@@ -423,10 +209,10 @@
 
 	SetDParam(0, (v->age + 365 < v->max_age) ? STR_AGE : STR_AGE_RED);
 	SetDParam(2, v->max_age / 366);
-	SetDParam(3, GetTrainRunningCost(v) >> 8);
+	SetDParam(3, v->GetDisplayRunningCost());
 	DrawString(x, 15, STR_885D_AGE_RUNNING_COST_YR, 0);
 
-	SetDParam(2, v->u.rail.cached_max_speed * 10 / 16);
+	SetDParam(2, v->GetDisplayMaxSpeed());
 	SetDParam(1, v->u.rail.cached_power);
 	SetDParam(0, v->u.rail.cached_weight);
 	SetDParam(3, v->u.rail.cached_max_te / 1000);
@@ -463,7 +249,7 @@
 					SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
 					DrawSprite(u->GetImage(DIR_W), pal, x + WagonLengthToPixels(4 + dx), y + 6 + (is_custom_sprite(RailVehInfo(u->engine_type)->image_index) ? _traininfo_vehicle_pitch : 0));
 					dx += u->u.rail.cached_veh_length;
-					u = u->next;
+					u = u->Next();
 				} while (u != NULL && IsArticulatedPart(u) && u->cargo_cap == 0);
 
 				px = x + WagonLengthToPixels(dx) + 2;
@@ -485,7 +271,7 @@
 			} else {
 				/* Move to the next line */
 				do {
-					v = v->next;
+					v = v->Next();
 				} while (v != NULL && IsArticulatedPart(v) && v->cargo_cap == 0);
 			}
 			if (v == NULL) return;
@@ -600,7 +386,7 @@
 };
 
 
-static void ShowTrainDetailsWindow(const Vehicle *v)
+void ShowTrainDetailsWindow(const Vehicle *v)
 {
 	Window *w;
 	VehicleID veh = v->index;
--- a/src/tree_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/tree_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -255,6 +255,11 @@
 					cost.AddCost(_price.build_trees * 2);
 					break;
 
+				case MP_WATER:
+					msg = STR_3807_CAN_T_BUILD_ON_WATER;
+					continue;
+					break;
+
 				case MP_CLEAR:
 					if (!IsTileOwner(tile, OWNER_NONE) ||
 							IsBridgeAbove(tile)) {
@@ -656,6 +661,11 @@
 	_trees_tick_ctr = 0;
 }
 
+static CommandCost TerraformTile_Trees(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 
 extern const TileTypeProcs _tile_type_trees_procs = {
 	DrawTile_Trees,           /* draw_tile_proc */
@@ -671,4 +681,5 @@
 	NULL,                     /* get_produced_cargo_proc */
 	NULL,                     /* vehicle_enter_tile_proc */
 	GetFoundation_Trees,      /* get_foundation_proc */
+	TerraformTile_Trees,      /* terraform_tile_proc */
 };
--- a/src/tunnelbridge_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/tunnelbridge_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -250,16 +250,10 @@
 	tileh_end = GetTileSlope(tile_end, &z_end);
 
 	if (IsSteepSlope(tileh_start)) z_start += TILE_HEIGHT;
-	if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_start)) {
-		z_start += TILE_HEIGHT;
-		tileh_start = SLOPE_FLAT;
-	}
+	if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_start)) z_start += TILE_HEIGHT;
 
 	if (IsSteepSlope(tileh_end)) z_end += TILE_HEIGHT;
-	if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_end)) {
-		z_end += TILE_HEIGHT;
-		tileh_end = SLOPE_FLAT;
-	}
+	if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_end)) z_end += TILE_HEIGHT;
 
 	if (z_start != z_end) return_cmd_error(STR_5009_LEVEL_LAND_OR_WATER_REQUIRED);
 
@@ -929,7 +923,7 @@
 				static const SpriteID tunnel_sprites[2][4] = { { 28, 78, 79, 27 }, {  5, 76, 77,  4 } };
 
 				DrawGroundSprite(SPR_TRAMWAY_BASE + tunnel_sprites[rts - ROADTYPES_TRAM][dir], PAL_NONE);
-				AddSortableSpriteToDraw(SPR_TRAMWAY_TUNNEL_WIRES + dir, PAL_NONE, ti->x, ti->y, 16, 16, 16, (byte)ti->z);
+				AddSortableSpriteToDraw(SPR_TRAMWAY_TUNNEL_WIRES + dir, PAL_NONE, ti->x, ti->y, 16, 16, 16, (byte)ti->z, HASBIT(_transparent_opt, TO_BUILDINGS));
 			}
 		} else if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
 			DrawCatenary(ti);
@@ -1420,6 +1414,11 @@
 	return VETSB_CONTINUE;
 }
 
+static CommandCost TerraformTile_TunnelBridge(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
 	DrawTile_TunnelBridge,           /* draw_tile_proc */
 	GetSlopeZ_TunnelBridge,          /* get_slope_z_proc */
@@ -1434,4 +1433,5 @@
 	NULL,                            /* get_produced_cargo_proc */
 	VehicleEnter_TunnelBridge,       /* vehicle_enter_tile_proc */
 	GetFoundation_TunnelBridge,      /* get_foundation_proc */
+	TerraformTile_TunnelBridge,      /* terraform_tile_proc */
 };
--- a/src/unmovable_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/unmovable_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -398,6 +398,14 @@
 	}
 }
 
+static CommandCost TerraformTile_Unmovable(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	/* Owned land remains unsold */
+	if (IsOwnedLand(tile) && CheckTileOwnership(tile)) return CommandCost();
+
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 extern const TileTypeProcs _tile_type_unmovable_procs = {
 	DrawTile_Unmovable,             /* draw_tile_proc */
 	GetSlopeZ_Unmovable,            /* get_slope_z_proc */
@@ -412,4 +420,5 @@
 	NULL,                           /* get_produced_cargo_proc */
 	NULL,                           /* vehicle_enter_tile_proc */
 	GetFoundation_Unmovable,        /* get_foundation_proc */
+	TerraformTile_Unmovable,        /* terraform_tile_proc */
 };
--- a/src/variables.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/variables.h	Sun Sep 02 11:17:33 2007 +0000
@@ -224,6 +224,8 @@
 	/** YAPF settings */
 	YapfSettings  yapf;
 
+	uint8 right_mouse_btn_emulation;
+
 	uint8 scrollwheel_scrolling;
 	uint8 scrollwheel_multiplier;
 
--- a/src/vehicle.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/vehicle.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -91,8 +91,10 @@
 
 bool VehicleNeedsService(const Vehicle *v)
 {
-	if (v->vehstatus & VS_CRASHED)
-		return false; // Crashed vehicles don't need service anymore
+	if (v->vehstatus & (VS_STOPPED | VS_CRASHED))       return false;
+	if (_patches.gotodepot && VehicleHasDepotOrders(v)) return false;
+	if (v->current_order.type == OT_LOADING)            return false;
+	if (v->current_order.type == OT_GOTO_DEPOT && v->current_order.flags & OF_HALT_IN_DEPOT) return false;
 
 	if (_patches.no_servicing_if_no_breakdowns && _opt.diff.vehicle_breakdowns == 0) {
 		return EngineHasReplacementForPlayer(GetPlayer(v->owner), v->engine_type, v->group_id);  /* Vehicles set for autoreplacing needs to go to a depot even if breakdowns are turned off */
@@ -209,6 +211,9 @@
 	Vehicle *v;
 
 	FOR_ALL_VEHICLES(v) {
+		/* Reinstate the previous pointer */
+		if (v->Next() != NULL) v->Next()->previous = v;
+
 		v->UpdateDeltaXY(v->direction);
 
 		v->fill_percent_te_id = INVALID_TE_ID;
@@ -220,6 +225,17 @@
 	}
 
 	FOR_ALL_VEHICLES(v) {
+		/* Fill the first pointers */
+		if (v->Previous() == NULL) {
+			for (Vehicle *u = v; u != NULL; u = u->Next()) {
+				u->first = v;
+			}
+		}
+	}
+
+	FOR_ALL_VEHICLES(v) {
+		assert(v->first != NULL);
+
 		if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
 			TrainConsistChanged(v);
 		} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
@@ -243,12 +259,12 @@
 					v->cur_image = v->GetImage(v->direction);
 
 					/* The plane's shadow will have the same image as the plane */
-					Vehicle *shadow = v->next;
+					Vehicle *shadow = v->Next();
 					shadow->cur_image = v->cur_image;
 
 					/* In the case of a helicopter we will update the rotor sprites */
 					if (v->subtype == AIR_HELICOPTER) {
-						Vehicle *rotor = shadow->next;
+						Vehicle *rotor = shadow->Next();
 						rotor->cur_image = GetRotorImage(v);
 					}
 
@@ -269,6 +285,7 @@
 	this->left_coord         = INVALID_COORD;
 	this->group_id           = DEFAULT_GROUP;
 	this->fill_percent_te_id = INVALID_TE_ID;
+	this->first              = this;
 }
 
 /**
@@ -462,86 +479,14 @@
 
 Vehicle *GetLastVehicleInChain(Vehicle *v)
 {
-	while (v->next != NULL) v = v->next;
+	while (v->Next() != NULL) v = v->Next();
 	return v;
 }
 
-/** Finds the previous vehicle in a chain, by a brute force search.
- * This old function is REALLY slow because it searches through all vehicles to
- * find the previous vehicle, but if v->first has not been set, then this function
- * will need to be used to find the previous one. This function should never be
- * called by anything but GetFirstVehicleInChain
- */
-static Vehicle *GetPrevVehicleInChain_bruteforce(const Vehicle *v)
-{
-	Vehicle *u;
-
-	FOR_ALL_VEHICLES(u) if (u->type == v->type && u->next == v) return u;
-
-	return NULL;
-}
-
-/** Find the previous vehicle in a chain, by using the v->first cache.
- * While this function is fast, it cannot be used in the GetFirstVehicleInChain
- * function, otherwise you'll end up in an infinite loop call
- */
-Vehicle *GetPrevVehicleInChain(const Vehicle *v)
-{
-	Vehicle *u;
-	assert(v != NULL);
-
-	u = GetFirstVehicleInChain(v);
-
-	/* Check to see if this is the first */
-	if (v == u) return NULL;
-
-	for (; u->next != v; u = u->next) assert(u->next != NULL);
-
-	return u;
-}
-
-/** Finds the first vehicle in a chain.
- * This function reads out the v->first cache. Should the cache be dirty,
- * it determines the first vehicle in a chain, and updates the cache.
- */
-Vehicle *GetFirstVehicleInChain(const Vehicle *v)
-{
-	Vehicle* u;
-
-	assert(v != NULL);
-	assert(v->type == VEH_TRAIN || v->type == VEH_ROAD);
-
-	if (v->first != NULL) {
-		if (v->type == VEH_TRAIN) {
-			if (IsFrontEngine(v->first) || IsFreeWagon(v->first)) return v->first;
-		} else {
-			if (IsRoadVehFront(v->first)) return v->first;
-		}
-
-		DEBUG(misc, 0, "v->first cache faulty. We shouldn't be here, rebuilding cache!");
-	}
-
-	/* It is the fact (currently) that newly built vehicles do not have
-	 * their ->first pointer set. When this is the case, go up to the
-	 * first engine and set the pointers correctly. Also the first pointer
-	 * is not saved in a savegame, so this has to be fixed up after loading */
-
-	/* Find the 'locomotive' or the first wagon in a chain */
-	while ((u = GetPrevVehicleInChain_bruteforce(v)) != NULL) v = u;
-
-	/* Set the first pointer of all vehicles in that chain to the first wagon */
-	if ((v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) ||
-			(v->type == VEH_ROAD && IsRoadVehFront(v))) {
-		for (u = (Vehicle *)v; u != NULL; u = u->next) u->first = (Vehicle *)v;
-	}
-
-	return (Vehicle*)v;
-}
-
 uint CountVehiclesInChain(const Vehicle* v)
 {
 	uint count = 0;
-	do count++; while ((v = v->next) != NULL);
+	do count++; while ((v = v->Next()) != NULL);
 	return count;
 }
 
@@ -562,8 +507,10 @@
 	}
 }
 
-Vehicle::~Vehicle()
+void Vehicle::PreDestructor()
 {
+	if (CleaningPool()) return;
+
 	if (IsValidStationID(this->last_station_visited)) {
 		GetStation(this->last_station_visited)->loading_vehicles.remove(this);
 
@@ -579,9 +526,6 @@
 		if (this->IsPrimaryVehicle()) DecreaseGroupNumVehicle(this->group_id);
 	}
 
-	DeleteVehicleNews(this->index, INVALID_STRING_ID);
-
-	this->QuickFree();
 	if (this->type == VEH_ROAD) ClearSlot(this);
 
 	if (this->type != VEH_TRAIN || (this->type == VEH_TRAIN && (IsFrontEngine(this) || IsFreeWagon(this)))) {
@@ -589,26 +533,32 @@
 	}
 
 	this->cargo.Truncate(0);
-	UpdateVehiclePosHash(this, INVALID_COORD, 0);
-	this->next_hash = NULL;
-	this->next_new_hash = NULL;
-	if (IsPlayerBuildableVehicleType(this)) DeleteVehicleOrders(this);
+	DeleteVehicleOrders(this);
 
 	/* Now remove any artic part. This will trigger an other
 	 *  destroy vehicle, which on his turn can remove any
 	 *  other artic parts. */
 	if ((this->type == VEH_TRAIN && EngineHasArticPart(this)) || (this->type == VEH_ROAD && RoadVehHasArticPart(this))) {
-		delete this->next;
+		delete this->Next();
 	}
+}
+
+Vehicle::~Vehicle()
+{
+	DeleteName(this->string_id);
+
+	if (CleaningPool()) return;
+
+	this->SetNext(NULL);
+	UpdateVehiclePosHash(this, INVALID_COORD, 0);
+	this->next_hash = NULL;
+	this->next_new_hash = NULL;
+
+	DeleteVehicleNews(this->index, INVALID_STRING_ID);
 
 	new (this) InvalidVehicle();
 }
 
-void Vehicle::QuickFree()
-{
-	DeleteName(this->string_id);
-}
-
 /**
  * Deletes all vehicles in a chain.
  * @param v The first vehicle in the chain.
@@ -622,7 +572,7 @@
 
 	do {
 		Vehicle *u = v;
-		v = v->next;
+		v = v->Next();
 		delete u;
 	} while (v != NULL);
 }
@@ -1330,7 +1280,7 @@
 		SndPlayVehicleFx(SND_31_EXTRACT, v);
 
 		tile = TileVirtXY(v->x_pos, v->y_pos);
-		if (IsTileType(tile, MP_INDUSTRY) && GetIndustryGfx(tile) == 0xA2) AddAnimatedTile(tile);
+		if (IsTileType(tile, MP_INDUSTRY) && GetIndustryGfx(tile) == GFX_BUBBLE_CATCHER) AddAnimatedTile(tile);
 	}
 
 	v->engine_type = et;
@@ -1684,7 +1634,7 @@
 	CommandCost cost;
 	VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8);
 
-	if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
+	if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_player)) return CMD_ERROR;
 
 	/* Get the list of vehicles in the depot */
 	BuildDepotVehicleList(vehicle_type, tile, &vl, &engine_list_length, &engine_count, NULL, NULL, NULL);
@@ -1696,7 +1646,7 @@
 		CommandCost ret;
 
 		/* Ensure that the vehicle completely in the depot */
-		if (!IsVehicleInDepot(v)) continue;
+		if (!v->IsInDepot()) continue;
 
 		x = v->x_pos;
 		y = v->y_pos;
@@ -1773,7 +1723,7 @@
 		int veh_counter = 0;
 		do {
 			veh_counter++;
-		} while ((v = v->next) != NULL);
+		} while ((v = v->Next()) != NULL);
 
 		if (!Vehicle::AllocateList(NULL, veh_counter)) {
 			return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -1857,7 +1807,7 @@
 				if (w->type == VEH_TRAIN && EngineHasArticPart(w)) {
 					w = GetNextArticPart(w);
 				} else if (w->type == VEH_ROAD && RoadVehHasArticPart(w)) {
-					w = w->next;
+					w = w->Next();
 				} else {
 					break;
 				}
@@ -1872,7 +1822,7 @@
 			if (v->type == VEH_TRAIN && EngineHasArticPart(v)) {
 				v = GetNextArticPart(v);
 			} else if (v->type == VEH_ROAD && RoadVehHasArticPart(v)) {
-				v = v->next;
+				v = v->Next();
 			} else {
 				break;
 			}
@@ -1954,7 +1904,7 @@
 
 		case VEH_ROAD:
 			FOR_ALL_VEHICLES(v) {
-				if (v->tile == tile && v->type == VEH_ROAD && IsRoadVehInDepot(v) && IsRoadVehFront(v)) {
+				if (v->tile == tile && v->type == VEH_ROAD && v->IsInDepot() && IsRoadVehFront(v)) {
 					if (*engine_count == *engine_list_length) ExtendVehicleListSize((const Vehicle***)engine_list, engine_list_length, 25);
 					(*engine_list)[(*engine_count)++] = v;
 				}
@@ -1963,7 +1913,7 @@
 
 		case VEH_SHIP:
 			FOR_ALL_VEHICLES(v) {
-				if (v->tile == tile && v->type == VEH_SHIP && IsShipInDepot(v)) {
+				if (v->tile == tile && v->type == VEH_SHIP && v->IsInDepot()) {
 					if (*engine_count == *engine_list_length) ExtendVehicleListSize((const Vehicle***)engine_list, engine_list_length, 25);
 					(*engine_list)[(*engine_count)++] = v;
 				}
@@ -1974,7 +1924,7 @@
 			FOR_ALL_VEHICLES(v) {
 				if (v->tile == tile &&
 						v->type == VEH_AIRCRAFT && IsNormalAircraft(v) &&
-						v->vehstatus & VS_HIDDEN) {
+						v->IsInDepot()) {
 					if (*engine_count == *engine_list_length) ExtendVehicleListSize((const Vehicle***)engine_list, engine_list_length, 25);
 					(*engine_list)[(*engine_count)++] = v;
 				}
@@ -2129,18 +2079,6 @@
 	return (flags & DC_EXEC) ? CommandCost() : CMD_ERROR;
 }
 
-bool IsVehicleInDepot(const Vehicle *v)
-{
-	switch (v->type) {
-		case VEH_TRAIN:    return CheckTrainInDepot(v, false) != -1;
-		case VEH_ROAD:     return IsRoadVehInDepot(v);
-		case VEH_SHIP:     return IsShipInDepot(v);
-		case VEH_AIRCRAFT: return IsAircraftInHangar(v);
-		default: NOT_REACHED();
-	}
-	return false;
-}
-
 /**
  * Calculates how full a vehicle is.
  * @param v The Vehicle to check. For trains, use the first engine.
@@ -2161,7 +2099,7 @@
 	const Station *st = GetStation(v->last_station_visited);
 
 	/* Count up max and used */
-	for (; v != NULL; v = v->next) {
+	for (; v != NULL; v = v->Next()) {
 		count += v->cargo.Count();
 		max += v->cargo_cap;
 		if (v->cargo_cap != 0) {
@@ -2187,14 +2125,14 @@
 	switch (v->type) {
 		case VEH_TRAIN:
 			InvalidateWindowClasses(WC_TRAINS_LIST);
-			if (!IsFrontEngine(v)) v = GetFirstVehicleInChain(v);
+			if (!IsFrontEngine(v)) v = v->First();
 			UpdateSignalsOnSegment(v->tile, GetRailDepotDirection(v->tile));
 			v->load_unload_time_rem = 0;
 			break;
 
 		case VEH_ROAD:
 			InvalidateWindowClasses(WC_ROADVEH_LIST);
-			if (!IsRoadVehFront(v)) v = GetFirstVehicleInChain(v);
+			if (!IsRoadVehFront(v)) v = v->First();
 			break;
 
 		case VEH_SHIP:
@@ -2456,14 +2394,14 @@
 			return TrackDirectionToTrackdir(FindFirstTrack(v->u.rail.track), v->direction);
 
 		case VEH_SHIP:
-			if (IsShipInDepot(v))
+			if (v->IsInDepot())
 				// We'll assume the ship is facing outwards
 				return DiagdirToDiagTrackdir(GetShipDepotDirection(v->tile));
 
 			return TrackDirectionToTrackdir(FindFirstTrack(v->u.ship.state), v->direction);
 
 		case VEH_ROAD:
-			if (IsRoadVehInDepot(v)) // We'll assume the road vehicle is facing outwards
+			if (v->IsInDepot()) // We'll assume the road vehicle is facing outwards
 				return DiagdirToDiagTrackdir(GetRoadDepotDirection(v->tile));
 
 			if (IsStandardRoadStopTile(v->tile)) // We'll assume the road vehicle is facing outwards
@@ -2550,6 +2488,7 @@
 {
 	assert(IsPlayerBuildableVehicleType(type));
 
+	if (!IsValidPlayer(_current_player)) return false;
 	if (_patches.always_build_infrastructure) return true;
 
 	UnitID max;
@@ -2731,8 +2670,15 @@
 static Money  _cargo_feeder_share;
 static uint32 _cargo_loaded_at_xy;
 
+/**
+ * Make it possible to make the saveload tables "friends" of other classes.
+ * @param vt the vehicle type. Can be VEH_END for the common vehicle description data
+ * @return the saveload description
+ */
+const SaveLoad *GetVehicleDescription(VehicleType vt)
+{
 /** Save and load of vehicles */
-extern const SaveLoad _common_veh_desc[] = {
+static const SaveLoad _common_veh_desc[] = {
 	    SLE_VAR(Vehicle, subtype,              SLE_UINT8),
 
 	    SLE_REF(Vehicle, next,                 REF_VEHICLE_OLD),
@@ -2855,7 +2801,7 @@
 
 static const SaveLoad _train_desc[] = {
 	SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN),
-	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
+	SLE_VEH_INCLUDEX(),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, crash_anim_pos),         SLE_UINT16),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, force_proceed),          SLE_UINT8),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, railtype),               SLE_UINT8),
@@ -2873,7 +2819,7 @@
 
 static const SaveLoad _roadveh_desc[] = {
 	SLE_WRITEBYTE(Vehicle, type, VEH_ROAD),
-	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
+	SLE_VEH_INCLUDEX(),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, state),          SLE_UINT8),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, frame),          SLE_UINT8),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, blocked_ctr),    SLE_UINT16),
@@ -2893,7 +2839,7 @@
 
 static const SaveLoad _ship_desc[] = {
 	SLE_WRITEBYTE(Vehicle, type, VEH_SHIP),
-	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
+	SLE_VEH_INCLUDEX(),
 	SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleShip, state), SLE_UINT8),
 
 	/* reserve extra space in savegame here. (currently 16 bytes) */
@@ -2904,7 +2850,7 @@
 
 static const SaveLoad _aircraft_desc[] = {
 	SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT),
-	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
+	SLE_VEH_INCLUDEX(),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, crashed_counter), SLE_UINT16),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, pos),             SLE_UINT8),
 
@@ -2995,8 +2941,12 @@
 	_aircraft_desc,
 	_special_desc,
 	_disaster_desc,
+	_common_veh_desc,
 };
 
+	return _veh_descs[vt];
+}
+
 /** Will be called when the vehicles need to be saved. */
 static void Save_VEHS()
 {
@@ -3004,7 +2954,7 @@
 	/* Write the vehicles */
 	FOR_ALL_VEHICLES(v) {
 		SlSetArrayIndex(v->index);
-		SlObject(v, _veh_descs[v->type]);
+		SlObject(v, GetVehicleDescription(v->type));
 	}
 }
 
@@ -3031,7 +2981,7 @@
 			default: NOT_REACHED();
 		}
 
-		SlObject(v, _veh_descs[vtype]);
+		SlObject(v, GetVehicleDescription(vtype));
 
 		if (_cargo_count != 0 && IsPlayerBuildableVehicleType(v)) {
 			/* Don't construct the packet with station here, because that'll fail with old savegames */
@@ -3164,6 +3114,27 @@
 	InvalidateVehicleOrder(this);
 }
 
+void Vehicle::SetNext(Vehicle *next)
+{
+	if (this->next != NULL) {
+		/* We had an old next vehicle. Update the first and previous pointers */
+		for (Vehicle *v = this->next; v != NULL; v = v->Next()) {
+			v->first = this->next;
+		}
+		this->next->previous = NULL;
+	}
+
+	this->next = next;
+
+	if (this->next != NULL) {
+		/* A new next vehicle. Update the first and previous pointers */
+		if (this->next->previous != NULL) this->next->previous->next = NULL;
+		this->next->previous = this;
+		for (Vehicle *v = this->next; v != NULL; v = v->Next()) {
+			v->first = this->first;
+		}
+	}
+}
 
 void SpecialVehicle::UpdateDeltaXY(Direction direction)
 {
--- a/src/vehicle.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/vehicle.h	Sun Sep 02 11:17:33 2007 +0000
@@ -218,13 +218,23 @@
 struct Vehicle;
 DECLARE_OLD_POOL(Vehicle, Vehicle, 9, 125)
 
+struct SaveLoad;
+const SaveLoad *GetVehicleDescription(VehicleType vt);
+void AfterLoadVehicles();
+
 struct Vehicle : PoolItem<Vehicle, VehicleID, &_Vehicle_pool> {
 	VehicleTypeByte type;    ///< Type of vehicle
 	byte subtype;            // subtype (Filled with values from EffectVehicles/TrainSubTypes/AircraftSubTypes)
 
-	Vehicle *next;           // next
+private:
+	Vehicle *next;           // pointer to the next vehicle in the chain
+	Vehicle *previous;       // NOSAVE: pointer to the previous vehicle in the chain
 	Vehicle *first;          // NOSAVE: pointer to the first vehicle in the chain
-	Vehicle *depot_list;     //NOSAVE: linked list to tell what vehicles entered a depot during the last tick. Used by autoreplace
+public:
+	friend const SaveLoad *GetVehicleDescription(VehicleType vt); // So we can use private/protected variables in the saveload code
+	friend void AfterLoadVehicles();
+
+	Vehicle *depot_list;     // NOSAVE: linked list to tell what vehicles entered a depot during the last tick. Used by autoreplace
 
 	StringID string_id;      // Displayed string
 
@@ -347,11 +357,11 @@
 	/** Create a new vehicle */
 	Vehicle();
 
+	/** Destroy all stuff that (still) needs the virtual functions to work properly */
+	void PreDestructor();
 	/** We want to 'destruct' the right class. */
 	virtual ~Vehicle();
 
-	void QuickFree();
-
 	void BeginLoading();
 	void LeaveStation();
 
@@ -415,11 +425,77 @@
 	virtual int GetImage(Direction direction) const { return 0; }
 
 	/**
+	 * Gets the speed in mph that can be sent into SetDParam for string processing.
+	 * @return the vehicle's speed
+	 */
+	virtual int GetDisplaySpeed() const { return 0; }
+
+	/**
+	 * Gets the maximum speed in mph that can be sent into SetDParam for string processing.
+	 * @return the vehicle's maximum speed
+	 */
+	virtual int GetDisplayMaxSpeed() const { return 0; }
+
+	/**
+	 * Gets the running cost of a vehicle
+	 * @return the vehicle's running cost
+	 */
+	virtual Money GetRunningCost() const { return 0; }
+
+	/**
+	 * Check whether the vehicle is in the depot.
+	 * @return true if and only if the vehicle is in the depot.
+	 */
+	virtual bool IsInDepot() const { return false; }
+
+	/**
+	 * Check whether the vehicle is in the depot *and* stopped.
+	 * @return true if and only if the vehicle is in the depot and stopped.
+	 */
+	virtual bool IsStoppedInDepot() const { return this->IsInDepot() && (this->vehstatus & VS_STOPPED) != 0; }
+
+	/**
 	 * Calls the tick handler of the vehicle
 	 */
 	virtual void Tick() {};
 
-	bool IsValid() const { return this->type != VEH_INVALID; }
+	/**
+	 * Gets the running cost of a vehicle  that can be sent into SetDParam for string processing.
+	 * @return the vehicle's running cost
+	 */
+	Money GetDisplayRunningCost() const { return (this->GetRunningCost() >> 8); }
+
+	/**
+	 * Is this vehicle a valid vehicle?
+	 * @return true if and only if the vehicle is valid.
+	 */
+	inline bool IsValid() const { return this->type != VEH_INVALID; }
+
+	/**
+	 * Set the next vehicle of this vehicle.
+	 * @param next the next vehicle. NULL removes the next vehicle.
+	 */
+	void SetNext(Vehicle *next);
+
+	/**
+	 * Get the next vehicle of this vehicle.
+	 * @note articulated parts are also counted as vehicles.
+	 * @return the next vehicle or NULL when there isn't a next vehicle.
+	 */
+	inline Vehicle *Next() const { return this->next; }
+
+	/**
+	 * Get the previous vehicle of this vehicle.
+	 * @note articulated parts are also counted as vehicles.
+	 * @return the previous vehicle or NULL when there isn't a previous vehicle.
+	 */
+	inline Vehicle *Previous() const { return this->previous; }
+
+	/**
+	 * Get the first vehicle of this vehicle chain.
+	 * @return the first vehicle of the chain.
+	 */
+	inline Vehicle *First() const { return this->first; }
 };
 
 /**
@@ -496,10 +572,7 @@
 
 void VehicleServiceInDepot(Vehicle *v);
 void VehiclePositionChanged(Vehicle *v);
-void AfterLoadVehicles();
 Vehicle *GetLastVehicleInChain(Vehicle *v);
-Vehicle *GetPrevVehicleInChain(const Vehicle *v);
-Vehicle *GetFirstVehicleInChain(const Vehicle *v);
 uint CountVehiclesInChain(const Vehicle *v);
 bool IsEngineCountable(const Vehicle *v);
 void DeleteVehicleChain(Vehicle *v);
@@ -543,22 +616,17 @@
 void BeginVehicleMove(Vehicle *v);
 void EndVehicleMove(Vehicle *v);
 
-void ShowAircraftViewWindow(const Vehicle* v);
-
 UnitID GetFreeUnitNumber(VehicleType type);
 
 void TrainConsistChanged(Vehicle *v);
 void TrainPowerChanged(Vehicle *v);
 Money GetTrainRunningCost(const Vehicle *v);
 
-int CheckTrainStoppedInDepot(const Vehicle *v);
-
 bool VehicleNeedsService(const Vehicle *v);
 
 uint GenerateVehicleSortList(const Vehicle*** sort_list, uint16 *length_of_array, VehicleType type, PlayerID owner, uint32 index, uint16 window_type);
 void BuildDepotVehicleList(VehicleType type, TileIndex tile, Vehicle ***engine_list, uint16 *engine_list_length, uint16 *engine_count, Vehicle ***wagon_list, uint16 *wagon_list_length, uint16 *wagon_count);
 CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id);
-bool IsVehicleInDepot(const Vehicle *v);
 void VehicleEnterDepot(Vehicle *v);
 
 void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g);
@@ -566,6 +634,8 @@
 CommandCost MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs);
 bool CanBuildVehicleInfrastructure(VehicleType type);
 
+void CcCloneVehicle(bool success, TileIndex tile, uint32 p1, uint32 p2);
+
 /* Flags to add to p2 for goto depot commands */
 /* Note: bits 8-10 are used for VLW flags */
 enum {
@@ -599,7 +669,7 @@
 Direction GetDirectionTowards(const Vehicle *v, int x, int y);
 
 #define BEGIN_ENUM_WAGONS(v) do {
-#define END_ENUM_WAGONS(v) } while ((v = v->next) != NULL);
+#define END_ENUM_WAGONS(v) } while ((v = v->Next()) != NULL);
 
 static inline VehicleID GetMaxVehicleIndex()
 {
--- a/src/vehicle_gui.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/vehicle_gui.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -261,7 +261,7 @@
 				}
 			}
 		}
-	} while (v->type == VEH_TRAIN && (u = u->next) != NULL && num_lines < max_lines);
+	} while (v->type == VEH_TRAIN && (u = u->Next()) != NULL && num_lines < max_lines);
 
 	list->num_lines = num_lines;
 	list->items = refit;
@@ -475,14 +475,6 @@
 	return DrawStringMultiLine(x, y, STR_02BD, w);
 }
 
-/** Count the number of bits that are set in a mask */
-static uint CountBits(uint32 mask)
-{
-	uint c = 0;
-	for (; mask != 0; mask >>= 1) if (HASBIT(mask, 0)) c++;
-	return c;
-}
-
 /** Display list of cargo types of the engine, for the purchase information window */
 uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
 {
@@ -493,7 +485,7 @@
 	char *b = _userstring;
 
 	/* Draw nothing if the engine is not refittable */
-	if (CountBits(cmask) <= 1) return 0;
+	if (COUNTBITS(cmask) <= 1) return 0;
 
 	b = InlineString(b, STR_PURCHASE_INFO_REFITTABLE_TO);
 
@@ -503,7 +495,7 @@
 	} else {
 		/* Check if we are able to refit to more cargo types and unable to. If
 		 * so, invert the cargo types to list those that we can't refit to. */
-		if (CountBits(cmask ^ lmask) < CountBits(cmask)) {
+		if (COUNTBITS(cmask ^ lmask) < COUNTBITS(cmask)) {
 			cmask ^= lmask;
 			b = InlineString(b, STR_PURCHASE_INFO_ALL_BUT);
 		}
@@ -617,8 +609,8 @@
 
 	memset(cargoa, 0, sizeof(cargoa));
 	memset(cargob, 0, sizeof(cargob));
-	for (v = va; v != NULL; v = v->next) cargoa[v->cargo_type] += v->cargo_cap;
-	for (v = vb; v != NULL; v = v->next) cargob[v->cargo_type] += v->cargo_cap;
+	for (v = va; v != NULL; v = v->Next()) cargoa[v->cargo_type] += v->cargo_cap;
+	for (v = vb; v != NULL; v = v->Next()) cargob[v->cargo_type] += v->cargo_cap;
 
 	for (CargoID i = 0; i < NUM_CARGO; i++) {
 		r = cargoa[i] - cargob[i];
@@ -653,12 +645,12 @@
 		do {
 			if (RailVehInfo(ua->engine_type)->max_speed != 0)
 				max_speed_a = min(max_speed_a, RailVehInfo(ua->engine_type)->max_speed);
-		} while ((ua = ua->next) != NULL);
+		} while ((ua = ua->Next()) != NULL);
 
 		do {
 			if (RailVehInfo(ub->engine_type)->max_speed != 0)
 				max_speed_b = min(max_speed_b, RailVehInfo(ub->engine_type)->max_speed);
-		} while ((ub = ub->next) != NULL);
+		} while ((ub = ub->Next()) != NULL);
 
 		r = max_speed_a - max_speed_b;
 	} else {
@@ -688,8 +680,8 @@
 	const Vehicle *u;
 	Money valuea = 0, valueb = 0;
 
-	for (u = va; u != NULL; u = u->next) valuea += u->value;
-	for (u = vb; u != NULL; u = u->next) valueb += u->value;
+	for (u = va; u != NULL; u = u->Next()) valuea += u->value;
+	for (u = vb; u != NULL; u = u->Next()) valueb += u->value;
 
 	int r = ClampToI32(valuea - valueb);
 
@@ -1021,7 +1013,7 @@
 
 		if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG) DrawSmallOrderList(v, x + 138, y);
 
-		if (IsVehicleInDepot(v)) {
+		if (v->IsInDepot()) {
 			str = STR_021F;
 		} else {
 			str = (v->age > v->max_age - 366) ? STR_00E3 : STR_00E2;
@@ -1080,13 +1072,7 @@
 
 					v = vl->sort_list[id_v];
 
-					switch (vl->vehicle_type) {
-						case VEH_TRAIN: ShowTrainViewWindow(v); break;
-						case VEH_ROAD: ShowRoadVehViewWindow(v); break;
-						case VEH_SHIP: ShowShipViewWindow(v); break;
-						case VEH_AIRCRAFT: ShowAircraftViewWindow(v); break;
-						default: NOT_REACHED(); break;
-					}
+					ShowVehicleViewWindow(v);
 				} break;
 
 				case VLW_WIDGET_AVAILABLE_VEHICLES:
@@ -1285,3 +1271,534 @@
 	}
 	ShowVehicleListWindowLocal(player, VLW_DEPOT_LIST, vehicle_type, depot_airport_index);
 }
+
+
+/* Unified vehicle GUI - Vehicle View Window */
+
+/** Constants of vehicle view widget indices */
+enum VehicleViewWindowWidgets {
+	VVW_WIDGET_CLOSEBOX = 0,
+	VVW_WIDGET_CAPTION,
+	VVW_WIDGET_STICKY,
+	VVW_WIDGET_PANEL,
+	VVW_WIDGET_VIEWPORT,
+	VVW_WIDGET_START_STOP_VEH,
+	VVW_WIDGET_CENTER_MAIN_VIEH,
+	VVW_WIDGET_GOTO_DEPOT,
+	VVW_WIDGET_REFIT_VEH,
+	VVW_WIDGET_SHOW_ORDERS,
+	VVW_WIDGET_SHOW_DETAILS,
+	VVW_WIDGET_CLONE_VEH,
+	VVW_WIDGET_EMPTY_BOTTOM_RIGHT,
+	VVW_WIDGET_RESIZE,
+	VVW_WIDGET_TURN_AROUND,
+	VVW_WIDGET_FORCE_PROCEED,
+};
+
+/** Vehicle view widgets. */
+static const Widget _vehicle_view_widgets[] = {
+	{   WWT_CLOSEBOX,  RESIZE_NONE,  14,   0,  10,   0,  13, STR_00C5,                 STR_018B_CLOSE_WINDOW },           // VVW_WIDGET_CLOSEBOX
+	{    WWT_CAPTION, RESIZE_RIGHT,  14,  11, 237,   0,  13, 0x0 /* filled later */,   STR_018C_WINDOW_TITLE_DRAG_THIS }, // VVW_WIDGET_CAPTION
+	{  WWT_STICKYBOX,    RESIZE_LR,  14, 238, 249,   0,  13, 0x0,                      STR_STICKY_BUTTON },               // VVW_WIDGET_STICKY
+	{      WWT_PANEL,    RESIZE_RB,  14,   0, 231,  14, 103, 0x0,                      STR_NULL },                        // VVW_WIDGET_PANEL
+	{      WWT_INSET,    RESIZE_RB,  14,   2, 229,  16, 101, 0x0,                      STR_NULL },                        // VVW_WIDGET_VIEWPORT
+	{    WWT_PUSHBTN,   RESIZE_RTB,  14,   0, 237, 104, 115, 0x0,                      0x0 /* filled later */ },          // VVW_WIDGET_START_STOP_VEH
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  14,  31, SPR_CENTRE_VIEW_VEHICLE,  0x0 /* filled later */ },          // VVW_WIDGET_CENTER_MAIN_VIEH
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  32,  49, 0x0 /* filled later */,   0x0 /* filled later */ },          // VVW_WIDGET_GOTO_DEPOT
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  50,  67, SPR_REFIT_VEHICLE,        0x0 /* filled later */ },          // VVW_WIDGET_REFIT_VEH
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  68,  85, SPR_SHOW_ORDERS,          0x0 /* filled later */ },          // VVW_WIDGET_SHOW_ORDERS
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  86, 103, SPR_SHOW_VEHICLE_DETAILS, 0x0 /* filled later */ },          // VVW_WIDGET_SHOW_DETAILS
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  32,  49, 0x0 /* filled later */,   0x0 /* filled later */ },          // VVW_WIDGET_CLONE_VEH
+	{      WWT_PANEL,   RESIZE_LRB,  14, 232, 249, 104, 103, 0x0,                      STR_NULL },                        // VVW_WIDGET_EMPTY_BOTTOM_RIGHT
+	{  WWT_RESIZEBOX,  RESIZE_LRTB,  14, 238, 249, 104, 115, 0x0,                      STR_NULL },                        // VVW_WIDGET_RESIZE
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  50,  67, SPR_FORCE_VEHICLE_TURN,   STR_9020_FORCE_VEHICLE_TO_TURN_AROUND }, // VVW_WIDGET_TURN_AROUND
+	{ WWT_PUSHIMGBTN,    RESIZE_LR,  14, 232, 249,  50,  67, SPR_IGNORE_SIGNALS,       STR_884A_FORCE_TRAIN_TO_PROCEED },       // VVW_WIDGET_FORCE_PROCEED
+{   WIDGETS_END},
+};
+
+
+static void VehicleViewWndProc(Window *w, WindowEvent *e);
+
+/** Vehicle view window descriptor for all vehicles but trains. */
+static const WindowDesc _vehicle_view_desc = {
+	WDP_AUTO, WDP_AUTO, 250, 116, 250, 116,
+	WC_VEHICLE_VIEW, WC_NONE,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
+	_vehicle_view_widgets,
+	VehicleViewWndProc
+};
+
+/** Vehicle view window descriptor for trains. Only minimum_height and
+ *  default_height are different for train view.
+ */
+static const WindowDesc _train_view_desc = {
+	WDP_AUTO, WDP_AUTO, 250, 134, 250, 134,
+	WC_VEHICLE_VIEW, WC_NONE,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
+	_vehicle_view_widgets,
+	VehicleViewWndProc
+};
+
+
+/* Just to make sure, nobody has changed the vehicle type constants, as we are
+	 using them for array indexing in a number of places here. */
+assert_compile(VEH_TRAIN == 0);
+assert_compile(VEH_ROAD == 1);
+assert_compile(VEH_SHIP == 2);
+assert_compile(VEH_AIRCRAFT == 3);
+
+/** Zoom levels for vehicle views indexed by vehicle type. */
+static const ZoomLevel _vehicle_view_zoom_levels[] = {
+	ZOOM_LVL_TRAIN,
+	ZOOM_LVL_ROADVEH,
+	ZOOM_LVL_SHIP,
+	ZOOM_LVL_AIRCRAFT,
+};
+
+/* Constants for geometry of vehicle view viewport */
+static const int VV_VIEWPORT_X = 3;
+static const int VV_VIEWPORT_Y = 17;
+static const int VV_INITIAL_VIEWPORT_WIDTH = 226;
+static const int VV_INITIAL_VIEWPORT_HEIGHT = 84;
+static const int VV_INITIAL_VIEWPORT_HEIGHT_TRAIN = 102;
+
+/** Shows the vehicle view window of the given vehicle. */
+void ShowVehicleViewWindow(const Vehicle *v)
+{
+	Window *w = AllocateWindowDescFront((v->type == VEH_TRAIN) ? &_train_view_desc : &_vehicle_view_desc, v->index);
+
+	if (w != NULL) {
+		w->caption_color = v->owner;
+		AssignWindowViewport(w, VV_VIEWPORT_X, VV_VIEWPORT_Y, VV_INITIAL_VIEWPORT_WIDTH,
+												 (v->type == VEH_TRAIN) ? VV_INITIAL_VIEWPORT_HEIGHT_TRAIN : VV_INITIAL_VIEWPORT_HEIGHT,
+												 w->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]);
+	}
+}
+
+/** Initialize a newly created vehicle view window */
+static void CreateVehicleViewWindow(Window *w)
+{
+	const Vehicle *v = GetVehicle(w->window_number);
+
+	/*
+	 * fill in data and tooltip codes for the widgets and
+	 * move some of the buttons for trains
+	 */
+	switch (v->type) {
+		case VEH_TRAIN:
+			w->widget[VVW_WIDGET_CAPTION].data = STR_882E;
+
+			w->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_8846_CURRENT_TRAIN_ACTION_CLICK;
+
+			w->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_8848_CENTER_MAIN_VIEW_ON_TRAIN;
+
+			w->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_TRAIN_TODEPOT;
+			w->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_8849_SEND_TRAIN_TO_DEPOT;
+
+			w->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_RAIL_REFIT_VEHICLE_TO_CARRY;
+
+			w->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_8847_SHOW_TRAIN_S_ORDERS;
+
+			w->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_884C_SHOW_TRAIN_DETAILS;
+
+			w->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_TRAIN;
+			w->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_TRAIN_INFO;
+
+			w->widget[VVW_WIDGET_TURN_AROUND].tooltips = STR_884B_REVERSE_DIRECTION_OF_TRAIN;
+
+
+			/* due to more buttons we must modify the layout a bit for trains */
+			w->widget[VVW_WIDGET_PANEL].bottom = 121;
+			w->widget[VVW_WIDGET_VIEWPORT].bottom = 119;
+
+			w->widget[VVW_WIDGET_START_STOP_VEH].top = 122;
+			w->widget[VVW_WIDGET_START_STOP_VEH].bottom = 133;
+
+			w->widget[VVW_WIDGET_REFIT_VEH].top = 68;
+			w->widget[VVW_WIDGET_REFIT_VEH].bottom = 85;
+
+			w->widget[VVW_WIDGET_SHOW_ORDERS].top = 86;
+			w->widget[VVW_WIDGET_SHOW_ORDERS].bottom = 103;
+
+			w->widget[VVW_WIDGET_SHOW_DETAILS].top = 104;
+			w->widget[VVW_WIDGET_SHOW_DETAILS].bottom = 121;
+
+			w->widget[VVW_WIDGET_EMPTY_BOTTOM_RIGHT].top = 122;
+			w->widget[VVW_WIDGET_EMPTY_BOTTOM_RIGHT].bottom = 121;
+
+			w->widget[VVW_WIDGET_RESIZE].top = 122;
+			w->widget[VVW_WIDGET_RESIZE].bottom = 133;
+
+			w->widget[VVW_WIDGET_TURN_AROUND].top = 68;
+			w->widget[VVW_WIDGET_TURN_AROUND].bottom = 85;
+			break;
+
+		case VEH_ROAD:
+			w->widget[VVW_WIDGET_CAPTION].data = STR_9002;
+
+			w->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_901C_CURRENT_VEHICLE_ACTION;
+
+			w->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE;
+
+			w->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_ROADVEH_TODEPOT;
+			w->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_901F_SEND_VEHICLE_TO_DEPOT;
+
+			w->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_REFIT_ROAD_VEHICLE_TO_CARRY;
+
+			w->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_901D_SHOW_VEHICLE_S_ORDERS;
+
+			w->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_9021_SHOW_ROAD_VEHICLE_DETAILS;
+
+			w->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_ROADVEH;
+			w->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_ROAD_VEHICLE_INFO;
+
+			SetWindowWidgetHiddenState(w, VVW_WIDGET_FORCE_PROCEED, true);
+			break;
+
+		case VEH_SHIP:
+			w->widget[VVW_WIDGET_CAPTION].data = STR_980F;
+
+			w->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_9827_CURRENT_SHIP_ACTION_CLICK;
+
+			w->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_9829_CENTER_MAIN_VIEW_ON_SHIP;
+
+			w->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_SHIP_TODEPOT;
+			w->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_982A_SEND_SHIP_TO_DEPOT;
+
+			w->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_983A_REFIT_CARGO_SHIP_TO_CARRY;
+
+			w->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_9828_SHOW_SHIP_S_ORDERS;
+
+			w->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_982B_SHOW_SHIP_DETAILS;
+
+			w->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_SHIP;
+			w->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_SHIP_INFO;
+
+			SetWindowWidgetsHiddenState(w, true,
+																	VVW_WIDGET_TURN_AROUND,
+																	VVW_WIDGET_FORCE_PROCEED,
+																	WIDGET_LIST_END);
+			break;
+
+		case VEH_AIRCRAFT:
+			w->widget[VVW_WIDGET_CAPTION].data = STR_A00A;
+
+			w->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_A027_CURRENT_AIRCRAFT_ACTION;
+
+			w->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT;
+
+			w->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_AIRCRAFT_TODEPOT;
+			w->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_A02A_SEND_AIRCRAFT_TO_HANGAR;
+
+			w->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_A03B_REFIT_AIRCRAFT_TO_CARRY;
+
+			w->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_A028_SHOW_AIRCRAFT_S_ORDERS;
+
+			w->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_A02B_SHOW_AIRCRAFT_DETAILS;
+
+			w->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_AIRCRAFT;
+			w->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_AIRCRAFT_INFO;
+
+			SetWindowWidgetsHiddenState(w, true,
+																	VVW_WIDGET_TURN_AROUND,
+																	VVW_WIDGET_FORCE_PROCEED,
+																	WIDGET_LIST_END);
+			break;
+
+			default: NOT_REACHED();
+	}
+}
+
+
+/* When unified GUI is complete these functions will also be unified to one
+ * function in this module */
+void ShowAircraftDetailsWindow(const Vehicle *v);
+void ShowShipDetailsWindow(const Vehicle *v);
+void ShowRoadVehDetailsWindow(const Vehicle *v);
+void ShowTrainDetailsWindow(const Vehicle *v);
+
+
+/** Provisional dispatch to vehicle-specific detail window functions. */
+static void ShowVehicleDetailsWindow(const Vehicle *v)
+{
+	switch (v->type) {
+		case VEH_TRAIN:    ShowTrainDetailsWindow(v);    break;
+		case VEH_ROAD:     ShowRoadVehDetailsWindow(v);  break;
+		case VEH_SHIP:     ShowShipDetailsWindow(v);     break;
+		case VEH_AIRCRAFT: ShowAircraftDetailsWindow(v); break;
+		default: NOT_REACHED();
+	}
+}
+
+/** Checks whether the vehicle may be refitted at the moment.*/
+static bool IsVehicleRefitable(const Vehicle *v)
+{
+	/* Why is this so different for different vehicles?
+	 * Does maybe work one solution for all?
+	 */
+	switch (v->type) {
+		case VEH_TRAIN:    return false;
+		case VEH_ROAD:     return EngInfo(v->engine_type)->refit_mask != 0 && v->IsStoppedInDepot();
+		case VEH_SHIP:     return ShipVehInfo(v->engine_type)->refittable && v->IsStoppedInDepot();
+		case VEH_AIRCRAFT: return v->IsStoppedInDepot();
+		default: NOT_REACHED();
+	}
+}
+
+/** Message strings for heading to depot indexed by vehicle type. */
+static const StringID _heading_for_depot_strings[] = {
+	STR_HEADING_FOR_TRAIN_DEPOT,
+	STR_HEADING_FOR_ROAD_DEPOT,
+	STR_HEADING_FOR_SHIP_DEPOT,
+	STR_HEADING_FOR_HANGAR,
+};
+
+/** Message strings for heading to depot and servicing indexed by vehicle type. */
+static const StringID _heading_for_depot_service_strings[] = {
+	STR_HEADING_FOR_TRAIN_DEPOT_SERVICE,
+	STR_HEADING_FOR_ROAD_DEPOT_SERVICE,
+	STR_HEADING_FOR_SHIP_DEPOT_SERVICE,
+	STR_HEADING_FOR_HANGAR_SERVICE,
+};
+
+/** Repaint vehicle view window. */
+static void DrawVehicleViewWindow(Window *w)
+{
+	const Vehicle *v = GetVehicle(w->window_number);
+	StringID str;
+	bool is_localplayer = v->owner == _local_player;
+	bool refitable_and_stopped_in_depot = IsVehicleRefitable(v);
+
+	SetWindowWidgetDisabledState(w, VVW_WIDGET_GOTO_DEPOT, !is_localplayer);
+	SetWindowWidgetDisabledState(w, VVW_WIDGET_REFIT_VEH,
+															 !refitable_and_stopped_in_depot || !is_localplayer);
+	SetWindowWidgetDisabledState(w, VVW_WIDGET_CLONE_VEH, !is_localplayer);
+
+	if (v->type == VEH_TRAIN) {
+		SetWindowWidgetDisabledState(w, VVW_WIDGET_FORCE_PROCEED, !is_localplayer);
+		SetWindowWidgetDisabledState(w, VVW_WIDGET_TURN_AROUND, !is_localplayer);
+
+		/* Cargo refit button is disabled, until we know we can enable it below. */
+
+		if (is_localplayer) {
+			/* See if any vehicle can be refitted */
+			for (const Vehicle *u = v; u != NULL; u = u->Next()) {
+				if (EngInfo(u->engine_type)->refit_mask != 0 ||
+						(RailVehInfo(v->engine_type)->railveh_type != RAILVEH_WAGON && v->cargo_cap != 0)) {
+					EnableWindowWidget(w, VVW_WIDGET_REFIT_VEH);
+					/* We have a refittable carriage, bail out */
+					break;
+				}
+			}
+		}
+	}
+
+	/* draw widgets & caption */
+	SetDParam(0, v->index);
+	DrawWindowWidgets(w);
+
+	if (v->vehstatus & VS_CRASHED) {
+		str = STR_8863_CRASHED;
+	} else if (v->type != VEH_AIRCRAFT && v->breakdown_ctr == 1) { // check for aircraft necessary?
+		str = STR_885C_BROKEN_DOWN;
+	} else if (v->vehstatus & VS_STOPPED) {
+		if (v->type == VEH_TRAIN) {
+			if (v->cur_speed == 0) {
+				if (v->u.rail.cached_power == 0) {
+					str = STR_TRAIN_NO_POWER;
+				} else {
+					str = STR_8861_STOPPED;
+				}
+			} else {
+				SetDParam(0, v->GetDisplaySpeed());
+				str = STR_TRAIN_STOPPING + _patches.vehicle_speed;
+			}
+		} else { // no train
+			str = STR_8861_STOPPED;
+		}
+	} else { // vehicle is in a "normal" state, show current order
+		switch (v->current_order.type) {
+			case OT_GOTO_STATION: {
+				SetDParam(0, v->current_order.dest);
+				SetDParam(1, v->GetDisplaySpeed());
+				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
+			} break;
+
+			case OT_GOTO_DEPOT: {
+				if (v->type == VEH_AIRCRAFT) {
+					/* Aircrafts always go to a station, even if you say depot */
+					SetDParam(0, v->current_order.dest);
+					SetDParam(1, v->GetDisplaySpeed());
+				} else {
+					Depot *depot = GetDepot(v->current_order.dest);
+					SetDParam(0, depot->town_index);
+					SetDParam(1, v->GetDisplaySpeed());
+				}
+				if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HASBIT(v->current_order.flags, OFB_PART_OF_ORDERS)) {
+					str = _heading_for_depot_strings[v->type] + _patches.vehicle_speed;
+				} else {
+					str = _heading_for_depot_service_strings[v->type] + _patches.vehicle_speed;
+				}
+			} break;
+
+			case OT_LOADING:
+				str = STR_882F_LOADING_UNLOADING;
+				break;
+
+			case OT_GOTO_WAYPOINT: {
+				assert(v->type == VEH_TRAIN);
+				SetDParam(0, v->current_order.dest);
+				str = STR_HEADING_FOR_WAYPOINT + _patches.vehicle_speed;
+				SetDParam(1, v->GetDisplaySpeed());
+				break;
+			}
+
+			case OT_LEAVESTATION:
+				if (v->type != VEH_AIRCRAFT) {
+					str = STR_882F_LOADING_UNLOADING;
+					break;
+				}
+				/* fall-through if aircraft. Does this even happen? */
+
+			default:
+				if (v->num_orders == 0) {
+					str = STR_NO_ORDERS + _patches.vehicle_speed;
+					SetDParam(0, v->GetDisplaySpeed());
+				} else {
+					str = STR_EMPTY;
+				}
+				break;
+		}
+	}
+
+	/* draw the flag plus orders */
+	DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, w->widget[VVW_WIDGET_START_STOP_VEH].top + 1);
+	DrawStringCenteredTruncated(w->widget[VVW_WIDGET_START_STOP_VEH].left + 8, w->widget[VVW_WIDGET_START_STOP_VEH].right, w->widget[VVW_WIDGET_START_STOP_VEH].top + 1, str, 0);
+	DrawWindowViewport(w);
+}
+
+/** Command indices for the _vehicle_command_translation_table. */
+enum VehicleCommandTranslation {
+	VCT_CMD_START_STOP = 0,
+	VCT_CMD_GOTO_DEPOT,
+	VCT_CMD_CLONE_VEH,
+	VCT_CMD_TURN_AROUND,
+};
+
+/** Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type. */
+static const uint32 _vehicle_command_translation_table[][4] = {
+	{ // VCT_CMD_START_STOP
+		CMD_START_STOP_TRAIN | CMD_MSG(STR_883B_CAN_T_STOP_START_TRAIN),
+		CMD_START_STOP_ROADVEH | CMD_MSG(STR_9015_CAN_T_STOP_START_ROAD_VEHICLE),
+		CMD_START_STOP_SHIP | CMD_MSG(STR_9818_CAN_T_STOP_START_SHIP),
+		CMD_START_STOP_AIRCRAFT | CMD_MSG(STR_A016_CAN_T_STOP_START_AIRCRAFT)
+	},
+	{ // VCT_CMD_GOTO_DEPOT
+		/* TrainGotoDepot has a nice randomizer in the pathfinder, which causes desyncs... */
+		CMD_SEND_TRAIN_TO_DEPOT | CMD_NO_TEST_IF_IN_NETWORK | CMD_MSG(STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT),
+		CMD_SEND_ROADVEH_TO_DEPOT | CMD_MSG(STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT),
+		CMD_SEND_SHIP_TO_DEPOT | CMD_MSG(STR_9819_CAN_T_SEND_SHIP_TO_DEPOT),
+		CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO)
+	},
+	{ // VCT_CMD_CLONE_VEH
+		CMD_CLONE_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE),
+		CMD_CLONE_VEHICLE | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE),
+		CMD_CLONE_VEHICLE | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP),
+		CMD_CLONE_VEHICLE | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT)
+	},
+	{ // VCT_CMD_TURN_AROUND
+		CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_8869_CAN_T_REVERSE_DIRECTION),
+		CMD_TURN_ROADVEH | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN),
+		0xffffffff, // invalid for ships
+		0xffffffff  // invalid for aircrafts
+	},
+};
+
+/** Window event hook for vehicle view. */
+static void VehicleViewWndProc(Window *w, WindowEvent *e)
+{
+	switch (e->event) {
+		case WE_CREATE:
+			CreateVehicleViewWindow(w);
+			break;
+
+		case WE_PAINT:
+			DrawVehicleViewWindow(w);
+			break;
+
+		case WE_CLICK: {
+			const Vehicle *v = GetVehicle(w->window_number);
+
+			switch (e->we.click.widget) {
+				case VVW_WIDGET_START_STOP_VEH: /* start stop */
+					DoCommandP(v->tile, v->index, 0, NULL,
+										 _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
+					break;
+				case VVW_WIDGET_CENTER_MAIN_VIEH: /* center main view */
+					ScrollMainWindowTo(v->x_pos, v->y_pos);
+					break;
+				case VVW_WIDGET_GOTO_DEPOT: /* goto hangar */
+					DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL,
+						_vehicle_command_translation_table[VCT_CMD_GOTO_DEPOT][v->type]);
+					break;
+				case VVW_WIDGET_REFIT_VEH: /* refit */
+					ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
+					break;
+				case VVW_WIDGET_SHOW_ORDERS: /* show orders */
+					ShowOrdersWindow(v);
+					break;
+				case VVW_WIDGET_SHOW_DETAILS: /* show details */
+					ShowVehicleDetailsWindow(v);
+					break;
+				case VVW_WIDGET_CLONE_VEH: /* clone vehicle */
+					DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, CcCloneVehicle,
+										 _vehicle_command_translation_table[VCT_CMD_CLONE_VEH][v->type]);
+					break;
+				case VVW_WIDGET_TURN_AROUND: /* turn around */
+					assert(v->type == VEH_TRAIN || v->type == VEH_ROAD);
+					DoCommandP(v->tile, v->index, 0, NULL,
+										 _vehicle_command_translation_table[VCT_CMD_TURN_AROUND][v->type]);
+					break;
+				case VVW_WIDGET_FORCE_PROCEED: /* force proceed */
+					assert(v->type == VEH_TRAIN);
+					DoCommandP(v->tile, v->index, 0, NULL, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL));
+					break;
+			}
+		} break;
+
+		case WE_RESIZE:
+			w->viewport->width          += e->we.sizing.diff.x;
+			w->viewport->height         += e->we.sizing.diff.y;
+			w->viewport->virtual_width  += e->we.sizing.diff.x;
+			w->viewport->virtual_height += e->we.sizing.diff.y;
+			break;
+
+		case WE_DESTROY:
+			DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
+			DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
+			DeleteWindowById(WC_VEHICLE_DETAILS, w->window_number);
+			DeleteWindowById(WC_VEHICLE_TIMETABLE, w->window_number);
+			break;
+
+		case WE_MOUSELOOP: {
+			const Vehicle *v = GetVehicle(w->window_number);
+			bool veh_stopped = v->IsStoppedInDepot();
+
+			/* Widget VVW_WIDGET_GOTO_DEPOT must be hidden if the vehicle is already
+			 * stopped in depot.
+			 * Widget VVW_WIDGET_CLONE_VEH should then be shown, since cloning is
+			 * allowed only while in depot and stopped.
+			 * This sytem allows to have two buttons, on top of each other.
+			 * The same system applies to widget VVW_WIDGET_REFIT_VEH and VVW_WIDGET_TURN_AROUND.*/
+			if (veh_stopped != IsWindowWidgetHidden(w, VVW_WIDGET_GOTO_DEPOT) || veh_stopped == IsWindowWidgetHidden(w, VVW_WIDGET_CLONE_VEH)) {
+				SetWindowWidgetHiddenState(w,  VVW_WIDGET_GOTO_DEPOT, veh_stopped);  // send to depot
+				SetWindowWidgetHiddenState(w, VVW_WIDGET_CLONE_VEH, !veh_stopped); // clone
+				if (v->type == VEH_ROAD || v->type == VEH_TRAIN) {
+					SetWindowWidgetHiddenState(w,  VVW_WIDGET_REFIT_VEH, !veh_stopped); // refit
+					SetWindowWidgetHiddenState(w, VVW_WIDGET_TURN_AROUND, veh_stopped);  // force turn around
+				}
+				SetWindowDirty(w);
+			}
+		} break;
+	}
+}
--- a/src/vehicle_gui.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/vehicle_gui.h	Sun Sep 02 11:17:33 2007 +0000
@@ -87,4 +87,7 @@
 	return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
 }
 
+/* Unified window procedure */
+void ShowVehicleViewWindow(const Vehicle *v);
+
 #endif /* VEHICLE_GUI_H */
--- a/src/video/cocoa_v.mm	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/video/cocoa_v.mm	Sun Sep 02 11:17:33 2007 +0000
@@ -79,6 +79,14 @@
 #undef Point
 #undef Rect
 
+/* Right Mouse Button Emulation enum */
+enum {
+	RMBE_COMMAND,
+	RMBE_CONTROL,
+	RMBE_OFF,
+};
+
+
 /* Subclass of NSWindow to fix genie effect and support resize events  */
 @interface OTTD_QuartzWindow : NSWindow
 - (void)miniaturize:(id)sender;
@@ -359,9 +367,9 @@
 	}
 
 	if (_cocoa_video_data.current_mods & NSShiftKeyMask)     key |= WKC_SHIFT;
-	if (_cocoa_video_data.current_mods & NSControlKeyMask)   key |= WKC_CTRL;
+	if (_cocoa_video_data.current_mods & NSControlKeyMask)   key |= (_patches.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_CTRL : WKC_META);
 	if (_cocoa_video_data.current_mods & NSAlternateKeyMask) key |= WKC_ALT;
-	if (_cocoa_video_data.current_mods & NSCommandKeyMask)   key |= WKC_META;
+	if (_cocoa_video_data.current_mods & NSCommandKeyMask)   key |= (_patches.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_META : WKC_CTRL);
 
 	return key << 16;
 }
@@ -544,8 +552,14 @@
 			break;
 
 		case NSLeftMouseDown:
+		{
+			uint32 keymask = 0;
+			if (_patches.right_mouse_btn_emulation == RMBE_COMMAND) keymask |= NSCommandKeyMask;
+			if (_patches.right_mouse_btn_emulation == RMBE_CONTROL) keymask |= NSControlKeyMask;
+
 			pt = QZ_GetMouseLocation(event);
-			if (!([ event modifierFlags ] & NSCommandKeyMask) ||
+
+			if (!([ event modifierFlags ] & keymask) ||
 					!QZ_MouseIsInsideView(&pt)) {
 				[NSApp sendEvent:event];
 			}
@@ -559,14 +573,14 @@
 			QZ_MouseMovedEvent((int)pt.x, (int)pt.y);
 
 			/* Right mouse button emulation */
-			if ([ event modifierFlags ] & NSCommandKeyMask) {
+			if ([ event modifierFlags ] & keymask) {
 				_cocoa_video_data.emulating_right_button = true;
 				QZ_MouseButtonEvent(1, YES);
 			} else {
 				QZ_MouseButtonEvent(0, YES);
 			}
 			break;
-
+		}
 		case NSLeftMouseUp:
 			[NSApp sendEvent:event];
 
@@ -750,7 +764,7 @@
 			last_cur_ticks = cur_ticks;
 			next_tick = cur_ticks + 30;
 
-			_ctrl_pressed = !!(_cocoa_video_data.current_mods & NSControlKeyMask);
+			_ctrl_pressed = !!(_cocoa_video_data.current_mods & ( _patches.right_mouse_btn_emulation != RMBE_CONTROL ? NSControlKeyMask : NSCommandKeyMask));
 			_shift_pressed = !!(_cocoa_video_data.current_mods & NSShiftKeyMask);
 
 			GameLoop();
@@ -771,7 +785,7 @@
 			st += GetTick() - st0;
 #endif
 			_screen.dst_ptr = _cocoa_video_data.pixels;
-			DrawTextMessage();
+			DrawChatMessage();
 			DrawMouseCursor();
 			QZ_Draw();
 		}
@@ -2064,14 +2078,16 @@
 	_cocoa_video_dialog = true;
 
 	wasstarted = _cocoa_video_started;
-	if (!_cocoa_video_started && _video_driver->Start(NULL) != NULL) {
+	if (_video_driver == NULL) {
+		setupApplication(); // Setup application before showing dialog
+	} else if (!_cocoa_video_started && _video_driver->Start(NULL) != NULL) {
 		fprintf(stderr, "%s: %s\n", title, message);
 		return;
 	}
 
 	NSRunAlertPanel([NSString stringWithCString: title], [NSString stringWithCString: message], [NSString stringWithCString: buttonLabel], nil, nil);
 
-	if (!wasstarted) _video_driver->Stop();
+	if (!wasstarted && _video_driver != NULL) _video_driver->Stop();
 
 	_cocoa_video_dialog = false;
 }
--- a/src/video/dedicated_v.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/video/dedicated_v.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -66,11 +66,13 @@
 }
 #endif
 
-#ifdef WIN32
-#include <windows.h> /* GetTickCount */
-#include <conio.h>
-#include <time.h>
-#include <tchar.h>
+#if defined(WIN32)
+# include <windows.h> /* GetTickCount */
+# if !defined(WINCE)
+#  include <conio.h>
+# endif
+# include <time.h>
+# include <tchar.h>
 static HANDLE _hInputReady, _hWaitForInputHandling;
 static HANDLE _hThread; // Thread to close
 static char _win_console_thread_buffer[200];
@@ -78,6 +80,10 @@
 /* Windows Console thread. Just loop and signal when input has been received */
 static void WINAPI CheckForConsoleInput()
 {
+#if defined(WINCE)
+	/* WinCE doesn't support console stuff */
+	return;
+#else
 	DWORD nb;
 	HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
 	while (true) {
@@ -87,6 +93,7 @@
 		SetEvent(_hInputReady);
 		WaitForSingleObject(_hWaitForInputHandling, INFINITE);
 	}
+#endif
 }
 
 static void CreateWindowsConsoleThread()
@@ -133,7 +140,9 @@
 
 	SetDebugString("net=6");
 
-#ifdef WIN32
+#if defined(WINCE)
+	/* WinCE doesn't support console stuff */
+#elif defined(WIN32)
 	// For win32 we need to allocate a console (debug mode does the same)
 	CreateConsole();
 	CreateWindowsConsoleThread();
--- a/src/video/sdl_v.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/video/sdl_v.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -512,7 +512,7 @@
 		} else {
 			SDL_CALL SDL_Delay(1);
 			_screen.dst_ptr = _sdl_screen->pixels;
-			DrawTextMessage();
+			DrawChatMessage();
 			DrawMouseCursor();
 			DrawSurfaceToScreen();
 		}
--- a/src/video/win32_v.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/video/win32_v.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -621,6 +621,9 @@
 
 #if !defined(WINCE)
 		case WM_ACTIVATE: {
+			/* Don't do anything if we are closing openttd */
+			if (_exit_game) break;
+
 			bool active = (LOWORD(wParam) != WA_INACTIVE);
 			bool minimized = (HIWORD(wParam) != 0);
 			if (_wnd.fullscreen) {
@@ -634,10 +637,9 @@
 					ChangeDisplaySettings(NULL, 0);
 				}
 			}
-			break;
-		}
+		} break;
+#endif
 	}
-#endif
 
 	return DefWindowProc(hwnd, msg, wParam, lParam);
 }
@@ -775,6 +777,8 @@
 
 	FindResolutions();
 
+	DEBUG(driver, 2, "Resolution for display: %dx%d", _cur_resolution[0], _cur_resolution[1]);
+
 	// fullscreen uses those
 	_wnd.width_org = _cur_resolution[0];
 	_wnd.height_org = _cur_resolution[1];
@@ -880,7 +884,7 @@
 			GdiFlush();
 #endif
 			_screen.dst_ptr = _wnd.buffer_bits;
-			DrawTextMessage();
+			DrawChatMessage();
 			DrawMouseCursor();
 		}
 	}
--- a/src/viewport.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/viewport.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -24,6 +24,7 @@
 #include "variables.h"
 #include "train.h"
 #include "roadveh.h"
+#include "vehicle_gui.h"
 #include "blitter/factory.hpp"
 
 #define VIEWPORT_DRAW_MEM (65536 * 2)
@@ -1785,14 +1786,14 @@
 
 static void SafeShowTrainViewWindow(const Vehicle* v)
 {
-	if (!IsFrontEngine(v)) v = GetFirstVehicleInChain(v);
-	ShowTrainViewWindow(v);
+	if (!IsFrontEngine(v)) v = v->First();
+	ShowVehicleViewWindow(v);
 }
 
 static void SafeShowRoadVehViewWindow(const Vehicle *v)
 {
-	if (!IsRoadVehFront(v)) v = GetFirstVehicleInChain(v);
-	ShowRoadVehViewWindow(v);
+	if (!IsRoadVehFront(v)) v = v->First();
+	ShowVehicleViewWindow(v);
 }
 
 static void Nop(const Vehicle *v) {}
@@ -1801,8 +1802,8 @@
 static OnVehicleClickProc* const _on_vehicle_click_proc[] = {
 	SafeShowTrainViewWindow,
 	SafeShowRoadVehViewWindow,
-	ShowShipViewWindow,
-	ShowAircraftViewWindow,
+	ShowVehicleViewWindow,
+	ShowVehicleViewWindow,
 	Nop, // Special vehicles
 	Nop  // Disaster vehicles
 };
--- a/src/water_cmd.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/water_cmd.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -26,6 +26,7 @@
 #include "train.h"
 #include "roadveh.h"
 #include "water_map.h"
+#include "industry_map.h"
 #include "newgrf.h"
 #include "newgrf_canal.h"
 #include "misc/autoptr.hpp"
@@ -66,12 +67,9 @@
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
-	if (!EnsureNoVehicle(tile)) return CMD_ERROR;
-
 	Axis axis = Extract<Axis, 0>(p1);
 
 	tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
-	if (!EnsureNoVehicle(tile2)) return CMD_ERROR;
 
 	if (!IsClearWaterTile(tile) || !IsClearWaterTile(tile2))
 		return_cmd_error(STR_3801_MUST_BE_BUILT_ON_WATER);
@@ -288,15 +286,15 @@
 		case WATER_TILE_CLEAR:
 			if (flags & DC_NO_WATER) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
 
-			/* Make sure no vehicle is on the tile */
-			if (!EnsureNoVehicle(tile)) return CMD_ERROR;
-
 			/* Make sure it's not an edge tile. */
 			if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
 					!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
 				return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
 			}
 
+			/* Make sure no vehicle is on the tile */
+			if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+
 			if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
 
 			if (flags & DC_EXEC) DoClearSquare(tile);
@@ -308,12 +306,6 @@
 			/* Make sure no vehicle is on the tile */
 			if (!EnsureNoVehicle(tile)) return CMD_ERROR;
 
-			/* Make sure it's not an edge tile. */
-			if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
-					!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
-				return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
-			}
-
 			if (flags & DC_EXEC) DoClearSquare(tile);
 			if (slope == SLOPE_N || slope == SLOPE_E || slope == SLOPE_S || slope == SLOPE_W) {
 				return CommandCost(_price.clear_water);
@@ -362,8 +354,9 @@
 					return false;
 			}
 
-		case MP_STATION: return IsOilRig(tile) || IsDock(tile) || IsBuoy(tile);
-		default:         return false;
+		case MP_STATION:  return IsOilRig(tile) || IsDock(tile) || IsBuoy(tile);
+		case MP_INDUSTRY: return (GetIndustrySpec(GetIndustryType(tile))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
+		default:          return false;
 	}
 }
 
@@ -377,10 +370,10 @@
 	if (dikes_base == 0) dikes_base = SPR_CANALS_BASE + 57;
 
 	/* determine the edges around with water. */
-	wa = IsWateredTile(TILE_ADDXY(tile, -1, 0)) << 0;
-	wa += IsWateredTile(TILE_ADDXY(tile, 0, 1)) << 1;
-	wa += IsWateredTile(TILE_ADDXY(tile, 1, 0)) << 2;
-	wa += IsWateredTile(TILE_ADDXY(tile, 0, -1)) << 3;
+	wa  = IsWateredTile(TILE_ADDXY(tile, -1,  0)) << 0;
+	wa += IsWateredTile(TILE_ADDXY(tile,  0,  1)) << 1;
+	wa += IsWateredTile(TILE_ADDXY(tile,  1,  0)) << 2;
+	wa += IsWateredTile(TILE_ADDXY(tile,  0, -1)) << 3;
 
 	if (!(wa & 1)) DrawGroundSprite(dikes_base,     PAL_NONE);
 	if (!(wa & 2)) DrawGroundSprite(dikes_base + 1, PAL_NONE);
@@ -567,6 +560,9 @@
 						)) {
 					break;
 				}
+
+				Vehicle *v = FindFloodableVehicleOnTile(target);
+				if (v != NULL) FloodVehicle(v);
 			}
 			/* FALLTHROUGH */
 
@@ -655,7 +651,7 @@
 			}
 			Vehicle *u;
 
-			if (v->type != VEH_AIRCRAFT) v = GetFirstVehicleInChain(v);
+			if (v->type != VEH_AIRCRAFT) v = v->First();
 			u = v;
 
 			/* crash all wagons, and count passengers */
@@ -799,6 +795,14 @@
 	return VETSB_CONTINUE;
 }
 
+static CommandCost TerraformTile_Water(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
+{
+	/* Canals can't be terraformed */
+	if (IsClearWaterTile(tile) && IsCanal(tile)) return_cmd_error(STR_MUST_DEMOLISH_CANAL_FIRST);
+
+	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+}
+
 
 extern const TileTypeProcs _tile_type_water_procs = {
 	DrawTile_Water,           /* draw_tile_proc */
@@ -814,4 +818,5 @@
 	NULL,                     /* get_produced_cargo_proc */
 	VehicleEnter_Water,       /* vehicle_enter_tile_proc */
 	GetFoundation_Water,      /* get_foundation_proc */
+	TerraformTile_Water,      /* terraform_tile_proc */
 };
--- a/src/waypoint.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/waypoint.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -196,6 +196,10 @@
 		wp->town_index = 0;
 		wp->string = STR_NULL;
 		wp->town_cn = 0;
+	} else if (flags & DC_EXEC) {
+		/* move existing (recently deleted) waypoint to the new location */
+		RedrawWaypointSign(wp);
+		wp->xy = tile;
 	}
 
 	if (flags & DC_EXEC) {
@@ -404,25 +408,16 @@
 
 Waypoint::~Waypoint()
 {
+	if (this->string != STR_NULL) DeleteName(this->string);
+
+	if (CleaningPool()) return;
+
 	RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, this->index);
 
 	RedrawWaypointSign(this);
 	this->xy = 0;
-
-	this->QuickFree();
 }
 
-void Waypoint::QuickFree()
-{
-	if (this->string != STR_NULL) DeleteName(this->string);
-}
-
-bool Waypoint::IsValid() const
-{
-	return this->xy != 0;
-}
-
-
 /**
  * Fix savegames which stored waypoints in their old format
  */
--- a/src/waypoint.h	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/waypoint.h	Sun Sep 02 11:17:33 2007 +0000
@@ -30,9 +30,7 @@
 	Waypoint(TileIndex tile = 0);
 	~Waypoint();
 
-	void QuickFree();
-
-	bool IsValid() const;
+	inline bool IsValid() const { return this->xy != 0; }
 };
 
 static inline bool IsValidWaypointID(WaypointID index)
--- a/src/win32.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/win32.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -29,6 +29,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <shlobj.h>
+#if defined(_MSC_VER) && !defined(WINCE)
+	#include <dbghelp.h>
+#endif
 
 static bool _has_console;
 
@@ -94,7 +97,7 @@
 #endif
 }
 
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && !defined(WINCE)
 
 static void *_safe_esp;
 static char *_crash_msg;
@@ -592,6 +595,41 @@
 		}
 	}
 
+#if !defined(_DEBUG)
+	HMODULE dbghelp = LoadLibrary(_T("dbghelp.dll"));
+	if (dbghelp != NULL) {
+		typedef BOOL (WINAPI *MiniDumpWriteDump_t)(HANDLE, DWORD, HANDLE,
+				MINIDUMP_TYPE,
+				CONST PMINIDUMP_EXCEPTION_INFORMATION,
+				CONST PMINIDUMP_USER_STREAM_INFORMATION,
+				CONST PMINIDUMP_CALLBACK_INFORMATION);
+		MiniDumpWriteDump_t funcMiniDumpWriteDump = (MiniDumpWriteDump_t)GetProcAddress(dbghelp, "MiniDumpWriteDump");
+		if (funcMiniDumpWriteDump != NULL) {
+			HANDLE file  = CreateFile(_T("crash.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
+			HANDLE proc  = GetCurrentProcess();
+			DWORD procid = GetCurrentProcessId();
+			MINIDUMP_EXCEPTION_INFORMATION mdei;
+			MINIDUMP_USER_STREAM userstream;
+			MINIDUMP_USER_STREAM_INFORMATION musi;
+			char msg[] = "****** Built on " __DATE__ " " __TIME__ ". ******";
+
+			userstream.Type        = LastReservedStream + 1;
+			userstream.Buffer      = msg;
+			userstream.BufferSize  = sizeof(msg);
+
+			musi.UserStreamCount   = 1;
+			musi.UserStreamArray   = &userstream;
+
+			mdei.ThreadId = GetCurrentThreadId();
+			mdei.ExceptionPointers  = ep;
+			mdei.ClientPointers     = false;
+
+			funcMiniDumpWriteDump(proc, procid, file, MiniDumpWithDataSegs, &mdei, &musi, NULL);
+		}
+		FreeLibrary(dbghelp);
+	}
+#endif
+
 	/* Close any possible log files */
 	CloseConsoleLogIfActive();
 
@@ -734,6 +772,14 @@
 
 void FiosGetDrives()
 {
+#if defined(WINCE)
+	/* WinCE only knows one drive: / */
+	FiosItem *fios = FiosAlloc();
+	fios->type = FIOS_TYPE_DRIVE;
+	fios->mtime = 0;
+	snprintf(fios->name, lengthof(fios->name), PATHSEP "");
+	ttd_strlcpy(fios->title, fios->name, lengthof(fios->title));
+#else
 	TCHAR drives[256];
 	const TCHAR *s;
 
@@ -746,6 +792,7 @@
 		ttd_strlcpy(fios->title, fios->name, lengthof(fios->title));
 		while (*s++ != '\0');
 	}
+#endif
 }
 
 bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb)
@@ -821,6 +868,9 @@
 
 void CreateConsole()
 {
+#if defined(WINCE)
+	/* WinCE doesn't support console stuff */
+#else
 	HANDLE hand;
 	CONSOLE_SCREEN_BUFFER_INFO coninfo;
 
@@ -849,6 +899,7 @@
 	setvbuf(stdin, NULL, _IONBF, 0);
 	setvbuf(stdout, NULL, _IONBF, 0);
 	setvbuf(stderr, NULL, _IONBF, 0);
+#endif
 }
 
 void ShowInfo(const char *str)
@@ -882,7 +933,11 @@
 	int _set_error_mode(int);
 #endif
 
+#if defined(WINCE)
+int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
+#else
 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
+#endif
 {
 	int argc;
 	char *argv[64]; // max 64 command line arguments
@@ -893,8 +948,11 @@
 #endif /* UNICODE */
 
 #if defined(UNICODE)
+
+#if !defined(WINCE)
 	/* Check if a win9x user started the win32 version */
 	if (HASBIT(GetVersion(), 31)) error("This version of OpenTTD doesn't run on windows 95/98/ME.\nPlease download the win9x binary and try again.");
+#endif
 
 	/* For UNICODE we need to convert the commandline to char* _AND_
 	 * save it because argv[] points into this buffer and thus needs to
@@ -908,7 +966,9 @@
 	CreateConsole();
 #endif
 
+#if !defined(WINCE)
 	_set_error_mode(_OUT_TO_MSGBOX); // force assertion output to messagebox
+#endif
 
 	/* setup random seed to something quite random */
 	_random_seeds[1][0] = _random_seeds[0][0] = GetTickCount();
@@ -951,7 +1011,14 @@
 
 char *getcwd(char *buf, size_t size)
 {
-#if defined(UNICODE)
+#if defined(WINCE)
+ 	TCHAR path[MAX_PATH];
+	GetModuleFileName(NULL, path, MAX_PATH);
+	convert_from_fs(path, buf, size);
+	/* GetModuleFileName returns dir with file, so remove everything behind latest '\\' */
+	char *p = strrchr(buf, '\\');
+	if (p != NULL) *p = '\0';
+#elif defined(UNICODE)
 	TCHAR path[MAX_PATH];
 	GetCurrentDirectory(MAX_PATH - 1, path);
 	convert_from_fs(path, buf, size);
--- a/src/window.cpp	Sun Aug 19 14:04:13 2007 +0000
+++ b/src/window.cpp	Sun Sep 02 11:17:33 2007 +0000
@@ -693,11 +693,21 @@
 		w->wndproc(w, &e);
 	}
 
-	if (w->left + w->width > _screen.width) w->left -= (w->left + w->width - _screen.width);
+	int nx = w->left;
+	int ny = w->top;
+
+	if (nx + w->width > _screen.width) nx -= (nx + w->width - _screen.width);
 
 	const Window *wt = FindWindowById(WC_MAIN_TOOLBAR, 0);
-	w->top  = max(w->top, (wt == NULL || w == wt || y == 0) ? 0 : wt->height);
-	w->left = max(w->left, 0);
+	ny = max(ny, (wt == NULL || w == wt || y == 0) ? 0 : wt->height);
+	nx = max(nx, 0);
+
+	if (w->viewport != NULL) {
+		w->viewport->left += nx - w->left;
+		w->viewport->top  += ny - w->top;
+	}
+	w->left = nx;
+	w->top = ny;
 
 	SetWindowDirty(w);
 
@@ -1867,7 +1877,7 @@
 	FOR_ALL_WINDOWS(wz) {
 		if ((*wz)->viewport != NULL) UpdateViewportPosition(*wz);
 	}
-	DrawTextMessage();
+	DrawChatMessage();
 	/* Redraw mouse cursor in case it was hidden */
 	DrawMouseCursor();
 }