(svn r10595) [NewGRF_ports] -Sync: with trunk r10559-10593 NewGRF_ports
authorrichk
Mon, 16 Jul 2007 21:22:24 +0000
branchNewGRF_ports
changeset 6725 23339968083f
parent 6724 cfa62b4744d4
child 6726 fc44af727904
(svn r10595) [NewGRF_ports] -Sync: with trunk r10559-10593
Makefile.src.in
os/debian/rules
projects/openttd.vcproj
source.list
src/aircraft_cmd.cpp
src/aircraft_gui.cpp
src/autoreplace_cmd.cpp
src/autoreplace_gui.cpp
src/blitter/factory.hpp
src/bridge_gui.cpp
src/build_vehicle_gui.cpp
src/command.cpp
src/depot_gui.cpp
src/disaster_cmd.cpp
src/driver.h
src/economy.cpp
src/engine.cpp
src/engine_gui.cpp
src/graph_gui.cpp
src/group.h
src/group_gui.cpp
src/industry.h
src/industry_cmd.cpp
src/intro_gui.cpp
src/lang/brazilian_portuguese.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/estonian.txt
src/lang/finnish.txt
src/lang/french.txt
src/lang/german.txt
src/lang/hungarian.txt
src/lang/italian.txt
src/lang/japanese.txt
src/lang/korean.txt
src/lang/norwegian_nynorsk.txt
src/lang/piglatin.txt
src/lang/portuguese.txt
src/lang/romanian.txt
src/lang/russian.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/traditional_chinese.txt
src/lang/ukrainian.txt
src/main_gui.cpp
src/misc/blob.hpp
src/misc/str.hpp
src/misc/strapi.hpp
src/misc_gui.cpp
src/music_gui.cpp
src/network/network_client.cpp
src/newgrf_industries.cpp
src/newgrf_industries.h
src/news_gui.cpp
src/openttd.cpp
src/order_gui.cpp
src/player_gui.cpp
src/players.cpp
src/rail_gui.cpp
src/road_cmd.cpp
src/road_gui.cpp
src/roadveh_cmd.cpp
src/saveload.cpp
src/settings.cpp
src/ship_cmd.cpp
src/ship_gui.cpp
src/signs.cpp
src/smallmap_gui.cpp
src/stdafx.h
src/string.cpp
src/strings.cpp
src/strings.h
src/subsidy_gui.cpp
src/timetable_gui.cpp
src/train_cmd.cpp
src/train_gui.cpp
src/tunnelbridge_cmd.cpp
src/variables.h
src/water_cmd.cpp
src/yapf/yapf_common.hpp
src/yapf/yapf_ship.cpp
--- a/Makefile.src.in	Mon Jul 16 21:11:29 2007 +0000
+++ b/Makefile.src.in	Mon Jul 16 21:22:24 2007 +0000
@@ -61,7 +61,10 @@
 #  gcc 2.95.3 and lower, as it should indicate that it is a C-linkage, but the
 #  compiler can't handle that information (just don't ask). So we remove it
 #  and then it compiles happily and without bitching :)
-GCC295_FIX_2=sed -e 's|\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$|\1|g'
+# Furthermore gcc 2.95 has some trouble with protected and private when
+#  accessing the protected/private stuff of the enclosing class (or the
+#  super class of the enclosing class).
+GCC295_FIX_2=sed -e 's|\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$|\1|g;s|private:|public:|g;s|protected:|public:|g'
 
 # Check if we want to show what we are doing
 ifdef VERBOSE
--- a/os/debian/rules	Mon Jul 16 21:11:29 2007 +0000
+++ b/os/debian/rules	Mon Jul 16 21:22:24 2007 +0000
@@ -22,7 +22,7 @@
 
 	# Add here commands to compile the package.
 	
-	./configure --prefix-dir=/usr --binary-dir=games --data-dir=share/games/openttd --icon-dir=share/pixmaps --personal-dir=.openttd --enable-install --install-dir=debian/openttd
+	./configure --prefix-dir=/usr --binary-dir=games --data-dir=share/games/openttd --icon-dir=share/pixmaps --personal-dir=.openttd --install-dir=debian/openttd
 	$(MAKE)
 
 	#/usr/bin/docbook-to-man debian/openttd.sgml > openttd.1
--- a/projects/openttd.vcproj	Mon Jul 16 21:11:29 2007 +0000
+++ b/projects/openttd.vcproj	Mon Jul 16 21:22:24 2007 +0000
@@ -179,10 +179,10 @@
 				RelativePath=".\..\src\callback_table.cpp">
 			</File>
 			<File
-				RelativePath=".\..\src\cargotype.cpp">
+				RelativePath=".\..\src\cargopacket.cpp">
 			</File>
 			<File
-				RelativePath=".\..\src\cargopacket.cpp">
+				RelativePath=".\..\src\cargotype.cpp">
 			</File>
 			<File
 				RelativePath=".\..\src\command.cpp">
@@ -405,10 +405,10 @@
 				RelativePath=".\..\src\bmp.h">
 			</File>
 			<File
-				RelativePath=".\..\src\cargotype.h">
+				RelativePath=".\..\src\cargopacket.h">
 			</File>
 			<File
-				RelativePath=".\..\src\cargopacket.h">
+				RelativePath=".\..\src\cargotype.h">
 			</File>
 			<File
 				RelativePath=".\..\src\command.h">
--- a/source.list	Mon Jul 16 21:11:29 2007 +0000
+++ b/source.list	Mon Jul 16 21:22:24 2007 +0000
@@ -5,8 +5,8 @@
 aystar.cpp
 bmp.cpp
 callback_table.cpp
+cargopacket.cpp
 cargotype.cpp
-cargopacket.cpp
 command.cpp
 console.cpp
 console_cmds.cpp
@@ -102,8 +102,8 @@
 articulated_vehicles.h
 aystar.h
 bmp.h
+cargopacket.h
 cargotype.h
-cargopacket.h
 command.h
 console.h
 currency.h
--- a/src/aircraft_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/aircraft_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -10,6 +10,7 @@
 #include "functions.h"
 #include "landscape.h"
 #include "station_map.h"
+#include "strings.h"
 #include "table/strings.h"
 #include "map.h"
 #include "tile.h"
--- a/src/aircraft_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/aircraft_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -9,6 +9,7 @@
 #include "functions.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "map.h"
 #include "window.h"
 #include "gui.h"
--- a/src/autoreplace_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/autoreplace_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -138,11 +138,11 @@
 	 *  If not, chek if an global auto replacement is defined */
 	new_engine_type = (IsValidGroupID(old_v->group_id) && GetGroup(old_v->group_id)->replace_protection) ?
 			INVALID_ENGINE :
-			EngineReplacementForPlayer(p, old_v->engine_type, DEFAULT_GROUP);
+			EngineReplacementForPlayer(p, old_v->engine_type, ALL_GROUP);
 
 	/* If we don't set new_egnine_type previously, we try to check if an autoreplacement was defined
 	 *  for the group and the engine_type of the vehicle */
-	if (new_engine_type == INVALID_ENGINE && !IsDefaultGroupID(old_v->group_id)) {
+	if (new_engine_type == INVALID_ENGINE && !IsAllGroupID(old_v->group_id)) {
 		new_engine_type = EngineReplacementForPlayer(p, old_v->engine_type, old_v->group_id);
 	}
 
@@ -346,10 +346,15 @@
 				if (IsValidGroupID(w->group_id)) {
 					if (!EngineHasReplacementForPlayer(p, w->engine_type, w->group_id) && (
 							GetGroup(w->group_id)->replace_protection ||
-							!EngineHasReplacementForPlayer(p, w->engine_type, DEFAULT_GROUP))) {
+							!EngineHasReplacementForPlayer(p, w->engine_type, ALL_GROUP))) {
 						continue;
 					}
-				} else if (!EngineHasReplacementForPlayer(p, w->engine_type, DEFAULT_GROUP)) {
+				} else if (IsDefaultGroupID(w->group_id)) {
+					if (!EngineHasReplacementForPlayer(p, w->engine_type, DEFAULT_GROUP) &&
+							!EngineHasReplacementForPlayer(p, w->engine_type, ALL_GROUP)) {
+						continue;
+					}
+				} else if (!EngineHasReplacementForPlayer(p, w->engine_type, ALL_GROUP)) {
 					continue;
 				}
 			}
--- a/src/autoreplace_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/autoreplace_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -8,6 +8,7 @@
 #include "functions.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "window.h"
 #include "gui.h"
 #include "command.h"
