(svn r10533) [NoAI] -Sync with trunk r10460:r10532. noai
authortruelight
Fri, 13 Jul 2007 09:18:50 +0000
branchnoai
changeset 9641 855e32c08c9b
parent 9640 494df85104a3
child 9642 4fe281898e55
(svn r10533) [NoAI] -Sync with trunk r10460:r10532.
config.lib
src/airport_gui.cpp
src/articulated_vehicles.cpp
src/command.cpp
src/command.h
src/date.cpp
src/dock_gui.cpp
src/driver.h
src/economy.cpp
src/group_cmd.cpp
src/gui.h
src/industry.h
src/industry_cmd.cpp
src/industry_gui.cpp
src/lang/american.txt
src/lang/brazilian_portuguese.txt
src/lang/bulgarian.txt
src/lang/catalan.txt
src/lang/croatian.txt
src/lang/czech.txt
src/lang/danish.txt
src/lang/dutch.txt
src/lang/english.txt
src/lang/esperanto.txt
src/lang/estonian.txt
src/lang/finnish.txt
src/lang/french.txt
src/lang/galician.txt
src/lang/german.txt
src/lang/hungarian.txt
src/lang/icelandic.txt
src/lang/italian.txt
src/lang/japanese.txt
src/lang/korean.txt
src/lang/lithuanian.txt
src/lang/norwegian_bokmal.txt
src/lang/norwegian_nynorsk.txt
src/lang/piglatin.txt
src/lang/polish.txt
src/lang/portuguese.txt
src/lang/romanian.txt
src/lang/russian.txt
src/lang/simplified_chinese.txt
src/lang/slovak.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/swedish.txt
src/lang/traditional_chinese.txt
src/lang/turkish.txt
src/lang/ukrainian.txt
src/lang/unfinished/afrikaans.txt
src/lang/unfinished/greek.txt
src/lang/unfinished/latvian.txt
src/main_gui.cpp
src/misc_gui.cpp
src/music/bemidi.h
src/music/dmusic.h
src/music/extmidi.h
src/music/libtimidity.h
src/music/music_driver.hpp
src/music/null_m.h
src/music/os2_m.h
src/music/qtmidi.h
src/music/win32_m.h
src/network/core/tcp.h
src/network/network.cpp
src/network/network.h
src/network/network_client.cpp
src/network/network_data.cpp
src/network/network_gui.cpp
src/network/network_server.cpp
src/newgrf.cpp
src/newgrf_callbacks.h
src/newgrf_canal.cpp
src/newgrf_cargo.cpp
src/newgrf_cargo.h
src/newgrf_commons.cpp
src/newgrf_industries.cpp
src/newgrf_industries.h
src/newgrf_industrytiles.cpp
src/newgrf_industrytiles.h
src/newgrf_spritegroup.h
src/newgrf_station.cpp
src/rail_gui.cpp
src/road_cmd.cpp
src/road_gui.cpp
src/roadveh_cmd.cpp
src/saveload.cpp
src/ship_gui.cpp
src/sound/cocoa_s.h
src/sound/null_s.h
src/sound/sdl_s.h
src/sound/sound_driver.hpp
src/sound/win32_s.h
src/table/build_industry.h
src/table/road_land.h
src/town_cmd.cpp
src/train_cmd.cpp
src/unmovable_cmd.cpp
src/vehicle.cpp
src/video/cocoa_v.h
src/video/dedicated_v.h
src/video/null_v.h
src/video/sdl_v.h
src/video/video_driver.hpp
src/video/win32_v.h
src/window.cpp
src/yapf/follow_track.hpp
src/yapf/yapf.h
src/yapf/yapf_costrail.hpp
--- a/config.lib	Thu Jul 12 15:52:17 2007 +0000
+++ b/config.lib	Fri Jul 13 09:18:50 2007 +0000
@@ -702,9 +702,9 @@
 			log 1 "checking revision... no detection"
 			log 1 "WARNING: there is no means to determine the version."
 			log 1 "WARNING: please use a subversion or git checkout of OpenTTD."
-			log 1 "WARNING: this version will be allowed by all game servers,"
-			log 1 "WARNING: but you will be kicked from all incompatible"
-			log 1 "WARNING: servers as you will desync."
+			log 1 "WARNING: this version is only allowed by game servers that"
+			log 1 "WARNING: have been compiled without version detection."
+			log 1 "WARNING: there is a great chance you desync."
 			log 1 "WARNING: USE WITH CAUTION!"
 
 			sleep 5
@@ -753,15 +753,14 @@
 		OBJS_SUBDIR="release"
 		if [ "$os" = "OSX" ]; then
 			# these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
-			CFLAGS="$CFLAGS -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic"
+			CFLAGS="-O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic $CFLAGS"
 		else
 			if [ "$os" = "MORPHOS" ]; then
-				CFLAGS="$CFLAGS -I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations"
-				CFLAGS="$CFLAGS -mcpu=604 -fno-inline -mstring -mmultiple"
+				CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
 				LDFLAGS="$LDFLAGS -noixemul"
 			fi
 
-			CFLAGS="$CFLAGS -O2 -fomit-frame-pointer"
+			CFLAGS="-O2 -fomit-frame-pointer $CFLAGS"
 		fi
 	else
 		OBJS_SUBDIR="debug"
--- a/src/airport_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/airport_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -183,7 +183,7 @@
 		DrawWindowWidgets(w);
 		// strings such as 'Size' and 'Coverage Area'
 		// 'Coverage Area'
-		DrawStationCoverageAreaText(2, 206, (uint)-1, rad);
+		DrawStationCoverageAreaText(2, 206, SCT_ALL, rad);
 		break;
 	}
 
--- a/src/articulated_vehicles.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/articulated_vehicles.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -21,7 +21,7 @@
 
 	uint i;
 	for (i = 1; i < 10; i++) {
-		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL);
+		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, NULL);
 		if (callback == CALLBACK_FAILED || callback == 0xFF) break;
 	}
 
@@ -36,7 +36,7 @@
 	if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
 
 	for (uint i = 1; i < 10; i++) {
-		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, v);
+		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
 		if (callback == CALLBACK_FAILED || callback == 0xFF) return;
 
 		/* Attempt to use pre-allocated vehicles until they run out. This can happen
--- a/src/command.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/command.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -429,7 +429,7 @@
 
 /* toplevel network safe docommand function for the current player. must not be called recursively.
  * the callback is called when the command succeeded or failed. */
-bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd)
+bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd, bool my_cmd)
 {
 	CommandCost res, res2;
 	CommandProc *proc;
@@ -455,7 +455,7 @@
 	/** Spectator has no rights except for the (dedicated) server which
 	 * is/can be a spectator but as the server it can do anything */
 	if (_current_player == PLAYER_SPECTATOR && !_network_server) {
-		ShowErrorMessage(_error_message, error_part1, x, y);
+		if (my_cmd) ShowErrorMessage(_error_message, error_part1, x, y);
 		_cmd_text = NULL;
 		return false;
 	}
@@ -572,7 +572,7 @@
 		if (res2.GetCost() != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
 		if (_additional_cash_required != 0) {
 			SetDParam(0, _additional_cash_required);
-			ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, error_part1, x, y);
+			if (my_cmd) ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, error_part1, x, y);
 			if (res2.GetCost() == 0) goto callb_err;
 		}
 	}
@@ -585,7 +585,7 @@
 
 show_error:
 	/* show error message if the command fails? */
-	if (IsLocalPlayer() && error_part1 != 0) {
+	if (IsLocalPlayer() && error_part1 != 0 && my_cmd) {
 		ShowErrorMessage(_error_message, error_part1, x, y);
 	}
 
--- a/src/command.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/command.h	Fri Jul 13 09:18:50 2007 +0000
@@ -201,7 +201,7 @@
 /* command.cpp */
 typedef void CommandCallback(bool success, TileIndex tile, uint32 p1, uint32 p2);
 CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc);
-bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd);
+bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd, bool my_cmd = true);
 
 #ifdef ENABLE_NETWORK
 
--- a/src/date.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/date.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -13,6 +13,9 @@
 #include "network/network_server.h"
 #include "functions.h"
 #include "currency.h"
+#ifdef DEBUG_DUMP_COMMANDS
+#include "saveload.h"
+#endif
 
 Year      _cur_year;
 Month     _cur_month;
@@ -259,6 +262,12 @@
 
 	/* yes, call various monthly loops */
 	if (_game_mode != GM_MENU) {
+#ifdef DEBUG_DUMP_COMMANDS
+		char name[MAX_PATH];
+		snprintf(name, lengthof(name), "dmp_cmds_%d.sav", _date);
+		SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR);
+		debug_dump_commands("ddc:save:%s\n", name);
+#endif /* DUMP_COMMANDS */
 		if (_opt.autosave != 0 && (_cur_month % _autosave_months[_opt.autosave]) == 0) {
 			_do_autosave = true;
 			RedrawAutosave();
--- a/src/dock_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/dock_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -250,7 +250,7 @@
 			SetTileSelectSize(1, 1);
 		}
 
-		DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
+		DrawStationCoverageAreaText(4, 50, SCT_ALL, rad);
 		break;
 	}
 
--- a/src/driver.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/driver.h	Fri Jul 13 09:18:50 2007 +0000
@@ -16,8 +16,6 @@
 
 class Driver {
 public:
-	virtual bool CanProbe() = 0;
-
 	virtual const char *Start(const char * const *parm) = 0;
 
 	virtual void Stop() = 0;
@@ -40,6 +38,7 @@
 private:
 	Driver::Type type;
 	char *name;
+	int priority;
 	typedef std::map<std::string, DriverFactoryBase *> Drivers;
 
 	static Drivers &GetDrivers()
@@ -66,13 +65,14 @@
 	 * @param name the name of the driver.
 	 * @note an assert() will be trigger if 2 driver with the same name try to register.
 	 */
-	void RegisterDriver(const char *name, Driver::Type type)
+	void RegisterDriver(const char *name, Driver::Type type, int priority)
 	{
 		/* Don't register nameless Drivers */
 		if (name == NULL) return;
 
 		this->name = strdup(name);
 		this->type = type;
+		this->priority = priority;
 
 		/* Prefix the name with driver type to make it unique */
 		char buf[32];
@@ -101,17 +101,16 @@
 
 		if (*name == '\0') {
 			/* Probe for this driver */
-			Drivers::iterator it = GetDrivers().begin();
-			for (; it != GetDrivers().end(); ++it) {
-				DriverFactoryBase *d = (*it).second;
+			for (int priority = 10; priority >= 0; priority--) {
+				Drivers::iterator it = GetDrivers().begin();
+				for (; it != GetDrivers().end(); ++it) {
+					DriverFactoryBase *d = (*it).second;
 
-				/* Check driver type */
-				if (d->type != type) continue;
+					/* Check driver type */
+					if (d->type != type) continue;
+					if (d->priority != priority) continue;
 
-				Driver *newd = d->CreateInstance();
-				if (!newd->CanProbe()) {
-					DEBUG(driver, 1, "Skipping probe of driver '%s'", d->name);
-				} else {
+					Driver *newd = d->CreateInstance();
 					const char *err = newd->Start(NULL);
 					if (err == NULL) {
 						DEBUG(driver, 1, "Successfully probed %s driver '%s'", GetDriverTypeName(type), d->name);
@@ -121,9 +120,8 @@
 					}
 
 					DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err);
+					delete newd;
 				}
-
-				delete newd;
 			}
 			error("Couldn't find any suitable %s driver", GetDriverTypeName(type));
 		} else {
@@ -185,10 +183,14 @@
 		for (Driver::Type type = Driver::DT_BEGIN; type != Driver::DT_END; type++) {
 			p += snprintf(p, last - p, "List of %s drivers:\n", GetDriverTypeName(type));
 
-			Drivers::iterator it = GetDrivers().begin();
-			for (; it != GetDrivers().end(); it++) {
-				DriverFactoryBase *d = (*it).second;
-				if (d->type == type) p += snprintf(p, last - p, "%18s: %s\n", d->name, d->GetDescription());
+			for (int priority = 10; priority >= 0; priority--) {
+				Drivers::iterator it = GetDrivers().begin();
+				for (; it != GetDrivers().end(); it++) {
+					DriverFactoryBase *d = (*it).second;
+					if (d->type != type) continue;
+					if (d->priority != priority) continue;
+					p += snprintf(p, last - p, "%18s: %s\n", d->name, d->GetDescription());
+				}
 			}
 
 			p += snprintf(p, last - p, "\n");
--- a/src/economy.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/economy.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -36,6 +36,7 @@
 #include "newgrf_sound.h"
 #include "newgrf_callbacks.h"
 #include "newgrf_industries.h"
+#include "newgrf_industrytiles.h"
 #include "unmovable.h"
 #include "date.h"
 #include "cargotype.h"
@@ -1210,18 +1211,18 @@
 		indspec = GetIndustrySpec(ind->type);
 		uint i;
 
-		if (indspec->produced_cargo[0] == CT_INVALID) continue;
-
 		for (i = 0; i < lengthof(indspec->accepts_cargo); i++) {
-			if (cargo_type == indspec->accepts_cargo[i] &&
-					(indspec->input_cargo_multiplier[i][0] != 0 || indspec->input_cargo_multiplier[i][1] != 0)) {
-				break;
-			}
+			if (cargo_type == indspec->accepts_cargo[i]) break;
 		}
 
 		/* Check if matching cargo has been found */
 		if (i == lengthof(indspec->accepts_cargo)) continue;
 
+		if (HASBIT(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) {
+			uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->xy);
+			if (res == 0) continue;
+		}
+
 		uint dist = DistanceManhattan(ind->xy, xy);
 
 		if (dist < best_dist) {
@@ -1241,11 +1242,17 @@
 
 		if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(callback, CBM_IND_PRODUCTION_256_TICKS)) {
 			best->incoming_cargo_waiting[accepted_cargo_index] = min(num_pieces + best->incoming_cargo_waiting[accepted_cargo_index], 0xFFFF);
-			if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) IndustryProductionCallback(ind, 0);
+			if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) {
+				IndustryProductionCallback(best, 0);
+			} else {
+				InvalidateWindow(WC_INDUSTRY_VIEW, best->index);
+			}
 		} else {
 			best->produced_cargo_waiting[0] = min(best->produced_cargo_waiting[0] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][0] / 256), 0xFFFF);
 			best->produced_cargo_waiting[1] = min(best->produced_cargo_waiting[1] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][1] / 256), 0xFFFF);
 		}
+
+		StartStopIndustryTileAnimation(best, IAT_INDUSTRY_RECEIVED_CARGO);
 	}
 }
 
--- a/src/group_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/group_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -90,7 +90,7 @@
 
 
 /**
- * Add a vehicle to a group
+ * Create a new vehicle group.
  * @param tile unused
  * @param p1   vehicle type
  * @param p2   unused
@@ -117,7 +117,7 @@
 
 
 /**
- * Add a vehicle to a group
+ * Add all vehicles in the given group to the default group and then deletes the group.
  * @param tile unused
  * @param p1   index of array group
  *      - p1 bit 0-15 : GroupID
--- a/src/gui.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/gui.h	Fri Jul 13 09:18:50 2007 +0000
@@ -108,7 +108,13 @@
 void ShowEstimatedCostOrIncome(Money cost, int x, int y);
 void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
 
-void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
+enum StationCoverageType {
+	SCT_PASSENGERS_ONLY,
+	SCT_NON_PASSENGERS_ONLY,
+	SCT_ALL
+};
+
+void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad);
 void CheckRedrawStationCoverage(const Window *w);
 
 void ShowSmallMap();
--- a/src/industry.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry.h	Fri Jul 13 09:18:50 2007 +0000
@@ -186,6 +186,10 @@
 	                                      ///< state instead of the construction state
 	/* Newgrf data */
 	uint8 callback_flags;                 ///< Flags telling which grf callback is set
+	uint16 animation_info;                ///< Information about the animation (is it looping, how many loops etc)
+	uint8 animation_speed;                ///< The speed of the animation
+	uint8 animation_triggers;             ///< When to start the animation
+	uint8 animation_special_flags;        ///< Extra flags to influence the animation
 	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
 	struct GRFFileProps grf_prop;
 };
--- a/src/industry_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -330,12 +330,36 @@
 
 static void GetAcceptedCargo_Industry(TileIndex tile, AcceptedCargo ac)
 {
-	const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile));
-	CargoID a;
+	IndustryGfx gfx = GetIndustryGfx(tile);
+	const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+
+	/* When we have to use a callback, we put our data in the next two variables */
+	CargoID raw_accepts_cargo[lengthof(itspec->accepts_cargo)];
+	uint8 raw_acceptance[lengthof(itspec->acceptance)];
+
+	/* And then these will always point to a same sized array with the required data */
+	const CargoID *accepts_cargo = itspec->accepts_cargo;
+	const uint8 *acceptance = itspec->acceptance;
+
+	if (HASBIT(itspec->callback_flags, CBM_INDT_ACCEPT_CARGO)) {
+		uint16 res = GetIndustryTileCallback(CBID_INDTILE_ACCEPT_CARGO, 0, 0, gfx, GetIndustryByTile(tile), tile);
+		if (res != CALLBACK_FAILED) {
+			accepts_cargo = raw_accepts_cargo;
+			for (uint i = 0; i < lengthof(itspec->accepts_cargo); i++) raw_accepts_cargo[i] = GetCargoTranslation(GB(res, i * 5, 5), itspec->grf_prop.grffile);
+		}
+	}
+
+	if (HASBIT(itspec->callback_flags, CBM_INDT_CARGO_ACCEPTANCE)) {
+		uint16 res = GetIndustryTileCallback(CBID_INDTILE_CARGO_ACCEPTANCE, 0, 0, gfx, GetIndustryByTile(tile), tile);
+		if (res != CALLBACK_FAILED) {
+			acceptance = raw_acceptance;
+			for (uint i = 0; i < lengthof(itspec->accepts_cargo); i++) raw_acceptance[i] = GB(res, i * 4, 4);
+		}
+	}
 
 	for (byte i = 0; i < lengthof(itspec->accepts_cargo); i++) {
-		a = itspec->accepts_cargo[i];
-		if (a != CT_INVALID) ac[a] = itspec->acceptance[i];
+		CargoID a = accepts_cargo[i];
+		if (a != CT_INVALID) ac[a] = acceptance[i];
 	}
 }
 
@@ -389,7 +413,7 @@
 
 		am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[0], cw);
 		i->this_month_transported[0] += am;
-		if (am != 0) {
+		if (am != 0 && !StartStopIndustryTileAnimation(i, IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
 			uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
 
 			if (newgfx != INDUSTRYTILE_NOANIM) {
@@ -418,8 +442,14 @@
 static void AnimateTile_Industry(TileIndex tile)
 {
 	byte m;
+	IndustryGfx gfx = GetIndustryGfx(tile);
 
-	switch (GetIndustryGfx(tile)) {
+	if (GetIndustryTileSpec(gfx)->animation_info != 0xFFFF) {
+		AnimateNewIndustryTile(tile);
+		return;
+	}
+
+	switch (gfx) {
 	case GFX_SUGAR_MINE_SIEVE:
 		if ((_tick_counter & 1) == 0) {
 			m = GetIndustryAnimationState(tile) + 1;
@@ -605,6 +635,7 @@
 	stage = GetIndustryConstructionStage(tile) + 1;
 	SetIndustryConstructionCounter(tile, 0);
 	SetIndustryConstructionStage(tile, stage);
+	StartStopIndustryTileAnimation(tile, IAT_CONSTRUCTION_STATE_CHANGE);
 	if (stage == 3) {
 		SetIndustryCompleted(tile, true);
 	}
@@ -613,7 +644,15 @@
 
 	if (!IsIndustryCompleted(tile)) return;
 
-	switch (GetIndustryGfx(tile)) {
+	IndustryGfx gfx = GetIndustryGfx(tile);
+	if (gfx >= NEW_INDUSTRYTILEOFFSET) {
+		/* New industry */
+		const IndustryTileSpec *its = GetIndustryTileSpec(gfx);
+		if (its->animation_info != 0xFFFF) AddAnimatedTile(tile);
+		return;
+	}
+
+	switch (gfx) {
 	case GFX_POWERPLANT_CHIMNEY:
 		CreateIndustryEffectSmoke(tile);
 		break;
@@ -677,6 +716,8 @@
 
 	TransportIndustryGoods(tile);
 
+	if (StartStopIndustryTileAnimation(tile, IAT_TILELOOP)) return;
+
 	newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
 	if (newgfx != INDUSTRYTILE_NOANIM) {
 		ResetIndustryConstructionStage(tile);
@@ -905,11 +946,6 @@
 	if (tile != INVALID_TILE) PlantFarmField(tile, i->index);
 }
 
-static void MaybePlantFarmField(const Industry *i)
-{
-	if (CHANCE16(1, 8)) PlantRandomFarmField(i);
-}
-
 /**
  * Search callback function for ChopLumberMillTrees
  * @param tile to test
@@ -974,10 +1010,23 @@
 		i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + i->production_rate[0]);
 		i->produced_cargo_waiting[1] = min(0xffff, i->produced_cargo_waiting[1] + i->production_rate[1]);
 
-		if (indbehav & INDUSTRYBEH_PLANT_FIELDS) {
-			MaybePlantFarmField(i);
-		} else if ((indbehav & INDUSTRYBEH_CUT_TREES) && (i->counter & 0x1FF) == 0) {
-			ChopLumberMillTrees(i);
+		if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
+			bool plant;
+			if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+				plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
+			} else {
+				plant = CHANCE16(1, 8);
+			}
+
+			if (plant) PlantRandomFarmField(i);
+		}
+		if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
+			bool cut = ((i->counter & 0x1FF) == 0);
+			if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+				cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
+			}
+
+			if (cut) ChopLumberMillTrees(i);
 		}
 	}
 }
@@ -1000,6 +1049,7 @@
 	if (_game_mode == GM_EDITOR) return;
 
 	FOR_ALL_INDUSTRIES(i) {
+		StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
 		ProduceIndustryGoods(i);
 	}
 }
@@ -1133,7 +1183,7 @@
 	return t;
 }
 
-static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable *it, int type)
+static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable *it, int type, bool *custom_shape_check = NULL)
 {
 	_error_message = STR_0239_SITE_UNSUITABLE;
 
@@ -1154,54 +1204,55 @@
 			if (!EnsureNoVehicle(cur_tile)) return false;
 			if (MayHaveBridgeAbove(cur_tile) && IsBridgeAbove(cur_tile)) return false;
 
+			const IndustryTileSpec *its = GetIndustryTileSpec(it->gfx);
 			IndustyBehaviour ind_behav = GetIndustrySpec(type)->behaviour;
 
-			if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
-				/* As soon as the tile is not water, bail out.
-				 * But that does not mean the search is over.  You have
-				 * to make sure every tile of the industry will be only water*/
-				if (!IsClearWaterTile(cur_tile)) return false;
+			if (HASBIT(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
+				if (custom_shape_check != NULL) *custom_shape_check = true;
+				if (!PerformIndustryTileSlopeCheck(cur_tile, its, type, it->gfx)) return false;
 			} else {
-				Slope tileh;
-
-				if (IsClearWaterTile(cur_tile)) return false;
-
-				tileh = GetTileSlope(cur_tile, NULL);
-				if (IsSteepSlope(tileh)) return false;
+				if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
+					/* As soon as the tile is not water, bail out.
+					* But that does not mean the search is over.  You have
+					* to make sure every tile of the industry will be only water*/
+					if (!IsClearWaterTile(cur_tile)) return false;
+				} else {
+					Slope tileh;
 
-				if (_patches.land_generator != LG_TERRAGENESIS || !_generating_world) {
-					/* It is almost impossible to have a fully flat land in TG, so what we
-					 *  do is that we check if we can make the land flat later on. See
-					 *  CheckIfCanLevelIndustryPlatform(). */
-					if (tileh != SLOPE_FLAT) {
-						Slope t;
-						byte bits = GetIndustryTileSpec(it->gfx)->slopes_refused;
+					if (IsClearWaterTile(cur_tile)) return false;
 
-						if (bits & 0x10) return false;
-
-						t = ComplementSlope(tileh);
+					tileh = GetTileSlope(cur_tile, NULL);
+					if (IsSteepSlope(tileh)) return false;
 
-						if (bits & 1 && (t & SLOPE_NW)) return false;
-						if (bits & 2 && (t & SLOPE_NE)) return false;
-						if (bits & 4 && (t & SLOPE_SW)) return false;
-						if (bits & 8 && (t & SLOPE_SE)) return false;
+					if (_patches.land_generator != LG_TERRAGENESIS || !_generating_world) {
+						/* It is almost impossible to have a fully flat land in TG, so what we
+						*  do is that we check if we can make the land flat later on. See
+						*  CheckIfCanLevelIndustryPlatform(). */
+						if (tileh != SLOPE_FLAT) {
+							Slope t;
+							byte bits = its->slopes_refused;
+
+							if (bits & 0x10) return false;
+
+							t = ComplementSlope(tileh);
+
+							if (bits & 1 && (t & SLOPE_NW)) return false;
+							if (bits & 2 && (t & SLOPE_NE)) return false;
+							if (bits & 4 && (t & SLOPE_SW)) return false;
+							if (bits & 8 && (t & SLOPE_SE)) return false;
+						}
 					}
 				}
+			}
 
-				if (ind_behav & INDUSTRYBEH_ONLY_INTOWN) {
-					if (!IsTileType(cur_tile, MP_HOUSE)) {
-						_error_message = STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS;
-						return false;
-					}
-				} else {
-					if (ind_behav & INDUSTRYBEH_ONLY_NEARTOWN) {
-						if (!IsTileType(cur_tile, MP_HOUSE)) goto do_clear;
-					} else {
-do_clear:
-						if (CmdFailed(DoCommand(cur_tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR)))
-							return false;
-					}
+			if (ind_behav & INDUSTRYBEH_ONLY_INTOWN) {
+				if (!IsTileType(cur_tile, MP_HOUSE)) {
+					_error_message = STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS;
+					return false;
 				}
+				if (CmdFailed(DoCommand(cur_tile, 0, 0, 0, CMD_LANDSCAPE_CLEAR))) return false;
+			} else if ((ind_behav & INDUSTRYBEH_ONLY_NEARTOWN) == 0 || !IsTileType(cur_tile, MP_HOUSE)) {
+				if (CmdFailed(DoCommand(cur_tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR))) return false;
 			}
 		}
 	} while ((++it)->ti.x != -0x80);
@@ -1458,30 +1509,36 @@
  * @param type of industry to build
  * @param flags of operations to conduct
  * @param indspec pointer to industry specifications
- * @param it pointer to list of tile type to build
+ * @param itspec_index the index of the itsepc to build/fund
  * @return the pointer of the newly created industry, or NULL if it failed
  */
-static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, const IndustryTileTable *it)
+static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, uint itspec_index)
 {
-	const Town *t;
-	Industry *i;
+	const IndustryTileTable *it = indspec->table[itspec_index];
+	bool custom_shape_check = false;
 
-	if (!CheckIfIndustryTilesAreFree(tile, it, type)) return NULL;
-	if (_patches.land_generator == LG_TERRAGENESIS && _generating_world && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
-	if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
+	if (!CheckIfIndustryTilesAreFree(tile, it, type, &custom_shape_check)) return NULL;
+
+	if (HASBIT(GetIndustrySpec(type)->callback_flags, CBM_IND_LOCATION)) {
+		if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index)) return NULL;
+	} else {
+		if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
+	}
+
+	if (!custom_shape_check && _patches.land_generator == LG_TERRAGENESIS && _generating_world && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
 	if (!CheckIfTooCloseToIndustry(tile, type)) return NULL;
 
-	t = CheckMultipleIndustryInTown(tile, type);
+	const Town *t = CheckMultipleIndustryInTown(tile, type);
 	if (t == NULL) return NULL;
 
 	if (!CheckIfIndustryIsAllowed(tile, type, t)) return NULL;
 	if (!CheckSuitableIndustryPos(tile)) return NULL;
 
-	i = AllocateIndustry();
+	Industry *i = AllocateIndustry();
 	if (i == NULL) return NULL;
 
 	if (flags & DC_EXEC) {
-		CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
+		if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
 		DoCreateNewIndustry(i, tile, type, it, t, OWNER_NONE);
 	}
 
@@ -1513,19 +1570,26 @@
 
 	/* If the patch for raw-material industries is not on, you cannot build raw-material industries.
 	 * Raw material industries are industries that do not accept cargo (at least for now) */
-	if (_patches.raw_industry_construction == 0 && indspec->IsRawIndustry()) {
+	if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 0 && indspec->IsRawIndustry()) {
 		return CMD_ERROR;
 	}
 
-	if (_patches.raw_industry_construction == 2 && indspec->IsRawIndustry()) {
+	if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && indspec->IsRawIndustry()) {
 		if (flags & DC_EXEC) {
 			/* Prospecting has a chance to fail, however we cannot guarantee that something can
 			 * be built on the map, so the chance gets lower when the map is fuller, but there
 			 * is nothing we can really do about that. */
 			if (Random() <= indspec->prospecting_chance) {
 				for (int i = 0; i < 5000; i++) {
-					const IndustryTileTable *it = indspec->table[RandomRange(indspec->num_table)];
-					if (CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, it) != NULL) break;
+					uint tilespec_index = RandomRange(indspec->num_table);
+					const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, tilespec_index);
+					if (ind != NULL) {
+						SetDParam(0, indspec->name);
+						SetDParam(1, ind->town->index);
+						AddNewsItem(indspec->new_industry_text,
+								NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0);
+						break;
+					}
 				}
 			}
 		}
@@ -1538,7 +1602,7 @@
 			if (--num < 0) return_cmd_error(STR_0239_SITE_UNSUITABLE);
 		} while (!CheckIfIndustryTilesAreFree(tile, it = itt[num], p1));
 
-		if (CreateNewIndustryHelper(tile, p1, flags, indspec, it) == NULL) return CMD_ERROR;
+		if (CreateNewIndustryHelper(tile, p1, flags, indspec, num) == NULL) return CMD_ERROR;
 	}
 
 	return CommandCost(indspec->GetConstructionCost());
@@ -1548,9 +1612,8 @@
 Industry *CreateNewIndustry(TileIndex tile, IndustryType type)
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
-	const IndustryTileTable *it = indspec->table[RandomRange(indspec->num_table)];
 
-	return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, it);
+	return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table));
 }
 
 static const byte _numof_industry_table[5][11] = {
--- a/src/industry_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/industry_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -20,263 +20,327 @@
 #include "variables.h"
 #include "helpers.hpp"
 #include "cargotype.h"
+#include "newgrf.h"
+#include "newgrf_callbacks.h"
+#include "newgrf_industries.h"
+#include "newgrf_text.h"
 
-/* industries per climate, according to the different construction windows */
-const byte _build_industry_types[4][12] = {
-	{  1,  2,  4,  6,  8,  0,  3,  5,  9, 11, 18 },
-	{  1, 14,  4, 13,  7,  0,  3,  9, 11, 15 },
-	{ 25, 13,  4, 23, 22, 11, 17, 10, 24, 19, 20, 21 },
-	{ 27, 30, 31, 33, 26, 28, 29, 32, 34, 35, 36 },
+extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
+
+/**
+ * Search callback function for TryBuildIndustry
+ * @param tile to test
+ * @param data that is passed by the caller.  In this case, the type of industry been tested
+ * @return the success (or not) of the operation
+ */
+static bool SearchTileForIndustry(TileIndex tile, uint32 data)
+{
+	return CreateNewIndustry(tile, data) != NULL;
+}
+
+/**
+ * Perform a 9*9 tiles circular search around a tile
+ * in order to find a suitable zone to create the desired industry
+ * @param tile to start search for
+ * @param type of the desired industry
+ * @return the success (or not) of the operation
+ */
+static bool TryBuildIndustry(TileIndex tile, int type)
+{
+	return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
+}
+bool _ignore_restrictions;
+
+enum {
+	DYNA_INDU_MATRIX_WIDGET = 2,
+	DYNA_INDU_INFOPANEL = 4,
+	DYNA_INDU_FUND_WIDGET,
+	DYNA_INDU_RESIZE_WIDGET,
 };
 
-static void UpdateIndustryProduction(Industry *i);
+static struct IndustryData {
+	uint16 count;
+	IndustryType select;
+	byte index[NUM_INDUSTRYTYPES + 1];
+	StringID additional_text[NUM_INDUSTRYTYPES + 1];
+} _industrydata;
 
-static void BuildIndustryWndProc(Window *w, WindowEvent *e)
+static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
-	case WE_PAINT:
-		DrawWindowWidgets(w);
-		if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
-			int ind_type = _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1];
+		case WE_CREATE: {
+			IndustryType ind;
+			const IndustrySpec *indsp;
 
-			SetDParam(0, GetIndustrySpec(ind_type)->GetConstructionCost());
-			DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
-		}
-		break;
+			/* Shorten the window to the equivalant of the additionnal purchase
+			 * info coming from the callback.  SO it will only be available to tis full
+			 * height when newindistries are loaded */
+			if (!_loaded_newgrf_features.has_newindustries) {
+				w->widget[DYNA_INDU_INFOPANEL].bottom -= 44;
+				w->widget[DYNA_INDU_FUND_WIDGET].bottom -= 44;
+				w->widget[DYNA_INDU_FUND_WIDGET].top -= 44;
+				w->widget[DYNA_INDU_RESIZE_WIDGET].bottom -= 44;
+				w->widget[DYNA_INDU_RESIZE_WIDGET].top -= 44;
+				w->resize.height = w->height -= 44;
+			}
 
-	case WE_CLICK: {
-		int wid = e->we.click.widget;
-		if (wid >= 3) {
-			if (HandlePlacePushButton(w, wid, SPR_CURSOR_INDUSTRY, 1, NULL))
-				WP(w, def_d).data_1 = wid - 3;
+			/* Initilialize structures */
+			memset(&_industrydata.index, 0xFF, NUM_INDUSTRYTYPES);
+			memset(&_industrydata.additional_text, STR_NULL, NUM_INDUSTRYTYPES);
+			_industrydata.count = 0;
+
+			/* first indutry type is selected.
+			 * I'll be damned if there are none available ;) */
+			_industrydata.select = 0;
+			w->vscroll.cap = 8; // rows in grid, same in scroller
+			w->resize.step_height = 13;
+
+			if (_game_mode == GM_EDITOR) { // give room for the Many Random "button"
+				_industrydata.index[_industrydata.count] = INVALID_INDUSTRYTYPE;
+				_industrydata.count++;
+			}
+
+			/* We'll perform two distinct loops, one for secondary industries, and the other one for
+			 * primary ones. Each loop will fill the _industrydata structure. */
+			for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+				indsp = GetIndustrySpec(ind);
+				if (indsp->enabled && (!indsp->IsRawIndustry() || _game_mode == GM_EDITOR)) {
+					_industrydata.index[_industrydata.count] = ind;
+					_industrydata.count++;
+				}
+			}
+
+			if (_patches.raw_industry_construction != 0 && _game_mode != GM_EDITOR) {
+				for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+					indsp = GetIndustrySpec(ind);
+					if (indsp->enabled && indsp->IsRawIndustry()) {
+						_industrydata.index[_industrydata.count] = ind;
+						_industrydata.count++;
+					}
+				}
+			}
+		} break;
+
+		case WE_PAINT: {
+			const IndustrySpec *indsp = (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) ? NULL : GetIndustrySpec(_industrydata.index[_industrydata.select]);
+			StringID str = STR_4827_REQUIRES;
+			int x_str = w->widget[DYNA_INDU_INFOPANEL].left + 3;
+			int y_str = w->widget[DYNA_INDU_INFOPANEL].top + 3;
+			const Widget *wi = &w->widget[DYNA_INDU_INFOPANEL];
+			int max_width = wi->right - wi->left - 4;
+
+			/* Raw industries might be prospected. Show this fact by changing the string */
+			if (_game_mode == GM_EDITOR) {
+				w->widget[DYNA_INDU_FUND_WIDGET].data = STR_BUILD_NEW_INDUSTRY;
+			} else {
+				w->widget[DYNA_INDU_FUND_WIDGET].data = (_patches.raw_industry_construction == 2 && indsp->IsRawIndustry()) ? STR_PROSPECT_NEW_INDUSTRY : STR_FUND_NEW_INDUSTRY;
+			}
+
+			SetVScrollCount(w, _industrydata.count);
+
+			DrawWindowWidgets(w);
+
+			/* and now with the matrix painting */
+			for (byte i = 0; i < w->vscroll.cap && ((i + w->vscroll.pos) < _industrydata.count); i++) {
+				int offset = i * 13;
+				int x = 3;
+				int y = 16;
+				bool selected = _industrydata.select == i + w->vscroll.pos;
+
+				if (_industrydata.index[i + w->vscroll.pos] == INVALID_INDUSTRYTYPE) {
+					DrawString(21, y + offset, STR_MANY_RANDOM_INDUSTRIES, selected ? 12 : 6);
+					continue;
+				}
+				const IndustrySpec *indsp = GetIndustrySpec(_industrydata.index[i + w->vscroll.pos]);
+
+				/* Draw the name of the industry in white is selected, otherwise, in orange */
+				DrawString(20,     y + offset, indsp->name, selected ? 12 : 6);
+				GfxFillRect(x,     y + 1 + offset,  x + 10, y + 7 + offset, selected ? 15 : 0);
+				GfxFillRect(x + 1, y + 2 + offset,  x +  9, y + 6 + offset, indsp->map_colour);
+			}
+
+			if (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) {
+				DrawStringMultiLine(x_str, y_str, STR_RANDOM_INDUSTRIES_TIP, max_width, wi->bottom - wi->top - 40);
+				break;
+			}
+
+			if (_game_mode != GM_EDITOR) {
+				SetDParam(0, indsp->GetConstructionCost());
+				DrawStringTruncated(x_str, y_str, STR_482F_COST, 0, max_width);
+				y_str += 11;
+			}
+
+			/* Draw the accepted cargos, if any. Otherwhise, will print "Nothing" */
+			if (indsp->accepts_cargo[0] != CT_INVALID) {
+				SetDParam(0, GetCargo(indsp->accepts_cargo[0])->name);
+				if (indsp->accepts_cargo[1] != CT_INVALID) {
+					SetDParam(1, GetCargo(indsp->accepts_cargo[1])->name);
+					str = STR_4828_REQUIRES;
+					if (indsp->accepts_cargo[2] != CT_INVALID) {
+						SetDParam(2, GetCargo(indsp->accepts_cargo[2])->name);
+						str = STR_4829_REQUIRES;
+					}
+				}
+			} else {
+				SetDParam(0, STR_00D0_NOTHING);
+			}
+			DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+			y_str += 11;
+			/* Draw the produced cargos, if any. Otherwhise, will print "Nothing" */
+			str = STR_4827_PRODUCES;
+			if (indsp->produced_cargo[0] != CT_INVALID) {
+				SetDParam(0, GetCargo(indsp->produced_cargo[0])->name);
+				if (indsp->produced_cargo[1] != CT_INVALID) {
+					SetDParam(1, GetCargo(indsp->produced_cargo[1])->name);
+					str = STR_4828_PRODUCES;
+				}
+			} else {
+				SetDParam(0, STR_00D0_NOTHING);
+			}
+			DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+			/* Get the additional purchase info text, if it has not already been */
+			if (_industrydata.additional_text[_industrydata.select] == STR_NULL) {   // Have i been called already?
+				if (HASBIT(indsp->callback_flags, CBM_IND_FUND_MORE_TEXT)) {          // No. Can it be called?
+					uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_FUND_MORE_TEXT, 0, 0, NULL, _industrydata.index[_industrydata.select], INVALID_TILE);
+					if (callback_res != CALLBACK_FAILED) {  // Did it failed?
+						StringID newtxt = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res);  // No. here's the new string
+						_industrydata.additional_text[_industrydata.select] = newtxt;   // Store it for further usage
+					}
+				}
+			}
+
+			y_str += 11;
+			/* Draw the Additional purchase text, provided by newgrf callback, if any.
+			 * Otherwhise, will print Nothing */
+			if (_industrydata.additional_text[_industrydata.select] != STR_NULL &&
+					_industrydata.additional_text[_industrydata.select] != STR_UNDEFINED) {
+
+				SetDParam(0, _industrydata.additional_text[_industrydata.select]);
+				DrawStringMultiLine(x_str, y_str, STR_JUST_STRING, max_width, wi->bottom - wi->top - 40);  // text is white, for now
+			}
+		} break;
+
+		case WE_CLICK:
+			switch (e->we.click.widget) {
+				case DYNA_INDU_MATRIX_WIDGET: {
+					IndustryType type;
+					int y = (e->we.click.pt.y - w->widget[DYNA_INDU_MATRIX_WIDGET].top) / 13 + w->vscroll.pos ;
+
+					if (y >= 0 && y < _industrydata.count) { //Isit within the boundaries of available data?
+						_industrydata.select = y;
+						type = _industrydata.index[_industrydata.select];
+
+						SetWindowDirty(w);
+						if ((_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 &&	GetIndustrySpec(type)->IsRawIndustry()) ||
+								type == INVALID_INDUSTRYTYPE) {
+							/* Reset the button state if going to prospecting or "build many industries" */
+							RaiseWindowButtons(w);
+							ResetObjectToPlace();
+						}
+					}
+				} break;
+
+				case DYNA_INDU_FUND_WIDGET: {
+					IndustryType type = _industrydata.index[_industrydata.select];
+
+					if (type == INVALID_INDUSTRYTYPE) {
+						HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+						WP(w, def_d).data_1 = -1;
+
+						if (GetNumTowns() == 0) {
+							ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
+						} else {
+							extern void GenerateIndustries();
+							_generating_world = true;
+							GenerateIndustries();
+							_generating_world = false;
+						}
+					} else if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(type)->IsRawIndustry()) {
+						DoCommandP(0, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+						HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+						WP(w, def_d).data_1 = -1;
+					} else if (HandlePlacePushButton(w, DYNA_INDU_FUND_WIDGET, SPR_CURSOR_INDUSTRY, 1, NULL)) {
+							WP(w, def_d).data_1 = _industrydata.select;
+					}
+				}
+				break;
+	} break;
+
+	case WE_RESIZE: {
+		w->vscroll.cap  += e->we.sizing.diff.y / (int)w->resize.step_height;
+		w->widget[DYNA_INDU_MATRIX_WIDGET].data = (w->vscroll.cap << 8) + 1;
+	} break;
+
+	case WE_PLACE_OBJ: {
+		IndustryType type = _industrydata.index[_industrydata.select];
+
+		if (WP(w, def_d).data_1 == -1) break;
+		if (_game_mode == GM_EDITOR) {
+			/* Show error if no town exists at all */
+			if (GetNumTowns() == 0) {
+				SetDParam(0, GetIndustrySpec(type)->name);
+				ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+				return;
+			}
+
+			_current_player = OWNER_NONE;
+			_generating_world = true;
+			_ignore_restrictions = true;
+			if (!TryBuildIndustry(e->we.place.tile, type)) {
+				SetDParam(0, GetIndustrySpec(type)->name);
+				ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+			} else {
+				ResetObjectToPlace();
+			}
+			_ignore_restrictions = false;
+			_generating_world = false;
+		} else if (DoCommandP(e->we.place.tile, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY))) {
+			ResetObjectToPlace();
 		}
 	} break;
 
-	case WE_PLACE_OBJ:
-		if (DoCommandP(e->we.place.tile, _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1], 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY)))
-			ResetObjectToPlace();
+	case WE_ABORT_PLACE_OBJ:
+		RaiseWindowButtons(w);
 		break;
 
-	case WE_ABORT_PLACE_OBJ:
-		RaiseWindowButtons(w);
+	case WE_TIMEOUT:
+		if (WP(w, def_d).data_1 == -1) {
+			RaiseWindowButtons(w);
+			WP(w, def_d).data_1 = 0;
+		}
 		break;
 	}
 }
 
-static const Widget _build_industry_land0_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_0242_SAWMILL,               STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0247_STEEL_MILL,            STR_0269_CONSTRUCT_STEEL_MILL},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land2_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0250_LUMBER_MILL,           STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0254_WATER_TOWER,           STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0258_CANDY_FACTORY,         STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_025B_TOY_SHOP,              STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_025C_TOY_FACTORY,           STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_025E_FIZZY_DRINK_FACTORY,   STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land0_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   187, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_0242_SAWMILL,               STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0247_STEEL_MILL,            STR_0269_CONSTRUCT_STEEL_MILL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0240_COAL_MINE,             STR_CONSTRUCT_COAL_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0243_FOREST,                STR_CONSTRUCT_FOREST_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0245_OIL_RIG,               STR_CONSTRUCT_OIL_RIG_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0249_IRON_ORE_MINE,         STR_CONSTRUCT_IRON_ORE_MINE_TIP},
-
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   174, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0240_COAL_MINE,             STR_CONSTRUCT_COAL_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0243_FOREST,                STR_CONSTRUCT_FOREST_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_024F_GOLD_MINE,             STR_CONSTRUCT_GOLD_MINE_TIP},
+static const Widget _build_dynamic_industry_widgets[] = {
+{   WWT_CLOSEBOX,    RESIZE_NONE,    7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,   RESIZE_RIGHT,    7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
+{     WWT_MATRIX,      RESIZE_RB,    7,     0,   157,    14,   118, 0x801,                          STR_INDUSTRY_SELECTION_HINT},
+{  WWT_SCROLLBAR,     RESIZE_LRB,    7,   158,   169,    14,   118, 0x0,                            STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{      WWT_PANEL,     RESIZE_RTB,    7,     0,   169,   119,   199, 0x0,                            STR_NULL},
+{    WWT_TEXTBTN,     RESIZE_RTB,    7,     0,   157,   200,   211, STR_FUND_NEW_INDUSTRY,          STR_NULL},
+{  WWT_RESIZEBOX,    RESIZE_LRTB,    7,   158,   169,   200,   211, 0x0,                            STR_RESIZE_BUTTON},
 {   WIDGETS_END},
 };
 
-static const Widget _build_industry_land2_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   200, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0250_LUMBER_MILL,           STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0254_WATER_TOWER,           STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0255_DIAMOND_MINE,          STR_CONSTRUCT_DIAMOND_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0256_COPPER_ORE_MINE,       STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_0251_FRUIT_PLANTATION,      STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0252_RUBBER_PLANTATION,     STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   162,   173, STR_0253_WATER_SUPPLY,          STR_CONSTRUCT_WATER_SUPPLY_TIP},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   187, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0258_CANDY_FACTORY,         STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_025B_TOY_SHOP,              STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_025C_TOY_FACTORY,           STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_025E_FIZZY_DRINK_FACTORY,   STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    71,    82, STR_0257_COTTON_CANDY_FOREST,   STR_CONSTRUCT_COTTON_CANDY_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0259_BATTERY_FARM,          STR_CONSTRUCT_BATTERY_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_025A_COLA_WELLS,            STR_CONSTRUCT_COLA_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_025D_PLASTIC_FOUNTAINS,     STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_025F_BUBBLE_GENERATOR,      STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_0260_TOFFEE_QUARRY,         STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0261_SUGAR_MINE,            STR_CONSTRUCT_SUGAR_MINE_TIP},
-{   WIDGETS_END},
-};
-
-
-static const WindowDesc _build_industry_land0_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land0_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
+static const WindowDesc _build_industry_dynamic_desc = {
+	WDP_AUTO, WDP_AUTO, 170, 212,
 	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land1_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land2_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land3_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land0_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 188,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land0_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 175,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land1_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 201,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land2_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 188,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land3_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc * const _industry_window_desc[2][4] = {
-	{
-	&_build_industry_land0_desc,
-	&_build_industry_land1_desc,
-	&_build_industry_land2_desc,
-	&_build_industry_land3_desc,
-	},
-	{
-	&_build_industry_land0_desc_extra,
-	&_build_industry_land1_desc_extra,
-	&_build_industry_land2_desc_extra,
-	&_build_industry_land3_desc_extra,
-	},
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
+	_build_dynamic_industry_widgets,
+	BuildDynamicIndustryWndProc,
 };
 
 void ShowBuildIndustryWindow()
 {
-	if (!IsValidPlayer(_current_player)) return;
-	AllocateWindowDescFront(_industry_window_desc[(_patches.raw_industry_construction == 0) ? 0 : 1][_opt_ptr->landscape], 0);
+	if (_game_mode != GM_EDITOR && !IsValidPlayer(_current_player)) return;
+	AllocateWindowDescFront(&_build_industry_dynamic_desc, 0);
 }
 
+static void UpdateIndustryProduction(Industry *i);
+
 static inline bool isProductionMinimum(const Industry *i, int pt) {
 	return i->production_rate[pt] == 1;
 }
@@ -299,14 +363,57 @@
 	 * WP(w,vp2_d).data_3 is for the click pos (left or right) */
 
 	switch (e->event) {
+	case WE_CREATE: {
+		/* Count the number of lines that we need to resize the GUI with */
+		const IndustrySpec *ind = GetIndustrySpec(GetIndustry(w->window_number)->type);
+		int lines = -3;
+
+		if (HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) {
+			for (uint j = 0; j < 3 && ind->accepts_cargo[j] != CT_INVALID; j++) {
+				if (j == 0) lines++;
+				lines++;
+			}
+		} else if (ind->accepts_cargo[0] != CT_INVALID) {
+			lines++;
+		}
+
+		for (uint j = 0; j < 2 && ind->produced_cargo[j] != CT_INVALID; j++) {
+			if (j == 0) {
+				if (ind->accepts_cargo[0] != CT_INVALID) lines++;
+				lines++;
+			}
+			lines++;
+		}
+
+		if (HASBIT(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) lines += 2;
+
+		for (uint j = 5; j <= 7; j++) {
+			if (j != 5) w->widget[j].top += lines * 10;
+			w->widget[j].bottom += lines * 10;
+		}
+		w->height += lines * 10;
+	} break;
+
 	case WE_PAINT: {
-		const Industry *i = GetIndustry(w->window_number);
+		Industry *i = GetIndustry(w->window_number);
 		const IndustrySpec *ind = GetIndustrySpec(i->type);
+		int y = 111;
 
 		SetDParam(0, w->window_number);
 		DrawWindowWidgets(w);
 
-		if (ind->accepts_cargo[0] != CT_INVALID) {
+		if (HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) {
+			for (uint j = 0; j < 3 && ind->accepts_cargo[j] != CT_INVALID; j++) {
+				if (j == 0) {
+					DrawString(2, y, STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING, 0);
+					y += 10;
+				}
+				SetDParam(0, ind->accepts_cargo[j]);
+				SetDParam(1, i->incoming_cargo_waiting[j]);
+				DrawString(4, y, STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO, 0);
+				y += 10;
+			}
+		} else if (ind->accepts_cargo[0] != CT_INVALID) {
 			StringID str;
 
 			SetDParam(0, GetCargo(ind->accepts_cargo[0])->name);
@@ -319,39 +426,44 @@
 					str = STR_4829_REQUIRES;
 				}
 			}
-			DrawString(2, 107, str, 0);
+			DrawString(2, y, str, 0);
+			y += 10;
 		}
 
-		if (ind->produced_cargo[0] != CT_INVALID) {
-			DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
+		for (uint j = 0; j < 2 && ind->produced_cargo[j] != CT_INVALID; j++) {
+			if (j == 0) {
+				if (ind->accepts_cargo[0] != CT_INVALID) y += 10;
+				DrawString(2, y, STR_482A_PRODUCTION_LAST_MONTH, 0);
+				y += 10;
+			}
 
-			SetDParam(0, ind->produced_cargo[0]);
-			SetDParam(1, i->last_month_production[0]);
+			SetDParam(0, ind->produced_cargo[j]);
+			SetDParam(1, i->last_month_production[j]);
 
-			SetDParam(2, i->last_month_pct_transported[0] * 100 >> 8);
-			DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
+			SetDParam(2, i->last_month_pct_transported[j] * 100 >> 8);
+			DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), y, STR_482B_TRANSPORTED, 0);
 			/* Let's put out those buttons.. */
 			if (IsProductionAlterable(i)) {
-				DrawArrowButtons(5, 127, 3, (WP(w, vp2_d).data_2 == 1) ? WP(w, vp2_d).data_3 : 0,
-						!isProductionMinimum(i, 0), !isProductionMaximum(i, 0));
+				DrawArrowButtons(5, y, 3, (WP(w, vp2_d).data_2 == j + 1) ? WP(w, vp2_d).data_3 : 0,
+						!isProductionMinimum(i, j), !isProductionMaximum(i, j));
 			}
+			y += 10;
+		}
 
-			if (ind->produced_cargo[1] != CT_INVALID) {
-				SetDParam(0, ind->produced_cargo[1]);
-				SetDParam(1, i->last_month_production[1]);
-				SetDParam(2, i->last_month_pct_transported[1] * 100 >> 8);
-				DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
-				/* Let's put out those buttons.. */
-				if (IsProductionAlterable(i)) {
-					DrawArrowButtons(5, 137, 3, (WP(w, vp2_d).data_2 == 2) ? WP(w, vp2_d).data_3 : 0,
-						!isProductionMinimum(i, 1), !isProductionMaximum(i, 1));
+		/* Get the extra message for the GUI */
+		if (HASBIT(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) {
+			uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->xy);
+			if (callback_res != CALLBACK_FAILED) {
+				StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
+				if (message != STR_NULL && message != STR_UNDEFINED) {
+					y += 10;
+					DrawString(2, y, message, 0);
 				}
 			}
 		}
 
 		DrawWindowViewport(w);
-		}
-		break;
+	} break;
 
 	case WE_CLICK: {
 		Industry *i;
@@ -366,8 +478,8 @@
 			if (!IsProductionAlterable(i)) return;
 
 			x = e->we.click.pt.x;
-			line = (e->we.click.pt.y - 127) / 10;
-			if (e->we.click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) &&
+			line = (e->we.click.pt.y - 121) / 10;
+			if (e->we.click.pt.y >= 121 && IS_INT_INSIDE(line, 0, 2) &&
 					GetIndustrySpec(i->type)->produced_cargo[line] != CT_INVALID) {
 				if (IS_INT_INSIDE(x, 5, 25) ) {
 					/* Clicked buttons, decrease or increase production */
--- a/src/lang/american.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/american.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Deliver cargo to a station only when there is a demand: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Allow building very long bridges: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Allow goto depot orders: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Manual primary industry construction method: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :none
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :as other industries
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecting
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Allow multiple similar industries per town: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industries of the same type can be built close to each other: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Always show long date in the status bar: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Are you sure you want to create a random landscape?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Many random towns
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES                                      :Many random industries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cover the map with randomly placed industries
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Can't generate industries...
 
@@ -1976,6 +1980,7 @@
 STR_4829_REQUIRES                                               :{BLACK}Requires: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Production last month:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transported)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Center the main view on industry location
--- a/src/lang/brazilian_portuguese.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Tem certeza que deseja criar um terreno aleatório?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Várias cidades aleatórias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES                                      :Várias indústrias aleatórias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Impossível gerar indústrias...
 
@@ -1984,6 +1984,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Carga aguardando processamento
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produz: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produz: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produção no mês passado:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centralizar visualização na localização da indústria
@@ -3373,3 +3380,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Placa anterior
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Fundar
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prosperir
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Escolha a indústria apropriada
--- a/src/lang/bulgarian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/bulgarian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1036,6 +1036,9 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Доставяне на стока до станция само ако има търсене: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Строене на много дълги мостове: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Сервиз в маршрута: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :нищо
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :като други промишлености
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :предстоящ
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Няколко еднакви индустрии на град: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Индустрии от еднакъв тип могат да бъдат строени близо една до друга: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Показване на дълга дата в статус бара: {ORANGE}{STRING}
@@ -1112,6 +1115,9 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Електрифицирани релси
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Еднорелси
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Магниторелси
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :Първо на разположение
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Последно на разположение
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Най-много използван
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Макс. влакове на играч: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Макс. брой коли на играч: {ORANGE}{STRING}
@@ -1235,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Потвърдете създаването на случаен терен?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Много случайни градове
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Покриване на картата със случайно поставени градове
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Много случайни индустрии
+STR_MANY_RANDOM_INDUSTRIES                                      :Много случайни индустрии
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Покриване на картата със случайно поставени индустрии
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Не може да се генерира промишленост...
 
@@ -1649,6 +1655,7 @@
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Автогарата не може да се построи...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Товарната гара не може да се построи...
 STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Товарна трамвайна гара неможе да бъде построена...
 STR_180A_ROAD_CONSTRUCTION                                      :Пътно строителство
 STR_180A_TRAMWAY_CONSTRUCTION                                   :Конструкциа на трамвайна линиа
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Строене на път
@@ -1894,6 +1901,7 @@
 STR_3805_COAST_OR_RIVERBANK                                     :Бряг или поречие
 STR_3806_SHIP_DEPOT                                             :Корабно депо
 STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...Не може да бъде построено във водата
+STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Трябва да разрушиш каналът първо
 
 ##id 0x4000
 STR_4000_SAVE_GAME                                              :{WHITE}Запази играта
@@ -1906,6 +1914,11 @@
 STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Запазването на играта е неуспешно{}{STRING}
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Изтриването на файла е неуспешно
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Отварянето на играта е неуспешно{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Вътрешна грешка: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Запазената игра е повредена - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Запазената игра е направена от по-нова версия
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Фаилат е непрочетим
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Фаилат е неписуем
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Списък с хард-дисковете, директориите и запазените игри
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Избрано име за запазена игра
 STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Изтрий избраната запазената игра
@@ -1962,6 +1975,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Нуждае се от: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Товар чакащ до бъде преработен:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Произвежда: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Произвежда: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Произведено миналия месец:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% превозено)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Центриране главния прозорец върху индустрията
@@ -2076,6 +2096,7 @@
 STR_SV_STNAME_LOWER                                             :Долно {STRING}
 STR_SV_STNAME_HELIPORT                                          :{STRING} Хелипорт
 STR_SV_STNAME_FOREST                                            :{STRING} Дървета
+STR_SV_STNAME_FALLBACK                                          :{STRING} Гара #{NUM}
 
 ############ end of savegame specific region!
 
@@ -2608,6 +2629,9 @@
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Ремонт без спиране в {TOWN} влаково депо
 
 STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_FOR                                        :Патувай за {STRING}
+STR_TIMETABLE_STAY_FOR                                          :и остани за {STRING}
+STR_TIMETABLE_DAYS                                              :{COMMA} ден{P "" s}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Отиващ към Влаковото депо на {TOWN}
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Отиващ към Влаковото депо на {TOWN}, {VELOCITY}
@@ -2650,6 +2674,7 @@
 STR_REFIT                                                       :{BLACK}Преустройство
 STR_REFIT_TIP                                                   :{BLACK}Избор какво преустройсто да се направи. Щракване със задържан контрол премахва инструкцията
 STR_REFIT_ORDER                                                 :(Преустройство към {STRING})
+STR_TIMETABLE_VIEW                                              :{BLACK}Разписание
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Заповеди)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Край на Заповедите - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
@@ -2723,6 +2748,7 @@
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Не може да се преименува влак...
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Изхвърляне на товара при достигане на избраното назначение
 STR_886F_TRANSFER                                               :{BLACK}Транфер
+STR_CLEAR_TIME                                                  :{BLACK}Изчисти времето
 
 STR_TRAIN_STOPPING                                              :{RED}Спира
 STR_TRAIN_STOPPING_VEL                                          :{RED}Спира, {VELOCITY}
@@ -2734,6 +2760,8 @@
 STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Нов {STRING} е на разположение! - {ENGINE}
 
+STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Промени времето
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Афтонапълване
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Кола на пътя
@@ -2776,6 +2804,7 @@
 STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Списък с избор на МПС-та - натисни върху МПС за информация
 STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Купи посоченото МПС
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Цена: {CURRENCY}{}Скорост: {VELOCITY}{}Оперативен разход: {CURRENCY}/год{}Вместимост: {CARGO}
+STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Капацитет: {LTBLUE}
 STR_BARE_CARGO                                                  :{CARGO}
 
 STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Преименувай МПС-то
@@ -2943,6 +2972,7 @@
 STR_GO_TO_AIRPORT_HANGAR                                        :Отиди до Хангара на летище {STATION}
 SERVICE_AT_AIRPORT_HANGAR                                       :Сервиз в {STATION} хангар
 
+STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Разписание)
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Катастрофа с Цепелин на {STATION}!
@@ -3310,7 +3340,14 @@
 STR_SIGN_NAME                                                   :{SIGN}
 STR_VEHICLE_NAME                                                :{VEHICLE}
 
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Името трябва да е уникално
 
 #### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Отиди до следващиат знак
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Отиди до предишниат знак
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Фонд
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Перспектива
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Построи
--- a/src/lang/catalan.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/catalan.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -215,7 +215,7 @@
 STR_00F5_TRAINS                                                 :{BLACK}{TINYFONT}Trens
 STR_00F6_ROAD_VEHICLES                                          :{BLACK}{TINYFONT}Vehicles de carretera
 STR_00F7_SHIPS                                                  :{BLACK}{TINYFONT}Vaixells
-STR_00F8_AIRCRAFT                                               :{BLACK}{TINYFONT}Aeronaus
+STR_00F8_AIRCRAFT                                               :{BLACK}{TINYFONT}Avions
 STR_00F9_TRANSPORT_ROUTES                                       :{BLACK}{TINYFONT}Rutes de Transport
 STR_00FA_COAL_MINE                                              :{BLACK}{TINYFONT}Mina de Carbó
 STR_00FB_POWER_STATION                                          :{BLACK}{TINYFONT}Central Tèrmica
@@ -443,7 +443,7 @@
 STR_017B_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Mostra la llista de trens de l'empresa
 STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Mostra la llista de vehicles de l'empresa
 STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Mostra la llista de vaixells de l'empresa
-STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Mostra la llista d'aeronaus de l'empresa
+STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Mostra la llista d'avions de l'empresa
 STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Apropar-se
 STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Allunyar-se
 STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Construeix vies
@@ -481,7 +481,7 @@
 ############ range for service numbers ends
 
 STR_019C_ROAD_VEHICLE                                           :Vehicle
-STR_019D_AIRCRAFT                                               :Aeronau
+STR_019D_AIRCRAFT                                               :Avió
 STR_019E_SHIP                                                   :Vaixell
 STR_019F_TRAIN                                                  :Tren
 STR_01A0_IS_GETTING_OLD                                         :{WHITE}{STRING} {COMMA} s'està envellint
@@ -852,14 +852,14 @@
 STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Selecciona l'estil de paisatge 'subàrtic'
 STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Selecciona l'estil de paisatge 'subtropical'
 STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Selecciona l'estil de paisatge 'toyland'
-STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Patrocina la construcció d'una nova indústria
+STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Financia la construcció d'una nova indústria
 
 ############ range for menu starts
 STR_INDUSTRY_DIR                                                :Directori d'indústries
-STR_0313_FUND_NEW_INDUSTRY                                      :Patrocina una nova indústria
+STR_0313_FUND_NEW_INDUSTRY                                      :Financia una nova indústria
 ############ range ends here
 
-STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Patrocina una nova indústria
+STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Financia una nova indústria
 STR_JUST_STRING                                                 :{STRING}
 STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...només es pot construir en poblacions
 STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST                        :{WHITE}...només es pot construir en àrees de selva tropical
@@ -1001,16 +1001,16 @@
 STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Vaixell {COMMA} té una ordre buida
 STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Vaixell {COMMA} té ordres duplicades
 STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Vaixell {COMMA} té una estació incorrecta en les ordres
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Aeronau {COMMA} té massa poques ordres a la planificació
-STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Aeronau {COMMA} té una ordre buida
-STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Aeronau {COMMA} has duplicate orders
-STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Aeronau {COMMA} té una estació incorrecta en les ordres
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}L'avió {COMMA} té massa poques ordres a la planificació
+STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}L'avió {COMMA} té una ordre buida
+STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}L'avió {COMMA} té ordres duplicades
+STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}L'avió {COMMA} té una estació incorrecta a les ordres
 # end of order system
 
 STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Autorenovació ha fallat al tren {COMMA} (límit de diners)
 STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Autorenovació ha fallat a l'automòbil {COMMA} (límit de diners)
 STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Autorenovació ha fallat al vaixell {COMMA} (límit de diners)
-STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Autorenovació ha fallat a l'aeronau {COMMA} (límit de diners)
+STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}L'autorenovació ha fallat en l'avió {COMMA} (límit de diners)
 STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}El tren {COMMA} és massa llarg després del canvi
 
 STR_CONFIG_PATCHES                                              :{BLACK}Configura Pedaços
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Entrega càrreges en una estació només quan ho demana: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Permet construir ponts molt llargs: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Permet ordres anar a cotxeres: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Mètode de construcció de la indústria primària manual: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :cap
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :com les altres indústries
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospeccionant
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Permet vàries indústries similars per població: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Permet construir a prop indústries del mateix tipus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Mostra sempre la data llarga a la barra d'estat: {ORANGE}{STRING}
@@ -1117,12 +1121,12 @@
 STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Mostra les eines de construcció quan no hi hagi disponibles vehicles adequats: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Max trens per jugador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Max automòbils per jugador: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Max aeronaus per jugador: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Max avions per jugador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Max vaixells per jugador: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_AI_BUILDS_TRAINS                             :{LTBLUE}Desactiva trens per l'ordinador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH                            :{LTBLUE}Desactiva automòbils per a l'ordinador: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT                           :{LTBLUE}Desactiva aeronaus per l'ordinador: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT                           :{LTBLUE}Desactiva els avions per l'ordinador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_AI_BUILDS_SHIPS                              :{LTBLUE}Desactiva vaixells per l'ordinador: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_AINEW_ACTIVE                                 :{LTBLUE}Activa nova IA (alfa): {ORANGE}{STRING}
@@ -1132,8 +1136,8 @@
 STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Interval de manteniment per defecte dels trens: {ORANGE}desactivat
 STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Interval de manteniment per defecte dels automòbils: {ORANGE}{STRING} dies/%
 STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Interval de manteniment per defecte dels automòbils: {ORANGE}desactivat
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}{STRING} dies/%
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}desactivat
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Interval de manteniment per defecte dels avions: {ORANGE}{STRING} dies/%
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Interval de manteniment per defecte dels avions: {ORANGE}desactivat
 STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}{STRING} dies/%
 STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}desactivat
 STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Desactiva manteniment quan les avaries s'estableixen a cap: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Estàs segur que vols crear un paisatge aleatori?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Moltes poblacions aleatòries
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Omple el mapa amb poblacions situades aleatòriament
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Moltes indústries aleatòries
+STR_MANY_RANDOM_INDUSTRIES                                      :Moltes indústries aleatòries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Omple el mapa amb indústries situades aleatòriament
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}No es poden generar indústries...
 
@@ -1281,21 +1285,21 @@
 STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Construeix Mina de Carbó
 STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Planta un Bosc
 STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Construeix una Plataforma Petrolífera
-STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Funda Granja
+STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Financia Granja
 STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Construeix una Mina de Coure
 STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Perfora per buscar Petroli
 STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Construeix una Mina d'Or
 STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Construeix una Mina de Diamants
 STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Construeix una Mina de Ferro
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Funda Plantació de Fruita
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Funda Plantació de Cautxú
-STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Funda Surtidor d'Aigua
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Financia Plantació de Fruita
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Financia Plantació de Cautxú
+STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Financia Surtidor d'Aigua
 STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Planta un Bosc de Cotó de Sucre
-STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Funda Granja de Piles
+STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Financia Granja de Piles
 STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}Perfora per buscar Cola
-STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Funda Fonts de Plàstic
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Financia Fonts de Plàstic
 STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}Construeix un Generador de Bombolles
-STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Funda Cantera de Caramel
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Financia Cantera de Caramel
 STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Construeix una Mina de Sucre
 
 STR_INDUSTRYDIR_CAPTION                                         :{WHITE}Indústries
@@ -1758,17 +1762,17 @@
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Petita campanya de publicitat
 STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Mitjana campanya de publicitat
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Gran campanya de publicitat
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Patrocina la reconstrucció dels carrers de la població
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Financia la reconstrucció dels carrers de la població
 STR_204A_BUILD_STATUE_OF_COMPANY                                :Construeix una estàtua del propietari de l'empresa
-STR_204B_FUND_NEW_BUILDINGS                                     :Patrocina nous edificis
+STR_204B_FUND_NEW_BUILDINGS                                     :Financia nous edificis
 STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Compra els drets de transport en exclusiva
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Suborna les autoritats locals
 STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Inicia una petita campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}  Cost: {CURRENCY}
 STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Inicia una mitjana campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}  Cost: {CURRENCY}
 STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Inicia una gran campanya de publicitat, per atraure més passatgers i càrregues als teus serveis de transport.{}  Cost: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Patrocina la reconstrucció de la xarxa local de carrers. Causa una notable distorsió del trànsit durant 6 mesos.{}  Cost: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Financia la reconstrucció de la xarxa local de carrers. Dificulta notablement el trànsit durant 6 mesos.{}  Cost: {CURRENCY}
 STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Construeix una estatua en honor a la teva empresa.{} Cost: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Patrocina la construcció de nous edificis comercials en la població.{}  Cost: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Financia la construcció de nous edificis comercials a la població.{}  Cost: {CURRENCY}
 STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Compra per 1 any els drets exclusius de transport en la població. La autoritat local només permetrà utilitzar les instal·lacions de la teva empresa de transports als passatgers i les mercaderies.{} Cost: {CURRENCY}
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Suborna les autoritats locals per incrementar el teu rati, a risc de greus penalitzacions si et pesquen!!.{}  Cost: {CURRENCY}
 STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Caos de trànsit en  {TOWN}!{}{}El programa de rehabilitació dels carrers patrocinat per {COMPANY} porta 6 mesos de misèria als motoristes!
@@ -1874,7 +1878,7 @@
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
 STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
 STR_305E_RAILROAD_STATION                                       :Estació de Ferrocarril
-STR_305F_AIRCRAFT_HANGAR                                        :Hangar d'Aeronaus
+STR_305F_AIRCRAFT_HANGAR                                        :Hangar d'Avions
 STR_3060_AIRPORT                                                :Aeroport
 STR_3061_TRUCK_LOADING_AREA                                     :Àrea de càrrega de camions
 STR_3062_BUS_STATION                                            :Parada d'autobús
@@ -1976,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Necessita: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Càrrega en espera de ser processada:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produeix: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produeix: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Producció del darrer mes:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centra la pantalla principal al lloc de l'indústria
@@ -2055,7 +2066,7 @@
 STR_SV_TRAIN_NAME                                               :Tren {COMMA}
 STR_SV_ROADVEH_NAME                                             :Vehicle {COMMA}
 STR_SV_SHIP_NAME                                                :Vaixell {COMMA}
-STR_SV_AIRCRAFT_NAME                                            :Aeronau {COMMA}
+STR_SV_AIRCRAFT_NAME                                            :Avió {COMMA}
 
 STR_SV_STNAME                                                   :{STRING}
 STR_SV_STNAME_NORTH                                             :{STRING} Nort
@@ -2189,12 +2200,12 @@
 STR_7012_NEW_VEHICLES                                           :{GOLD}Nous Vehicles
 STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Desp. de Circ. de Trens
 STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. de Vehicles
-STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. d'Aeronaus
+STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. d'Avions
 STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Desp. de Circ. de Vaixells
 STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Manteniment de Propietats
 STR_7018_TRAIN_INCOME                                           :{GOLD}Ingressos de Tren
 STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Ingressos de Vehicles
-STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Ingressos d'Aeronaus
+STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Ingressos d'Avions
 STR_701B_SHIP_INCOME                                            :{GOLD}Ingressos de Vaixells
 STR_701C_LOAN_INTEREST                                          :{GOLD}Interessos del Prèstec
 STR_701D_OTHER                                                  :{GOLD}Altres
@@ -2230,7 +2241,7 @@
 STR_7039_VEHICLES                                               :{GOLD}Vehicles:
 STR_TRAINS                                                      :{WHITE}{COMMA} tren{P "" s}
 STR_ROAD_VEHICLES                                               :{WHITE}{COMMA} automòbil{P "" s}
-STR_AIRCRAFT                                                    :{WHITE}{COMMA} aeronau{P "" s}
+STR_AIRCRAFT                                                    :{WHITE}{COMMA} avió{P "" ns}
 STR_SHIPS                                                       :{WHITE}{COMMA} vaixell{P "" s}
 STR_7042_NONE                                                   :{WHITE}Cap
 STR_7043_FACE_SELECTION                                         :{WHITE}Selecció de cares
@@ -2593,7 +2604,7 @@
 STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Acabem de dissenyar el nou {STRING} - estàs interessat en fer ús exclusiu d'aquest vehicle durant un any, per veure com va, abans del seu llançament mundial ?
 STR_8102_RAILROAD_LOCOMOTIVE                                    :locomotora de tren
 STR_8103_ROAD_VEHICLE                                           :automòbil
-STR_8104_AIRCRAFT                                               :aeronau
+STR_8104_AIRCRAFT                                               :avió
 STR_8105_SHIP                                                   :vaixell
 STR_8106_MONORAIL_LOCOMOTIVE                                    :locomotora de monorail
 STR_8107_MAGLEV_LOCOMOTIVE                                      :locomotora de maglev
@@ -2754,7 +2765,7 @@
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Fer que l'ordre marcada forci al vehicle a volcar la càrrega
 STR_886F_TRANSFER                                               :{BLACK}Transf.
 STR_CLEAR_TIME                                                  :{BLACK}Esborra Temps
-STR_RESET_LATENESS                                              :{BLACK}Reseteja el comptador de retrassos
+STR_RESET_LATENESS                                              :{BLACK}Reset. comptador de retràs
 
 STR_TRAIN_STOPPING                                              :{RED}Parant
 STR_TRAIN_STOPPING_VEL                                          :{RED}Parant, a {VELOCITY}
@@ -2920,15 +2931,15 @@
 ##id 0xA000
 STR_A000_AIRPORTS                                               :{WHITE}Aeroports
 STR_A001_CAN_T_BUILD_AIRPORT_HERE                               :{WHITE}Aquí no es pot construir un aeroport...
-STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Hangar d'Aeronaus
-STR_A003_NEW_AIRCRAFT                                           :{BLACK}Nova Aeronau
-STR_CLONE_AIRCRAFT                                              :{BLACK}Clona Aeronau
-STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Fa una còpia de l'aeronau. Control-Clic compartirà les ordres
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Fa una còpia de l'aeronau. Prem aquest botó i després en una aeronau dins o fora l'hangar. Control-Clic compartirà les ordres
-STR_A005_NEW_AIRCRAFT                                           :{WHITE}Nova Aeronau
-STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Construeix Aeronau
-STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}No es pot construir l'aeronau...
-STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} Aeronaus
+STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Hangar d'Avions
+STR_A003_NEW_AIRCRAFT                                           :{BLACK}Nou Avió
+STR_CLONE_AIRCRAFT                                              :{BLACK}Clona Avió
+STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Fa una còpia de l'avió. Control-Clic compartirà les ordres
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Fa una còpia de l'avió. Prem aquest botó i després en un avió dins o fora l'hangar. Control-Clic compartirà les ordres
+STR_A005_NEW_AIRCRAFT                                           :{WHITE}Nou Avió
+STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Construeix Avió
+STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}No es pot construir l'avió...
+STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} Avions
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Ordres)
 STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Detalls)
@@ -2937,55 +2948,55 @@
 STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Benefici enguany: {LTBLUE}{CURRENCY}  (darrer any: {CURRENCY})
 STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Rendibilitat: {LTBLUE}{COMMA}%  {BLACK}Avaries des de l'últim manteniment: {LTBLUE}{COMMA}
 STR_A011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Construït: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
-STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}No es pot enviar l'aeronau a l'hangar...
+STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}No es pot enviar l'avió a l'hangar...
 STR_HEADING_FOR_HANGAR                                          :{ORANGE}Cap a l'hangar de {STATION}.
 STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Cap a l'hangar de {STATION}, a {VELOCITY}
 STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Revisió a l'hangar de {STATION}
 STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Revisió a l'hangar de {STATION}, {VELOCITY}
-STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}L' aeronau {COMMA} esperant a l'hangar
-STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Aeronau en el camí
-STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}No es pot parar/arrencar l'aeronau...
-STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Aeronau en vol
+STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}L'avió {COMMA} està esperant a l'hangar
+STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Avió al camí
+STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}No es pot parar/arrencar l'avió...
+STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}L'avió està volant
 STR_A019_CAPACITY                                               :{BLACK}Capacitat: {LTBLUE}{CARGO}, {CARGO}
 STR_A01A_CAPACITY                                               :{BLACK}Capacitat: {LTBLUE}{CARGO}
-STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}L' aeronau s'ha de parar a l'hangar
-STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}No es pot vendre l' aeronau...
+STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}L'avió s'ha de parar a l'hangar
+STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}No es pot vendre l'avió...
 STR_A01D_AIRPORT_CONSTRUCTION                                   :Construcció d'Aeroport
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Construeix un aeroport
-STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aeronau - clica en l'aeronau per informació
-STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Construeix noves aeronaus (necessites un aeroport amb hangar)
-STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aeronau - clica en l' aeronau per informació
-STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Construeix noves aeronaus
-STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Arrossega l'aeronau fins aquí per vendre-la
+STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Avió - clica sobre l'avió per informació
+STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Construeix nous avions (necessites un aeroport amb hangar)
+STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Avió - clica sobre l'avió per informació
+STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Construeix nous avions
+STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Arrossega l'avió fins aquí per vendre'l
 STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Centra la pantalla principal en la situació de l'hangar
-STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Llista de selecció d'Aeronaus - clica en una aeronau per informació
-STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Construeix l'aeronau seleccionada
-STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Accions sobre l'aeronau actual - clica aquí per parar/arrencar l'aeronau
-STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Mostra les ordres de l'aeronau
-STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Centra la pantalla principal a la situació de l'aeronau
-STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Envia aeronau a l'hangar
-STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Mostra els detalls de l'aeronau
+STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Llista de selecció d'Avions - clica sobre l'avió per informació
+STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Construeix l'avió seleccionat
+STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Accions sobre l'avió actual - clica aquí per parar/arrencar l'avió
+STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Mostra les ordres de l'avió
+STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Centra la pantalla principal a la situació de l'avió
+STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Envia avió a l'hangar
+STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Mostra els detalls de l'avió
 STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Cost: {CURRENCY} Max. Velocitat: {VELOCITY}{}Capacitat: {COMMA} passatgers, {COMMA} sacs de correu{}Cost de Circulació: {CURRENCY}/any
 
-STR_A030_NAME_AIRCRAFT                                          :{WHITE}Anomena aeronau
-STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}No es pot anomenar aeronaus...
-STR_A032_NAME_AIRCRAFT                                          :{BLACK}Anomena aeronau
-STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Celebració popular . . .{}La primera aeronau arriba a {STATION}!
+STR_A030_NAME_AIRCRAFT                                          :{WHITE}Anomena avió
+STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}No es pot anomenar l'avió...
+STR_A032_NAME_AIRCRAFT                                          :{BLACK}Anomena avió
+STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Celebració popular . . .{}El primer avió arriba a {STATION}!
 STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Accident d'avió!{}{COMMA} moren en una bola de foc a {STATION}
-STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Accident d'aviació!{}Aeronau sense combustible, {COMMA} morts en una bola de foc!
+STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Accident d'aviació!{}L'avió s'ha quedat sense combustible, {COMMA} morts en l'accident!
 STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
 STR_A037_RENAME                                                 :{BLACK}Reanomena
-STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Reanomena tipus d'aeronau
-STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Reanomena tipus d'aeronau
-STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}No es pot reanomenar tipus d'aeronau...
-STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Remodela aeronaus per transportar diferent tipus de càrrega
+STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Reanomena tipus d'avió
+STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Reanomena tipus d'avió
+STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}No es pot reanomenar el tipus d'avió...
+STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Remodela avions per poder transportar diferents tipus de càrrega
 STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Remodela)
-STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Remodela aeronau
+STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Remodela avió
 STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Selecciona tipus de càrrega a transportar
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Remodela aeronau per transportar el tipus de càrrega seleccionat
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Remodela l'avió per poder transportar el tipus de càrrega seleccionat
 STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Selecciona el tipus de càrrega a transportar:
 STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Nova capacitat: {GOLD}{STRING}{}{BLACK}Cost de la remodelació: {GOLD}{CURRENCY}
-STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}No es pot remodelar l'aeronau...
+STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}No es pot remodelar l'avió...
 STR_GO_TO_AIRPORT_HANGAR                                        :Ves a l'hangar de {STATION}.
 SERVICE_AT_AIRPORT_HANGAR                                       :Manteniment en l'hangar de {STATION}.
 
@@ -3022,7 +3033,7 @@
 STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Prèstec:
 STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Total:
 ############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Quantitat de vehicles. Inclou els automòbils, trens, vaixells i aeronaus.
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Quantitat de vehicles. Inclou els automòbils, trens, vaixells i avions.
 STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Quantitat de parts d'estacions. Cada part d'una estació es compta (ex. estació de tren, parada d'autobus, aeroport), encara que estigui connectada a una altra estació.
 STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}El benefici del vehicle amb els menors ingressos (de tots els vehicles més antics de 2 anys)
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Quantitat de diners fets durant el mes amb el mínim benefici dels darrers 12 trimestres
@@ -3102,13 +3113,13 @@
 
 STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} Trens
 STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} Vehicles
-STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Aeronaus
+STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Avions
 STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Vaixells
 
-STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Mostra tots els trens que tinguin aquesta estació al seu itinerari
-STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Mostra tots els vehicles que tinguin aquesta estació al seu itinerari
-STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Mostra totes les aeronaus que tinguin aquest aeroport al seu itinerari
-STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Mostra tots els vaixells que tinguin aquest port al seu itinerari
+STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Mostra tots els trens que tinguin aquesta estació en el seu itinerari
+STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Mostra tots els vehicles que tinguin aquesta estació en el seu itinerari
+STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Mostra tots els avions que tinguin aquest aeroport en el seu itinerari
+STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Mostra tots els vaixells que tinguin aquest port en el seu itinerari
 
 STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Ordres compartides de {COMMA} Vehicle{P "" s}
 STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Mostra tots els vehicles que tenen les mateixes ordres
@@ -3125,7 +3136,7 @@
 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Treure una llista de tots els trens amb aquesta cotxera en les seves ordres
 STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Treure una llista de tots els vehicles amb aquesta cotxera en les seves ordres
 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Treure una llista de tots els vaixells amb aquesta drassana en les seves ordres
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Treu una llista de tots les aeronaus amb algun hangar en aquest aeroport en les seves ordres
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Treu una llista de tots els avions amb algun hangar d'aquest aeroport en les seves ordres
 
 STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Autosubstitueix tots els trens de la cotxera
 STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Autosubstitueix tots els vehicles de la cotxera
@@ -3266,10 +3277,10 @@
 
 ########### String for new airports
 STR_SMALL_AIRPORT                                               :{BLACK}Petit
-STR_CITY_AIRPORT                                                :{BLACK}Ciutadà
+STR_CITY_AIRPORT                                                :{BLACK}de Ciutat
 STR_METRO_AIRPORT                                               :{BLACK}Metropolità
 STR_INTERNATIONAL_AIRPORT                                       :{BLACK}Internacional
-STR_COMMUTER_AIRPORT                                            :{BLACK}Viatjer
+STR_COMMUTER_AIRPORT                                            :{BLACK}Regional
 STR_INTERCONTINENTAL_AIRPORT                                    :{BLACK}Intercontinental
 STR_HELIPORT                                                    :{BLACK}Heliport
 STR_HELIDEPOT                                                   :{BLACK}Helihangar
@@ -3321,7 +3332,7 @@
 STR_GROUP_ALL_TRAINS                                            :Tots els trens
 STR_GROUP_ALL_ROADS                                             :Tots els vehicles
 STR_GROUP_ALL_SHIPS                                             :Tots els vaixells
-STR_GROUP_ALL_AIRCRAFTS                                         :Totes les aeronaus
+STR_GROUP_ALL_AIRCRAFTS                                         :Tots els avions
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Afegeix vehicles compartits
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Treu tots els vehicles
@@ -3329,7 +3340,7 @@
 STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Tren{P "" s}
 STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Vehicle{P "" s}
 STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Vaixell{P "" s}
-STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aeronau
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Avió
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}Canvia de nom el grup
 STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Substitueix els Vehicles de "{GROUP}"
 
@@ -3365,3 +3376,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ves a la senyal anterior
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Financia
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospecciona
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construeix
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Escolleix el tipus d'indústria adequada d'aquesta llista
--- a/src/lang/croatian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/croatian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1236,7 +1236,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Jeste li sigurni da želite napraviti nasumični krajolik?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mnogo nasumičnih gradova
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Popuni kartu nasumce smještenim gradovima
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mnoge nasumične industrije
+STR_MANY_RANDOM_INDUSTRIES                                      :Mnoge nasumične industrije
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Popuni kartu nasumce smještenim industrijama
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne možeš generirati gospodarstva...
 
--- a/src/lang/czech.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/czech.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -836,6 +836,7 @@
 STR_02C5_DIFFICULTY_SETTINGS                                    :Nastavení obtížnosti
 STR_02C7_CONFIG_PATCHES                                         :Nastavení patchů
 STR_NEWGRF_SETTINGS                                             :Nastavení newgrf
+STR_TRANSPARENCY_OPTIONS                                        :Nastavení průhlednosti
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Zobrazení jmen měst
 STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Zobrazení jmen stanic
@@ -863,7 +864,6 @@
 STR_02DE_MAP_OF_WORLD                                           :Mapa světa
 STR_EXTRA_VIEW_PORT                                             :Další pohled
 STR_SIGN_LIST                                                   :Seznam popisků
-STR_TRANSPARENCY_OPTIONS                                        :Nastavení průhlednosti
 STR_02DF_TOWN_DIRECTORY                                         :Seznam měst
 STR_TOWN_POPULATION                                             :{BLACK}Populace světa: {COMMA}
 STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Pohled {COMMA}
@@ -1092,6 +1092,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Vozit zboží do stanice jen když je poptávka: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Povolit stavbu velmi dlouhých mostů: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Povolit příkaz 'jeď do depa': {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Způsob manuálního budování průmyslu těžby surovin: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :žádný
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :jako u ostatniho průmyslu
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :průzkum
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Povolit více stejného průmyslu kolem jednoho města: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Průmysl stejného druhu může být budován poblíž sebe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Ukazovat dlouhé datum ve stavové liště: {ORANGE}{STRING}
@@ -1160,7 +1164,19 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rychlost skrolovacího kolečka: {ORANGE}{STRING}
 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_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
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Elektrifikované koleje
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Monorail
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Maglev
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :První dostupný
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Nejlepší dostupný
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Nejpoužívanější
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Zobrazit nástroje pro budování i bez dostupných vozidel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maximum vlaků na hráče: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximum silničních vozidel na hráče: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Maximum letadel na hráče: {ORANGE}{STRING}
@@ -1283,7 +1299,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Opravdu chceš vytvořit nový náhodný terén?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Hodně náhodných měst
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryje krajinu mnoha náhodnými městy
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Hodně náhodného průmyslu
+STR_MANY_RANDOM_INDUSTRIES                                      :Hodně náhodného průmyslu
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryje krajinu náhodným průmyslem
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nemůžu generovat průmysl...
 
@@ -1948,6 +1964,7 @@
 STR_3805_COAST_OR_RIVERBANK                                     :Pobřeží nebo břeh
 STR_3806_SHIP_DEPOT                                             :Lodní depo
 STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}... nemohu stavět na vodě
+STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Nejprve je třeba zničit průplav
 
 ##id 0x4000
 STR_4000_SAVE_GAME                                              :{WHITE}Uložit hru
@@ -1960,6 +1977,11 @@
 STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Uložení hry selhalo{}{STRING}
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Nemohu smazat soubor
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Nemohu otevřít hru{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Interní chyba: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Poškozená hra - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Uložená hra je z novější verze
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Soubor je nečitelný
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Do souboru nelze zapisovat
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Seznam jednotek, adresářů a uložených her
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Zvolené jméno uložené hry
 STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Smazat označenou uloženou hru
@@ -2016,6 +2038,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Vyžaduje: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Náklad čekající na zpracování:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produkce minulý měsíc:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA} % přepraveno)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Nastavit pohled na průmysl
@@ -2130,8 +2155,7 @@
 STR_SV_STNAME_LOWER                                             :dolní {STRING}
 STR_SV_STNAME_HELIPORT                                          :{STRING} heliport
 STR_SV_STNAME_FOREST                                            :{STRING} les
-
-
+STR_SV_STNAME_FALLBACK                                          :{STRING} Stanice #{NUM}
 
 ############ end of savegame specific region!
 
@@ -2669,6 +2693,13 @@
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Jet bez zastavení do železničního depa {TOWN}
 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_STAY_FOR                                          :a zůstat {STRING}
+STR_TIMETABLE_DAYS                                              :{COMMA} d{P en ny nů}
+STR_TIMETABLE_TICKS                                             :{COMMA} cykl{P us y ů}
+
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Jedu do železničního depa {TOWN}
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Jedu do železničního depa {TOWN}, {VELOCITY}
 STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Údržba v železničním depu {TOWN}
@@ -2710,6 +2741,8 @@
 STR_REFIT                                                       :{BLACK}Přestavět
 STR_REFIT_TIP                                                   :{BLACK}Vyber, na který druh nákladu přestavět. CTRL-klik odstraní přestavbu z příkazu.
 STR_REFIT_ORDER                                                 :(Přestavět na {STRING})
+STR_TIMETABLE_VIEW                                              :{BLACK}Jízdní řád
+STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Přepnout na jízdní řád
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Příkazy)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Konec příkazů - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
@@ -2766,6 +2799,10 @@
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Vložit nový příkaz před označený příkaz nebo na konec seznamu
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Označený příkaz provádět do plného naložení
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Označený příkaz vyloží vozidlo
+STR_TIMETABLE_TOOLTIP                                           :{BLACK}Jízdní řád - příkaz vybrat kliknutím.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Změnit čas pro splnění jízdního příkazu
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Zrušit čas pro splnění jízdního příkazu
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Smazat ukazatel zpoždění, takže vozidlo pojede na čas
 STR_SERVICE_HINT                                                :{BLACK}Přeskoč tento cíl, pokud není potřeba pravidelná údržba
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Cena: {CURRENCY} Hmotnost: {WEIGHT_S}{}Rychlost: {VELOCITY}  Výkon: {POWER}{}Cena provozu: {CURRENCY} ročně{}Kapacita: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Porucha
@@ -2787,6 +2824,8 @@
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nemohu přejmenovat typ železničního vozidla...
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}U označeného příkazu vozidlo musí vyložit náklad
 STR_886F_TRANSFER                                               :{BLACK}Překládka
+STR_CLEAR_TIME                                                  :{BLACK}Smazat čas
+STR_RESET_LATENESS                                              :{BLACK}Smazat ukazatel zpoždění
 
 STR_TRAIN_STOPPING                                              :{RED}Zastavuje
 STR_TRAIN_STOPPING_VEL                                          :{RED}Zastavuje, {VELOCITY}
@@ -2798,6 +2837,18 @@
 STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Nov{G á ý é} {STRING} k dispozici!  -  {ENGINE}
 
+STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Tomuto vozidlu nejde nastavit jízdní řád...
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Vozidla mohou čekat jen ve stanicích.
+STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Toto vozidlo v této stanici nestaví.
+STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Změnit čas
+STR_TIMETABLE_STATUS_ON_TIME                                    :Vozidlo jede na čas
+STR_TIMETABLE_STATUS_LATE                                       :Vozidlo má  {STRING} zpoždění
+STR_TIMETABLE_STATUS_EARLY                                      :Vozidlo jede {STRING} napřed
+STR_TIMETABLE_TOTAL_TIME                                        :Tento jízdní řád bude trvat {STRING}
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Tento jízdní řád bude trvat nejméně {STRING} (vozidla mimo jízdní řád)
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Vyplnit automaticky
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Vyplnit jízdní řád automaticky s hodnotami z první jízdy
+
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Silniční vozidlo v cestě
 STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} silniční{P "" "" ch} vozid{P lo la el}
@@ -3009,6 +3060,8 @@
 STR_GO_TO_AIRPORT_HANGAR                                        :Poslat do hangáru {STATION}
 SERVICE_AT_AIRPORT_HANGAR                                       :Údržba v hangáru {STATION}
 
+STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Jízdní řád)
+
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Zeppelin se zřítil do {STATION}!
 STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Silniční vozidlo bylo zničeno při srážce s UFO!
@@ -3324,6 +3377,14 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, kontrolních bodů a vedení
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Změna průhlednosti mostů
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti)
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Přepnout průhlednost pro ukazatele naložení
+
+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                                           :Skupina {COMMA}
@@ -3361,4 +3422,17 @@
 STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
 STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
 
+STR_COMPANY_NAME                                                :{COMPANY}
+STR_ENGINE_NAME                                                 :{ENGINE}
+STR_GROUP_NAME                                                  :{GROUP}
+STR_PLAYER_NAME                                                 :{PLAYERNAME}
+STR_SIGN_NAME                                                   :{SIGN}
+STR_VEHICLE_NAME                                                :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Jméno musí být unikátní
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Na další signál
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Na předešlý signál
+
 ########
--- a/src/lang/danish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/danish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Aflever kun last til en station hvis der er en forespørgsel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Tillad bygning af meget lange broer: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Tillad gå til depot ordrer: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Metode til manuel opførsel af primær industri: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :ingen
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :som andre industrier
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :efterforskning
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Tillad flere af samme slags industri per by: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Tillad flere af samme type industri tæt på hinanden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Vis altid lang dato i statusbaren: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på, at du vil lave et tilfældigt landskab?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfældige byer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dæk kortet med tilfældigt placerede byer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfældige industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfældige industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dæk kortet med tilfældigt placerede industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikke lave industrier...
 
@@ -1976,6 +1980,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Kræver: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Fragt der venter på forarbejdning:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion sidste måned:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporteret)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrer skærmen over industriens lokalitet
--- a/src/lang/dutch.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/dutch.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Weet je zeker dat je een willekeurig landschap wil maken?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Veel willekeurige steden
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Bedek de kaart met willekeurig geplaatste steden
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Veel willekeurige industrieën
+STR_MANY_RANDOM_INDUSTRIES                                      :Veel willekeurige industrieën
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Bedek de kaart met willekeurig geplaatste industrieën
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan geen industrieën genereren
 
@@ -1980,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Vereist: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Vracht klaar om te worden verwerkt:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produceert: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produceert: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Productie vorige maand:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% getransporteerd)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centreer het hoofdbeeld op de locatie van de industrie
@@ -3369,3 +3376,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ga naar vorige bord
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Investeer
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Onderzoek
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Bouw
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Kies de aangewezen industrie van de lijst
--- a/src/lang/english.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/english.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Are you sure you want to create a random landscape?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Many random towns
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES                                      :Many random industries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cover the map with randomly placed industries
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Can't generate industries...
 
@@ -1980,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Requires: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Cargo waiting to be processed:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produces: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produces: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Production last month:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transported)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centre the main view on industry location
@@ -3369,3 +3376,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Go to previous sign
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Fund
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospect
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Build
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Choose the appropriate industry from this list
--- a/src/lang/esperanto.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/esperanto.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1224,7 +1224,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ĉu vi certas ke vi volas krei hazardan landaspekton?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Multaj hazardaj urboj
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Kovru la mapon per hazarde metitajn urbojn
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Multaj hazardaj industrioj
+STR_MANY_RANDOM_INDUSTRIES                                      :Multaj hazardaj industrioj
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Kovru la mapon per hazarde metitajn industriojn
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne povas generi industriojn...
 
--- a/src/lang/estonian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/estonian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1134,7 +1134,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Vii kaup jaama ainult siis, kui seal on nõudlus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Luba väga pikkade sildade ehitus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Luba 'mine depoosse' käsud: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Põhiline tööstuse rajamise viis: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :pole
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :nagu muud tööstused
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :uurides
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Luba mitu sama liiki tööstust linna kohta: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Sama liiki tööstusi saab ehitada üksteise lähedale: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Alati näita olekuribal pikka kuupäeva: {ORANGE}{STRING}
@@ -1206,11 +1209,16 @@
 STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Kasuta laadimisnäidikuid: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Luba sõiduplaanide määramine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Kasuta sõiduplaanis päevade asemel tikse: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Algne rööbastee liik (mängu alustamisel/laadimisel): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :Tavaline rööbastee
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Elektrifitseeritud rööbastee
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Monorelss
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Maglev
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :Esimene saadaval
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Viimane saadaval
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Enim kasutatud
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Näita ehitustööriistu isegi siis, kui sobivaid sõidukeid veel pole: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Enim ronge mängija kohta: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Enim mootorsõidukeid mängija kohta: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Enim õhusõidukeid mängija kohta: {ORANGE}{STRING}
@@ -1333,7 +1341,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Oled sa kindel, et soovid luua suvalist maastikku?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Palju suvalisi linnu
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Kaardi katmine suvaliselt asetatud linnadega
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Palju suvalisi tööstusi
+STR_MANY_RANDOM_INDUSTRIES                                      :Palju suvalisi tööstusi
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Kata kaart suvaliselt paigutatud tööstustega
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Tööstust ei saa tekitada...
 
@@ -2072,6 +2080,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Vajab: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Käitlust ootav kaup:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Eelmise kuu valmistoodang:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% veetud)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Vaate keskendamine tööstusele
@@ -2869,6 +2880,10 @@
 STR_TIMETABLE_STATUS_ON_TIME                                    :See sõiduk peab ajast kinni
 STR_TIMETABLE_STATUS_LATE                                       :See sõiduk on {STRING} hiljaks jäämas
 STR_TIMETABLE_STATUS_EARLY                                      :See sõiduk on {STRING} varajane
+STR_TIMETABLE_TOTAL_TIME                                        :Selle sõiduplaani täitmine võtab {STRING}
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Selle sõiduplaani täitmine võtab vähemalt {STRING} (kõik ei ole planeeritud)
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Täida ise
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Täida sõiduplaan ise esmareisi väärtustega
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Mootorsõiduk takistab teed
@@ -3450,7 +3465,10 @@
 STR_SIGN_NAME                                                   :{SIGN}
 STR_VEHICLE_NAME                                                :{VEHICLE}
 
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Nime ei tohi korduda
 
 #### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Mine järgmise märgi juurde
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Mine eelmise märgi juurde
 
 ########
--- a/src/lang/finnish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/finnish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1221,7 +1221,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Haluatko todella luoda satunnaisen maaston?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Monta satunnaista kaupunkia
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Peitä kartta satunnaisesti sijoitetuilla kaupungeilla.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Monta satunnaista teollisuusaluetta
+STR_MANY_RANDOM_INDUSTRIES                                      :Monta satunnaista teollisuusaluetta
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Peitä kartta satunnaisesti sijoitetuilla teollisuusalueilla.
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Teollisuusaluetta ei voi luoda...
 
--- a/src/lang/french.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/french.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1242,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Etes-vous sûr de vouloir créer un terrain aléatoire?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Beaucoup de villes au hasard
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Couvrir la carte avec des villes placées aléatoirement
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Beaucoup d'industries au hasard
+STR_MANY_RANDOM_INDUSTRIES                                      :Beaucoup d'industries au hasard
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Couvrir la carte avec des industries placées au hasard
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne peut pas générer les industries...
 
@@ -1981,6 +1981,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Nécessite: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Marchandise en attente d'être utilisée:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produit: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produit: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Production le mois dernier:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporté)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrer la vue sur l'industrie
@@ -3370,3 +3377,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Aller au panneau précédent
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Fonder
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospecter
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construire
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Choisissez l'industrie appropriée dans cette liste
--- a/src/lang/galician.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/galician.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1148,7 +1148,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}¿Estás seguro de querer crear unha paisaxe aleatoria?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Varias cidades aleatorias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cubri-lo mapa con cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Varias industrias aleatorias
+STR_MANY_RANDOM_INDUSTRIES                                      :Varias industrias aleatorias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Non se poden xera-las industrias...
 
--- a/src/lang/german.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/german.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1035,6 +1035,8 @@
 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_NONE        :keine
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :wie andere Industrie
 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}
@@ -1103,6 +1105,8 @@
 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_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}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :normales Gleis
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :elektrifiziertes Gleis
@@ -1233,7 +1237,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Soll wirklich eine zufällige Landschaft erzeugt werden?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Viele zufällige Städte
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Bedecke die Karte mit zufällig platzierten Städten
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Viele zufällige Industrien
+STR_MANY_RANDOM_INDUSTRIES                                      :Viele zufällige Industrien
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Bedecke die Karte mit zufällig platzierten Industrien
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kann keine Industrie erzeugen...
 
@@ -1972,6 +1976,8 @@
 STR_4829_REQUIRES                                               :{BLACK}Benötigt: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion im letzten Monat:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% befördert)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Zentriere die Ansicht auf das Industriegebiet
@@ -2086,6 +2092,7 @@
 STR_SV_STNAME_LOWER                                             :Unter-{STRING}
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliport
 STR_SV_STNAME_FOREST                                            :{STRING} Wald
+STR_SV_STNAME_FALLBACK                                          :{STRING} Station #{NUM}
 
 ############ end of savegame specific region!
 
@@ -2617,6 +2624,9 @@
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Fahre ohne Halt zu {TOWN} Zugdepot
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Wartung (ohne Halt) bei {TOWN} Zugdepot
 
+STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_FOR                                        :Fahre für {STRING}
+STR_TIMETABLE_STAY_FOR                                          :und bleibe für {STRING}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Unterwegs zu {TOWN} Zugdepot
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Unterwegs zu {TOWN} Zugdepot, {VELOCITY}
@@ -3293,6 +3303,11 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Verändere die Transparenz für Bauten wie Leuchttürme und Antennen, evtl. in der Zukunft auch für Sehenswürdigkeiten
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Transparenz für Ladestandsanzeige umschalten
 
+STR_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                                           :Gruppe {COMMA}
@@ -3330,5 +3345,17 @@
 STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit dieses Jahr: {GREEN}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
 STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit dieses Jahr: {RED}{CURRENCY} {BLACK}(letztes Jahr: {RED}{CURRENCY}{BLACK})
 
+STR_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}Name muss eindeutig sein
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Gehe zum nächsten Schild
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Gehe zum vorherigen Schild
 
 ########
--- a/src/lang/hungarian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/hungarian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1307,7 +1307,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Biztos vagy benne hogy véletlen tájképet akarsz létrehozni?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Sok véletlen város
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Elhelyez a térképen véletlenszerüen sok várost.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Sok véletlen gazdasági épület
+STR_MANY_RANDOM_INDUSTRIES                                      :Sok véletlen gazdasági épület
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nem tudok gazdasági épületet generálni...
 
@@ -2083,6 +2083,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Felhasznál: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Feldolgozásra váró szállítmány:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Gyárt: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Gyárt: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Múlt havi termelés:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% elszállítva)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}A fő nézetet a gazdasági épületre állítja
@@ -3472,3 +3479,6 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Előző felirat
 
 ########
+
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Épít
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Válaszd ki a megfelelő ipartípust a listából
--- a/src/lang/icelandic.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/icelandic.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1192,7 +1192,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ertu viss um að þú viljir búa til handahófskennt land?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Búa til marga bæi
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Þekja landið með bæjum
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Búa til marga iðnaði
+STR_MANY_RANDOM_INDUSTRIES                                      :Búa til marga iðnaði
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Get ekki búið til iðnað...
 
--- a/src/lang/italian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/italian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1036,10 +1036,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Scarica le merci in una stazione solo se richieste: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Consenti la costruzione di ponti molto lunghi: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Consenti gli ordini 'Vai al deposito': {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Costruzione manuale delle industrie primarie: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :non permessa
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :come le altre industrie
-STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospezione
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Costruzione delle industrie primarie: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :Non permessa
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :Come le altre industrie
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospezione
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Consenti più industrie dello stesso tipo nella stessa città: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Consenti la costruzione di industrie uguali anche molto vicine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Mostra sempre la data lunga nella barra di stato: {ORANGE}{STRING}
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Si è sicuri di voler generare un paesaggio casuale?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Alcune città casuali
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Copre la mappa con città posizionate casualmente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Alcune industrie casuali
+STR_MANY_RANDOM_INDUSTRIES                                      :Alcune industrie casuali
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Copre la mappa con industrie posizionate casualmente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Impossibile generare industrie...
 
@@ -1982,13 +1982,20 @@
 STR_4829_REQUIRES                                               :{BLACK}Richiede: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Carico in attesa di lavorazione:
+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}Produzione il mese scorso:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% trasportato)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centra la visuale principale sulla posizione dell'industria
 STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Nuov{G o a} {STRING} in costruzione vicino a {TOWN}!
 STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Nuov{G o a} {STRING} piantat{G o a} vicino a {TOWN}!
 STR_482F_COST                                                   :{BLACK}Costo: {YELLOW}{CURRENCY}
-STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Impossibile costruire questo tipo di industria qui...
+STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Imposibile costruire l'industria qui...
 STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...una foresta può essere piantata solo in una zona innevata
 STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} annuncia imminente chiusura!!
 STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Per problemi di rifornimenti {INDUSTRY} annuncia imminente chiusura!
@@ -3371,3 +3378,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Va al cartello precedente
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Finanzia
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Esegui prospezione
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Costruisci
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Selezionare l'industria appropriata dalla lista
--- a/src/lang/japanese.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/japanese.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}需要のあるときのみ駅へ貨物を運送:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}超長型橋の建設を許容:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}「車庫へ回送」という指令を許容:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}第一次産業の手動の建設方法:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :なし
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :他の産業と同様
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探鉱
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}町内に重複している産業の建設を許容:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}同類の産業を近くに建設することを許容:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}常に状況バーに長型日付を表示:{ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}ランダムな地形を作成してもよろしいですか?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}多くのランダムな市町村
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}地図にたくさんの市町村を建設します
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}多くのランダムな産業
+STR_MANY_RANDOM_INDUSTRIES                                      :多くのランダムな産業
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}地図にたくさんの産業を建設します
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}産業が建設できません...
 
@@ -1976,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}必要な原料:{YELLOW}{STRING}、{STRING}、{STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}処理待ちの貨物:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}産物:{YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}産物:{YELLOW}{STRING}、{STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}先月の生産量:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK}({COMMA}%運送済み)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}主の画面を産業の場所に移動します
@@ -3365,3 +3376,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}前の標示へ移動
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}出資
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}調査
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}建設
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}適当な産業を選択します
--- a/src/lang/korean.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/korean.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -48,7 +48,7 @@
 STR_0026_CANDY                                                  :사탕
 STR_0027_COLA                                                   :콜라
 STR_0028_COTTON_CANDY                                           :솜사탕
-STR_0029_BUBBLES                                                :풍선껌
+STR_0029_BUBBLES                                                :거품
 STR_002A_TOFFEE                                                 :태피
 STR_002B_BATTERIES                                              :배터리
 STR_002C_PLASTIC                                                :플라스틱
@@ -80,7 +80,7 @@
 STR_0046_CANDY                                                  :사탕
 STR_0047_COLA                                                   :콜라
 STR_0048_COTTON_CANDY                                           :솜사탕
-STR_0049_BUBBLE                                                 :풍선껌
+STR_0049_BUBBLE                                                 :거품
 STR_004A_TOFFEE                                                 :태피
 STR_004B_BATTERY                                                :배터리
 STR_004C_PLASTIC                                                :플라스틱
@@ -112,7 +112,7 @@
 STR_QUANTITY_SWEETS                                             :{COMMA} 자루의 사탕
 STR_QUANTITY_COLA                                               :{VOLUME}의 콜라
 STR_QUANTITY_CANDYFLOSS                                         :{WEIGHT}의 솜사탕
-STR_QUANTITY_BUBBLES                                            :풍선껌 {COMMA} 상자
+STR_QUANTITY_BUBBLES                                            :거품 {COMMA} 상자
 STR_QUANTITY_TOFFEE                                             :{WEIGHT}의 태피
 STR_QUANTITY_BATTERIES                                          :배터리 {COMMA} 상자
 STR_QUANTITY_PLASTIC                                            :{VOLUME}의 플라스틱
@@ -248,7 +248,7 @@
 STR_0115_TOY_FACTORY                                            :{BLACK}{TINYFONT}장난감 공장
 STR_0116_PLASTIC_FOUNTAINS                                      :{BLACK}{TINYFONT}플라스틱 분수
 STR_0117_FIZZY_DRINK_FACTORY                                    :{BLACK}{TINYFONT}탄산음료 공장
-STR_0118_BUBBLE_GENERATOR                                       :{BLACK}{TINYFONT}풍선껌 제조 공장
+STR_0118_BUBBLE_GENERATOR                                       :{BLACK}{TINYFONT}거품 제조 공장
 STR_0119_TOFFEE_QUARRY                                          :{BLACK}{TINYFONT}태피 채취장
 STR_011A_SUGAR_MINE                                             :{BLACK}{TINYFONT}설탕 광산
 STR_011B_RAILROAD_STATION                                       :{BLACK}{TINYFONT}철도역
@@ -460,7 +460,7 @@
 STR_018B_CLOSE_WINDOW                                           :{BLACK}창닫기
 STR_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}창 제목 - 창을 움직이려면 여기를 드래그하세요
 STR_STICKY_BUTTON                                               :{BLACK}이 창을 '모든 창 닫기' 키로 닫을 수 없게 하기
-STR_RESIZE_BUTTON                                               :{BLACK}이 창의 크기를 조절하려면 여기를 클릭하고 드래그하세요.
+STR_RESIZE_BUTTON                                               :{BLACK}이 창의 크기를 조절하려면 여기를 클릭하고 드래그하세요
 STR_SAVELOAD_HOME_BUTTON                                        :{BLACK}기본 저장/로드 디렉토리로 이동하려면 여기를 클릭하세요
 STR_018D_DEMOLISH_BUILDINGS_ETC                                 :{BLACK}사각형 모양의 땅에 있는 건물과 땅 등을 부숩니다.
 STR_018E_LOWER_A_CORNER_OF_LAND                                 :{BLACK}땅의 모퉁이를 낮춥니다.
@@ -681,7 +681,7 @@
 STR_025C_TOY_FACTORY                                            :{BLACK}장난감 공장
 STR_025D_PLASTIC_FOUNTAINS                                      :{BLACK}플라스틱 분수
 STR_025E_FIZZY_DRINK_FACTORY                                    :{BLACK}탄산음료 공장
-STR_025F_BUBBLE_GENERATOR                                       :{BLACK}풍선껌 제조 공장
+STR_025F_BUBBLE_GENERATOR                                       :{BLACK}거품 제조 공장
 STR_0260_TOFFEE_QUARRY                                          :{BLACK}태피 채취장
 STR_0261_SUGAR_MINE                                             :{BLACK}설탕 광산
 STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}석탄 광산 건설
@@ -716,7 +716,7 @@
 STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}장난감 공장 건설
 STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS                            :{BLACK}플라스틱 분수 건설
 STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY                          :{BLACK}탄산음료 공장 건설
-STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}풍선껌 제조 공장 건설
+STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}거품 제조 공장 건설
 STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}태피 채취장 건설
 STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}설탕 광산 건설
 STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}{STRING}을/를 여기에 건설할 수 없습니다...
@@ -1035,6 +1035,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}수요가 있을때만 화물을 역에 옮겨놓음 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}매우 긴 교각 건설 허용 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}차량기지(차고/격납고)를 경로에 지정하는 것을 허용 : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}수동 기본 산업 건설 방법: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :없음
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :다른 산업시설처럼
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :답사
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}한 도시당 같은 종류의 산업시설의 중복 건설을 허용 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}같은 종류의 산업 시설이 가까이에 지어지는 것을 허용 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}날짜를 일(日)단위까지 상세하게 표시 : {ORANGE}{STRING}
@@ -1238,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}무작위로 지형을 생성하시겠습니까?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}무작위 도시 건설
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}무작위로 도시를 건설합니다.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}무작위 산업시설 건설
+STR_MANY_RANDOM_INDUSTRIES                                      :무작위 산업시설 건설
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}무작위로 산업시설을 건설합니다.
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}산업시설을 생성할 수 없습니다...
 
@@ -1295,7 +1299,7 @@
 STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}배터리 농장에 투자합니다.
 STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}콜라 우물을 팝니다.
 STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}플라스틱 분수에 투자합니다.
-STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}풍선껌 제조 공장을 건설합니다.
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}거품 제조 공장을 건설합니다.
 STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}태피 채취장에 투자합니다.
 STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}설탕 광산을 건설합니다.
 
@@ -1730,7 +1734,7 @@
 STR_2028_BY                                                     :{YELLOW} ({DATE_SHORT}까지)
 STR_202A_NONE                                                   :{ORANGE}없음
 STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}이미 지급된 보조금:
-STR_202C_FROM_TO                                                :{ORANGE}{STRING}에서 {STATION}까지 {STATION}{YELLOW} ({COMPANY}
+STR_202C_FROM_TO                                                :{ORANGE}{1:STATION}에서 {2:STATION}까지 {0:STRING} 수송{YELLOW} ({3:COMPANY}
 STR_202D_UNTIL                                                  :{YELLOW}, {DATE_SHORT}까지)
 STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}보조금 제공 계약 파기:{}{}{0:STRING}에서 {1:STRING}까지의 {2:STRING} 수송은 더이상 보조금을 지급하지 않습니다.
 STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}보조금 제공 철회:{}{}{1:STATION}에서 {2:STATION}까지의 {0:STRING} 수송은 더이상 보조금을 지급하지 않습니다.
@@ -1967,7 +1971,7 @@
 STR_4821_TOY_FACTORY                                            :장난감 공장
 STR_4822_PLASTIC_FOUNTAINS                                      :플라스틱 분수
 STR_4823_FIZZY_DRINK_FACTORY                                    :탄산음료 공장
-STR_4824_BUBBLE_GENERATOR                                       :풍선껌 제조 공장
+STR_4824_BUBBLE_GENERATOR                                       :거품 제조 공장
 STR_4825_TOFFEE_QUARRY                                          :태피 채취장
 STR_4826_SUGAR_MINE                                             :설탕 광산
 
@@ -1977,6 +1981,13 @@
 STR_4829_REQUIRES                                               :{BLACK}필요함: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}처리될 화물 대기:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}생산: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}생산: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}지난달 생산량:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% 수송됨)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}이 산업시설이 있는 곳으로 이동
@@ -2381,7 +2392,7 @@
 STR_802C_SUGAR_TRUCK                                            :설탕 수송차량
 STR_802D_COTTON_CANDY_HOPPER                                    :솜사탕 수송차량
 STR_802E_TOFFEE_HOPPER                                          :태피 수송차량
-STR_802F_BUBBLE_VAN                                             :풍선껌 수송차량
+STR_802F_BUBBLE_VAN                                             :거품 수송차량
 STR_8030_COLA_TANKER                                            :콜라 탱크
 STR_8031_CANDY_VAN                                              :사탕 수송차량
 STR_8032_TOY_VAN                                                :장난감 수송차량
@@ -2411,7 +2422,7 @@
 STR_804A_SUGAR_TRUCK                                            :설탕 수송차량
 STR_804B_COTTON_CANDY_HOPPER                                    :솜사탕
 STR_804C_TOFFEE_HOPPER                                          :태피 수송차량
-STR_804D_BUBBLE_VAN                                             :풍선껌
+STR_804D_BUBBLE_VAN                                             :거품 수송차량
 STR_804E_COLA_TANKER                                            :콜라 탱크
 STR_804F_CANDY_VAN                                              :사탕 수송차량
 STR_8050_TOY_VAN                                                :장난감 수송차량
@@ -2443,7 +2454,7 @@
 STR_806A_SUGAR_TRUCK                                            :설탕 수송차량
 STR_806B_COTTON_CANDY_HOPPER                                    :솜사탕
 STR_806C_TOFFEE_HOPPER                                          :태피 수송차량
-STR_806D_BUBBLE_VAN                                             :풍선껌
+STR_806D_BUBBLE_VAN                                             :거품 수송차량
 STR_806E_COLA_TANKER                                            :콜라 탱크
 STR_806F_CANDY_VAN                                              :사탕 수송차량
 STR_8070_TOY_VAN                                                :장난감 수송차량
@@ -2535,9 +2546,9 @@
 STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :MightyMover 플라스틱 수송차
 STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Powernaught 플라스틱 수송차
 STR_80C8_WIZZOWOW_PLASTIC_TRUCK                                 :Wizzowow 플라스틱 수송차
-STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :MightyMover 풍선껌 트럭
-STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Powernaught 풍선껌 트럭
-STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Wizzowow 풍선껌 트럭
+STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :MightyMover 거품 트럭
+STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Powernaught 거품 트럭
+STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Wizzowow 거품 트럭
 STR_80CC_MPS_OIL_TANKER                                         :MPS 석유 탱크
 STR_80CD_CS_INC_OIL_TANKER                                      :CS-Inc. 석유 탱크
 STR_80CE_MPS_PASSENGER_FERRY                                    :MPS 여객선
@@ -2755,7 +2766,7 @@
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}선택된 경로에서 모든 화물을 내려서 쌓아놓도록 변경합니다.
 STR_886F_TRANSFER                                               :{BLACK}환승
 STR_CLEAR_TIME                                                  :{BLACK}시간 초기화
-STR_RESET_LATENESS                                              :{BLACK}지각 카운터 초기화
+STR_RESET_LATENESS                                              :{BLACK}지연 카운터 초기화
 
 STR_TRAIN_STOPPING                                              :{RED}정지중
 STR_TRAIN_STOPPING_VEL                                          :{RED}{VELOCITY}의 속도로 정지중
@@ -3366,3 +3377,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}이전 팻말로 가기
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}투자
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}예측
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}건설
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}목록에서 적당한 산업시설을 선택하십시오
--- a/src/lang/lithuanian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/lithuanian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1224,7 +1224,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ar tikrai norite sukurti atsitiktinį kraštovaizdį?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Daug atsitiktinių miestų
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Sukuria miestus atsitiktinėse žemėlapio vietose
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Daug atsitiktinių pramonės įmonių
+STR_MANY_RANDOM_INDUSTRIES                                      :Daug atsitiktinių pramonės įmonių
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Sukuria pramonės įmones atsitiktinėse žemėlapio vietose
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Neimanoma sukurti pramones imoniu...
 
--- a/src/lang/norwegian_bokmal.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1222,7 +1222,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på at du vil lage et tilfeldig generert landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfeldige byer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dekk kartet med tilfeldig plasserte byer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfeldige industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfeldige industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dekk kartet med tilfeldig plasserte industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikke generere industrier...
 
--- a/src/lang/norwegian_nynorsk.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1238,7 +1238,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på at du vil lage eit tilfeldig generert landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfeldige byar
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dekk kartet med tilfeldig plasserte byar
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfeldige industriar
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfeldige industriar
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dekk kartet med tilfeldig plasserte industriar
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikkje lage industriar...
 
--- a/src/lang/piglatin.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/piglatin.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Eliverday argocay otay away ationstay onlyway enwhay erethay isway away emandday: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Allowway uildingbay eryvay onglay idgesbray: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Allowway otogay epotday ordersway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Anualmay imarypray industryway onstructioncay ethodmay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :onenay
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :asway otherway industriesway
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :ospectingpray
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Allowway ultiplemay imilarsay industriesway erpay owntay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industriesway ofway ethay amesay ypetay ancay ebay uiltbay oseclay otay eachway otherway: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Alwaysway owshay onglay ateday inway ethay atusstay arbay: {ORANGE}{STRING}
@@ -1102,10 +1106,19 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Apmay ollwheelscray eedspay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automaticallyway ausepay enwhay artingstay away ewnay amegay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Useway ethay advancedway ehiclevay istlay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Useway oadinglay indicatorsway:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Enableway imetablingtay orfay ehiclesvay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Owshay imetabletay inway ickstay atherray anthay aysday: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Efaultday ailray ypetay (afterway ewnay amegay/amegay oadlay): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :Ormalnay Ailray
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Electrifiedway Ailray
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Onorailmay
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV                     :Aglevmay
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :Irstfay availableway
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Astlay availableway
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Ostmay usedway
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Owshay uildingbay oolstay enwhay onay uitablesay ehiclesvay:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Axmay ainstray erpay ayerplay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Axmay oadray ehiclesvay erpay ayerplay: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Axmay aircraftway erpay ayerplay: {ORANGE}{STRING}
@@ -1228,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Areway ouyay uresay ouyay antway otay eatecray away andomray andscapelay?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Anymay andomray ownstay
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Overcay ethay apmay ithway andomlyray acedplay ownstay
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Anymay andomray industriesway
+STR_MANY_RANDOM_INDUSTRIES                                      :Anymay andomray industriesway
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Overcay ethay apmay ithway andomlyray acedplay industriesway
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}An'tcay enerategay industriesway...
 
@@ -3299,6 +3312,12 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Oggletay ansparencytray orfay ucturesstray ikelay ighthouseslay andway antennasway, aybemay inway uturefay orfay eyecandyway
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Oggletay ansparencytray orfay oadinglay indicatorsway
 
+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                                           :Oupgray {COMMA}
@@ -3336,5 +3355,17 @@
 STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Ofitpray isthay earyay: {GREEN}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
 STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Ofitpray isthay earyay: {RED}{CURRENCY} {BLACK}(astlay earyay: {RED}{CURRENCY}{BLACK})
 
+STR_COMPANY_NAME                                                :{COMPANY}
+STR_ENGINE_NAME                                                 :{ENGINE}
+STR_GROUP_NAME                                                  :{GROUP}
+STR_PLAYER_NAME                                                 :{PLAYERNAME}
+STR_SIGN_NAME                                                   :{SIGN}
+STR_VEHICLE_NAME                                                :{VEHICLE}
+
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Amenay ustmay ebay uniqueway
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Ogay otay extnay ignsay
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ogay otay eviouspray ignsay
 
 ########
--- a/src/lang/polish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/polish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1324,7 +1324,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Jesteś pewien że chcesz stworzyć losowy krajobraz?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Wiele losowych miast
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryj mapę losowo położonymi miastami
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Wiele losowych przedsiębiorstw
+STR_MANY_RANDOM_INDUSTRIES                                      :Wiele losowych przedsiębiorstw
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nie można stworzyć przedsiębiorstw...
 
--- a/src/lang/portuguese.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/portuguese.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Entregar carga a uma estação só quando houver procura: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Permitir a construção de pontes muito longas: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Permitir ordens de ir para o depósito: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Método manual de construção de indústrias primárias: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :nenhum
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :como as outras indústrias
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecção
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Permitir várias indústrias semelhantes por cidade: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Indústrias do mesmo tipo podem ser construídas perto: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Mostrar sempre a data completa na barra de estado: {ORANGE}{STRING}
@@ -1051,7 +1055,7 @@
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Permitir sempre aeroportos pequenos: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Alertar em caso de perda do combóio: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Alertar em caso de perda do comboio: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW                                 :{LTBLUE}Analisar ordens dos veículos: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW_OFF                             :Não
 STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT                         :Sim, mas excluir veículos parados
@@ -1088,7 +1092,8 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Manutenção automática de helicópteros em heliportos: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Ligar ferramentas de paisagem com as de construção: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Ao deslizar com o rato, mover a vista na direcção oposta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Mostrar uma dica de medição ao utilizar várias ferramentas de construção: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Suavizar deslocamento da navegação no mapa: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Mostrar as medidas nas várias ferramentas de construção: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Mostrar estampagens da companhia: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Nenhum
 STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Própria companhia
@@ -1100,6 +1105,11 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Desligado
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Velocidade do scrollwheel no mapa: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Pausa automática ao iniciar um novo jogo: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Usar a lista avançada de veículos: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW                              :{LTBLUE}Activar plano de horários para veículos: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS                           :{LTBLUE}Mostrar horário em tics em vez dias: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE                            :{LTBLUE}Tipo padrão de ferrovia (ao criar ou carregar jogo): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL                       :Linha Normal
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL                     :Linha Electrificada
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL                   :Monorail
@@ -1108,7 +1118,7 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Último disponível
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Mais utilizado
 
-STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Mostrar ferramentas de construção quando não estiverem disponíveis veículos adequeados: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Mostrar ferramentas de construção quando não existirem veículos adequeados: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Máximo de comboios por jogador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Máximo de veículos de estrada por jogador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Máximo de aeronaves por jogador: {ORANGE}{STRING}
@@ -1231,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Tem a certeza que deseja criar um terreno aleatório?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Várias cidades aleatórias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES                                      :Várias indústrias aleatórias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Não é possível gerar indústrias...
 
@@ -1654,6 +1664,7 @@
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construir estradas
 STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construir secção de carris para eléctricos
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construir depósito (para criação e manutenção de veículos de estrada)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construir depósito de eléctricos (para construção e manutenção)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Construir estação de autocarros
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construir área de carregamento de camiões
 STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Construir paragem de eléctricos para passageiros
@@ -1663,7 +1674,9 @@
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construir túnel de estrada
 STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construir túnel para eléctricos
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Alternar entre construir/remover estradas
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Alternar construir/remover linhas de eléctricos e sinais
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Seleccionar a orientação do depósito
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Escolher a orientação do depósito de eléctricos
 STR_1814_ROAD                                                   :Estrada
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Estrada com iluminação
 STR_1816_TREE_LINED_ROAD                                        :Estrada com árvores
@@ -1672,6 +1685,7 @@
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Impossível remover estação...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Impossível remover estação...
 STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Impossível remover paragem de eléctricos de passageiros
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Impossível remover estação de eléctricos de mercadorias...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Cidades
@@ -1772,7 +1786,7 @@
 
 STR_INDUSTRY                                                    :{INDUSTRY}
 STR_TOWN                                                        :{TOWN}
-STR_INDUSTRY_FORMAT                                             :{TOWN} {STRING}
+STR_INDUSTRY_FORMAT                                             :{1:STRING} de {0:TOWN}
 STR_STATION                                                     :{STATION}
 
 ##id 0x2800
@@ -1836,8 +1850,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} agora aceita {STRING} e {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientação da estação de autocarros
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientação da estação de carga
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientação da Estação de Eléctricos
+STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientação da Estação de Eléctricos
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Precisa de demolir a estação de autocarros primeiro
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Precisa de demolir a estação de carga primeiro
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Precisa demolir estação de eléctricos primeiro
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Precisa demolir estação de eléctricos primeiro
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estações
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nenhuma -
@@ -1849,6 +1867,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Seleccionar o tamanho da estação ferroviária
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Seleccionar a orientação da estação de autocarros
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Seleccionar a orientação da estação de carregamento de camiões
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Selecionar orientação da estação de eléctricos
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Selecionar orientação da estação de eléctricos
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrar visualização no local estação
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Mostrar avaliações da estação
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Alterar o nome da estação
@@ -1886,6 +1906,7 @@
 STR_3805_COAST_OR_RIVERBANK                                     :Costa ou margem
 STR_3806_SHIP_DEPOT                                             :Depósito naval
 STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...Não é possível construir na água
+STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Precisa de demolir o canal primeiro
 
 ##id 0x4000
 STR_4000_SAVE_GAME                                              :{WHITE}Guardar Jogo
@@ -1899,6 +1920,10 @@
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Não é possível eliminar ficheiro
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Falha ao Abrir Jogo{}{STRING}
 STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Erro interno: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Ficheiro corrompido - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Jogo gravado numa versão mais recente do jogo
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Impossível ler ficheiro
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Impossível escrever ficheiro
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Lista de unidades, directorias e ficheiros de jogos guardados
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Nome escolhido para guardar o jogo
 STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Eliminar o jogo guardado seleccionado
@@ -1955,6 +1980,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Carga aguardando processamento:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produz: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produz: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produção no último mês:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrar visualização na localização da indústria
@@ -2069,6 +2101,7 @@
 STR_SV_STNAME_LOWER                                             :{STRING} de baixo
 STR_SV_STNAME_HELIPORT                                          :Heliporto de {STRING}
 STR_SV_STNAME_FOREST                                            :Floresta de {STRING}
+STR_SV_STNAME_FALLBACK                                          :{STRING} Estação #{NUM}
 
 ############ end of savegame specific region!
 
@@ -2298,9 +2331,11 @@
 STR_LIVERY_HELICOPTER                                           :Helicóptero
 STR_LIVERY_SMALL_PLANE                                          :Aeronave de Pequenas Dimensões
 STR_LIVERY_LARGE_PLANE                                          :Aeronave de Grandes Dimensões
+STR_LIVERY_PASSENGER_TRAM                                       :Eléctrico de Passageiros
+STR_LIVERY_FREIGHT_TRAM                                         :Eléctrico de Mercadorias
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Exibir esquema de cores geral
-STR_LIVERY_TRAIN_TIP                                            :{BLACK}Exibir esquemas de cores dos combóios
+STR_LIVERY_TRAIN_TIP                                            :{BLACK}Exibir esquemas de cores dos comboios
 STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Exibir esquemas de cores dos veículos de estrada
 STR_LIVERY_SHIP_TIP                                             :{BLACK}Exibir esquemas de cores dos navios
 STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Exibir esquema de cores da aeronave
@@ -2598,7 +2633,12 @@
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ir sem parar para o depósito de {TOWN}
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Manutenção no depósito de {TOWN} sem parar
 
+STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Viagem (sem programação)
+STR_TIMETABLE_TRAVEL_FOR                                        :Viajar durante {STRING}
+STR_TIMETABLE_STAY_FOR                                          :e ficar durante {STRING}
 STR_TIMETABLE_DAYS                                              :{COMMA} dia{P "" s}
+STR_TIMETABLE_TICKS                                             :{COMMA} tic{P "" s}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Dirige-se ao depósito de {TOWN}
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Dirige-se ao depósito de {TOWN}, {VELOCITY}
@@ -2641,6 +2681,8 @@
 STR_REFIT                                                       :{BLACK}Converter
 STR_REFIT_TIP                                                   :{BLACK}Seleccionar o tipo de carga a converter nesta ordem. Pressionar Ctrl e botão-esquerdo do rato para remover instrução de conversão
 STR_REFIT_ORDER                                                 :(Converter para {STRING})
+STR_TIMETABLE_VIEW                                              :{BLACK}Horário
+STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Mudar para a vista de horário
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Ordens)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Fim de Ordens - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
@@ -2657,6 +2699,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Não é possível inserir nova ordem...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Não é possível eliminar esta ordem...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Não é possível modificar esta ordem...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Impossível mover esta ordem...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Impossível saltar esta ordem...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Impossível saltar ordem seleccionada...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Não é possível mover veículo...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}A locomotiva traseira seguirá sempre a sua parceira frontal
 STR_8838_N_A                                                    :N/D{SKIP}
@@ -2688,11 +2733,16 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostrar capacidades de cada veículo
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostrar capacidade total do comboio, dividir por tipo de carga
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de ordens - clique numa ordem para a seleccionar
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Salta a ordem actual, e inicia a próxima. CTRL + clique salta para a ordem seleccionada
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eliminar a ordem seleccionada
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem seleccionada fará com que o veículo não para noutras estações pelo caminho
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Inserir nova ordem antes da ordem seleccionada, ou adicionar ao fim da lista
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem seleccionada fará com que o veículo espere carregar completamente
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem seleccionada forçará o veículo a descarregar
+STR_TIMETABLE_TOOLTIP                                           :{BLACK}Horário - clique numa ordem para a seleccionar.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Muda o espaço de tempo que a ordem seleccionada deve durar
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Apagar o tempo que dura a ordem seleccionada
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Limpar o contador de atraso, para que o veículo passe a estar a horas
 STR_SERVICE_HINT                                                :{BLACK}Saltar esta ordem a menos que seja necessário manutenção
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Custo: {CURRENCY} Peso: {WEIGHT_S}{}Velocidade: {VELOCITY}  Potência: {POWER}{}Custo de circulação: {CURRENCY}/ano{}Capacidade: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Avariado
@@ -2714,6 +2764,8 @@
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Não é possível renomear tipo de veículo ferroviário...
 STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem seleccionada forçará o veículo a largar a carga
 STR_886F_TRANSFER                                               :{BLACK}Transferir
+STR_CLEAR_TIME                                                  :{BLACK}Apagar Tempo
+STR_RESET_LATENESS                                              :{BLACK}Apagar Contad. Atraso
 
 STR_TRAIN_STOPPING                                              :{RED}A Parar
 STR_TRAIN_STOPPING_VEL                                          :{RED}A Parar, {VELOCITY}
@@ -2725,6 +2777,17 @@
 STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
 
+STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Impossível programar veículo...
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Veículos apenas podem esperar em estações.
+STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Este veículo não pára nesta estação.
+STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Mudar Tempo
+STR_TIMETABLE_STATUS_ON_TIME                                    :Este veículo está actualmente a andar a horas
+STR_TIMETABLE_STATUS_LATE                                       :Este veículo está presentemente atrasado {STRING}
+STR_TIMETABLE_STATUS_EARLY                                      :Este veículo está presentemente adiantado {STRING}
+STR_TIMETABLE_TOTAL_TIME                                        :Este horário vai levar {STRING} a completar
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Este horário vai levar pelo menos {STRING} a completar (nem tudo está programado)
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Auto pr.
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Preencher o horário automaticamente com os valores da primeira viagem
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Veículo de estrada no caminho
@@ -2775,6 +2838,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Renomear veículo de estrada
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro autocarro chega a {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro camião chega a {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro eléctrico de passageiros chega a {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro eléctrico de mercadorias chega a {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Acidente de Veículo de Estrada!{}Condutor morre na explosão após a colisão com um comboio
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Acidente de Veículo de Estrada!{}{COMMA} morrem na explosão após a colisão com um comboio
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Não é possível fazer o veículo dar a volta...
@@ -2935,6 +3000,7 @@
 STR_GO_TO_AIRPORT_HANGAR                                        :Ir para o hangar de {STATION}
 SERVICE_AT_AIRPORT_HANGAR                                       :Manutenção no hangar de {STATION}
 
+STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Horário)
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Acidente de Zepelim em {STATION}!
@@ -3060,13 +3126,14 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Está prestes a vender todos os veículos no depósito. Tem a certeza?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Tipo de depósito errado
 
-STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vender todos os combóios no depósito
+STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vender todos os comboios no depósito
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vender todos os veículos no depósito
 STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Vender todos os navios no depósito
 STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}Vender todos os aviões no hangar
 
-STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Obter uma lista de todos os combóios em cujas ordens conste este depósito
+STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Obter uma lista de todos os comboios em cujas ordens conste este depósito
 STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Obter uma lista de todos os veículos em cujas ordens conste este depósito
 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Obter uma lista de todos os navios em cujas ordens conste este depósito
 STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Obter uma lista de todas as aeronaves em cujas ordens conste um hangar deste aeroporto
@@ -3105,12 +3172,12 @@
 STR_ENGINES                                                     :Locomotivas
 STR_WAGONS                                                      :Vagões
 
-STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os combóios no depósito
+STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os comboios no depósito
 STR_MASS_STOP_DEPOT_ROADVEH_TIP                                 :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os veículos no depósito
 STR_MASS_STOP_DEPOT_SHIP_TIP                                    :{BLACK}Pressione botão esquerdo do rato para imobilizar todos os navios no depósito
 STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Pressione botão esquerdo do rato para imobilizar todas as aeronaves no hangar
 
-STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Pressione botão esquerdo do rato para iniciar todos os combóios no depósito
+STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Pressione botão esquerdo do rato para iniciar todos os comboios no depósito
 STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Pressione botão esquerdo do rato para iniciar todos os veículos de estrada no depósito
 STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Pressione botão esquerdo do rato para iniciar todos os navios no depósito
 STR_MASS_START_HANGAR_TIP                                       :{BLACK}Pressione botão esquerdo do rato para iniciar todas as aeronaves no hangar
@@ -3250,6 +3317,7 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Comutar transparência para edificações como estações, depósitos, pontos-de-passagem e catenárias
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Comutar transparência para pontes
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Comutar transparência para estruturas como faróis-terrestres e antenas (talvez, no futuro, para embelezamentos)
+STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Alterar transparência para indicadores de carga
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3266,8 +3334,13 @@
 STR_GROUP_ALL_SHIPS                                             :Todos os barcos
 STR_GROUP_ALL_AIRCRAFTS                                         :Todas as aeronaves
 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
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Comboio{P "" s}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Veículo{P "" s} de estrada
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Barco{P "" s}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Avi{P "ão" "ões"}
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}Renomear um grupo
 STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Substituir Veículos de "{GROUP}"
 
@@ -3276,6 +3349,7 @@
 STR_GROUP_CAN_T_RENAME                                          :{WHITE}Impossível renomear o grupo...
 STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Não é possível remover todos os veículos deste grupo...
 STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Impossível adicionar o veículo a este grupo...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Impossível adicionar veículos com ordens partilhadas ao grupo...
 
 STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Grupos - Clique num grupo para listar todos os seus veículos
 STR_GROUP_CREATE_TIP                                            :{BLACK}Clique para criar um grupo
@@ -3298,5 +3372,12 @@
 STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Nome deve ser único
 
 #### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Ir para o próximo sinal
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ir para o sinal anterior
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Criar
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospectar
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Escolha a indústria apropriada desta lista
--- a/src/lang/romanian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/romanian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Livreazã marfa doar in statiile unde aceasta este ceruta: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Permite constructia de poduri foarte lungi: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Permite ordine de tipul "mergi la depou": {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Metoda manuala de constructie industrii primare: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :niciuna
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :ca alte industrii
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :de prospectie
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Permite mai multe industrii similare in acelasi oras: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industrii identice pot fi construite aproape una de cealaltã: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Afiseazã intotdeauna data in format lung in bara de stare: {ORANGE}{STRING}
@@ -1114,6 +1118,7 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Ultima disponibila
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Cea mai folosita
 
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Arata uneltele de constructie cand nu sunt disponibile vehiculele potrivite: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Nr. max. de trenuri per jucãtor: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Nr. max. de autovehicule pentru un jucãtor: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Nr. max. de aeronave pentru un jucãtor: {ORANGE}{STRING}
@@ -1236,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Esti sigur cã vrei sã creezi un peisaj aleator?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mai multe orase aleatoare
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Umple harta cu orase generate aleator
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Multe industrii aleatoare
+STR_MANY_RANDOM_INDUSTRIES                                      :Multe industrii aleatoare
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Umple harta cu industrii generate aleator
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nu pot genera industrii...
 
@@ -1975,6 +1980,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Are nevoie de: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Incarcatura in asteaptarea procesarii:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Producţia lunii trecute:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrează imaginea pe locaţia industriei
@@ -3359,4 +3367,8 @@
 
 STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Numele trebuie să fie unic
 
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Mergi la semnul urmator
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Mergi la semnul anterior
+
 ########
--- a/src/lang/russian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/russian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Вы уверены, что хотите создать случайную землю?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Много случайных городов
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Случайно разместить на карте города
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Много произвольных промышленностей
+STR_MANY_RANDOM_INDUSTRIES                                      :Много произвольных промышленностей
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Случайно разместить предприятия на карте
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Невозможно создать промышленность...
 
@@ -1982,6 +1982,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Требуется: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Груз, ожидающий переработки:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Произведено: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Произведено: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Произведено за прошлый месяц:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% перевезено)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Показать предприятие в основном окне
@@ -3382,3 +3389,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}К предыдущему знаку
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Профинансировать
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Разведать
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Построить
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Выберите тип производства из списка
--- a/src/lang/simplified_chinese.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/simplified_chinese.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1214,7 +1214,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}你确定要创建一个随机的景观吗?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}大量随机城镇
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}在地图上创建大量随机的城镇
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}大量随机工业
+STR_MANY_RANDOM_INDUSTRIES                                      :大量随机工业
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}在地图上创建大量随机的工业设施
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}不能生成工业设施……
 
--- a/src/lang/slovak.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/slovak.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1305,7 +1305,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Si si isty, ze chces vytvorit nahodny teren?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Vela nahodnych miest
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryt mapu nahodne umiestnenymi mestami
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Vela nahodneho priemyslu
+STR_MANY_RANDOM_INDUSTRIES                                      :Vela nahodneho priemyslu
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryt mapu nahodne umiestnenym priemyslom
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nemozno vygenerovat priemysel ...
 
@@ -2044,6 +2044,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Potrebuje: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Náklad cakajúci na spracovanie:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produkcia za posledny mesiac:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% prepravenych)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Vycentrovanie pohladu na poziciu tovarne
--- a/src/lang/slovenian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/slovenian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1076,6 +1076,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Dostavi tovor postaji le ob povpraševanju: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Dovoli gradnjo zelo dolgih mostov: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Dovoli ukaz 'pojdi v garažo': {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Glavni ročni način gradnje industrij: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :brez
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :kot ostale industrije
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :obetaven
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Dovoli več enakih industrij na mesto: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industrije enakega tipa lahko stojijo skupaj: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Vedno pokaži dolg datum v vrstici stanja: {ORANGE}{STRING}
@@ -1279,7 +1283,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Zagotovo želiš ustvariti naključno zemljišče?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Več naključnih mest
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Postavi na ozemlje naključna mesta
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Več naključnih industrij
+STR_MANY_RANDOM_INDUSTRIES                                      :Več naključnih industrij
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Postavi na ozemlje naključno industrijo
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ni mogoče zgraditi industrij ...
 
@@ -2056,6 +2060,9 @@
 STR_4829_REQUIRES                                               :{BLACK}Potrebuje: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Tovor na čakanju obdelave:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Proizvodnja prejšnjega meseca:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% prepeljano)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Pogled na industrijo
--- a/src/lang/spanish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/spanish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1242,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}¿Está seguro de generar un paisaje al azar?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Varias poblaciones al azar
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cubre el mapa con poblaciones colocadas al azar
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Varias industrias al azar
+STR_MANY_RANDOM_INDUSTRIES                                      :Varias industrias al azar
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cubre el mapa con industrias colocadas al azar
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}No se pueden crear industrias...
 
@@ -1981,6 +1981,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Requiere: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}La carga está esperando a ser procesada:
+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}Producción mes anterior:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrar la vista sobre la industria
@@ -3370,3 +3377,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ir a la señal anterior
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Fundar
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Perspectiva
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Construir
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Seleccione la industria apropiada de la lista
--- a/src/lang/swedish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/swedish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1034,6 +1034,10 @@
 STR_CONFIG_PATCHES_SELECTGOODS                                  :{LTBLUE}Leverera gods till en station enbart om någon frågar efter det: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGBRIDGES                                  :{LTBLUE}Tillåt väldigt långa broar: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_GOTODEPOT                                    :{LTBLUE}Tillåt order att gå till depå/bussgarage: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD             :{LTBLUE}Manuell prioritering för industrins konstruktionsmetod: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE        :Inget
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL      :Som andra industrier
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterande
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Tillåt flera industrier av samma typ per stad: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Industrier av samma typ kan byggas nära varandra: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Visa alltid långt datum i statusfältet: {ORANGE}{STRING}
@@ -1237,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Är du säker på att du vill generera ett slumpmässigt landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Många slumpmässiga städer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Täck kartan med slumpmässigt placerade städer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Många slumpmässiga industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Många slumpmässiga industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Täck kartan med slumpmässigt placerade industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan inte generera industrier...
 
@@ -1976,6 +1980,13 @@
 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}Last som väntar på att bli behandlad:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Producerar: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Producerar: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produktion förra månaden:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transporterat)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrera vyn ovanför industrin
@@ -3361,5 +3372,12 @@
 STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}Namnet måste vara unikt
 
 #### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Åk till nästa skylt
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Åk till föregående skylt
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Grunda
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospektera
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Bygga
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Välj lämplig industri från denna lista
--- a/src/lang/traditional_chinese.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/traditional_chinese.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -355,7 +355,7 @@
 STR_0158_COMPANY_VALUE_GRAPH                                    :公司市值圖表
 STR_0159_CARGO_PAYMENT_RATES                                    :貨物收費圖表
 STR_015A_COMPANY_LEAGUE_TABLE                                   :公司排行榜
-STR_PERFORMANCE_DETAIL_MENU                                     :詳細營運數據
+STR_PERFORMANCE_DETAIL_MENU                                     :詳細營運評比
 ############ range for menu ends
 
 STR_015B_OPENTTD                                                :{WHITE}關於OpenTTD
@@ -1206,7 +1206,7 @@
 STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}神奇剷泥車 (可以移除工業等平時拆不掉的東西):{ORANGE}{STRING}
 STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}隧道可以互相穿過:{ORANGE}{STRING}
 STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}於暫停模式建設:{ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}噴射客機不會經常於小型機場墜毁:{ORANGE} {STRING}
+STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}噴射客機不會經常於小型機場失事:{ORANGE} {STRING}
 STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}改變氣候:{ORANGE} {STRING}
 STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}改變日期:{ORANGE} {DATE_SHORT}
 STR_CHEAT_SETUP_PROD                                            :{LTBLUE}可改變產量:{ORANGE}{STRING}
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}你要建立一個隨機地形嗎?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}隨機產生多個市鎮
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}以隨機放置的市鎮佈滿版圖
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}隨機產生多個工業
+STR_MANY_RANDOM_INDUSTRIES                                      :隨機產生多個工業
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}以隨機放置的工業佈滿版圖
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}隨機產生工業失敗...
 
@@ -1318,7 +1318,7 @@
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}修改產量
 
 TEMP_AI_IN_PROGRESS                                             :{WHITE}歡迎使用正在開發的新 AI。如果有任何問題,歡迎擷取畫面放上討論區通知開發團隊。
-TEMP_AI_ACTIVATED                                               :{WHITE}警告: 這個新 AI 還在開發階段,目前僅於汽車上實作!
+TEMP_AI_ACTIVATED                                               :{WHITE}警告: 這個新 AI 還在開發階段,目前僅於公路上實作!
 TEMP_AI_MULTIPLAYER                                             :{WHITE}警告: 新 AI 實作仍在開發階段。如有任何問題,請 E-Mail 至 truelight@openttd.org。
 
 ############ network gui strings
@@ -1603,10 +1603,10 @@
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}鋪設單軌
 STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}鋪設磁浮軌
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}選擇鐵道橋樑
-STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}不能在這邊建築鐵道機廠...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}不能在這邊建築鐵道車站...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}不能在這邊建築號誌...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}不能在這邊建築鐵道...
+STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}不能在這邊設置鐵道機廠...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}不能在這邊設置鐵道車站...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}不能在這邊設置號誌...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}不能在這邊鋪設鐵道...
 STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}不能從這邊移除鐵道...
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}不能從這邊移除號誌...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}鐵道機廠方向
@@ -1615,11 +1615,11 @@
 STR_1016_MONORAIL_CONSTRUCTION                                  :鋪設單軌
 STR_1017_MAGLEV_CONSTRUCTION                                    :鋪設磁浮軌
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}鋪設鐵軌
-STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}建築鐵路機廠 (用來建造、維修列車)
-STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}建築鐵道車站
-STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}建築鐵道號誌
+STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}設置鐵路機廠 (用來購置、維修列車)
+STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}設置鐵道車站
+STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}設置鐵道號誌
 STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}建築鐵道橋樑
-STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}建築鐵道隧道
+STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}挖掘鐵道隧道
 STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}切換建築/移除鐵軌與號誌
 STR_101F_BRIDGE_SELECTION_CLICK                                 :{BLACK}選擇橋樑 - 點選想用的橋樑即可建造
 STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO                       :{BLACK}選擇鐵道機廠方向
@@ -1653,27 +1653,27 @@
 STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}不可以移除這裏的電車軌...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}車庫方向
 STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}電車
-STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}不能在此建築車庫...
+STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}不能在此設置車庫...
 STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}不可以在這裏興建電車維修廠...
-STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}無法建築公車站...
-STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}無法建築貨運站...
+STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}無法設置公車站...
+STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}無法設置貨運站...
 STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}不可以興建電車站...
 STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}不可興建載貨電車站...
 STR_180A_ROAD_CONSTRUCTION                                      :鋪設道路
 STR_180A_TRAMWAY_CONSTRUCTION                                   :鋪設電車軌
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}鋪設一段公路
 STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}興建電車站
-STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}建築車庫 (用來製造與維護公路車輛)
+STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}設置車庫 (用來購置與維護公路車輛)
 STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}興建電車維修廠 (供製造及維修用)
-STR_180D_BUILD_BUS_STATION                                      :{BLACK}建築公車站
-STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}建築貨運站
+STR_180D_BUILD_BUS_STATION                                      :{BLACK}設置公車站
+STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}設置貨運站
 STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}興建載客電車站
 STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}興建載貨電車站
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}建築公路橋樑
 STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}架設電車橋
-STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}建築公路隧道
+STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}挖掘公路隧道
 STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}開鐅電車隧道
-STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}切換建築/移除公路
+STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}切換鋪設/移除公路
 STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}鋪設電車軌開關
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}選擇車庫方向
 STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}選擇電車維修廠方向
@@ -1694,7 +1694,7 @@
 STR_TOWN_LABEL_TINY_BLACK                                       :{TINYFONT}{BLACK}{TOWN}
 STR_TOWN_LABEL_TINY_WHITE                                       :{TINYFONT}{WHITE}{TOWN}
 STR_2002                                                        :{TINYFONT}{BLACK}{SIGN}
-STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}必須先摧毀建築
+STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}必須先摧毀建物
 STR_2005                                                        :{WHITE}{TOWN}
 STR_2006_POPULATION                                             :{BLACK}人口:{ORANGE}{COMMA}{BLACK}  房屋:{ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :修改城鎮名稱
@@ -1833,7 +1833,7 @@
 STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}本地對運輸服務的評價:
 
 ############ range for rating starts
-STR_3035_APPALLING                                              :駭人聽聞
+STR_3035_APPALLING                                              :慘不忍睹
 STR_3036_VERY_POOR                                              :非常糟糕
 STR_3037_POOR                                                   :糟糕
 STR_3038_MEDIOCRE                                               :普通
@@ -1883,8 +1883,8 @@
 STR_3061_TRUCK_LOADING_AREA                                     :貨運場
 STR_3062_BUS_STATION                                            :公車站
 STR_3063_SHIP_DOCK                                              :船塢
-STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}顯示建築地點的運輸涵蓋範圍
-STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}不顯示建築地點的運輸涵蓋範圍
+STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}顯示設置地點的運輸涵蓋範圍
+STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}不顯示設置地點的運輸涵蓋範圍
 STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}顯示運輸涵蓋範圍
 STR_3068_DOCK                                                   :{WHITE}碼頭
 STR_3069_BUOY                                                   :浮標
@@ -1980,6 +1980,9 @@
 STR_4829_REQUIRES                                               :{BLACK}需要:{YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}囤積的貨物:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}上月產量:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} (運送了 {COMMA}%)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}將主視野帶到工業上方
@@ -2003,7 +2006,7 @@
 
 ##id 0x5000
 STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}隧道內有列車
-STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}隧道內有汽車
+STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}隧道內有車輛
 STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}被另一條隧道擋住
 STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}無法挖掘隧道出口
 STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}必須先摧毀隧道
@@ -2022,7 +2025,7 @@
 STR_5014_TUBULAR_STEEL                                          :管橋,鋼製
 STR_BRIDGE_TUBULAR_SILICON                                      :管橋,玻璃纖維製
 STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}無法在此建造橋樑...
-STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}無法在此建築隧道...
+STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}無法在此挖掘隧道...
 STR_5017_RAILROAD_TUNNEL                                        :鐵道隧道
 STR_5018_ROAD_TUNNEL                                            :公路隧道
 STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :鐵道鋼吊橋
@@ -2057,7 +2060,7 @@
 STR_SV_EMPTY                                                    :
 STR_SV_UNNAMED                                                  :未命名
 STR_SV_TRAIN_NAME                                               :列車 {COMMA}
-STR_SV_ROADVEH_NAME                                             :汽車 {COMMA}
+STR_SV_ROADVEH_NAME                                             :車輛 {COMMA}
 STR_SV_SHIP_NAME                                                :船舶 {COMMA}
 STR_SV_AIRCRAFT_NAME                                            :飛機 {COMMA}
 
@@ -2233,7 +2236,7 @@
 STR_7038_INAUGURATED                                            :{GOLD}成立於:{WHITE}{NUM}
 STR_7039_VEHICLES                                               :{GOLD}運具:
 STR_TRAINS                                                      :{WHITE}列車 {COMMA} 列
-STR_ROAD_VEHICLES                                               :{WHITE}汽車 {COMMA} 輛
+STR_ROAD_VEHICLES                                               :{WHITE}車輛 {COMMA} 部
 STR_AIRCRAFT                                                    :{WHITE}飛機 {COMMA} 架
 STR_SHIPS                                                       :{WHITE}船舶 {COMMA} 艘
 STR_7042_NONE                                                   :{WHITE}無
@@ -2306,7 +2309,7 @@
 STR_7080_PROTECTED                                              :{WHITE}這間公司才剛成立,還不能交易股票...
 
 STR_LIVERY_DEFAULT                                              :標準配色
-STR_LIVERY_STEAM                                                :蒸汽車頭
+STR_LIVERY_STEAM                                                :蒸汽機車
 STR_LIVERY_DIESEL                                               :柴油車頭
 STR_LIVERY_ELECTRIC                                             :電力車頭
 STR_LIVERY_MONORAIL                                             :單軌車頭
@@ -2329,7 +2332,7 @@
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}顯示通用配色
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}顯示鐵道配色
-STR_LIVERY_ROADVEH_TIP                                          :{BLACK}顯示汽車配色
+STR_LIVERY_ROADVEH_TIP                                          :{BLACK}顯示車輛配色
 STR_LIVERY_SHIP_TIP                                             :{BLACK}顯示船舶配色
 STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}顯示飛機配色
 STR_LIVERY_PRIMARY_TIP                                          :{BLACK}選擇選定配色的主色調
@@ -2596,7 +2599,7 @@
 STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}運具製造商的訊息
 STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}我們剛設計了一種新{STRING} - 您有興趣獨家使用它一年,讓我們在正式發佈之前觀察它的表現嗎?
 STR_8102_RAILROAD_LOCOMOTIVE                                    :鐵道機車頭
-STR_8103_ROAD_VEHICLE                                           :汽車
+STR_8103_ROAD_VEHICLE                                           :車輛
 STR_8104_AIRCRAFT                                               :飛機
 STR_8105_SHIP                                                   :船舶
 STR_8106_MONORAIL_LOCOMOTIVE                                    :單軌機車頭
@@ -2658,9 +2661,9 @@
 STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}鐵道車輛
 
 STR_881F_BUILD_VEHICLE                                          :{BLACK}購買車輛
-STR_CLONE_ROAD_VEHICLE                                          :{BLACK}複製汽車
-STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}這將購買一輛一樣的汽車。按住 CTRL 點選還可共享指令
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}這將購買一輛一樣的汽車。按下按鈕之後再點選車庫内外的汽車。按住 CTRL 點選還可共享指令
+STR_CLONE_ROAD_VEHICLE                                          :{BLACK}複製車輛
+STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}此舉將購買一部相同的車輛。按住 CTRL 點選還可共享指令
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}此舉將購買一部相同的車輛。按下按鈕之後再點選於車庫内或外的車輛。按住 CTRL 點選還可共享指令
 STR_CLONE_TRAIN                                                 :{BLACK}複製列車
 STR_CLONE_TRAIN_INFO                                            :{BLACK}這將購買一列一樣的列車,包含所有車廂。按住 CTRL 點選還可共享指令
 STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}這將購買一列一樣的列車,包含所有車廂。按下按鈕之後再點選機廠内外的其他列車。按住 CTRL 點選還可共享指令
@@ -2784,13 +2787,13 @@
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}前方有汽車
-STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - 汽車 {COMMA} 輛
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - 車輛 {COMMA} 部
 STR_9002                                                        :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} 汽車車庫
+STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} 車庫
 STR_9004_NEW_VEHICLES                                           :{BLACK}購買新車輛
-STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}購買新汽車
+STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}購置新車輛
 STR_9007_BUILD_VEHICLE                                          :{BLACK}購買車輛
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}無法購買汽車
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}無法購置車輛
 STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (詳細資料)
 STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}使用年數:{LTBLUE}{STRING}{BLACK}   營運支出:{LTBLUE}{CURRENCY}/年
 STR_900E_MAX_SPEED                                              :{BLACK}極速:{LTBLUE}{VELOCITY}
@@ -2798,57 +2801,57 @@
 STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}可靠度:{LTBLUE}{COMMA}%  {BLACK}上次維護後故障次數:{LTBLUE}{COMMA}
 STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   購買於:{LTBLUE}{NUM}{BLACK} 價值:{LTBLUE}{CURRENCY}
 STR_9012_CAPACITY                                               :{BLACK}容量:{LTBLUE}{CARGO}
-STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...必須停在汽車庫内
-STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}無法出售汽車...
-STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}無法停止/起動汽車...
-STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}汽車 {COMMA} 已在車庫内待命
+STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...必須停在車庫内
+STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}無法出售車輛...
+STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}無法停止/起動車輛...
+STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}車輛 {COMMA} 已在車庫内待命
 STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}正前往 {TOWN} 車庫
 STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}正前往 {TOWN} 車庫, {VELOCITY}
 STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}在 {TOWN} 車庫維護中
 STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}在 {TOWN} 車庫維護中, {VELOCITY}
-STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}無法將汽車送到車庫...
+STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}無法將車輛送至車庫...
 STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}找不到附近的車庫
-STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}汽車 - 點選車輛檢視詳細資料
-STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}購買新汽車 (需要汽車庫)
+STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}車輛 - 點選車輛檢視詳細資料
+STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}購置新車輛 (需要車庫)
 STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}目前車輛動作 - 按此可停止/起動車輛
 STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}顯示車輛指令
 STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}將主視野移到車輛位置
 STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}將車輛送到車庫。按住 CTRL 點選則只做維護
 STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}強制車輛掉頭
 STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}顯示車輛詳細資訊
-STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}車輛 - 點選車輛顯示詳細資訊
-STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}購買新汽車
+STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}車輛 - 點選車輛顯示詳細資料
+STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}購置新車輛
 STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}將氣車拉至此即可出售
 STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}將主視野移到車庫位置
-STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}汽車清單 - 點選汽車可看到詳細資訊
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}購買選定的汽車
+STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}車輛清單 - 點選車輛可看到詳細資料
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}購置選定的車輛
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}價格:{CURRENCY}{}速度:{VELOCITY}{}營運費用:{CURRENCY}/年{}容量:{CARGO}
 STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}容量:{LTBLUE}
 STR_BARE_CARGO                                                  :{CARGO}
 
-STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}命名汽車
-STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}無法命名汽車...
-STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}命名汽車
+STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}為車輛命名
+STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}無法為車輛命名...
+STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}為車輛命名
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛公車抵達 {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛貨車抵達 {STATION}!
 STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛客運輕軌抵達 {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛貨運輕軌抵達 {STATION}!
-STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}汽車撞毀!{}駕駛在與列車相撞後死於火球下
-STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}汽車撞毀!{}與列車相撞後 {COMMA} 人死於火球下
-STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}無法使汽車掉頭...
+STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}車禍!{}駕駛在與列車對撞後罹難
+STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}車禍!{}車輛在與列車對撞後, 造成 {COMMA} 人罹難
+STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}無法使車輛掉頭...
 STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}無法迴轉由許多單位構成的車輛
 STR_9034_RENAME                                                 :{BLACK}更名
-STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}為汽車類型更名
-STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}為汽車類型更名
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}無法為汽車類型更名...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :前往 {TOWN} 汽車庫
+STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}為車輛類型更名
+STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}為車輛類型更名
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}無法為車輛類型更名...
+STR_9038_GO_TO_ROADVEH_DEPOT                                    :前往 {TOWN} 車庫
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :在 {TOWN} 車庫維護
 
-STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}改裝汽車以運送不同的酬載
-STR_REFIT_ROAD_VEHICLE                                          :{BLACK}改裝汽車
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}改裝汽車以運送指定的酬載
-STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}無法改裝汽車...
-STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}選擇汽車要運送的酬載種類
+STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}改裝車輛以運送不同的酬載
+STR_REFIT_ROAD_VEHICLE                                          :{BLACK}改裝車輛
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}改裝車輛以運送指定的酬載
+STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}無法改裝車輛...
+STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}選擇車輛要運送的酬載種類
 
 ##id 0x9800
 STR_9800_DOCK_CONSTRUCTION                                      :建造碼頭
@@ -2884,7 +2887,7 @@
 STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}船舶 {COMMA} 已在船塢待命
 STR_981D_BUILD_SHIP_DOCK                                        :{BLACK}建造碼頭
 STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING                          :{BLACK}建造船塢 (用以購買/維護船舶)
-STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}船舶 - 點選船舶可看到詳細資訊
+STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}船舶 - 點選船舶可看到詳細資料
 STR_9820_BUILD_NEW_SHIP                                         :{BLACK}購買新船舶
 STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}將船舶拉至此即可出售
 STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}將主視野移到船塢上方
@@ -2975,8 +2978,8 @@
 STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}無法命名飛機
 STR_A032_NAME_AIRCRAFT                                          :{BLACK}命名飛機
 STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}市民慶賀 . . .{}首架飛機抵達 {STATION}!
-STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}墜機!{}{COMMA} 名乘客與機組員死於 {STATION} 的火球下
-STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}飛機墜毀!{}飛機用光燃油, {COMMA} 死在火球裡!
+STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}空難!{}{COMMA} 名乘客與機組員不幸罹難於 {STATION}
+STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}空難!{}飛機燃油耗盡, {COMMA} 名乘客與機組員不幸罹難
 STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
 STR_A037_RENAME                                                 :{BLACK}更名
 STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}重新命名飛機種類
@@ -2997,7 +3000,7 @@
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}{STATION} 發生飛船災難!
-STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}汽車被 UFO 摧毀!
+STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}車輛被 UFO 擊毀!
 STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}{TOWN} 附近的煉油廠爆炸!
 STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}{TOWN} 附近的工廠發生事故被毀!
 STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}UFO 在 {TOWN} 附近著陸!
@@ -3008,7 +3011,7 @@
 STR_BRIBE_FAILED_2                                              :{WHITE}已經被調查員發現
 STR_BUILD_DATE                                                  :{BLACK}建於:{LTBLUE}{DATE_LONG}
 
-STR_PERFORMANCE_DETAIL                                          :{WHITE}詳細效率評比
+STR_PERFORMANCE_DETAIL                                          :{WHITE}詳細營運評比
 STR_PERFORMANCE_DETAIL_KEY                                      :{BLACK}詳細資料
 STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY                          :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
 STR_PERFORMANCE_DETAIL_AMOUNT_INT                               :{BLACK}({COMMA}/{COMMA})
@@ -3026,7 +3029,7 @@
 STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}貸款:
 STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}總計:
 ############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}運具數量;這包含汽車、鐵道、船舶與飛機
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}運具數量;這包含鐵公路車輛、船舶與飛機
 STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}車站部分的數量。每部份車站 (火車站,公車站,機場) 都算在内,就算連在一起亦然
 STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}使用超過兩年的運具之中,最低收入車輛的損益
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}之前三年的單月最低收入
@@ -3105,12 +3108,12 @@
 STR_SHIP                                                        :{BLACK}{SHIP}
 
 STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - 列車 {COMMA} 列
-STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - 汽車 {COMMA} 輛
+STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - 車輛 {COMMA} 部
 STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - 飛機 {COMMA} 架
 STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - 船舶 {COMMA} 艘
 
 STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}顯示所有指令內包含這個站場的列車
-STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}顯示所有指令内包含這個站場的汽車
+STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}顯示所有指令内包含這個車站的車輛
 STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}顯示所有指令内包含這座站場的飛機
 STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}顯示所有指令内包含這個站場的船舶
 
@@ -3122,22 +3125,22 @@
 STR_DEPOT_WRONG_DEPOT_TYPE                                      :錯誤的機廠類型
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}出售機廠内所有列車
-STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}出售車庫内所有汽車
+STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}出售車庫内所有車輛
 STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}出售船塢内所有船舶
 STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}出售機棚内所有飛機
 
 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}取得所有命令内有這個機廠的列車
-STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}取得所有命令内有這個車庫的汽車
+STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}取得所有命令内有這個車庫的車輛
 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}取得所有命令内有這個船塢的船舶
 STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}取得所有命令内有這個機場的機棚的飛機
 
 STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}自動替換所有機廠内列車
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}自動替換所有車庫内汽車
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}自動替換所有車庫内車輛
 STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}自動替換所有船塢内船舶
 STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}自動替換所有機棚内飛機
 
 STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - 列車 {COMMA} 列
-STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - 汽車 {COMMA} 輛
+STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - 車輛 {COMMA} 部
 STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - 船舶 {COMMA} 艘
 STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - 飛機 {COMMA} 架
 
@@ -3171,7 +3174,7 @@
 STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}按下可停止機棚内所有飛機
 
 STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}按下可起動機廠内所有列車
-STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}按下可起動車庫内所有汽車
+STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}按下可起動車庫内所有車輛
 STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}按下可起動船塢内所有船舶
 STR_MASS_START_HANGAR_TIP                                       :{BLACK}按下可起動機棚内所有飛機
 
--- a/src/lang/turkish.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/turkish.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1232,7 +1232,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Arazinin rasgele düzenlenmesini istediğinizden emin misiniz?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Birçok rastgele şehir
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Haritayı rastgele şehirlerle doldur
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Birçok rastgele fabrika
+STR_MANY_RANDOM_INDUSTRIES                                      :Birçok rastgele fabrika
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Haritayı rastgele fabrikalarla doldur
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Fabrika yapılamıyor...
 
@@ -1964,6 +1964,7 @@
 STR_4829_REQUIRES                                               :{BLACK}İstenenler: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Geçen ayki üretim:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} (%{COMMA} tasindi)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Fabrikaya git
@@ -2717,6 +2718,7 @@
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Seçili talimatı yaparken tren dolana kadar beklesin
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Seçili talimatı yaparken tren mutlaka yükünü boşaltsın
 STR_TIMETABLE_TOOLTIP                                           :{BLACK}Zaman çizelgesi - işaretlemek için bir talimata tıklayın.
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Geç kalma sayacını sıfırla, böylece araç zamanında gitmiş sayılacak
 STR_SERVICE_HINT                                                :{BLACK}Bakım gerekmiyorsa bunu atla
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Fiyat: {CURRENCY} Ağırlık: {WEIGHT_S}{}Hız: {VELOCITY}  Güç: {POWER}{}Bakım: {CURRENCY}/sene{}Kapasite: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Bozuldu
@@ -2758,7 +2760,10 @@
 STR_TIMETABLE_STATUS_ON_TIME                                    :Bu araç zamanında çalışıyor
 STR_TIMETABLE_STATUS_LATE                                       :Bu araç {STRING} geç çalışıyor
 STR_TIMETABLE_STATUS_EARLY                                      :Bu araç {STRING} erken çalışıyor
+STR_TIMETABLE_TOTAL_TIME                                        :Bu zaman çizelgesinin bitmesi {STRING} sürecek
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Bu zaman çizelgesinin bitmesi en az {STRING} sürecek (tamamı hesaplanmadı)
 STR_TIMETABLE_AUTOFILL                                          :{BLACK}Otomatik doldur
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Zaman tablosunu ilk seferde elde edilen değerleri kullanarak doldur
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Yolda araba var
@@ -3337,7 +3342,10 @@
 STR_SIGN_NAME                                                   :{SIGN}
 STR_VEHICLE_NAME                                                :{VEHICLE}
 
+STR_NAME_MUST_BE_UNIQUE                                         :{WHITE}İsim daha önce kullanılmamış olmalı
 
 #### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Sonraki tabelaya git
+STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Önceki tabelaya git
 
 ########
--- a/src/lang/ukrainian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/ukrainian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1367,7 +1367,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ви дійсно бажаєте створити ландшафт випадково?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Багато різних міст
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Випадково розташувати міста по карті
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Багато різної промисловості
+STR_MANY_RANDOM_INDUSTRIES                                      :Багато різної промисловості
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Випадково розташувати промисловість по карті
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Неможливо створити промисловість...
 
@@ -2143,6 +2143,13 @@
 STR_4829_REQUIRES                                               :{BLACK}Потребує: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Вантаж чекає на обробку:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Продукція: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Продукція: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Вироблено за місяць:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% перевезено)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Показати в центрі екрану
@@ -3532,3 +3539,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Попереднє позначення
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Фінансувати
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Огляд
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Будувати
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Виберіть необхідне виробництво
--- a/src/lang/unfinished/afrikaans.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1124,7 +1124,7 @@
 
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Is jy seker jy wil 'n lukraake landeryke skep?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Baie lukraak stede
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Baie luraak nyweheide
+STR_MANY_RANDOM_INDUSTRIES                                      :Baie luraak nyweheide
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan nie nywerheide ontwikkel nie...
 
 STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Oppe die landargitekteur werktuigbaan om land te verhoog/verlaag, boome beplant, ens.
--- a/src/lang/unfinished/greek.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/greek.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1198,7 +1198,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Είστε σίγουρος ότι θέλετε να δημιουργήσετε ένα τυχαίο τοπίο;
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Πολλές τυχαίες πόλεις
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Κάλυψη του χάρτη με τυχαία τοποθετημένες πόλεις
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Πολλές τυχαίες βιομηχανίες
+STR_MANY_RANDOM_INDUSTRIES                                      :Πολλές τυχαίες βιομηχανίες
 
 
 
@@ -2017,3 +2017,4 @@
 
 ########
 
+
--- a/src/lang/unfinished/latvian.txt	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/lang/unfinished/latvian.txt	Fri Jul 13 09:18:50 2007 +0000
@@ -1,28 +1,32 @@
 ##name Latvian
-##ownname Latviešu valoda
+##ownname Latviešu
 ##isocode lv_LV
 ##plural 3
+##case a
+##gender m n f
+
+#
 
 ##id 0x0000
 STR_NULL                                                        :
-STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}A'rpus kartes robez'as
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Pa'ra'k tuvu kartes malai
-STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nepietiek naudas - vajag {CURRENCY}
+STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Ārpus kartes robežām
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Pārāk tuvu kartes malai
+STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nepietiek naudas - nepieciešami {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
 STR_0005                                                        :{RED}{CURRENCY}
 STR_EMPTY                                                       :
-STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Zemei ja'bu't plakanai
-STR_0008_WAITING                                                :{BLACK}Gaidam: {WHITE}{STRING}
+STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Zemei jābūt plakanai
+STR_0008_WAITING                                                :{BLACK}Gaidam: {WHITE}{STRING.a}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (cel'a' no
+STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (ceļā no
 STR_000B                                                        :{YELLOW}{STATION})
-STR_000C_ACCEPTS                                                :{BLACK}Pien'em: {WHITE}
-STR_000D_ACCEPTS                                                :{BLACK}Pien'em: {GOLD}
+STR_000C_ACCEPTS                                                :{BLACK}Pieņem: {WHITE}
+STR_000D_ACCEPTS                                                :{BLACK}Pieņem: {GOLD}
 STR_000E                                                        :
-STR_000F_PASSENGERS                                             :Pasaz'ierus
+STR_000F_PASSENGERS                                             :Pasažieri
 STR_0010_COAL                                                   :Ogles
-STR_0011_MAIL                                                   :Pastu
-STR_0012_OIL                                                    :Naftu
+STR_0011_MAIL                                                   :Pasts
+STR_0012_OIL                                                    :Nafta
 STR_0013_LIVESTOCK                                              :Liellopus
 STR_0014_GOODS                                                  :Preces
 STR_0015_GRAIN                                                  :Graudus
@@ -146,12 +150,15 @@
 STR_ABBREV_BATTERIES                                            :{TINYFONT}BT
 STR_ABBREV_PLASTIC                                              :{TINYFONT}PL
 STR_ABBREV_FIZZY_DRINKS                                         :{TINYFONT}BU
+STR_ABBREV_NONE                                                 :{TINYFONT}NAV
+STR_ABBREV_ALL                                                  :{TINYFONT}VISI
 STR_00AE                                                        :{WHITE}{DATE_SHORT}
 STR_00AF                                                        :{WHITE}{DATE_LONG}
 STR_00B0_MAP                                                    :{WHITE}Karte - {STRING}
 STR_00B1_GAME_OPTIONS                                           :{WHITE}Spe'les parametri
 STR_00B2_MESSAGE                                                :{YELLOW}Zin'ojums
 STR_00B3_MESSAGE_FROM                                           :{YELLOW}Zin'ojums no {STRING}
+STR_POPUP_CAUTION_CAPTION                                       :{WHITE}Uzmanību!
 STR_00B4_CAN_T_DO_THIS                                          :{WHITE}Ta' nevar dari't....
 STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}S'o laukumu nevar noli'dzina't....
 STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Org'ìina'la's autortiesi'bas {COPYRIGHT} 1995 Chris Sawyer, Visas tiesi'bas rezerve'tas
@@ -277,6 +284,7 @@
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
 STR_OSNAME_OS2                                                  :OS/2
+STR_OSNAME_SUNOS                                                :SunOS
 
 STR_013B_OWNED_BY                                               :{WHITE}...pieder {STRING}
 STR_013C_CARGO                                                  :{BLACK}Krava
@@ -284,12 +292,15 @@
 STR_013E_CAPACITIES                                             :{BLACK}Ietilpi'ba
 STR_013E_TOTAL_CARGO                                            :{BLACK}Krava kopa'
 STR_013F_CAPACITY                                               :{BLACK}Ietilpi'ba: {LTBLUE}{CARGO}
+STR_CAPACITY_MULT                                               :{BLACK}Ietilpība: {LTBLUE}{CARGO} (x{NUM})
 STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Kope'ja' vilciena kravas ietilpi'ba:
 STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Jauna spe'le
 STR_0141_LOAD_GAME                                              :{BLACK}Iela'de't spe'li
 STR_SINGLE_PLAYER                                               :{BLACK}Viens spe'le'ta'js
 STR_MULTIPLAYER                                                 :{BLACK}Daudz-spe'le'ta'ju
+STR_SCENARIO_EDITOR                                             :{BLACK}Scenāriju redaktors
 
 STR_64                                                          :64
 STR_128                                                         :128
@@ -306,6 +317,34 @@
 STR_0152_TOWN_DIRECTORY                                         :Pilse'tu saraksts
 STR_0153_SUBSIDIES                                              :Subsi'dijas
 
+STR_UNITS_IMPERIAL                                              :Britu
+STR_UNITS_METRIC                                                :Metriska
+STR_UNITS_SI                                                    :SI
+
+STR_UNITS_VELOCITY_IMPERIAL                                     :{COMMA} jūdzes/h
+STR_UNITS_VELOCITY_METRIC                                       :{COMMA} km/h
+STR_UNITS_VELOCITY_SI                                           :{COMMA} m/s
+
+STR_UNITS_POWER_IMPERIAL                                        :{COMMA} zs
+STR_UNITS_POWER_METRIC                                          :{COMMA} zs
+STR_UNITS_POWER_SI                                              :{COMMA} kW
+
+STR_UNITS_WEIGHT_SHORT_IMPERIAL                                 :{COMMA}t
+STR_UNITS_WEIGHT_SHORT_METRIC                                   :{COMMA}t
+STR_UNITS_WEIGHT_SHORT_SI                                       :{COMMA}kg
+
+STR_UNITS_WEIGHT_LONG_SI                                        :{COMMA} kg
+
+STR_UNITS_VOLUME_SHORT_IMPERIAL                                 :{COMMA}galoni
+STR_UNITS_VOLUME_SHORT_METRIC                                   :{COMMA}l
+STR_UNITS_VOLUME_SHORT_SI                                       :{COMMA}m³
+
+STR_UNITS_VOLUME_LONG_SI                                        :{COMMA} m³
+
+STR_UNITS_FORCE_IMPERIAL                                        :{COMMA}x10³ mārciņasf
+STR_UNITS_FORCE_METRIC                                          :{COMMA} tonnu spēks
+STR_UNITS_FORCE_SI                                              :{COMMA} kN
+
 ############ range for menu starts
 STR_0154_OPERATING_PROFIT_GRAPH                                 :Pana'kumu grafiks
 STR_0155_INCOME_GRAPH                                           :Iena'kumu grafiks
@@ -322,7 +361,7 @@
 STR_015D_LOAD_GAME                                              :Iela'de't spe'li
 STR_015E_QUIT_GAME                                              :Pamest spe'li
 STR_015F_QUIT                                                   :Iziet a'ra'
-STR_0160_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Vai tu patiesi gribi pamest s'o spe'li?
+STR_ABANDON_GAME_QUERY                                          :{YELLOW}Vai jūs tiešām vēlaties pārtraukt šo spēli?
 STR_0161_QUIT_GAME                                              :{WHITE}Pamest spe'li
 STR_SORT_ORDER_TIP                                              :{BLACK}Izve'le'ties saka'rtojumu (dilstos's/augos's)
 STR_SORT_CRITERIA_TIP                                           :{BLACK}Izve'le'ties sorte's'anas krite'riju
@@ -342,6 +381,34 @@
 STR_SORT_BY_RELIABILITY                                         :Dros'i'ba
 STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Kope'ja' ietilpi'ba pe'c kravas tipa
 STR_SORT_BY_MAX_SPEED                                           :maksima'lais a'trums
+STR_SORT_BY_MODEL                                               :Modelis
+STR_SORT_BY_VALUE                                               :Vērtība
+STR_SORT_BY_FACILITY                                            :Stacijas veids
+STR_SORT_BY_WAITING                                             :Gaidošās kravas vērtība
+STR_SORT_BY_RATING_MAX                                          :Kravas reitings
+STR_ENGINE_SORT_ENGINE_ID                                       :DzinējaID (klasiskais veids)
+STR_ENGINE_SORT_COST                                            :Izmaksas
+STR_ENGINE_SORT_POWER                                           :Jauda
+STR_ENGINE_SORT_INTRO_DATE                                      :Ieviešanas datums
+STR_ENGINE_SORT_RUNNING_COST                                    :Lietošanas izmaksas
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Jauda/lietošanas izmaksas
+STR_ENGINE_SORT_CARGO_CAPACITY                                  :Kravnesība
+STR_NO_WAITING_CARGO                                            :{BLACK}Neviena veida krava negaida
+STR_SELECT_ALL_FACILITIES                                       :{BLACK}Izvēlēties visu aprīkojumu
+STR_SELECT_ALL_TYPES                                            :{BLACK}Izvēlēties visus kravas veidus (ieskaitot, kas negaida)
+STR_AVAILABLE_TRAINS                                            :{BLACK}Pieejamie vilcieni
+STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Pieejamie transportlīdzekļi
+STR_AVAILABLE_SHIPS                                             :{BLACK}Pieejamie kuģi
+STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Pieejamās lidmašīnas
+STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Apskatīties visus vilcējus, kas pieejami šim transportlīdzekļu veidam.
+STR_MANAGE_LIST                                                 :{BLACK}Labot sarakstu
+STR_MANAGE_LIST_TIP                                             :{BLACK}Dot norādījumus visiem transportlīdzekļiem, kas ir šajā sarakstā
+STR_REPLACE_VEHICLES                                            :Nomainīt transportlīdzekļus
+STR_SEND_TRAIN_TO_DEPOT                                         :Sūtīt uz depo
+STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Sūtīt uz depo
+STR_SEND_SHIP_TO_DEPOT                                          :Sūtīt uz depo
+STR_SEND_AIRCRAFT_TO_HANGAR                                     :Sūtīt uz angāru
+STR_SEND_FOR_SERVICING                                          :Sūtīt uz apkalpošanu
 
 ############ range for months starts
 STR_0162_JAN                                                    :Jan
@@ -407,8 +474,8 @@
 STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}S'i' gada iena'kums: {CURRENCY} (paga'jus'aja' gada': {CURRENCY})
 
 ############ range for service numbers starts
-STR_AGE                                                         :{COMMA} gad{P s i} ({COMMA})
-STR_AGE_RED                                                     :{RED}{COMMA} gad{P s i} ({COMMA})
+STR_AGE                                                         :{COMMA} gad{P s i u} ({COMMA})
+STR_AGE_RED                                                     :{RED}{COMMA} gad{P s i u} ({COMMA})
 ############ range for service numbers ends
 
 STR_019C_ROAD_VEHICLE                                           :Cel'u transporta li'dzeklis
@@ -508,6 +575,7 @@
 STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Dze'st tekos'o programmu (tikai 1.Specia'lo vai 2.Specia'lo)
 STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Saglaba't muzikas rez'i'mus
 STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Uzkliks'k'ini uz muzikas treku lai to pievienotu tekos'ajai programmai (1.Specia'lai vai 2.Specia'lai)
+STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Uzklikšķiniet uz dziemas, lai to izdzēstu no šībrīža programmas (tikai Pielāgotā1 un Pielāgotā2)
 STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Pa'rsle'gt muzikas saraksta sajauks'anu
 STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Para'di't muzikas saraksta atzi'me's'anas logu
 STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Uzkliks'k'ini uz servisa lai iecentre'tu skatu uz industriju vai pilse'tu
@@ -523,6 +591,7 @@
 STR_0207_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Sa'ncens'a stacija' ierodas pirmais transporta li'dzeklis
 STR_0208_ACCIDENTS_DISASTERS                                    :{YELLOW}Negadijumi / ava'rijas
 STR_0209_COMPANY_INFORMATION                                    :{YELLOW}Kompa'nijas informa'cija
+STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Atvērt / aizvērt industrijas
 STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Ekonomijas izmain'as
 STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Padoms / informa'cija par spe'le'ta'ja transporta li'dzekl'iem
 STR_020C_NEW_VEHICLES                                           :{YELLOW}Jaunie transporta li'dzekl'i
@@ -547,20 +616,18 @@
 STR_021B_ACHIEVES_STATUS                                        :{BLACK}{BIGFONT}{COMPANY} sasniegus'i  '{STRING}' statusu!
 STR_021C_OF_ACHIEVES_STATUS                                     :{WHITE}{BIGFONT}{PLAYERNAME} no {COMPANY} sasniegusi '{STRING}' statusu!
 STR_021F                                                        :{BLUE}{COMMA}
-STR_0220_CREATE_SCENARIO                                        :{BLACK}Radi't scena'riju
 STR_0221_OPENTTD                                                :{YELLOW}OpenTTD
 STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Scena'riju redaktors
 STR_0223_LAND_GENERATION                                        :{WHITE}Zemes g'enere's'ana
 STR_0224                                                        :{BLACK}{UPARROW}
 STR_0225                                                        :{BLACK}{DOWNARROW}
-STR_0226_RANDOM_LAND                                            :{BLACK}Nejaus'i g'enere'ta zeme
-STR_0227_RESET_LAND                                             :{BLACK}Atjaunot zemi
 STR_0228_INCREASE_SIZE_OF_LAND_AREA                             :{BLACK}Palielina't zemes apgabalu pazemina's'anai/pazels'anai
 STR_0229_DECREASE_SIZE_OF_LAND_AREA                             :{BLACK}Samazina't zemes apgabalu pazemina's'anai/pazels'anai
 STR_022A_GENERATE_RANDOM_LAND                                   :{BLACK}G'enere't nejaus'u zemi
 STR_022B_RESET_LANDSCAPE                                        :{BLACK}Atjaunot zemes virsu
 STR_022C_RESET_LANDSCAPE                                        :{WHITE}Atjaunot zemes virsu
-STR_022D_ARE_YOU_SURE_YOU_WANT_TO                               :{WHITE}Vai tu paties'a'm gribi atjaunot zemes virsu?
+STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Novākt visus spēlētājam piederošos īpašumus no kartes
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Vai esat drošs, ka vēlaties novākt visus spēlētājam piederošos īpašumus?
 STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Zemes virsas g'enere's'ana
 STR_022F_TOWN_GENERATION                                        :{BLACK}Pilse'tu g'enere's'ana
 STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Industrijas g'enere's'ana
@@ -671,7 +738,7 @@
 STR_0298_LOAD_SCENARIO                                          :{WHITE}Iela'de't scena'riju
 STR_0299_SAVE_SCENARIO                                          :{WHITE}Saglaba't scena'riju
 STR_029A_PLAY_SCENARIO                                          :{BLACK}Spe'le't scena'riju
-STR_029B_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Vai ju's ties'a'm ve'laties izbeigt s'o scena'riju?
+STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Vai esat pārliecināts, ka vēlaties pamest šo scenāriju?
 STR_029C_QUIT_EDITOR                                            :{WHITE}Beigt redaktoru
 STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...atl'auts bu've't tikai pilse'ta's ar iedzi'vota'ju skaitu vismaz 1200
 STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Pa'rvietot starta datumu 1 gadu uz atpakal'u
@@ -698,6 +765,7 @@
 STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION                         :{BLACK}Transporta li'dzekl'u dizaina nosaukumu izve'le
 STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Saglaba't specia'los transporta li'dzekl'a dizaina nosaukumus
 
+STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
 STR_02C3_GAME_OPTIONS                                           :Spe'les rez'i'mi
 STR_02C5_DIFFICULTY_SETTINGS                                    :Gru'ti'bas paka'pes
@@ -741,7 +809,9 @@
 STR_02E0_CURRENCY_UNITS                                         :{BLACK}Naudas vieni'bas
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
 STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Naudas vieni'bu izve'le
+STR_MEASURING_UNITS                                             :{BLACK}Mērvienības
 STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
+STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Mērvienību izvēle
 STR_02E6_ROAD_VEHICLES                                          :{BLACK}Cel'a satiksmes li'dzekl'i
 STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Braucama's cel'a puses izve'le
@@ -819,6 +889,8 @@
 STR_TOWNNAME_CZECH                                              :C'ehijas
 STR_TOWNNAME_SWISS                                              :S'veices
 STR_TOWNNAME_DANISH                                             :Da'n'u
+STR_TOWNNAME_TURKISH                                            :Turku
+STR_TOWNNAME_ITALIAN                                            :Itāļu
 ############ end of townname region
 
 STR_CURR_GBP                                                    :Ma'rcin'as (£)
@@ -844,6 +916,8 @@
 STR_CURR_ROL                                                    :Ruma'nijas lejas (ROL)
 STR_CURR_RUR                                                    :Krievijas rubl'i (RUR)
 STR_CURR_SEK                                                    :Zviedru kronas (SEK)
+STR_CURR_YTL                                                    :Turcijas lira (YTL)
+STR_CURR_SKK                                                    :Slovākijas krona (SKK)
 
 STR_CURR_CUSTOM                                                 :Specia'la...
 
@@ -892,6 +966,8 @@
 STR_RES_OTHER                                                   :cits
 STR_NOTHING                                                     :
 
+STR_SMALL_RIGHT_ARROW                                           :{TINYFONT}{RIGHTARROW}
+
 STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}Nevar dali'ties ar uzdevumu sarakstu...
 STR_CANT_COPY_ORDER_LIST                                        :{WHITE}Nevar kope't uzdevumu sarakstu...
 STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Dali'to uzdevumu beigas - -
@@ -960,6 +1036,7 @@
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Vienme'r atl'aut mazas lidostas: {ORANGE}{STRING}
 
+STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Brīdināt, ja vilciens apmaldās: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW                                 :{LTBLUE}Pa'rskati't transporta uzdevumus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW_OFF                             :Ne'
 STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT                         :Ja', izn'emot transporta li'dzekl'us kas apsta'dina'ti
@@ -972,91 +1049,313 @@
 STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Kl'u'das zin'ojuma ilgums: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Râdît pilsçtas iedzîvotâju skaitu pie pilsçtas nosaukuma: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Neredzami koki (ar caurspi'di'ga'm celtne'm): {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Parasts
+STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :TerraGenesis
 STR_CONFIG_PATCHES_SNOWLINE_HEIGHT                              :{LTBLUE}Sniega li'nijas augstums: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Reljefa raupjums (tikai TerraGenesis): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH             :Ļoti līdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Līdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Nelīdzena
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Ļoti nelīdzena
+STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Koku izvietošanas algoritms: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Nav
+STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Parasts
+STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Uzlabots
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :Pret pulksteņa radītaja virzienu
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :Pa pulksteņa radītaja virzienu
+
 STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Maksima'lais staciju izkaisijums: {ORANGE}{STRING} {RED}Uzmani'bu: augsts li'menis pale'lina spe'li
+STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Apkalpots helikopterus heliportos automātiski: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Sasaitē ainavas rīkjoslu ar dzelzceļa/ceļa/ūdens/lidostu rīkjoslu: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Pretējš pārtīšana virziens: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Rādīt mērījumu rīkjoslu, kas tiek izmantoti dažādi celniecības rīki: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Parādīt kompānijas ģildes: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES_NONE                                :Nav
+STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Paša uzņēmums
+STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Visi uzņēmumi
 
 
 
+STR_CONFIG_PATCHES_AINEW_ACTIVE                                 :{LTBLUE}Iespējot jauno mākslīgo intelektu (alpha): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER                            :{LTBLUE}Atļaut mākslīgo intelektu daudzlietotāju režīmā (eksperimentāls): {ORANGE}{STRING}
 
+STR_CONFIG_PATCHES_SERVINT_TRAINS                               :{LTBLUE}Noklusētais vilcienu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Noklusētais vilcienu apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Noklusētais autotransporta apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Noklusētais autotransporta apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Noklusētais lidaparātu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Noklusētais lidaparātu apkalpošanas periods: {ORANGE}atspējots
+STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Noklusētais kuģu apkalpošanas periods: {ORANGE}{STRING} dienas/%
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Noklusētais kuģu apkalpošanas periods: {ORANGE}atspējots
 STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Aizliedz servisu kad saboja's'ana's izsle'gta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Ieslēgt vagonu ātruma ierobežojumus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Izslēgt eletrificēto dzelzceļu: {ORANGE}{STRING}
 
+STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Krāsainās savīs parādās: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STARTING_YEAR                                :{LTBLUE}Sākuma gads: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ENDING_YEAR                                  :{LTBLUE}Nobeidz spe'li: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Ieslēgt lēzenas izmaiņas ekonomikā
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Atïauj akciju pirkðanu no citâm kompânijâm
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Kads velk, izvietot semaforus katras: {ORANGE}{STRING} šūnas
+
+
+STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Galvenās rīkjoslas izvietojums: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Pa kreisi
 STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Centrâ
 STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Pa labi
+STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Logu pielipšanas rādiuss: {ORANGE}{STRING} px
+STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Logu pielipšanas rādiuss: {ORANGE}atspējots
 
+STR_CONFIG_PATCHES_GUI                                          :{BLACK}Saskarne
+STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Būvniecība
+STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Transportlīdzekļi
 STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Stacijas
+STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Ekonomika
+STR_CONFIG_PATCHES_AI                                           :{BLACK}Pretiniekis
 
+STR_CONFIG_PATCHES_DISABLED                                     :atspējots
 STR_CONFIG_PATCHES_INT32                                        :{NUM}
 STR_CONFIG_PATCHES_CURRENCY                                     :{CURRENCY}
 
+STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Mainīt iestatījuma vērtību
+STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Daži vai visi apkalpošanas intervāli ir nesavietojami ar izvēlētajiem iestatījumiem! Der 5-90% un 30-800 dienas
+STR_CONFIG_PATCHES_YAPF_SHIPS                                   :{LTBLUE}Izmantot YAPF kuģiem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_ROAD                                    :{LTBLUE}Izmantot YAPF autotransportam: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_RAIL                                    :{LTBLUE}Izmantot YAPF vilcieniem: {ORANGE}{STRING}
 
+STR_TEMPERATE_LANDSCAPE                                         :Mērenais klimats
+STR_SUB_ARCTIC_LANDSCAPE                                        :Subarktiskais klimats
+STR_SUB_TROPICAL_LANDSCAPE                                      :Subtropiskais klimats
+STR_TOYLAND_LANDSCAPE                                           :Rotaļlietu zeme
 
+STR_CHEATS                                                      :{WHITE}Blēdības
+STR_CHEATS_TIP                                                  :{BLACK}Izvēlas rūtiņas norāda uz to, vai esat jau izmantojis šo blēdību
+STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Tuneļi drīkst krutoties: {ORANGE}{STRING}
+STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Būvniecības pauzes režīmā: {ORANGE}{STRING}
+STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Reaktīvās lidmašīnas neavarēs (bieži) mazajās lidostās: {ORANGE} {STRING}
+STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Klimata maiņa: {ORANGE} {STRING}
+STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Datuma maiņa: {ORANGE} {DATE_SHORT}
 STR_CHEAT_SETUP_PROD                                            :{LTBLUE}L'auj izmaini't produktu ve'rti'bas: {ORANGE}{STRING}
 
+STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Ceļā uz {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Ceļā uz {WAYPOINT}, {VELOCITY}
 
 STR_GO_TO_WAYPOINT                                              :Caur {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Brauc caur {WAYPOINT} bez apstāšanās
 
+STR_WAYPOINTNAME_CITY                                           :Kontrolpunkts {TOWN}
+STR_WAYPOINTNAME_CITY_SERIAL                                    :Kontrolpunkts {TOWN} #{COMMA}
+STR_LANDINFO_WAYPOINT                                           :Kontrolpunkts
 
+STR_WAYPOINT                                                    :{WHITE}Kontrolpunkts
+STR_WAYPOINT_GRAPHICS_TIP                                       :{BLACK}Izvēlaties kontrolpunkta veidu
 
 STR_WAYPOINT_VIEWPORT                                           :{WHITE}{WAYPOINT}
 STR_WAYPOINT_VIEWPORT_TINY                                      :{TINYFONT}{WHITE}{WAYPOINT}
 STR_WAYPOINT_RAW                                                :{WAYPOINT}
-
+STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Labot kontrolpunkta nosaukumu
 
+STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}Nevar pārsaukt kontrolpunktu...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Pārvērst sliedes par kontrolpunktu
+STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}Nevar šeit uzbūvēt vilcienu kontrolpunktu...
+STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}Nevar šeit noņemt vilcienu kontrolpunktu...
 
+STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Būvē dzelzceļu izmantojot Autosliežu režīmu
 
+STR_NO_TOWN_IN_SCENARIO                                         :{WHITE}...šajā scenārijā nav pilsētu
 
+STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Vai jūs esat pārliecināts, ka vēlaties izveidot nejauši izvēlētu ainavu?
+STR_MANY_RANDOM_TOWNS                                           :Daudz nejauši izveidotu pilsētu
+STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pāklāt karti ar nejauši izvietotām pilsētām
+STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Daudz nejauši izveidotu rūpniecību
+STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pāklāt karti ar nejauši izvietotām rūpniecībām
+STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nevar izveidot rūpniecības...
+
+STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Atvērt aiznavas rīkjoslu, lai mainīt zemes līmeni, stādīt kokus utt.
+STR_LANDSCAPING_TOOLBAR                                         :{WHITE}Ainava
 STR_LEVEL_LAND_TOOLTIP                                          :{BLACK}Izlidzinât zemi
 
 
+STR_TREES_RANDOM_TYPE                                           :{BLACK}Nejauši izvēlēta veida koki
+STR_TREES_RANDOM_TYPE_TIP                                       :{BLACK}Nejauši izveitot kokus
 
+STR_CANT_BUILD_CANALS                                           :{WHITE}Nedrīkst šeit būvēt kanālus...
+STR_BUILD_CANALS_TIP                                            :{BLACK}Būvēt kanālus. Nospiediet CTRL, lai izvietotu jūras šūnas (tikai jūras līmenī)
 STR_LANDINFO_CANAL                                              :Kanals
 
+STR_CANT_BUILD_LOCKS                                            :{WHITE}Nevar šeit būvet slūžas
+STR_BUILD_LOCKS_TIP                                             :{BLACK}Būvēt slūžas
+STR_LANDINFO_LOCK                                               :Slūžas
 
 STR_BUOY_IS_IN_USE                                              :{WHITE}...boja jau tiek lietota!
 
-
+STR_LANDINFO_COORDS                                             :{BLACK}Koordinātes: {LTBLUE}{NUM}x{NUM} ({STRING})
 
+STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Nevar novākt daļu stacijas
+STR_CANT_CONVERT_RAIL                                           :{WHITE}Nevar pārveidot sliežu veidu šeit...
+STR_CONVERT_RAIL_TIP                                            :{BLACK}Pārveidot/uzlabot sliežu veidu
 
+STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP                                :{BLACK}Pārvēlciet šeit vilciena lokomotīvi, lai pārdotu visu vilcienu
 
+STR_DRAG_DROP                                                   :{BLACK}Vilkt un nomest
+STR_STATION_DRAG_DROP                                           :{BLACK}Būvēt staciju izmantojot "vilkt un nomest"
+STR_SELECT_STATION_CLASS_TIP                                    :{BLACK}Izvēlaties, kādu stacijas klasi rādīt
+STR_SELECT_STATION_TYPE_TIP                                     :{BLACK}Izvēlaties, kādu stacijas veidu būvēt
 
+STR_FAST_FORWARD                                                :{BLACK}Paātrināta spēle
+STR_MESSAGE_HISTORY                                             :{WHITE}Ziņojumu vēsture
+STR_MESSAGE_HISTORY_TIP                                         :{BLACK}Neseno ziņu saraksts
+STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Atspējot visu
+STR_MESSAGES_ENABLE_ALL                                         :{BLACK}Iespējot visu
+
+STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Būvēt ogļu raktuvi
+STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Stādīt kokaudzētavu
+STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Būvēt naftas atradni
+STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Būvēt fermu
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Būvēt vara rūdas raktuvi
+STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Veikt naftas urbumu
+STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Būvēt zelta raktuvi
+STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Būvēt dimantu raktuvi
+STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Būvēt dzelzs rūdas raktuvi
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Finansēt augļu koku plantāciju
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Finansēt gumijkoku plantāciju
+STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Finansēt ūdens ieguvi
+STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Stādīt konfekšpūku mežu
+STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Finansēt bateriju fermu
+STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}Veikt kolas urbumus
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Finansēt plastmasas strūklakas
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}Būvēt burbuļu ģenerātoru
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Finansēt Toffee raktuves
+STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Būvēt cukura raktuves
 
 STR_INDUSTRYDIR_CAPTION                                         :{WHITE}Industrîjas
+STR_INDUSTRYDIR_ITEM                                            :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% pārvadāti)
+STR_INDUSTRYDIR_ITEM_TWO                                        :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}/{CARGO}){YELLOW} ({COMMA}%/{COMMA}% pārvadāti)
 STR_INDUSTRYDIR_ITEM_NOPROD                                     :{ORANGE}{INDUSTRY}
 
+STR_INDUSTRY_TOO_CLOSE                                          :{WHITE}...pārāk tuvu citai industrijai
 
+STR_RAIL_REFIT_VEHICLE_TO_CARRY                                 :{BLACK}Pielāgot vilcienu citas kravas pārvadāšanai
+STR_RAIL_REFIT_VEHICLE                                          :{BLACK}Pārbūvēt vilcienu
+STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Izvēlaties kravas veidu, ko pārvadāt ar vilcienu
+STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Pārbūvēt vilcienu izceltā kravas veida pārvadāšanai
+STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}Nevar pārbūvēt vilcienu...
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Apkalpošanas intervāls procentos: {ORANGE}{STRING}
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Maini't produkciju
 
+TEMP_AI_IN_PROGRESS                                             :{WHITE}Laipni lūgti jaunā MI izstrādē. Ja jums rodas kādas problēmas, tad sataisiet ekrānuzņēmumu un publicējiet to forumā.
+TEMP_AI_ACTIVATED                                               :{WHITE}Brīdinājums: jaunais MI ir joprojām alfa stadijā! Šobrīd darbojas tikai autotransports!
+TEMP_AI_MULTIPLAYER                                             :{WHITE}Brīdinājums: realizācija joprojām ir eksperimentāla (izmantojot jauno MI). Lūdzu, ziņojiet par problēmām uz truelight@openttd.org.
 
 ############ network gui strings
 
+STR_NETWORK_MULTIPLAYER                                         :{WHITE}Vairāk spēlētāju režīms
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Spelçtâja vârds:
+STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Šis vārds, pēc kura jūs pazīs citi spēlētāji
+STR_NETWORK_CONNECTION                                          :{BLACK}Savienojums:
+STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Izvēlaties starp spēli caur internetu vai spēli lokālajā tīklā
 
+STR_NETWORK_START_SERVER                                        :{BLACK}Palaist serveri
+STR_NETWORK_START_SERVER_TIP                                    :{BLACK}Palaist jūsu personīgo serveri
 
 STR_NETWORK_GAME_NAME                                           :{BLACK}Vârds
+STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Spēles nosaukums
+STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Valoda, servera versija utt.
+STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Noklikšķiniet uz spēles sarakstā, lai to izvēlētos
+
+STR_NETWORK_FIND_SERVER                                         :{BLACK}Atrast serveri
+STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Meklēt serveri tīklā
+STR_NETWORK_ADD_SERVER                                          :{BLACK}Pievienot serveri
+STR_NETWORK_ADD_SERVER_TIP                                      :{BLACK}Pievieno serveri sarakstam, kurš vienmēr tiks pārbaudīts, vai tajā nav palaistas spēles.
+STR_NETWORK_ENTER_IP                                            :{BLACK}Ievadiet servera adresi
+
+STR_NETWORK_GENERAL_ONLINE                                      :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
+STR_NETWORK_CLIENTS_CAPTION                                     :{BLACK}Klienti
+STR_NETWORK_CLIENTS_CAPTION_TIP                                 :{BLACK}Klienti tiešsaitē / Maksimālais klientu skaits{}Uzņēmumi tiešsaistē / Maksimālais uzņēmumu skaits
+STR_NETWORK_GAME_INFO                                           :{SILVER}SPĒLES INFORMĀCIJA
+STR_ORANGE                                                      :{ORANGE}{STRING}
+STR_NETWORK_CLIENTS                                             :{SILVER}Klienti:  {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
+STR_NETWORK_LANGUAGE                                            :{SILVER}Valoda:  {WHITE}{STRING}
+STR_NETWORK_MAP_SIZE                                            :{SILVER}Kartes izmērs:  {WHITE}{COMMA}x{COMMA}
+STR_NETWORK_SERVER_VERSION                                      :{SILVER}Servera izmērs:  {WHITE}{STRING}
+STR_NETWORK_SERVER_ADDRESS                                      :{SILVER}Servera adrese:  {WHITE}{STRING} : {NUM}
+STR_NETWORK_START_DATE                                          :{SILVER}Sākuma datums:  {WHITE}{DATE_SHORT}
+STR_NETWORK_CURRENT_DATE                                        :{SILVER}Šībrīža datums:  {WHITE}{DATE_SHORT}
+STR_NETWORK_PASSWORD                                            :{SILVER}Aizsargāts ar paroli!
+STR_NETWORK_SERVER_OFFLINE                                      :{SILVER}SERVERIS NAV TIEŠSAISTĒ
+STR_NETWORK_SERVER_FULL                                         :{SILVER}SERVERIS IR PILNS
+STR_NETWORK_VERSION_MISMATCH                                    :{SILVER}VERSIJU NESAKRITĪBA
+STR_NETWORK_GRF_MISMATCH                                        :{SILVER}NEWGRF NESAKRITĪBA
+
+STR_NETWORK_JOIN_GAME                                           :{BLACK}Pievienoties spēlei
 
 
-STR_ORANGE                                                      :{ORANGE}{STRING}
-STR_NETWORK_LANGUAGE                                            :{SILVER}Valoda:  {WHITE}{STRING}
-STR_NETWORK_SERVER_ADDRESS                                      :{SILVER}Servera adrese:  {WHITE}{STRING} : {NUM}
+STR_NETWORK_START_GAME_WINDOW                                   :{WHITE}Sākt jaunu vairākspēlētāju spēli
 
-
-
-
+STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Spēles nosaukums:
+STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Spēles nosaukums, kas tiks attēlots citiem spēlētajiem vairākspēlētāju spēļu izvēlnē
+STR_NETWORK_SET_PASSWORD                                        :{BLACK}Uzstādīt paroli
+STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Aizsargā jūsu spēli ar paroli, ja jūs nevēlaties, lai tā būtu publiski pieejama
+STR_NETWORK_SELECT_MAP                                          :{BLACK}Izvēlaties karti:
+STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Kuru karti jūs vēlaties spēlēt?
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maks. klientu sk.:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Izvēlaties maksimālo klientu skaitu. Ne visiem slotiem ir jābūt aizpildītiem
 STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :LAN
 STR_NETWORK_INTERNET                                            :Internets
 STR_NETWORK_LAN_INTERNET                                        :LAN / Internets
+STR_NETWORK_INTERNET_ADVERTISE                                  :Internets (reklamēt)
 STR_NETWORK_COMBO2                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_0_PLAYERS                                           :0 spēlētāju
+STR_NETWORK_1_PLAYERS                                           :1 spēlētājs
 STR_NETWORK_2_PLAYERS                                           :2 clienti
+STR_NETWORK_3_PLAYERS                                           :3 spēlētāji
+STR_NETWORK_4_PLAYERS                                           :4 spēlētāji
+STR_NETWORK_5_PLAYERS                                           :5 spēlētāji
+STR_NETWORK_6_PLAYERS                                           :6 spēlētāji
+STR_NETWORK_7_PLAYERS                                           :7 spēlētāji
+STR_NETWORK_8_PLAYERS                                           :8 spēlētāji
+STR_NETWORK_9_PLAYERS                                           :9 spēlētāji
+STR_NETWORK_10_PLAYERS                                          :10 spēlētāji
+STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. uzņēmumu sk.:
+STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Ierobežo serveri noteiktam uzņēmumu daudzumam
 STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks. novērotāju sk.:
+STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Ierobēžo serveri noteiktam novērotāju skaitam
+STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Valodu, kurā runā:
+STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Citi lietotāji zinās, kurā valodā tiek runāts uz servera
+STR_NETWORK_COMBO5                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_START_GAME                                          :{BLACK}Sakt spçli
+STR_NETWORK_START_GAME_TIP                                      :{BLACK}Sāk jaunu tīkla spēli ar nejaušu karti vai scenāriju
+STR_NETWORK_LOAD_GAME                                           :{BLACK}Ielādēt spēli
+STR_NETWORK_LOAD_GAME_TIP                                       :{BLACK}Atsākt iepriekš saglabātu vairākspēlētāju spēli (esi pārliecināts, ka atsākat kā pareizs spēlētājs)
 
 ############ Leave those lines in this order!!
+STR_NETWORK_LANG_ANY                                            :Jebkurā
 STR_NETWORK_LANG_ENGLISH                                        :Angïu
+STR_NETWORK_LANG_GERMAN                                         :Vācu
+STR_NETWORK_LANG_FRENCH                                         :Franču
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazīļu
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgāru
+STR_NETWORK_LANG_CHINESE                                        :Ķīniešu
+STR_NETWORK_LANG_CZECH                                          :Čehu
+STR_NETWORK_LANG_DANISH                                         :Dāņu
+STR_NETWORK_LANG_DUTCH                                          :Holandiešu
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Somu
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungāru
+STR_NETWORK_LANG_ICELANDIC                                      :Islandiešu
+STR_NETWORK_LANG_ITALIAN                                        :Itāliešu
+STR_NETWORK_LANG_JAPANESE                                       :Japāņu
+STR_NETWORK_LANG_KOREAN                                         :Korejēšu
+STR_NETWORK_LANG_LITHUANIAN                                     :Lietuviešu
+STR_NETWORK_LANG_NORWEGIAN                                      :Norvēģu
+STR_NETWORK_LANG_POLISH                                         :Poļu
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugāļu
+STR_NETWORK_LANG_ROMANIAN                                       :Rumāņu
 ############ End of leave-in-this-order
 
 
@@ -1090,6 +1389,11 @@
 STR_CONFIG_PATCHES_MAP_X                                        :{LTBLUE}kartes X-izme'ri: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAP_Y                                        :{LTBLUE}kartes Y-izme'ri: {ORANGE}{STRING}
 
+
+##### PNG-MAP-Loader
+
+
+
 ##id 0x0800
 STR_FEEDER_TINY                                                 :{TINYFONT}{YELLOW}Pa'rved: {CURRENCY}
 STR_FEEDER                                                      :{YELLOW}Pa'rved: {CURRENCY}
@@ -1153,27 +1457,77 @@
 STR_2806                                                        :{WHITE}{SIGN}
 STR_280A_SIGN                                                   :Zîme
 STR_280E_TREES                                                  :Koki
+STR_280F_RAINFOREST                                             :Lietus meži
+STR_2810_CACTUS_PLANTS                                          :Kaktusu plantācijas
 
 ##id 0x3000
+STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Dzelzceļa stacijas izvēle
+STR_3001_AIRPORT_SELECTION                                      :{WHITE}Lidostas izvēle
+STR_3002_ORIENTATION                                            :{BLACK}Virziens
+STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Mašīnu skaits
+STR_3004_PLATFORM_LENGTH                                        :{BLACK}Platformas garums
+STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Pārāk tuvu citai dzelzceļa stacijai
+STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Pārāk daudz staciju/iekrašanas zonu šajā pilsētā
+STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Pārāk daudz stacijas/iekraušanas zonas
 STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Pa'ra'k daudz autobusa pieturu
 STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}pa'ra'k daudz kravas auto staciju
+STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Pārāk tuvu citai stacijai/iekraušanas zonai
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
+STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Jānojauc dzelzsceļa stacija vispirms
+STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Pārāk tuvu citai lidostai
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Vispirms jānosauc lidosta
 
+STR_3030_RENAME_STATION_LOADING                                 :Pārsaukt staciju/iekraušanas zonu
+STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Nevar pārsaukt staciju...
 STR_3032_RATINGS                                                :{BLACK}Reitingi
+STR_3033_ACCEPTS                                                :{BLACK}Pieņem
+STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Vietējais transporta pakalpojumu reitings:
 
 ############ range for rating starts
+STR_3035_APPALLING                                              :Drausmīgs
+STR_3036_VERY_POOR                                              :Ļoti vājš
+STR_3037_POOR                                                   :Vājš
+STR_3038_MEDIOCRE                                               :Viduvējs
+STR_3039_GOOD                                                   :Labs
+STR_303A_VERY_GOOD                                              :Ļoti labs
+STR_303B_EXCELLENT                                              :Lielisks
+STR_303C_OUTSTANDING                                            :Perfekts
 ############ range for rating ends
 
 STR_303D                                                        :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
+STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} vairs nepieņem {STRING}
+STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} vairs nepieņem {STRING} vai {STRING}
+STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} pieņem {STRING}
+STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} pieņem {STRING} un {STRING}
+STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Autoostas virziens
+STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Virpirms jānojauc autoosta
+STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stacij{P a s u}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
+STR_304A_NONE                                                   :{YELLOW}- Nav -
+STR_304B_SITE_UNSUITABLE                                        :{WHITE}...vieta nav piemērota
+STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Pārāk tuvu citam dokam
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Vispirms jānojauc doks
+STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Izvēlaties dzelzsceļa stacijas virzienu
+STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Izvēlaties platformu skaitu dzelzsceļa stacijai
+STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Izvēlaties autoostas virzienu
+STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrēt galveno skatījumu uz stacijas atrašanās vietu
+STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Parādīt stacijas reitingu
+STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Mainīt stacijas nosaukumu
+STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Rādīt pieņemamās kravas sarakstu
+STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Staciju nosaukumi - uzklišķiniet uz nosaukuma, lai centrētu galveno skatījumu uz staciju
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Izvēlaties lidostas izmēru/veidu
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
-STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION} {STATIONFEATURES}
+STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
+STR_305E_RAILROAD_STATION                                       :Dzelzsceļa stacija
+STR_305F_AIRCRAFT_HANGAR                                        :Lidaparātu angārs
 STR_3060_AIRPORT                                                :Lidosta
 STR_3062_BUS_STATION                                            :Autoosta
 STR_3063_SHIP_DOCK                                              :Osta
 STR_3068_DOCK                                                   :{WHITE}Osta
 STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...neregula'ras stacijas nav atl'autas
 
+STR_UNDEFINED                                                   :(nedefinēta rinda)
+
 ##id 0x3800
 STR_3804_WATER                                                  :Ûdens
 
@@ -1185,12 +1539,41 @@
 STR_4804_SAWMILL                                                :Gateris
 STR_4805_FOREST                                                 :Mežs
 STR_480B_FARM                                                   :Ferma
+STR_480D_OIL_WELLS                                              :Naftas urbumi
+STR_480E_BANK                                                   :Banka
+STR_480F_FOOD_PROCESSING_PLANT                                  :Ēdiena apstrādes fabrika
+STR_4810_PAPER_MILL                                             :Papirfabrika
+STR_4811_GOLD_MINE                                              :Zelta raktuves
 STR_4812_BANK                                                   :Banka
+STR_4813_DIAMOND_MINE                                           :Dimantu raktuves
+STR_4814_IRON_ORE_MINE                                          :Dzelzs rūdas raktuves
+STR_4815_FRUIT_PLANTATION                                       :Augļu plantācija
+STR_4816_RUBBER_PLANTATION                                      :Gumijkoka plantācija
+STR_4817_WATER_SUPPLY                                           :Ūdens ieguve
+STR_4818_WATER_TOWER                                            :Ūdens tornis
 STR_4819_FACTORY                                                :Rûpnîca
+STR_481A_FARM                                                   :Ferma
+STR_481B_LUMBER_MILL                                            :Kokzāģētava
+STR_481D_CANDY_FACTORY                                          :Saldumu fabrika
+STR_481F_COLA_WELLS                                             :Kolas urbumi
+STR_4820_TOY_SHOP                                               :Rotaļlietu veikals
+STR_4821_TOY_FACTORY                                            :Rotaļlietu fabrika
+STR_4822_PLASTIC_FOUNTAINS                                      :Plastmasas strūklakas
+STR_4824_BUBBLE_GENERATOR                                       :Burbuļu ģenerātors
+STR_4826_SUGAR_MINE                                             :Cukura raktuve
 
 ############ range for requires starts
+STR_4827_REQUIRES                                               :{BLACK}Nepieciešams: {YELLOW}{STRING}
+STR_4828_REQUIRES                                               :{BLACK}Nepieciešams: {YELLOW}{STRING}, {STRING}
+STR_4829_REQUIRES                                               :{BLACK}Nepieciešams: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Krava, kas jāapstrādā:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+############ range for produces ends
+
+STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Produkcija iepriekšēja mēnesī:
 
 ##id 0x5000
 STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}Vilciens tunelî
@@ -1208,18 +1591,45 @@
 STR_SV_TRAIN_NAME                                               :Vilciens {COMMA}
 
 STR_SV_STNAME                                                   :{STRING}
+STR_SV_STNAME_AIRPORT                                           :{STRING} Lidosta
+STR_SV_STNAME_MINES                                             :{STRING} Raktuves
+STR_SV_STNAME_DOCKS                                             :{STRING} Doki
+STR_SV_STNAME_BUOY_1                                            :{STRING} Boja 1
+STR_SV_STNAME_BUOY_2                                            :{STRING} Boja 2
+STR_SV_STNAME_BUOY_3                                            :{STRING} Boja 3
+STR_SV_STNAME_BUOY_4                                            :{STRING} Boja 4
+STR_SV_STNAME_BUOY_5                                            :{STRING} Boja 5
+STR_SV_STNAME_BUOY_6                                            :{STRING} Boja 6
+STR_SV_STNAME_BUOY_7                                            :{STRING} Boja 7
+STR_SV_STNAME_BUOY_8                                            :{STRING} Boja 8
+STR_SV_STNAME_BUOY_9                                            :{STRING} Boja 9
 STR_SV_STNAME_FOREST                                            :{STRING} Mežs
+STR_SV_STNAME_FALLBACK                                          :{STRING} Stacija #{NUM}
 
 ############ end of savegame specific region!
 
 ##id 0x6800
+STR_6800_DIFFICULTY_LEVEL                                       :{WHITE}Grūtības līmenis
 STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Saglabât
 
 ############ range for difficulty levels starts
 STR_6801_EASY                                                   :{BLACK}Viegls
+STR_6802_MEDIUM                                                 :{BLACK}Vidējs
+STR_6803_HARD                                                   :{BLACK}Grūts
+STR_6804_CUSTOM                                                 :{BLACK}Pielāgots
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
+STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Maksimāls pretinieku daudzums: {ORANGE}{COMMA}
+STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Pretinieku sākuma laiks: {ORANGE}{STRING}
+STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Pilsētu skaits: {ORANGE}{STRING}
+STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Industriju skaits: {ORANGE}{STRING}
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Maksimāls sākotnējais kredīts: {ORANGE}{CURRENCY}
+STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Sākotnējā kredīta likme: {ORANGE}{COMMA}%
+STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Transportlīdzekļu lietošanas izdevumi: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Pretinieku būvniecības ātrums: {ORANGE}{STRING}
+STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Pretinieku inteliģence: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Transportlīdzekļu lūšana: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
 STR_6819                                                        :{BLACK}{SMALLLEFTARROW}
@@ -1239,9 +1649,19 @@
 STR_7006_COLOR_SCHEME                                           :{GOLD}Krasas shçma:
 STR_7007_NEW_COLOR_SCHEME                                       :{WHITE}Jaunâ Krasas shçma
 STR_7010                                                        :{WHITE}{NUM}
+STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Ceļa transp. lietošanas izmaksas
+STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Lidaparātu lietošanas izmaksas
+STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Kuģu lietošanas izmaksas
+STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Īpašumu apkalpošana
+STR_7018_TRAIN_INCOME                                           :{GOLD}Vilcienu ienākumi
+STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Ceļu transportlīdzekļu ienākumi
+STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Lidaparātu ienākumi
+STR_701B_SHIP_INCOME                                            :{GOLD}Kuģu ienākumi
+STR_701C_LOAN_INTEREST                                          :{GOLD}Kredīta likme
 STR_701D_OTHER                                                  :{GOLD}Citi
 STR_701E                                                        :{BLACK}-{CURRENCY}
 STR_701F                                                        :{BLACK}+{CURRENCY}
+STR_7020_TOTAL                                                  :{WHITE}Kopā:
 STR_7021                                                        :{COMPANY}{COMPANYNUM}
 STR_CURRCOMPACT                                                 :{CURRCOMPACT}
 STR_7024                                                        :{COMMA}
@@ -1259,6 +1679,8 @@
 STR_COMPANY_PASSWORD                                            :{BLACK}Parole
 STR_7080_PROTECTED                                              :{WHITE}S'i' kompa'nija ir pa'ra'k jauna lai tirgotu akcijas...
 
+
+
 ##id 0x8000
 STR_8000_KIRBY_PAUL_TANK_STEAM                                  :Kirby Paul Tank (Tvaika)
 STR_8001_MJS_250_DIESEL                                         :MJS 250 (Dizelis)
@@ -1357,8 +1779,8 @@
 STR_8104_AIRCRAFT                                               :lidmaðîna
 
 ##id 0x8800
-STR_8804                                                        :{SETX 10}{COMMA}: {STRING}
-STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8807_GO_TO_TRANSFER                                         :Uz {STATION} (Pa'rvest un pan'emt kravu)
 STR_8808_GO_TO_UNLOAD                                           :Uz {STATION} (Nokraut)
 STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Uz {STATION} (Pa'rvest un atsta't tuks'u)
@@ -1374,8 +1796,11 @@
 
 
 
+
 STR_8812_EMPTY                                                  :{LTBLUE}Tukšs
 STR_8816                                                        :{BLACK}-
+
+
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
 STR_SERVICE                                                     :{BLACK}Serviss
 STR_882E                                                        :{WHITE}{VEHICLE}
@@ -1388,6 +1813,8 @@
 STR_886F_TRANSFER                                               :{BLACK}Tranzi'ts
 
 
+
+
 ##id 0x9000
 STR_9002                                                        :{WHITE}{VEHICLE}
 STR_9012_CAPACITY                                               :{BLACK}Capacitâte: {LTBLUE}{CARGO}
@@ -1395,12 +1822,14 @@
 
 STR_9034_RENAME                                                 :{BLACK}Pârsaukt
 
+
 ##id 0x9800
 STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} Kuìi
 STR_980F                                                        :{WHITE}{VEHICLE}
 STR_9820_BUILD_NEW_SHIP                                         :{BLACK}Uzbûvet jauno kuìi
 
 STR_9836_RENAME                                                 :{BLACK}Pârsaukt
+SERVICE_AT_SHIP_DEPOT                                           :Apkalpošana {TOWN} kuģubūvētavā
 
 ##id 0xA000
 STR_A00A                                                        :{WHITE}{VEHICLE}
@@ -1409,7 +1838,8 @@
 STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
 STR_A037_RENAME                                                 :{BLACK}Pârsaukt
 STR_GO_TO_AIRPORT_HANGAR                                        :Uz {STATION} Angâru
-SERVICE_AT_AIRPORT_HANGAR                                       :Serviss  {STATION} Angarâ
+SERVICE_AT_AIRPORT_HANGAR                                       :Apkalpošana {STATION} angārā
+
 
 ##id 0xB000
 
@@ -1427,6 +1857,11 @@
 
 STR_NEWGRF_GRF_ID                                               :{BLACK}GRF ID: {SILVER}{STRING}
 
+
+
+
+
+
 STR_CURRENCY_SUFFIX                                             :{LTBLUE}Suffikss:
 STR_CURRENCY_SWITCH_TO_EURO                                     :{LTBLUE}Pariet uz Eiro: {ORANGE}{NUM}
 STR_CURRENCY_SWITCH_TO_EURO_NEVER                               :{LTBLUE}Pariet uz Eiro: {ORANGE}nekad
@@ -1439,10 +1874,16 @@
 STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Kuìi
 
 
-STR_REPLACE_VEHICLES                                            :{BLACK}Nomaini transporta lîdzekïus
-STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Nomaini transporta lîdzekïus
-STR_REPLACE_VEHICLES_START                                      :{BLACK}Sâc nomainît transporta lîdzekïus
-STR_REPLACE_VEHICLES_STOP                                       :{BLACK}Pârtrauc nomainît transporta lîdzekïus
+
+### depot strings
+
+
+
+
+
+STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Nomainīt {STRING}
+STR_REPLACE_VEHICLES_START                                      :{BLACK}Sākt transportlīdzkļu nomaiņu
+STR_REPLACE_VEHICLES_STOP                                       :{BLACK}Pārtraukt transportlīdzekļu nomaiņu
 STR_NOT_REPLACING                                               :{BLACK}Netiks nomainîts
 STR_NOT_REPLACING_VEHICLE_SELECTED                              :{BLACK}Neviens transporta lîdzeklis nebija izvçlçts
 STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Izvçlies lokomatîves tipu kuru tu gribi nomainît
@@ -1453,9 +1894,14 @@
 STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Parâda kura lokomatîve no pa kreisi atzîmçtajâm tiek nomainîta, ja vien kâda ir
 STR_REPLACE_HELP                                                :{BLACK}ðis atïauj nomainît vienu lokomatîves tipu pret citu kad vilcieni ienâk depo
 
+
+
+
+
 STR_SHORT_DATE                                                  :{WHITE}{DATE_TINY}
 STR_SIGN_LIST_CAPTION                                           :{WHITE}Zi'mju saraksts- {COMMA} Zi'mes
 
+
 ############ Lists rail types
 
 STR_RAIL_VEHICLES                                               :Slieþu transporta lîdzekïi
@@ -1477,3 +1923,33 @@
 STR_PURCHASE_INFO_COST_SPEED                                    :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} A'trums: {GOLD}{VELOCITY}
 STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Ietilpi'ba: {GOLD}{COMMA} pasaz'ieru, {COMMA} pasta somas
 STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Motor-vagoni: {GOLD}+{POWER}zs{BLACK} Sva'rs: {GOLD}+{WEIGHT_S}t
+
+########### String for New Landscape Generator
+
+
+
+########### String for new airports
+
+
+############ Tooltip measurment
+
+
+############ Date formatting
+
+########
+
+
+
+
+##### Mass Order
+
+
+
+
+
+
+
+#### Improved sign GUI
+
+########
+
--- a/src/main_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/main_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -31,6 +31,7 @@
 #include "variables.h"
 #include "train.h"
 #include "roadveh.h"
+#include "bridge_map.h"
 #include "unmovable_map.h"
 #include "string.h"
 #include "screenshot.h"
@@ -1137,7 +1138,7 @@
 
 static void PlaceProc_LightHouse(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
 		return;
 	}
 
@@ -1148,7 +1149,7 @@
 
 static void PlaceProc_Transmitter(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
 		return;
 	}
 
@@ -1539,247 +1540,11 @@
 	AllocateWindowDescFront(&_scen_edit_town_gen_desc, 0);
 }
 
-
-static const Widget _scenedit_industry_normal_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                     STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                          STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,   STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0240_COAL_MINE,           STR_0262_CONSTRUCT_COAL_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0241_POWER_STATION,       STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0242_SAWMILL,             STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0243_FOREST,              STR_0265_PLANT_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_0244_OIL_REFINERY,        STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_0245_OIL_RIG,             STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_0246_FACTORY,             STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_0247_STEEL_MILL,          STR_0269_CONSTRUCT_STEEL_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0248_FARM,                STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_0249_IRON_ORE_MINE,       STR_026B_CONSTRUCT_IRON_ORE_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024A_OIL_WELLS,           STR_026C_CONSTRUCT_OIL_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   185,   196, STR_024B_BANK,                STR_026D_CONSTRUCT_BANK_CAN_ONLY},
-{   WIDGETS_END},
-};
-
-
-static const Widget _scenedit_industry_hilly_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION,   STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,     STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0240_COAL_MINE,             STR_0262_CONSTRUCT_COAL_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0243_FOREST,                STR_0265_PLANT_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_024F_GOLD_MINE,             STR_0271_CONSTRUCT_GOLD_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0248_FARM,                  STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_024B_BANK,                  STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024A_OIL_WELLS,             STR_026C_CONSTRUCT_OIL_WELLS},
-{   WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_desert_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION,    STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                             STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,      STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0250_LUMBER_MILL,            STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0251_FRUIT_PLANTATION,       STR_0274_PLANT_FRUIT_PLANTATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0252_RUBBER_PLANTATION,      STR_0275_PLANT_RUBBER_PLANTATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0244_OIL_REFINERY,           STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_024D_FOOD_PROCESSING_PLANT,  STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_0246_FACTORY,                STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_0253_WATER_SUPPLY,           STR_0276_CONSTRUCT_WATER_SUPPLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_0248_FARM,                   STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0254_WATER_TOWER,            STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_024A_OIL_WELLS,              STR_026C_CONSTRUCT_OIL_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024B_BANK,                   STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   185,   196, STR_0255_DIAMOND_MINE,           STR_0278_CONSTRUCT_DIAMOND_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   198,   209, STR_0256_COPPER_ORE_MINE,        STR_0279_CONSTRUCT_COPPER_ORE_MINE},
-{   WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_candy_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                     STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                          STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,   STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0257_COTTON_CANDY_FOREST, STR_027A_PLANT_COTTON_CANDY_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0258_CANDY_FACTORY,       STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0259_BATTERY_FARM,        STR_027C_CONSTRUCT_BATTERY_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_025A_COLA_WELLS,          STR_027D_CONSTRUCT_COLA_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_025B_TOY_SHOP,            STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_025C_TOY_FACTORY,         STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_025D_PLASTIC_FOUNTAINS,   STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_025F_BUBBLE_GENERATOR,    STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_0260_TOFFEE_QUARRY,       STR_0283_CONSTRUCT_TOFFEE_QUARRY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_0261_SUGAR_MINE,          STR_0284_CONSTRUCT_SUGAR_MINE},
-{   WIDGETS_END},
-};
-
-
-static bool AnyTownExists()
-{
-	const Town *t;
-
-	FOR_ALL_TOWNS(t) return true;
-
-	return false;
-}
-
-extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
-
-/**
- * Search callback function for TryBuildIndustry
- * @param tile to test
- * @param data that is passed by the caller.  In this case, the type of industry been tested
- * @return the success (or not) of the operation
- */
-static bool SearchTileForIndustry(TileIndex tile, uint32 data)
-{
-	return CreateNewIndustry(tile, data) != NULL;
-}
-
-/**
- * Perform a 9*9 tiles circular search around a tile
- * in order to find a suitable zone to create the desired industry
- * @param tile to start search for
- * @param type of the desired industry
- * @return the success (or not) of the operation
- */
-static bool TryBuildIndustry(TileIndex tile, int type)
-{
-	return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
-}
-
-
-static const byte _industry_type_list[4][16] = {
-	{ 0,  1,  2,  3,  4,  5,  6,  8,  9, 18, 11, 12},
-	{ 0,  1, 14,  3,  4, 13,  7, 15,  9, 16, 11, 12},
-	{25, 19, 20,  4, 13, 23, 21, 24, 22, 11, 16, 17, 10},
-	{26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36},
-};
-
-static int _industry_type_to_place;
-bool _ignore_restrictions;
-
-static void ScenEditIndustryWndProc(Window *w, WindowEvent *e)
-{
-	int button;
-
-	switch (e->event) {
-	case WE_PAINT:
-		DrawWindowWidgets(w);
-		break;
-
-	case WE_CLICK:
-		if (e->we.click.widget == 3) {
-			HandleButtonClick(w, 3);
-
-			if (!AnyTownExists()) {
-				ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
-				return;
-			}
-
-			_generating_world = true;
-			GenerateIndustries();
-			_generating_world = false;
-		}
-
-		if ((button=e->we.click.widget) >= 4) {
-			if (HandlePlacePushButton(w, button, SPR_CURSOR_INDUSTRY, 1, NULL))
-				_industry_type_to_place = _industry_type_list[_opt.landscape][button - 4];
-		}
-		break;
-	case WE_PLACE_OBJ: {
-		int type;
-
-		/* Show error if no town exists at all */
-		type = _industry_type_to_place;
-		if (!AnyTownExists()) {
-			SetDParam(0, GetIndustrySpec(type)->name);
-			ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
-			return;
-		}
-
-		_current_player = OWNER_NONE;
-		_generating_world = true;
-		_ignore_restrictions = true;
-		if (!TryBuildIndustry(e->we.place.tile,type)) {
-			SetDParam(0, GetIndustrySpec(type)->name);
-			ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
-		}
-		_ignore_restrictions = false;
-		_generating_world = false;
-		break;
-	}
-	case WE_ABORT_PLACE_OBJ:
-		RaiseWindowButtons(w);
-		SetWindowDirty(w);
-		break;
-	case WE_TIMEOUT:
-		RaiseWindowWidget(w, 3);
-		InvalidateWidget(w, 3);
-		break;
-	}
-}
-
-static const WindowDesc _scenedit_industry_normal_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_normal_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_hilly_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_hilly_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_desert_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_desert_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_candy_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_candy_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc * const _scenedit_industry_descs[] = {
-	&_scenedit_industry_normal_desc,
-	&_scenedit_industry_hilly_desc,
-	&_scenedit_industry_desert_desc,
-	&_scenedit_industry_candy_desc,
-};
-
-
 static void ToolbarScenGenIndustry(Window *w)
 {
 	HandleButtonClick(w, 13);
 	SndPlayFx(SND_15_BEEP);
-	AllocateWindowDescFront(_scenedit_industry_descs[_opt.landscape],0);
+	ShowBuildIndustryWindow();
 }
 
 static void ToolbarScenBuildRoad(Window *w)
--- a/src/misc_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/misc_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -751,16 +751,22 @@
 
 
 static void DrawStationCoverageText(const AcceptedCargo accepts,
-	int str_x, int str_y, uint mask)
+	int str_x, int str_y, StationCoverageType sct)
 {
 	char *b = _userstring;
 	bool first = true;
 
 	b = InlineString(b, STR_000D_ACCEPTS);
 
-	for (CargoID i = 0; i < NUM_CARGO; i++, mask >>= 1) {
+	for (CargoID i = 0; i < NUM_CARGO; i++) {
 		if (b >= lastof(_userstring) - 5) break;
-		if (accepts[i] >= 8 && mask & 1) {
+		switch (sct) {
+			case SCT_PASSENGERS_ONLY: if (!IsCargoInClass(i, CC_PASSENGERS)) continue; break;
+			case SCT_NON_PASSENGERS_ONLY: if (IsCargoInClass(i, CC_PASSENGERS)) continue; break;
+			case SCT_ALL: break;
+			default: NOT_REACHED();
+		}
+		if (accepts[i] >= 8) {
 			if (first) {
 				first = false;
 			} else {
@@ -779,12 +785,12 @@
 	DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
 }
 
-void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
+void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad) {
 	TileIndex tile = TileVirtXY(_thd.pos.x, _thd.pos.y);
 	AcceptedCargo accepts;
 	if (tile < MapSize()) {
 		GetAcceptanceAroundTiles(accepts, tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE , rad);
-		DrawStationCoverageText(accepts, sx, sy, mask);
+		DrawStationCoverageText(accepts, sx, sy, sct);
 	}
 }
 
--- a/src/music/bemidi.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/bemidi.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_BeMidi: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_BeMidi: public MusicDriverFactory<FMusicDriver_BeMidi> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "bemidi"; }
 	/* virtual */ const char *GetDescription() { return "BeOS MIDI Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_BeMidi(); }
--- a/src/music/dmusic.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/dmusic.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_DMusic: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_DMusic: public MusicDriverFactory<FMusicDriver_DMusic> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "dmusic"; }
 	/* virtual */ const char *GetDescription() { return "DirectMusic MIDI Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_DMusic(); }
--- a/src/music/extmidi.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/extmidi.h	Fri Jul 13 09:18:50 2007 +0000
@@ -14,8 +14,6 @@
 	void DoStop();
 
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -31,6 +29,7 @@
 
 class FMusicDriver_ExtMidi: public MusicDriverFactory<FMusicDriver_ExtMidi> {
 public:
+	static const int priority = 1;
 	/* virtual */ const char *GetName() { return "extmidi"; }
 	/* virtual */ const char *GetDescription() { return "External MIDI Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_ExtMidi(); }
--- a/src/music/libtimidity.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/libtimidity.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_LibTimidity: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_LibTimidity: public MusicDriverFactory<FMusicDriver_LibTimidity> {
 public:
+	static const int priority = 5;
 	/* virtual */ const char *GetName() { return "libtimidity"; }
 	/* virtual */ const char *GetDescription() { return "LibTimidity MIDI Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_LibTimidity(); }
--- a/src/music/music_driver.hpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/music_driver.hpp	Fri Jul 13 09:18:50 2007 +0000
@@ -22,7 +22,7 @@
 template <class T>
 class MusicDriverFactory: public MusicDriverFactoryBase {
 public:
-	MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC); }
+	MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC, ((T *)this)->priority); }
 
 	/**
 	 * Get the long, human readable, name for the Driver-class.
--- a/src/music/null_m.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/null_m.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_Null: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return false; }
-
 	/* virtual */ const char *Start(const char * const *param) { return NULL; }
 
 	/* virtual */ void Stop() { }
@@ -24,6 +22,7 @@
 
 class FMusicDriver_Null: public MusicDriverFactory<FMusicDriver_Null> {
 public:
+	static const int priority = 0;
 	/* virtual */ const char *GetName() { return "null"; }
 	/* virtual */ const char *GetDescription() { return "Null Music Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_Null(); }
--- a/src/music/os2_m.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/os2_m.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_OS2: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_OS2: public MusicDriverFactory<FMusicDriver_OS2> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "os2"; }
 	/* virtual */ const char *GetDescription() { return "OS/2 Music Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_OS2(); }
--- a/src/music/qtmidi.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/qtmidi.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_QtMidi: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_QtMidi: public MusicDriverFactory<FMusicDriver_QtMidi> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "qt"; }
 	/* virtual */ const char *GetDescription() { return "QuickTime MIDI Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_QtMidi(); }
--- a/src/music/win32_m.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/music/win32_m.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class MusicDriver_Win32: public MusicDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FMusicDriver_Win32: public MusicDriverFactory<FMusicDriver_Win32> {
 public:
+	static const int priority = 5;
 	/* virtual */ const char *GetName() { return "win32"; }
 	/* virtual */ const char *GetDescription() { return "Win32 Music Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new MusicDriver_Win32(); }
--- a/src/network/core/tcp.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/core/tcp.h	Fri Jul 13 09:18:50 2007 +0000
@@ -68,6 +68,7 @@
 	char text[80];     ///< possible text sent for name changes etc
 	uint32 frame;      ///< the frame in which this packet is executed
 	byte callback;     ///< any callback function executed upon successful completion of the command
+	bool my_cmd;       ///< did the command originate from "me"
 };
 
 /** Status of a client */
--- a/src/network/network.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -37,6 +37,7 @@
 #include "../console.h" /* IConsoleCmdExec */
 #include <stdarg.h> /* va_list */
 #include "../md5.h"
+#include "../fileio.h"
 
 /* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
 assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
@@ -195,6 +196,9 @@
 			break;
 	}
 
+#ifdef DEBUG_DUMP_COMMANDS
+	debug_dump_commands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message);
+#endif /* DUMP_COMMANDS */
 	IConsolePrintF(color, "%s", message);
 	AddTextMessage(color, duration, "%s", message);
 }
@@ -1235,6 +1239,9 @@
 			if (_sync_seed_1 != _random_seeds[0][0]) {
 #endif
 				NetworkError(STR_NETWORK_ERR_DESYNC);
+#ifdef DEBUG_DUMP_COMMANDS
+				debug_dump_commands("ddc:serr:%d;%d\n", _date, _date_fract);
+#endif /* DUMP_COMMANDS */
 				DEBUG(net, 0, "Sync error detected!");
 				NetworkClientError(NETWORK_RECV_STATUS_DESYNC, DEREF_CLIENT(0));
 				return false;
@@ -1280,6 +1287,37 @@
 	if (!NetworkReceive()) return;
 
 	if (_network_server) {
+#ifdef DEBUG_DUMP_COMMANDS
+		static FILE *f = FioFOpenFile("commands.log", "rb", SAVE_DIR);
+		static Date next_date = 0;
+		static uint32 next_date_fract;
+		static CommandPacket *cp = NULL;
+		if (f == NULL && next_date == 0) {
+			printf("Cannot open commands.log\n");
+			next_date = 1;
+		}
+
+		while (f != NULL && !feof(f)) {
+			if (cp != NULL && _date == next_date && _date_fract == next_date_fract) {
+				_current_player = cp->player;
+				_cmd_text = cp->text;
+				DoCommandP(cp->tile, cp->p1, cp->p2, NULL, cp->cmd);
+				free(cp);
+				cp = NULL;
+			}
+
+			if (cp != NULL) break;
+
+			char buff[4096];
+			if (fgets(buff, lengthof(buff), f) == NULL) break;
+			if (strncmp(buff, "ddc:cmd:", 8) != 0) continue;
+			cp = MallocT<CommandPacket>(1);
+			int player;
+			sscanf(&buff[8], "%d;%d;%d;%d;%d;%d;%d;%s", &next_date, &next_date_fract, &player, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text);
+			cp->player = (Owner)player;
+		}
+#endif /* DUMP_COMMANDS */
+
 		bool send_frame = false;
 
 		// We first increase the _frame_counter
@@ -1432,8 +1470,21 @@
 bool IsNetworkCompatibleVersion(const char *other)
 {
 	extern const char _openttd_revision[];
-	return strncmp(NOREV_STRING, other, NETWORK_REVISION_LENGTH - 1) == 0 ||
-			strncmp(_openttd_revision, other, NETWORK_REVISION_LENGTH - 1) == 0;
+	return strncmp(_openttd_revision, other, NETWORK_REVISION_LENGTH - 1) == 0;
 }
 
+#ifdef DEBUG_DUMP_COMMANDS
+void CDECL debug_dump_commands(const char *s, ...)
+{
+	static FILE *f = FioFOpenFile("commands-out.log", "wb", SAVE_DIR);
+	if (f == NULL) return;
+
+	va_list va;
+	va_start(va, s);
+	vfprintf(f, s, va);
+	va_end(va);
+
+	fflush(f);
+}
+#endif /* DEBUG_DUMP_COMMANDS */
 #endif /* ENABLE_NETWORK */
--- a/src/network/network.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network.h	Fri Jul 13 09:18:50 2007 +0000
@@ -20,6 +20,17 @@
 //  nothing will happen.
 //#define ENABLE_NETWORK_SYNC_EVERY_FRAME
 
+/*
+ * Dumps all commands that are sent/received to stderr and saves every month.
+ * This log can become quite large over time; say in the order of two to three
+ * times the bandwidth used for network games.
+ */
+//#define DEBUG_DUMP_COMMANDS
+
+#ifdef DEBUG_DUMP_COMMANDS
+void CDECL debug_dump_commands(const char *s, ...);
+#endif /* DEBUG_DUMP_COMMANDS */
+
 // In theory sending 1 of the 2 seeds is enough to check for desyncs
 //   so in theory, this next define can be left off.
 //#define NETWORK_SEND_DOUBLE_SEED
--- a/src/network/network_client.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_client.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -627,6 +627,7 @@
 	p->Recv_string(cp->text, sizeof(cp->text));
 	cp->callback = p->Recv_uint8();
 	cp->frame    = p->Recv_uint32();
+	cp->my_cmd   = p->Recv_bool();
 	cp->next     = NULL;
 
 	// The server did send us this command..
--- a/src/network/network_data.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_data.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -62,6 +62,7 @@
 
 		CommandPacket *new_cp = MallocT<CommandPacket>(1);
 		*new_cp = c;
+		new_cp->my_cmd = true;
 		if (_local_command_queue == NULL) {
 			_local_command_queue = new_cp;
 		} else {
@@ -97,7 +98,12 @@
 		DEBUG(net, 0, "Received out-of-bounds callback (%d)", cp->callback);
 		cp->callback = 0;
 	}
-	DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND);
+
+#ifdef DEBUG_DUMP_COMMANDS
+	debug_dump_commands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->player, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text);
+#endif /* DUMP_COMMANDS */
+
+	DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND, cp->my_cmd);
 }
 
 #endif /* ENABLE_NETWORK */
--- a/src/network/network_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -745,7 +745,6 @@
 			if (HandleEditBoxKey(w, &WP(w, network_ql_d).q, 3, e) == 1) break; // enter pressed
 
 			ttd_strlcpy(_network_server_name, WP(w, network_ql_d).q.text.buf, sizeof(_network_server_name));
-			UpdateTextBufferSize(&WP(w, network_ql_d).q.text);
 		}
 		break;
 
--- a/src/network/network_server.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/network/network_server.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -491,6 +491,7 @@
 	p->Send_string(cp->text);
 	p->Send_uint8 (cp->callback);
 	p->Send_uint32(cp->frame);
+	p->Send_bool  (cp->my_cmd);
 
 	cs->Send_Packet(p);
 }
@@ -915,11 +916,13 @@
 			// Callbacks are only send back to the client who sent them in the
 			//  first place. This filters that out.
 			cp->callback = (new_cs != cs) ? 0 : callback;
+			cp->my_cmd = (new_cs == cs);
 			NetworkAddCommandQueue(new_cs, cp);
 		}
 	}
 
 	cp->callback = 0;
+	cp->my_cmd = false;
 	// Queue the command on the server
 	if (_local_command_queue == NULL) {
 		_local_command_queue = cp;
--- a/src/newgrf.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -41,8 +41,10 @@
 #include "cargotype.h"
 #include "industry.h"
 #include "newgrf_canal.h"
+#include "table/build_industry.h"
 #include "newgrf_commons.h"
 #include "newgrf_townname.h"
+#include "newgrf_industries.h"
 
 /* TTDPatch extended GRF format codec
  * (c) Petr Baudis 2004 (GPL'd)
@@ -1677,6 +1679,367 @@
 	return ret;
 }
 
+static bool IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, byte **bufp, int len)
+{
+	if (!HASBIT(_ttdpatch_flags[3], 0x07)) return true;
+
+	byte *buf = *bufp;
+	bool ret = false;
+
+	if (indtid + numinfo > NUM_INDUSTRYTILES) {
+		grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES);
+		return false;
+	}
+
+	/* Allocate industry tile specs if they haven't been allocated already. */
+	if (_cur_grffile->indtspec == NULL) {
+		_cur_grffile->indtspec = CallocT<IndustryTileSpec*>(NUM_INDUSTRYTILES);
+
+		/* Reset any overrides that have been set. */
+		_industile_mngr.ResetOverride();
+	}
+
+	for (int i = 0; i < numinfo; i++) {
+		IndustryTileSpec *tsp = _cur_grffile->indtspec[indtid + i];
+
+		if (prop != 0x08 && tsp == NULL) {
+			grfmsg(2, "IndustryTilesChangeInfo: Attempt to modify undefined industry tile %u. Ignoring.", indtid + i);
+			continue;
+		}
+
+		switch (prop) {
+			case 0x08: { // Substitute industry tile type
+				IndustryTileSpec **tilespec = &_cur_grffile->indtspec[indtid + i];
+				byte subs_id = grf_load_byte(&buf);
+
+				if (subs_id == 0xFF) {
+					/* Instead of defining a new industry, a substitute industry id
+					 * of 0xFF disables the old industry with the current id. */
+					tsp->enabled = false;
+					continue;
+				} else if (subs_id >= NEW_INDUSTRYTILEOFFSET) {
+					/* The substitute id must be one of the original industry tile. */
+					grfmsg(2, "IndustryTilesChangeInfo: Attempt to use new industry tile %u as substitute industry tile for %u. Ignoring.", subs_id, indtid + i);
+					return false;
+				}
+
+				/* Allocate space for this industry. */
+				if (*tilespec == NULL) {
+					int tempid;
+					*tilespec = CallocT<IndustryTileSpec>(1);
+					tsp = *tilespec;
+
+					memcpy(tsp, &_industry_tile_specs[subs_id], sizeof(_industry_tile_specs[subs_id]));
+					tsp->enabled = true;
+					tsp->grf_prop.local_id = indtid + i;
+					tsp->grf_prop.subst_id = subs_id;
+					tsp->grf_prop.grffile = _cur_grffile;
+					tempid = _industile_mngr.AddEntityID(indtid + i, _cur_grffile->grfid, subs_id); // pre-reserve the tile slot
+				}
+			} break;
+
+			case 0x09: { // Industry tile override
+				byte ovrid = grf_load_byte(&buf);
+
+				/* The industry being overridden must be an original industry. */
+				if (ovrid >= NEW_INDUSTRYTILEOFFSET) {
+					grfmsg(2, "IndustryTilesChangeInfo: Attempt to override new industry tile %u with industry tile id %u. Ignoring.", ovrid, indtid + i);
+					return false;
+				}
+
+				tsp->grf_prop.override = ovrid;
+				_industile_mngr.Add(indtid + i, ovrid);
+			} break;
+
+			case 0x0A: // Tile acceptance
+			case 0x0B:
+			case 0x0C: {
+				uint16 acctp = grf_load_word(&buf);
+				tsp->accepts_cargo[prop - 0x0A] = GetCargoTranslation(GB(acctp, 0, 8), _cur_grffile);
+				tsp->acceptance[prop - 0x0A] = GetCargoTranslation(GB(acctp, 8, 8), _cur_grffile);
+			} break;
+
+			case 0x0D: // Land shape flags
+				tsp->slopes_refused = (Slope)grf_load_byte(&buf);
+				break;
+
+			case 0x0E: // Callback flags
+				tsp->callback_flags = grf_load_byte(&buf);
+				break;
+
+			case 0x0F: // Animation information
+				tsp->animation_info = grf_load_word(&buf);
+				break;
+
+			case 0x10: // Animation speed
+				tsp->animation_speed = grf_load_byte(&buf);
+				break;
+
+			case 0x11: // Triggers for callback 25
+				tsp->animation_triggers = grf_load_byte(&buf);
+				break;
+
+			case 0x12: // Special flags
+				tsp->animation_special_flags = grf_load_byte(&buf);
+				break;
+
+			default:
+				ret = true;
+				break;
+		}
+	}
+
+	*bufp = buf;
+	return ret;
+}
+
+static bool IndustriesChangeInfo(uint indid, int numinfo, int prop, byte **bufp, int len)
+{
+	if (!HASBIT(_ttdpatch_flags[3], 0x07)) return true;
+
+	byte *buf = *bufp;
+	bool ret = false;
+
+	if (indid + numinfo > NUM_INDUSTRYTYPES) {
+		grfmsg(1, "IndustriesChangeInfo: Too many industries loaded (%u), max (%u). Ignoring.", indid + numinfo, NUM_INDUSTRYTYPES);
+		return false;
+	}
+
+	grfmsg(1, "IndustriesChangeInfo: newid %u", indid);
+
+	/* Allocate industry specs if they haven't been allocated already. */
+	if (_cur_grffile->industryspec == NULL) {
+		_cur_grffile->industryspec = CallocT<IndustrySpec*>(NUM_INDUSTRYTYPES);
+
+		/* Reset any overrides that have been set. */
+		_industry_mngr.ResetOverride();
+	}
+
+	for (int i = 0; i < numinfo; i++) {
+		IndustrySpec *indsp = _cur_grffile->industryspec[indid + i];
+
+		if (prop != 0x08 && indsp == NULL) {
+			grfmsg(2, "IndustriesChangeInfo: Attempt to modify undefined industry %u. Ignoring.", indid + i);
+			continue;
+		}
+
+		switch (prop) {
+			case 0x08: { // Substitute industry type
+				IndustrySpec **indspec = &_cur_grffile->industryspec[indid + i];
+				byte subs_id = grf_load_byte(&buf);
+
+				if (subs_id == 0xFF) {
+					/* Instead of defining a new industry, a substitute industry id
+					 * of 0xFF disables the old industry with the current id. */
+					_industry_specs[indid + i].enabled = false;
+					continue;
+				} else if (subs_id >= NEW_INDUSTRYOFFSET) {
+					/* The substitute id must be one of the original industry. */
+					grfmsg(2, "_industry_specs: Attempt to use new industry %u as substitute industry for %u. Ignoring.", subs_id, indid + i);
+					return false;
+				}
+
+				/* Allocate space for this industry.
+				 * Only need to do it once. If ever it is called again, it should not
+				 * do anything */
+				if (*indspec == NULL) {
+					*indspec = CallocT<IndustrySpec>(1);
+					indsp = *indspec;
+
+					memcpy(indsp, &_origin_industry_specs[subs_id], sizeof(_industry_specs[subs_id]));
+					indsp->enabled = true;
+					indsp->grf_prop.local_id = indid + i;
+					indsp->grf_prop.subst_id = subs_id;
+					indsp->grf_prop.grffile = _cur_grffile;
+				}
+			} break;
+
+			case 0x09: { // Industry type override
+				byte ovrid = grf_load_byte(&buf);
+
+				/* The industry being overridden must be an original industry. */
+				if (ovrid >= NEW_INDUSTRYOFFSET) {
+					grfmsg(2, "IndustriesChangeInfo: Attempt to override new industry %u with industry id %u. Ignoring.", ovrid, indid + i);
+					return false;
+				}
+				indsp->grf_prop.override = ovrid;
+				_industry_mngr.Add(indid + i, ovrid);
+			} break;
+
+			case 0x0A: { // Set industry layout(s)
+				indsp->num_table = grf_load_byte(&buf); // Number of layaouts
+				uint32 defsize = grf_load_dword(&buf);  // Total size of the definition
+				IndustryTileTable **tile_table = CallocT<IndustryTileTable*>(indsp->num_table); // Table with tiles to compose an industry
+				IndustryTileTable *itt = CallocT<IndustryTileTable>(defsize); // Temporary array to read the tile layouts from the GRF
+				int size;
+				IndustryTileTable *copy_from;
+
+				for (byte j = 0; j < indsp->num_table; j++) {
+					for (int k = 0;; k++) {
+						itt[k].ti.x = grf_load_byte(&buf); // Offsets from northermost tile
+
+						if (itt[k].ti.x == 0xFE && k == 0) {
+							/* This means we have to borrow the layout from an old industry */
+							IndustryType type = grf_load_byte(&buf);  //industry holding required layout
+							byte laynbr = grf_load_byte(&buf);        //layout number to borrow
+
+							copy_from = (IndustryTileTable*)_origin_industry_specs[type].table[laynbr];
+							for (size = 1;; size++) {
+								if (_origin_industry_specs[type].table[laynbr + (size - 1)]->ti.x == -0x80 &&
+										_origin_industry_specs[type].table[laynbr + (size - 1)]->ti.y == 0) break;
+							}
+							break;
+						}
+
+						itt[k].ti.y = grf_load_byte(&buf); // Or table definition finalisation
+
+						if (itt[k].ti.x == 0 && itt[k].ti.y == 0x80) {
+							/*  Not the same terminator.  The one we are using is rather
+							 x= -80, y = x .  So, adjust it. */
+							itt[k].ti.x = -0x80;
+							itt[k].ti.y =  0;
+							itt[k].gfx  =  0;
+
+							size = k + 1;
+							copy_from = itt;
+							break;
+						}
+
+						itt[k].gfx = grf_load_byte(&buf);
+
+						if (itt[k].gfx == 0xFE) {
+							/* Use a new tile from this GRF */
+							int local_tile_id = grf_load_word(&buf);
+
+							/* Read the ID from the _industile_mngr. */
+							int tempid = _industile_mngr.GetID(local_tile_id, _cur_grffile->grfid);
+
+							if (tempid == INVALID_INDUSTRYTILE) {
+								grfmsg(2, "IndustriesChangeInfo: Attempt to use industry tile %u with industry id %u, not yet defined. Ignoring.", local_tile_id, indid);
+							} else {
+								/* Declared as been valid, can be used */
+								itt[k].gfx = tempid;
+								size = k + 1;
+								copy_from = itt;
+							}
+						}
+					}
+					tile_table[j] = CallocT<IndustryTileTable>(size);
+					memcpy(tile_table[j], copy_from, sizeof(*copy_from) * size);
+				}
+				/* Install final layout construction in the industry spec */
+				indsp->table = tile_table;
+				SETBIT(indsp->cleanup_flag, 1);
+				free(itt);
+			} break;
+
+			case 0x0B: // Industry production flags
+				indsp->life_type = (IndustryLifeType)grf_load_byte(&buf);
+				break;
+
+			case 0x0C: // Industry closure message
+				indsp->closure_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				break;
+
+			case 0x0D: // Production increase message
+				indsp->production_up_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				break;
+
+			case 0x0E: // Production decrease message
+				indsp->production_down_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				break;
+
+			case 0x0F: // Fund cost multiplier
+				indsp->cost_multiplier = grf_load_byte(&buf);
+				break;
+
+			case 0x10: // Production cargo types
+				for (byte j = 0; j < 2; j++) {
+					indsp->produced_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile);
+				}
+				break;
+
+			case 0x11: // Acceptance cargo types
+				for (byte j = 0; j < 3; j++) {
+					indsp->accepts_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile);
+				}
+				grf_load_byte(&buf); // Unnused, eat it up
+				break;
+
+			case 0x12: // Production multipliers
+			case 0x13:
+				indsp->production_rate[prop - 0x12] = grf_load_byte(&buf);
+				break;
+
+			case 0x14: // Minimal amount of cargo distributed
+				indsp->minimal_cargo = grf_load_byte(&buf);
+				break;
+
+			case 0x15: { // Random sound effects
+				indsp->number_of_sounds = grf_load_byte(&buf);
+				uint8 *sounds = MallocT<uint8>(indsp->number_of_sounds);
+
+				for (uint8 j = 0; j < indsp->number_of_sounds; j++) sounds[j] = grf_load_byte(&buf);
+				indsp->random_sounds = sounds;
+				SETBIT(indsp->cleanup_flag, 0);
+			} break;
+
+			case 0x16: // Conflicting industry types
+				for (byte j = 0; j < 3; j++) indsp->conflicting[j] = grf_load_byte(&buf);
+				break;
+
+			case 0x17: // Probability in random game
+				indsp->appear_ingame[_opt.landscape] = grf_load_byte(&buf);
+				break;
+
+			case 0x18: // Probability during gameplay
+				indsp->appear_creation[_opt.landscape] = grf_load_byte(&buf);
+				break;
+
+			case 0x19: // Map color
+				indsp->map_colour = MapDOSColour(grf_load_byte(&buf));
+				break;
+
+			case 0x1A: // Special industry flags to define special behavior
+				indsp->behaviour = (IndustyBehaviour)grf_load_dword(&buf);
+				break;
+
+			case 0x1B: // New industry text ID
+				indsp->new_industry_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				break;
+
+			case 0x1C: // Input cargo multipliers for the three input cargo types
+			case 0x1D:
+			case 0x1E: {
+					uint32 multiples = grf_load_dword(&buf);
+					indsp->input_cargo_multiplier[prop - 0x1C][0] = GB(multiples, 0,15);
+					indsp->input_cargo_multiplier[prop - 0x1C][1] = GB(multiples, 15,15);
+				} break;
+
+			case 0x1F: // Industry name
+				indsp->name = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				break;
+
+			case 0x20: // Prospecting success chance
+				indsp->prospecting_chance = grf_load_dword(&buf);
+				break;
+
+			case 0x21:   // Callback flags
+			case 0x22: { // Callback additional flags
+				byte aflag = grf_load_byte(&buf);
+				SB(indsp->callback_flags, (prop - 0x21) * 8, 8, aflag);
+			} break;
+
+			default:
+				ret = true;
+				break;
+		}
+	}
+
+	*bufp = buf;
+	return ret;
+}
+
 /* Action 0x00 */
 static void FeatureChangeInfo(byte *buf, int len)
 {
@@ -1705,8 +2068,8 @@
 		/* GSF_BRIDGE */       BridgeChangeInfo,
 		/* GSF_TOWNHOUSE */    TownHouseChangeInfo,
 		/* GSF_GLOBALVAR */    GlobalVarChangeInfo,
-		/* GSF_INDUSTRYTILES */NULL,
-		/* GSF_INDUSTRIES */   NULL,
+		/* GSF_INDUSTRYTILES */IndustrytilesChangeInfo,
+		/* GSF_INDUSTRIES */   IndustriesChangeInfo,
 		/* GSF_CARGOS */       NULL, /* Cargo is handled during reservation */
 		/* GSF_SOUNDFX */      SoundEffectChangeInfo,
 	};
@@ -2562,6 +2925,57 @@
 	}
 }
 
+static void IndustryMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
+{
+	if (!HASBIT(_ttdpatch_flags[3], 0x07)) return;
+
+	byte *bp = &buf[4 + idcount + cidcount * 3];
+	uint16 groupid = grf_load_word(&bp);
+
+	if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
+		grfmsg(1, "IndustryMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping.",
+		       groupid, _cur_grffile->spritegroups_count);
+		return;
+	}
+
+	for (uint i = 0; i < idcount; i++) {
+		uint8 id = buf[3 + i];
+		IndustrySpec *indsp = _cur_grffile->industryspec[id];
+
+		if (indsp == NULL) {
+			grfmsg(1, "IndustryMapSpriteGroup: Too many industries defined, skipping");
+			return;
+		}
+
+		indsp->grf_prop.spritegroup = _cur_grffile->spritegroups[groupid];
+	}
+}
+
+static void IndustrytileMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
+{
+	if (!HASBIT(_ttdpatch_flags[3], 0x07)) return;
+
+	byte *bp = &buf[4 + idcount + cidcount * 3];
+	uint16 groupid = grf_load_word(&bp);
+
+	if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
+		grfmsg(1, "IndustrytileMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping.",
+		       groupid, _cur_grffile->spritegroups_count);
+		return;
+	}
+
+	for (uint i = 0; i < idcount; i++) {
+		uint8 id = buf[3 + i];
+		IndustryTileSpec *indtsp = _cur_grffile->indtspec[id];
+
+		if (indtsp == NULL) {
+			grfmsg(1, "IndustrytileMapSpriteGroup: Too many industry tiles defined, skipping");
+			return;
+		}
+
+		indtsp->grf_prop.spritegroup = _cur_grffile->spritegroups[groupid];
+	}
+}
 
 static void CargoMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount)
 {
@@ -2651,6 +3065,14 @@
 			TownHouseMapSpriteGroup(buf, idcount, cidcount);
 			return;
 
+		case GSF_INDUSTRIES:
+			IndustryMapSpriteGroup(buf, idcount, cidcount);
+			return;
+
+		case GSF_INDUSTRYTILES:
+			IndustrytileMapSpriteGroup(buf, idcount, cidcount);
+			return;
+
 		case GSF_CARGOS:
 			CargoMapSpriteGroup(buf, idcount, cidcount);
 			return;
@@ -4780,7 +5202,26 @@
 			for (int i = 0; i < NUM_INDUSTRYTYPES; i++) {
 				IndustrySpec *indsp = file->industryspec[i];
 
-				if (indsp != NULL  && indsp->enabled) {
+				if (indsp != NULL && indsp->enabled) {
+					StringID strid;
+					/* process the conversion of text at the end, so to be sure everything will be fine
+					 * and available.  Check if it does not return undefind marker, which is a very good sign of a
+					 * substitute industry who has not changed the string been examined, thus using it as such */
+					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->name);
+					if (strid != STR_UNDEFINED) indsp->name = strid;
+
+					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->closure_text);
+					if (strid != STR_UNDEFINED) indsp->closure_text = strid;
+
+					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_up_text);
+					if (strid != STR_UNDEFINED) indsp->production_up_text = strid;
+
+					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_down_text);
+					if (strid != STR_UNDEFINED) indsp->production_down_text = strid;
+
+					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text);
+					if (strid != STR_UNDEFINED) indsp->new_industry_text = strid;
+
 					_industry_mngr.SetEntitySpec(indsp);
 					_loaded_newgrf_features.has_newindustries = true;
 				}
@@ -4796,6 +5237,15 @@
 			}
 		}
 	}
+
+	for (uint j = 0; j < NUM_INDUSTRYTYPES; j++) {
+		IndustrySpec *indsp = &_industry_specs[j];
+		if (indsp->enabled && indsp->grf_prop.grffile != NULL) {
+			for (uint i = 0; i < 3; i++) {
+				indsp->conflicting[i] = MapNewGRFIndustryType(indsp->conflicting[i], indsp->grf_prop.grffile->grfid);
+			}
+		}
+	}
 }
 
 /** Each cargo string needs to be mapped from TTDPatch to OpenTTD string IDs.
--- a/src/newgrf_callbacks.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_callbacks.h	Fri Jul 13 09:18:50 2007 +0000
@@ -9,164 +9,173 @@
 
 /**
  * List of implemented NewGRF callbacks.
+ * Most of these callbacks are only triggered when the corresponding
+ * bit is set in the callback flags/trigger for a vehicle, house,
+ * industry, etc.
  * Names are formatted as CBID_<CLASS>_<CALLBACK>
  */
 enum CallbackID {
-	/* Set when calling a randomizing trigger (almost undocumented) */
-	CBID_RANDOM_TRIGGER             = 0x01,
-
-	/* Powered wagons, if the result is lower as 0x40 then the wagon is powered
-	 * @todo : interpret the rest of the result, aka "visual effects" */
-	CBID_TRAIN_WAGON_POWER          = 0x10,
-
-	/* Vehicle length, returns the amount of 1/8's the vehicle is shorter
-	 * only for train vehicles */
-	CBID_TRAIN_VEHICLE_LENGTH       = 0x11,
-
-	/* Called (if appropriate bit in callback mask is set) to determine the
-	 * amount of cargo to load per unit of time when using gradual loading. */
-	CBID_VEHICLE_LOAD_AMOUNT        = 0x12,
-
-	/* Called (if appropriate bit in callback mask is set) to determine if a
-	 * newstation should be made available to build */
-	CBID_STATION_AVAILABILITY       = 0x13,
-
-	/* Called (if appropriate bit in callback mask is set) when drawing a tile
-	 * to choose a sprite layout to draw, instead of the standard 0-7 range */
-	CBID_STATION_SPRITE_LAYOUT      = 0x14,
-
-	/* Refit capacity, the passed vehicle needs to have its ->cargo_type set to
-	 * the cargo we are refitting to, returns the new cargo capacity */
-	CBID_VEHICLE_REFIT_CAPACITY     = 0x15,
-
-	CBID_TRAIN_ARTIC_ENGINE         = 0x16,
-
-	/* Called (if appropriate bit in callback mask is set) to determine whether
-	 * the house can be built on the specified tile. */
-	CBID_HOUSE_ALLOW_CONSTRUCTION   = 0x17,
-
-	CBID_VEHICLE_CARGO_SUFFIX       = 0x19,
-
-	/* Called (if appropriate bit in callback mask is set) to determine
-	 * the next animation frame. */
-	CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A,
-
-	/* Called (if appropriate bit in callback mask is set) for periodically
-	 * starting or stopping the animation. */
-	CBID_HOUSE_ANIMATION_START_STOP = 0x1B,
-
-	/* Called (if appropriate bit in callback mask is set) whenever the
-	 * construction state of a house changes. */
-	CBID_CONSTRUCTION_STATE_CHANGE  = 0x1C,
-
-	CBID_TRAIN_ALLOW_WAGON_ATTACH   = 0x1D,
-
-	/* Called (if appropriate bit in callback mask is set) to determine the
-	 * colour of a town building. */
-	CBID_BUILDING_COLOUR            = 0x1E,
-
-	/* Called (if appropriate bit in callback mask is set) to decide how much
-	 * cargo a town building can accept. */
-	CBID_HOUSE_CARGO_ACCEPTANCE     = 0x1F, // not yet implemented
-
-	/* Called (if appropriate bit in callback mask is set) to indicate
-	 * how long the current animation frame should last. */
-	CBID_HOUSE_ANIMATION_SPEED      = 0x20,
-
-	/* Called (if appropriate bit in callback mask is set) periodically to
-	 * determine if a house should be destroyed. */
-	CBID_HOUSE_DESTRUCTION          = 0x21,
-
-	/* Called to determine if the given industry type is available */
-	CBID_INDUSTRY_AVAILABLE         = 0x22, // not yet implemented
-
-	/* This callback is called from vehicle purchase lists. It returns a value to be
-	 * used as a custom string ID in the 0xD000 range. */
-	CBID_VEHICLE_ADDITIONAL_TEXT    = 0x23,
-
-	/* Called when building a station to customize the tile layout */
-	CBID_STATION_TILE_LAYOUT        = 0x24,
+	/** Set when calling a randomizing trigger (almost undocumented). */
+	CBID_RANDOM_TRIGGER                  = 0x01,
 
-	/* Called for periodically starting or stopping the animation. */
-	CBID_INDTILE_ANIM_START_STOP    = 0x25, // not yet implemented
-
-	/* Called to determine industry tile next animation frame. */
-	CBID_INDTILE_ANIM_NEXT_FRAME    = 0x26, // not yet implemented
-
-	/* Called to indicate how long the current animation frame should last. */
-	CBID_INDTILE_ANIMATION_SPEED    = 0x27, // not yet implemented
-
-	/* Called to determine if the given industry can be built on specific area */
-	CBID_INDUSTRY_LOCATION          = 0x28, // not yet implemented
-
-	/* Called on production changes, so it can be adjusted */
-	CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // not yet implemented
-
-	/* Called (if appropriate bit in callback mask is set) to determine which
-	 * cargoes a town building should accept. */
-	CBID_HOUSE_ACCEPT_CARGO         = 0x2A, // not yet implemented
-
-	/* Called to query the cargo acceptance of the industry tile */
-	CBID_INDTILE_ACCEPT_CARGO       = 0x2B, // not yet implemented
-
-	/* Called to determine which cargoes an industry should accept. */
-	CBID_INDUSTRY_ACCEPT_CARGO      = 0x2C, // not yet implemented
-
-	/* Called to determine if a specific colour map should be used for a vehicle
-	 * instead of the default livery */
-	CBID_VEHICLE_COLOUR_MAPPING     = 0x2D,
-
-	/* Called (if appropriate bit in callback mask is set) to determine how much
-	 * cargo a town building produces. */
-	CBID_HOUSE_PRODUCE_CARGO        = 0x2E, // not yet implemented
-
-	/* Called to determine if the given industry tile can be built on specific tile */
-	CBID_INDTILE_SHAPE_CHECK        = 0x2F, // not yet implemented
-
-	/* Called to determine the type (if any) of foundation to draw for industry tile */
-	CBID_INDUSTRY_DRAW_FOUNDATIONS  = 0x30, // not yet implemented
+	/** Powered wagons, if the result is lower as 0x40 then the wagon is powered
+	 * @todo : interpret the rest of the result, aka "visual effects". */
+	CBID_TRAIN_WAGON_POWER               = 0x10,
 
-	/* Called when the player (or AI) tries to start or stop a vehicle. Mainly
-	 * used for preventing a vehicle from leaving the depot. */
-	CBID_VEHICLE_START_STOP_CHECK   = 0x31,
-
-	/* Called to play a special sound effect */
-	CBID_VEHICLE_SOUND_EFFECT       = 0x33,
-
-	/* Called monthly on production changes, so it can be adjusted more frequently */
-	CBID_INDUSTRY_MONTHLYPROD_CHANGE= 0x35, // not yet implemented
-
-	/* Called to modify various vehicle properties. Callback parameter 1
-	 * specifies the property index, as used in Action 0, to change. */
-	CBID_VEHICLE_MODIFY_PROPERTY    = 0x36,
-
-	/* Called to determine text to display after cargo name */
-	CBID_INDUSTRY_CARGO_SUFFIX      = 0x37, // not yet implemented
-
-	/* Called to determine more text in the fund industry window */
-	CBID_INDUSTRY_FUND_MORE_TEXT    = 0x38, // not yet implemented
+	/** Vehicle length, returns the amount of 1/8's the vehicle is shorter for trains and RVs. */
+	CBID_VEHICLE_LENGTH                  = 0x11,
 
-	/* Called to calculate the income of delivered cargo */
-	CBID_CARGO_PROFIT_CALC          = 0x39,
-
-	/* Called to determine more text in the industry window */
-	CBID_INDUSTRY_WINDOW_MORE_TEXT  = 0x3A, // not yet implemented
-
-	/* Called to determine industry special effects */
-	CBID_INDUSTRY_SPECIAL_EFFECT    = 0x3B, // not yet implemented
+	/** Determine the amount of cargo to load per unit of time when using gradual loading. */
+	CBID_VEHICLE_LOAD_AMOUNT             = 0x12,
 
-	/* Called to determine if industry can alter the ground below industry tile */
-	CBID_INDUSTRY_AUTOSLOPE         = 0x3C, // not yet implemented
-
-	/* Called to determine if the industry can still accept or refuse  more cargo arrival */
-	CBID_INDUSTRY_REFUSE_CARGO      = 0x3D, // not yet implemented
+	/** Determine whether a newstation should be made available to build. */
+	CBID_STATION_AVAILABILITY            = 0x13,
 
-	/* Called (if appropriate bit in callback mask set) to determine whether a
-	 * town building can be destroyed. */
-	CBID_HOUSE_DENY_DESTRUCTION     = 0x143,
+	/** Choose a sprite layout to draw, instead of the standard 0-7 range. */
+	CBID_STATION_SPRITE_LAYOUT           = 0x14,
 
-	/* Called to calculate part of a station rating */
-	CBID_CARGO_STATION_RATING_CALC  = 0x145,
+	/** Refit capacity, the passed vehicle needs to have its ->cargo_type set to
+	 * the cargo we are refitting to, returns the new cargo capacity. */
+	CBID_VEHICLE_REFIT_CAPACITY          = 0x15,
+
+	/** Builds articulated engines for trains and RVs. */
+	CBID_VEHICLE_ARTIC_ENGINE            = 0x16,
+
+	/** Determine whether the house can be built on the specified tile. */
+	CBID_HOUSE_ALLOW_CONSTRUCTION        = 0x17,
+
+	/** AI construction/purchase selection */
+	CBID_GENERIC_AI_PURCHASE_SELECTION   = 0x18, // not implemented
+
+	/** Determine the cargo "suffixes" for each refit possibility of a cargo. */
+	CBID_VEHICLE_CARGO_SUFFIX            = 0x19,
+
+	/** Determine the next animation frame for a house. */
+	CBID_HOUSE_ANIMATION_NEXT_FRAME      = 0x1A,
+
+	/** Called for periodically starting or stopping the animation. */
+	CBID_HOUSE_ANIMATION_START_STOP      = 0x1B,
+
+	/** Called whenever the construction state of a house changes. */
+	CBID_HOUSE_CONSTRUCTION_STATE_CHANGE = 0x1C,
+
+	/** Determine whether a wagon can be attached to an already existing train. */
+	CBID_TRAIN_ALLOW_WAGON_ATTACH        = 0x1D,
+
+	/** Called to determine the colour of a town building. */
+	CBID_BUILDING_COLOUR                 = 0x1E,
+
+	/** Called to decide how much cargo a town building can accept. */
+	CBID_HOUSE_CARGO_ACCEPTANCE          = 0x1F,
+
+	/** Called to indicate how long the current animation frame should last. */
+	CBID_HOUSE_ANIMATION_SPEED           = 0x20,
+
+	/** Called periodically to determine if a house should be destroyed. */
+	CBID_HOUSE_DESTRUCTION               = 0x21,
+
+	/** Called to determine if the given industry type is available */
+	CBID_INDUSTRY_AVAILABLE              = 0x22, // not implemented
+
+	/** This callback is called from vehicle purchase lists. It returns a value to be
+	 * used as a custom string ID in the 0xD000 range. */
+	CBID_VEHICLE_ADDITIONAL_TEXT         = 0x23,
+
+	/** Called when building a station to customize the tile layout */
+	CBID_STATION_TILE_LAYOUT             = 0x24,
+
+	/** Called for periodically starting or stopping the animation. */
+	CBID_INDTILE_ANIM_START_STOP         = 0x25,
+
+	/** Called to determine industry tile next animation frame. */
+	CBID_INDTILE_ANIM_NEXT_FRAME         = 0x26,
+
+	/** Called to indicate how long the current animation frame should last. */
+	CBID_INDTILE_ANIMATION_SPEED         = 0x27,
+
+	/** Called to determine if the given industry can be built on specific area. */
+	CBID_INDUSTRY_LOCATION               = 0x28,
+
+	/** Called on production changes, so it can be adjusted. */
+	CBID_INDUSTRY_PRODUCTION_CHANGE      = 0x29, // not implemented
+
+	/** Called to determine which cargoes a town building should accept. */
+	CBID_HOUSE_ACCEPT_CARGO              = 0x2A,
+
+	/** Called to query the cargo acceptance of the industry tile */
+	CBID_INDTILE_CARGO_ACCEPTANCE        = 0x2B,
+
+	/** Called to determine which cargoes an industry should accept. */
+	CBID_INDTILE_ACCEPT_CARGO            = 0x2C,
+
+	/** Called to determine if a specific colour map should be used for a vehicle
+	 * instead of the default livery. */
+	CBID_VEHICLE_COLOUR_MAPPING          = 0x2D,
+
+	/** Called to determine how much cargo a town building produces. */
+	CBID_HOUSE_PRODUCE_CARGO             = 0x2E,
+
+	/** Called to determine if the given industry tile can be built on specific tile. */
+	CBID_INDTILE_SHAPE_CHECK             = 0x2F,
+
+	/** Called to determine the type (if any) of foundation to draw for industry tile. */
+	CBID_INDUSTRY_DRAW_FOUNDATIONS       = 0x30,
+
+	/** Called when the player (or AI) tries to start or stop a vehicle. Mainly
+	 * used for preventing a vehicle from leaving the depot. */
+	CBID_VEHICLE_START_STOP_CHECK        = 0x31,
+
+	/** Called for every vehicle every 32 days (not all on same date though). */
+	CBID_VEHICLE_32DAY_CALLBACK          = 0x32, // not implemented
+
+	/** Called to play a special sound effect */
+	CBID_VEHICLE_SOUND_EFFECT            = 0x33,
+
+	/** Return the vehicles this given vehicle can be "upgraded" to. */
+	CBID_VEHICLE_AUTOREPLACE_SELECTION   = 0x34,
+
+	/** Called monthly on production changes, so it can be adjusted more frequently */
+	CBID_INDUSTRY_MONTHLYPROD_CHANGE     = 0x35, // not implemented
+
+	/** Called to modify various vehicle properties. Callback parameter 1
+	 * specifies the property index, as used in Action 0, to change. */
+	CBID_VEHICLE_MODIFY_PROPERTY         = 0x36,
+
+	/** Called to determine text to display after cargo name */
+	CBID_INDUSTRY_CARGO_SUFFIX           = 0x37, // not implemented
+
+	/** Called to determine more text in the fund industry window */
+	CBID_INDUSTRY_FUND_MORE_TEXT         = 0x38,
+
+	/** Called to calculate the income of delivered cargo */
+	CBID_CARGO_PROFIT_CALC               = 0x39,
+
+	/** Called to determine more text in the industry window */
+	CBID_INDUSTRY_WINDOW_MORE_TEXT       = 0x3A,
+
+	/** Called to determine industry special effects */
+	CBID_INDUSTRY_SPECIAL_EFFECT         = 0x3B,
+
+	/** Called to determine if industry can alter the ground below industry tile */
+	CBID_INDUSTRY_AUTOSLOPE              = 0x3C, // not implemented
+
+	/** Called to determine if the industry can still accept or refuse more cargo arrival */
+	CBID_INDUSTRY_REFUSE_CARGO           = 0x3D,
+
+	/** Called to determine whether a town building can be destroyed. */
+	CBID_HOUSE_DENY_DESTRUCTION          = 0x143,
+
+	/** Select an ambient sound to play for a given type of tile. */
+	CBID_SOUNDS_AMBIENT_EFFECT           = 0x144, // not implemented
+
+	/** Called to calculate part of a station rating. */
+	CBID_CARGO_STATION_RATING_CALC       = 0x145,
+
+	/** Allow signal sprites to be replaced dynamically. */
+	CBID_NEW_SIGNALS_SPRITE_DRAW         = 0x146, // not implemented
+
+	/** Add an offset to the default sprite numbers to show another sprite. */
+	CBID_CANALS_SPRITE_OFFSET            = 0x147, // not implemented
 };
 
 /**
@@ -240,7 +249,7 @@
 enum IndustryTileCallbackMask {
 	CBM_INDT_ANIM_NEXT_FRAME          = 0,  ///< decides next animation frame
 	CBM_INDT_ANIM_SPEED               = 1,  ///< decides animation speed
-	CBM_INDT_ACCEPTANCE_CARGO         = 2,  ///< decides amount of cargo acceptance
+	CBM_INDT_CARGO_ACCEPTANCE         = 2,  ///< decides amount of cargo acceptance
 	CBM_INDT_ACCEPT_CARGO             = 3,  ///< decides accepted types
 	CBM_INDT_SHAPE_CHECK              = 4,  ///< decides slope suitability
 	CBM_INDT_DRAW_FOUNDATIONS         = 5,  ///< decides if default foundations need to be drawn
--- a/src/newgrf_canal.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_canal.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -7,6 +7,7 @@
 #include "debug.h"
 #include "newgrf.h"
 #include "newgrf_callbacks.h"
+#include "newgrf_commons.h"
 #include "newgrf_spritegroup.h"
 #include "newgrf_canal.h"
 
@@ -44,8 +45,7 @@
 			return TileHeight(tile);
 
 		case 0x81:
-			return ((_opt.landscape == LT_ARCTIC && GetTileZ(tile) > GetSnowLine()) ? 4 : 0) |
-			       (_opt.landscape == LT_TROPIC ? GetTropicZone(tile) : 0);
+			return GetTerrainType(tile);
 	}
 
 	DEBUG(grf, 1, "Unhandled canal property 0x%02X", variable);
--- a/src/newgrf_cargo.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_cargo.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -110,3 +110,20 @@
 	/* Else the cargo value is a 'climate independent' 'bitnum' */
 	return GetCargoIDByBitnum(cargo);
 }
+
+uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile)
+{
+	/* Pre-version 7 uses the 'climate dependent' ID, i.e. cargo is the cargo ID */
+	if (grffile->grf_version < 7) return cargo;
+
+	const CargoSpec *cs = GetCargo(cargo);
+
+	/* If the GRF contains a translation table (and the cargo is in the table)
+	 * then get the cargo ID for the label */
+	for (uint i = 0; i < grffile->cargo_max; i++) {
+		if (cs->label == grffile->cargo_list[i]) return i;
+	}
+
+	/* No matching label was found, so we return the 'climate independent' 'bitnum' */
+	return cs->bitnum;;
+}
--- a/src/newgrf_cargo.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_cargo.h	Fri Jul 13 09:18:50 2007 +0000
@@ -28,5 +28,6 @@
 SpriteID GetCustomCargoSprite(const CargoSpec *cs);
 uint16 GetCargoCallback(uint16 callback, uint32 param1, uint32 param2, const CargoSpec *cs);
 CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile);
+uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile);
 
 #endif /* NEWGRF_CARGO_H */
--- a/src/newgrf_commons.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_commons.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -73,7 +73,7 @@
 {
 	const EntityIDMapping *map;
 
-	for (uint16 id = max_offset; id < max_new_entities; id++) {
+	for (uint16 id = 0; id < max_new_entities; id++) {
 		map = &mapping_ID[id];
 		if (map->entity_id == grf_local_id && map->grfid == grfid) {
 			return id;
@@ -265,5 +265,6 @@
 	if (x >= 8) x -= 16;
 	if (y >= 8) y -= 16;
 
-	return tile + TileDiffXY(x, y);
+	/* Make sure we never roam outside of the map */
+	return TILE_MASK(tile + TileDiffXY(x, y));
 }
--- a/src/newgrf_industries.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industries.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -7,6 +7,9 @@
 #include "debug.h"
 #include "functions.h"
 #include "macros.h"
+#include "variables.h"
+#include "landscape.h"
+#include "table/strings.h"
 #include "industry.h"
 #include "industry_map.h"
 #include "newgrf.h"
@@ -14,6 +17,8 @@
 #include "newgrf_spritegroup.h"
 #include "newgrf_industries.h"
 #include "newgrf_commons.h"
+#include "newgrf_text.h"
+#include "newgrf_town.h"
 #include "date.h"
 
 /* Since the industry IDs defined by the GRF file don't necessarily correlate
@@ -22,6 +27,14 @@
 IndustryOverrideManager _industry_mngr(NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE);
 IndustryTileOverrideManager _industile_mngr(NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRYTILES, INVALID_INDUSTRYTILE);
 
+IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id)
+{
+	if (grf_type == IT_INVALID) return IT_INVALID;
+	if (!HASBIT(grf_type, 7)) return GB(grf_type, 0, 6);
+
+	return _industry_mngr.GetID(GB(grf_type, 0, 6), grf_id);
+}
+
 /**
  * Finds the distance for the closest tile with water/land given a tile
  * @param tile  the tile to find the distance too
@@ -31,20 +44,20 @@
 static uint GetClosestWaterDistance(TileIndex tile, bool water)
 {
 	TileIndex t;
-	uint best_dist;
-	for (t = 1; t < MapSize(); t++) {
+	int best_dist;
+	for (t = 0; t < MapSize(); t++) {
 		if (IsTileType(t, MP_WATER) == water) break;
 	}
 	best_dist = DistanceManhattan(tile, t);
 
 	for (; t < MapSize(); t++) {
-		uint dist = DistanceManhattan(tile, t);
+		int dist = DistanceManhattan(tile, t);
 		if (dist < best_dist) {
 			if (IsTileType(t, MP_WATER) == water) best_dist = dist;
 		} else {
 			/* When the Y distance between the current row and the 'source' tile
 			 * is larger than the best distance, we've found the best distance */
-			if (TileY(t) - TileY(tile) > best_dist) return best_dist;
+			if ((int)TileY(t) - (int)TileY(tile) > best_dist) break;
 			if (TileX(tile) > TileX(t)) {
 				/* We can safely skip this many tiles; from here all tiles have a
 				 * higher or equal distance than the best distance */
@@ -53,7 +66,7 @@
 			} else {
 				/* We can safely skip this many tiles; up to here all tiles have a
 				 * higher or equal distance than the best distance */
-				t += best_dist - dist;
+				t += max(best_dist - dist, 0);
 				continue;
 			}
 		}
@@ -107,6 +120,19 @@
 	return 0xFFFF; // tile is not an industry one or  does not belong to the current industry
 }
 
+static uint32 GetClosestIndustry(TileIndex tile, IndustryType type, const Industry *current)
+{
+	uint32 best_dist = MAX_UVALUE(uint32);
+	const Industry *i;
+	FOR_ALL_INDUSTRIES(i) {
+		if (i->type != type || i == current) continue;
+
+		best_dist = min(best_dist, DistanceManhattan(tile, i->xy));
+	}
+
+	return best_dist;
+}
+
 /** This function implements the industries variables that newGRF defines.
  * @param variable that is queried
  * @param parameter unused
@@ -116,7 +142,7 @@
 uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
 {
 	const Industry *industry = object->u.industry.ind;
-	TileIndex tile   = object->u.industry.tile;
+	TileIndex tile = object->u.industry.tile;
 	const IndustrySpec *indspec = GetIndustrySpec(industry->type);
 
 	switch (variable) {
@@ -125,22 +151,34 @@
 		case 0x42: { // waiting cargo, but only if those two callback flags are set
 			uint16 callback = indspec->callback_flags;
 			if (HASBIT(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HASBIT(callback, CBM_IND_PRODUCTION_256_TICKS)) {
-				return max(industry->incoming_cargo_waiting[variable - 0x40], (uint16)0xFFFF);
+				return min(industry->incoming_cargo_waiting[variable - 0x40], (uint16)0xFFFF);
 			} else {
 				return 0;
 			}
 		}
-		/* TODO: somehow determine whether we're in water or not */
-		case 0x43: return GetClosestWaterDistance(tile, true); // Manhattan distance of closes dry/water tile
+
+		/* Manhattan distance of closes dry/water tile */
+		case 0x43: return GetClosestWaterDistance(tile, (object->u.industry_location.spec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
 
 		/* Get industry ID at offset param */
 		case 0x60: return GetIndustryIDAtOffset(GetNearbyTile(parameter, industry->xy), tile, industry);
 
 		case 0x61: return 0; // Get random tile bits at offset param
 
-		case 0x62: // Land info of nearby tiles
-		case 0x63: // Animation stage of nerby tiles
-		case 0x64: break; // Distance of nearest industry of given type
+		/* Land info of nearby tiles */
+		case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
+
+		/* Animation stage of nearby tiles */
+		case 0x63 : {
+			tile = GetNearbyTile(parameter, tile);
+			if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == industry) {
+				return GetIndustryAnimationState(tile);
+			}
+			return 0xFFFFFFFF;
+		}
+
+		/* Distance of nearest industry of given type */
+		case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, indspec->grf_prop.grffile->grfid), industry); // Distance of nearest industry of given type
 		/* Get town zone and Manhattan distance of closest town */
  		case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
 		/* Get square of Euclidian distance of closes town */
@@ -156,7 +194,7 @@
 		case 0x80: return industry->xy;
 		case 0x81: return GB(industry->xy, 8, 8);
 		/* Pointer to the town the industry is associated with */
-		case 0x82:
+		case 0x82: return industry->town->index;
 		case 0x83:
 		case 0x84:
 		case 0x85: DEBUG(grf, 0, "NewGRFs shouldn't be doing pointer magic"); break; // not supported
@@ -260,6 +298,88 @@
 	return group->g.callback.result;
 }
 
+uint32 IndustryLocationGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
+{
+	TileIndex tile = object->u.industry_location.tile;
+
+	if (object->scope == VSG_SCOPE_PARENT) {
+		return TownGetVariable(variable, parameter, available, ClosestTownFromTile(tile, (uint)-1));
+	}
+
+	switch (variable) {
+		/* Land info of nearby tiles */
+		case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
+
+		/* Distance of nearest industry of given type */
+		case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, object->u.industry_location.spec->grf_prop.grffile->grfid), NULL);
+
+		/* Location where to build the industry */
+		case 0x80: return tile;
+		case 0x81: return GB(tile, 8, 8);
+
+		/* Pointer to the town the industry is associated with */
+		case 0x82: return ClosestTownFromTile(tile, (uint)-1)->index;
+		case 0x83:
+		case 0x84:
+		case 0x85: DEBUG(grf, 0, "NewGRFs shouldn't be doing pointer magic"); break; // not supported
+
+		/* Number of the layout */
+		case 0x86: return object->u.industry_location.itspec_index;
+
+		/* Ground type */
+		case 0x87: return GetTerrainType(tile);
+
+		/* Town zone */
+		case 0x88: return GetTownRadiusGroup(ClosestTownFromTile(tile, (uint)-1), tile);
+
+		/* Manhattan distance of the closest town */
+		case 0x89: return min(DistanceManhattan(ClosestTownFromTile(tile, (uint)-1)->xy, tile), 255);
+
+		/* Lowest height of the tile */
+		case 0x8A: return GetTileZ(tile);
+
+		/* Distance to the nearest water/land tile */
+		case 0x8B: return GetClosestWaterDistance(tile, (object->u.industry_location.spec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
+
+		/* Square of Euclidian distance from town */
+		case 0x8D: return min(DistanceSquare(ClosestTownFromTile(tile, (uint)-1)->xy, tile), 65535);
+	}
+
+	DEBUG(grf, 1, "Unhandled location industry property 0x%X", variable);
+
+	*available = false;
+	return (uint32)-1;
+}
+
+bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index)
+{
+	const IndustrySpec *indspec = GetIndustrySpec(type);
+
+	ResolverObject object;
+	const SpriteGroup *group;
+
+	NewIndustryResolver(&object, tile, NULL);
+	object.GetVariable = IndustryLocationGetVariable;
+	object.callback = CBID_INDUSTRY_LOCATION;
+	object.u.industry_location.tile = tile;
+	object.u.industry_location.spec = indspec;
+	object.u.industry_location.itspec_index = itspec_index;
+
+	group = Resolve(GetIndustrySpec(type)->grf_prop.spritegroup, &object);
+
+	if (group == NULL || group->type != SGT_CALLBACK) return false;
+
+	switch (group->g.callback.result) {
+		case 0x400: return true;
+		case 0x401: _error_message = STR_0239_SITE_UNSUITABLE; break;
+		case 0x402: _error_message = STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST; break;
+		case 0x403: _error_message = STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT; break;
+		default: _error_message = GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + group->g.callback.result); break;
+	}
+
+	return false;
+}
+
 static int32 DerefIndProd(uint field, bool use_register)
 {
 	return use_register ? (int32)GetRegister(field) : field;
@@ -273,7 +393,7 @@
 void IndustryProductionCallback(Industry *ind, int reason)
 {
 	ResolverObject object;
-	NewIndustryResolver(&object, INVALID_TILE, ind);
+	NewIndustryResolver(&object, ind->xy, ind);
 	object.callback_param2 = reason;
 
 	for (uint loop = 0;; loop++) {
@@ -295,4 +415,6 @@
 
 		SB(object.callback_param2, 24, 8, again);
 	}
+
+	InvalidateWindow(WC_INDUSTRY_VIEW, ind->index);
 }
--- a/src/newgrf_industries.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industries.h	Fri Jul 13 09:18:50 2007 +0000
@@ -13,10 +13,15 @@
 uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile);
 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);
+
+IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id);
 
 /* in newgrf_industrytiles.cpp*/
 uint32 IndustryTileGetRandomBits(const ResolverObject *object);
 uint32 IndustryTileGetTriggers(const ResolverObject *object);
 void IndustryTileSetTriggers(const ResolverObject *object, int triggers);
 
+uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index);
+
 #endif /* NEWGRF_INDUSTRIES_H */
--- a/src/newgrf_industrytiles.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industrytiles.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -15,9 +15,12 @@
 #include "newgrf_spritegroup.h"
 #include "newgrf_callbacks.h"
 #include "newgrf_industries.h"
+#include "newgrf_industrytiles.h"
+#include "newgrf_text.h"
 #include "industry_map.h"
 #include "clear_map.h"
 #include "table/sprites.h"
+#include "table/strings.h"
 #include "sprite.h"
 
 /**
@@ -27,7 +30,7 @@
  * @param index of the industry been queried for
  * @return a construction of bits obeying the newgrf format
  */
-static uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
+uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
 {
 	byte tile_type;
 	bool is_same_industry;
@@ -82,9 +85,10 @@
 		case 0x44 : return (IsTileType(tile, MP_INDUSTRY)) ? GetIndustryAnimationState(tile) : 0;
 
 		/* Land info of nearby tiles */
-		case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds->index);
+		case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds == NULL ? (IndustryID)INVALID_INDUSTRY : inds->index);
 
-		case 0x61 : {/* Animation stage of nearby tiles */
+		/* Animation stage of nearby tiles */
+		case 0x61 : {
 			tile = GetNearbyTile(parameter, tile);
 			if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == inds) {
 				return GetIndustryAnimationState(tile);
@@ -96,7 +100,10 @@
 		case 0x62 : return GetIndustryIDAtOffset(GetNearbyTile(parameter, tile), tile, inds);
 	}
 
-	return 0;
+	DEBUG(grf, 1, "Unhandled industry tile property 0x%X", variable);
+
+	*available = false;
+	return (uint32)-1;
 }
 
 static const SpriteGroup *IndustryTileResolveReal(const ResolverObject *object, const SpriteGroup *group)
@@ -207,7 +214,7 @@
 		if (HASBIT(inds->callback_flags, CBM_INDT_DRAW_FOUNDATIONS)) {
 			/* Called to determine the type (if any) of foundation to draw for industry tile */
 			uint32 callback_res = GetIndustryTileCallback(CBID_INDUSTRY_DRAW_FOUNDATIONS, 0, 0, gfx, i, ti->tile);
-			draw_old_one = callback_res == 0 || callback_res == CALLBACK_FAILED;
+			draw_old_one = callback_res != 0;
 		}
 
 		if (draw_old_one) DrawFoundation(ti, ti->tileh);
@@ -226,3 +233,125 @@
 		return true;
 	}
 }
+
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx)
+{
+	Industry ind;
+	ind.xy = 0;
+	ind.type = type;
+
+	uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, 0, gfx, &ind, tile);
+	if (its->grf_prop.grffile->grf_version < 7) {
+		return callback_res != 0;
+	}
+	if (callback_res == CALLBACK_FAILED) return false;
+
+	switch (callback_res) {
+		case 0x400: return true;
+		case 0x401: _error_message = STR_0239_SITE_UNSUITABLE;                 return false;
+		case 0x402: _error_message = STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST; return false;
+		case 0x403: _error_message = STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT;     return false;
+		default: _error_message = GetGRFStringID(its->grf_prop.grffile->grfid, 0xD000 + callback_res); return false;
+	}
+}
+
+void AnimateNewIndustryTile(TileIndex tile)
+{
+	Industry *ind = GetIndustryByTile(tile);
+	IndustryGfx gfx = GetIndustryGfx(tile);
+	const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+	byte animation_speed = itspec->animation_speed;
+
+	if (HASBIT(itspec->callback_flags, CBM_INDT_ANIM_SPEED)) {
+		uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIMATION_SPEED, 0, 0, gfx, ind, tile);
+		if (callback_res != CALLBACK_FAILED) animation_speed = clamp(callback_res & 0xFF, 0, 16);
+	}
+
+	/* An animation speed of 2 means the animation frame changes 4 ticks, and
+	 * increasing this value by one doubles the wait. 0 is the minimum value
+	 * allowed for animation_speed, which corresponds to 30ms, and 16 is the
+	 * maximum, corresponding to around 33 minutes. */
+	if ((_tick_counter % (1 << animation_speed)) != 0) return;
+
+	bool frame_set_by_callback = false;
+	byte frame = GetIndustryAnimationState(tile);
+	uint16 num_frames = GB(itspec->animation_info, 0, 8) + 1;
+
+	if (HASBIT(itspec->callback_flags, CBM_INDT_ANIM_NEXT_FRAME)) {
+		uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_NEXT_FRAME, HASBIT(itspec->animation_special_flags, 0) ? Random() : 0, 0, gfx, ind, tile);
+
+		if (callback_res != CALLBACK_FAILED) {
+			frame_set_by_callback = true;
+
+			switch (callback_res & 0xFF) {
+				case 0xFF:
+					DeleteAnimatedTile(tile);
+					break;
+				case 0xFE:
+					/* Carry on as normal. */
+					frame_set_by_callback = false;
+					break;
+				default:
+					frame = callback_res & 0xFF;
+					break;
+			}
+		}
+	}
+
+	if (!frame_set_by_callback) {
+		if (frame < num_frames) {
+			frame++;
+		} else if (frame == num_frames && GB(itspec->animation_info, 8, 8) == 1) {
+			/* This animation loops, so start again from the beginning */
+			frame = 0;
+		} else {
+			/* This animation doesn't loop, so stay here */
+			DeleteAnimatedTile(tile);
+		}
+	}
+
+	SetIndustryAnimationState(tile, frame);
+	MarkTileDirtyByTile(tile);
+}
+
+static void ChangeIndustryTileAnimationFrame(TileIndex tile, IndustryAnimationTrigger iat, uint32 random_bits, IndustryGfx gfx, Industry *ind)
+{
+	uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_START_STOP, random_bits, iat, gfx, ind, tile);
+	if (callback_res == CALLBACK_FAILED) return;
+
+	switch (callback_res & 0xFF) {
+		case 0xFD: /* Do nothing. */         break;
+		case 0xFE: AddAnimatedTile(tile);    break;
+		case 0xFF: DeleteAnimatedTile(tile); break;
+		default:
+			SetIndustryAnimationState(tile, callback_res & 0xFF);
+			AddAnimatedTile(tile);
+			break;
+	}
+}
+
+bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random)
+{
+	IndustryGfx gfx = GetIndustryGfx(tile);
+	const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
+
+	if (!HASBIT(itspec->animation_triggers, iat)) return false;
+
+	Industry *ind = GetIndustryByTile(tile);
+	ChangeIndustryTileAnimationFrame(tile, iat, random, gfx, ind);
+	return true;
+}
+
+bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat)
+{
+	bool ret = true;
+	uint32 random = Random();
+	BEGIN_TILE_LOOP(tile, ind->width, ind->height, ind->xy)
+		if (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == ind->index) {
+			ret &= StartStopIndustryTileAnimation(tile, iat, random);
+			SB(random, 0, 16, Random());
+		}
+	END_TILE_LOOP(tile, ind->width, ind->height, ind->xy)
+
+	return ret;
+}
--- a/src/newgrf_industrytiles.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_industrytiles.h	Fri Jul 13 09:18:50 2007 +0000
@@ -5,7 +5,20 @@
 #ifndef NEWGRF_INDUSTRYTILES_H
 #define NEWGRF_INDUSTRYTILES_H
 
+enum IndustryAnimationTrigger {
+	IAT_CONSTRUCTION_STATE_CHANGE,
+	IAT_TILELOOP,
+	IAT_INDUSTRY_TICK,
+	IAT_INDUSTRY_RECEIVED_CARGO,
+	IAT_INDUSTRY_DISTRIBUTES_CARGO,
+};
+
 bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds);
 uint16 GetIndustryTileCallback(uint16 callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile);
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx);
+
+void AnimateNewIndustryTile(TileIndex tile);
+bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random = Random());
+bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat);
 
 #endif /* NEWGRF_INDUSTRYTILES_H */
--- a/src/newgrf_spritegroup.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_spritegroup.h	Fri Jul 13 09:18:50 2007 +0000
@@ -225,6 +225,11 @@
 			IndustryGfx gfx;
 		} industry;
 		struct {
+			TileIndex tile;
+			const IndustrySpec *spec;
+			uint itspec_index;
+		} industry_location;
+		struct {
 			const struct CargoSpec *cs;
 		} cargo;
 	} u;
--- a/src/newgrf_station.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/newgrf_station.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -345,6 +345,20 @@
 	st->waiting_triggers = triggers;
 }
 
+/**
+ * Station variable cache
+ * This caches 'expensive' station variable lookups which iterate over
+ * several tiles that may be called multiple times per Resolve().
+ */
+static struct {
+	uint32 v40;
+	uint32 v41;
+	uint32 v45;
+	uint32 v46;
+	uint32 v47;
+	uint32 v49;
+	uint8 valid;
+} _svc;
 
 static uint32 StationGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
 {
@@ -378,7 +392,7 @@
 			case 0x42: return 0;               // Rail type (XXX Get current type from GUI?)
 			case 0x43: return _current_player; // Station owner
 			case 0x44: return 2;               // PBS status
-			case 0xFA: return max(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0); // Build date
+			case 0xFA: return clamp(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Build date, clamped to a 16 bit value
 		}
 
 		*available = false;
@@ -387,14 +401,29 @@
 
 	switch (variable) {
 		/* Calculated station variables */
-		case 0x40: return GetPlatformInfoHelper(tile, false, false, false);
-		case 0x41: return GetPlatformInfoHelper(tile, true,  false, false);
+		case 0x40:
+			if (!HASBIT(_svc.valid, 0)) { _svc.v40 = GetPlatformInfoHelper(tile, false, false, false); SETBIT(_svc.valid, 0); }
+			return _svc.v40;
+
+		case 0x41:
+			if (!HASBIT(_svc.valid, 1)) { _svc.v41 = GetPlatformInfoHelper(tile, true,  false, false); SETBIT(_svc.valid, 1); }
+			return _svc.v41;
+
 		case 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8);
 		case 0x43: return st->owner; // Station owner
 		case 0x44: return 2;         // PBS status
-		case 0x45: return GetRailContinuationInfo(tile);
-		case 0x46: return GetPlatformInfoHelper(tile, false, false, true);
-		case 0x47: return GetPlatformInfoHelper(tile, true,  false, true);
+		case 0x45:
+			if (!HASBIT(_svc.valid, 2)) { _svc.v45 = GetRailContinuationInfo(tile); SETBIT(_svc.valid, 2); }
+			return _svc.v45;
+
+		case 0x46:
+			if (!HASBIT(_svc.valid, 3)) { _svc.v46 = GetPlatformInfoHelper(tile, false, false, true); SETBIT(_svc.valid, 3); }
+			return _svc.v46;
+
+		case 0x47:
+			if (!HASBIT(_svc.valid, 4)) { _svc.v47 = GetPlatformInfoHelper(tile, true,  false, true); SETBIT(_svc.valid, 4); }
+			return _svc.v47;
+
 		case 0x48: { // Accepted cargo types
 			CargoID cargo_type;
 			uint32 value = 0;
@@ -404,7 +433,9 @@
 			}
 			return value;
 		}
-		case 0x49: return GetPlatformInfoHelper(tile, false, true, false);
+		case 0x49:
+			if (!HASBIT(_svc.valid, 5)) { _svc.v49 = GetPlatformInfoHelper(tile, false, true, false); SETBIT(_svc.valid, 5); }
+			return _svc.v49;
 
 		/* Variables which use the parameter */
 		/* Variables 0x60 to 0x65 are handled separately below */
@@ -420,7 +451,7 @@
 		case 0xF3: return st->bus_stops->status;
 		case 0xF6: return st->airport_flags;
 		case 0xF7: return GB(st->airport_flags, 8, 8);
-		case 0xFA: return max(st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0);
+		case 0xFA: return clamp(st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535);
 	}
 
 	/* Handle cargo variables with parameter, 0x60 to 0x65 */
@@ -563,6 +594,9 @@
 	/* Remember the cargo type we've picked */
 	object->u.station.cargo_type = ctype;
 
+	/* Invalidate all cached vars */
+	_svc.valid = 0;
+
 	return Resolve(group, object);
 }
 
--- a/src/rail_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/rail_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -778,7 +778,7 @@
 		DrawStringCentered(74, 101 + y_offset, STR_3004_PLATFORM_LENGTH, 0);
 		DrawStringCentered(74, 141 + y_offset, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
 
-		DrawStationCoverageAreaText(2, 166 + y_offset, (uint)-1, rad);
+		DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad);
 
 		if (newstations) {
 			uint16 i;
--- a/src/road_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/road_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -112,7 +112,6 @@
 	/* cost for removing inner/edge -roads */
 	static const uint16 road_remove_cost[2] = {50, 18};
 
-	Town *t;
 	/* true if the roadpiece was always removeable,
 	 * false if it was a center piece. Affects town ratings drop */
 	bool edge_road;
@@ -122,33 +121,25 @@
 	RoadType rt = (RoadType)GB(p1, 4, 2);
 	if (!IsValidRoadType(rt)) return CMD_ERROR;
 
-	Owner owner;
+	Town *t = NULL;
 	switch (GetTileType(tile)) {
 		case MP_STREET:
-			owner = GetRoadOwner(tile, rt);
+			if (_game_mode != GM_EDITOR && GetRoadOwner(tile, rt) == OWNER_TOWN) t = GetTownByTile(tile);
 			break;
 
 		case MP_STATION:
 			if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
-			owner = GetTileOwner(tile);
 			break;
 
 		case MP_TUNNELBRIDGE:
 			if ((IsTunnel(tile) && GetTunnelTransportType(tile) != TRANSPORT_ROAD) ||
 					(IsBridge(tile) && GetBridgeTransportType(tile) != TRANSPORT_ROAD)) return CMD_ERROR;
-			owner = GetTileOwner(tile);
 			break;
 
 		default:
 			return CMD_ERROR;
 	}
 
-	if (owner == OWNER_TOWN && _game_mode != GM_EDITOR) {
-		t = GetTownByTile(tile);
-	} else {
-		t = NULL;
-	}
-
 	RoadBits pieces = Extract<RoadBits, 0>(p1);
 	RoadTypes rts = GetRoadTypes(tile);
 	/* The tile doesn't have the given road type */
--- a/src/road_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/road_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -579,7 +579,7 @@
 		StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, _cur_roadtype, image + 1);
 
 		DrawStationCoverageAreaText(2, 146,
-			((w->window_class == WC_BUS_STATION) ? (1 << CT_PASSENGERS) : ~(1 << CT_PASSENGERS)),
+			(w->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY,
 			3);
 
 	} break;
--- a/src/roadveh_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/roadveh_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -126,7 +126,7 @@
 {
 	byte length = 8;
 
-	uint16 veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
+	uint16 veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
 	if (veh_len != CALLBACK_FAILED) {
 		length -= clamp(veh_len, 0, 7);
 	}
--- a/src/saveload.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/saveload.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -1677,6 +1677,9 @@
 		}
 	} else { /* LOAD game */
 		assert(mode == SL_LOAD);
+#ifdef DEBUG_DUMP_COMMANDS
+		debug_dump_commands("ddc:load:%s\n", filename);
+#endif /* DUMP_COMMANDS */
 
 		if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
 
--- a/src/ship_gui.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/ship_gui.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -55,7 +55,7 @@
 
 		/* Draw max speed */
 		{
-			SetDParam(0, v->max_speed / 2);
+			SetDParam(0, v->max_speed * 10 / 32);
 			DrawString(2, 25, STR_9813_MAX_SPEED, 0);
 		}
 
--- a/src/sound/cocoa_s.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/cocoa_s.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class SoundDriver_Cocoa: public SoundDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -16,6 +14,7 @@
 
 class FSoundDriver_Cocoa: public SoundDriverFactory<FSoundDriver_Cocoa> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "cocoa"; }
 	/* virtual */ const char *GetDescription() { return "Cocoa Sound Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new SoundDriver_Cocoa(); }
--- a/src/sound/null_s.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/null_s.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class SoundDriver_Null: public SoundDriver {
 public:
-	/* virtual */ bool CanProbe() { return false; }
-
 	/* virtual */ const char *Start(const char * const *param) { return NULL; }
 
 	/* virtual */ void Stop() { }
@@ -16,6 +14,7 @@
 
 class FSoundDriver_Null: public SoundDriverFactory<FSoundDriver_Null> {
 public:
+	static const int priority = 0;
 	/* virtual */ const char *GetName() { return "null"; }
 	/* virtual */ const char *GetDescription() { return "Null Sound Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new SoundDriver_Null(); }
--- a/src/sound/sdl_s.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/sdl_s.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class SoundDriver_SDL: public SoundDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -16,6 +14,7 @@
 
 class FSoundDriver_SDL: public SoundDriverFactory<FSoundDriver_SDL> {
 public:
+	static const int priority = 5;
 	/* virtual */ const char *GetName() { return "sdl"; }
 	/* virtual */ const char *GetDescription() { return "SDL Sound Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new SoundDriver_SDL(); }
--- a/src/sound/sound_driver.hpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/sound_driver.hpp	Fri Jul 13 09:18:50 2007 +0000
@@ -14,7 +14,7 @@
 template <class T>
 class SoundDriverFactory: public SoundDriverFactoryBase {
 public:
-	SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND); }
+	SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND, ((T *)this)->priority); }
 
 	/**
 	 * Get the long, human readable, name for the Driver-class.
--- a/src/sound/win32_s.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/sound/win32_s.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class SoundDriver_Win32: public SoundDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -16,6 +14,7 @@
 
 class FSoundDriver_Win32: public SoundDriverFactory<FSoundDriver_Win32> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "win32"; }
 	/* virtual */ const char *GetDescription() { return "Win32 WaveOut Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new SoundDriver_Win32(); }
--- a/src/table/build_industry.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/table/build_industry.h	Fri Jul 13 09:18:50 2007 +0000
@@ -1532,7 +1532,7 @@
  * @param a2  next frame of animation
  * @param a3  chooses between animation or construction state
  */
-#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, true, {0, 0, NULL, NULL, 0}}
+#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, 0xFFFF, 2, 0, 0, true, {0, 0, NULL, NULL, 0}}
 static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
 	/* Coal Mine */
 	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
--- a/src/table/road_land.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/table/road_land.h	Fri Jul 13 09:18:50 2007 +0000
@@ -72,7 +72,7 @@
 };
 
 static const SpriteID _road_frontwire_sprites_1[16] = {
-	0, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x43, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x37
+	0, 0x54, 0x55, 0x5B, 0x54, 0x54, 0x5E, 0x5A, 0x55, 0x5C, 0x55, 0x58, 0x5D, 0x57, 0x59, 0x56
 };
 
 static const SpriteID _road_backpole_sprites_1[16] = {
--- a/src/town_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/town_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -345,7 +345,7 @@
 
 	/* Check and/or  */
 	if (HASBIT(GetHouseSpecs(GetHouseType(tile))->callback_mask, CBM_CONSTRUCTION_STATE_CHANGE)) {
-		uint16 callback_res = GetHouseCallback(CBID_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
+		uint16 callback_res = GetHouseCallback(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
 		if (callback_res != CALLBACK_FAILED) ChangeHouseAnimationFrame(tile, callback_res);
 	}
 
@@ -640,6 +640,7 @@
 	TrackBits b = GetAnyRoadTrackBits(tile, ROADTYPE_ROAD);
 	RoadBits r = ROAD_NONE;
 
+	if (b == TRACK_BIT_NONE) return r;
 	if (b & TRACK_BIT_X)     r |= ROAD_X;
 	if (b & TRACK_BIT_Y)     r |= ROAD_Y;
 	if (b & TRACK_BIT_UPPER) r |= ROAD_NE | ROAD_NW;
@@ -668,7 +669,7 @@
 
 static bool IsRoadAllowedHere(TileIndex tile, int dir)
 {
-	if (TileX(tile) < 1 || TileY(tile) < 1 || MapMaxX() <= TileX(tile) || MapMaxY() <= TileY(tile)) return false;
+	if (TileX(tile) < 2 || TileY(tile) < 2 || MapMaxX() <= TileX(tile) || MapMaxY() <= TileY(tile)) return false;
 
 	Slope k;
 	Slope slope;
--- a/src/train_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/train_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -231,7 +231,7 @@
 		/* check the vehicle length (callback) */
 		uint16 veh_len = CALLBACK_FAILED;
 		if (HASBIT(EngInfo(u->engine_type)->callbackmask, CBM_VEHICLE_LENGTH)) {
-			veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
+			veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
 		}
 		if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor;
 		veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
@@ -3029,8 +3029,6 @@
 	BeginVehicleMove(v);
 	EndVehicleMove(v);
 
-	if (IsFrontEngine(v)) RemoveVehicleFromGroup(v);
-
 	DeleteVehicle(v);
 
 	if (v->u.rail.track != TRACK_BIT_DEPOT && v->u.rail.track != TRACK_BIT_WORMHOLE)
--- a/src/unmovable_cmd.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/unmovable_cmd.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -18,6 +18,7 @@
 #include "economy.h"
 #include "town.h"
 #include "sprite.h"
+#include "bridge_map.h"
 #include "unmovable_map.h"
 #include "variables.h"
 #include "table/unmovable_land.h"
@@ -358,7 +359,7 @@
 
 	do {
 		tile = RandomTile();
-		if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4) {
+		if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4 && !IsBridgeAbove(tile)) {
 			if (IsRadioTowerNearby(tile)) continue;
 			MakeTransmitter(tile);
 			IncreaseGeneratingWorldProgress(GWP_UNMOVABLE);
@@ -401,7 +402,7 @@
 		do {
 			if (--j == 0) goto restart;
 			tile = TILE_MASK(tile + TileOffsByDiagDir(dir));
-		} while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2));
+		} while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2 && !IsBridgeAbove(tile)));
 
 		assert(tile == TILE_MASK(tile));
 
--- a/src/vehicle.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/vehicle.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -471,8 +471,8 @@
 	if (remove) {
 		new_hash = NULL;
 	} else {
-		int x = GB(TileX(v->tile), HASH_RES, HASH_BITS);
-		int y = GB(TileY(v->tile), HASH_RES, HASH_BITS) << HASH_BITS;
+		int x = GB(v->x_pos / TILE_SIZE, HASH_RES, HASH_BITS);
+		int y = GB(v->y_pos / TILE_SIZE, HASH_RES, HASH_BITS) << HASH_BITS;
 		new_hash = &_new_vehicle_position_hash[(x + y) & TOTAL_HASH_MASK];
 	}
 
@@ -675,6 +675,9 @@
 {
 	if (IsValidStationID(v->last_station_visited)) {
 		GetStation(v->last_station_visited)->loading_vehicles.remove(v);
+
+		HideFillingPercent(v->fill_percent_te_id);
+		v->fill_percent_te_id = INVALID_TE_ID;
 	}
 
 	if (IsEngineCountable(v)) {
--- a/src/video/cocoa_v.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/cocoa_v.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class VideoDriver_Cocoa: public VideoDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FVideoDriver_Cocoa: public VideoDriverFactory<FVideoDriver_Cocoa> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "cocoa"; }
 	/* virtual */ const char *GetDescription() { return "Cocoa Video Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new VideoDriver_Cocoa(); }
--- a/src/video/dedicated_v.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/dedicated_v.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class VideoDriver_Dedicated: public VideoDriver {
 public:
-	/* virtual */ bool CanProbe() { return false; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FVideoDriver_Dedicated: public VideoDriverFactory<FVideoDriver_Dedicated> {
 public:
+	static const int priority = 0;
 	/* virtual */ const char *GetName() { return "dedicated"; }
 	/* virtual */ const char *GetDescription() { return "Dedicated Video Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new VideoDriver_Dedicated(); }
--- a/src/video/null_v.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/null_v.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class VideoDriver_Null: public VideoDriver {
 public:
-	/* virtual */ bool CanProbe() { return false; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FVideoDriver_Null: public VideoDriverFactory<FVideoDriver_Null> {
 public:
+	static const int priority = 1;
 	/* virtual */ const char *GetName() { return "null"; }
 	/* virtual */ const char *GetDescription() { return "Null Video Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new VideoDriver_Null(); }
--- a/src/video/sdl_v.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/sdl_v.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class VideoDriver_SDL: public VideoDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FVideoDriver_SDL: public VideoDriverFactory<FVideoDriver_SDL> {
 public:
+	static const int priority = 5;
 	/* virtual */ const char *GetName() { return "sdl"; }
 	/* virtual */ const char *GetDescription() { return "SDL Video Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new VideoDriver_SDL(); }
--- a/src/video/video_driver.hpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/video_driver.hpp	Fri Jul 13 09:18:50 2007 +0000
@@ -22,7 +22,7 @@
 template <class T>
 class VideoDriverFactory: public VideoDriverFactoryBase {
 public:
-	VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO); }
+	VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO, ((T *)this)->priority); }
 
 	/**
 	 * Get the long, human readable, name for the Driver-class.
--- a/src/video/win32_v.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/video/win32_v.h	Fri Jul 13 09:18:50 2007 +0000
@@ -7,8 +7,6 @@
 
 class VideoDriver_Win32: public VideoDriver {
 public:
-	/* virtual */ bool CanProbe() { return true; }
-
 	/* virtual */ const char *Start(const char * const *param);
 
 	/* virtual */ void Stop();
@@ -24,6 +22,7 @@
 
 class FVideoDriver_Win32: public VideoDriverFactory<FVideoDriver_Win32> {
 public:
+	static const int priority = 10;
 	/* virtual */ const char *GetName() { return "win32"; }
 	/* virtual */ const char *GetDescription() { return "Win32 GDI Video Driver"; }
 	/* virtual */ Driver *CreateInstance() { return new VideoDriver_Win32(); }
--- a/src/window.cpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/window.cpp	Fri Jul 13 09:18:50 2007 +0000
@@ -652,8 +652,8 @@
 		_last_z_window++;
 	}
 
+	CallWindowEventNP(w, WE_CREATE);
 	SetWindowDirty(w);
-	CallWindowEventNP(w, WE_CREATE);
 
 	return w;
 }
--- a/src/yapf/follow_track.hpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/follow_track.hpp	Fri Jul 13 09:18:50 2007 +0000
@@ -31,6 +31,7 @@
 		m_exitdir = INVALID_DIAGDIR;
 		m_is_station = m_is_bridge = m_is_tunnel = false;
 		m_tiles_skipped = 0;
+		m_err = EC_NONE;
 	}
 
 	FORCEINLINE static TransportType TT() {return Ttr_type_;}
@@ -45,6 +46,7 @@
 	{
 		m_old_tile = old_tile;
 		m_old_td = old_td;
+		m_err = EC_NONE;
 		assert((GetTileTrackStatus(m_old_tile, TT(), m_veh->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(m_old_td)) != 0);
 		m_exitdir = TrackdirToExitdir(m_old_td);
 		if (EnteredDepot()) return true;
@@ -53,9 +55,18 @@
 		if (!QueryNewTileTrackStatus()) return TryReverse();
 		if (!CanEnterNewTile()) return false;
 		m_new_td_bits &= DiagdirReachesTrackdirs(m_exitdir);
-		if (!Allow90degTurns())
+		if (m_new_td_bits == TRACKDIR_BIT_NONE) {
+			m_err = EC_NO_WAY;
+			return false;
+		}
+		if (!Allow90degTurns()) {
 			m_new_td_bits &= (TrackdirBits)~(int)TrackdirCrossesTrackdirs(m_old_td);
-		return (m_new_td_bits != TRACKDIR_BIT_NONE);
+			if (m_new_td_bits == TRACKDIR_BIT_NONE) {
+				m_err = EC_90DEG;
+				return false;
+			}
+		}
+		return true;
 	}
 
 protected:
@@ -126,15 +137,19 @@
 		// road stop can be left at one direction only unless it's a drive-through stop
 		if (IsRoadTT() && IsStandardRoadStopTile(m_old_tile)) {
 			DiagDirection exitdir = GetRoadStopDir(m_old_tile);
-			if (exitdir != m_exitdir)
+			if (exitdir != m_exitdir) {
+				m_err = EC_NO_WAY;
 				return false;
+			}
 		}
 
 		// road depots can be also left in one direction only
 		if (IsRoadTT() && IsTileDepotType(m_old_tile, TT())) {
 			DiagDirection exitdir = GetRoadDepotDirection(m_old_tile);
-			if (exitdir != m_exitdir)
+			if (exitdir != m_exitdir) {
+				m_err = EC_NO_WAY;
 				return false;
+			}
 		}
 		return true;
 	}
@@ -145,29 +160,37 @@
 		if (IsRoadTT() && IsStandardRoadStopTile(m_new_tile)) {
 			// road stop can be entered from one direction only unless it's a drive-through stop
 			DiagDirection exitdir = GetRoadStopDir(m_new_tile);
-			if (ReverseDiagDir(exitdir) != m_exitdir)
+			if (ReverseDiagDir(exitdir) != m_exitdir) {
+				m_err = EC_NO_WAY;
 				return false;
+			}
 		}
 
 		// road and rail depots can also be entered from one direction only
 		if (IsRoadTT() && IsTileDepotType(m_new_tile, TT())) {
 			DiagDirection exitdir = GetRoadDepotDirection(m_new_tile);
-			if (ReverseDiagDir(exitdir) != m_exitdir)
+			if (ReverseDiagDir(exitdir) != m_exitdir) {
+				m_err = EC_NO_WAY;
 				return false;
+			}
 			// don't try to enter other player's depots
 			if (GetTileOwner(m_new_tile) != m_veh->owner) {
+				m_err = EC_OWNER;
 				return false;
 			}
 		}
 		if (IsRailTT() && IsTileDepotType(m_new_tile, TT())) {
 			DiagDirection exitdir = GetRailDepotDirection(m_new_tile);
-			if (ReverseDiagDir(exitdir) != m_exitdir)
+			if (ReverseDiagDir(exitdir) != m_exitdir) {
+				m_err = EC_NO_WAY;
 				return false;
+			}
 		}
 
 		// rail transport is possible only on tiles with the same owner as vehicle
 		if (IsRailTT() && GetTileOwner(m_new_tile) != m_veh->owner) {
 			// different owner
+			m_err = EC_NO_WAY;
 			return false;
 		}
 
@@ -176,6 +199,7 @@
 			RailType rail_type = GetTileRailType(m_new_tile);
 			if (!HASBIT(m_veh->u.rail.compatible_railtypes, rail_type)) {
 				// incompatible rail type
+				m_err = EC_RAIL_TYPE;
 				return false;
 			}
 		}
@@ -185,12 +209,18 @@
 			if (IsTunnel(m_new_tile)) {
 				if (!m_is_tunnel) {
 					DiagDirection tunnel_enterdir = GetTunnelDirection(m_new_tile);
-					if (tunnel_enterdir != m_exitdir) return false;
+					if (tunnel_enterdir != m_exitdir) {
+						m_err = EC_NO_WAY;
+						return false;
+					}
 				}
 			} else if (IsBridge(m_new_tile)) {
 				if (!m_is_bridge) {
 					DiagDirection ramp_enderdir = GetBridgeRampDirection(m_new_tile);
-					if (ramp_enderdir != m_exitdir) return false;
+					if (ramp_enderdir != m_exitdir) {
+						m_err = EC_NO_WAY;
+						return false;
+					}
 				}
 			}
 		}
@@ -247,6 +277,7 @@
 				return true;
 			}
 		}
+		m_err = EC_NO_WAY;
 		return false;
 	}
 
--- a/src/yapf/yapf.h	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/yapf.h	Fri Jul 13 09:18:50 2007 +0000
@@ -89,6 +89,14 @@
 /** Base struct for track followers. */
 struct FollowTrack_t
 {
+	enum ErrorCode {
+		EC_NONE,
+		EC_OWNER,
+		EC_RAIL_TYPE,
+		EC_90DEG,
+		EC_NO_WAY,
+	};
+
 	const Vehicle*      m_veh;           ///< moving vehicle
 	TileIndex           m_old_tile;      ///< the origin (vehicle moved from) before move
 	Trackdir            m_old_td;        ///< the trackdir (the vehicle was on) before move
@@ -99,6 +107,7 @@
 	bool                m_is_bridge;     ///< last turn passed bridge ramp
 	bool                m_is_station;    ///< last turn passed station
 	int                 m_tiles_skipped; ///< number of skipped tunnel or station tiles
+	ErrorCode           m_err;
 };
 
 /** Initializes FollowTrack_t structure */
--- a/src/yapf/yapf_costrail.hpp	Thu Jul 12 15:52:17 2007 +0000
+++ b/src/yapf/yapf_costrail.hpp	Fri Jul 13 09:18:50 2007 +0000
@@ -376,8 +376,13 @@
 			tf_local.Init(v, &Yapf().m_perf_ts_cost);
 
 			if (!tf_local.Follow(cur.tile, cur.td)) {
+				assert(tf_local.m_err != TrackFollower::EC_NONE);
 				/* Can't move to the next tile (EOL?). */
-				end_segment_reason |= ESRB_DEAD_END;
+				if (tf_local.m_err == TrackFollower::EC_RAIL_TYPE) {
+					end_segment_reason |= ESRB_RAIL_TYPE;
+				} else {
+					end_segment_reason |= ESRB_DEAD_END;
+				}
 				break;
 			}