@@ -48,7 +49,7 @@
 {
 	Player *p = GetPlayer(_local_player);
 	byte type = GetEngine(e)->type;
-	uint num_engines = IsDefaultGroupID(id_g) ? p->num_engines[e] : GetGroup(id_g)->num_engines[e];
+	uint num_engines = GetGroupNumEngines(id_g, e);
 
 	if (num_engines == 0 || p->num_engines[e] == 0) {
 		/* We don't have any of this engine type.
@@ -140,7 +141,6 @@
  */
 static void GenerateReplaceVehList(Window *w, bool draw_left)
 {
-	Player *p = GetPlayer(_local_player);
 	EngineID e;
 	EngineID selected_engine = INVALID_ENGINE;
 	byte type = w->window_number;
@@ -154,7 +154,7 @@
 
 		if (draw_left) {
 			const GroupID selected_group = WP(w, replaceveh_d).sel_group;
-			const uint num_engines = IsDefaultGroupID(selected_group) ? p->num_engines[e] : GetGroup(selected_group)->num_engines[e];
+			const uint num_engines = GetGroupNumEngines(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/factory.hpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/blitter/factory.hpp	Mon Jul 16 21:22:24 2007 +0000
@@ -39,7 +39,11 @@
 		if (name == NULL) return;
 
 		this->name = strdup(name);
-		std::pair<Blitters::iterator, bool> P = GetBlitters().insert(Blitters::value_type(name, this));
+#if !defined(NDEBUG)
+		/* NDEBUG disables asserts and gives a warning: unused variable 'P' */
+		std::pair<Blitters::iterator, bool> P =
+#endif /* !NDEBUG */
+		GetBlitters().insert(Blitters::value_type(name, this));
 		assert(P.second);
 	}
 
--- a/src/bridge_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/bridge_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "map.h"
 #include "window.h"
--- a/src/build_vehicle_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/build_vehicle_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -823,7 +823,6 @@
 	byte step_size = GetVehicleListHeight(type);
 	byte x_offset = 0;
 	byte y_offset = 0;
-	Player *p = GetPlayer(_local_player);
 
 	assert(max <= EngList_Count(&eng_list));
 
@@ -854,7 +853,7 @@
 
 	for (; min < max; min++, y += step_size) {
 		const EngineID engine = eng_list[min];
-		const uint num_engines = IsDefaultGroupID(selected_group) ? p->num_engines[engine] : GetGroup(selected_group)->num_engines[engine];
+		const uint num_engines = GetGroupNumEngines(selected_group, engine);
 
 		SetDParam(0, engine);
 		DrawString(x + x_offset, y, STR_ENGINE_NAME, engine == selected_id ? 0xC : 0x10);
--- a/src/command.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/command.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "landscape.h"
 #include "map.h"
--- a/src/depot_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/depot_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -10,6 +10,7 @@
 #include "ship.h"
 #include "aircraft.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "gui.h"
 #include "gfx.h"
--- a/src/disaster_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/disaster_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -23,6 +23,7 @@
 #include "industry_map.h"
 #include "station_map.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "map.h"
 #include "tile.h"
 #include "vehicle.h"
--- a/src/driver.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/driver.h	Mon Jul 16 21:22:24 2007 +0000
@@ -79,7 +79,11 @@
 		strecpy(buf, GetDriverTypeName(type), lastof(buf));
 		strecpy(buf + 5, name, lastof(buf));
 
-		std::pair<Drivers::iterator, bool> P = GetDrivers().insert(Drivers::value_type(buf, this));
+#if !defined(NDEBUG)
+		/* NDEBUG disables asserts and gives a warning: unused variable 'P' */
+		std::pair<Drivers::iterator, bool> P =
+#endif /* !NDEBUG */
+		GetDrivers().insert(Drivers::value_type(buf, this));
 		assert(P.second);
 	}
 
--- a/src/economy.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/economy.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -538,7 +538,7 @@
 		int32 price;
 
 		DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
-		COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
+		CopyInDParam(0,WP(w,news_d).ni->params, 2);
 		SetDParam(2, p->index);
 		price = WP(w,news_d).ni->params[2];
 		SetDParam(3, price);
@@ -552,7 +552,7 @@
 
 	case NB_BBANKRUPT:
 		DrawStringCentered(w->width>>1, 1, STR_705C_BANKRUPT, 0);
-		COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
+		CopyInDParam(0,WP(w,news_d).ni->params, 2);
 		DrawStringMultiCenter(
 			((w->width - 101) >> 1) + 98,
 			90,
@@ -563,7 +563,7 @@
 	case NB_BNEWCOMPANY:
 		DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
 		SetDParam(0, p->index);
-		COPY_IN_DPARAM(1,WP(w,news_d).ni->params, 2);
+		CopyInDParam(1,WP(w,news_d).ni->params, 2);
 		DrawStringMultiCenter(
 			((w->width - 101) >> 1) + 98,
 			90,
@@ -589,20 +589,20 @@
 	case NB_BMERGER:
 		SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
 		SetDParam(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
-		COPY_IN_DPARAM(2,ni->params, 2);
+		CopyInDParam(2,ni->params, 2);
 		SetDParam(4, p->index);
-		COPY_IN_DPARAM(5,ni->params + 2, 1);
+		CopyInDParam(5,ni->params + 2, 1);
 		return STR_02B6;
 	case NB_BBANKRUPT:
 		SetDParam(0, STR_705C_BANKRUPT);
 		SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
-		COPY_IN_DPARAM(2,ni->params, 2);
+		CopyInDParam(2,ni->params, 2);
 		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);
-		COPY_IN_DPARAM(3,ni->params, 2);
+		CopyInDParam(3,ni->params, 2);
 		return STR_02B6;
 	default:
 		NOT_REACHED();
--- a/src/engine.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/engine.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -507,7 +507,7 @@
 
 		er->to = INVALID_ENGINE;
 		er->next = NULL;
-		er->group_id = DEFAULT_GROUP;
+		er->group_id = ALL_GROUP;
 		return er;
 	}
 
@@ -636,8 +636,12 @@
 		er = GetEngineRenew(index);
 		SlObject(er, _engine_renew_desc);
 
-		/* Advanced vehicle lists got added */
-		if (CheckSavegameVersion(60)) er->group_id = DEFAULT_GROUP;
+		/* Advanced vehicle lists, ungrouped vehicles got added */
+		if (CheckSavegameVersion(60)) {
+			er->group_id = ALL_GROUP;
+		} else if (CheckSavegameVersion(71)) {
+			if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP;
+		}
 	}
 }
 
--- a/src/engine_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/engine_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "functions.h"
 #include "window.h"
--- a/src/graph_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/graph_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "functions.h"
 #include "window.h"
--- a/src/group.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/group.h	Mon Jul 16 21:22:24 2007 +0000
@@ -8,6 +8,7 @@
 #include "oldpool.h"
 
 enum {
+	ALL_GROUP     = 0xFFFD,
 	DEFAULT_GROUP = 0xFFFE,
 	INVALID_GROUP = 0xFFFF,
 };
@@ -50,7 +51,17 @@
 
 static inline bool IsDefaultGroupID(GroupID index)
 {
-	return (index == DEFAULT_GROUP);
+	return index == DEFAULT_GROUP;
+}
+
+/**
+ * Checks if a GroupID stands for all vehicles of a player
+ * @param id_g The GroupID to check
+ * @return true is id_g is identical to ALL_GROUP
+ */
+static inline bool IsAllGroupID(GroupID id_g)
+{
+	return id_g == ALL_GROUP;
 }
 
 #define FOR_ALL_GROUPS_FROM(g, start) for (g = GetGroup(start); g != NULL; g = (g->index + 1U < GetGroupPoolSize()) ? GetGroup(g->index + 1) : NULL) if (IsValidGroup(g))
@@ -69,6 +80,25 @@
 	return num;
 }
 
+/**
+ * Get the number of engines with EngineID id_e in the group with GroupID
+ * id_g
+ * @param id_g The GroupID of the group used
+ * @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)
+{
+	if (IsValidGroupID(id_g)) return GetGroup(id_g)->num_engines[id_e];
+
+	uint num = GetPlayer(_local_player)->num_engines[id_e];
+	if (!IsDefaultGroupID(id_g)) return num;
+
+	const Group *g;
+	FOR_ALL_GROUPS(g) num -= g->num_engines[id_e];
+	return num;
+}
+
 static inline void IncreaseGroupNumVehicle(GroupID id_g)
 {
 	if (IsValidGroupID(id_g)) GetGroup(id_g)->num_vehicle++;
--- a/src/group_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/group_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -112,6 +112,7 @@
 	GRP_WIDGET_STICKY,
 	GRP_WIDGET_EMPTY_TOP_LEFT,
 	GRP_WIDGET_ALL_VEHICLES,
+	GRP_WIDGET_DEFAULT_VEHICLES,
 	GRP_WIDGET_LIST_GROUP,
 	GRP_WIDGET_LIST_GROUP_SCROLLBAR,
 	GRP_WIDGET_SORT_BY_ORDER,
@@ -141,8 +142,9 @@
 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   513,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
 {  WWT_STICKYBOX,     RESIZE_LR,    14,   514,   525,     0,    13, 0x0,                  STR_STICKY_BUTTON},
 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    14,    25, 0x0,                  STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    39, 0x0,                  STR_NULL},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    39,   220, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
+{      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    38, 0x0,                  STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    39,    52, 0x0,                  STR_NULL},
+{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    52,   220, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    26,   220, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
 {      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
@@ -181,13 +183,13 @@
 		default: NOT_REACHED();
 		case VEH_TRAIN:
 		case VEH_ROAD:
-			w->vscroll.cap = 14;
+			w->vscroll.cap = 13;
 			w->vscroll2.cap = 8;
 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
 			break;
 		case VEH_SHIP:
 		case VEH_AIRCRAFT:
-			w->vscroll.cap = 10;
+			w->vscroll.cap = 9;
 			w->vscroll2.cap = 4;
 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG2;
 			break;
@@ -214,7 +216,7 @@
 	gl->l.flags = VL_REBUILD | VL_NONE;
 	gl->l.resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;	// Set up resort timer
 
-	gv->group_sel = DEFAULT_GROUP;
+	gv->group_sel = ALL_GROUP;
 
 	switch (gv->vehicle_type) {
 		case VEH_TRAIN:
@@ -275,8 +277,8 @@
 		INVALID_STRING_ID
 	};
 
-	action_str[3] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_ADD_SHARED_VEHICLE;
-	action_str[4] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_REMOVE_ALL_VEHICLES;
+	action_str[3] = IsValidGroupID(gid) ? STR_GROUP_ADD_SHARED_VEHICLE : INVALID_STRING_ID;
+	action_str[4] = IsValidGroupID(gid) ? STR_GROUP_REMOVE_ALL_VEHICLES : INVALID_STRING_ID;
 
 	ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
 }
@@ -314,9 +316,9 @@
 			int max;
 			int i;
 
-			/* If we select the default group, gv->list will contain all vehicles of the player
+			/* If we select the all vehicles, gv->list will contain all vehicles of the player
 			 * else gv->list will contain all vehicles which belong to the selected group */
-			BuildVehicleList(gv, owner, gv->group_sel, IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST);
+			BuildVehicleList(gv, owner, gv->group_sel, IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST);
 			SortVehicleList(gv);
 
 
@@ -334,16 +336,16 @@
 					GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 					WIDGET_LIST_END);
 
-			/* Disable the group specific function when we select the default group */
-			SetWindowWidgetsDisabledState(w, IsDefaultGroupID(gv->group_sel),
+			/* Disable the group specific function when we select the default group or all vehicles */
+			SetWindowWidgetsDisabledState(w, IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel),
 					GRP_WIDGET_DELETE_GROUP,
 					GRP_WIDGET_RENAME_GROUP,
 					GRP_WIDGET_REPLACE_PROTECTION,
 					WIDGET_LIST_END);
 
-			/* If selected_group == DEFAULT_GROUP, draw the standard caption
-			   We list all vehicles */
-			if (IsDefaultGroupID(gv->group_sel)) {
+			/* If selected_group == DEFAULT_GROUP || ALL_GROUP, draw the standard caption
+			   We list all vehicles or ungrouped vehicles */
+			if (IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel)) {
 				SetDParam(0, p->index);
 				SetDParam(1, gv->l.list_length);
 
@@ -398,16 +400,32 @@
 
 			/* Draw Matrix Group
 			 * The selected group is drawn in white */
-			StringID str;
+			StringID str_all_veh, str_no_group_veh;
 
 			switch (gv->vehicle_type) {
-				case VEH_TRAIN:    str = STR_GROUP_ALL_TRAINS;    break;
-				case VEH_ROAD:     str = STR_GROUP_ALL_ROADS;     break;
-				case VEH_SHIP:     str = STR_GROUP_ALL_SHIPS;     break;
-				case VEH_AIRCRAFT: str = STR_GROUP_ALL_AIRCRAFTS; break;
+				case VEH_TRAIN:
+					str_all_veh = STR_GROUP_ALL_TRAINS;
+					str_no_group_veh = STR_GROUP_DEFAULT_TRAINS;
+					break;
+				case VEH_ROAD:
+					str_all_veh = STR_GROUP_ALL_ROADS;
+					str_no_group_veh = STR_GROUP_DEFAULT_ROADS;
+					break;
+				case VEH_SHIP:
+					str_all_veh = STR_GROUP_ALL_SHIPS;
+					str_no_group_veh = STR_GROUP_DEFAULT_SHIPS;
+					break;
+				case VEH_AIRCRAFT:
+					str_all_veh = STR_GROUP_ALL_AIRCRAFTS;
+					str_no_group_veh = STR_GROUP_DEFAULT_AIRCRAFTS;
+					break;
 				default: NOT_REACHED(); break;
 			}
-			DrawString(10, y1, str, IsDefaultGroupID(gv->group_sel) ? 12 : 16);
+			DrawString(10, y1, str_all_veh, IsAllGroupID(gv->group_sel) ? 12 : 16);
+
+			y1 += 13;
+
+			DrawString(10, y1, str_no_group_veh, IsDefaultGroupID(gv->group_sel) ? 12 : 16);
 
 			max = min(w->vscroll.pos + w->vscroll.cap, gl->l.list_length);
 			for (i = w->vscroll.pos ; i < max ; ++i) {
@@ -491,6 +509,15 @@
 					return;
 
 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles button
+					if (!IsAllGroupID(gv->group_sel)) {
+						gv->group_sel = ALL_GROUP;
+						gv->l.flags |= VL_REBUILD;
+						UpdateGroupActionDropdown(w, gv->group_sel);
+						SetWindowDirty(w);
+					}
+					break;
+
+				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles button
 					if (!IsDefaultGroupID(gv->group_sel)) {
 						gv->group_sel = DEFAULT_GROUP;
 						gv->l.flags |= VL_REBUILD;
@@ -500,7 +527,7 @@
 					break;
 
 				case GRP_WIDGET_LIST_GROUP: { // Matrix Group
-					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 13) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
+					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 26) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
 
 					if (id_g >= w->vscroll.cap) return;
 
@@ -544,14 +571,14 @@
 
 				case GRP_WIDGET_DELETE_GROUP: { // Delete the selected group
 					GroupID group = gv->group_sel;
-					gv->group_sel = DEFAULT_GROUP;
+					gv->group_sel = ALL_GROUP;
 
 					DoCommandP(0, group, 0, NULL, CMD_DELETE_GROUP | CMD_MSG(STR_GROUP_CAN_T_DELETE));
 					break;
 				}
 
 				case GRP_WIDGET_RENAME_GROUP: { // Rename the selected roup
-					assert(!IsDefaultGroupID(gv->group_sel));
+					assert(IsValidGroupID(gv->group_sel));
 
 					const Group *g = GetGroup(gv->group_sel);
 
@@ -573,7 +600,7 @@
 
 				case GRP_WIDGET_START_ALL:
 				case GRP_WIDGET_STOP_ALL: { // Start/stop all vehicles of the list
-					DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
+					DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
 														| (1 << 6)
 														| (e->we.click.widget == GRP_WIDGET_START_ALL ? (1 << 5) : 0)
 														| gv->vehicle_type, NULL, CMD_MASS_START_STOP);
@@ -582,7 +609,7 @@
 				}
 
 				case GRP_WIDGET_REPLACE_PROTECTION:
-					if (!IsDefaultGroupID(gv->group_sel)) {
+					if (IsValidGroupID(gv->group_sel)) {
 						const Group *g = GetGroup(gv->group_sel);
 
 						DoCommandP(0, gv->group_sel, !g->replace_protection, NULL, CMD_SET_GROUP_REPLACE_PROTECTION);
@@ -594,7 +621,8 @@
 
 		case WE_DRAGDROP: {
 			switch (e->we.click.widget) {
-				case GRP_WIDGET_ALL_VEHICLES: // All trains
+				case GRP_WIDGET_ALL_VEHICLES: // All vehicles
+				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles
 					DoCommandP(0, DEFAULT_GROUP, gv->vehicle_sel, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE));
 
 					gv->vehicle_sel = INVALID_VEHICLE;
@@ -604,7 +632,7 @@
 					break;
 
 				case GRP_WIDGET_LIST_GROUP: { // Maxtrix group
-					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 13) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
+					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 26) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
 					const VehicleID vindex = gv->vehicle_sel;
 
 					gv->vehicle_sel = INVALID_VEHICLE;
@@ -691,21 +719,21 @@
 							ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type);
 							break;
 						case 1: // Send for servicing
-							DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
+							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
 										| DEPOT_MASS_SEND
 										| DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type));
 							break;
 						case 2: // Send to Depots
-							DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
+							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
 										| DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type));
 							break;
 						case 3: // Add shared Vehicles
-							assert(!IsDefaultGroupID(gv->group_sel));
+							assert(IsValidGroupID(gv->group_sel));
 
 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE));
 							break;
 						case 4: // Remove all Vehicles from the selected group
-							assert(!IsDefaultGroupID(gv->group_sel));
+							assert(IsValidGroupID(gv->group_sel));
 
 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES));
 							break;
--- a/src/industry.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/industry.h	Mon Jul 16 21:22:24 2007 +0000
@@ -49,11 +49,19 @@
 	CHECK_END,
 };
 
+/** How was the industry created */
 enum IndustryConstructionType {
-	ICT_UNKNOWN,
-	ICT_NORMAL_GAMEPLAY,
-	ICT_MAP_GENERATION,
-	ICT_SCENARIO_EDITOR
+	ICT_UNKNOWN,          ///< in previous game version or without newindustries activated
+	ICT_NORMAL_GAMEPLAY,  ///< either by user or random creation proccess
+	ICT_MAP_GENERATION,   ///< during random map creation
+	ICT_SCENARIO_EDITOR   ///< while scenarion edition
+};
+
+/** From where is callback CBID_INDUSTRY_AVAILABLE been called */
+enum IndustryAvailabilityCallType {
+	IACT_MAPGENERATION,   ///< during random map generation
+	IACT_RANDOMCREATION,  ///< during creation of random ingame industry
+	IACT_USERCREATION,    ///< from the Fund/build window
 };
 
 enum IndustyBehaviour {
--- a/src/industry_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/industry_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -9,6 +9,7 @@
 #include "industry_map.h"
 #include "station_map.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "map.h"
 #include "tile.h"
@@ -68,6 +69,12 @@
 	memcpy(&_industry_tile_specs, &_origin_industry_tile_specs, sizeof(_origin_industry_tile_specs));
 }
 
+void ResetIndustryCreationProbility(IndustryType type)
+{
+	assert(type < INVALID_INDUSTRYTYPE);
+	_industry_specs[type].appear_creation[_opt.landscape] = 0;
+}
+
 /**
  * Called if a new block is added to the industry-pool
  */
@@ -1666,16 +1673,21 @@
 	const IndustrySpec *ind_spc;
 
 	/* Find the total amount of industries */
-	for (it = IT_COAL_MINE; it < NUM_INDUSTRYTYPES; it++) {
+	if (_opt.diff.number_industries > 0) {
+		for (it = IT_COAL_MINE; it < NUM_INDUSTRYTYPES; it++) {
 
-		ind_spc = GetIndustrySpec(it);
-		if (ind_spc->enabled) {
+			ind_spc = GetIndustrySpec(it);
+
+			if (!CheckIfCallBackAllowsAvailability(it, IACT_MAPGENERATION)) {
+				ResetIndustryCreationProbility(it);
+			}
+
 			chance = ind_spc->appear_creation[_opt.landscape];
-			if (chance > 0) {
+			if (ind_spc->enabled && chance > 0) {
 				/* once the chance of appearance is determind, it have to be scaled by
 				 * the difficulty level. The "chance" in question is more an index into
 				 * the _numof_industry_table,in fact */
-				int num = _numof_industry_table[_opt.diff.number_industries][chance];
+				int num = (chance < 11) ? chance : _numof_industry_table[_opt.diff.number_industries][chance];
 
 				/* These are always placed next to the coastline, so we scale by the perimeter instead. */
 				num = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
@@ -1686,18 +1698,20 @@
 
 	SetGeneratingWorldProgress(GWP_INDUSTRY, i);
 
-	for (it = IT_COAL_MINE; it < NUM_INDUSTRYTYPES; it++) {
-		/* Once the number of industries has been determined, let's really create them.
-		 * The test for chance allows us to try create industries that are available only
-		 * for this landscape.
-		 * @todo :  Do we really have to pass chance as un-scaled value, since we've already
-		 *          processed that scaling above? No, don't think so.  Will find a way. */
-		ind_spc = GetIndustrySpec(it);
-		if (ind_spc->enabled) {
-			chance = ind_spc->appear_creation[_opt.landscape];
-			if (chance > 0) PlaceInitialIndustry(it, chance);
+	if (_opt.diff.number_industries > 0) {
+		for (it = IT_COAL_MINE; it < NUM_INDUSTRYTYPES; it++) {
+			/* Once the number of industries has been determined, let's really create them.
+			 * The test for chance allows us to try create industries that are available only
+			 * for this landscape.
+			 * @todo :  Do we really have to pass chance as un-scaled value, since we've already
+			 *          processed that scaling above? No, don't think so.  Will find a way. */
+			ind_spc = GetIndustrySpec(it);
+			if (ind_spc->enabled) {
+				chance = ind_spc->appear_creation[_opt.landscape];
+				if (chance > 0) PlaceInitialIndustry(it, chance);
+			}
 		}
-	};
+	}
 }
 
 /* Change industry production or do closure */
@@ -1824,8 +1838,9 @@
 	for (j = 0; j < NUM_INDUSTRYTYPES; j++) {
 		byte chance = GetIndustrySpec(j)->appear_ingame[_opt.landscape];
 
-		/* if appearing chance for this landscape is above 0, this industry can be chosen */
-		if (chance != 0) {
+		/* If there is no Callback CBID_INDUSTRY_AVAILABLE or if this one did anot failed,
+		 * and if appearing chance for this landscape is above 0, this industry can be chosen */
+		if (CheckIfCallBackAllowsAvailability(j, IACT_RANDOMCREATION) && chance != 0) {
 			probability_max += chance;
 			/* adds the result for this industry */
 			cumulative_probs[num].ind = j;
--- a/src/intro_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/intro_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "functions.h"
 #include "window.h"
--- a/src/lang/brazilian_portuguese.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3337,6 +3337,10 @@
 STR_GROUP_ALL_ROADS                                             :Todos os automóveis
 STR_GROUP_ALL_SHIPS                                             :Todos os navios
 STR_GROUP_ALL_AIRCRAFTS                                         :Todas as aeronaves
+STR_GROUP_DEFAULT_TRAINS                                        :Trens sem grupo
+STR_GROUP_DEFAULT_ROADS                                         :Automóveis sem grupo
+STR_GROUP_DEFAULT_SHIPS                                         :Navios sem grupo
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aeronaves sem grupo
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Adicionar veículos compartilhados
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Remover todos os veículos
--- a/src/lang/catalan.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/catalan.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Tots els vehicles
 STR_GROUP_ALL_SHIPS                                             :Tots els vaixells
 STR_GROUP_ALL_AIRCRAFTS                                         :Tots els avions
+STR_GROUP_DEFAULT_TRAINS                                        :Trens desagrupats
+STR_GROUP_DEFAULT_ROADS                                         :Vehicles desagrupats
+STR_GROUP_DEFAULT_SHIPS                                         :Vaixells desagrupats
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Avions desagrupats
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Afegeix vehicles compartits
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Treu tots els vehicles
--- a/src/lang/croatian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/croatian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1035,6 +1035,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Dostavi teret u stanicu samo ako u njoj postoji potražnja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Dopusti izgradnju vrlo dugačkih mostova: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Dopusti naredbe za slanje u spremište: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Ručna metoda izgradnje za primarnu industriju: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :ništa
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :kao i druge industrije
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospektivno
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Dopusti više sličnih industrija po gradu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Moguće je graditi spojene industrije iste vrste: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Uvijek prikaži dugi datum u statusnoj traci: {ORANGE}{STRING}
@@ -1115,6 +1119,7 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Zadnji dostupan
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Najčešće korišten
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Prikaži alate za građanje kada su prikladna vozila nedostupna: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maksimalan broj vlakova po igraču: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximalan broj cestovnih vozila po igraču: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Maksimalan broj zrakoplova po igraču: {ORANGE}{STRING}
@@ -1170,6 +1175,7 @@
 STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Vrlo brzo
 STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Proporcije mjesta koja će postati gradovi: {ORANGE}1 u {STRING}
 STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Proporcije mjesta koja će postati gradovi: {ORANGE} Ništa
+STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Početni množitelj veličine grada: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Sučelje
 STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Izgradnja
@@ -1196,7 +1202,7 @@
 STR_CHEATS                                                      :{WHITE}Varanje
 STR_CHEATS_TIP                                                  :{BLACK}Kvačice ukazuju na to jesi li koristio ovo varanje prije
 STR_CHEATS_WARNING                                              :{BLACK}Upozorenje! Upravo se spremaš izdati svoj kolege natjecatelje. Imaj na umu da se takva sramota pamti zauvijek.
-STR_CHEAT_MONEY                                                 :{LTBLUE}Povećava novce za {CURRENCY}
+STR_CHEAT_MONEY                                                 :{LTBLUE}Povećaj novce za iznos {CURRENCY}
 STR_CHEAT_CHANGE_PLAYER                                         :{LTBLUE}Igraj kao igrač: {ORANGE}{COMMA}
 STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Čudesni buldožer (uklanja industrije, nepokretne objekte): {ORANGE}{STRING}
 STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Tuneli se mogu ukrštavati međusobno: {ORANGE}{STRING}
@@ -1845,6 +1851,8 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} od sada prihvaća {STRING} i {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Smjer autobusne stanice
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Smjer kamionskog terminala
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orijentacija putničkog tramvaja
+STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orijentacija tovarnog tramvaja
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Prvo moraš uništiti autobusnu stanicu
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Prvo moraš uništiti kamionski terminal
 STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Morate prvo maknuti putničku tramvajsku stanicu
@@ -1973,6 +1981,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Treba: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Teret koji čeka obradu:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Proizvodi: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Proizvodi: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Prošlomjesečna proizvodnja:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% prevezeno)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centriraj glavni pogled na položaj industrije
@@ -2262,6 +2277,7 @@
 STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Ne možeš kupiti tvrtku...
 STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Isplatne rate tereta
 STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Dana u tranzitu
+STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Plaćanje za dostavu 10 jedinica (ili 10,000 litara) tereta za udaljenost od 20 kvadrata
 STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Aktiviraj/deaktiviraj graf za vrstu tereta
 STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
 STR_7066_ENGINEER                                               :Inženjer
@@ -2284,6 +2300,7 @@
 STR_SET_COMPANY_PASSWORD                                        :Postavi zaporku tvrtke
 STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Svjetska recesija!{}{}Financijski stručnjaci očekuju najgore zbog ekonomske krize!
 STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Recesija završena!{}{}Obrat  u trgovanu daje samopouzdanje gospodarstvu jer ekonomija jača!
+STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Namjesti veliku/malu veličinu prozora
 STR_7076_COMPANY_VALUE                                          :{GOLD}Vrijednost tvrtke: {WHITE}{CURRENCY}
 STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Kupi 25% udjela u tvrtci
 STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Prodaj 25% udio u tvrtci
@@ -2296,11 +2313,14 @@
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} je preuzeta od strane tvrtke {COMPANY}!
 STR_7080_PROTECTED                                              :{WHITE}Ova tvrka još nije dovoljno stara da bi trgovala udjelima...
 
+STR_LIVERY_DEFAULT                                              :Standardna opskrba hranom
 STR_LIVERY_STEAM                                                :Parna lokomotva
 STR_LIVERY_DIESEL                                               :Dieselska lokomotiva
 STR_LIVERY_ELECTRIC                                             :Električna lokomotiva
 STR_LIVERY_MONORAIL                                             :Jednotračna lokomotiva
 STR_LIVERY_MAGLEV                                               :Maglevska lokomotiva
+STR_LIVERY_DMU                                                  :DMU
+STR_LIVERY_EMU                                                  :EMU
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Lokomotiva s putnicima (Parna)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Lokomotiva s putnicima (Dieselska)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Lokomotiva s putnicima (Električna)
@@ -2312,7 +2332,17 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Mali zrakoplov
 STR_LIVERY_LARGE_PLANE                                          :Veliki zrakoplov
+STR_LIVERY_PASSENGER_TRAM                                       :Putnički tramvaj
+STR_LIVERY_FREIGHT_TRAM                                         :Tovarni tramvaj
 
+STR_LIVERY_GENERAL_TIP                                          :{BLACK}Prikaži generalne sheme boja
+STR_LIVERY_TRAIN_TIP                                            :{BLACK}Prikaži sheme boja za vlak
+STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Prikaži sheme boja za cestovno vozilo
+STR_LIVERY_SHIP_TIP                                             :{BLACK}Prikaži sheme boja za brod
+STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Prikaži sheme boja za zrakoplov
+STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Izaberi primarnu boju za odabranu shemu
+STR_LIVERY_SECONDARY_TIP                                        :{BLACK}Odaberi sekundardnu boju za odabranu shemu
+STR_LIVERY_PANEL_TIP                                            :{BLACK}Izaberi shemu boja za promjenu, ili višestruke sheme pomoću CTRL+klik. Klikni na kućicu kako bi odredio uporabu sheme
 
 ##id 0x8000
 STR_8000_KIRBY_PAUL_TANK_STEAM                                  :Kirby Paul Tank (Para)
@@ -2367,6 +2397,7 @@
 STR_8031_CANDY_VAN                                              :Kombi za slatkiše
 STR_8032_TOY_VAN                                                :Kombi za igračke
 STR_8033_BATTERY_TRUCK                                          :Kamion za baterije
+STR_8034_FIZZY_DRINK_TRUCK                                      :Kamion s gaziranim pićima
 STR_8035_PLASTIC_TRUCK                                          :Kamion za plastiku
 STR_8036_X2001_ELECTRIC                                         :'X2001' (Električni)
 STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Millennium Z1' (Električni)
@@ -2396,12 +2427,14 @@
 STR_804F_CANDY_VAN                                              :Kombi za slatkiše
 STR_8050_TOY_VAN                                                :Kombi za igračke
 STR_8051_BATTERY_TRUCK                                          :Kamion za baterije
+STR_8052_FIZZY_DRINK_TRUCK                                      :Kamion s gaziranim pićima
 STR_8053_PLASTIC_TRUCK                                          :Kamion za plastiku
 STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Lev1 'Leviathan' (Električni)
 STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Lev2 'Cyclops' (Električni)
 STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Lev3 'Pegasus' (Električni)
 STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Lev4 'Chimaera' (Električni)
 STR_8058_WIZZOWOW_ROCKETEER                                     :Wizzowow Rocketeer
+STR_8059_PASSENGER_CAR                                          :Putnički vagon
 STR_805A_MAIL_VAN                                               :Poštanski kombi
 STR_805B_COAL_CAR                                               :Kamion za ugljen
 STR_805C_OIL_TANKER                                             :Naftna cisterna
@@ -2426,6 +2459,8 @@
 STR_806F_CANDY_VAN                                              :Kombi za slatkiše
 STR_8070_TOY_VAN                                                :Kombi za igračke
 STR_8071_BATTERY_TRUCK                                          :Kamion za baterije
+STR_8072_FIZZY_DRINK_TRUCK                                      :Kamion s gaziranim pićima
+STR_8073_PLASTIC_TRUCK                                          :Kamion s plastikom
 STR_8074_MPS_REGAL_BUS                                          :MPS Regal Bus
 STR_8075_HEREFORD_LEOPARD_BUS                                   :Hereford Leopard Bus
 STR_8076_FOSTER_BUS                                             :Foster Bus
@@ -2433,6 +2468,12 @@
 STR_8078_PLODDYPHUT_MKI_BUS                                     :Ploddyphut MkI Bus
 STR_8079_PLODDYPHUT_MKII_BUS                                    :Ploddyphut MkII Bus
 STR_807A_PLODDYPHUT_MKIII_BUS                                   :Ploddyphut MkIII Bus
+STR_807B_BALOGH_COAL_TRUCK                                      :Balogh kamion s ugljenom
+STR_807C_UHL_COAL_TRUCK                                         :Uhl kamion s ugljenom
+STR_807D_DW_COAL_TRUCK                                          :DW kamion s ugljenom
+STR_807E_MPS_MAIL_TRUCK                                         :MPS poštanski kamion
+STR_807F_REYNARD_MAIL_TRUCK                                     :Reynard poštanski kamion
+STR_8080_PERRY_MAIL_TRUCK                                       :Perry poštanski kamion
 STR_8081_MIGHTYMOVER_MAIL_TRUCK                                 :MightyMover Poštanski Kamion
 STR_8082_POWERNAUGHT_MAIL_TRUCK                                 :Powernaught Poštanski Kamion
 STR_8083_WIZZOWOW_MAIL_TRUCK                                    :Wizzwow Poštanski Kamion
@@ -2502,6 +2543,12 @@
 STR_80C3_MIGHTYMOVER_FIZZY_DRINK                                :MightyMover Kamion za gazirana pića
 STR_80C4_POWERNAUGHT_FIZZY_DRINK                                :Powernaught Kamion za gazirana pića
 STR_80C5_WIZZOWOW_FIZZY_DRINK_TRUCK                             :Wizzwow Kamion za gazirana pića
+STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :MightyMover kamion s plastikom
+STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Powernaught kamion s plastikom
+STR_80C8_WIZZOWOW_PLASTIC_TRUCK                                 :Wizzowow kamion s plastikom
+STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :MightyMover kamion s žvakačim gumama
+STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Powernaught kamion s žvakačim gumama
+STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Wizzowow kamion s žvakačim gumama
 STR_80CC_MPS_OIL_TANKER                                         :MPS Tanker Ulja
 STR_80CD_CS_INC_OIL_TANKER                                      :CS-Inc. Tanker Ulja
 STR_80CE_MPS_PASSENGER_FERRY                                    :MPS Trajekt
@@ -2591,21 +2638,26 @@
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Putovanje (bez rasporeda)
 STR_TIMETABLE_TRAVEL_FOR                                        :Putovanje za {STRING}
 STR_TIMETABLE_STAY_FOR                                          :i boravak za {STRING}
+STR_TIMETABLE_DAYS                                              :{COMMA} dan{P "" a a}
+STR_TIMETABLE_TICKS                                             :{COMMA} tik{P "" a ova}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE} Krećem za {TOWN} Željezničko Skladište
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE} Krećem za {TOWN} Željezničko Skladište, {VELOCITY}
 STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Servis u {TOWN} Željezničkom Skladištu
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL                         :{LTBLUE}Servis kod {TOWN} spremište vlakova, {VELOCITY}
 
 STR_INVALID_ORDER                                               :{RED} (Neispravna naredba)
 
 STR_UNKNOWN_DESTINATION                                         :nepoznato odredište
 STR_8812_EMPTY                                                  :{LTBLUE}Prazan
 STR_8813_FROM                                                   :{LTBLUE}{CARGO} iz {STATION}
+STR_FROM_MULT                                                   :{LTBLUE}{CARGO} iz {STATION} (x{NUM})
 STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Vlak {COMMA} čeka u spremištu
 STR_8815_NEW_VEHICLES                                           :{BLACK}Nova vozila
 STR_8816                                                        :{BLACK}-
 STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Vlak predugačak
 STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Vlakovi mogu biti izmjenjeni jedino kad su zaustavljeni u spremištu
+STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Vlak{P "" a ova}
 
 STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Nova željeznička vozila
 STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Nova vozila električne pruge
@@ -2691,10 +2743,13 @@
 STR_TIMETABLE_TOOLTIP                                           :{BLACK}Raspored - klikni na naredbu da ju označiš.
 STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Promijeni količinu vremena koju bi označena naredba trebala uzeti
 STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Obriši potrebno vrijeme za označenu naredbu
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Resetiraj brojač kašnjenja, kako bi vozilo stiglo na vrijeme
 STR_SERVICE_HINT                                                :{BLACK}Preskoči ovu narudžbu osim ako servis nije potreban
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Trošak: {CURRENCY} Težina: {WEIGHT_S}{}Brzina: {VELOCITY} Snaga: {POWER}{}Troškovi održavanja: {CURRENCY}/god{}Kapacitet: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Pokvaren
 STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Starost: {LTBLUE}{STRING}{BLACK}   Troškovi uporabe: {LTBLUE}{CURRENCY}/god
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Težina {LTBLUE}{WEIGHT_S}  {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Težina: {LTBLUE}{WEIGHT_S} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE}
 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Zarada 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
@@ -2710,12 +2765,14 @@
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Ne mogu preimenovati tip vagona...
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Naprvi da označeni red prisili vozilo da izbaci teret
 STR_886F_TRANSFER                                               :{BLACK}Transfer
-STR_CLEAR_TIME                                                  :{BLACK}Obriši Vrijeme
+STR_CLEAR_TIME                                                  :{BLACK}Obriši vrijeme
 STR_RESET_LATENESS                                              :{BLACK}Poništi Brojač Kašnjenja
 
 STR_TRAIN_STOPPING                                              :{RED}Zaustavljam
 STR_TRAIN_STOPPING_VEL                                          :{RED}Zaustavljam, {VELOCITY}
 STR_INCOMPATIBLE_RAIL_TYPES                                     :Nekompatibilan tip tračnica
+STR_TRAIN_NO_POWER                                              :{RED}Nema struje
+STR_TRAIN_START_NO_CATENARY                                     :Ovim tračnicama nedostaje vučna užad, tako da vlak ne može krenuti
 
 STR_NEW_VEHICLE_NOW_AVAILABLE                                   :{BLACK}{BIGFONT}Novi {STRING} je sada dostupan!
 STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
@@ -2735,6 +2792,7 @@
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Cestovno vozilo na putu
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} Cestovno vozilo{P "" a a}
 STR_9002                                                        :{WHITE}{VEHICLE}
 STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Spremište cestovnih vozila
 STR_9004_NEW_VEHICLES                                           :{BLACK}Nova vozila
@@ -2781,6 +2839,7 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Imenuj cestovno vozilo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Građani slave . . .{}Prvi bus stiže na {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Građani slave . . .{}Prvi kamion stiže na {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Građani slave . . .{}Prvi putnički tramvaj stigao na stanicu {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Građani slave . . .{}Prvi teretni vlak je stigao u {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}Vozač poginuo u eksploziji nakon sudara s vlakom
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}{COMMA} poginulih u eksploziji nakon sudara s vlakom
@@ -2844,7 +2903,9 @@
 STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Trenutna radnja broda - pritisni ovdje za zaustavljanje/pokretanje broda
 STR_9828_SHOW_SHIP_S_ORDERS                                     :{BLACK}Prikaži naredbe broda
 STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centriraj glavni pogled na lokaciju broda
+STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Pošalji brod u spremište. CTRL+klik će samo servisirati
 STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Prikaži detalje broda
+STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Trošak {CURRENCY} Maks. brzina: {VELOCITY}{}Kapacitet: {CARGO}{}Trošak uporabe: {CURRENCY}/god
 STR_982F_NAME_SHIP                                              :{BLACK}Imenuj brod
 
 STR_9831_NAME_SHIP                                              :{WHITE}Imenuj brod
@@ -2865,6 +2926,7 @@
 STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nova zapremnina: {GOLD}{CARGO}{}{BLACK}Cijena prenamjene: {GOLD}{CURRENCY}
 STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Ne mogu prenamijeniti brod...
 STR_9842_REFITTABLE                                             :(prenamjenjiv)
+STR_GO_TO_SHIP_DEPOT                                            :Idi u {TOWN} spremište brodova
 SERVICE_AT_SHIP_DEPOT                                           :Servis u brodskom spremištu grada {TOWN}
 
 ##id 0xA000
@@ -2874,6 +2936,7 @@
 STR_A003_NEW_AIRCRAFT                                           :{BLACK}Novi zrakoplov
 STR_CLONE_AIRCRAFT                                              :{BLACK}Kloniraj zrakoplov
 STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Ovo će izgraditi kopiju zrakoplova. Control-klik će dijeliti naredbe
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Ovo će napraviti kopiju zrakoplova. Klikni ovaj gumb i onda na zrakoplov unutar ili izvan hangara. Control+klik će dijeliti naredbe.
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}Novi zrakoplov
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Izgradi zrakoplov
 STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Ne mogu izgraditi zrakoplov...
@@ -2887,6 +2950,10 @@
 STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Pouzdanost: {LTBLUE}{COMMA}%  {BLACK}Kvarova od poslijednjeg servisa: {LTBLUE}{COMMA}
 STR_A011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Izgrađen: {LTBLUE}{NUM}{BLACK} Vrijednost: {LTBLUE}{CURRENCY}
 STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}Ne mogu poslati zrakoplov u hangar
+STR_HEADING_FOR_HANGAR                                          :{ORANGE}Putuje prema {STATION} hangaru
+STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Putuje prema {STATION} hangaru, {VELOCITY}
+STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Servis u {STATION} hangaru
+STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Servis u {STATION} hangaru, {VELOCITY}
 STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Zrakoplov {COMMA} čeka u hangaru
 STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Smeta zrakoplov
 STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}Ne mogu zaustaviti/pokrenuti zrakoplov...
@@ -2895,6 +2962,7 @@
 STR_A01A_CAPACITY                                               :{BLACK}Nosivost: {LTBLUE}{CARGO}
 STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Zrakoplov mora biti zaustavljen u hangaru
 STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Ne možeš prodati zrakoplov...
+STR_A01D_AIRPORT_CONSTRUCTION                                   :Izgradnja zračne luke
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Izgradi zračnu luku
 STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Zrakoplov - klikni na zrakoplov za informacije
 STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Izgradi novi zrakoplov(potreban je aerodrom sa hangarom)
@@ -2909,6 +2977,7 @@
 STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK} Centrirajte glavni prozor na lokaciju zrakoplova
 STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Pošaljite avion u hangar. CTRL + klik će ga samo servisirati
 STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Prikaži detalje zrakoplova
+STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Trošak: {CURRENCY} Maks. brzina: {VELOCITY}{}Kapacitet: {COMMA} putnika, {COMMA} poštanskih vreća{}Trošak uporabe {CURRENCY}/god
 
 STR_A030_NAME_AIRCRAFT                                          :{WHITE}Imenuj zrakoplov
 STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}Ne mogu imenovati zrakoplov...
@@ -3175,7 +3244,10 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Promijeni početnu godinu
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Upozorenje o veličini
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Prekomjerna promjena veličine mape nije preporučena. Nastaviti sa kreiranjem?
+STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Upozorenje na raspored grada
+STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Raspored grada s opcijom "nema više cesti" nije preporučen. Nastaviti s generiranjem?
 STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
+STR_HEIGHTMAP_NAME                                              :{BLACK}Ime heightmape:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Veličina: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Izrada svijeta u toku...
 STR_GENERATION_ABORT                                            :{BLACK}Prekini
@@ -3185,10 +3257,12 @@
 STR_GENERATION_PROGRESS                                         :{BLACK}{NUM} / {NUM}
 STR_WORLD_GENERATION                                            :{BLACK}Izrada svijeta
 STR_TREE_GENERATION                                             :{BLACK}Generiranje drveća
+STR_UNMOVABLE_GENERATION                                        :{BLACK}Nepomično generiranje
 STR_CLEARING_TILES                                              :{BLACK}Generiranje grubog i stjenovitog područja
 STR_SETTINGUP_GAME                                              :{BLACK}Uspostavljam igru
 STR_PREPARING_TILELOOP                                          :{BLACK}Izvršavam tile-petlju
 STR_PREPARING_GAME                                              :{BLACK}Pripremam igru
+STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Ova akcija je izmjenila težinu na proizvoljnu
 STR_SE_FLAT_WORLD                                               :{WHITE}Ravna zemlja
 STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Kreiraj ravan teren
 STR_SE_RANDOM_LAND                                              :{WHITE}Nasumični teren
@@ -3233,15 +3307,82 @@
 ########
 
 STR_FEEDER_CARGO_VALUE                                          :{BLACK}Prebaci novac: {LTBLUE}{CURRENCY}
+STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD                            :{WHITE}...ovo je gradska cesta
+STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...cesta je orijentirana u krivom smjeru
 
+STR_TRANSPARENCY_TOOLB                                          :{WHITE}Opcije prozirnosti
+STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}Namjesti prozirnost za znakove stanica
+STR_TRANSPARENT_TREES_DESC                                      :{BLACK}Namjesti prozirnost za drveće
+STR_TRANSPARENT_HOUSES_DESC                                     :{BLACK}Namjesti prozirnost za kuće
+STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Namjesti prozirnost za industrije
+STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Namjesti prozirnost za građevine poput postaja, spremišta, smjerokaza i užadi
+STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Namjesti prozirnost za mostove
+STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Namjesti prozirnost za strukture poput svjetionika i antena, možda u budućnosti i vizualne efekte
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Namjesti prozirnost za indikatore učitavanja
 
+STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_DOWN_SMALL                                          :{TINYFONT}{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_DOWN                                                :{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_UP_DOWN_SMALL                                       :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW}
+STR_PERCENT_UP_DOWN                                             :{WHITE}{NUM}%{UPARROW}{DOWNARROW}
 
 ##### Mass Order
-
-
+STR_GROUP_NAME_FORMAT                                           :Groupa {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Sva vozila
+STR_GROUP_ALL_ROADS                                             :Sva cestovna vozila
+STR_GROUP_ALL_SHIPS                                             :Svi brodovi
+STR_GROUP_ALL_AIRCRAFTS                                         :Svi zrakoplovi
+STR_GROUP_DEFAULT_TRAINS                                        :Negrupirani valkovi
+STR_GROUP_DEFAULT_ROADS                                         :Negrupirana cestovna vozila
+STR_GROUP_DEFAULT_SHIPS                                         :Negrupirani brodovi
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Negrupirani zrakoplovi
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Dodaj dijeljena vozila
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Ukloni sva vozila
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Vlak{P "" a ova}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA}  Cestovno vozil{P o a a}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Brod{P "" a ova}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Zrakoplov
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Preimenuj grupu
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Zamjeni vozila "{GROUP}"
 
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Ne mogu kreirati grupu...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Ne mogu obrisati ovu grupu...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Ne mogu preimenovati ovu grupu...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Nije moguće maknuti sva vozila iz ove grupe...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Nije moguće dodati vozila u ovu grupu
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Ne možeš dodati dijeljena vozila u grupu...
 
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Groupe - Klikni na grupu kako bi izlista sva vozila ove grupe
+STR_GROUP_CREATE_TIP                                            :{BLACK}Klikni za kreiranje grupe
+STR_GROUP_DELETE_TIP                                            :{BLACK}Obriši odabranu grupu
+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}
+STR_PLAYER_NAME                                                 :{PLAYERNAME}
+STR_SIGN_NAME                                                   :{SIGN}
+STR_VEHICLE_NAME                                                :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Ime mora biti jedinstveno
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Idi do sljedećeg znaka
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Idi do prethodnog znaka
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Financiraj
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospekt
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Izgradi
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Izaberi prikladnu industriju s ove liste
--- a/src/lang/czech.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/czech.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1165,7 +1165,7 @@
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Zastavit automaticky hru při začínání nové hry: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Používat pokročilý seznam vozidel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Používat ukazatele naložení: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Povolit jizdní řády vozidel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Povolit jízdní řády vozidel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Zobrazit jízdní řády v cyklech místo ve dnech: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Standardní druh kolejí (v nové hře/po načtení hry): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :Normální koleje
@@ -2038,8 +2038,10 @@
 STR_4829_REQUIRES                                               :{BLACK}Vyžaduje: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
 STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Náklad čekající na zpracování:
 STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produkce minulý měsíc:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA} % přepraveno)
@@ -2694,8 +2696,8 @@
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Údržba bez zastavení v železničním depu {TOWN}
 
 STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
-STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Výlet (mimo jízdní řád)
-STR_TIMETABLE_TRAVEL_FOR                                        :Výlet na {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Jet do (mimo jízdní řád)
+STR_TIMETABLE_TRAVEL_FOR                                        :Jet do {STRING}
 STR_TIMETABLE_STAY_FOR                                          :a zůstat {STRING}
 STR_TIMETABLE_DAYS                                              :{COMMA} d{P en ny nů}
 STR_TIMETABLE_TICKS                                             :{COMMA} cykl{P us y ů}
@@ -3436,3 +3438,4 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Na předešlý signál
 
 ########
+
--- a/src/lang/danish.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/danish.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -852,14 +852,14 @@
 STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Vælg 'subarktisk' landskab
 STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Vælg 'subtropisk' landskab
 STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Vælg 'legetøjsland' landskab
-STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Financiér opførelse af ny industri
+STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Finansiér opførelse af ny industri
 
 ############ range for menu starts
 STR_INDUSTRY_DIR                                                :Industrioversigt
-STR_0313_FUND_NEW_INDUSTRY                                      :Opfør ny industri
+STR_0313_FUND_NEW_INDUSTRY                                      :Finansiér ny industri
 ############ range ends here
 
-STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Opfør ny industri
+STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Finansiér ny industri
 STR_JUST_STRING                                                 :{STRING}
 STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...kan kun bygges i byer
 STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST                        :{WHITE}...kan kun bygges i regnskovsområder
@@ -1762,17 +1762,17 @@
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Lille reklamekampagne
 STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Mellem reklamekampagne
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Stor reklamekampagne
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Betal for lokal vejfornyelse
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Finansiér lokal vejfornyelse
 STR_204A_BUILD_STATUE_OF_COMPANY                                :Byg en statue af selskabets ejer
-STR_204B_FUND_NEW_BUILDINGS                                     :Betal for opførsel af nye bygninger
+STR_204B_FUND_NEW_BUILDINGS                                     :Finansiér opførsel af nye bygninger
 STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Køb eksklusive transportrettigheder i byen
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Bestik de lokale myndigheder
 STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Start en lille reklamekampagne for at tiltrække flere passagerer og last til dine stationer.{}  Pris: {CURRENCY}
 STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Start en mellem reklamekampagne, for at tiltrække flere passagerer og last til dine stationer.{}  Pris: {CURRENCY}
 STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Start en stor reklamekampagne, for at tiltrække flere passagerer og last til dine stationer.{}  Pris: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Betal for vejfornyelse i midtbyen. Forårsager stor forstyrrelse af vejnettet i de næste 6 måneder.{}  Pris: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Finansiér vejfornyelse i midtbyen. Forårsager stor forstyrrelse af vejnettet i de næste 6 måneder.{}  Pris: {CURRENCY}
 STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Byg en statue til ære for dit selskab.{} Pris: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Betal for opførelse af forretningsbygninger i byen.{}  Pris: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Finansiér opførelse af forretningsbygninger i byen.{}  Pris: {CURRENCY}
 STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Køb et års eksklusive rettigheder til transport i byen. De lokale myndigheder vil kun tillade passagerer og last at bruge dine stationer.{} Prist: {CURRENCY}
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Bestik de lokale myndigheder til at hæve din bedømmelse, med risiko for en stor straf hvis det bliver opdaget.{}  Pris: {CURRENCY}
 STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Trafikkaos i byen {TOWN}!{}{}Vejfornyelse betalt af {COMPANY} forårsager 6 måneders kaos i trafikken!
@@ -1980,8 +1980,12 @@
 STR_4829_REQUIRES                                               :{BLACK}Kræver: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
 STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Fragt der venter på forarbejdning:
 STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Producerer: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Producerer: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion sidste måned:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporteret)
@@ -3329,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Alle vejkøretøjer
 STR_GROUP_ALL_SHIPS                                             :Alle skibe
 STR_GROUP_ALL_AIRCRAFTS                                         :Alle fly
+STR_GROUP_DEFAULT_TRAINS                                        :Ikke-grupperede tog
+STR_GROUP_DEFAULT_ROADS                                         :Ikke-grupperede vejkøretøjer
+STR_GROUP_DEFAULT_SHIPS                                         :Ikke-grupperede skibe
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ikke-grupperede fly
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Tilføj delte køretøjer
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Fjern alle køretøjer
@@ -3372,3 +3380,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Gå til forrige skilt
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finansiér
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Efterforsk
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Byg
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Vælg passende industri fra denne liste
--- a/src/lang/dutch.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/dutch.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Alle voertuigen
 STR_GROUP_ALL_SHIPS                                             :Alle schepen
 STR_GROUP_ALL_AIRCRAFTS                                         :Alle vliegtuigen
+STR_GROUP_DEFAULT_TRAINS                                        :Niet gegroepeerde treinen
+STR_GROUP_DEFAULT_ROADS                                         :Niet gegroepeerde wegvoertuigen
+STR_GROUP_DEFAULT_SHIPS                                         :Niet gegroepeerde schepen
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Niet gegroepeerde vliegtuigen
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Toevoegen gedeelde voertuigen
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Verwijder alle voertuigen
--- a/src/lang/english.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/english.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :All road vehicles
 STR_GROUP_ALL_SHIPS                                             :All ships
 STR_GROUP_ALL_AIRCRAFTS                                         :All aircraft
+STR_GROUP_DEFAULT_TRAINS                                        :Ungrouped trains
+STR_GROUP_DEFAULT_ROADS                                         :Ungrouped road vehicles
+STR_GROUP_DEFAULT_SHIPS                                         :Ungrouped ships
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ungrouped aircraft
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Add shared vehicles
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Remove all vehicles
--- a/src/lang/estonian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/estonian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3433,6 +3433,10 @@
 STR_GROUP_ALL_ROADS                                             :Kõik mootorsõidukid
 STR_GROUP_ALL_SHIPS                                             :Kõik laevad
 STR_GROUP_ALL_AIRCRAFTS                                         :Kõik lennukid
+STR_GROUP_DEFAULT_TRAINS                                        :Liigitamata rongid
+STR_GROUP_DEFAULT_ROADS                                         :Liigitamata sõidukid
+STR_GROUP_DEFAULT_SHIPS                                         :Liigitamata laevad
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Liigitamata õhusõidukid
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Kõik jagatud sõidukid
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Eemalda kõik sõidukid
--- a/src/lang/finnish.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/finnish.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Kuljeta rahti asemalle vain, kun on kysyntää: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Erittäin pitkien siltojen rakentaminen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Varikollemenomääräykset: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Manuaalinen raakateollisuuden rakentamistapa: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :ei mikään
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :kuten muut tehtaat
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :koekaivaus
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Kaupungissa voi olla useita samanlaisia teollisuustyyppejä: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Samantyyppistä teollisuutta voidaan rakentaa lähekkäin: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Näytä aina koko päiväys tilapalkissa: {ORANGE}{STRING}
@@ -1046,6 +1050,8 @@
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Epäyhtenäiset asemat: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Uusi globaali tienhakualgor. (NPF, korvaa NTP:n): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Kerroin rahdin painolle raskaiden junien simuilointiin: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Läpiajettavat pysäkit kaupungin teille: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Vierekkäiset asemat: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Salli aina pienet lentokentät: {ORANGE}{STRING}
 
@@ -1086,6 +1092,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Huolla helikopterit helikopterialustoilla automaattisesti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Kiinnitä maastonmuokkauspalkki rakentamistyökalupalkkeihin: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Käänteinen vierityssuunta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Näkymän tasainen vieritys: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Näytä mittauksen työkaluvihje, kun käytetään rakennustyökaluja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Näytä yrityksen tunnukset: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Ei yhtään
@@ -1098,7 +1105,17 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Pois
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rullan nopeus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Uusi peli alkaa pysäytettynä: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Edistynyt ajoneuvolista: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Lastausindikaattorit: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :Tavallinen raide
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Sähköraide
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Yksiraiteinen
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Maglev
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :Ensimmäinen
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Viimeinen
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Yleisin
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Näytä rakennustyökalut, kun sopivaa ajoneuvoa ei ole: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Junia/pelaaja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Ajoneuvoja/pelaaja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Lentokoneita/pelaaja: {ORANGE}{STRING}
@@ -1392,6 +1409,10 @@
 STR_NETWORK_LANG_ENGLISH                                        :englanti
 STR_NETWORK_LANG_GERMAN                                         :saksa
 STR_NETWORK_LANG_FRENCH                                         :ranska
+STR_NETWORK_LANG_BRAZILIAN                                      :brasilia
+STR_NETWORK_LANG_BULGARIAN                                      :bulgaria
+STR_NETWORK_LANG_CHINESE                                        :kiina
+STR_NETWORK_LANG_CZECH                                          :tšekki
 STR_NETWORK_LANG_DANISH                                         :tanska
 STR_NETWORK_LANG_DUTCH                                          :hollanti
 STR_NETWORK_LANG_ESPERANTO                                      :esperanto
@@ -1895,6 +1916,11 @@
 STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Tallennus epäonnistui.{}{STRING}
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Tiedostoa ei voi poistaa.
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Lataus epäonnistui.{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Sisäinen virhe: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Viallinen tallennus - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Tallennus on tehty uudemalla versiolla
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Tiedostoa ei voi lukea
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Tiedostoa ei voi kirjoittaa
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Lista asemista, hakemistoista ja tallennetuista peleistä.
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Valittu nimi pelitallenteelle.
 STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Poista valittu pelitallenne.
@@ -1951,6 +1977,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Tarvitsee: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Rahti odottaa käsittelyä:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Tuottaa: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Tuottaa: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Tuotto viime kuussa:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}{NBSP}% kuljetettu)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Keskitä päänäkymä teollisuuden sijaintiin.
@@ -2065,6 +2098,7 @@
 STR_SV_STNAME_LOWER                                             :Ala-{STRING}
 STR_SV_STNAME_HELIPORT                                          :{STRING}, helikopterikenttä
 STR_SV_STNAME_FOREST                                            :{STRING}, metsä
+STR_SV_STNAME_FALLBACK                                          :{STRING} Asema {NUM}
 
 ############ end of savegame specific region!
 
@@ -2747,6 +2781,10 @@
 STR_TIMETABLE_STATUS_ON_TIME                                    :Ajoneuvo on aikataulussa
 STR_TIMETABLE_STATUS_LATE                                       :Ajoneuvo on {STRING} myöhässä
 STR_TIMETABLE_STATUS_EARLY                                      :Ajoneuvo on {STRING} etuajassa
+STR_TIMETABLE_TOTAL_TIME                                        :Aikataulun kesto on {STRING}
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Aikataulun kesto on vähintään {STRING}
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Automaattinen
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Luo aikataulu automaattisesti ensimmäisen matkan arvoilla
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Ajoneuvo tiellä.
@@ -3276,7 +3314,14 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Läpinäkyvät asemat, varikot, rastit ja sähkölinjat
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Läpinäkyvät sillat
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Läpinäkyvät rakenteet kuten majakat ja antennit
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Läpinäkyvät lastausilmaisimet
 
+STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
+STR_PERCENT_DOWN_SMALL                                          :{TINYFONT}{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_DOWN                                                :{WHITE}{NUM}%{DOWNARROW}
+STR_PERCENT_UP_DOWN_SMALL                                       :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW}
+STR_PERCENT_UP_DOWN                                             :{WHITE}{NUM}%{UPARROW}{DOWNARROW}
 
 ##### Mass Order
 STR_GROUP_NAME_FORMAT                                           :Ryhmä {COMMA}
@@ -3285,6 +3330,10 @@
 STR_GROUP_ALL_ROADS                                             :Kaikki autot
 STR_GROUP_ALL_SHIPS                                             :Kaikki laivat
 STR_GROUP_ALL_AIRCRAFTS                                         :Kaikki lentoalukset
+STR_GROUP_DEFAULT_TRAINS                                        :Muut junat
+STR_GROUP_DEFAULT_ROADS                                         :Muut autot
+STR_GROUP_DEFAULT_SHIPS                                         :Muut laivat
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Muut lentokoneet
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Lisää jaettuja ajoneuvoja
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Poista kaikki ajoneuvot
@@ -3314,6 +3363,22 @@
 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}
+STR_PLAYER_NAME                                                 :{PLAYERNAME}
+STR_SIGN_NAME                                                   :{SIGN}
+STR_VEHICLE_NAME                                                :{VEHICLE}
 
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Nimen täytyy olla uniikki
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Siirry seuraavaan kylttiin
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Siirry edelliseen kylttiin
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Perusta
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Koekaivaus
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Rakenna
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Valitse tehdas listasta
--- a/src/lang/french.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/french.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3334,6 +3334,10 @@
 STR_GROUP_ALL_ROADS                                             :Tous les véhicules routiers
 STR_GROUP_ALL_SHIPS                                             :Tous les navires
 STR_GROUP_ALL_AIRCRAFTS                                         :Tous les aéronefs
+STR_GROUP_DEFAULT_TRAINS                                        :Trains dégroupés
+STR_GROUP_DEFAULT_ROADS                                         :Véhicules routiers dégroupés
+STR_GROUP_DEFAULT_SHIPS                                         :Navires dégroupés
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aéronefs dégroupés
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Ajouter des véhicules partagés
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Retirer tous les véhicules
--- a/src/lang/german.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/german.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1035,8 +1035,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_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_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}
@@ -1105,6 +1107,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Scrollradgeschwindigkeit auf der Karte: {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_DEFAULT_RAIL_TYPE                            :{LTBLUE}Standard-Gleistyp (bei Spielbeginn/geladenem Spiel): {ORANGE}{STRING}
@@ -1113,8 +1116,10 @@
 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_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Zeige Bauwerkzeuge auch 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}
@@ -1977,7 +1982,10 @@
 ############ range for requires ends
 
 ############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Auf Verarbeitung wartende 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}
 ############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion im letzten Monat:
@@ -2627,9 +2635,11 @@
 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_DAYS                                              :{COMMA} Tag{P "" e}
+STR_TIMETABLE_TICKS                                             :{COMMA} Tick{P "" s}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Unterwegs zu {TOWN} Zugdepot
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Unterwegs zu {TOWN} Zugdepot, {VELOCITY}
@@ -2773,6 +2783,10 @@
 STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Das Fahrzeug hält nicht an dieser Station.
 STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Ändere Zeit
 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
 
@@ -3320,6 +3334,10 @@
 STR_GROUP_ALL_ROADS                                             :Alle Straßenfahrzeuge
 STR_GROUP_ALL_SHIPS                                             :Alle Schiffe
 STR_GROUP_ALL_AIRCRAFTS                                         :Alle Flugzeuge
+STR_GROUP_DEFAULT_TRAINS                                        :Ungruppierte Züge
+STR_GROUP_DEFAULT_ROADS                                         :Ungruppierte Fahrzeuge
+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
@@ -3364,4 +3382,7 @@
 
 ########
 
-STR_FUND_NEW_INDUSTRY                                           :{BLACK}Kapital
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finanzieren
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Erforsche
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Bauen
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Wähle die gewünschte Industrie aus der Liste
--- a/src/lang/hungarian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/hungarian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3436,6 +3436,10 @@
 STR_GROUP_ALL_ROADS                                             :Összes közúti jármű
 STR_GROUP_ALL_SHIPS                                             :Összes hajó
 STR_GROUP_ALL_AIRCRAFTS                                         :Összes repülő
+STR_GROUP_DEFAULT_TRAINS                                        :Csoportosítatlan vonatok
+STR_GROUP_DEFAULT_ROADS                                         :Csoportosítatlan közúti járművek
+STR_GROUP_DEFAULT_SHIPS                                         :Csoportosítatlan hajók
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Csoportosítatlan repülők
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Megosztott jármű hozzáadása
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Összes jármű eltávolítása
--- a/src/lang/italian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/italian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3335,6 +3335,10 @@
 STR_GROUP_ALL_ROADS                                             :Tutti gli automezzi
 STR_GROUP_ALL_SHIPS                                             :Tutte le navi
 STR_GROUP_ALL_AIRCRAFTS                                         :Tutti gli aeromobili
+STR_GROUP_DEFAULT_TRAINS                                        :Treni senza gruppo
+STR_GROUP_DEFAULT_ROADS                                         :Automezzi senza gruppo
+STR_GROUP_DEFAULT_SHIPS                                         :Navi senza gruppo
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aeromobili senza gruppo
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Aggiungi veicoli condivisi
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Rimuovi tutti i veicoli
--- a/src/lang/japanese.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/japanese.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,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                                   :すべての車両を取り除く
--- a/src/lang/korean.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/korean.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3334,6 +3334,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                                   :모든 차량 제거
--- a/src/lang/norwegian_nynorsk.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1035,6 +1035,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Lever varer til ein stasjon berre når varen trengst: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Tillat bygging av veldig lange bruer: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Tillat 'køyr til jernbanestall'-ordre: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Metode for bygging av primærindustri: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :inga
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :som andre industriar
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospekt
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Tillat fleire like industriar i samme by: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industriar av same type kan byggjast nær einannan: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Alltid vis lang dato på statuslinja: {ORANGE}{STRING}
@@ -1977,6 +1981,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Treng: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Gods ventar på å bli behandla:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Lagar: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Lagar: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produksjon førre månad:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA} % transportert)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Sentrer biletet på industriområdet
@@ -3323,6 +3334,10 @@
 STR_GROUP_ALL_ROADS                                             :Alle køyretøty
 STR_GROUP_ALL_SHIPS                                             :Alle skip
 STR_GROUP_ALL_AIRCRAFTS                                         :Alle fly
+STR_GROUP_DEFAULT_TRAINS                                        :Tog utan gruppe
+STR_GROUP_DEFAULT_ROADS                                         :køyretøy utan gruppe
+STR_GROUP_DEFAULT_SHIPS                                         :Skip utan gruppe
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Fly utan gruppe
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Legg til delte køyretøy
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Fjern alle køyretøy
@@ -3366,3 +3381,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Gå til førre skilt
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finansier
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospekt
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Bygg
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Vel den rette industritypen frå lista
--- a/src/lang/piglatin.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/piglatin.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1980,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Argocay aitingway otay ebay ocessedpray:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Oductionpray astlay onthmay:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% ansportedtray)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Entrecay ethay ainmay iewvay onway industryway ocationlay
@@ -3326,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Allway oadray ehiclesvay
 STR_GROUP_ALL_SHIPS                                             :Allway ipsshay
 STR_GROUP_ALL_AIRCRAFTS                                         :Allway aircraftway
+STR_GROUP_DEFAULT_TRAINS                                        :Ungroupedway ainstray
+STR_GROUP_DEFAULT_ROADS                                         :Ungroupedway oadray ehiclesvay
+STR_GROUP_DEFAULT_SHIPS                                         :Ungroupedway ipsshay
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ungroupedway aircraftway
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Addway aredshay ehiclesvay
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Emoveray allway ehiclesvay
@@ -3369,3 +3380,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ogay otay eviouspray ignsay
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Undfay
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Ospectpray
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Uildbay
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Oosechay ethay appropriateway industryway omfray isthay istlay
--- a/src/lang/portuguese.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/portuguese.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Todos os veículos de estrada
 STR_GROUP_ALL_SHIPS                                             :Todos os barcos
 STR_GROUP_ALL_AIRCRAFTS                                         :Todas as aeronaves
+STR_GROUP_DEFAULT_TRAINS                                        :Comboios sem grupo
+STR_GROUP_DEFAULT_ROADS                                         :Veículos sem grupo
+STR_GROUP_DEFAULT_SHIPS                                         :Barcos sem grupo
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aeronaves sem grupo
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Adic. veíc. partilh.
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Remover todos os veículos
--- a/src/lang/romanian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/romanian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -1980,8 +1980,12 @@
 STR_4829_REQUIRES                                               :{BLACK}Are nevoie de: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
 STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Incarcatura in asteaptarea procesarii:
 STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produce: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produce: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Producţia lunii trecute:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
@@ -3329,6 +3333,10 @@
 STR_GROUP_ALL_ROADS                                             :Toate autovehiculele
 STR_GROUP_ALL_SHIPS                                             :Toate navele
 STR_GROUP_ALL_AIRCRAFTS                                         :Toate aeronavele
+STR_GROUP_DEFAULT_TRAINS                                        :Trenuri negrupate
+STR_GROUP_DEFAULT_ROADS                                         :Vehicule rutiere negrupate
+STR_GROUP_DEFAULT_SHIPS                                         :Nave negrupate
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aeronave negrupate
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Adauga vehiculele partajate
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Elimina toate vehiculele
@@ -3372,3 +3380,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Mergi la semnul anterior
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finanteaza
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospecteaza
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construieste
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Alege industria potrivita din acesta lista
--- a/src/lang/russian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/russian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3346,6 +3346,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                                   :Удалить всех
--- a/src/lang/slovenian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/slovenian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3413,6 +3413,10 @@
 STR_GROUP_ALL_ROADS                                             :Vsa cestna vozila
 STR_GROUP_ALL_SHIPS                                             :Vse ladje
 STR_GROUP_ALL_AIRCRAFTS                                         :Vsa letala
+STR_GROUP_DEFAULT_TRAINS                                        :Vlaki brez skupine
+STR_GROUP_DEFAULT_ROADS                                         :Cestna vozila brez skupine
+STR_GROUP_DEFAULT_SHIPS                                         :Ladje brez skupine
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Letala brez skupine
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Vsa izmenljiva vozila
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Odstrani vsa vozila
--- a/src/lang/spanish.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/spanish.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3334,6 +3334,10 @@
 STR_GROUP_ALL_ROADS                                             :Todos los vehículos de carretera
 STR_GROUP_ALL_SHIPS                                             :Todos los barcos
 STR_GROUP_ALL_AIRCRAFTS                                         :Todas las aeronaves
+STR_GROUP_DEFAULT_TRAINS                                        :Trenes sin agrupar
+STR_GROUP_DEFAULT_ROADS                                         :Vehículos de carretera sin agrupar
+STR_GROUP_DEFAULT_SHIPS                                         :Barcos sin agrupar
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Aeronaves sin agrupar
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Todos los vehículos compartidos
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Quitar todos los vehículos
--- a/src/lang/traditional_chinese.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/traditional_chinese.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3333,6 +3333,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                                   :移除所有載具
--- a/src/lang/ukrainian.txt	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/lang/ukrainian.txt	Mon Jul 16 21:22:24 2007 +0000
@@ -3496,6 +3496,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                                   :Позбутися всього транспорту
--- a/src/main_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/main_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -1917,7 +1917,7 @@
 	if (ni->display_mode == 3) {
 		str = _get_news_string_callback[ni->callback](ni);
 	} else {
-		COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+		CopyInDParam(0, ni->params, lengthof(ni->params));
 		str = ni->string_id;
 	}
 
--- a/src/misc/blob.hpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/misc/blob.hpp	Mon Jul 16 21:22:24 2007 +0000
@@ -59,7 +59,9 @@
 	/** type used as class member */
 	union {
 		bitem_t    *m_pData;    ///< ptr to the first byte of data
+#if defined(HAS_WCHAR)
 		wchar_t    *m_pwData;   ///< ptr to the first byte of data
+#endif /* HAS_WCHAR */
 		CHdr       *m_pHdr_1;   ///< ptr just after the CHdr holding m_size and m_max_size
 	} ptr_u;
 
--- a/src/misc/str.hpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/misc/str.hpp	Mon Jul 16 21:22:24 2007 +0000
@@ -183,7 +183,9 @@
 
 typedef CStrT<char   , false> CStrA;   ///< Case sensitive ANSI/UTF-8 string
 typedef CStrT<char   , true > CStrCiA; ///< Case insensitive ANSI/UTF-8 string
+#if defined(HAS_WCHAR)
 typedef CStrT<wchar_t, false> CStrW;   ///< Case sensitive unicode string
 typedef CStrT<wchar_t, true > CStrCiW; ///< Case insensitive unicode string
+#endif /* HAS_WCHAR */
 
 #endif /* STR_HPP */
--- a/src/misc/strapi.hpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/misc/strapi.hpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,12 +6,15 @@
 #define  STRAPI_HPP
 
 #include <string.h>
+
+#if defined(HAS_WCHAR)
 #include <wchar.h>
 
 #if !defined(_MSC_VER)
 #define _stricmp strcmp
 #define _wcsicmp wcscmp
-#endif //!_MSC_VER
+#endif /* !defined(_MSC_VER) */
+#endif /* HAS_WCHAR */
 
 /** String API mapper base - just mapping by character type, not by case sensitivity yet.
 	* Class template CStrApiBaseT declaration is general, but following inline method
@@ -32,35 +35,37 @@
 	return ::strlen(s);
 }
 
-/** ::strlen wrapper specialization for wchar_t */
-template <> /*static*/ inline size_t CStrApiBaseT<wchar_t>::StrLen(const wchar_t *s)
-{
-	return ::wcslen(s);
-}
-
 /** ::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
 	return ::vsnprintf_s(buf, count, count - 1, fmt, args);
-#else // ! VC 8.0 and above
+#else /* ! VC 8.0 and above */
 	return ::vsnprintf(buf, count, fmt, args);
 #endif
 }
 
+#if defined(HAS_WCHAR)
+/** ::strlen wrapper specialization for wchar_t */
+template <> /*static*/ inline size_t CStrApiBaseT<wchar_t>::StrLen(const wchar_t *s)
+{
+	return ::wcslen(s);
+}
+
 /** ::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
 	return ::_vsnwprintf_s(buf, count, count - 1, fmt, args);
-#else // ! VC 8.0 and above
+#else /* ! VC 8.0 and above */
 # if defined(_WIN32)
 	 return ::_vsnwprintf(buf, count, fmt, args);
-# else // !_WIN32
+# else /* !_WIN32 */
 	 return ::vswprintf(buf, count, fmt, args);
-# endif // !_WIN32
+# endif /* !_WIN32 */
 #endif
 }
+#endif /* HAS_WCHAR */
 
 
 
@@ -81,6 +86,7 @@
 	return ::_stricmp(s1, s2);
 }
 
+#if defined(HAS_WCHAR)
 template <> /*static*/ inline int CStrApiT<wchar_t, false>::StrCmp(const wchar_t *s1, const wchar_t *s2)
 {
 	return ::wcscmp(s1, s2);
@@ -90,5 +96,6 @@
 {
 	return ::_wcsicmp(s1, s2);
 }
+#endif /* HAS_WCHAR */
 
 #endif /* STRAPI_HPP */
--- a/src/misc_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/misc_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -13,6 +13,7 @@
 #include "strings.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/tree_land.h"
 #include "map.h"
 #include "window.h"
@@ -500,9 +501,9 @@
 {
 	switch (e->event) {
 	case WE_PAINT:
-		COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
+		CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
 		DrawWindowWidgets(w);
-		COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
+		CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
 		if (!IsWindowOfPrototype(w, _errmsg_face_widgets)) {
 			DrawStringMultiCenter(
 				120,
@@ -569,7 +570,7 @@
 
 	_errmsg_message_1 = msg_1;
 	_errmsg_message_2 = msg_2;
-	COPY_OUT_DPARAM(_errmsg_decode_params, 0, lengthof(_errmsg_decode_params));
+	CopyOutDParam(_errmsg_decode_params, 0, lengthof(_errmsg_decode_params));
 	_errmsg_duration = _patches.errmsg_duration;
 	if (!_errmsg_duration) return;
 
@@ -1235,9 +1236,9 @@
 
 	switch (e->event) {
 		case WE_PAINT:
-			COPY_IN_DPARAM(0, q->params, lengthof(q->params));
+			CopyInDParam(0, q->params, lengthof(q->params));
 			DrawWindowWidgets(w);
-			COPY_IN_DPARAM(0, q->params, lengthof(q->params));
+			CopyInDParam(0, q->params, lengthof(q->params));
 
 			DrawStringMultiCenter(w->width / 2, (w->height / 2) - 10, q->message, w->width - 2);
 			break;
@@ -1315,7 +1316,7 @@
 
 	/* Create a backup of the variadic arguments to strings because it will be
 	 * overridden pretty often. We will copy these back for drawing */
-	COPY_OUT_DPARAM(WP(w, query_d).params, 0, lengthof(WP(w, query_d).params));
+	CopyOutDParam(WP(w, query_d).params, 0, lengthof(WP(w, query_d).params));
 	w->widget[QUERY_WIDGET_CAPTION].data = caption;
 	WP(w, query_d).message    = message;
 	WP(w, query_d).proc       = callback;
--- a/src/music_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/music_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,6 +6,7 @@
 #include "openttd.h"
 #include "table/strings.h"
 #include "table/sprites.h"
+#include "strings.h"
 #include "functions.h"
 #include "fileio.h"
 #include "window.h"
--- a/src/network/network_client.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/network/network_client.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "../stdafx.h"
 #include "../debug.h"
 #include "../string.h"
+#include "../openttd.h"
 #include "../strings.h"
 #include "network_data.h"
 #include "core/tcp.h"
--- a/src/newgrf_industries.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/newgrf_industries.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -380,6 +380,19 @@
 	return false;
 }
 
+bool CheckIfCallBackAllowsAvailability(IndustryType type, IndustryAvailabilityCallType creation_type)
+{
+	const IndustrySpec *indspec = GetIndustrySpec(type);
+
+	if (HASBIT(indspec->callback_flags, CBM_IND_AVAILABLE)) {
+		uint16 res = GetIndustryCallback(CBID_INDUSTRY_AVAILABLE, 0, creation_type, NULL, type, INVALID_TILE);
+		if (res != CALLBACK_FAILED) {
+			return (res == 0);
+		}
+	}
+	return true;
+}
+
 static int32 DerefIndProd(uint field, bool use_register)
 {
 	return use_register ? (int32)GetRegister(field) : field;
--- a/src/newgrf_industries.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/newgrf_industries.h	Mon Jul 16 21:22:24 2007 +0000
@@ -14,6 +14,7 @@
 uint32 GetIndustryIDAtOffset(TileIndex new_tile, TileIndex old_tile, const Industry *i);
 void IndustryProductionCallback(Industry *ind, int reason);
 bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index);
+bool CheckIfCallBackAllowsAvailability(IndustryType type, IndustryAvailabilityCallType creation_type);
 
 IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id);
 
--- a/src/news_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/news_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -124,7 +124,7 @@
 				DrawStringRightAligned(428, 1, STR_01FF, 0);
 
 				if (!(ni->flags & NF_VIEWPORT)) {
-					COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+					CopyInDParam(0, ni->params, lengthof(ni->params));
 					DrawStringMultiCenter(215, ni->display_mode == NM_NORMAL ? 76 : 56,
 						ni->string_id, w->width - 4);
 				} else {
@@ -141,7 +141,7 @@
 						(ni->flags & NF_INCOLOR ? PALETTE_TO_TRANSPARENT : PALETTE_TO_STRUCT_GREY) | (1 << USE_COLORTABLE)
 					);
 
-					COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+					CopyInDParam(0, ni->params, lengthof(ni->params));
 					DrawStringMultiCenter(w->width / 2, 20, ni->string_id, w->width - 4);
 				}
 				break;
@@ -155,11 +155,11 @@
 			default: {
 				DrawWindowWidgets(w);
 				if (!(ni->flags & NF_VIEWPORT)) {
-					COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+					CopyInDParam(0, ni->params, lengthof(ni->params));
 					DrawStringMultiCenter(140, 38, ni->string_id, 276);
 				} else {
 					DrawWindowViewport(w);
-					COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+					CopyInDParam(0, ni->params, lengthof(ni->params));
 					DrawStringMultiCenter(w->width / 2, w->height - 16, ni->string_id, w->width - 4);
 				}
 				break;
@@ -300,7 +300,7 @@
 		ni->data_a = data_a;
 		ni->data_b = data_b;
 		ni->date = _date;
-		COPY_OUT_DPARAM(ni->params, 0, lengthof(ni->params));
+		CopyOutDParam(ni->params, 0, lengthof(ni->params));
 
 		w = FindWindowById(WC_MESSAGE_HISTORY, 0);
 		if (w == NULL) return;
@@ -611,7 +611,7 @@
 	if (ni->display_mode == 3) {
 		str = _get_news_string_callback[ni->callback](ni);
 	} else {
-		COPY_IN_DPARAM(0, ni->params, lengthof(ni->params));
+		CopyInDParam(0, ni->params, lengthof(ni->params));
 		str = ni->string_id;
 	}
 
--- a/src/openttd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/openttd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -9,13 +9,13 @@
 #include "debug.h"
 #include "driver.h"
 #include "saveload.h"
-#include "strings.h"
 #include "map.h"
 #include "tile.h"
 #include "void_map.h"
 #include "helpers.hpp"
 
 #include "openttd.h"
+#include "strings.h"
 #include "bridge_map.h"
 #include "functions.h"
 #include "mixer.h"
@@ -2086,6 +2086,16 @@
 		FOR_ALL_INDUSTRIES(i) i->founder = OWNER_NONE;
 	}
 
+	if (CheckSavegameVersion(72)) {
+		/* Locks/shiplifts in very old savegames had OWNER_WATER as owner */
+		for (TileIndex t = 0; t < MapSize(); t++) {
+			if (IsTileType(t, MP_WATER) && GetWaterTileType(t) == WATER_TILE_LOCK &&
+					GetTileOwner(t) == OWNER_WATER) {
+				SetTileOwner(t, OWNER_NONE);
+			}
+		}
+	}
+
 	/* Recalculate */
 	Group *g;
 	FOR_ALL_GROUPS(g) {
--- a/src/order_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/order_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -8,6 +8,7 @@
 #include "station_map.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "map.h"
 #include "tile.h"
--- a/src/player_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/player_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,6 +6,7 @@
 #include "openttd.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "window.h"
 #include "gui.h"
--- a/src/players.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/players.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -711,7 +711,7 @@
 			GroupID id_g = GB(p1, 16, 16);
 			CommandCost cost;
 
-			if (!IsValidGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR;
+			if (!IsValidGroupID(id_g) && !IsAllGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR;
 			if (new_engine_type != INVALID_ENGINE) {
 				/* First we make sure that it's a valid type the user requested
 				 * check that it's an engine that is in the engine array */
--- a/src/rail_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/rail_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,6 +6,7 @@
 #include "openttd.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "landscape.h"
 #include "date.h"
--- a/src/road_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/road_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -12,6 +12,7 @@
 #include "sprite.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "window.h"
 #include "map.h"
--- a/src/road_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/road_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,6 +6,7 @@
 #include "openttd.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "map.h"
 #include "tile.h"
--- a/src/roadveh_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/roadveh_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -11,6 +11,7 @@
 #include "roadveh.h"
 #include "station_map.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "map.h"
 #include "tile.h"
 #include "vehicle.h"
--- a/src/saveload.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/saveload.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -30,7 +30,7 @@
 #include <setjmp.h>
 #include <list>
 
-extern const uint16 SAVEGAME_VERSION = 70;
+extern const uint16 SAVEGAME_VERSION = 71;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
--- a/src/settings.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/settings.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -29,6 +29,7 @@
 #include "string.h"
 #include "variables.h"
 #include "network/network.h"
+#include "strings.h"
 #include "settings.h"
 #include "command.h"
 #include "console.h"
--- a/src/ship_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/ship_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -6,6 +6,7 @@
 #include "openttd.h"
 #include "ship.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "landscape.h"
 #include "map.h"
--- a/src/ship_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/ship_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -8,6 +8,7 @@
 #include "functions.h"
 #include "ship.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "gui.h"
 #include "vehicle.h"
--- a/src/signs.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/signs.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "landscape.h"
 #include "player.h"
--- a/src/smallmap_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/smallmap_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -10,6 +10,7 @@
 #include "industry_map.h"
 #include "station_map.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "table/sprites.h"
 #include "landscape.h"
 #include "map.h"
--- a/src/stdafx.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/stdafx.h	Mon Jul 16 21:22:24 2007 +0000
@@ -341,4 +341,16 @@
 CDECL error(const char *str, ...);
 #define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__)
 
+#if !defined(MORPHOS)
+/* MorphOS doesn't know wchars, the rest does :( */
+#define HAS_WCHAR
+#else
+/* And MorphOS doesn't have C++ conformant _stricmp... */
+#define _stricmp stricmp
+#endif /* !defined(MORHPOS) */
+
+#if !defined(MAX_PATH)
+# define MAX_PATH 260
+#endif
+
 #endif /* STDAFX_H */
--- a/src/string.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/string.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -9,6 +9,7 @@
 #include "macros.h"
 #include "table/control_codes.h"
 #include "helpers.hpp"
+#include "debug.h"
 
 #include <stdarg.h>
 #include <ctype.h> // required for tolower()
@@ -47,11 +48,14 @@
 	assert(dst <= last);
 	for (; *src != '\0' && dst != last; ++dst, ++src) *dst = *src;
 	*dst = '\0';
-#if 1
 	if (dst == last && *src != '\0') {
+#ifdef STRGEN
 		error("String too long for destination buffer");
+#else /* STRGEN */
+		DEBUG(misc, 0, "String too long for destination buffer");
+		*dst = '\0';
+#endif /* STRGEN */
 	}
-#endif
 	return dst;
 }
 
--- a/src/strings.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/strings.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -38,6 +38,7 @@
 
 DynamicLanguages _dynlang;
 char _userstring[128];
+uint64 _decode_parameters[20];
 
 static char *StationGetSpecialString(char *buff, int x, const char* last);
 static char *GetSpecialTownNameString(char *buff, int ind, uint32 seed, const char* last);
--- a/src/strings.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/strings.h	Mon Jul 16 21:22:24 2007 +0000
@@ -5,13 +5,78 @@
 #ifndef STRINGS_H
 #define STRINGS_H
 
-char *InlineString(char *buf, uint16 string);
-char *GetString(char *buffr, uint16 string, const char* last);
+char *InlineString(char *buf, StringID string);
+char *GetString(char *buffr, StringID string, const char* last);
 
 extern char _userstring[128];
 
 void InjectDParam(int amount);
-int32 GetParamInt32();
+
+static inline void SetDParamX(uint64 *s, uint n, uint64 v)
+{
+	s[n] = v;
+}
+
+static inline void SetDParam(uint n, uint64 v)
+{
+	extern uint64 _decode_parameters[20];
+
+	assert(n < lengthof(_decode_parameters));
+	_decode_parameters[n] = v;
+}
+
+/* Used to bind a C string name to a dparam number.
+ * NOTE: This has a short lifetime. You can't
+ *       use this string much later or it will be gone. */
+void SetDParamStr(uint n, const char *str);
+
+/** This function takes a C-string and allocates a temporary string ID.
+ * The duration of the bound string is valid only until the next call to GetString,
+ * so be careful. */
+StringID BindCString(const char *str);
+
+static inline uint64 GetDParamX(const uint64 *s, uint n)
+{
+	return s[n];
+}
+
+static inline uint64 GetDParam(uint n)
+{
+	extern uint64 _decode_parameters[20];
+
+	assert(n < lengthof(_decode_parameters));
+	return _decode_parameters[n];
+}
+
+static inline void CopyInDParam(int offs, const uint64 *src, int num)
+{
+	extern uint64 _decode_parameters[20];
+	memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num));
+}
+
+static inline void CopyOutDParam(uint64 *dst, int offs, int num)
+{
+	extern uint64 _decode_parameters[20];
+	memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num));
+}
+
+
+/** Information about a language */
+struct Language {
+	char *name; ///< The internal name of the language
+	char *file; ///< The name of the language as it appears on disk
+};
+
+/** Used for dynamic language support */
+struct DynamicLanguages {
+	int num;                         ///< Number of languages
+	int curr;                        ///< Currently selected language index
+	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
+	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
+	Language ent[MAX_LANG];          ///< Information about the languages
+};
+
+extern DynamicLanguages _dynlang; // defined in strings.cpp
 
 bool ReadLanguagePack(int index);
 void InitializeLanguagePacks();
--- a/src/subsidy_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/subsidy_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "window.h"
 #include "station.h"
--- a/src/timetable_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/timetable_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -7,6 +7,7 @@
 #include "functions.h"
 #include "variables.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "command.h"
 #include "date.h"
 #include "engine.h"
--- a/src/train_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/train_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -11,6 +11,7 @@
 #include "gui.h"
 #include "station_map.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "map.h"
 #include "tile.h"
 #include "tunnel_map.h"
--- a/src/train_gui.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/train_gui.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -8,6 +8,7 @@
 #include "functions.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "window.h"
 #include "gui.h"
 #include "vehicle.h"
--- a/src/tunnelbridge_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/tunnelbridge_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -12,6 +12,7 @@
 #include "road_map.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "map.h"
 #include "landscape.h"
--- a/src/variables.h	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/variables.h	Mon Jul 16 21:22:24 2007 +0000
@@ -8,9 +8,6 @@
 #include "yapf/yapf_settings.h"
 
 /* ********* START OF SAVE REGION */
-#if !defined(MAX_PATH)
-# define MAX_PATH 260
-#endif
 
 #include "gfx.h"
 
@@ -292,8 +289,6 @@
 VARDEF StringID _error_message;
 VARDEF Money _additional_cash_required;
 
-VARDEF uint64 _decode_parameters[20];
-
 VARDEF bool _rightclick_emulate;
 
 /* IN/OUT parameters to commands */
@@ -320,23 +315,6 @@
 
 VARDEF char _ini_videodriver[32], _ini_musicdriver[32], _ini_sounddriver[32];
 
-/** Information about a language */
-struct Language {
-	char *name; ///< The internal name of the language
-	char *file; ///< The name of the language as it appears on disk
-};
-
-/** Used for dynamic language support */
-struct DynamicLanguages {
-	int num;                         ///< Number of languages
-	int curr;                        ///< Currently selected language index
-	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
-	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
-	Language ent[MAX_LANG];          ///< Information about the languages
-};
-
-extern DynamicLanguages _dynlang; // defined in strings.cpp
-
 VARDEF int _num_resolutions;
 VARDEF uint16 _resolutions[32][2];
 VARDEF uint16 _cur_resolution[2];
@@ -348,43 +326,6 @@
 VARDEF char *_log_file;
 
 
-static inline void SetDParamX(uint64 *s, uint n, uint64 v)
-{
-	s[n] = v;
-}
-
-static inline uint64 GetDParamX(const uint64 *s, uint n)
-{
-	return s[n];
-}
-
-static inline void SetDParam(uint n, uint64 v)
-{
-	assert(n < lengthof(_decode_parameters));
-	_decode_parameters[n] = v;
-}
-
-static inline uint64 GetDParam(uint n)
-{
-	assert(n < lengthof(_decode_parameters));
-	return _decode_parameters[n];
-}
-
-/* Used to bind a C string name to a dparam number.
- * NOTE: This has a short lifetime. You can't
- *       use this string much later or it will be gone. */
-void SetDParamStr(uint n, const char *str);
-
-/** This function takes a C-string and allocates a temporary string ID.
- * The duration of the bound string is valid only until the next acll to GetString,
- * so be careful. */
-StringID BindCString(const char *str);
-
-
-#define COPY_IN_DPARAM(offs, src, num) memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num))
-#define COPY_OUT_DPARAM(dst, offs, num) memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num))
-
-
 #define SET_EXPENSES_TYPE(x) _yearly_expenses_type = x;
 
 /* landscape.cpp */
--- a/src/water_cmd.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/water_cmd.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -10,6 +10,7 @@
 #include "station_map.h"
 #include "table/sprites.h"
 #include "table/strings.h"
+#include "strings.h"
 #include "functions.h"
 #include "landscape.h"
 #include "map.h"
@@ -168,7 +169,7 @@
 {
 	TileIndexDiff delta = TileOffsByDiagDir(GetLockDirection(tile));
 
-	if (!CheckTileOwnership(tile)) return CMD_ERROR;
+	if (!CheckTileOwnership(tile) && GetTileOwner(tile) != OWNER_NONE) return CMD_ERROR;
 
 	/* make sure no vehicle is on the tile. */
 	if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(tile + delta) || !EnsureNoVehicle(tile - delta))
@@ -295,7 +296,7 @@
 				return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
 			}
 
-			if (GetTileOwner(tile) != OWNER_WATER && !CheckTileOwnership(tile)) return CMD_ERROR;
+			if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
 
 			if (flags & DC_EXEC) DoClearSquare(tile);
 			return CommandCost(_price.clear_water);
@@ -797,8 +798,10 @@
 
 	if (new_player != PLAYER_SPECTATOR) {
 		SetTileOwner(tile, new_player);
+	} else if (IsShipDepot(tile)) {
+		DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 	} else {
-		DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
+		SetTileOwner(tile, OWNER_NONE);
 	}
 }
 
--- a/src/yapf/yapf_common.hpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/yapf/yapf_common.hpp	Mon Jul 16 21:22:24 2007 +0000
@@ -134,13 +134,26 @@
 	 *  adds it to the actual cost from origin and stores the sum to the Node::m_estimate */
 	inline bool PfCalcEstimate(Node& n)
 	{
-		int dx = delta(TileX(n.GetTile()), TileX(m_destTile));
-		int dy = delta(TileY(n.GetTile()), TileY(m_destTile));
-		assert(dx >= 0 && dy >= 0);
-		int dd = min(dx, dy);
+		static int dg_dir_to_x_offs[] = {-1, 0, 1, 0};
+		static int dg_dir_to_y_offs[] = {0, 1, 0, -1};
+		if (PfDetectDestination(n)) {
+			n.m_estimate = n.m_cost;
+			return true;
+		}
+
+		TileIndex tile = n.GetTile();
+		DiagDirection exitdir = TrackdirToExitdir(n.GetTrackdir());
+		int x1 = 2 * TileX(tile) + dg_dir_to_x_offs[(int)exitdir];
+		int y1 = 2 * TileY(tile) + dg_dir_to_y_offs[(int)exitdir];
+		int x2 = 2 * TileX(m_destTile);
+		int y2 = 2 * TileY(m_destTile);
+		int dx = abs(x1 - x2);
+		int dy = abs(y1 - y2);
+		int dmin = min(dx, dy);
 		int dxy = abs(dx - dy);
-		int d = 14 * dd + 10 * dxy;
-		n.m_estimate = n.m_cost + d /*+ d / 8*/;
+		int d = dmin * 7 + (dxy - 1) * (10 / 2);
+		n.m_estimate = n.m_cost + d;
+		assert(n.m_estimate >= n.m_parent->m_estimate);
 		return true;
 	}
 };
--- a/src/yapf/yapf_ship.cpp	Mon Jul 16 21:11:29 2007 +0000
+++ b/src/yapf/yapf_ship.cpp	Mon Jul 16 21:22:24 2007 +0000
@@ -105,7 +105,10 @@
 		// base tile cost depending on distance
 		int c = IsDiagonalTrackdir(n.GetTrackdir()) ? 10 : 7;
 		// additional penalty for curves
-		if (n.m_parent != NULL && n.GetTrackdir() != n.m_parent->GetTrackdir()) c += 3;
+		if (n.m_parent != NULL && n.GetTrackdir() != NextTrackdir(n.m_parent->GetTrackdir())) {
+			/* new trackdir does not match the next one when going straight */
+			c += 10;
+		}
 		// apply it
 		n.m_cost = n.m_parent->m_cost + c;
 		return true;