(svn r12051) [NoAI] -Sync: with trunk (r11795:12050). noai
authorrubidium
Sun, 03 Feb 2008 20:17:54 +0000
branchnoai
changeset 9724 b39bc69bb2f2
parent 9723 eee46cb39750
child 9725 a73b33a966be
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
.gitignore
Makefile.in
Makefile.lang.in
bin/ai/regression/regression.txt
bin/data/chars.grf
bin/data/openttdd.grf
bin/data/openttdw.grf
changelog.txt
config.lib
configure
docs/Readme_Windows_MSVC.txt
docs/landscape.html
docs/landscape_grid.html
known-bugs.txt
os/debian/changelog
os/win32/installer/install.nsi
projects/generate
projects/langs.vcproj
projects/langs.vcproj.in
projects/openttd.sln
projects/openttd.tgt
projects/openttd.vcproj
projects/openttd.vcproj.in
projects/openttd_vs80.vcproj
projects/openttd_vs90.vcproj
projects/strgen.vcproj
readme.txt
source.list
src/ai/ai.cpp
src/ai/ai_threads.cpp
src/ai/ai_threads.h
src/ai/api/ai_airport.cpp
src/ai/api/ai_cargo.cpp
src/ai/api/ai_company.cpp
src/ai/api/ai_controller.cpp
src/ai/api/ai_engine.cpp
src/ai/api/ai_object.cpp
src/ai/api/ai_sign.cpp
src/ai/api/ai_station.cpp
src/ai/api/ai_stationlist.cpp
src/ai/api/ai_tile.cpp
src/ai/api/ai_vehicle.cpp
src/ai/api/ai_vehiclelist.cpp
src/aircraft.h
src/aircraft_cmd.cpp
src/aircraft_gui.cpp
src/airport.cpp
src/airport_gui.cpp
src/autoreplace_cmd.cpp
src/autoreplace_func.h
src/autoreplace_gui.cpp
src/autoreplace_gui.h
src/autoslope.h
src/blitter/32bpp_anim.cpp
src/blitter/32bpp_optimized.cpp
src/blitter/32bpp_simple.cpp
src/blitter/factory.hpp
src/bridge.h
src/bridge_gui.cpp
src/build_vehicle_gui.cpp
src/cargopacket.h
src/cargotype.cpp
src/cargotype.h
src/clear_cmd.cpp
src/command.cpp
src/command_func.h
src/console.cpp
src/console.h
src/console_cmds.cpp
src/core/alloc_func.hpp
src/core/random_func.cpp
src/core/random_func.hpp
src/currency.cpp
src/currency.h
src/date.cpp
src/debug.cpp
src/debug.h
src/depot.cpp
src/depot_gui.cpp
src/direction_type.h
src/disaster_cmd.cpp
src/dock_gui.cpp
src/driver.cpp
src/dummy_land.cpp
src/economy.cpp
src/economy_func.h
src/economy_type.h
src/elrail.cpp
src/engine.cpp
src/engine.h
src/engine_gui.cpp
src/fileio.cpp
src/fileio.h
src/fios.cpp
src/fios.h
src/fontcache.cpp
src/functions.h
src/genworld.cpp
src/genworld.h
src/genworld_gui.cpp
src/gfx.cpp
src/gfx_func.h
src/gfxinit.cpp
src/graph_gui.cpp
src/group.h
src/group_cmd.cpp
src/group_gui.cpp
src/gui.h
src/heightmap.cpp
src/industry.h
src/industry_cmd.cpp
src/industry_gui.cpp
src/intro_gui.cpp
src/landscape.cpp
src/landscape.h
src/lang/afrikaans.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/english_US.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/frisian.txt
src/lang/unfinished/greek.txt
src/lang/unfinished/latvian.txt
src/livery.h
src/main_gui.cpp
src/map.cpp
src/map_func.h
src/misc.cpp
src/misc/countedptr.hpp
src/misc_cmd.cpp
src/misc_gui.cpp
src/music/dmusic.cpp
src/music/libtimidity.cpp
src/music/music_driver.hpp
src/music_gui.cpp
src/namegen.cpp
src/namegen.h
src/network/core/tcp.cpp
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_data.h
src/network/network_gui.cpp
src/network/network_internal.h
src/network/network_server.cpp
src/network/network_udp.cpp
src/newgrf.cpp
src/newgrf.h
src/newgrf_callbacks.h
src/newgrf_canal.cpp
src/newgrf_canal.h
src/newgrf_cargo.h
src/newgrf_commons.cpp
src/newgrf_commons.h
src/newgrf_engine.cpp
src/newgrf_engine.h
src/newgrf_gui.cpp
src/newgrf_house.cpp
src/newgrf_house.h
src/newgrf_industries.cpp
src/newgrf_industries.h
src/newgrf_industrytiles.cpp
src/newgrf_spritegroup.cpp
src/newgrf_spritegroup.h
src/newgrf_station.cpp
src/newgrf_station.h
src/newgrf_string_type.h
src/newgrf_text.cpp
src/newgrf_text.h
src/newgrf_town.cpp
src/newgrf_townname.cpp
src/newgrf_townname.h
src/news.h
src/news_gui.cpp
src/npf.cpp
src/npf.h
src/oldloader.cpp
src/openttd.cpp
src/openttd.h
src/order.h
src/order_cmd.cpp
src/order_gui.cpp
src/os2.cpp
src/pathfind.cpp
src/pathfind.h
src/player.h
src/player_base.h
src/player_face.h
src/player_func.h
src/player_gui.cpp
src/player_gui.h
src/player_type.h
src/players.cpp
src/rail.cpp
src/rail.h
src/rail_cmd.cpp
src/rail_gui.cpp
src/rail_map.h
src/rail_type.h
src/road.cpp
src/road_cmd.cpp
src/road_func.h
src/road_gui.cpp
src/road_map.h
src/road_type.h
src/roadveh.h
src/roadveh_cmd.cpp
src/roadveh_gui.cpp
src/saveload.cpp
src/saveload.h
src/screenshot.cpp
src/settings.cpp
src/settings_gui.cpp
src/settings_internal.h
src/settings_type.h
src/ship.h
src/ship_cmd.cpp
src/ship_gui.cpp
src/signal.cpp
src/signal_func.h
src/signs.cpp
src/signs.h
src/signs_gui.cpp
src/slope_func.h
src/smallmap_gui.cpp
src/sound.cpp
src/sound/sound_driver.hpp
src/spritecache.cpp
src/spritecache.h
src/spriteloader/grf.cpp
src/spriteloader/grf.hpp
src/spriteloader/png.cpp
src/spriteloader/png.hpp
src/spriteloader/spriteloader.hpp
src/station.cpp
src/station.h
src/station_cmd.cpp
src/station_gui.cpp
src/station_gui.h
src/station_map.h
src/stdafx.h
src/strgen/strgen.cpp
src/string.cpp
src/string_func.h
src/strings.cpp
src/strings_func.h
src/strings_type.h
src/subsidy_gui.cpp
src/table/build_industry.h
src/table/cargo_const.h
src/table/control_codes.h
src/table/engines.h
src/table/files.h
src/table/landscape_sprite.h
src/table/namegen.h
src/table/railtypes.h
src/table/sprites.h
src/table/town_land.h
src/table/unicode.h
src/terraform_cmd.cpp
src/terraform_gui.cpp
src/texteff.cpp
src/tgp.cpp
src/tile_cmd.h
src/tile_map.cpp
src/tile_map.h
src/tile_type.h
src/timetable_cmd.cpp
src/timetable_gui.cpp
src/town.h
src/town_cmd.cpp
src/town_gui.cpp
src/track_type.h
src/train.h
src/train_cmd.cpp
src/train_gui.cpp
src/transparency_gui.cpp
src/tree_cmd.cpp
src/tree_map.h
src/tunnelbridge.h
src/tunnelbridge_cmd.cpp
src/unix.cpp
src/unmovable_cmd.cpp
src/variables.h
src/vehicle.cpp
src/vehicle_base.h
src/vehicle_func.h
src/vehicle_gui.cpp
src/vehicle_gui.h
src/video/cocoa/event.mm
src/video/dedicated_v.cpp
src/video/sdl_v.cpp
src/video/video_driver.hpp
src/video/win32_v.cpp
src/viewport.cpp
src/viewport_func.h
src/water.h
src/water_cmd.cpp
src/water_map.h
src/waypoint.cpp
src/waypoint.h
src/widget.cpp
src/widgets/dropdown.cpp
src/widgets/dropdown_func.h
src/widgets/dropdown_type.h
src/window.cpp
src/window_func.h
src/window_gui.h
src/yapf/follow_track.hpp
src/yapf/yapf.hpp
src/yapf/yapf_costbase.hpp
src/yapf/yapf_destrail.hpp
src/zoom_func.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitignore	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,11 @@
+Makefile*
+bin/*
+!bin/data/chars.grf
+!bin/data/openttdd.grf
+!bin/data/openttdw.grf
+!bin/data/opntitle.grf
+!bin/scenario/README
+!bin/scripts*
+config.*
+objs/*
+src/rev.cpp
--- a/Makefile.in	Wed Jan 09 18:11:12 2008 +0000
+++ b/Makefile.in	Sun Feb 03 20:17:54 2008 +0000
@@ -80,7 +80,7 @@
 	@echo " Going to reconfigure with last known settings..."
 	@echo "----------------"
 # Make sure we don't lock config.cache
-	@$(shell cat config.cache) || exit 1
+	@$(shell cat config.cache | sed 's/\\ /\\\\ /g') || exit 1
 	@echo "----------------"
 	@echo "Reconfig done. Now compiling..."
 	@echo "----------------"
--- a/Makefile.lang.in	Wed Jan 09 18:11:12 2008 +0000
+++ b/Makefile.lang.in	Sun Feb 03 20:17:54 2008 +0000
@@ -36,7 +36,7 @@
 
 all: table/strings.h $(LANGS)
 
-strgen.o: $(SRC_DIR)/strgen/strgen.cpp endian_host.h
+strgen.o: $(SRC_DIR)/strgen/strgen.cpp endian_host.h $(SRC_DIR)/table/control_codes.h
 	$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
 	$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
 
--- a/bin/ai/regression/regression.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/bin/ai/regression/regression.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -4466,7 +4466,7 @@
     53915 => 1
     53914 => 1
     53913 => 1
-    53912 => 0
+    53912 => 1
     53911 => 0
     53910 => 0
     53909 => 0
Binary file bin/data/chars.grf has changed
Binary file bin/data/openttdd.grf has changed
Binary file bin/data/openttdw.grf has changed
--- a/changelog.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/changelog.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -1,3 +1,49 @@
+0.6.0-beta3 (2008-01-16)
+------------------------------------------------------------------------
+-Feature: Replaced fixed size custom name array. Names are now attached to their object directly and there is no limit to the amount of names (r11822)
+-Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match (r11759)
+-Feature: Add support for NewGRF's train 'tilt' flag. Trains with tilt capability (specific details are per NewGRF set) will be given a 20% speed limit bonus on curves (r11741)
+-Feature: Added sorting for cost, running costs and speed to road vehicles and ships build windows (r11710)
+-Feature: List neutral stations where the player has service in the station list too (r11670)
+-Feature: Check whether (some) characters are missing in the current 'font' for the 'currently' chosen language and give a warning when that does happen (r11646)
+-Feature: Support shore replacement via Action 5 (r11726)
+-Fix: When two NewGRFs 'fight' to define the same cargo it could happen that the strings are defined by one cargo and the 'action2' by another and when one assumes that both come from the same NewGRF [FS#1559] (r11862)
+-Fix: Recompute town population when removing a 'newhouses' grf, or when loading a game with missing 'newhouses' grfs [FS#1335] (r11855)
+-Fix: Road vehicle count was incorrect in network lobby window (r11844)
+-Fix: Mark dirty canal tile even in diagonal direction from flooded tile, draw correctly canal next to half flooded rail tile (r11843, r11838)
+-Fix: At least one instance of dmusic driver is needed for it to be registered and usable (r11826)
+-Fix: An articulated road vehicle could split up when it turned around at a corner and then would enter a drive through station at the next tile [FS#1627] (r11825)
+-Fix: Switch _screen to the output buffer and disable usage of 32bpp-anim animation buffer during giant screenshots [FS#1602] (r11813)
+-Fix: Do not crash trains when leaving depot to a very long track [FS#716] (r11802)
+-Fix: Take town rating into account when testing if a command can be executed [FS#1616] (r11795)
+-Fix: Reversing a train when loading at a station with an adjacent station in the same axis crashed [FS#1632] (r11794)
+-Fix: Group names got not deallocated in the command test run [FS#1614] (r11743)
+-Fix: Run window tick events when paused, so that news pop-ups and the about window still progress. For other windows the events are ignored when paused [FS#1319] (r11742)
+-Fix: Modify and possibly discard key events for code points in the unicode private use area [FS#1610] (r11740)
+-Fix: Set the new scroll position after zooming in instead of before, as the zoom will cancel it out [FS#1609] (r11739)
+-Fix: Do not reset loading indicator IDs when only reloading NewGRFs [FS#1574] (r11735)
+-Fix: Elrail merge gave elrail, monorail & maglev unintended speed bonuses for curves, as the bonus was based on the railtype index. The bonus is now specified by a property of the railtype (r11732)
+-Fix: Clear sprite override data before performing NewGRF wagon attach callback. This stopped the callback working for autoreplace and when moving wagons from train to train in a depot [FS#1582] (r11731)
+-Fix: If there are no houses that can be build in a specific year yet, force the houses with the earliest introduction year to be available [FS#1577] (r11727)
+-Fix: Make it impossible (for users) to circumvent the length checking of the NewGRF 'allow wagon attach' callback by moving several wagons at a time (r11724)
+-Fix: Do not put more than one Random() in function calls because parameter evaluation order is not guaranteed in the c++ standard [FS#1561] (r11716)
+-Fix: Do not allow player inauguration date on scenarios to be bigger than current year [FS#1569] (r11714)
+-Fix: Add more house string id ranges to MapGRFStringID so NewGRFs use the proper string ids (r11712)
+-Fix: Do not allow refitting flooded (destroyed) vehicles (r11707)
+-Fix: Trains could have sprites with wrong direction when reversing, also was inconsistent with save/load process [FS#1557] (r11705)
+-Fix: When removing buoys, return to water or canal depending on their owner (r11666)
+-Fix: Animation informations should not be copied from original industry tile spec, while doing an action 00, industry tile, prop 08 (r11665)
+-Fix: Do not allow modifying non-uniform stations when non-uniform stations are disabled [FS#1563] (r11659)
+-Fix: 'Initialised' NewGRFs could still be deactivated in the later 'activation' pass (r11650)
+-Fix: Vehicles were still followed when sold [FS#1541] (r11632)
+-Fix: Many viewports could crash the scenario editor [FS#1527] (r11629)
+-Fix: Popping from text reference stack must be done in a precise order. But some compiler (MSVC) over optimised it and inverted this order [FS#1532] (r11627)
+-Fix: There were still some cases where one could not build a tram track, but the tram could become blocked [FS#1525] (r11621)
+-Fix: Do not make crossing red behind depot the train is entering [FS#1531] (r11619)
+-Fix: Buoys are just waypoints, so don't allow load/unload/transfert for them (r11618)
+-Fix: Sometimes large values could go off the chart [FS#1526] (r11616)
+-Fix: Temperate banks can only be built in towns (over a house) (r11615)
+
 
 0.6.0-beta2 (2007-12-09)
 ------------------------------------------------------------------------
--- a/config.lib	Wed Jan 09 18:11:12 2008 +0000
+++ b/config.lib	Sun Feb 03 20:17:54 2008 +0000
@@ -30,6 +30,7 @@
 	data_dir="share/games/openttd"
 	icon_dir="share/pixmaps"
 	personal_dir="1"
+	shared_dir="1"
 	install_dir="/"
 	enable_debug="0"
 	enable_desync_debug="0"
@@ -38,15 +39,13 @@
 	enable_network="1"
 	enable_static="1"
 	enable_translator="0"
+	enable_unicode="1"
 	enable_assert="1"
 	enable_strip="1"
 	enable_universal="1"
 	enable_osx_g5="0"
-	enable_unicode="1"
 	enable_cocoa_quartz="1"
 	enable_cocoa_quickdraw="1"
-	with_distcc="1"
-	with_ccache="1"
 	with_osx_sysroot="1"
 	with_application_bundle="1"
 	with_sdl="1"
@@ -64,8 +63,66 @@
 	with_fontconfig="1"
 	with_psp_config="1"
 	with_threads="1"
+	with_distcc="1"
+	with_ccache="1"
 
-	save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os cpu_type revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir enable_debug enable_desync_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_distcc with_osx_sysroot enable_universal enable_osx_g5 enable_unicode enable_cocoa_quartz enable_cocoa_quickdraw with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_psp_config with_threads CC CXX CFLAGS LDFLAGS"
+	save_params_array="
+		build
+		host
+		cc_build
+		cc_host
+		cxx_build
+		cxx_host
+		windres
+		strip
+		lipo
+		awk
+		os
+		endian
+		cpu_type
+		revision
+		config_log
+		prefix_dir
+		binary_dir
+		data_dir
+		icon_dir
+		personal_dir
+		shared_dir
+		install_dir
+		enable_debug
+		enable_desync_debug
+		enable_profiling
+		enable_dedicated
+		enable_network
+		enable_static
+		enable_translator
+		enable_unicode
+		enable_assert
+		enable_strip
+		enable_universal
+		enable_osx_g5
+		enable_cocoa_quartz
+		enable_cocoa_quickdraw
+		with_osx_sysroot
+		with_application_bundle
+		with_sdl
+		with_cocoa
+		with_zlib
+		with_png
+		with_makedepend
+		with_direct_music
+		with_sort
+		with_iconv
+		with_midi
+		with_midi_arg
+		with_libtimidity
+		with_freetype
+		with_fontconfig
+		with_psp_config
+		with_threads
+		with_distcc
+		with_ccache
+	CC CXX CFLAGS LDFLAGS"
 }
 
 detect_params() {
@@ -138,6 +195,10 @@
 			--personal-dir=*)             personal_dir="$optarg";;
 			--without-personal-dir)       personal_dir="";;
 
+			--shared-dir)                 prevp_p="shared-dir";;
+			--shared-dir=*)               shared_dir="$optarg";;
+			--without-shared-dir)         shared_dir="";;
+
 			--install-dir)                prevp_p="install-dir";;
 			--install-dir=*)              install_dir="$optarg";;
 
@@ -574,7 +635,7 @@
 		distcc="$with_distcc"
 	fi
 	if [ "$with_distcc" != "0" ]; then
-		res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 0-6`"
+		res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
 		if [ "$res" != "distcc" ]; then
 			distcc=""
 			log 1 "checking distcc... no"
@@ -603,7 +664,7 @@
 		ccache="$with_ccache"
 	fi
 	if [ "$with_ccache" != "0" ]; then
-		res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 0-6`"
+		res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
 		if [ "$res" != "ccache" ]; then
 			ccache=""
 			log 1 "checking ccache... no"
@@ -759,6 +820,15 @@
 		fi
 	fi
 
+	if [ "$shared_dir" = "1" ]; then
+		# we are using default values
+		if [ "$os" = "OSX" ]; then
+			shared_dir="/Library/Application\\\\ Support/OpenTTD"
+		else
+			shared_dir=""
+		fi
+	fi
+
 	if [ -n "$personal_dir" ]
 	then
 		log 1 "personal home directory... $personal_dir"
@@ -766,6 +836,13 @@
 		log 1 "personal home directory... none"
 	fi
 
+	if [ -n "$shared_dir" ]
+	then
+		log 1 "shared data directory... $shared_dir"
+	else
+		log 1 "shared data directory... none"
+	fi
+
 	if [ -n "$install_dir" ]
 	then
 		log 1 "installation directory... $install_dir"
@@ -1132,6 +1209,10 @@
 		CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
 	fi
 
+	if [ -n "$shared_dir" ]; then
+		CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
+	fi
+
 	CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
 
 	log 1 "using CFLAGS... $CFLAGS $CC_CFLAGS"
@@ -2102,6 +2183,7 @@
 		s#!!DATA_DIR!!#$prefix_dir/$data_dir#g;
 		s#!!ICON_DIR!!#$prefix_dir/$icon_dir#g;
 		s#!!PERSONAL_DIR!!#$personal_dir#g;
+		s#!!SHARED_DIR!!#$shared_dir#g;
 		s#!!INSTALL_DIR!!#$install_dir#g;
 		s#!!STRGEN!!#$STRGEN#g;
 		s#!!ENDIAN_CHECK!!#$ENDIAN_CHECK#g;
@@ -2242,12 +2324,16 @@
 	echo "                                 [share/games/openttd]"
 	echo "  --icon-dir=dir                 location of icons. Will be prefixed"
 	echo "                                 with the prefix-dir [share/pixmaps]"
-	echo "  --personal-dir=dir             location of the personal directory [.openttd]"
+	echo "  --personal-dir=dir             location of the personal directory"
+	echo "                                 [os-dependent default]"
+	echo "  --shared-dir=dir               location of shared data files"
+	echo "                                 [os-dependent default]"
 	echo "  --install-dir=dir              specifies the root to install to."
 	echo "                                 Useful to install into jails [/]"
 	echo ""
 	echo "Features and packages:"
 	echo "  --enable-debug[=LVL]           enable debug-mode (LVL=[0123], 0 is release)"
+	echo "  --enable_desync_debug=[LVL]    enable desync debug options (LVL=[012], 0 is none"
 	echo "  --enable-profiling             enables profiling"
 	echo "  --enable-dedicated             compile a dedicated server (without video)"
 	echo "  --enable-static                enable static compile (doesn't work for"
--- a/configure	Wed Jan 09 18:11:12 2008 +0000
+++ b/configure	Sun Feb 03 20:17:54 2008 +0000
@@ -37,7 +37,7 @@
 		exit 1
 	fi
 	# Make sure we don't lock config.cache
-	cat config.cache > cache.tmp
+	cat config.cache | sed 's/\\ /\\\\ /g' > cache.tmp
 	sh cache.tmp
 	rm -f cache.tmp
 	exit $?
--- a/docs/Readme_Windows_MSVC.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/docs/Readme_Windows_MSVC.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -6,11 +6,11 @@
 
 SUPPORTED MSVC COMPILERS
 ------------------------
-OpenTTD includes projects for MSVC 2003.NET and MSVC 2005.NET. Both will
+OpenTTD includes projects for MSVC 2005.NET and MSVC 2008.NET. Both will
 compile out of the box, providing you have the required libraries/headers;
-which ones, see below. There is no support for VS6, you are therefore
-strongly encouraged to either upgrade to MSVC 2005 Express (free) or use GCC.
-MSVC 2002 probably works as well, but it has not been tested.
+which ones, see below. There is no support for VS6 or MSVC 2002, or
+MSVC 2003.NET. You are therefore strongly encouraged to either upgrade to
+MSVC 2005 Express (free) or use GCC.
 
 
 1) REQUIRED FILES
@@ -74,20 +74,6 @@
 list, above all others, otherwise compilation will most likely fail!!
 
 
-2.3) DEBUGGING - WORKING DIRECTORY (MSVC 2003 ONLY!)
-----------------------------------------------------
-The very first time you check out and compile OpenTTD with Visual Studio 2003, running
-the binary will complain about missing files. You need to go into and change a setting
-
-OpenTTD > Project > Properties > Configuration (All Configurations) > ...
- Configuration Properties > Debugging >
-
-	* Working Directory: ..\bin
-
-VS 2005 works out of the box because Microsoft allowed a user to supply a humanly-
-readable defaults file (openttd_vs80.vcproj.user), whereas 2003 is braindead.
-
-
 3) TTD GRAPHICS FILES
 ---------------------
 Copy the following files from Transport Tycoon Deluxe to the bin/data folder
@@ -102,12 +88,12 @@
 
 4) COMPILING
 ------------
-Open trunk/openttd[_vs80].sln
+Open trunk/openttd_vs[89]0.sln
 Set the build mode to 'Release' in
 Build > Configuration manager > Active solution configuration > select "Release"
 Compile...
 
-If everything works well the binary should be in trunk/objs/[Win32]/Release/openttd.exe
+If everything works well the binary should be in trunk/objs/Win[32|64]/Release/openttd.exe
 
 
 5) EDITING, CHANGING SOURCE CODE
@@ -126,4 +112,4 @@
 within a few days as the problem is noticed and fixed.
 
 An up-to-date version of this README can be found on the wiki:
-http://wiki.openttd.org/index.php/MicrosoftVisualCExpress
\ No newline at end of file
+http://wiki.openttd.org/index.php/MicrosoftVisualCExpress
--- a/docs/landscape.html	Wed Jan 09 18:11:12 2008 +0000
+++ b/docs/landscape.html	Sun Feb 03 20:17:54 2008 +0000
@@ -38,8 +38,8 @@
    <a name = "tropic_zone">
    Bits 1..0 :
    <table border="1">
-    <tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate.<br>It contains the definition of the two available zones</td></tr>
-    <tr><td><tt>00</tt>&nbsp; </td><td>invalid zone</td></tr>
+    <tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate.<br>It contains the definition of the available zones</td></tr>
+    <tr><td><tt>00</tt>&nbsp; </td><td>normal</td></tr>
     <tr><td><tt>01</tt>&nbsp; </td><td>desert</td></tr>
     <tr><td><tt>02</tt>&nbsp; </td><td>rain forest</td></tr>
    </table>
@@ -79,78 +79,92 @@
    <td>
     <ul>
      <li>m1: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
+     <li>m2: see fields</li>
+     <li>m3 bits 3..0: see fields</li>
      <li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
      <li>m4 bits 4..2: same as 7..5, but for the SE border</li>
      <li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
          other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt>, <tt>10</tt> and above.<BR>
          on wraparound, the tile is updated (for fields, the type of fields in m3 is increased, for other types the tile type in m5 is increased).<BR>
          For snow and desert, these bits are not used, tile is updated on every periodic processing.</li>
-     <li>m5 bits 4..0: tile type:
+     <li>m5 bits 4..2: tile type:
       <table>
        <tr>
-        <td nowrap valign=top><tt>00</tt>&nbsp; </td>
-        <td align=left>bare land</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>01</tt>&nbsp; </td>
-        <td align=left>1/3 grass</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>02</tt>&nbsp; </td>
-        <td align=left>2/3 grass</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>03</tt>&nbsp; </td>
-        <td align=left>full grass</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>07</tt>&nbsp; </td>
-        <td align=left>rough land</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>0B</tt>&nbsp; </td>
-        <td align=left>rocks</td>
+        <td nowrap valign=top><tt>0</tt>&nbsp; </td>
+        <td align=left>bare land / grass</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>0F</tt>&nbsp; </td>
-        <td align=left>fields; type of fields in m3 bits 3..0 (legal values: 0 through 9)<br>
-             m2: Index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>10</tt>&nbsp; </td>
-        <td align=left>1/4 snow</td>
-       </tr>
-
-       <tr>
-        <td nowrap valign=top><tt>11</tt>&nbsp; </td>
-        <td align=left>2/4 snow</td>
+        <td nowrap valign=top><tt>1</tt>&nbsp; </td>
+        <td align=left>rough land (density must be 3)</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>12</tt>&nbsp; </td>
-        <td align=left>3/4 snow</td>
+        <td nowrap valign=top><tt>2</tt>&nbsp; </td>
+        <td align=left>rocks (density must be 3)</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>13</tt>&nbsp; </td>
-        <td align=left>full snow</td>
+        <td nowrap valign=top><tt>3</tt>&nbsp; </td>
+        <td align=left>fields (density must be 3)
+         <ul>
+          <li>m2: index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed</li>
+          <li>m3 bits 3..0: field type (legal values: 0 through 9)</li>
+         </ul>
+        </td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>15</tt>&nbsp; </td>
-        <td align=left>partial desert</td>
+        <td nowrap valign=top><tt>4</tt>&nbsp; </td>
+        <td align=left>snow</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>17</tt>&nbsp; </td>
-        <td align=left>full desert</td>
+        <td nowrap valign=top><tt>5</tt>&nbsp; </td>
+        <td align=left>desert (density must be 1 or 3)</td>
+       </tr>
+      </table>
+     </li>
+     <li>m5 bits 1..0: density:
+      <table>
+       <tr>
+        <td nowrap valign=top><tt>0</tt>&nbsp; </td>
+        <td>bare land</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td>1/4 snow</td>
+        <td></td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>1</tt>&nbsp; </td>
+        <td>1/3 grass</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td>2/4 snow;&nbsp;</td>
+        <td>1/2 desert</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>2</tt>&nbsp; </td>
+        <td>2/3 grass</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td>3/4 snow</td>
+        <td></td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>3</tt>&nbsp; </td>
+        <td>full grass;&nbsp;</td>
+        <td>rough land;&nbsp;</td>
+        <td>rocks;&nbsp;</td>
+        <td>fields;&nbsp;</td>
+        <td>full snow;&nbsp;</td>
+        <td>full desert</td>
        </tr>
       </table>
      </li>
@@ -168,105 +182,108 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
+     <li>m1: <a href="#OwnershipInfo">owner</a> of the tile</li>
+     <li>m2: see waypoint and signals</li>
+     <li>m3 bits 7..4: see signals</li>
+     <li>m3 bits 3..0 = <a name="TrackType">track type</a>:
+      <table>
+       <tr>
+        <td><tt>0</tt>&nbsp; </td>
+        <td>conventional railway</td>
+       </tr>
+
+       <tr>
+        <td><tt>1</tt>&nbsp; </td>
+        <td>electrified railway</td>
+       </tr>
+
+       <tr>
+        <td><tt>2</tt>&nbsp; </td>
+        <td>monorail</td>
+       </tr>
+
+       <tr>
+        <td><tt>3</tt>&nbsp; </td>
+        <td>maglev</td>
+       </tr>
+      </table>
+     </li>
+     <li>m4 bits 7..4: see signals</li>
+     <li>m4 bits 3..0: Ground type (values with fences are not valid for depots and checkpoints)
+      <table>
+       <tr>
+        <td nowrap valign=top><tt>0</tt>&nbsp; </td>
+        <td align=left>on bare land</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>1</tt>&nbsp; </td>
+        <td align=left>on grass, no fences</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>2</tt>&nbsp; </td>
+        <td align=left>fence on the NW side</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>3</tt>&nbsp; </td>
+        <td align=left>fence on the SE side</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>4</tt>&nbsp; </td>
+        <td align=left>fences on the NW and SE sides</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>5</tt>&nbsp; </td>
+        <td align=left>fence on the NE side</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>6</tt>&nbsp; </td>
+        <td align=left>fence on the SW side</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>7</tt>&nbsp; </td>
+        <td align=left>fences on the NE and SW sides</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>8</tt>&nbsp; </td>
+        <td align=left>fence on the E side (track in the W corner)</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>9</tt>&nbsp; </td>
+        <td align=left>fence on the W side (track in the E corner)</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>A</tt>&nbsp; </td>
+        <td align=left>fence on the S side (track in the N corner)</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>B</tt>&nbsp; </td>
+        <td align=left>fence on the N side (track in the S corner)</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>C</tt>&nbsp; </td>
+        <td align=left>on snow or desert</td>
+       </tr>
+
+       <tr>
+        <td nowrap valign=top><tt>D</tt>&nbsp; </td>
+        <td align=left>on grass with fence and shore or water on the free halftile</td>
+       </tr>
+      </table>
+     </li>
      <li>m5 bit 7 clear: railway track
       <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the track</li>
-       <li>m3 bits 3..0 = <a name="TrackType">track type</a>:
-        <table>
-         <tr>
-          <td><tt>0</tt>&nbsp; </td>
-          <td>conventional railway</td>
-         </tr>
-
-         <tr>
-          <td><tt>1</tt>&nbsp; </td>
-          <td>electrified railway</td>
-         </tr>
-
-         <tr>
-          <td><tt>2</tt>&nbsp; </td>
-          <td>monorail</td>
-         </tr>
-
-         <tr>
-          <td><tt>3</tt>&nbsp; </td>
-          <td>maglev</td>
-         </tr>
-        </table>
-       </li>
-       <li>m4 bits 3..0:
-        <table>
-         <tr>
-          <td nowrap valign=top><tt>0</tt>&nbsp; </td>
-          <td align=left>on bare land</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>1</tt>&nbsp; </td>
-          <td align=left>on grass, no fences</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>2</tt>&nbsp; </td>
-          <td align=left>fence on the NW side</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>3</tt>&nbsp; </td>
-          <td align=left>fence on the SE side</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>4</tt>&nbsp; </td>
-          <td align=left>fences on the NW and SE sides</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>5</tt>&nbsp; </td>
-          <td align=left>fence on the NE side</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>6</tt>&nbsp; </td>
-          <td align=left>fence on the SW side</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>7</tt>&nbsp; </td>
-          <td align=left>fences on the NE and SW sides</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>8</tt>&nbsp; </td>
-          <td align=left>fence on the E side (track in the W corner)</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>9</tt>&nbsp; </td>
-          <td align=left>fence on the W side (track in the E corner)</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>A</tt>&nbsp; </td>
-          <td align=left>fence on the S side (track in the N corner)</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>B</tt>&nbsp; </td>
-          <td align=left>fence on the N side (track in the S corner)</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>C</tt>&nbsp; </td>
-          <td align=left>on snow or desert</td>
-         </tr>
-
-         <tr>
-          <td nowrap valign=top><tt>D</tt>&nbsp; </td>
-          <td align=left>on grass with fence and water on the lower halftile</td>
-         </tr>
-        </table>
-       </li>
        <li>m5 bits 5..0: track layout: bit set = track present:
         <table>
          <tr>
@@ -300,170 +317,136 @@
          </tr>
         </table>
        </li>
-      </ul>
-     </li>
-     <li>m5 bit 7 set: railway depot / checkpoints
-      <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the depot / checkpoint</li>
-       <li>m2: For waypoints, index into the array of waypoints.</li>
-       <li>m3 bits 3..0 = <a href="#TrackType">track type</a></li>
-       <li>m4 bits 3..0 = ground type, as per m4 bits 3..0 for railway tiles.</li>
-       <li>m5 value C0..C3: railway depot
+       <li>m5 bit 6 set = with signals:<BR>
+        There are at most 4 signals on a tile. The signals 0..3 belong to the directions:
         <table>
          <tr>
-          <td colspan=2>m5 bits 1..0</td>
-         </tr>
-
-         <tr>
-          <td colspan=2>direction: exit towards:</td>
+          <td></td>
+          <td>Track <tt>0</tt> (X)&nbsp;</td>
+          <td>Track <tt>1</tt> (Y)&nbsp;</td>
+          <td>Track <tt>2</tt> (north)&nbsp;</td>
+          <td>Track <tt>3</tt> (south)&nbsp;</td>
+          <td>Track <tt>4</tt> (west)&nbsp;</td>
+          <td>Track <tt>5</tt> (east)</td>
          </tr>
 
          <tr>
-          <td><tt>00</tt>&nbsp; </td>
-          <td>NE</td>
-         </tr>
-
-         <tr>
-          <td><tt>01</tt>&nbsp; </td>
-          <td>SE</td>
+          <td align=left>Signal <tt>0</tt>&nbsp;</td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td>west</td>
+          <td></td>
+          <td>south</td>
          </tr>
 
          <tr>
-          <td><tt>02</tt>&nbsp; </td>
-          <td>SW</td>
+          <td align=left>Signal <tt>1</tt>&nbsp;</td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td>east</td>
+          <td></td>
+          <td>north</td>
          </tr>
 
          <tr>
-          <td><tt>03</tt>&nbsp; </td>
-          <td>NW</td>
-         </tr>
-        </table>
-       </li>
-       <li>m5 value 80..81: checkpoint
-        <table>
-         <tr>
-          <td colspan=2>bit 0</td>
+          <td align=left>Signal <tt>2</tt>&nbsp;</td>
+          <td>south-west</td>
+          <td>north-west</td>
+          <td>west</td>
+          <td></td>
+          <td>south</td>
+          <td></td>
          </tr>
 
          <tr>
-          <td>clear</td>
+          <td align=left>Signal <tt>3</tt>&nbsp;</td>
+          <td>north-east</td>
+          <td>south-east</td>
+          <td>east</td>
+          <td></td>
+          <td>north</td>
+          <td></td>
+         </tr>
+        </table>
+        <ul>
+         <li>m2 bit 6: Signal 0 and 1: set = semaphore signals, clear = light signals</li>
+         <li>m2 bit 2: Signal 2 and 3: set = semaphore signals, clear = light signals</li>
+         <li>m2 bits 5..4: type of signal 0 and 1 (same values as m2 bits 1..0)</li>
+         <li>m2 bits 1..0: type of signal 2 and 3
+          <table>
+           <tr>
+            <td nowrap="nowrap" valign="top"><tt>00</tt>: </td>
+            <td align="left">normal signals</td>
+           </tr>
+
+           <tr>
+            <td nowrap="nowrap" valign="top"><tt>01</tt>: </td>
+            <td align="left">pre-signals</td>
+           </tr>
+
+           <tr>
+            <td nowrap="nowrap" valign="top"><tt>10</tt>: </td>
+            <td align="left">exit-signals</td>
+           </tr>
+
+           <tr>
+            <td nowrap="nowrap" valign="top"><tt>11</tt>: </td>
+            <td align="left">combo-signals</td>
+           </tr>
+          </table>
+         </li>
+
+         <li>m3 bits 7..4: bit set = signal 3..0 present</li>
+         <li>m4 bits 7..4: bit clear = signal 3..0 shows red</li>
+        </ul>
+       </li>
+      </ul>
+     </li>
+     <li>m5 bit 7 set, bit 6 clear: checkpoint
+      <ul>
+       <li>m2: index into the array of waypoints.</li>
+       <li>m5 bit 0:
+        <table>
+         <tr>
+          <td><tt>0</tt>&nbsp; </td>
           <td>in X direction</td>
          </tr>
 
          <tr>
-          <td>set</td>
+          <td><tt>1</tt>&nbsp; </td>
           <td>in Y direction</td>
          </tr>
         </table>
        </li>
       </ul>
-    </li>
-    <li>m5 bit 6 set = with signals:
-     <ul>
-      <li>m4 bits 7..4: bit clear = signal shows red; same bits as in m3</li>
-      <li>m2 bit 2 <i>(6)</i>: set = semaphore signals, clear = light signals <i>(lower and right tracks)</i></li>
-      <li>m2 bits 1..0 <i>(5..4)</i>: type of signal <i>(lower and right tracks)</i>
-       <table>
+     </li>
+     <li>m5 bit 7 set, bit 6 set: railway depot
+      <ul>
+       <li>m5 bits 1..0: exit towards
+        <table>
          <tr>
-          <td nowrap="nowrap" valign="top"><tt>00</tt>: </td>
-          <td align="left">normal signals</td>
-         </tr>
-
-         <tr>
-          <td nowrap="nowrap" valign="top"><tt>01</tt>: </td>
-          <td align="left">pre-signals</td>
-         </tr>
-
-         <tr>
-          <td nowrap="nowrap" valign="top"><tt>10</tt>: </td>
-          <td align="left">exit-signals</td>
+          <td><tt>0</tt>&nbsp; </td>
+          <td>NE</td>
          </tr>
 
          <tr>
-          <td nowrap="nowrap" valign="top"><tt>11</tt>: </td>
-          <td align="left">combo-signals</td>
+          <td><tt>1</tt>&nbsp; </td>
+          <td>SE</td>
+         </tr>
+
+         <tr>
+          <td><tt>2</tt>&nbsp; </td>
+          <td>SW</td>
+         </tr>
+
+         <tr>
+          <td><tt>3</tt>&nbsp; </td>
+          <td>NW</td>
          </tr>
         </table>
        </li>
-
-       <li>m3 bits 7..4: bit set = signal present:
-        <ul>
-         <li>For track in the X direction:
-          <table>
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 6: </td>
-            <td align="left">signal in the SW direction</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 7: </td>
-            <td align="left">signal in the NE direction</td>
-           </tr>
-          </table>
-         </li>
-
-         <li>For track in the Y direction:
-          <table>
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 6: </td>
-            <td align="left">signal in the NW direction</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 7: </td>
-            <td align="left">signal in the SE direction</td>
-           </tr>
-          </table>
-         </li>
-
-         <li>For tracks in the W-E direction:
-          <table>
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 4: </td>
-            <td align="left">signal in the W direction on the track in the S corner</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 5: </td>
-            <td align="left">signal in the E direction on the track in the S corner</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 6: </td>
-            <td align="left">signal in the W direction on the track in the N corner</td>
-           </tr>
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 7: </td>
-            <td align="left">signal in the E direction on the track in the N corner</td>
-           </tr>
-          </table>
-         </li>
-
-         <li>For tracks in the N-S direction:
-          <table>
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 4: </td>
-            <td align="left">signal in the S direction on the track in the E corner</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 5: </td>
-            <td align="left">signal in the N direction on the track in the E corner</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 6: </td>
-            <td align="left">signal in the S direction on the track in the W corner</td>
-           </tr>
-
-           <tr>
-            <td nowrap="nowrap" valign="top">bit 7: </td>
-            <td align="left">signal in the N direction on the track in the W corner</td>
-           </tr>
-          </table>
-         </li>
-        </ul>
-       </li>
       </ul>
      </li>
      <li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
@@ -480,11 +463,28 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
-     <li>m5 bits 7..6 clear: road
+     <li>m3 bit 7 set = on snow or desert</li>
+     <li>m7 bits 7..5: present road types
+      <table>
+       <tr>
+        <td>bit 0&nbsp; </td>
+        <td>normal road</td>
+       </tr>
+
+       <tr>
+        <td>bit 1&nbsp; </td>
+        <td>tram</td>
+       </tr>
+
+       <tr>
+        <td>bit 2&nbsp; </td>
+        <td>reserved</td>
+       </tr>
+      </table>
+     </li>
+     <li>m5 bits 7 clear: road or level-crossing
       <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the road type #1</li>
        <li>m2: Index into the array of towns, 0 for non-town roads</li>
-       <li>m3 bit 7 set = on snow or desert</li>
        <li>m3 bits 6..4:
         <table>
          <tr>
@@ -517,57 +517,96 @@
          </tr>
         </table>
        </li>
-       <li>m3 bits 3..0: counter for the roadworks</li>
-       <li>m4 bits 3..0: road layout road type #1: bit set = road piece present:
-        <table>
-         <tr>
-          <td nowrap valign=top>bit 0: </td>
-          <td align=left>NW piece</td>
-         </tr>
-         <tr>
-          <td nowrap valign=top>bit 1: </td>
-          <td align=left>SW piece</td>
-         </tr>
-         <tr>
-          <td nowrap valign=top>bit 2: </td>
-          <td align=left>SE piece</td>
-         </tr>
-         <tr>
-          <td nowrap valign=top>bit 3: </td>
-          <td align=left>NE piece</td>
-         </tr>
-        </table>
+       <li>m5 bits 3..0: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
+       <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road type 2 (reserved)
+       <li>m5 bit 6 clear: road
+        <ul>
+         <li>m1: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
+         <li>m3 bits 3..0: counter for the roadworks</li>
+         <li>m4 bits 3..0: road layout road type 0 (normal road): bit set = road piece present:
+          <table>
+           <tr>
+            <td align=left>bit 0: </td>
+            <td>NW piece</td>
+           </tr>
+           <tr>
+            <td align=left>bit 1: </td>
+            <td>SW piece</td>
+           </tr>
+           <tr>
+            <td align=left>bit 2: </td>
+            <td>SE piece</td>
+           </tr>
+           <tr>
+            <td align=left>bit 3: </td>
+            <td>NE piece</td>
+           </tr>
+          </table>
+         </li>
+         <li>m4 bits 7..4: road layout road type 1 (tram)</li>
+         <li>m6 bits 5..2: road layout road type 2 (reserved)</li>
+         <li>m5 bits 5..4: bits to disallow vehicles to go a specific direction
+          <table>
+           <tr>
+            <td align=left>bit 0: </td>
+            <td>set = disallow driving in south-west or south-east direction</td>
+           </tr>
+           <tr>
+            <td align=left>bit 1: </td>
+            <td>set = disallow driving in north-west or north-east direction</td>
+           </tr>
+          </table>
+         </li>
+        </ul>
        </li>
-       <li>m4 bits 7..4: road layout road type #2
-       <li>m5 bits 5..4: bits to disallow vehicles to go a specific direction
-       <li>m5 bits 3..0: owner of road type #2
-       <li>m6 bits 5..2: road layout road type #3
-       <li>m7 bits 7..5: road types
-       <li>m7 bits 4..0: owner of road type #3
+       <li>m5 bit 6 set: level crossing
+        <ul>
+         <li>m1: <a href="#OwnershipInfo">owner</a> of the railway track</li>
+         <li>m3 bits 3..0: <a href="#TrackType">railway track type</a></li>
+         <li>m4 bit 6: direction
+          <table>
+           <tr>
+            <td align=left><tt>0</tt>&nbsp; </td>
+            <td align=left>road in the X direction, rail in Y</td>
+           </tr>
+           <tr>
+            <td align=left><tt>1</tt>&nbsp; </td>
+            <td align=left>road in the Y direction, rail in X</td>
+           </tr>
+          </table>
+         </li>
+          <li>m4 bit 5: set if crossing lights are on</li>
+         <li>m4 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
+        </ul>
        </li>
       </ul>
      </li>
      <li>m5 bit 7 set, bit 6 clear: road depot
       <ul>
        <li>m1: <a href="#OwnershipInfo">owner</a> of the depot</li>
-       <li>m3 bit 7 set = on snow or desert (not displayed, but set internally)</li>
-       <li>m5 bits 3..0 - direction: exit towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li>
-       <li>m7 bits 7..5: road types
-      </ul>
-     </li>
-     <li>m5 bit 6 set, bit 7 clear: level crossing
-      <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the railway track</li>
-       <li>m2: Index into the array of towns, 0 for non-town roads</li>
-       <li>m3 bit 7 set = on snow or desert</li>
-       <li>m3 bits 6..4: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> or higher - paved</li>
-       <li>m3 bits 3..0: <a href="#TrackType">track type</a></li>
-       <li>m4 bit 6: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li>
-       <li>m4 bit 5: set if crossing lights are on</li>
-       <li>m4 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type #1</li>
-       <li>m5 bits 3..0: owner of road type #2
-       <li>m7 bits 7..5: road types
-       <li>m7 bits 4..0: owner of road type #3
+       <li>m5 bits 3..0: exit towards:
+        <table>
+         <tr>
+          <td><tt>0</tt>&nbsp; </td>
+          <td>NE</td>
+         </tr>
+
+         <tr>
+          <td><tt>1</tt>&nbsp; </td>
+          <td>SE</td>
+         </tr>
+
+         <tr>
+          <td><tt>2</tt>&nbsp; </td>
+          <td>SW</td>
+         </tr>
+
+         <tr>
+          <td><tt>3</tt>&nbsp; </td>
+          <td>NW</td>
+         </tr>
+        </table>
+       </li>
       </ul>
      </li>
      <li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
@@ -585,12 +624,12 @@
    <td>
     <ul>
      <li>m1 : Random bits <a href="#newhouses">(newhouses)</a> </li>
-     <li>m2 : index into the array of industries</li>
+     <li>m2 : index into the array of towns</li>
      <li>m3 bit 7 :
       <ul>
        <li> set : House is complete
         <ul>
-         <li>m5 : age of House. Maximum been 255, which means 255 years and more</li>
+         <li>m5 : year of house construction (relative to 1920); clamped to 0..255 (1920..2175)</li>
         </ul>
        </li>
        <li> clear : House is in construction
@@ -601,8 +640,8 @@
         </ul>
        </li>
       </ul>
-     <li>m3 bit 6 : 9th bit of house type (m4), allowing 512 different types.</li>
-     <li>m3 bits 5..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
+     <li>m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.</li>
+     <li>m3 bits 4..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
      <li>m4 : <a href="landscape_externals.html">town building type</a> (with m3[6] bit)</li>
      <li>m5 : see m3 bit 7</li>
      <li>m6 :
@@ -657,22 +696,28 @@
    <td>
     <ul>
      <li>m1: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
-     <li>m2 bits 5..4:
+     <li>m2 bits 7..6: ground density
+     <li>m2 bits 5..4: ground
       <table>
 
        <tr>
-        <td nowrap valign=top><tt>0</tt>&nbsp; </td>
-        <td align=left>on grass</td>
+        <td align=left><tt>0</tt>&nbsp; </td>
+        <td>on grass</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>1</tt>&nbsp; </td>
-        <td align=left>on rough land</td>
+        <td align=left><tt>1</tt>&nbsp; </td>
+        <td>on rough land (density must be 3)</td>
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>2</tt>&nbsp; </td>
-        <td align=left>on snow or desert; m2 bits 7..6 - amount of snow or desert (for desert always set to 3 in TTD)</td>
+        <td align=left><tt>2</tt>&nbsp; </td>
+        <td>on snow or desert</td>
+       </tr>
+
+       <tr>
+        <td align=left><tt>3</tt>&nbsp; </td>
+        <td>on shore (density must be 3)</td>
        </tr>
       </table>
      </li>
@@ -747,7 +792,9 @@
      <li>m1: <a href="#OwnershipInfo">owner</a> of the station</li>
      <li>m2: index into the array of stations</li>
      <li>m3 bits 7..4: persistent random data for newstations</li>
-     <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations, must be 0 for all the other stations</li>
+     <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations</li>
+     <li>m3 bits 2..0: present road types for road stops</li>
+     <li>m3 bits 1..0: water class for buoys and water part of docks</li>
      <li>m4: custom station id; 0 means standard graphics</li>
      <li>m5: graphics index (range from 0..255 for each station type):
       <table>
@@ -780,24 +827,32 @@
        </tr>
 
        <tr>
-        <td nowrap valign=top><tt>00</tt>..<tt>03</tt>&nbsp; </td>
-        <td align=left>lorry loading area/truck station : exit towards:
+        <td nowrap valign=top><tt>00</tt>..<tt>05</tt>&nbsp; </td>
+        <td align=left>road stops:
          <table>
           <tr>
            <td><tt>00</tt>&nbsp; </td>
-           <td align=left>NE</td>
+           <td align=left>exit towards NE</td>
           </tr>
           <tr>
            <td><tt>01</tt>&nbsp; </td>
-           <td align=left>SE</td>
+           <td align=left>exit towards SE</td>
           </tr>
           <tr>
            <td><tt>02</tt>&nbsp; </td>
-           <td align=left>SW</td>
+           <td align=left>exit towards SW</td>
           </tr>
           <tr>
            <td><tt>03</tt>&nbsp; </td>
-           <td align=left>NW</td>
+           <td align=left>exit towards NW</td>
+          </tr>
+          <tr>
+           <td><tt>04</tt>&nbsp; </td>
+           <td align=left>drive through X</td>
+          </tr>
+          <tr>
+           <td><tt>05</tt>&nbsp; </td>
+           <td align=left>drive through Y</td>
           </tr>
          </table>
         </td>
@@ -836,7 +891,7 @@
        </tr>
       </table>
      </li>
-     <li>m6 bits 3..5: the station type (rail, airport, truck, bus, oilrig, dock, buoy)</li>
+     <li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy)</li>
      <li>m6 bit 2: 1 when a drive through road stop is built over a town owned road, otherwise 0</li>
      <li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
     </ul>
@@ -851,12 +906,15 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
-     <li>m1: <a href="#OwnershipInfo">owner</a> (for water and coasts normally <tt>11</tt>)</li>
+     <li>m1: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li>
+     <li>m3 bits 1..0 : Water class (sea, canal or river)
+     <li>m4: Owner of the water when ship depot</li>
+     <li>m4: Random data for canal or river tiles</li>
      <li>m5: tile type:
       <table>
        <tr>
         <td nowrap valign=top><tt>00</tt>&nbsp; </td>
-        <td align=left>water</td>
+        <td align=left>water, canal or river</td>
        </tr>
 
        <tr>
@@ -945,7 +1003,6 @@
        </tr>
       </table>
      </li>
-     <li>m4: Owner of the water</li>
      <li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
      <li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
     </ul>
@@ -973,12 +1030,14 @@
     <ul>
      <li>m1 bit 7: clear = under construction
       <ul>
-       <li>m1 bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
+       <li>m1 bits 3..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
        <li>m1 bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around<br>
            the meaning is different for some animated tiles which are never under construction (types <tt>01</tt>, <tt>1E</tt>..<tt>20</tt>, <tt>30</tt>, <tt>58</tt>; see above)</li>
       </ul>
      </li>
      <li>m2: index into the array of industries</li>
+     <li>m3: animation state</li>
+     <li>m4: animation loop</li>
      <li>m5: type (plus m6 bit 2):<br>
       <small>(note: this is not the same as the industry type, which is stored in the array of industries)</small>
 
@@ -1284,10 +1343,9 @@
        </tr>
       </table>
      </li>
+     <li>m6 bits 5..3: random triggers (NewGRF)</li>
+     <li>m6 bit 2: bit 8 of type (see m5)</li>
      <li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
-     <li>m3: animation state</li>
-     <li>m4: animation loop</li>
-     <li>m6 bits 3..5: random triggers (NewGRF)</li>
      <li>m7: random bits (NewGRF)</li>
     </ul>
    </td>
@@ -1301,18 +1359,14 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
-     <li>m5 bits 7..4 clear: tunnel entrance/exit
-      <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the tunnel</li>
-       <li>m3 bits 3..0 = <a href="#TrackType">track type</a> for railway tunnel, must be 0 for road tunnel</li>
-       <li>m4 bit 7 set = on snow or desert</li>
-       <li>m5 bits 3..2: <tt>0</tt> - railway tunnel, <tt>1</tt> - road tunnel</li>
-       <li>m5 bits 1..0 - direction: entrance towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li>
-      </ul>
-     </li>
+     <li>m1: <a href="#OwnershipInfo">owner</a></li>
+     <li>m2 bits 7..4: see bridge ramp</li>
+     <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li>
+     <li>m3 bits 2..0: present road types for road</li>
+     <li>m4 bit 7 set = on snow or desert</li>
+     <li>m5 bits 7 clear: tunnel entrance/exit</li>
      <li>m5 bit 7 set: bridge ramp
       <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the bridge</li>
        <li>m2 bits 7..4: <a name="BridgeType">bridge type</a>:
         <table>
          <tr>
@@ -1386,14 +1440,57 @@
           <td align=center>200</td>
           <td align=left>tubular, steel</td>
          </tr>
+
+         <tr>
+          <td nowrap valign=top><tt>B</tt>&nbsp; </td>
+          <td align=center>320</td>
+          <td align=left>tubular, steel</td>
+         </tr>
+
+         <tr>
+          <td nowrap valign=top><tt>C</tt>&nbsp; </td>
+          <td align=center>380</td>
+          <td align=left>tubular, silicon</td>
+         </tr>
         </table>
        </li>
-       <li>m3 bits 3..0 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li>
-       <li>m4 bit 7 set = on snow or desert</li>
-       <li>m5 bits 3..2: <tt>0</tt> - railway bridge, <tt>1</tt> - road bridge</li>
-       <li>m5 bits 1..0: DiagDirection onto the bridge</li>
       </ul>
      </li>
+     <li>m5 bits 3..2: transport type
+      <table>
+       <tr>
+        <td><tt>0</tt>&nbsp;</td>
+        <td>railway</td>
+       </tr>
+
+       <tr>
+        <td><tt>1</tt>&nbsp;</td>
+        <td>road</td>
+       </tr>
+     </li>
+     <li>m5 bits 1..0: direction onto the bridge / out of the tunnel
+      <table>
+       <tr>
+        <td><tt>0</tt>&nbsp; </td>
+        <td>NE</td>
+       </tr>
+
+       <tr>
+        <td><tt>1</tt>&nbsp; </td>
+        <td>SE</td>
+       </tr>
+
+       <tr>
+        <td><tt>2</tt>&nbsp; </td>
+        <td>SW</td>
+       </tr>
+
+       <tr>
+        <td><tt>3</tt>&nbsp; </td>
+        <td>NW</td>
+       </tr>
+      </table>
+     </li>
      <li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
      <li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
     </ul>
@@ -1408,13 +1505,9 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
-     <li>m1 : <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
-     <li>m2 :
-      <ul>
-       <li>for company statue (m5 = 02), TownID on which the statue is built in</li>
-      </ul>
-     </li>
-     <li>m5 : tile type:
+     <li>m1: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
+     <li>m2: see company statue
+     <li>m5: tile type:
       <table>
        <tr>
         <td nowrap valign=top><tt>00</tt>&nbsp; </td>
@@ -1428,7 +1521,11 @@
 
        <tr>
         <td nowrap valign=top><tt>02</tt>&nbsp; </td>
-        <td align=left>company statue</td>
+        <td align=left>company statue
+         <ul>
+          <li>m2: TownID on which the statue is built in</li>
+         </ul>
+        </td>
        </tr>
 
        <tr>
--- a/docs/landscape_grid.html	Wed Jan 09 18:11:12 2008 +0000
+++ b/docs/landscape_grid.html	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,7 @@
   <title>OpenTTD Landscape Internals - #2</title>
   <style type="text/css">
     span.abuse { font-family: "Courier New", Courier, mono; background-color: rgb(255, 58, 31); }
+    span.option{ font-family: "Courier New", Courier, mono; background-color: rgb(255,255, 30); }
     span.free  { font-family: "Courier New", Courier, mono; background-color: rgb(30, 178, 54); }
     span.used  { font-family: "Courier New", Courier, mono; }
     td.bits    { white-space: nowrap; text-align: center; font-family: "Courier New", Courier, mono; }
@@ -22,7 +23,8 @@
 <ul>
   <li><span style="font-weight: bold;"><span class="free">O</span></span> - bit is free</li>
   <li><span style="font-weight: bold;"><span class="used">X</span></span> - bit is used</li>
-  <li><span style="font-weight: bold;"><span class="abuse">&nbsp;</span></span> - bit of attribute is abused for different purposes</li>
+  <li><span style="font-weight: bold;"><span class="abuse">&nbsp;</span></span> - bit of attribute is abused for different purposes, i.e. other bits define the actual meaning.</li>
+  <li><span style="font-weight: bold;"><span class="option">~</span></span> - bit is accessed, but does not really have a meaning (e.g. owner of clear land is always OWNER_NONE)</li>
 </ul>
 <p>
 <ul>
@@ -64,7 +66,7 @@
       <td rowspan="2">0</td>
       <td class="caption">ground</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
       <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
       <td class="bits">XXXX XX<span class="free">OO</span></td>
@@ -75,23 +77,34 @@
     <tr>
       <td class="caption">farmland</td>
       <td class="bits">-inherit-</td>
-      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
       <td class="bits"><span class="free">OOOO</span> XXXX</td>
       <td class="bits">-inherit-</td>
-      <td class="bits"><span class="free">OOO</span>X XXXX</td>
+      <td class="bits">-inherit-</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
     <tr>
-      <td rowspan=3>1</td>
+      <td rowspan=4>1</td>
       <td class="caption">rail</td>
       <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
+      <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
+      <td class="bits"><span class="free">OOOO</span> XXXX</td>
       <td class="bits">XXXX XXXX</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">rail with signals</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
       <td class="bits"><span class="free">OOOO OOOO O</span>XXX <span class="free">O</span>XXX</td>
+      <td class="bits">XXXX <span class="option">~~</span>XX</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits">-inherit-</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
@@ -100,9 +113,9 @@
       <td class="bits">-inherit-</td>
       <td class="bits">-inherit-</td>
       <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
       <td class="bits"><span class="free">OOOO</span> XXXX</td>
-      <td class="bits"><span class="free">OOOO</span> XXXX</td>
-      <td class="bits">XX<span class="free">OO O</span>XXX</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
@@ -111,9 +124,9 @@
       <td class="bits">-inherit-</td>
       <td class="bits">-inherit-</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
+      <td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
       <td class="bits"><span class="free">OOOO</span> XXXX</td>
-      <td class="bits"><span class="free">OOOO</span> XXXX</td>
-      <td class="bits">XX<span class="free">OO O</span>XXX</td>
+      <td class="bits">XX<span class="free">OO OOO</span>X</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
@@ -121,7 +134,7 @@
       <td rowspan=3>2</td>
       <td class="caption">road</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
@@ -134,11 +147,11 @@
       <td class="bits">-inherit-</td>
       <td class="bits">-inherit-</td>
       <td class="bits">-inherit-</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits">XXXX <span class="option">~~</span>XX</td>
       <td class="bits"><span class="free">O</span>XXX XXXX</td>
       <td class="bits">XX<span class="free">OO</span> XXXX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits">-inherit-</td>
     </tr>
     <tr>
       <td class="caption">road depot</td>
@@ -147,7 +160,7 @@
       <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
       <td class="bits">X<span class="free">OOO OOOO</span></td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
-      <td class="bits">XX<span class="free">OO</span> XXXX</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits">XXX<span class="free">O OOOO</span></td>
     </tr>
@@ -157,45 +170,122 @@
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
-      <td class="bits">XX<span class="free">O</span>X XXXX</td>
+      <td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XX<span class="abuse">XX XXXX</span></td>
-      <td class="bits"><span class="abuse">XXXX XX</span>XX</td>
-      <td class="bits"><span class="abuse">X</span>XX<span class="abuse">X XXX</span>X</td>
+      <td class="bits">XXX<span class="abuse">X XXXX</span></td>
+      <td class="bits"><span class="abuse">XXXX X</span>XXX</td>
+      <td class="bits">XXXX <span class="abuse">XXXX</span></td>
     </tr>
     <tr>
       <td>4</td>
       <td class="caption">trees</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
       <td class="bits"><span class="free">OOOO OOOO</span> XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~</span>XX XXXX</td>
       <td class="bits">XXXX XX<span class="free">OO</span></td>
       <td class="bits">XX<span class="free">OO O</span>XXX</td>
       <td class="bits"><span class="free">OOOO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
     <tr>
-      <td>5</td>
-      <td class="caption">station</td>
+      <td rowspan=6>5</td>
+      <td class="caption">rail station</td>
+      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
+      <td class="bits">XXXX XXXX XXXX XXXX</td>
+      <td class="bits">XXXX <span class="option">~~</span>XX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">road stop</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO O</span>XXX</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="option">~~~~ ~</span>XXX</td>
       <td class="bits"><span class="free">OO</span>XX XXXX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
     <tr>
-      <td>6</td>
-      <td class="caption">water</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="caption">dock</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OO</span>XX</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="option">~~~~ ~</span>XXX</td>
+      <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">airport</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">buoy</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OO</span>XX</td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">oilrig</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="option">~~~~ ~~~~</span></td>
+      <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td rowspan=3>6</td>
+      <td class="caption">sea, shore</td>
       <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
+      <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO OO</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits">X<span class="option">~~</span>X XXXX</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">canal, river</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO OO</span>XX</td>
       <td class="bits">XXXX XXXX</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">shipdepot</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO OO</span>XX</td>
+      <td class="bits">XXXX XXXX</td>
+      <td class="bits">-inherit-</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
@@ -203,7 +293,7 @@
       <td>8</td>
       <td class="caption">industry</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits"><span class="abuse">X</span><span class="free">OO</span><span class="abuse">X
+      <td class="bits">X<span class="free">OOO</span> <span class="abuse">
         XXXX</span></td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
@@ -216,35 +306,45 @@
       <td rowspan=2>9</td>
       <td class="caption">tunnel entrance</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
       <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
-      <td class="bits"><span class="free">OOOO</span> XXXX</td>
+      <td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
       <td class="bits">X<span class="free">OOO OOOO</span></td>
-      <td class="bits">X<span class="free">OOO</span> XXXX</td>
+      <td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
     <tr>
       <td>bridge ramp</td>
-      <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO OOOO</span> <span class="abuse">XXXX</span>
-        <span class="free">OOOO</span></td>
-      <td class="bits"><span class="free">OOOO</span> XXXX</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits"><span class="free">OOOO OOOO</span> XXXX <span class="free">OOOO</span></td>
+      <td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
       <td class="bits">X<span class="free">OOO OOOO</span></td>
-      <td class="bits">X<span class="free">OOO</span> XXXX</td>
+      <td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
     <tr>
-      <td>A</td>
+      <td rowspan=2>A</td>
       <td class="caption">unmovables</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits"><span class="option">~~~</span>X XXXX</td>
       <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
-      <td class="bits">XXXX XXXX</td>
+      <td class="bits">X<span class="option">~~</span>X XXXX</td>
+      <td class="bits">XX<span class="free">OO OO</span>XX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+    </tr>
+    <tr>
+      <td class="caption">company statue</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">-inherit-</td>
+      <td class="bits">XXXX XXXX XXXX XXXX</td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits">-inherit-</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
     </tr>
--- a/known-bugs.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/known-bugs.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -11,21 +11,18 @@
 If the bug report is closed, it has been fixed, which then can be verified
 in the latest SVN version of /trunk.
 
-Bugs for 0.6.0-beta1
+Bugs for 0.6.0-beta3
 ------------------------------------------------------------------------
 URL: http://bugs.openttd.org
 
-- 1519	Full screen issues in windows
+- 1624	Autoreplace refit fails -> crash
+- 1549	Timetable + group ID are not backed up with orders
 - 1495	Long vehicles block multistop station
 - 1487	Ending_year is never written to
 - 1473	Train not going to available platform
 - 1404	Spinner widget interprets one click as many
-- 1386	Mac OS X fails to compile out of the box on 10.5
 - 1264	Autoreplace for multiple NewGRF DMU sets fails
-- 1200	Illegal names skip comparisons for uniquity
-- 1141	[OSX] Not smooth moving map with touchpad
-- 1109	[OSX] Choppy mouse cursor movement in fullscreen mode
+- 1140	[OSX] Not smooth moving map with touchpad
 - 1074	Large slowdown when building tracks
 - 1072	Text overflows in several windows
--  716	Train crash in depot with long long tracks
 -  119	Clipping problems with vehicles on slopes
--- a/os/debian/changelog	Wed Jan 09 18:11:12 2008 +0000
+++ b/os/debian/changelog	Sun Feb 03 20:17:54 2008 +0000
@@ -4,6 +4,12 @@
 
  -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Mon, 26 Feb 2007 21:07:05 +0100
 
+openttd (0.6.0~beta3-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Tue, 16 Jan 2008 21:40:07 +0100
+
 openttd (0.6.0~beta2-1) unstable; urgency=low
 
   * New upstream release.
--- a/os/win32/installer/install.nsi	Wed Jan 09 18:11:12 2008 +0000
+++ b/os/win32/installer/install.nsi	Sun Feb 03 20:17:54 2008 +0000
@@ -1,9 +1,9 @@
 !define APPNAME "OpenTTD"   ; Define application name
 !define APPVERSION "0.6.0"  ; Define application version
-!define INSTALLERVERSION 40 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
+!define INSTALLERVERSION 41 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
 
 !define APPURLLINK "http://www.openttd.org"
-!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta1"
+!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta3"
 !define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
 
 !define MUI_ICON "..\..\..\media\openttd.ico"
--- a/projects/generate	Wed Jan 09 18:11:12 2008 +0000
+++ b/projects/generate	Sun Feb 03 20:17:54 2008 +0000
@@ -25,13 +25,6 @@
 # langs_vs80.vcproj   is for MSVC 2005
 # strgen_vs80.vcproj  is for MSVC 2005
 
-# openttd.sln         is for MSVC 2003
-# openttd.vcproj      is for MSVC 2003
-# langs.vcproj        is for MSVC 2003
-# strgen.vcproj       is for MSVC 2003
-
-# openttd.tgt         is for WatCom
-
 
 
 # First, collect the list of Windows files
@@ -110,7 +103,7 @@
 
 				print "		<Filter";
 				print "			Name=\\""$0"\\"";
-				print "			Filter=\\"\\">";
+				print "			>";
 			}
 
 			next;
@@ -121,7 +114,8 @@
 				gsub("	", "", $0);
 				gsub("/", "\\\\", $0);
 				print "			<File";
-				print "				RelativePath=\\".\\\\'$file_prefix'"$0"\\">";
+				print "				RelativePath=\\".\\\\'$file_prefix'"$0"\\"";
+				print "				>";
 				print "			</File>";
 			}
 		}
@@ -138,15 +132,18 @@
 		i=`basename $i | sed s/.txt$//g`
 		RES="$RES
 		<File
-			RelativePath=\"..\\src\\lang\\"$i".txt\">
+			RelativePath=\"..\\src\\lang\\"$i".txt\"
+			>
 			<FileConfiguration
-				Name=\"Debug|Win32\">
+				Name=\"Debug|Win32\"
+				>
 				<Tool
 					Name=\"VCCustomBuildTool\"
 					Description=\"Generating "$i" language file\"
 					CommandLine=\"..\\objs\\strgen\\strgen.exe -s ..\\src\\lang -d ..\\bin\\lang &quot;\$(InputPath)&quot;&#x0D;&#x0A;\"
 					AdditionalDependencies=\"\"
-					Outputs=\"..\\bin\\lang\\"$i".lng\"/>
+					Outputs=\"..\\bin\\lang\\"$i".lng\"
+				/>
 			</FileConfiguration>
 		</File>"
 	done
@@ -165,22 +162,7 @@
 		}
 	' > "$ROOT_DIR/projects/$2"
 
-	# The files-list
-	echo "$1" | awk -v type="$3" '
-		/&#x0D;&#x0A;/ {
-			if (type == "msvc2003") gsub("&#x0D;&#x0A;", "\n", $0);
-		}
-		/Filter="">/ {
-			if (type == "msvc2005") gsub("Filter=\"\">", ">", $0);
-		}
-		/"\/>/ {
-			if (type == "msvc2005") gsub("/>", "\n" substr($0, 1, index($0, $1) - 2) "/>", $0);
-		}
-		/">/ {
-			if (type == "msvc2005") gsub(">", "\n" substr($0, 1, index($0, $1) - 1) ">", $0);
-		}
-		{ print $0 }
-	' >> "$ROOT_DIR/projects/$2"
+	echo "$1" >> "$ROOT_DIR/projects/$2"
 
 	# Everything below the !!FILES!! marker
 	cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
@@ -199,9 +181,7 @@
 load_main_data "$ROOT_DIR/source.list" openttd
 load_lang_data "$ROOT_DIR/src/lang/*.txt" lang
 
-generate "$openttd" "openttd.vcproj"      "msvc2003"
-generate "$openttd" "openttd_vs80.vcproj" "msvc2005"
-generate "$openttd" "openttd_vs90.vcproj" "msvc2005"
-generate "$lang" "langs.vcproj"           "msvc2003"
-generate "$lang" "langs_vs80.vcproj"      "msvc2005"
-generate "$lang" "langs_vs90.vcproj"      "msvc2005"
+generate "$openttd" "openttd_vs80.vcproj"
+generate "$openttd" "openttd_vs90.vcproj"
+generate "$lang" "langs_vs80.vcproj"
+generate "$lang" "langs_vs90.vcproj"
--- a/projects/langs.vcproj	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,538 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="langs"
-	ProjectGUID="{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
-	RootNamespace="langs"
-	SccProjectName=""
-	SccLocalPath=""
-	Keyword="MakeFileProj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\lang\"
-			IntermediateDirectory="..\objs\langs\"
-			ConfigurationType="10"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName="./langs.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Generating strings.h"
-				CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-
-		<File
-			RelativePath="..\src\lang\afrikaans.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating afrikaans language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\afrikaans.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\brazilian_portuguese.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating brazilian_portuguese language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\brazilian_portuguese.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\bulgarian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating bulgarian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\bulgarian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\catalan.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating catalan language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\catalan.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\croatian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating croatian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\croatian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\czech.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating czech language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\czech.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\danish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating danish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\danish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\dutch.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating dutch language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\dutch.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\english.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating english language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\english.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\english_US.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating english_US language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\english_US.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\esperanto.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating esperanto language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\esperanto.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\estonian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating estonian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\estonian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\finnish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating finnish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\finnish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\french.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating french language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\french.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\galician.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating galician language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\galician.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\german.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating german language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\german.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\hungarian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating hungarian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\hungarian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\icelandic.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating icelandic language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\icelandic.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\italian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating italian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\italian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\japanese.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating japanese language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\japanese.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\korean.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating korean language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\korean.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\lithuanian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating lithuanian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\lithuanian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\norwegian_bokmal.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating norwegian_bokmal language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\norwegian_bokmal.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\norwegian_nynorsk.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating norwegian_nynorsk language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\norwegian_nynorsk.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\origveh.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating origveh language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\origveh.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\piglatin.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating piglatin language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\piglatin.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\polish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating polish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\polish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\portuguese.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating portuguese language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\portuguese.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\romanian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating romanian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\romanian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\russian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating russian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\russian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\simplified_chinese.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating simplified_chinese language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\simplified_chinese.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\slovak.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating slovak language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\slovak.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\slovenian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating slovenian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\slovenian.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\spanish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating spanish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\spanish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\swedish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating swedish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\swedish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\traditional_chinese.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating traditional_chinese language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\traditional_chinese.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\turkish.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating turkish language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\turkish.lng"/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath="..\src\lang\ukrainian.txt">
-			<FileConfiguration
-				Name="Debug|Win32">
-				<Tool
-					Name="VCCustomBuildTool"
-					Description="Generating ukrainian language file"
-					CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;
-"
-					AdditionalDependencies=""
-					Outputs="..\bin\lang\ukrainian.lng"/>
-			</FileConfiguration>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/projects/langs.vcproj.in	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="langs"
-	ProjectGUID="{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
-	RootNamespace="langs"
-	SccProjectName=""
-	SccLocalPath=""
-	Keyword="MakeFileProj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\lang\"
-			IntermediateDirectory="..\objs\langs\"
-			ConfigurationType="10"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName="./langs.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Generating strings.h"
-				CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-!!FILES!!
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/projects/openttd.sln	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd.vcproj", "{668328A0-B40E-4CDB-BD72-D0064424414A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{0F066B23-18DF-4284-8265-F4A5E7E3B966} = {0F066B23-18DF-4284-8265-F4A5E7E3B966}
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen.vcproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "langs", "langs.vcproj", "{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
-	ProjectSection(ProjectDependencies) = postProject
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		Debug = Debug
-		Release = Release
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{668328A0-B40E-4CDB-BD72-D0064424414A}.Debug.ActiveCfg = Debug|Win32
-		{668328A0-B40E-4CDB-BD72-D0064424414A}.Debug.Build.0 = Debug|Win32
-		{668328A0-B40E-4CDB-BD72-D0064424414A}.Release.ActiveCfg = Release|Win32
-		{668328A0-B40E-4CDB-BD72-D0064424414A}.Release.Build.0 = Release|Win32
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug.ActiveCfg = Release|Win32
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug.Build.0 = Release|Win32
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release.ActiveCfg = Release|Win32
-		{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release.Build.0 = Release|Win32
-		{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug.ActiveCfg = Debug|Win32
-		{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug.Build.0 = Debug|Win32
-		{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release.ActiveCfg = Debug|Win32
-		{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release.Build.0 = Debug|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-	GlobalSection(DPCodeReviewSolutionGUID) = preSolution
-		DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
-	EndGlobalSection
-EndGlobal
--- a/projects/openttd.tgt	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2667 +0,0 @@
-40
-targetIdent
-0
-MProject
-1
-MComponent
-0
-2
-WString
-4
-OEXE
-3
-WString
-5
-op2en
-1
-0
-0
-4
-MCommand
-0
-5
-MCommand
-0
-6
-MItem
-11
-openttd.exe
-7
-WString
-4
-OEXE
-8
-WVList
-8
-9
-MRState
-10
-WString
-7
-OS2LINK
-11
-WString
-25
-?????No debug information
-1
-1
-12
-MRState
-13
-WString
-7
-OS2LINK
-14
-WString
-14
-?????Debug All
-1
-0
-15
-MVState
-16
-WString
-7
-OS2LINK
-17
-WString
-11
-?????Stack:
-1
-18
-WString
-7
-2097152
-0
-19
-MVState
-20
-WString
-7
-OS2LINK
-21
-WString
-18
-?????Libraries(,):
-1
-22
-WString
-24
-png.lib zlib.lib sdl.lib
-0
-23
-MCState
-24
-WString
-7
-OS2LINK
-25
-WString
-13
-?????Map file
-0
-0
-26
-MVState
-27
-WString
-7
-OS2LINK
-28
-WString
-11
-?????Stack:
-0
-29
-WString
-7
-4194304
-0
-30
-MVState
-31
-WString
-7
-OS2LINK
-32
-WString
-18
-?????Libraries(,):
-0
-33
-WString
-34
-mmpm2.lib png.lib zlib.lib sdl.lib
-0
-34
-MVState
-35
-WString
-7
-OS2LINK
-36
-WString
-17
-o????Description:
-0
-37
-WString
-7
-OpenTTD
-0
-38
-WVList
-3
-39
-ActionStates
-40
-WString
-5
-&Make
-41
-WVList
-0
-42
-ActionStates
-43
-WString
-4
-&Run
-44
-WVList
-0
-45
-ActionStates
-46
-WString
-7
-Sam&ple
-47
-WVList
-0
--1
-1
-1
-0
-48
-WPickList
-127
-49
-MItem
-3
-*.c
-50
-WString
-4
-COBJ
-51
-WVList
-14
-52
-MVState
-53
-WString
-3
-WCC
-54
-WString
-28
-?????Disable Warning message
-1
-55
-WString
-3
-202
-0
-56
-MVState
-57
-WString
-3
-WCC
-58
-WString
-23
-?????Macro definitions:
-1
-59
-WString
-50
-ENABLE_NETWORK=1 WITH_ZLIB=1 WITH_PNG=1 WITH_SDL=1
-0
-60
-MRState
-61
-WString
-3
-WCC
-62
-WString
-21
-?????4 byte alignment
-1
-1
-63
-MRState
-64
-WString
-3
-WCC
-65
-WString
-21
-?????No optimizations
-1
-0
-66
-MRState
-67
-WString
-3
-WCC
-68
-WString
-24
-?????Space optimizations
-1
-1
-69
-MRState
-70
-WString
-3
-WCC
-71
-WString
-29
-?????No debugging information
-1
-1
-72
-MRState
-73
-WString
-3
-WCC
-74
-WString
-24
-?????Full debugging info
-1
-0
-75
-MVState
-76
-WString
-3
-WCC
-77
-WString
-28
-?????Disable Warning message
-0
-78
-WString
-3
-202
-0
-79
-MVState
-80
-WString
-3
-WCC
-81
-WString
-23
-?????Macro definitions:
-0
-82
-WString
-61
-ENABLE_NETWORK=1 WITH_ZLIB=1 WITH_PNG=1 WITH_SDL=1 WITH_REV=1
-0
-83
-MCState
-84
-WString
-3
-WCC
-85
-WString
-31
-?????Force enums to be type int
-0
-1
-86
-MRState
-87
-WString
-3
-WCC
-88
-WString
-29
-?????No debugging information
-0
-1
-89
-MRState
-90
-WString
-3
-WCC
-91
-WString
-28
-?????Line number information
-0
-0
-92
-MRState
-93
-WString
-3
-WCC
-94
-WString
-39
-??2??Pentium Pro Register based calling
-0
-0
-95
-MRState
-96
-WString
-3
-WCC
-97
-WString
-36
-??2??Pentium Pro Stack based calling
-0
-1
-98
-WVList
-0
--1
-1
-1
-0
-99
-MItem
-7
-ai\ai.c
-100
-WString
-4
-COBJ
-101
-WVList
-0
-102
-WVList
-0
-49
-1
-1
-0
-103
-MItem
-20
-ai\default\default.c
-104
-WString
-4
-COBJ
-105
-WVList
-0
-106
-WVList
-0
-49
-1
-1
-0
-107
-MItem
-17
-ai\trolly\build.c
-108
-WString
-4
-COBJ
-109
-WVList
-0
-110
-WVList
-0
-49
-1
-1
-0
-111
-MItem
-22
-ai\trolly\pathfinder.c
-112
-WString
-4
-COBJ
-113
-WVList
-0
-114
-WVList
-0
-49
-1
-1
-0
-115
-MItem
-18
-ai\trolly\shared.c
-116
-WString
-4
-COBJ
-117
-WVList
-0
-118
-WVList
-0
-49
-1
-1
-0
-119
-MItem
-18
-ai\trolly\trolly.c
-120
-WString
-4
-COBJ
-121
-WVList
-0
-122
-WVList
-0
-49
-1
-1
-0
-123
-MItem
-14
-aircraft_cmd.c
-124
-WString
-4
-COBJ
-125
-WVList
-0
-126
-WVList
-0
-49
-1
-1
-0
-127
-MItem
-14
-aircraft_gui.c
-128
-WString
-4
-COBJ
-129
-WVList
-0
-130
-WVList
-0
-49
-1
-1
-0
-131
-MItem
-9
-airport.c
-132
-WString
-4
-COBJ
-133
-WVList
-0
-134
-WVList
-0
-49
-1
-1
-0
-135
-MItem
-13
-airport_gui.c
-136
-WString
-4
-COBJ
-137
-WVList
-0
-138
-WVList
-0
-49
-1
-1
-0
-139
-MItem
-8
-aystar.c
-140
-WString
-4
-COBJ
-141
-WVList
-0
-142
-WVList
-0
-49
-1
-1
-0
-143
-MItem
-12
-bridge_gui.c
-144
-WString
-4
-COBJ
-145
-WVList
-0
-146
-WVList
-0
-49
-1
-1
-0
-147
-MItem
-12
-bridge_map.c
-148
-WString
-4
-COBJ
-149
-WVList
-0
-150
-WVList
-0
-49
-1
-1
-0
-151
-MItem
-16
-callback_table.c
-152
-WString
-4
-COBJ
-153
-WVList
-0
-154
-WVList
-0
-49
-1
-1
-0
-155
-MItem
-11
-clear_cmd.c
-156
-WString
-4
-COBJ
-157
-WVList
-0
-158
-WVList
-0
-49
-1
-1
-0
-159
-MItem
-9
-command.c
-160
-WString
-4
-COBJ
-161
-WVList
-0
-162
-WVList
-0
-49
-1
-1
-0
-163
-MItem
-9
-console.c
-164
-WString
-4
-COBJ
-165
-WVList
-0
-166
-WVList
-0
-49
-1
-1
-0
-167
-MItem
-14
-console_cmds.c
-168
-WString
-4
-COBJ
-169
-WVList
-0
-170
-WVList
-0
-49
-1
-1
-0
-171
-MItem
-10
-currency.c
-172
-WString
-4
-COBJ
-173
-WVList
-0
-174
-WVList
-0
-49
-1
-1
-0
-175
-MItem
-7
-debug.c
-176
-WString
-4
-COBJ
-177
-WVList
-0
-178
-WVList
-0
-49
-1
-1
-0
-179
-MItem
-11
-dedicated.c
-180
-WString
-4
-COBJ
-181
-WVList
-0
-182
-WVList
-0
-49
-1
-1
-0
-183
-MItem
-7
-depot.c
-184
-WString
-4
-COBJ
-185
-WVList
-0
-186
-WVList
-0
-49
-1
-1
-0
-187
-MItem
-14
-disaster_cmd.c
-188
-WString
-4
-COBJ
-189
-WVList
-0
-190
-WVList
-0
-49
-1
-1
-0
-191
-MItem
-10
-dock_gui.c
-192
-WString
-4
-COBJ
-193
-WVList
-0
-194
-WVList
-0
-49
-1
-1
-0
-195
-MItem
-8
-driver.c
-196
-WString
-4
-COBJ
-197
-WVList
-0
-198
-WVList
-0
-49
-1
-1
-0
-199
-MItem
-12
-dummy_land.c
-200
-WString
-4
-COBJ
-201
-WVList
-0
-202
-WVList
-0
-49
-1
-1
-0
-203
-MItem
-9
-economy.c
-204
-WString
-4
-COBJ
-205
-WVList
-0
-206
-WVList
-0
-49
-1
-1
-0
-207
-MItem
-8
-elrail.c
-208
-WString
-4
-COBJ
-209
-WVList
-0
-210
-WVList
-0
-49
-1
-1
-0
-211
-MItem
-8
-engine.c
-212
-WString
-4
-COBJ
-213
-WVList
-0
-214
-WVList
-0
-49
-1
-1
-0
-215
-MItem
-12
-engine_gui.c
-216
-WString
-4
-COBJ
-217
-WVList
-0
-218
-WVList
-0
-49
-1
-1
-0
-219
-MItem
-8
-fileio.c
-220
-WString
-4
-COBJ
-221
-WVList
-0
-222
-WVList
-0
-49
-1
-1
-0
-223
-MItem
-5
-gfx.c
-224
-WString
-4
-COBJ
-225
-WVList
-0
-226
-WVList
-0
-49
-1
-1
-0
-227
-MItem
-9
-gfxinit.c
-228
-WString
-4
-COBJ
-229
-WVList
-0
-230
-WVList
-0
-49
-1
-1
-0
-231
-MItem
-11
-graph_gui.c
-232
-WString
-4
-COBJ
-233
-WVList
-0
-234
-WVList
-0
-49
-1
-1
-0
-235
-MItem
-14
-industry_cmd.c
-236
-WString
-4
-COBJ
-237
-WVList
-0
-238
-WVList
-0
-49
-1
-1
-0
-239
-MItem
-14
-industry_gui.c
-240
-WString
-4
-COBJ
-241
-WVList
-0
-242
-WVList
-0
-49
-1
-1
-0
-243
-MItem
-11
-intro_gui.c
-244
-WString
-4
-COBJ
-245
-WVList
-0
-246
-WVList
-0
-49
-1
-1
-0
-247
-MItem
-11
-landscape.c
-248
-WString
-4
-COBJ
-249
-WVList
-0
-250
-WVList
-0
-49
-1
-1
-0
-251
-MItem
-10
-main_gui.c
-252
-WString
-4
-COBJ
-253
-WVList
-0
-254
-WVList
-0
-49
-1
-1
-0
-255
-MItem
-5
-map.c
-256
-WString
-4
-COBJ
-257
-WVList
-0
-258
-WVList
-0
-49
-1
-1
-0
-259
-MItem
-5
-md5.c
-260
-WString
-4
-COBJ
-261
-WVList
-0
-262
-WVList
-0
-49
-1
-1
-0
-263
-MItem
-10
-mersenne.c
-264
-WString
-4
-COBJ
-265
-WVList
-0
-266
-WVList
-0
-49
-1
-1
-0
-267
-MItem
-9
-minilzo.c
-268
-WString
-4
-COBJ
-269
-WVList
-0
-270
-WVList
-0
-49
-1
-1
-0
-271
-MItem
-6
-misc.c
-272
-WString
-4
-COBJ
-273
-WVList
-0
-274
-WVList
-0
-49
-1
-1
-0
-275
-MItem
-10
-misc_cmd.c
-276
-WString
-4
-COBJ
-277
-WVList
-0
-278
-WVList
-0
-49
-1
-1
-0
-279
-MItem
-10
-misc_gui.c
-280
-WString
-4
-COBJ
-281
-WVList
-0
-282
-WVList
-0
-49
-1
-1
-0
-283
-MItem
-7
-mixer.c
-284
-WString
-4
-COBJ
-285
-WVList
-0
-286
-WVList
-0
-49
-1
-1
-0
-287
-MItem
-14
-music\null_m.c
-288
-WString
-4
-COBJ
-289
-WVList
-0
-290
-WVList
-0
-49
-1
-1
-0
-291
-MItem
-13
-music\os2_m.c
-292
-WString
-4
-COBJ
-293
-WVList
-0
-294
-WVList
-0
-49
-1
-1
-0
-295
-MItem
-11
-music_gui.c
-296
-WString
-4
-COBJ
-297
-WVList
-0
-298
-WVList
-0
-49
-1
-1
-0
-299
-MItem
-9
-namegen.c
-300
-WString
-4
-COBJ
-301
-WVList
-0
-302
-WVList
-0
-49
-1
-1
-0
-303
-MItem
-9
-network.c
-304
-WString
-4
-COBJ
-305
-WVList
-0
-306
-WVList
-0
-49
-1
-1
-0
-307
-MItem
-16
-network_client.c
-308
-WString
-4
-COBJ
-309
-WVList
-0
-310
-WVList
-0
-49
-1
-1
-0
-311
-MItem
-14
-network_data.c
-312
-WString
-4
-COBJ
-313
-WVList
-0
-314
-WVList
-0
-49
-1
-1
-0
-315
-MItem
-18
-network_gamelist.c
-316
-WString
-4
-COBJ
-317
-WVList
-0
-318
-WVList
-0
-49
-1
-1
-0
-319
-MItem
-13
-network_gui.c
-320
-WString
-4
-COBJ
-321
-WVList
-0
-322
-WVList
-0
-49
-1
-1
-0
-323
-MItem
-16
-network_server.c
-324
-WString
-4
-COBJ
-325
-WVList
-0
-326
-WVList
-0
-49
-1
-1
-0
-327
-MItem
-13
-network_udp.c
-328
-WString
-4
-COBJ
-329
-WVList
-0
-330
-WVList
-0
-49
-1
-1
-0
-331
-MItem
-8
-newgrf.c
-332
-WString
-4
-COBJ
-333
-WVList
-0
-334
-WVList
-0
-49
-1
-1
-0
-335
-MItem
-15
-newgrf_engine.c
-336
-WString
-4
-COBJ
-337
-WVList
-0
-338
-WVList
-0
-49
-1
-1
-0
-339
-MItem
-16
-newgrf_station.c
-340
-WString
-4
-COBJ
-341
-WVList
-0
-342
-WVList
-0
-49
-1
-1
-0
-343
-MItem
-10
-news_gui.c
-344
-WString
-4
-COBJ
-345
-WVList
-0
-346
-WVList
-0
-49
-1
-1
-0
-347
-MItem
-5
-npf.c
-348
-WString
-4
-COBJ
-349
-WVList
-0
-350
-WVList
-0
-49
-1
-1
-0
-351
-MItem
-11
-oldloader.c
-352
-WString
-4
-COBJ
-353
-WVList
-0
-354
-WVList
-0
-49
-1
-1
-0
-355
-MItem
-9
-openttd.c
-356
-WString
-4
-COBJ
-357
-WVList
-0
-358
-WVList
-0
-49
-1
-1
-0
-359
-MItem
-11
-order_cmd.c
-360
-WString
-4
-COBJ
-361
-WVList
-0
-362
-WVList
-0
-49
-1
-1
-0
-363
-MItem
-11
-order_gui.c
-364
-WString
-4
-COBJ
-365
-WVList
-0
-366
-WVList
-0
-49
-1
-1
-0
-367
-MItem
-5
-os2.c
-368
-WString
-4
-COBJ
-369
-WVList
-0
-370
-WVList
-0
-49
-1
-1
-0
-371
-MItem
-10
-os_timer.c
-372
-WString
-4
-COBJ
-373
-WVList
-0
-374
-WVList
-0
-49
-1
-1
-0
-375
-MItem
-10
-pathfind.c
-376
-WString
-4
-COBJ
-377
-WVList
-0
-378
-WVList
-0
-49
-1
-1
-0
-379
-MItem
-12
-player_gui.c
-380
-WString
-4
-COBJ
-381
-WVList
-0
-382
-WVList
-0
-49
-1
-1
-0
-383
-MItem
-9
-players.c
-384
-WString
-4
-COBJ
-385
-WVList
-0
-386
-WVList
-0
-49
-1
-1
-0
-387
-MItem
-6
-oldpool.c
-388
-WString
-4
-COBJ
-389
-WVList
-0
-390
-WVList
-0
-49
-1
-1
-0
-391
-MItem
-7
-queue.c
-392
-WString
-4
-COBJ
-393
-WVList
-0
-394
-WVList
-0
-49
-1
-1
-0
-395
-MItem
-6
-rail.c
-396
-WString
-4
-COBJ
-397
-WVList
-0
-398
-WVList
-0
-49
-1
-1
-0
-399
-MItem
-10
-rail_cmd.c
-400
-WString
-4
-COBJ
-401
-WVList
-0
-402
-WVList
-0
-49
-1
-1
-0
-403
-MItem
-10
-rail_gui.c
-404
-WString
-4
-COBJ
-405
-WVList
-0
-406
-WVList
-0
-49
-1
-1
-0
-407
-MItem
-5
-rev.c
-408
-WString
-4
-COBJ
-409
-WVList
-0
-410
-WVList
-1
-411
-ActionStates
-412
-WString
-5
-&Make
-413
-WVList
-0
-49
-1
-1
-0
-414
-MItem
-10
-road_cmd.c
-415
-WString
-4
-COBJ
-416
-WVList
-0
-417
-WVList
-0
-49
-1
-1
-0
-418
-MItem
-10
-road_gui.c
-419
-WString
-4
-COBJ
-420
-WVList
-0
-421
-WVList
-0
-49
-1
-1
-0
-422
-MItem
-10
-road_map.c
-423
-WString
-4
-COBJ
-424
-WVList
-0
-425
-WVList
-0
-49
-1
-1
-0
-426
-MItem
-13
-roadveh_cmd.c
-427
-WString
-4
-COBJ
-428
-WVList
-0
-429
-WVList
-0
-49
-1
-1
-0
-430
-MItem
-13
-roadveh_gui.c
-431
-WString
-4
-COBJ
-432
-WVList
-0
-433
-WVList
-0
-49
-1
-1
-0
-434
-MItem
-10
-saveload.c
-435
-WString
-4
-COBJ
-436
-WVList
-0
-437
-WVList
-0
-49
-1
-1
-0
-438
-MItem
-12
-screenshot.c
-439
-WString
-4
-COBJ
-440
-WVList
-0
-441
-WVList
-0
-49
-1
-1
-0
-442
-MItem
-5
-sdl.c
-443
-WString
-4
-COBJ
-444
-WVList
-0
-445
-WVList
-0
-49
-1
-1
-0
-446
-MItem
-10
-settings.c
-447
-WString
-4
-COBJ
-448
-WVList
-0
-449
-WVList
-0
-49
-1
-1
-0
-450
-MItem
-14
-settings_gui.c
-451
-WString
-4
-COBJ
-452
-WVList
-0
-453
-WVList
-0
-49
-1
-1
-0
-454
-MItem
-10
-ship_cmd.c
-455
-WString
-4
-COBJ
-456
-WVList
-0
-457
-WVList
-0
-49
-1
-1
-0
-458
-MItem
-10
-ship_gui.c
-459
-WString
-4
-COBJ
-460
-WVList
-0
-461
-WVList
-0
-49
-1
-1
-0
-462
-MItem
-7
-signs.c
-463
-WString
-4
-COBJ
-464
-WVList
-0
-465
-WVList
-0
-49
-1
-1
-0
-466
-MItem
-14
-smallmap_gui.c
-467
-WString
-4
-COBJ
-468
-WVList
-0
-469
-WVList
-0
-49
-1
-1
-0
-470
-MItem
-7
-sound.c
-471
-WString
-4
-COBJ
-472
-WVList
-0
-473
-WVList
-0
-49
-1
-1
-0
-474
-MItem
-14
-sound\null_s.c
-475
-WString
-4
-COBJ
-476
-WVList
-0
-477
-WVList
-0
-49
-1
-1
-0
-478
-MItem
-13
-sound\sdl_s.c
-479
-WString
-4
-COBJ
-480
-WVList
-0
-481
-WVList
-0
-49
-1
-1
-0
-482
-MItem
-8
-sprite.c
-483
-WString
-4
-COBJ
-484
-WVList
-0
-485
-WVList
-0
-49
-1
-1
-0
-486
-MItem
-13
-spritecache.c
-487
-WString
-4
-COBJ
-488
-WVList
-0
-489
-WVList
-0
-49
-1
-1
-0
-490
-MItem
-13
-station_cmd.c
-491
-WString
-4
-COBJ
-492
-WVList
-0
-493
-WVList
-0
-49
-1
-1
-0
-494
-MItem
-13
-station_gui.c
-495
-WString
-4
-COBJ
-496
-WVList
-0
-497
-WVList
-0
-49
-1
-1
-0
-498
-MItem
-13
-station_map.c
-499
-WString
-4
-COBJ
-500
-WVList
-0
-501
-WVList
-0
-49
-1
-1
-0
-502
-MItem
-8
-StdAfx.c
-503
-WString
-4
-COBJ
-504
-WVList
-0
-505
-WVList
-0
-49
-1
-1
-0
-506
-MItem
-8
-string.c
-507
-WString
-4
-COBJ
-508
-WVList
-0
-509
-WVList
-0
-49
-1
-1
-0
-510
-MItem
-9
-strings.c
-511
-WString
-4
-COBJ
-512
-WVList
-0
-513
-WVList
-0
-49
-1
-1
-0
-514
-MItem
-13
-subsidy_gui.c
-515
-WString
-4
-COBJ
-516
-WVList
-0
-517
-WVList
-0
-49
-1
-1
-0
-518
-MItem
-15
-terraform_gui.c
-519
-WString
-4
-COBJ
-520
-WVList
-0
-521
-WVList
-0
-49
-1
-1
-0
-522
-MItem
-9
-texteff.c
-523
-WString
-4
-COBJ
-524
-WVList
-0
-525
-WVList
-0
-49
-1
-1
-0
-526
-MItem
-8
-thread.c
-527
-WString
-4
-COBJ
-528
-WVList
-0
-529
-WVList
-0
-49
-1
-1
-0
-530
-MItem
-6
-tile.c
-531
-WString
-4
-COBJ
-532
-WVList
-0
-533
-WVList
-0
-49
-1
-1
-0
-534
-MItem
-10
-town_cmd.c
-535
-WString
-4
-COBJ
-536
-WVList
-0
-537
-WVList
-0
-49
-1
-1
-0
-538
-MItem
-10
-town_gui.c
-539
-WString
-4
-COBJ
-540
-WVList
-0
-541
-WVList
-0
-49
-1
-1
-0
-542
-MItem
-11
-train_cmd.c
-543
-WString
-4
-COBJ
-544
-WVList
-0
-545
-WVList
-0
-49
-1
-1
-0
-546
-MItem
-11
-train_gui.c
-547
-WString
-4
-COBJ
-548
-WVList
-0
-549
-WVList
-0
-49
-1
-1
-0
-550
-MItem
-10
-tree_cmd.c
-551
-WString
-4
-COBJ
-552
-WVList
-0
-553
-WVList
-0
-49
-1
-1
-0
-554
-MItem
-12
-tunnel_map.c
-555
-WString
-4
-COBJ
-556
-WVList
-0
-557
-WVList
-0
-49
-1
-1
-0
-558
-MItem
-18
-tunnelbridge_cmd.c
-559
-WString
-4
-COBJ
-560
-WVList
-0
-561
-WVList
-0
-49
-1
-1
-0
-562
-MItem
-15
-unmovable_cmd.c
-563
-WString
-4
-COBJ
-564
-WVList
-0
-565
-WVList
-0
-49
-1
-1
-0
-566
-MItem
-9
-vehicle.c
-567
-WString
-4
-COBJ
-568
-WVList
-0
-569
-WVList
-0
-49
-1
-1
-0
-570
-MItem
-13
-vehicle_gui.c
-571
-WString
-4
-COBJ
-572
-WVList
-0
-573
-WVList
-0
-49
-1
-1
-0
-574
-MItem
-19
-video\dedicated_v.c
-575
-WString
-4
-COBJ
-576
-WVList
-0
-577
-WVList
-0
-49
-1
-1
-0
-578
-MItem
-14
-video\null_v.c
-579
-WString
-4
-COBJ
-580
-WVList
-0
-581
-WVList
-0
-49
-1
-1
-0
-582
-MItem
-13
-video\sdl_v.c
-583
-WString
-4
-COBJ
-584
-WVList
-0
-585
-WVList
-0
-49
-1
-1
-0
-586
-MItem
-10
-viewport.c
-587
-WString
-4
-COBJ
-588
-WVList
-0
-589
-WVList
-0
-49
-1
-1
-0
-590
-MItem
-11
-water_cmd.c
-591
-WString
-4
-COBJ
-592
-WVList
-0
-593
-WVList
-0
-49
-1
-1
-0
-594
-MItem
-10
-waypoint.c
-595
-WString
-4
-COBJ
-596
-WVList
-0
-597
-WVList
-0
-49
-1
-1
-0
-598
-MItem
-8
-widget.c
-599
-WString
-4
-COBJ
-600
-WVList
-0
-601
-WVList
-0
-49
-1
-1
-0
-602
-MItem
-8
-window.c
-603
-WString
-4
-COBJ
-604
-WVList
-0
-605
-WVList
-0
-49
-1
-1
-0
--- a/projects/openttd.vcproj	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1757 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="openttd"
-	RootNamespace="openttd"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="1"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				GlobalOptimizations="TRUE"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="TRUE"
-				FavorSizeOrSpeed="2"
-				OmitFramePointers="TRUE"
-				OptimizeForProcessor="1"
-				AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
-				StringPooling="TRUE"
-				ExceptionHandling="TRUE"
-				RuntimeLibrary="0"
-				StructMemberAlignment="3"
-				BufferSecurityCheck="FALSE"
-				EnableFunctionLevelLinking="TRUE"
-				DefaultCharIsUnsigned="TRUE"
-				UsePrecompiledHeader="0"
-				PrecompiledHeaderThrough=""
-				PrecompiledHeaderFile=""
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)/"
-				ObjectFile="$(IntDir)/"
-				ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
-				BrowseInformation="1"
-				BrowseInformationFile="$(IntDir)/"
-				WarningLevel="3"
-				WarnAsError="TRUE"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="3"
-				CallingConvention="1"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				OptimizeReferences="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/openttd.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Determining version number"
-				CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1053"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
-			IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="1">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)/"
-				ObjectFile="$(IntDir)/"
-				ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
-				WarningLevel="3"
-				WarnAsError="TRUE"
-				SuppressStartupBanner="TRUE"
-				Detect64BitPortabilityProblems="FALSE"
-				DebugInformationFormat="4"
-				CallingConvention="1"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="unicows.lib winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="TRUE"
-				IgnoreDefaultLibraryNames="LIBCMT.lib"
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/openttd.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Determining version number"
-				CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1053"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="">
-			<File
-				RelativePath=".\..\src\airport.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\articulated_vehicles.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\autoreplace_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\aystar.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\bmp.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\callback_table.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\cargopacket.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\cargotype.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\command.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\console.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\console_cmds.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\core\bitmath_func.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\core\random_func.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\currency.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\date.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\debug.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\dedicated.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\depot.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\driver.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\economy.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\elrail.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\engine.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\fileio.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\fios.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\fontcache.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\genworld.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\gfx.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\gfxinit.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\heightmap.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\helpers.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\landscape.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\md5.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\minilzo.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\mixer.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\music.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\namegen.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_client.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_data.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_gamelist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_server.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_udp.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\npf.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\oldloader.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\oldpool.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\openttd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\os_timer.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ottdres.rc">
-			</File>
-			<File
-				RelativePath=".\..\src\pathfind.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\players.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\queue.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\rail.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\rev.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\road.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\saveload.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\screenshot.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\sdl.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\settings.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\signs.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\sound.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\spritecache.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\station.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\string.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\strings.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel_std.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\texteff.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tgp.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\thread.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tile_map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\vehicle.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\viewport.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\waypoint.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\widget.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\win32.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\window.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="">
-			<File
-				RelativePath=".\..\src\aircraft.h">
-			</File>
-			<File
-				RelativePath=".\..\src\airport.h">
-			</File>
-			<File
-				RelativePath=".\..\src\airport_movement.h">
-			</File>
-			<File
-				RelativePath=".\..\src\articulated_vehicles.h">
-			</File>
-			<File
-				RelativePath=".\..\src\autoslope.h">
-			</File>
-			<File
-				RelativePath=".\..\src\aystar.h">
-			</File>
-			<File
-				RelativePath=".\..\src\bmp.h">
-			</File>
-			<File
-				RelativePath=".\..\src\cargopacket.h">
-			</File>
-			<File
-				RelativePath=".\..\src\cargotype.h">
-			</File>
-			<File
-				RelativePath=".\..\src\command.h">
-			</File>
-			<File
-				RelativePath=".\..\src\console.h">
-			</File>
-			<File
-				RelativePath=".\..\src\core\bitmath_func.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\core\math_func.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\core\random_func.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\currency.h">
-			</File>
-			<File
-				RelativePath=".\..\src\date.h">
-			</File>
-			<File
-				RelativePath=".\..\src\debug.h">
-			</File>
-			<File
-				RelativePath=".\..\src\video\dedicated_v.h">
-			</File>
-			<File
-				RelativePath=".\..\src\depot.h">
-			</File>
-			<File
-				RelativePath=".\..\src\direction.h">
-			</File>
-			<File
-				RelativePath=".\..\src\music\dmusic.h">
-			</File>
-			<File
-				RelativePath=".\..\src\driver.h">
-			</File>
-			<File
-				RelativePath=".\..\src\economy.h">
-			</File>
-			<File
-				RelativePath=".\..\src\engine.h">
-			</File>
-			<File
-				RelativePath=".\..\src\fileio.h">
-			</File>
-			<File
-				RelativePath=".\..\src\fios.h">
-			</File>
-			<File
-				RelativePath=".\..\src\fontcache.h">
-			</File>
-			<File
-				RelativePath=".\..\src\functions.h">
-			</File>
-			<File
-				RelativePath=".\..\src\genworld.h">
-			</File>
-			<File
-				RelativePath=".\..\src\gfx.h">
-			</File>
-			<File
-				RelativePath=".\..\src\gfxinit.h">
-			</File>
-			<File
-				RelativePath=".\..\src\group.h">
-			</File>
-			<File
-				RelativePath=".\..\src\gui.h">
-			</File>
-			<File
-				RelativePath=".\..\src\heightmap.h">
-			</File>
-			<File
-				RelativePath=".\..\src\industry.h">
-			</File>
-			<File
-				RelativePath=".\..\src\landscape.h">
-			</File>
-			<File
-				RelativePath=".\..\src\livery.h">
-			</File>
-			<File
-				RelativePath=".\..\src\map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\md5.h">
-			</File>
-			<File
-				RelativePath=".\..\src\mixer.h">
-			</File>
-			<File
-				RelativePath=".\..\src\music.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_client.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_data.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_gamelist.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_gui.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_server.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_udp.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_callbacks.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_canal.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_cargo.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_commons.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_config.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_engine.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_house.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_industries.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_industrytiles.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_sound.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_spritegroup.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_station.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_storage.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_text.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_town.h">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_townname.h">
-			</File>
-			<File
-				RelativePath=".\..\src\news.h">
-			</File>
-			<File
-				RelativePath=".\..\src\npf.h">
-			</File>
-			<File
-				RelativePath=".\..\src\music\null_m.h">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\null_s.h">
-			</File>
-			<File
-				RelativePath=".\..\src\video\null_v.h">
-			</File>
-			<File
-				RelativePath=".\..\src\oldpool.h">
-			</File>
-			<File
-				RelativePath=".\..\src\openttd.h">
-			</File>
-			<File
-				RelativePath=".\..\src\pathfind.h">
-			</File>
-			<File
-				RelativePath=".\..\src\player.h">
-			</File>
-			<File
-				RelativePath=".\..\src\player_face.h">
-			</File>
-			<File
-				RelativePath=".\..\src\queue.h">
-			</File>
-			<File
-				RelativePath=".\..\src\rail.h">
-			</File>
-			<File
-				RelativePath=".\..\src\road_cmd.h">
-			</File>
-			<File
-				RelativePath=".\..\src\saveload.h">
-			</File>
-			<File
-				RelativePath=".\..\src\screenshot.h">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\sdl_s.h">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel_class.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel_helper.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\squirrel_std.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\video\sdl_v.h">
-			</File>
-			<File
-				RelativePath=".\..\src\settings.h">
-			</File>
-			<File
-				RelativePath=".\..\src\signs.h">
-			</File>
-			<File
-				RelativePath=".\..\src\slope.h">
-			</File>
-			<File
-				RelativePath=".\..\src\sound.h">
-			</File>
-			<File
-				RelativePath=".\..\src\sprite.h">
-			</File>
-			<File
-				RelativePath=".\..\src\spritecache.h">
-			</File>
-			<File
-				RelativePath=".\..\src\station.h">
-			</File>
-			<File
-				RelativePath=".\..\src\station_gui.h">
-			</File>
-			<File
-				RelativePath=".\..\src\stdafx.h">
-			</File>
-			<File
-				RelativePath=".\..\src\string.h">
-			</File>
-			<File
-				RelativePath=".\..\src\texteff.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tgp.h">
-			</File>
-			<File
-				RelativePath=".\..\src\thread.h">
-			</File>
-			<File
-				RelativePath=".\..\src\tile.h">
-			</File>
-			<File
-				RelativePath=".\..\src\timetable.h">
-			</File>
-			<File
-				RelativePath=".\..\src\town.h">
-			</File>
-			<File
-				RelativePath=".\..\src\train.h">
-			</File>
-			<File
-				RelativePath=".\..\src\transparency.h">
-			</File>
-			<File
-				RelativePath=".\..\src\transparency_gui.h">
-			</File>
-			<File
-				RelativePath=".\..\src\variables.h">
-			</File>
-			<File
-				RelativePath=".\..\src\vehicle.h">
-			</File>
-			<File
-				RelativePath=".\..\src\vehicle_gui.h">
-			</File>
-			<File
-				RelativePath=".\..\src\viewport.h">
-			</File>
-			<File
-				RelativePath=".\..\src\waypoint.h">
-			</File>
-			<File
-				RelativePath=".\..\src\music\win32_m.h">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\win32_s.h">
-			</File>
-			<File
-				RelativePath=".\..\src\video\win32_v.h">
-			</File>
-			<File
-				RelativePath=".\..\src\window.h">
-			</File>
-			<File
-				RelativePath=".\..\src\zoom.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="GUI Source Code"
-			Filter="">
-			<File
-				RelativePath=".\..\src\aircraft_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\airport_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\autoreplace_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\bridge_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\build_vehicle_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\depot_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\dock_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\engine_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\genworld_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\graph_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\group_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\industry_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\intro_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\main_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\music_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\network_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\news_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\order_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\player_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\rail_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\road_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\roadveh_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\settings_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ship_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\signs_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\smallmap_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\station_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\subsidy_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\terraform_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\timetable_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\town_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\train_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\transparency_gui.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\vehicle_gui.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Landscape"
-			Filter="">
-			<File
-				RelativePath=".\..\src\aircraft_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\clear_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\disaster_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\dummy_land.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\group_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\industry_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\order_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\rail_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\road_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\roadveh_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ship_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\station_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\terraform_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\timetable_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\town_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\train_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tree_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tunnelbridge_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\unmovable_cmd.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\water_cmd.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Tables"
-			Filter="">
-			<File
-				RelativePath=".\..\src\table\ai_rail.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\animcursors.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\autorail.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\build_industry.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\cargo_const.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\clear_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\elrail_data.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\engines.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\genland.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\industry_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\landscape_sprite.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\namegen.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\palettes.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\road_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\roadveh.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\sprites.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\station_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\..\objs\langs\table\strings.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\town_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\track_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\train_cmd.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\tree_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\unmovable_land.h">
-			</File>
-			<File
-				RelativePath=".\..\src\table\water_land.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Squirrel"
-			Filter="">
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqapi.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqbaselib.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqclass.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqcompiler.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqdebug.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqfuncstate.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqlexer.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqmem.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqobject.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstate.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqtable.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqvm.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdaux.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdblob.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdio.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdmath.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdrex.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstream.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstring.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdsystem.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="AI Core"
-			Filter="">
-			<File
-				RelativePath=".\..\src\ai\ai.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai.h">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai_factory.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai_squirrel.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai_squirrel.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai_threads.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\ai_threads.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="AI C++"
-			Filter="">
-			<File
-				RelativePath=".\..\src\ai\NoAI\NoAI.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\NoAI\NoAI.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="AI API"
-			Filter="">
-			<File
-				RelativePath=".\..\src\ai\api\ai_abstractlist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_accounting.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_airport.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_base.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_cargo.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_company.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_controller.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_engine.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_enginelist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_enginelist_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_event.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_event_types.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_execmode.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industry.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industrylist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industrylist_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_list.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_list_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_map.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_marine.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_object.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_order.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_pathfinder.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_pathfinder_stupid.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_road.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_settings.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_sign.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_station.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_stationlist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_stationlist_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_testmode.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tile.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tilelist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tilelist_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_town.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_townlist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_townlist_valuator.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_transactionmode.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehicle.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehiclelist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="AI API Implementation"
-			Filter="">
-			<File
-				RelativePath=".\..\src\ai\api\ai_abstractlist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_accounting.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_airport.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_base.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_cargo.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_company.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_controller.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_engine.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_enginelist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_enginelist_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_event.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_event_types.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_execmode.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industry.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industrylist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_industrylist_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_list.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_list_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_marine.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_object.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_order.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_pathfinder_stupid.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_road.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_settings.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_sign.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_station.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_stationlist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_stationlist_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_testmode.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tile.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tilelist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_tilelist_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_town.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_townlist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_townlist_valuator.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_transactionmode.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehicle.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehiclelist.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Blitters"
-			Filter="">
-			<File
-				RelativePath=".\..\src\blitter\32bpp_anim.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_anim.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_base.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_base.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_optimized.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_optimized.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_simple.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\32bpp_simple.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_base.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_base.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_debug.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_debug.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_optimized.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_optimized.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_simple.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\8bpp_simple.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\base.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\factory.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\null.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\blitter\null.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Drivers"
-			Filter="">
-			<File
-				RelativePath=".\..\src\music\music_driver.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\sound_driver.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\video\video_driver.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Sprite loaders"
-			Filter="">
-			<File
-				RelativePath=".\..\src\spriteloader\grf.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\spriteloader\grf.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\spriteloader\png.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\spriteloader\png.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\spriteloader\spriteloader.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="NewGRF"
-			Filter="">
-			<File
-				RelativePath=".\..\src\newgrf.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_canal.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_cargo.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_commons.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_config.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_engine.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_house.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_industries.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_industrytiles.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_sound.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_spritegroup.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_station.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_storage.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_text.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_town.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\newgrf_townname.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Map Accessors"
-			Filter="">
-			<File
-				RelativePath=".\..\src\bridge_map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\bridge_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\clear_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\industry_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\rail_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\road_map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\road_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\station_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\town_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\tree_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\tunnel_map.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\tunnel_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\tunnelbridge_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\unmovable_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\void_map.h">
-			</File>
-			<File
-				RelativePath=".\..\src\water_map.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Misc"
-			Filter="">
-			<File
-				RelativePath=".\..\src\misc\array.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\autocopyptr.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\autoptr.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\binaryheap.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\blob.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\countedobj.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\countedptr.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\crc32.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\dbg_helpers.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\dbg_helpers.h">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\fixedsizearray.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\hashtable.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\str.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\misc\strapi.hpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Network Core"
-			Filter="">
-			<File
-				RelativePath=".\..\src\network\core\config.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\core.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\core.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\game.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\os_abstraction.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\packet.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\packet.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\tcp.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\tcp.h">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\udp.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\network\core\udp.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="YAPF"
-			Filter="">
-			<File
-				RelativePath=".\..\src\yapf\follow_track.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\follow_track.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\nodelist.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\track_dir.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf.h">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_base.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_common.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_common.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_costbase.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_costcache.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_costrail.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_destrail.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_node.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_node_rail.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_node_road.hpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_rail.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_road.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_settings.h">
-			</File>
-			<File
-				RelativePath=".\..\src\yapf\yapf_ship.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Video"
-			Filter="">
-			<File
-				RelativePath=".\..\src\video\dedicated_v.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\video\null_v.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\video\sdl_v.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\video\win32_v.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Music"
-			Filter="">
-			<File
-				RelativePath=".\..\src\music\dmusic.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\music\null_m.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\music\win32_m.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Sound"
-			Filter="">
-			<File
-				RelativePath=".\..\src\sound\null_s.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\sdl_s.cpp">
-			</File>
-			<File
-				RelativePath=".\..\src\sound\win32_s.cpp">
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\..\media\mainicon.ico">
-		</File>
-		<File
-			RelativePath=".\..\media\openttd.ico">
-		</File>
-		<File
-			RelativePath=".\..\readme.txt">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/projects/openttd.vcproj.in	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="openttd"
-	RootNamespace="openttd"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="1"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				GlobalOptimizations="TRUE"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="TRUE"
-				FavorSizeOrSpeed="2"
-				OmitFramePointers="TRUE"
-				OptimizeForProcessor="1"
-				AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
-				StringPooling="TRUE"
-				ExceptionHandling="TRUE"
-				RuntimeLibrary="0"
-				StructMemberAlignment="3"
-				BufferSecurityCheck="FALSE"
-				EnableFunctionLevelLinking="TRUE"
-				DefaultCharIsUnsigned="TRUE"
-				UsePrecompiledHeader="0"
-				PrecompiledHeaderThrough=""
-				PrecompiledHeaderFile=""
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)/"
-				ObjectFile="$(IntDir)/"
-				ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
-				BrowseInformation="1"
-				BrowseInformationFile="$(IntDir)/"
-				WarningLevel="3"
-				WarnAsError="TRUE"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="3"
-				CallingConvention="1"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				OptimizeReferences="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/openttd.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Determining version number"
-				CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1053"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
-			IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="1">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)/"
-				ObjectFile="$(IntDir)/"
-				ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
-				WarningLevel="3"
-				WarnAsError="TRUE"
-				SuppressStartupBanner="TRUE"
-				Detect64BitPortabilityProblems="FALSE"
-				DebugInformationFormat="4"
-				CallingConvention="1"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="unicows.lib winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="TRUE"
-				IgnoreDefaultLibraryNames="LIBCMT.lib"
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/openttd.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"
-				Description="Determining version number"
-				CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1053"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-!!FILES!!
-		<File
-			RelativePath=".\..\media\mainicon.ico">
-		</File>
-		<File
-			RelativePath=".\..\media\openttd.ico">
-		</File>
-		<File
-			RelativePath=".\..\readme.txt">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/projects/openttd_vs80.vcproj	Wed Jan 09 18:11:12 2008 +0000
+++ b/projects/openttd_vs80.vcproj	Sun Feb 03 20:17:54 2008 +0000
@@ -692,6 +692,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signal.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\signs.cpp"
 				>
 			</File>
@@ -756,6 +760,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\widgets\dropdown.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\win32.cpp"
 				>
 			</File>
@@ -1120,6 +1128,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signal_func.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\slope.h"
 				>
 			</File>
@@ -1188,6 +1200,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\tunnelbridge.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\variables.h"
 				>
 			</File>
@@ -1224,6 +1240,18 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\widgets\dropdown.h"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\widgets\dropdown_type.h"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\widgets\dropdown_func.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\zoom.hpp"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj	Wed Jan 09 18:11:12 2008 +0000
+++ b/projects/openttd_vs90.vcproj	Sun Feb 03 20:17:54 2008 +0000
@@ -689,6 +689,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signal.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\signs.cpp"
 				>
 			</File>
@@ -745,6 +749,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\widgets\dropdown.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\win32.cpp"
 				>
 			</File>
@@ -1093,6 +1101,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signal_func.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\slope.h"
 				>
 			</File>
@@ -1161,6 +1173,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\tunnelbridge.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\variables.h"
 				>
 			</File>
@@ -1197,6 +1213,18 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\widgets\dropdown.h"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\widgets\dropdown_type.h"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\widgets\dropdown_func.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\zoom.hpp"
 				>
 			</File>
--- a/projects/strgen.vcproj	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="strgen"
-	RootNamespace="strgen"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\objs\strgen\"
-			IntermediateDirectory="..\objs\strgen\"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="1"
-				GlobalOptimizations="TRUE"
-				FavorSizeOrSpeed="2"
-				PreprocessorDefinitions="STRGEN;WIN32;NDEBUG;_CONSOLE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="5"
-				PrecompiledHeaderFile=""
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)"
-				ObjectFile="$(IntDir)"
-				ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
-				WarningLevel="3"
-				WarnAsError="TRUE"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(IntDir)\strgen.exe"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(IntDir)\strgen.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/strgen.tlb"
-				HeaderFileName=""/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1053"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-			<File
-				RelativePath="..\src\strgen\strgen.cpp">
-			</File>
-			<File
-				RelativePath="..\src\string.cpp">
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\src\macros.h">
-		</File>
-		<File
-			RelativePath="..\src\stdafx.h">
-		</File>
-		<File
-			RelativePath="..\src\string.h">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/readme.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/readme.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 OpenTTD README
-Last updated:    2007-12-09
-Release version: 0.6.0-beta2
+Last updated:    2008-01-16
+Release version: 0.6.0-beta3
 ------------------------------------------------------------------------
 
 
--- a/source.list	Wed Jan 09 18:11:12 2008 +0000
+++ b/source.list	Sun Feb 03 20:17:54 2008 +0000
@@ -66,6 +66,7 @@
 	sdl.cpp
 #end
 settings.cpp
+signal.cpp
 signs.cpp
 sound.cpp
 spritecache.cpp
@@ -94,6 +95,7 @@
 viewport.cpp
 waypoint.cpp
 widget.cpp
+widgets/dropdown.cpp
 #if WIN32
 	win32.cpp
 #end
@@ -188,6 +190,7 @@
 video/sdl_v.h
 settings.h
 signs.h
+signal_func.h
 slope.h
 sound.h
 sprite.h
@@ -205,6 +208,7 @@
 train.h
 transparency.h
 transparency_gui.h
+tunnelbridge.h
 variables.h
 vehicle.h
 vehicle_gui.h
@@ -214,6 +218,9 @@
 sound/win32_s.h
 video/win32_v.h
 window.h
+widgets/dropdown.h
+widgets/dropdown_type.h
+widgets/dropdown_func.h
 zoom.hpp
 
 # GUI Source Code
--- a/src/ai/ai.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/ai.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,13 @@
 
 #include "../stdafx.h"
 #include "../openttd.h"
-#include "../player.h"
 #include "../variables.h"
 #include "../command_func.h"
 #include "../network/network.h"
 #include "../core/alloc_func.hpp"
+#include "../settings_type.h"
+#include "../player_base.h"
+#include "../player_func.h"
 #include "../debug.h"
 
 #ifndef NO_THREADS
@@ -17,6 +19,7 @@
 #include "ai_factory.hpp"
 #include "api/ai_base.hpp"
 #include "api/ai_controller.hpp"
+#include "../signal_func.h"
 
 static AIController *_ai_player[MAX_PLAYERS];
 static uint _ai_frame_counter;
--- a/src/ai/ai_threads.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/ai_threads.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,10 +5,10 @@
 #include "../stdafx.h"
 #include "../openttd.h"
 #include "../variables.h"
-#include "../player.h"
 #include "../debug.h"
 #include "../thread.h"
 #include "../vehicle_func.h"
+#include "../player_func.h"
 #include "ai.h"
 #include "ai_threads.h"
 #include "api/ai_controller.hpp"
--- a/src/ai/ai_threads.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/ai_threads.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,8 @@
 #ifndef AI_THREADS_H
 #define AI_THREADS_H
 
+#include "../player_type.h"
+
 class AIController;
 
 void AI_StartPlayer(PlayerID player, AIController *controller);
--- a/src/ai/api/ai_airport.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_airport.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -3,6 +3,8 @@
 #include "ai_airport.hpp"
 #include "../../variables.h"
 #include "../../station_map.h"
+#include "../../player_func.h"
+#include "../../settings_type.h"
 
 
 /* static */ bool AIAirport::IsHangarTile(TileIndex tile)
--- a/src/ai/api/ai_cargo.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_cargo.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,9 +4,9 @@
 
 #include "ai_cargo.hpp"
 #include "../../cargotype.h"
-#include "../../player.h" // For economy.h
 #include "../../economy_func.h"
 #include "../../core/alloc_func.hpp"
+#include "../../core/bitmath_func.hpp"
 
 /* static */ bool AICargo::IsValidCargo(CargoID cargo_type)
 {
--- a/src/ai/api/ai_company.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_company.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,7 +4,8 @@
 
 #include "ai_company.hpp"
 #include "../../command_func.h"
-#include "../../player.h"
+#include "../../player_func.h"
+#include "../../player_base.h"
 #include "../../economy_func.h"
 #include "../../strings_func.h"
 #include "../../variables.h"
@@ -76,7 +77,7 @@
 	company = this->ResolveCompanyIndex(company);
 	if (company == INVALID_COMPANY) return 0;
 
-	return GetPlayer((PlayerID)company)->player_money;
+	return ClampToI32(GetPlayer((PlayerID)company)->player_money);
 }
 
 int32 AICompany::GetLoanAmount()
--- a/src/ai/api/ai_controller.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_controller.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,7 @@
 #include "ai_controller.hpp"
 #include "../../stdafx.h"
 #include "../../openttd.h"
-#include "../../player.h"
+#include "../../player_func.h"
 #include "../ai_threads.h"
 
 void AIController::Sleep(uint ticks)
--- a/src/ai/api/ai_engine.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_engine.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,10 +5,12 @@
 #include "ai_engine.hpp"
 #include "ai_cargo.hpp"
 #include "../../engine.h"
-#include "../../player.h"
+#include "../../player_func.h"
 #include "../../strings_func.h"
 #include "../../core/alloc_func.hpp"
 #include "../../economy_func.h"
+#include "../../core/bitmath_func.hpp"
+#include "table/strings.h"
 
 /* static */ bool AIEngine::IsValidEngine(EngineID engine_id)
 {
@@ -22,7 +24,8 @@
 	static const int len = 64;
 	char *engine_name = MallocT<char>(len);
 
-	GetString(engine_name, _engine_name_strings[engine_id], &engine_name[len - 1]);
+	::SetDParam(0, engine_id);
+	::GetString(engine_name, STR_ENGINE_NAME, &engine_name[len - 1]);
 	return engine_name;
 }
 
--- a/src/ai/api/ai_object.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_object.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,7 @@
 #include "ai_object.hpp"
 #include "../../command_func.h"
 #include "../../network/network.h"
-#include "../../player.h"
-#include "table/strings.h" // for signs.h
+#include "../../player_func.h"
 #include "../../signs.h" // for _new_sign_id
 #include "../../vehicle_func.h"
 #include "../ai.h"
--- a/src/ai/api/ai_sign.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_sign.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -32,7 +32,8 @@
 	static const int len = 64;
 	char *sign_name = MallocT<char>(len);
 
-	::GetString(sign_name, ::GetSign(sign_id)->str, &sign_name[len - 1]);
+	::SetDParam(0, sign_id);
+	::GetString(sign_name, STR_SIGN_NAME, &sign_name[len - 1]);
 
 	return sign_name;
 }
--- a/src/ai/api/ai_station.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_station.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,6 +10,8 @@
 #include "../../variables.h"
 #include "../../strings_func.h"
 #include "../../core/alloc_func.hpp"
+#include "../../player_func.h"
+#include "../../settings_type.h"
 #include "table/strings.h"
 
 /* static */ bool AIStation::IsValidStation(StationID station_id)
--- a/src/ai/api/ai_stationlist.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_stationlist.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -2,7 +2,7 @@
 
 #include "ai_stationlist.hpp"
 #include "ai_vehicle.hpp"
-#include "../../player.h"
+#include "../../player_func.h"
 #include "../../station.h"
 #include "../../order.h"
 #include "../../vehicle_base.h"
--- a/src/ai/api/ai_tile.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_tile.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,7 @@
 #include "../../variables.h"
 #include "../../station.h"
 #include "../../command_type.h"
+#include "../../settings_type.h"
 
 bool AITile::IsBuildable(TileIndex tile)
 {
--- a/src/ai/api/ai_vehicle.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_vehicle.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,7 +9,7 @@
 #include "../../command_func.h"
 #include "../../depot.h"
 #include "../../engine.h"
-#include "../../player.h"
+#include "../../player_func.h"
 #include "../../aircraft.h"
 #include "../../strings_func.h"
 #include "../../core/alloc_func.hpp"
@@ -159,8 +159,8 @@
 	static const int len = 64;
 	char *vehicle_name = MallocT<char>(len);
 
-	SetDParam(0, ::GetVehicle(vehicle_id)->unitnumber);
-	GetString(vehicle_name, ::GetVehicle(vehicle_id)->string_id, &vehicle_name[len - 1]);
+	::SetDParam(0, vehicle_id);
+	::GetString(vehicle_name, STR_VEHICLE_NAME, &vehicle_name[len - 1]);
 	return vehicle_name;
 }
 
--- a/src/ai/api/ai_vehiclelist.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ai/api/ai_vehiclelist.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,5 +1,5 @@
 #include "ai_vehiclelist.hpp"
-#include "../../player.h"
+#include "../../player_func.h"
 #include "../../station.h"
 #include "../../vehicle_base.h"
 
--- a/src/aircraft.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/aircraft.h	Sun Feb 03 20:17:54 2008 +0000
@@ -124,6 +124,7 @@
 	Money GetRunningCost() const { return AircraftVehInfo(this->engine_type)->running_cost * _price.aircraft_running; }
 	bool IsInDepot() const { return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile); }
 	void Tick();
+	void OnNewDay();
 };
 
 #endif /* AIRCRAFT_H */
--- a/src/aircraft_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/aircraft_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,17 +9,14 @@
 #include "debug.h"
 #include "landscape.h"
 #include "station_map.h"
-#include "table/strings.h"
 #include "timetable.h"
 #include "depot.h"
 #include "engine.h"
 #include "station.h"
 #include "news.h"
-#include "player.h"
 #include "aircraft.h"
 #include "airport.h"
 #include "vehicle_gui.h"
-#include "table/sprites.h"
 #include "newgrf_engine.h"
 #include "newgrf_callbacks.h"
 #include "newgrf_text.h"
@@ -38,6 +35,11 @@
 #include "autoreplace_gui.h"
 #include "gfx_func.h"
 #include "ai/ai.h"
+#include "player_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 void Aircraft::UpdateDeltaXY(Direction direction)
 {
@@ -336,7 +338,7 @@
 
 		v->cargo_subtype = 0;
 
-		v->string_id = STR_SV_AIRCRAFT_NAME;
+		v->name = NULL;
 //		v->next_order_param = v->next_order = 0;
 
 //		v->load_unload_time_rem = 0;
@@ -536,7 +538,7 @@
 
 		v->vehstatus ^= VS_STOPPED;
 		v->cur_speed = 0;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClasses(WC_AIRCRAFT_LIST);
 	}
@@ -568,24 +570,24 @@
 	if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner) || v->IsInDepot()) return CMD_ERROR;
 
 	if (v->current_order.type == OT_GOTO_DEPOT && !(p2 & DEPOT_LOCATE_HANGAR)) {
-		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
+		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OF_HALT_IN_DEPOT)) {
 			/* We called with a different DEPOT_SERVICE setting.
 			 * Now we change the setting to apply the new one and let the vehicle head for the same hangar.
 			 * Note: the if is (true for requesting service == true for ordered to stop in hangar) */
 			if (flags & DC_EXEC) {
-				ClrBit(v->current_order.flags, OFB_PART_OF_ORDERS);
-				ToggleBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+				ClrBit(v->current_order.flags, OF_PART_OF_ORDERS);
+				ToggleBit(v->current_order.flags, OF_HALT_IN_DEPOT);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			}
 			return CommandCost();
 		}
 
 		if (p2 & DEPOT_DONT_CANCEL) return CMD_ERROR; // Requested no cancelation of hangar orders
 		if (flags & DC_EXEC) {
-			if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
+			if (v->current_order.flags & OFB_UNLOAD) v->cur_order_index++;
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 	} else {
 		bool next_airport_has_hangar = true;
@@ -605,11 +607,11 @@
 			if (v->current_order.type == OT_LOADING) v->LeaveStation();
 
 			v->current_order.type = OT_GOTO_DEPOT;
-			v->current_order.flags = OF_NON_STOP;
-			if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
+			v->current_order.flags = OFB_NON_STOP;
+			if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OF_HALT_IN_DEPOT);
 			v->current_order.refit_cargo = CT_INVALID;
 			v->current_order.dest = next_airport_index;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			if (v->u.air.state == FLYING && !next_airport_has_hangar) {
 				/* The aircraft is now heading for a different hangar than the next in the orders */
 				AircraftNextAirportPos_and_Order(v);
@@ -713,36 +715,36 @@
 //		printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
 //		v->u.air.targetairport = st->index;
 		v->current_order.type = OT_GOTO_DEPOT;
-		v->current_order.flags = OF_NON_STOP;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		v->current_order.flags = OFB_NON_STOP;
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	} else if (v->current_order.type == OT_GOTO_DEPOT) {
 		v->current_order.type = OT_DUMMY;
 		v->current_order.flags = 0;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 }
 
-void OnNewDay_Aircraft(Vehicle *v)
+void Aircraft::OnNewDay()
 {
-	if (!IsNormalAircraft(v)) return;
-
-	if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
-
-	CheckOrders(v);
+	if (!IsNormalAircraft(this)) return;
 
-	CheckVehicleBreakdown(v);
-	AgeVehicle(v);
-	CheckIfAircraftNeedsService(v);
-
-	if (v->vehstatus & VS_STOPPED) return;
+	if ((++this->day_counter & 7) == 0) DecreaseVehicleValue(this);
 
-	CommandCost cost = CommandCost(EXPENSES_AIRCRAFT_RUN, GetVehicleProperty(v, 0x0E, AircraftVehInfo(v->engine_type)->running_cost) * _price.aircraft_running / 364);
+	CheckOrders(this);
 
-	v->profit_this_year -= cost.GetCost() >> 8;
+	CheckVehicleBreakdown(this);
+	AgeVehicle(this);
+	CheckIfAircraftNeedsService(this);
 
-	SubtractMoneyFromPlayerFract(v->owner, cost);
+	if (this->vehstatus & VS_STOPPED) return;
 
-	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+	CommandCost cost = CommandCost(EXPENSES_AIRCRAFT_RUN, GetVehicleProperty(this, 0x0E, AircraftVehInfo(this->engine_type)->running_cost) * _price.aircraft_running / 364);
+
+	this->profit_this_year -= cost.GetCost() >> 8;
+
+	SubtractMoneyFromPlayerFract(this->owner, cost);
+
+	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindowClasses(WC_AIRCRAFT_LIST);
 }
 
@@ -940,7 +942,7 @@
 	if (spd != v->cur_speed) {
 		v->cur_speed = spd;
 		if (_patches.vehicle_speed)
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 
 	if (!(v->direction & 1)) spd = spd * 3 / 4;
@@ -1287,8 +1289,7 @@
 		CLRBITS(st->airport_flags, RUNWAY_IN_OUT_block); // commuter airport
 		CLRBITS(st->airport_flags, RUNWAY_IN2_block);    // intercontinental
 
-		BeginVehicleMove(v);
-		EndVehicleMove(v);
+		MarkSingleVehicleDirty(v);
 
 		DoDeleteAircraft(v);
 	}
@@ -1346,8 +1347,8 @@
 {
 	switch (v->current_order.type) {
 		case OT_GOTO_DEPOT:
-			if (!(v->current_order.flags & OF_PART_OF_ORDERS)) return;
-			if (v->current_order.flags & OF_SERVICE_IF_NEEDED &&
+			if (!(v->current_order.flags & OFB_PART_OF_ORDERS)) return;
+			if (v->current_order.flags & OFB_SERVICE_IF_NEEDED &&
 					!VehicleNeedsService(v)) {
 				UpdateVehicleTimetable(v, true);
 				v->cur_order_index++;
@@ -1416,7 +1417,7 @@
 {
 		this->cur_image = this->GetImage(this->direction);
 		if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this);
-		MarkAllViewportsDirty(this->left_coord, this->top_coord, this->right_coord + 1, this->bottom_coord + 1);
+		MarkSingleVehicleDirty(this);
 }
 
 static void CrashAirplane(Vehicle *v)
@@ -1550,6 +1551,45 @@
 	InvalidateWindowClasses(WC_AIRCRAFT_LIST);
 }
 
+/** Checks if an aircraft should head towards a hangar because it needs replacement
+ * @param *v the vehicle to test
+ * @return true if the aircraft should head towards a hangar
+ */
+static inline bool CheckSendAircraftToHangarForReplacement(const Vehicle *v)
+{
+	EngineID new_engine;
+	Player *p = GetPlayer(v->owner);
+
+	if (VehicleHasDepotOrders(v)) return false; // The aircraft will end up in the hangar eventually on it's own
+
+	new_engine = EngineReplacementForPlayer(p, v->engine_type, v->group_id);
+
+	if (new_engine == INVALID_ENGINE) {
+		/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
+		new_engine = v->engine_type;
+
+		if(!p->engine_renew || (v->age - v->max_age) < p->engine_renew_months * 30) {
+			/* No need to replace the aircraft */
+			return false;
+		}
+	}
+
+	if (!HasBit(GetEngine(new_engine)->player_avail, v->owner)) {
+		/* Engine is not buildable anymore */
+		return false;
+	}
+
+	if (p->player_money < (p->engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
+		/* We lack enough money to request the replacement right away.
+		 * We want 2*(the price of the new vehicle) and not looking at the value of the vehicle we are going to sell.
+		 * The reason is that we don't want to send a whole lot of vehicles to the hangars when we only have enough money to replace a single one.
+		 * Remember this happens in the background so the user can't stop this. */
+		return false;
+	}
+
+	/* We found no reason NOT to send the aircraft to a hangar so we will send it there at once */
+	return true;
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 ///////////////////   AIRCRAFT MOVEMENT SCHEME  ////////////////////////////////
@@ -1678,22 +1718,16 @@
 
 static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *apc)
 {
-	const Player* p = GetPlayer(v->owner);
 	v->u.air.state = FLYING;
 	v->UpdateDeltaXY(INVALID_DIR);
 
 	/* get the next position to go to, differs per airport */
 	AircraftNextAirportPos_and_Order(v);
 
-	/* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
-	 * unless it is due for renewal but the engine is no longer available */
-	if (v->owner == _local_player && (
-				EngineHasReplacementForPlayer(p, v->engine_type, v->group_id) ||
-				((p->engine_renew && v->age - v->max_age > p->engine_renew_months * 30) &&
-				HasBit(GetEngine(v->engine_type)->player_avail, _local_player))
-			)) {
-		_current_player = _local_player;
-		DoCommandP(v->tile, v->index, DEPOT_SERVICE | DEPOT_LOCATE_HANGAR, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
+	/* Send the helicopter to a hangar if needed for replacement */
+	if (CheckSendAircraftToHangarForReplacement(v)) {
+		_current_player = v->owner;
+		DoCommand(v->tile, v->index, DEPOT_SERVICE | DEPOT_LOCATE_HANGAR, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
 		_current_player = OWNER_NONE;
 	}
 }
@@ -1743,16 +1777,10 @@
 	AircraftLandAirplane(v);  // maybe crash airplane
 
 	/* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed */
-	if (v->current_order.type != OT_GOTO_DEPOT && v->owner == _local_player) {
-		/* only the vehicle owner needs to calculate the rest (locally) */
-		const Player* p = GetPlayer(v->owner);
-		if (EngineHasReplacementForPlayer(p, v->engine_type, v->group_id) ||
-			(p->engine_renew && v->age - v->max_age > (p->engine_renew_months * 30))) {
-			/* send the aircraft to the hangar at next airport */
-			_current_player = _local_player;
-			DoCommandP(v->tile, v->index, DEPOT_SERVICE, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
-			_current_player = OWNER_NONE;
-		}
+	if (CheckSendAircraftToHangarForReplacement(v)) {
+		_current_player = v->owner;
+		DoCommand(v->tile, v->index, DEPOT_SERVICE, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
+		_current_player = OWNER_NONE;
 	}
 }
 
--- a/src/aircraft_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/aircraft_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,11 +6,8 @@
 #include "openttd.h"
 #include "aircraft.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "engine.h"
-#include "player.h"
 #include "depot.h"
 #include "vehicle_gui.h"
 #include "newgrf_engine.h"
@@ -18,6 +15,9 @@
 #include "vehicle_func.h"
 #include "gfx_func.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+
 /**
 * Draw the details for the given vehicle at the position (x,y)
 *
--- a/src/airport.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/airport.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,11 +6,11 @@
 #include "openttd.h"
 #include "debug.h"
 #include "airport.h"
-#include "variables.h"
 #include "airport_movement.h"
 #include "core/bitmath_func.hpp"
 #include "core/alloc_func.hpp"
 #include "date_func.h"
+#include "settings_type.h"
 
 /* Uncomment this to print out a full report of the airport-structure
  * You should either use
--- a/src/airport_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/airport_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "window_gui.h"
 #include "gui.h"
 #include "station_gui.h"
@@ -16,9 +14,13 @@
 #include "depot.h"
 #include "sound_func.h"
 #include "window_func.h"
-#include "variables.h"
+#include "settings_type.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
+#include "player_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static byte _selected_airport_type;
 
@@ -184,7 +186,12 @@
 		DrawWindowWidgets(w);
 		// strings such as 'Size' and 'Coverage Area'
 		// 'Coverage Area'
-		DrawStationCoverageAreaText(2, 206, SCT_ALL, rad);
+		int text_end = DrawStationCoverageAreaText(2, 206, SCT_ALL, rad) + 4;
+		if (text_end > w->widget[6].bottom) {
+			SetWindowDirty(w);
+			ResizeWindowForWidget(w, 6, 0, text_end - w->widget[6].bottom);
+			SetWindowDirty(w);
+		}
 		break;
 	}
 
--- a/src/autoreplace_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/autoreplace_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,9 +4,8 @@
 #include "openttd.h"
 #include "roadveh.h"
 #include "ship.h"
-#include "table/strings.h"
 #include "news.h"
-#include "player.h"
+#include "player_func.h"
 #include "engine.h"
 #include "debug.h"
 #include "vehicle_gui.h"
@@ -22,6 +21,9 @@
 #include "functions.h"
 #include "variables.h"
 #include "autoreplace_func.h"
+#include "articulated_vehicles.h"
+
+#include "table/strings.h"
 
 /*
  * move the cargo from one engine to another if possible
@@ -92,7 +94,7 @@
 
 	if (new_cargo_type == CT_INVALID) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity
 
-	if (v->cargo_type == new_cargo_type || CanRefitTo(engine_type, v->cargo_type)) {
+	if (v->cargo_cap != 0 && (v->cargo_type == new_cargo_type || CanRefitTo(engine_type, v->cargo_type))) {
 		if (VerifyAutoreplaceRefitForOrders(v, engine_type)) {
 			return v->cargo_type == new_cargo_type ? (CargoID)CT_NO_REFIT : v->cargo_type;
 		} else {
@@ -134,7 +136,7 @@
 	const UnitID cached_unitnumber = old_v->unitnumber;
 	bool new_front = false;
 	Vehicle *new_v = NULL;
-	char vehicle_name[32];
+	char *vehicle_name = NULL;
 	CargoID replacement_cargo_type;
 
 	/* If the vehicle belongs to a group, check if the group is protected from the global autoreplace.
@@ -174,7 +176,10 @@
 	if (replacement_cargo_type != CT_NO_REFIT) {
 		/* add refit cost */
 		CommandCost refit_cost = GetRefitCost(new_engine_type);
-		if (old_v->type == VEH_TRAIN && IsMultiheaded(old_v)) refit_cost.AddCost(refit_cost); // pay for both ends
+		if (old_v->type == VEH_TRAIN && RailVehInfo(new_engine_type)->railveh_type == RAILVEH_MULTIHEAD) {
+			/* Since it's a dualheaded engine we have to pay once more because the rear end is being refitted too. */
+			refit_cost.AddCost(refit_cost);
+		}
 		cost.AddCost(refit_cost);
 	}
 
@@ -210,7 +215,7 @@
 			DoCommand(0, (front->index << 16) | new_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
 		} else {
 			// copy/clone the orders
-			DoCommand(0, (old_v->index << 16) | new_v->index, IsOrderListShared(old_v) ? CO_SHARE : CO_COPY, DC_EXEC, CMD_CLONE_ORDER);
+			DoCommand(0, (old_v->index << 16) | new_v->index, old_v->IsOrderListShared() ? CO_SHARE : CO_COPY, DC_EXEC, CMD_CLONE_ORDER);
 			new_v->cur_order_index = old_v->cur_order_index;
 			ChangeVehicleViewWindow(old_v, new_v);
 			new_v->profit_this_year = old_v->profit_this_year;
@@ -240,12 +245,7 @@
 		MoveVehicleCargo(new_v->type == VEH_TRAIN ? new_v->First() : new_v, old_v);
 
 		// Get the name of the old vehicle if it has a custom name.
-		if (!IsCustomName(old_v->string_id)) {
-			vehicle_name[0] = '\0';
-		} else {
-			SetDParam(0, old_v->index);
-			GetString(vehicle_name, STR_VEHICLE_NAME, lastof(vehicle_name));
-		}
+		if (old_v->name != NULL) vehicle_name = strdup(old_v->name);
 	} else { // flags & DC_EXEC not set
 		CommandCost tmp_move;
 
@@ -285,9 +285,10 @@
 	}
 
 	/* Transfer the name of the old vehicle */
-	if ((flags & DC_EXEC) && vehicle_name[0] != '\0') {
+	if ((flags & DC_EXEC) && vehicle_name != NULL) {
 		_cmd_text = vehicle_name;
 		DoCommand(0, new_v->index, 0, DC_EXEC, CMD_NAME_VEHICLE);
+		free(vehicle_name);
 	}
 
 	return cost;
--- a/src/autoreplace_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/autoreplace_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,7 +6,7 @@
 #define AUTOREPLACE_FUNC_H
 
 #include "autoreplace_type.h"
-#include "player.h"
+#include "player_base.h"
 
 /**
  * Remove all engine replacement settings for the player.
--- a/src/autoreplace_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/autoreplace_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "command_func.h"
 #include "variables.h"
@@ -19,6 +17,11 @@
 #include "vehicle_func.h"
 #include "autoreplace_func.h"
 #include "gfx_func.h"
+#include "player_func.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static RailType _railtype_selected_in_replace_gui;
 
@@ -33,6 +36,24 @@
 	INVALID_STRING_ID
 };
 
+enum ReplaceVehicleWindowWidgets {
+	RVW_WIDGET_LEFT_DETAILS = 3,
+	RVW_WIDGET_START_REPLACE,
+	RVW_WIDGET_INFO_TAB,
+	RVW_WIDGET_STOP_REPLACE,
+	RVW_WIDGET_LEFT_MATRIX,
+	RVW_WIDGET_LEFT_SCROLLBAR,
+	RVW_WIDGET_RIGHT_MATRIX,
+	RVW_WIDGET_RIGHT_SCROLLBAR,
+	RVW_WIDGET_RIGHT_DETAILS,
+
+	RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE,
+	RVW_WIDGET_TRAIN_FLUFF_LEFT,
+	RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN,
+	RVW_WIDGET_TRAIN_FLUFF_RIGHT,
+	RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE,
+};
+
 static int CDECL TrainEngineNumberSorter(const void *a, const void *b)
 {
 	const EngineID va = *(const EngineID*)a;
@@ -261,7 +282,7 @@
 			 *    Either list is empty
 			 * or The selected replacement engine has a replacement (to prevent loops)
 			 * or The right list (new replacement) has the existing replacement vehicle selected */
-			w->SetWidgetDisabledState(4,
+			w->SetWidgetDisabledState(RVW_WIDGET_START_REPLACE,
 										 selected_id[0] == INVALID_ENGINE ||
 										 selected_id[1] == INVALID_ENGINE ||
 										 EngineReplacementForPlayer(p, selected_id[1], selected_group) != INVALID_ENGINE ||
@@ -270,7 +291,7 @@
 			/* Disable the "Stop Replacing" button if:
 			 *   The left list (existing vehicle) is empty
 			 *   or The selected vehicle has no replacement set up */
-			w->SetWidgetDisabledState(6,
+			w->SetWidgetDisabledState(RVW_WIDGET_STOP_REPLACE,
 										 selected_id[0] == INVALID_ENGINE ||
 										 !EngineHasReplacementForPlayer(p, selected_id[0], selected_group));
 
@@ -285,18 +306,18 @@
 				SetDParam(2, WP(w, replaceveh_d).wagon_btnstate ? STR_ENGINES : STR_WAGONS);
 
 				/* sets the colour of that art thing */
-				w->widget[13].color = _player_colors[_local_player];
-				w->widget[16].color = _player_colors[_local_player];
+				w->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].color  = _player_colors[_local_player];
+				w->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].color = _player_colors[_local_player];
+			}
+
+			if (w->window_number == VEH_TRAIN) {
+				/* Show the selected railtype in the pulldown menu */
+				RailType railtype = _railtype_selected_in_replace_gui;
+				w->widget[RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN].data = _rail_types_list[railtype];
 			}
 
 			DrawWindowWidgets(w);
 
-			if (w->window_number == VEH_TRAIN) {
-				/* Draw the selected railtype in the pulldown menu */
-				RailType railtype = _railtype_selected_in_replace_gui;
-				DrawString(157, w->widget[14].top + 1, _rail_types_list[railtype], TC_BLACK);
-			}
-
 			/* sets up the string for the vehicle that is being replaced to */
 			if (selected_id[0] != INVALID_ENGINE) {
 				if (!EngineHasReplacementForPlayer(p, selected_id[0], selected_group)) {
@@ -309,22 +330,28 @@
 				SetDParam(0, STR_NOT_REPLACING_VEHICLE_SELECTED);
 			}
 
-			DrawString(145, w->widget[5].top + 1, STR_02BD, TC_BLACK);
+			DrawString(145, w->widget[RVW_WIDGET_INFO_TAB].top + 1, STR_02BD, TC_BLACK);
 
 			/* Draw the lists */
 			for(byte i = 0; i < 2; i++) {
-				uint16 x        = i == 0 ? 2 : 230; // at what X offset
+				uint widget     = (i == 0) ? RVW_WIDGET_LEFT_MATRIX : RVW_WIDGET_RIGHT_MATRIX;
 				EngineList list = WP(w, replaceveh_d).list[i]; // which list to draw
 				EngineID start  = i == 0 ? w->vscroll.pos : w->vscroll2.pos; // what is the offset for the start (scrolling)
 				EngineID end    = min((i == 0 ? w->vscroll.cap : w->vscroll2.cap) + start, EngList_Count(&list));
 
 				/* Do the actual drawing */
-				DrawEngineList((VehicleType)w->window_number, x, 15, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0, selected_group);
+				DrawEngineList((VehicleType)w->window_number, w->widget[widget].left + 2, w->widget[widget].top + 1, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0, selected_group);
 
 				/* Also draw the details if an engine is selected */
 				if (WP(w, replaceveh_d).sel_engine[i] != INVALID_ENGINE) {
-					const Widget *wi = &w->widget[i == 0 ? 3 : 11];
-					DrawVehiclePurchaseInfo(wi->left + 2, wi->top + 1, wi->right - wi->left - 2, WP(w, replaceveh_d).sel_engine[i]);
+					const Widget *wi = &w->widget[i == 0 ? RVW_WIDGET_LEFT_DETAILS : RVW_WIDGET_RIGHT_DETAILS];
+					int text_end = DrawVehiclePurchaseInfo(wi->left + 2, wi->top + 1, wi->right - wi->left - 2, WP(w, replaceveh_d).sel_engine[i]);
+
+					if (text_end > wi->bottom) {
+						SetWindowDirty(w);
+						ResizeWindowForWidget(w, i == 0 ? RVW_WIDGET_LEFT_DETAILS : RVW_WIDGET_RIGHT_DETAILS, 0, text_end - wi->bottom);
+						SetWindowDirty(w);
+					}
 				}
 			}
 
@@ -332,39 +359,38 @@
 
 		case WE_CLICK: {
 			switch (e->we.click.widget) {
-				case 12:
+				case RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE:
 					WP(w, replaceveh_d).wagon_btnstate = !(WP(w, replaceveh_d).wagon_btnstate);
 					WP(w, replaceveh_d).update_left = true;
 					WP(w, replaceveh_d).init_lists  = true;
 					SetWindowDirty(w);
 					break;
 
-				case 14:
-				case 15: /* Railtype selection dropdown menu */
-					ShowDropDownMenu(w, _rail_types_list, _railtype_selected_in_replace_gui, 15, 0, ~GetPlayer(_local_player)->avail_railtypes);
+				case RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN: /* Railtype selection dropdown menu */
+					ShowDropDownMenu(w, _rail_types_list, _railtype_selected_in_replace_gui, RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN, 0, ~GetPlayer(_local_player)->avail_railtypes);
 					break;
 
-				case 17: /* toggle renew_keep_length */
+				case RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE: /* toggle renew_keep_length */
 					DoCommandP(0, 5, GetPlayer(_local_player)->renew_keep_length ? 0 : 1, NULL, CMD_SET_AUTOREPLACE);
 					break;
 
-				case 4: { /* Start replacing */
+				case RVW_WIDGET_START_REPLACE: { /* Start replacing */
 					EngineID veh_from = WP(w, replaceveh_d).sel_engine[0];
 					EngineID veh_to = WP(w, replaceveh_d).sel_engine[1];
 					DoCommandP(0, 3 + (WP(w, replaceveh_d).sel_group << 16) , veh_from + (veh_to << 16), NULL, CMD_SET_AUTOREPLACE);
 				} break;
 
-				case 6: { /* Stop replacing */
+				case RVW_WIDGET_STOP_REPLACE: { /* Stop replacing */
 					EngineID veh_from = WP(w, replaceveh_d).sel_engine[0];
 					DoCommandP(0, 3 + (WP(w, replaceveh_d).sel_group << 16), veh_from + (INVALID_ENGINE << 16), NULL, CMD_SET_AUTOREPLACE);
 				} break;
 
-				case 7:
-				case 9: {
+				case RVW_WIDGET_LEFT_MATRIX:
+				case RVW_WIDGET_RIGHT_MATRIX: {
 					uint i = (e->we.click.pt.y - 14) / w->resize.step_height;
-					uint16 click_scroll_pos = e->we.click.widget == 7 ? w->vscroll.pos : w->vscroll2.pos;
-					uint16 click_scroll_cap = e->we.click.widget == 7 ? w->vscroll.cap : w->vscroll2.cap;
-					byte click_side         = e->we.click.widget == 7 ? 0 : 1;
+					uint16 click_scroll_pos = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? w->vscroll.pos : w->vscroll2.pos;
+					uint16 click_scroll_cap = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? w->vscroll.cap : w->vscroll2.cap;
+					byte click_side         = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? 0 : 1;
 					uint16 engine_count     = EngList_Count(&WP(w, replaceveh_d).list[click_side]);
 
 					if (i < click_scroll_cap) {
@@ -402,8 +428,8 @@
 			w->vscroll.cap  += e->we.sizing.diff.y / (int)w->resize.step_height;
 			w->vscroll2.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
 
-			w->widget[7].data = (w->vscroll.cap  << 8) + 1;
-			w->widget[9].data = (w->vscroll2.cap << 8) + 1;
+			w->widget[RVW_WIDGET_LEFT_MATRIX].data  = (w->vscroll.cap  << 8) + 1;
+			w->widget[RVW_WIDGET_RIGHT_MATRIX].data = (w->vscroll2.cap << 8) + 1;
 			break;
 
 		case WE_INVALIDATE_DATA:
@@ -435,8 +461,7 @@
 // train specific stuff
 { WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   228,   239, STR_REPLACE_ENGINE_WAGON_SELECT,       STR_REPLACE_ENGINE_WAGON_SELECT_HELP},  // widget 12
 {      WWT_PANEL,     RESIZE_TB,    14,   139,   153,   240,   251, 0x0,            STR_NULL},
-{      WWT_PANEL,     RESIZE_TB,    14,   154,   277,   240,   251, 0x0,            STR_REPLACE_HELP_RAILTYPE},
-{    WWT_TEXTBTN,     RESIZE_TB,    14,   278,   289,   240,   251, STR_0225,       STR_REPLACE_HELP_RAILTYPE},
+{   WWT_DROPDOWN,     RESIZE_TB,    14,   154,   289,   240,   251, 0x0,            STR_REPLACE_HELP_RAILTYPE},
 {      WWT_PANEL,     RESIZE_TB,    14,   290,   305,   240,   251, 0x0,            STR_NULL},
 { WWT_PUSHTXTBTN,     RESIZE_TB,    14,   317,   455,   228,   239, STR_REPLACE_REMOVE_WAGON,       STR_REPLACE_REMOVE_WAGON_HELP},
 // end of train specific stuff
@@ -503,38 +528,6 @@
 };
 
 
-void ShowReplaceVehicleWindow(VehicleType vehicletype)
-{
-	Window *w;
-
-	DeleteWindowById(WC_REPLACE_VEHICLE, vehicletype);
-
-	switch (vehicletype) {
-		case VEH_TRAIN:
-			w = AllocateWindowDescFront(&_replace_rail_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 8;
-			w->resize.step_height = 14;
-			WP(w, replaceveh_d).wagon_btnstate = true;
-			break;
-		case VEH_ROAD:
-			w = AllocateWindowDescFront(&_replace_road_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 8;
-			w->resize.step_height = 14;
-			break;
-		case VEH_SHIP:
-		case VEH_AIRCRAFT:
-			w = AllocateWindowDescFront(&_replace_ship_aircraft_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 4;
-			w->resize.step_height = 24;
-			break;
-		default: return;
-	}
-
-	w->caption_color = _local_player;
-	w->vscroll2.cap = w->vscroll.cap;   // these two are always the same
-	WP(w, replaceveh_d).sel_group = DEFAULT_GROUP;
- }
-
 void ShowReplaceGroupVehicleWindow(GroupID id_g, VehicleType vehicletype)
 {
 	Window *w;
--- a/src/autoreplace_gui.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/autoreplace_gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -13,7 +13,6 @@
  */
 void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type);
 void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g);
-void ShowReplaceVehicleWindow(VehicleType vehicletype);
 void ShowReplaceGroupVehicleWindow(GroupID group, VehicleType veh);
 
 #endif /* AUTOREPLACE_GUI_H */
--- a/src/autoslope.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/autoslope.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "depot.h"
 #include "settings_type.h"
+#include "player_func.h"
 
 /**
  * Autoslope check for tiles with an entrance on an edge.
--- a/src/blitter/32bpp_anim.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/blitter/32bpp_anim.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,15 +5,16 @@
 #include "../gfx_func.h"
 #include "../zoom_func.h"
 #include "../debug.h"
-#include "../table/sprites.h"
 #include "../video/video_driver.hpp"
 #include "32bpp_anim.hpp"
 
+#include "../table/sprites.h"
+
 static FBlitter_32bppAnim iFBlitter_32bppAnim;
 
 void Blitter_32bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
 {
-	if (bp->dst < _screen.dst_ptr || bp->dst > (uint32 *)_screen.dst_ptr + _screen.width * _screen.height) {
+	if (_screen_disable_anim) {
 		/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent Draw() */
 		Blitter_32bppOptimized::Draw(bp, mode, zoom);
 		return;
@@ -98,6 +99,12 @@
 
 void Blitter_32bppAnim::DrawColorMappingRect(void *dst, int width, int height, int pal)
 {
+	if (_screen_disable_anim) {
+		/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawColorMappingRect() */
+		Blitter_32bppOptimized::DrawColorMappingRect(dst, width, height, pal);
+		return;
+	}
+
 	uint32 *udst = (uint32 *)dst;
 	uint8 *anim;
 
@@ -136,7 +143,9 @@
 void Blitter_32bppAnim::SetPixel(void *video, int x, int y, uint8 color)
 {
 	*((uint32 *)video + x + y * _screen.pitch) = LookupColourInPalette(color);
-	/* Set the color in the anim-buffer too */
+
+	/* Set the color in the anim-buffer too, if we are rendering to the screen */
+	if (_screen_disable_anim) return;
 	this->anim_buf[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * this->anim_buf_width] = color;
 }
 
@@ -145,13 +154,20 @@
 	uint32 *dst = (uint32 *)video + x + y * _screen.pitch;
 	if (*dst == 0) {
 		*dst = LookupColourInPalette(color);
-		/* Set the color in the anim-buffer too */
+		/* Set the color in the anim-buffer too, if we are rendering to the screen */
+		if (_screen_disable_anim) return;
 		this->anim_buf[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * this->anim_buf_width] = color;
 	}
 }
 
 void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 color)
 {
+	if (_screen_disable_anim) {
+		/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
+		Blitter_32bppOptimized::DrawRect(video, width, height, color);
+		return;
+	}
+
 	uint32 color32 = LookupColourInPalette(color);
 	uint8 *anim_line;
 
@@ -175,6 +191,7 @@
 
 void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width, int height)
 {
+	assert(!_screen_disable_anim);
 	assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
 	uint32 *dst = (uint32 *)video;
 	uint32 *usrc = (uint32 *)src;
@@ -198,6 +215,7 @@
 
 void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, int height)
 {
+	assert(!_screen_disable_anim);
 	assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
 	uint32 *udst = (uint32 *)dst;
 	uint32 *src = (uint32 *)video;
@@ -220,6 +238,8 @@
 
 void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &width, int &height, int scroll_x, int scroll_y)
 {
+	assert(!_screen_disable_anim);
+	assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
 	uint8 *dst, *src;
 
 	/* We need to scroll the anim-buffer too */
@@ -268,6 +288,7 @@
 
 void Blitter_32bppAnim::PaletteAnimate(uint start, uint count)
 {
+	assert(!_screen_disable_anim);
 	uint8 *anim = this->anim_buf;
 
 	/* Never repaint the transparency pixel */
--- a/src/blitter/32bpp_optimized.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/blitter/32bpp_optimized.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,7 +4,6 @@
 #include "../zoom_func.h"
 #include "../gfx_func.h"
 #include "../debug.h"
-#include "../table/sprites.h"
 #include "32bpp_optimized.hpp"
 
 static FBlitter_32bppOptimized iFBlitter_32bppOptimized;
--- a/src/blitter/32bpp_simple.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/blitter/32bpp_simple.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,9 @@
 #include "../gfx_func.h"
 #include "../zoom_func.h"
 #include "../debug.h"
+#include "32bpp_simple.hpp"
+
 #include "../table/sprites.h"
-#include "32bpp_simple.hpp"
 
 static FBlitter_32bppSimple iFBlitter_32bppSimple;
 
--- a/src/blitter/factory.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/blitter/factory.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -130,4 +130,6 @@
 	const char *GetName();
 };
 
+extern char _ini_blitter[32];
+
 #endif /* BLITTER_FACTORY_HPP */
--- a/src/bridge.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/bridge.h	Sun Feb 03 20:17:54 2008 +0000
@@ -16,14 +16,16 @@
 /** Struct containing information about a single bridge type
  */
 struct Bridge {
-	Year avail_year;     ///< the year in which the bridge becomes available
-	byte min_length;     ///< the minimum length of the bridge (not counting start and end tile)
-	byte max_length;     ///< the maximum length of the bridge (not counting start and end tile)
-	uint16 price;        ///< the relative price of the bridge
+	Year avail_year;     ///< the year where it becomes available
+	byte min_length;     ///< the minimum length (not counting start and end tile)
+	byte max_length;     ///< the maximum length (not counting start and end tile)
+	uint16 price;        ///< the price multiplier
 	uint16 speed;        ///< maximum travel speed
 	SpriteID sprite;     ///< the sprite which is used in the GUI
 	SpriteID pal;        ///< the palette which is used in the GUI
 	StringID material;   ///< the string that contains the bridge description
+	StringID name_rail;  ///< description of the bridge, when built for road
+	StringID name_road;  ///< description of the bridge, when built for road
 	PalSpriteID **sprite_table; ///< table of sprites for drawing the bridge
 	byte flags;          ///< bit 0 set: disable drawing of far pillars.
 };
@@ -32,6 +34,7 @@
 extern Bridge _bridge[MAX_BRIDGES];
 
 Foundation GetBridgeFoundation(Slope tileh, Axis axis);
+bool HasBridgeFlatRamp(Slope tileh, Axis axis);
 
 static inline const Bridge *GetBridge(uint i)
 {
@@ -42,7 +45,6 @@
 void DrawBridgeMiddle(const TileInfo *ti);
 
 bool CheckBridge_Stuff(byte bridge_type, uint bridge_len);
-uint32 GetBridgeLength(TileIndex begin, TileIndex end);
 int CalcBridgeLenCostFactor(int x);
 
 #endif /* BRIDGE_H */
--- a/src/bridge_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/bridge_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,7 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "command_func.h"
@@ -17,6 +16,9 @@
 #include "map_func.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
+#include "tunnelbridge.h"
+
+#include "table/strings.h"
 
 static struct BridgeData {
 	uint8 last_size;
@@ -181,7 +183,7 @@
 		/* check which bridges can be built
 		 * get absolute bridge length
 		 * length of the middle parts of the bridge */
-		const uint bridge_len = GetBridgeLength(start, end);
+		const uint bridge_len = GetTunnelBridgeLength(start, end);
 		/* total length of bridge */
 		const uint tot_bridgedata_len = CalcBridgeLenCostFactor(bridge_len + 2);
 
--- a/src/build_vehicle_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/build_vehicle_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,15 +9,13 @@
 #include "ship.h"
 #include "aircraft.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "articulated_vehicles.h"
 #include "textbuf_gui.h"
 #include "station.h"
 #include "command_func.h"
 #include "engine.h"
-#include "player.h"
+#include "player_func.h"
 #include "depot.h"
 #include "airport.h"
 #include "vehicle_gui.h"
@@ -31,6 +29,10 @@
 #include "vehicle_func.h"
 #include "settings_type.h"
 #include "gfx_func.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 struct buildvehicle_d {
 	VehicleType vehicle_type;
@@ -53,7 +55,6 @@
 	BUILD_VEHICLE_WIDGET_CLOSEBOX = 0,
 	BUILD_VEHICLE_WIDGET_CAPTION,
 	BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING,
-	BUILD_VEHICLE_WIDGET_SORT_TEXT,
 	BUILD_VEHICLE_WIDGET_SORT_DROPDOWN,
 	BUILD_VEHICLE_WIDGET_LIST,
 	BUILD_VEHICLE_WIDGET_SCROLLBAR,
@@ -68,8 +69,7 @@
 	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW },
 	{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   239,     0,    13, 0x0,                     STR_018C_WINDOW_TITLE_DRAG_THIS },
 	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    80,    14,    25, STR_SORT_BY,             STR_SORT_ORDER_TIP},
-	{      WWT_PANEL,  RESIZE_RIGHT,    14,    81,   227,    14,    25, 0x0,                     STR_SORT_CRITERIA_TIP},
-	{    WWT_TEXTBTN,     RESIZE_LR,    14,   228,   239,    14,    25, STR_0225,                STR_SORT_CRITERIA_TIP},
+	{   WWT_DROPDOWN,  RESIZE_RIGHT,    14,    81,   239,    14,    25, 0x0,                     STR_SORT_CRITERIA_TIP},
 	{     WWT_MATRIX,     RESIZE_RB,    14,     0,   227,    26,    39, 0x101,                   STR_NULL },
 	{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   228,   239,    26,    39, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST },
 	{      WWT_PANEL,    RESIZE_RTB,    14,     0,   239,    40,   161, 0x0,                     STR_NULL },
@@ -773,7 +773,8 @@
 	 * Also check to see if the previously selected engine is still available,
 	 * and if not, reset selection to INVALID_ENGINE. This could be the case
 	 * when engines become obsolete and are removed */
-	for (EngineID eid = 0; eid < NUM_TRAIN_ENGINES; eid++) {
+	EngineID eid;
+	FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_TRAIN) {
 		const RailVehicleInfo *rvi = RailVehInfo(eid);
 
 		if (bv->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, bv->filter.railtype)) continue;
@@ -811,7 +812,8 @@
 
 	EngList_RemoveAll(&bv->eng_list);
 
-	for (EngineID eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) {
+	EngineID eid;
+	FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_ROAD) {
 		if (!IsEngineBuildable(eid, VEH_ROAD, _local_player)) continue;
 		if (!HasBit(bv->filter.roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD)) continue;
 		EngList_Add(&bv->eng_list, eid);
@@ -829,7 +831,8 @@
 
 	EngList_RemoveAll(&bv->eng_list);
 
-	for (EngineID eid = SHIP_ENGINES_INDEX; eid < SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES; eid++) {
+	EngineID eid;
+	FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_SHIP) {
 		if (!IsEngineBuildable(eid, VEH_SHIP, _local_player)) continue;
 		EngList_Add(&bv->eng_list, eid);
 
@@ -850,7 +853,8 @@
 	 * Also check to see if the previously selected plane is still available,
 	 * and if not, reset selection to INVALID_ENGINE. This could be the case
 	 * when planes become obsolete and are removed */
-	for (EngineID eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
+	EngineID eid;
+	FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_AIRCRAFT) {
 		if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue;
 		/* First VEH_END window_numbers are fake to allow a window open for all different types at once */
 		if (w->window_number > VEH_END && !CanAircraftUseStation(eid, w->window_number)) continue;
@@ -954,23 +958,6 @@
 	}
 }
 
-static void ExpandPurchaseInfoWidget(Window *w, int expand_by)
-{
-	Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
-
-	SetWindowDirty(w);
-	wi->bottom += expand_by;
-
-	for (uint i = BUILD_VEHICLE_WIDGET_BUILD; i < BUILD_VEHICLE_WIDGET_END; i++) {
-		wi = &w->widget[i];
-		wi->top += expand_by;
-		wi->bottom += expand_by;
-	}
-
-	w->height += expand_by;
-	SetWindowDirty(w);
-}
-
 static void DrawBuildVehicleWindow(Window *w)
 {
 	const buildvehicle_d *bv = &WP(w, buildvehicle_d);
@@ -980,19 +967,26 @@
 
 	SetVScrollCount(w, EngList_Count(&bv->eng_list));
 	SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles
+
+	/* Set text of sort by dropdown */
+	w->widget[BUILD_VEHICLE_WIDGET_SORT_DROPDOWN].data = _sort_listing[bv->vehicle_type][bv->sort_criteria];
+
 	DrawWindowWidgets(w);
 
-	DrawEngineList(bv->vehicle_type, 2, 27, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
+	DrawEngineList(bv->vehicle_type, w->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, w->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
 
 	if (bv->sel_engine != INVALID_ENGINE) {
 		const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
 		int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
 
-		if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
+		if (text_end > wi->bottom) {
+			SetWindowDirty(w);
+			ResizeWindowForWidget(w, BUILD_VEHICLE_WIDGET_PANEL, 0, text_end - wi->bottom);
+			SetWindowDirty(w);
+		}
 	}
 
-	DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], TC_BLACK);
-	DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, TC_BLACK);
+	DrawSortButtonState(w, BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, bv->descending_sort_order ? SBS_DOWN : SBS_UP);
 }
 
 static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
@@ -1008,14 +1002,14 @@
 			break;
 
 		case BUILD_VEHICLE_WIDGET_LIST: {
-			uint i = (e->we.click.pt.y - 26) / GetVehicleListHeight(bv->vehicle_type) + w->vscroll.pos;
+			uint i = (e->we.click.pt.y - w->widget[BUILD_VEHICLE_WIDGET_LIST].top) / GetVehicleListHeight(bv->vehicle_type) + w->vscroll.pos;
 			uint num_items = EngList_Count(&bv->eng_list);
 			bv->sel_engine = (i < num_items) ? bv->eng_list[i] : INVALID_ENGINE;
 			SetWindowDirty(w);
 			break;
 		}
 
-		case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
+		case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
 			ShowDropDownMenu(w, _sort_listing[bv->vehicle_type], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
 			break;
 
--- a/src/cargopacket.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/cargopacket.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,11 +1,12 @@
 /* $Id$ */
 
-/** @file cargotype.h */
+/** @file cargopacket.h */
 
 #ifndef CARGOPACKET_H
 #define CARGOPACKET_H
 
 #include "economy_type.h"
+#include "tile_type.h"
 #include <list>
 
 typedef uint32 CargoPacketID;
--- a/src/cargotype.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/cargotype.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,12 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "newgrf_cargo.h"
 #include "cargotype.h"
 #include "core/bitmath_func.hpp"
 
+#include "table/sprites.h"
+#include "table/strings.h"
 #include "table/cargo_const.h"
 
 CargoSpec _cargo[NUM_CARGO];
--- a/src/cargotype.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/cargotype.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "cargo_type.h"
 #include "gfx_type.h"
+#include "newgrf_string_type.h"
 
 typedef uint32 CargoLabel;
 
@@ -35,11 +36,11 @@
 	uint16 multipliertowngrowth;
 	uint8 callback_mask;
 
-	StringID name;
-	StringID name_single;
-	StringID units_volume;
-	StringID quantifier;
-	StringID abbrev;
+	GRFMappedStringID name;
+	GRFMappedStringID name_single;
+	GRFMappedStringID units_volume;
+	GRFMappedStringID quantifier;
+	GRFMappedStringID abbrev;
 
 	SpriteID sprite;
 
--- a/src/clear_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/clear_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,13 +5,10 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "clear_map.h"
-#include "table/strings.h"
-#include "player.h"
 #include "command_func.h"
 #include "bridge.h"
 #include "landscape.h"
 #include "variables.h"
-#include "table/sprites.h"
 #include "unmovable_map.h"
 #include "genworld.h"
 #include "industry.h"
@@ -19,8 +16,12 @@
 #include "tile_cmd.h"
 #include "functions.h"
 #include "economy_func.h"
+#include "viewport_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 #include "table/clear_land.h"
-#include "viewport_func.h"
 
 static CommandCost ClearTile_Clear(TileIndex tile, byte flags)
 {
--- a/src/command.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/command.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,10 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "landscape.h"
 #include "tile_map.h"
 #include "gui.h"
 #include "command_func.h"
-#include "player.h"
 #include "network/network.h"
 #include "variables.h"
 #include "genworld.h"
@@ -18,8 +16,16 @@
 #include "gfx_func.h"
 #include "functions.h"
 #include "town.h"
+#include "date_func.h"
+#include "debug.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "signal_func.h"
+
+#include "table/strings.h"
 
 const char *_cmd_text = NULL;
+StringID _error_message;
 
 /**
  * Helper macro to define the header of all command handler macros.
@@ -566,7 +572,9 @@
 			!(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR)) &&
 			(cmd & 0xFF) != CMD_PAUSE) {
 		/* estimate the cost. */
+		SetTownRatingTestMode(true);
 		res = proc(tile, flags, p1, p2);
+		SetTownRatingTestMode(false);
 		if (CmdFailed(res)) {
 			res.SetGlobalErrorMessage();
 			ShowErrorMessage(_error_message, error_part1, x, y);
@@ -613,11 +621,7 @@
 		return true;
 	}
 #endif /* ENABLE_NETWORK */
-#ifdef DEBUG_DUMP_COMMANDS
-	extern Date      _date;
-	extern DateFract _date_fract;
-	debug_dump_commands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_player, tile, p1, p2, cmd, _cmd_text);
-#endif /* DUMP_COMMANDS */
+	DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_player, tile, p1, p2, cmd, _cmd_text);
 
 	/* update last build coordinate of player. */
 	if (tile != 0 && IsValidPlayer(_current_player)) {
@@ -641,6 +645,9 @@
 
 	SubtractMoneyFromPlayer(res2);
 
+	/* update signals if needed */
+	UpdateSignalsInBuffer();
+
 	if (IsLocalPlayer() && _game_mode != GM_EDITOR) {
 		if (res2.GetCost() != 0 && tile != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
 		if (_additional_cash_required != 0) {
--- a/src/command_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/command_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -77,6 +77,7 @@
  */
 extern const char *_cmd_text;
 extern Money _additional_cash_required;
+extern StringID _error_message;
 
 /**
  * Checks if a integer value belongs to a command.
--- a/src/console.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/console.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,9 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "textbuf_gui.h"
 #include "window_gui.h"
-#include "player.h"
 #include "variables.h"
 #include <stdarg.h>
 #include <string.h>
@@ -21,6 +19,8 @@
 #include "string_func.h"
 #include "gfx_func.h"
 
+#include "table/strings.h"
+
 #define ICON_BUFFER 79
 #define ICON_HISTORY_SIZE 20
 #define ICON_LINE_HEIGHT 12
@@ -29,6 +29,19 @@
 #define ICON_MAX_ALIAS_LINES 40
 #define ICON_TOKEN_COUNT 20
 
+/* console parser */
+IConsoleCmd   *_iconsole_cmds;    ///< list of registred commands
+IConsoleVar   *_iconsole_vars;    ///< list of registred vars
+IConsoleAlias *_iconsole_aliases; ///< list of registred aliases
+
+/* console colors/modes */
+byte _icolour_def;
+byte _icolour_err;
+byte _icolour_warn;
+byte _icolour_dbg;
+byte _icolour_cmd;
+IConsoleModes _iconsole_mode;
+
 /* ** main console ** */
 static char *_iconsole_buffer[ICON_BUFFER + 1];
 static uint16 _iconsole_cbuffer[ICON_BUFFER + 1];
--- a/src/console.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/console.h	Sun Feb 03 20:17:54 2008 +0000
@@ -103,17 +103,17 @@
 };
 
 /* console parser */
-VARDEF IConsoleCmd   *_iconsole_cmds;    ///< list of registred commands
-VARDEF IConsoleVar   *_iconsole_vars;    ///< list of registred vars
-VARDEF IConsoleAlias *_iconsole_aliases; ///< list of registred aliases
+extern IConsoleCmd   *_iconsole_cmds;    ///< list of registred commands
+extern IConsoleVar   *_iconsole_vars;    ///< list of registred vars
+extern IConsoleAlias *_iconsole_aliases; ///< list of registred aliases
 
 /* console colors/modes */
-VARDEF byte _icolour_def;
-VARDEF byte _icolour_err;
-VARDEF byte _icolour_warn;
-VARDEF byte _icolour_dbg;
-VARDEF byte _icolour_cmd;
-VARDEF IConsoleModes _iconsole_mode;
+extern byte _icolour_def;
+extern byte _icolour_err;
+extern byte _icolour_warn;
+extern byte _icolour_dbg;
+extern byte _icolour_cmd;
+extern IConsoleModes _iconsole_mode;
 
 /* console functions */
 void IConsoleInit();
--- a/src/console_cmds.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/console_cmds.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -30,6 +30,13 @@
 #include "date_func.h"
 #include "vehicle_func.h"
 #include "string_func.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "settings_type.h"
+
+#ifdef ENABLE_NETWORK
+	#include "table/strings.h"
+#endif /* ENABLE_NETWORK */
 
 // ** scriptfile handling ** //
 static FILE *_script_file;
@@ -1222,10 +1229,6 @@
 	return true;
 }
 
-#ifdef ENABLE_NETWORK
-	#include "table/strings.h"
-#endif /* ENABLE_NETWORK */
-
 DEF_CONSOLE_CMD(ConPlayers)
 {
 	Player *p;
@@ -1650,6 +1653,8 @@
 	IConsoleVarRegister("min_players",           &_network_min_players, ICONSOLE_VAR_BYTE, "Automatically pause the game when the number of active players passes below the given amount");
 	IConsoleVarHookAdd("min_players",            ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
 	IConsoleVarHookAdd("min_players",            ICONSOLE_HOOK_POST_ACTION, ConHookCheckMinPlayers);
+	IConsoleVarRegister("reload_cfg",            &_network_reload_cfg, ICONSOLE_VAR_BOOLEAN, "reload the entire config file between the end of this game, and starting the next new game - dedicated servers");
+	IConsoleVarHookAdd("reload_cfg",             ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
 
 #endif /* ENABLE_NETWORK */
 
--- a/src/core/alloc_func.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/core/alloc_func.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -81,4 +81,35 @@
 	return t_ptr;
 }
 
+/**
+ * A small 'wrapper' for allocations that can be done on most OSes on the
+ * stack, but are just too large to fit in the stack on devices with a small
+ * stack such as the NDS.
+ * So when it is possible a stack allocation is made, otherwise a heap
+ * allocation is made and this is freed once the struct goes out of scope.
+ * @param T      the type to make the allocation for
+ * @param length the amount of items to allocate
+ */
+template <typename T, size_t length>
+struct SmallStackSafeStackAlloc {
+#if !defined(__NDS__)
+	/** Storing the data on the stack */
+	T data[length];
+#else
+	/** Storing it on the heap */
+	T *data;
+
+	/** Allocating the memory */
+	SmallStackSafeStackAlloc() : data(MallocT<T>(length)) {}
+	/** And freeing when it goes out of scope */
+	~SmallStackSafeStackAlloc() { free(data); }
+#endif
+
+	/**
+	 * Gets a pointer to the data stored in this wrapper.
+	 * @return the pointer.
+	 */
+	operator T* () { return data; }
+};
+
 #endif /* ALLOC_FUNC_HPP */
--- a/src/core/random_func.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/core/random_func.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,20 +6,26 @@
 #include "random_func.hpp"
 #include "bitmath_func.hpp"
 
-uint32 _random_seeds[2][2];
+Randomizer _random, _interactive_random;
 
-uint32 InteractiveRandom()
+uint32 Randomizer::Next()
 {
-	const uint32 s = _random_seeds[1][0];
-	const uint32 t = _random_seeds[1][1];
+	const uint32 s = this->state[0];
+	const uint32 t = this->state[1];
 
-	_random_seeds[1][0] = s + ROR(t ^ 0x1234567F, 7) + 1;
-	return _random_seeds[1][1] = ROR(s, 3) - 1;
+	this->state[0] = s + ROR(t ^ 0x1234567F, 7) + 1;
+	return this->state[1] = ROR(s, 3) - 1;
 }
 
-uint InteractiveRandomRange(uint max)
+uint32 Randomizer::Next(uint16 max)
 {
-	return GB(InteractiveRandom(), 0, 16) * max >> 16;
+	return GB(this->Next(), 0, 16) * max >> 16;
+}
+
+void Randomizer::SetSeed(uint32 seed)
+{
+	this->state[0] = seed;
+	this->state[1] = seed;
 }
 
 #ifdef MERSENNE_TWISTER
@@ -119,28 +125,24 @@
 #else /* MERSENNE_TWISTER */
 void SetRandomSeed(uint32 seed)
 {
-	_random_seeds[0][0] = seed;
-	_random_seeds[0][1] = seed;
-	_random_seeds[1][0] = seed * 0x1234567;
-	_random_seeds[1][1] = _random_seeds[1][0];
+	_random.SetSeed(seed);
+	_interactive_random.SetSeed(seed * 0x1234567);
 }
 
 #ifdef RANDOM_DEBUG
 #include "../network/network_data.h"
+#include "../variables.h" /* _frame_counter */
+#include "../player_func.h"
+
 uint32 DoRandom(int line, const char *file)
 {
-	if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server))
+	if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server)) {
 		printf("Random [%d/%d] %s:%d\n",_frame_counter, (byte)_current_player, file, line);
-#else /* RANDOM_DEBUG */
-uint32 Random()
-{
+	}
+
+	return _random.Next();
+}
 #endif /* RANDOM_DEBUG */
-	const uint32 s = _random_seeds[0][0];
-	const uint32 t = _random_seeds[0][1];
-
-	_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7) + 1;
-	return _random_seeds[0][1] = ROR(s, 3) - 1;
-}
 #endif /* MERSENNE_TWISTER */
 
 #if defined(RANDOM_DEBUG) && !defined(MERSENNE_TWISTER)
@@ -148,9 +150,4 @@
 {
 	return GB(DoRandom(line, file), 0, 16) * max >> 16;
 }
-#else /* RANDOM_DEBUG & !MERSENNE_TWISTER */
-uint RandomRange(uint max)
-{
-	return GB(Random(), 0, 16) * max >> 16;
-}
 #endif /* RANDOM_DEBUG & !MERSENNE_TWISTER */
--- a/src/core/random_func.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/core/random_func.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file random_func.h */
+/** @file random_func.hpp */
 
 #ifndef RANDOM_FUNC_HPP
 #define RANDOM_FUNC_HPP
@@ -27,6 +27,35 @@
 // Doesn't work with network yet.
 // #define MERSENNE_TWISTER
 
+/**
+ * Structure to encapsulate the pseudo random number generators.
+ */
+struct Randomizer {
+	/** The state of the randomizer */
+	uint32 state[2];
+
+	/**
+	 * Generate the next pseudo random number
+	 * @return the random number
+	 */
+	uint32 Next();
+
+	/**
+	 * Generate the next pseudo random number scaled to max
+	 * @param max the maximum value of the returned random number
+	 * @return the random number
+	 */
+	uint32 Next(uint16 max);
+
+	/**
+	 * (Re)set the state of the random number generator.
+	 * @param seed the new state
+	 */
+	void SetSeed(uint32 seed);
+};
+extern Randomizer _random; ///< Random used in the game state calculations
+extern Randomizer _interactive_random; ///< Random used every else where is does not (directly) influence the game state
+
 void SetRandomSeed(uint32 seed);
 #ifdef RANDOM_DEBUG
 	#define Random() DoRandom(__LINE__, __FILE__)
@@ -34,12 +63,12 @@
 	#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
 	uint DoRandomRange(uint max, int line, const char *file);
 #else
-	uint32 Random();
-	uint RandomRange(uint max);
+	static inline uint32 Random() { return _random.Next(); }
+	static inline uint32 RandomRange(uint16 max) { return _random.Next(max); }
 #endif
 
-uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
-uint InteractiveRandomRange(uint max);
+static inline uint32 InteractiveRandom() { return _interactive_random.Next(); }
+static inline uint32 InteractiveRandomRange(uint16 max) { return _interactive_random.Next(max); }
 
 /**
  * Checks if a given randomize-number is below a given probability.
@@ -100,6 +129,4 @@
 	return Chance16I(a, b, r);
 }
 
-extern uint32 _random_seeds[2][2];
-
 #endif /* RANDOM_FUNC_HPP */
--- a/src/currency.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/currency.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,9 +6,10 @@
 #include "openttd.h"
 #include "currency.h"
 #include "news.h"
-#include "variables.h"
+#include "settings_type.h"
+#include "date_func.h"
+
 #include "table/strings.h"
-#include "date_func.h"
 
 	//   exchange rate    prefix             symbol_pos
 	//   |  separator        |     postfix   |
--- a/src/currency.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/currency.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,7 @@
 #define CURRENCY_H
 
 #include "date_type.h"
+#include "strings_type.h"
 
 enum {
 	CF_NOEURO = 0,
--- a/src/date.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/date.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "variables.h"
+#include "settings_type.h"
 #include "network/network.h"
 #include "network/network_data.h"
 #include "network/network_server.h"
@@ -13,9 +14,9 @@
 #include "functions.h"
 #include "date_func.h"
 #include "vehicle_base.h"
+#include "debug.h"
 #ifdef DEBUG_DUMP_COMMANDS
 #include "saveload.h"
-#include "town_map.h"
 #endif
 
 Year      _cur_year;
@@ -164,24 +165,6 @@
 
 /** Functions used by the IncreaseDate function */
 
-extern void OnNewDay_Train(Vehicle *v);
-extern void OnNewDay_RoadVeh(Vehicle *v);
-extern void OnNewDay_Aircraft(Vehicle *v);
-extern void OnNewDay_Ship(Vehicle *v);
-static void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
-extern void OnNewDay_DisasterVehicle(Vehicle *v);
-
-typedef void OnNewVehicleDayProc(Vehicle *v);
-
-static OnNewVehicleDayProc * _on_new_vehicle_day_proc[] = {
-	OnNewDay_Train,
-	OnNewDay_RoadVeh,
-	OnNewDay_Ship,
-	OnNewDay_Aircraft,
-	OnNewDay_EffectVehicle,
-	OnNewDay_DisasterVehicle,
-};
-
 extern void WaypointsDailyLoop();
 extern void ChatMessageDailyLoop();
 extern void EnginesDailyLoop();
@@ -224,7 +207,7 @@
 		if (v->IsValid()) {
 			/* Call the 32-day callback if needed */
 			CheckVehicle32Day(v);
-			_on_new_vehicle_day_proc[v->type](v);
+			v->OnNewDay();
 		}
 	}
 }
@@ -268,21 +251,10 @@
 	/* yes, call various monthly loops */
 	if (_game_mode != GM_MENU) {
 #ifdef DEBUG_DUMP_COMMANDS
-		std::map<TownID, uint32> town_pop;
-		for (TileIndex t = 0; t < MapSize(); t++) {
-			if (GetTileType(t) == MP_HOUSE && IsHouseCompleted(t)) {
-				uint32 pop = GetHouseSpecs(GetHouseType(t))->population;
-				town_pop[GetTownIndex(t)] += pop;
-			}
-		}
-
-		Town *t;
-		FOR_ALL_TOWNS(t) assert(t->population == town_pop[t->index]);
-
 		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);
+		DebugDumpCommands("ddc:save:%s\n", name);
 #endif /* DUMP_COMMANDS */
 		if (_opt.autosave != 0 && (_cur_month % _autosave_months[_opt.autosave]) == 0) {
 			_do_autosave = true;
--- a/src/debug.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/debug.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -59,50 +59,34 @@
 
 #if !defined(NO_DEBUG_MESSAGES)
 
-/** Functionized DEBUG macro for compilers that don't support
- * variadic macros (__VA_ARGS__) such as...yes MSVC2003 and lower */
-#if defined(NO_VARARG_MACRO)
-void CDECL DEBUG(int name, int level, ...)
-{
-	va_list va;
-	const char *dbg;
-	const DebugLevel *dl = &debug_level[name];
-
-	if (level != 0 && *dl->level < level) return;
-	dbg = dl->name;
-	va_start(va, level);
-#else
 void CDECL debug(const char *dbg, ...)
 {
 	va_list va;
 	va_start(va, dbg);
-#endif /* NO_VARARG_MACRO */
-	{
-		const char *s;
-		char buf[1024];
-
-		s = va_arg(va, const char*);
-		vsnprintf(buf, lengthof(buf), s, va);
-		va_end(va);
-#if defined(ENABLE_NETWORK)
-		if (_debug_socket != INVALID_SOCKET) {
-			char buf2[lengthof(buf) + 32];
+	const char *s;
+	char buf[1024];
 
-			snprintf(buf2, lengthof(buf2), "dbg: [%s] %s\n", dbg, buf);
-			send(_debug_socket, buf2, strlen(buf2), 0);
-		} else
+	s = va_arg(va, const char*);
+	vsnprintf(buf, lengthof(buf), s, va);
+	va_end(va);
+#if defined(ENABLE_NETWORK)
+	if (_debug_socket != INVALID_SOCKET) {
+		char buf2[lengthof(buf) + 32];
+
+		snprintf(buf2, lengthof(buf2), "dbg: [%s] %s\n", dbg, buf);
+		send(_debug_socket, buf2, strlen(buf2), 0);
+	} else
 #endif /* ENABLE_NETWORK */
-		{
+	{
 #if defined(WINCE)
-			/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
-			TCHAR tbuf[512];
-			_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
-			NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
+		/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
+		TCHAR tbuf[512];
+		_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
+		NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
 #else
-			fprintf(stderr, "dbg: [%s] %s\n", dbg, buf);
+		fprintf(stderr, "dbg: [%s] %s\n", dbg, buf);
 #endif
-			IConsoleDebug(dbg, buf);
-		}
+		IConsoleDebug(dbg, buf);
 	}
 }
 #endif /* NO_DEBUG_MESSAGES */
@@ -176,3 +160,20 @@
 
 	return dbgstr;
 }
+
+#ifdef DEBUG_DUMP_COMMANDS
+#include "fileio.h"
+
+void CDECL DebugDumpCommands(const char *s, ...)
+{
+	static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_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 */
--- a/src/debug.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/debug.h	Sun Feb 03 20:17:54 2008 +0000
@@ -19,44 +19,14 @@
  * 6.. - extremely detailed spamming
  */
 
-/* Of course MSVC 2003 and lower has no support for variadic macros
- * so we need to work around this... *sigh* */
-#if defined(_MSC_VER) && (_MSC_VER < 1400)
-	#define NO_VARARG_MACRO
-#endif
-
-#if defined(NO_VARARG_MACRO)
-	enum DebugLevelType {
-		ai,
-		driver,
-		grf,
-		map,
-		misc,
-		ms,
-		net,
-		sprite,
-		oldloader,
-		ntp,
-		npf,
-		yapf,
-		freetype,
-		sl,
-		station,
-	};
-#endif /* NO_VARARG_MACRO */
-
 #ifdef NO_DEBUG_MESSAGES
-	#if defined(NO_VARARG_MACRO)
-		static inline void DEBUG(int name, int level, ...) {}
-	#elif defined(__GNUC__) && (__GNUC__ < 3)
+	#if defined(__GNUC__) && (__GNUC__ < 3)
 		#define DEBUG(name, level, args...)
 	#else
 		#define DEBUG(name, level, ...)
 	#endif
 #else /* NO_DEBUG_MESSAGES */
-	#if defined(NO_VARARG_MACRO)
-		void CDECL DEBUG(int name, int level, ...);
-	#elif defined(__GNUC__) && (__GNUC__ < 3)
+	#if defined(__GNUC__) && (__GNUC__ < 3)
 		#define DEBUG(name, level, args...) if ((level == 0) || ( _debug_ ## name ## _level >= level)) debug(#name, args)
 	#else
 		#define DEBUG(name, level, ...) if (level == 0 || _debug_ ## name ## _level >= level) debug(#name, __VA_ARGS__)
@@ -78,9 +48,7 @@
 	extern int _debug_sl_level;
 	extern int _debug_station_level;
 
-	#if !defined(NO_VARARG_MACRO)
-		void CDECL debug(const char *dbg, ...);
-	#endif /* NO_VARARG_MACRO */
+	void CDECL debug(const char *dbg, ...);
 #endif /* NO_DEBUG_MESSAGES */
 
 void SetDebugString(const char *s);
@@ -132,4 +100,10 @@
 void ShowInfo(const char *str);
 void CDECL ShowInfoF(const char *str, ...);
 
+#ifdef DEBUG_DUMP_COMMANDS
+	void CDECL DebugDumpCommands(const char *s, ...);
+#else /* DEBUG_DUMP_COMMANDS */
+	static inline void DebugDumpCommands(const char *s, ...) {}
+#endif /* DEBUG_DUMP_COMMANDS */
+
 #endif /* DEBUG_H */
--- a/src/depot.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/depot.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,11 +6,12 @@
 #include "openttd.h"
 #include "depot.h"
 #include "landscape.h"
-#include "table/strings.h"
 #include "saveload.h"
 #include "order.h"
 #include "window_func.h"
 
+#include "table/strings.h"
+
 DEFINE_OLD_POOL_GENERIC(Depot, Depot)
 
 /**
--- a/src/depot_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/depot_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "roadveh.h"
 #include "ship.h"
 #include "aircraft.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "textbuf_gui.h"
 #include "viewport_func.h"
@@ -23,6 +21,10 @@
 #include "strings_func.h"
 #include "window_func.h"
 #include "vehicle_func.h"
+#include "player_func.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 /*
  * Since all depot window sizes aren't the same, we need to modify sizes a little.
--- a/src/direction_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/direction_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -30,6 +30,9 @@
 	INVALID_DIR = 0xFF,     ///< Flag for an invalid direction
 };
 
+/** Allow incrementing of Direction variables */
+DECLARE_POSTFIX_INCREMENT(Direction);
+
 /** Define basic enum properties */
 template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {};
 typedef TinyEnumT<Direction> DirectionByte; //typedefing-enumification of Direction
@@ -77,6 +80,7 @@
 	INVALID_DIAGDIR = 0xFF, ///< Flag for an invalid DiagDirection
 };
 
+/** Allow incrementing of DiagDirection variables */
 DECLARE_POSTFIX_INCREMENT(DiagDirection);
 
 /** Define basic enum properties */
--- a/src/disaster_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/disaster_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -22,7 +22,6 @@
 
 #include "industry_map.h"
 #include "station_map.h"
-#include "table/strings.h"
 #include "command_func.h"
 #include "tile_cmd.h"
 #include "news.h"
@@ -30,10 +29,10 @@
 #include "waypoint.h"
 #include "town.h"
 #include "industry.h"
-#include "player.h"
+#include "player_func.h"
 #include "airport.h"
 #include "variables.h"
-#include "table/sprites.h"
+#include "settings_type.h"
 #include "strings_func.h"
 #include "date_func.h"
 #include "functions.h"
@@ -41,6 +40,9 @@
 #include "vehicle_base.h"
 #include "sound_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+
 enum DisasterSubType {
 	ST_Zeppeliner,
 	ST_Zeppeliner_Shadow,
@@ -70,6 +72,9 @@
 				_current_player = OWNER_WATER;
 				DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 				_current_player = p;
+
+				/* update signals in buffer */
+				UpdateSignalsInBuffer();
 			}
 			break;
 
@@ -136,8 +141,7 @@
 
 	DisasterVehicleUpdateImage(v);
 	VehiclePositionChanged(v);
-	BeginVehicleMove(v);
-	EndVehicleMove(v);
+	MarkSingleVehicleDirty(v);
 }
 
 static void DeleteDisasterVeh(Vehicle *v)
@@ -545,8 +549,7 @@
 	if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1;
 
 	VehiclePositionChanged(v);
-	BeginVehicleMove(v);
-	EndVehicleMove(v);
+	MarkSingleVehicleDirty(v);
 }
 
 /**
@@ -704,8 +707,7 @@
 
 	if (++v->age > 8880) {
 		VehiclePositionChanged(v);
-		BeginVehicleMove(v);
-		EndVehicleMove(v);
+		MarkSingleVehicleDirty(v);
 		delete v;
 		return;
 	}
@@ -747,12 +749,6 @@
 	_disastervehicle_tick_procs[this->subtype](this);
 }
 
-
-void OnNewDay_DisasterVehicle(Vehicle *v)
-{
-	// not used
-}
-
 typedef void DisasterInitProc();
 
 
--- a/src/dock_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/dock_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_map.h"
 #include "station.h"
 #include "gui.h"
@@ -13,13 +11,18 @@
 #include "window_gui.h"
 #include "station_gui.h"
 #include "command_func.h"
-#include "variables.h"
+#include "settings_type.h"
 #include "water.h"
 #include "window_func.h"
 #include "vehicle_func.h"
 #include "sound_func.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
+#include "player_func.h"
+#include "slope_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static void ShowBuildDockStationPicker();
 static void ShowBuildDocksDepotPicker();
@@ -187,14 +190,11 @@
 		TileIndex tile_from;
 		TileIndex tile_to;
 
-		tile_from = tile_to = e->we.place.tile;
-		switch (GetTileSlope(tile_from, NULL)) {
-			case SLOPE_SW: tile_to += TileDiffXY(-1,  0); break;
-			case SLOPE_SE: tile_to += TileDiffXY( 0, -1); break;
-			case SLOPE_NW: tile_to += TileDiffXY( 0,  1); break;
-			case SLOPE_NE: tile_to += TileDiffXY( 1,  0); break;
-			default: break;
-		}
+		tile_from = e->we.place.tile;
+
+		DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile_from, NULL));
+		tile_to = (dir != INVALID_DIAGDIR ? TileAddByDiagDir(tile_from, ReverseDiagDir(dir)) : tile_from);
+
 		VpSetPresizeRange(tile_from, tile_to);
 	} break;
 
@@ -254,7 +254,13 @@
 			SetTileSelectSize(1, 1);
 		}
 
-		DrawStationCoverageAreaText(4, 50, SCT_ALL, rad);
+		int text_end = DrawStationCoverageAreaText(4, 50, SCT_ALL, rad) + 4;
+		if (text_end > w->widget[2].bottom) {
+			SetWindowDirty(w);
+			ResizeWindowForWidget(w, 2, 0, text_end - w->widget[2].bottom);
+			SetWindowDirty(w);
+		}
+
 		break;
 	}
 
--- a/src/driver.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/driver.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,9 +11,19 @@
 #include "music/music_driver.hpp"
 #include "video/video_driver.hpp"
 
+VideoDriver *_video_driver;
+char _ini_videodriver[32];
+int _num_resolutions;
+uint16 _resolutions[32][2];
+uint16 _cur_resolution[2];
+
 SoundDriver *_sound_driver;
+char _ini_sounddriver[32];
+
 MusicDriver *_music_driver;
-VideoDriver *_video_driver;
+char _ini_musicdriver[32];
+
+char _ini_blitter[32];
 
 static const char* GetDriverParam(const char* const* parm, const char* name)
 {
--- a/src/dummy_land.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/dummy_land.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,12 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "command_func.h"
+#include "viewport_func.h"
+
+#include "table/strings.h"
 #include "table/sprites.h"
-#include "viewport_func.h"
 
 static void DrawTile_Dummy(TileInfo *ti)
 {
--- a/src/economy.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/economy.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,10 +6,9 @@
 #include "openttd.h"
 #include "currency.h"
 #include "landscape.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "news.h"
-#include "player.h"
+#include "player_base.h"
+#include "player_func.h"
 #include "station.h"
 #include "command_func.h"
 #include "saveload.h"
@@ -42,8 +41,14 @@
 #include "sound_func.h"
 #include "track_type.h"
 #include "track_func.h"
+#include "road_func.h"
 #include "rail_map.h"
+#include "signal_func.h"
 #include "gfx_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 /**
  * Multiply two integer values and shift the results to right.
@@ -429,7 +434,9 @@
 
 		if (new_player != PLAYER_SPECTATOR) {
 			/* Update all signals because there can be new segment that was owned by two players
-			 * and signals were not propagated */
+			 * and signals were not propagated
+			 * Similiar with crossings - it is needed to bar crossings that weren't before
+			 * because of different owner of crossing and approaching train */
 			tile = 0;
 
 			do {
@@ -437,11 +444,16 @@
 					TrackBits tracks = GetTrackBits(tile);
 					do { // there may be two tracks with signals for TRACK_BIT_HORZ and TRACK_BIT_VERT
 						Track track = RemoveFirstTrack(&tracks);
-						if (HasSignalOnTrack(tile, track)) SetSignalsOnBothDir(tile, track);
+						if (HasSignalOnTrack(tile, track)) AddTrackToSignalBuffer(tile, track, new_player);
 					} while (tracks != TRACK_BIT_NONE);
+				} else if (IsLevelCrossingTile(tile) && IsTileOwner(tile, new_player)) {
+					UpdateLevelCrossing(tile);
 				}
 			} while (++tile != MapSize());
 		}
+
+		/* update signals in buffer */
+		UpdateSignalsInBuffer();
 	}
 
 	/* Change color of existing windows */
@@ -1471,7 +1483,7 @@
 			if (!cp->paid_for &&
 					cp->source != last_visited &&
 					HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) &&
-					(front_v->current_order.flags & OF_TRANSFER) == 0) {
+					(front_v->current_order.flags & OFB_TRANSFER) == 0) {
 				/* Deliver goods to the station */
 				st->time_since_unload = 0;
 
@@ -1484,8 +1496,8 @@
 				result |= 1;
 
 				SetBit(v->vehicle_flags, VF_CARGO_UNLOADING);
-			} else if (front_v->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) {
-				if (!cp->paid_for && (front_v->current_order.flags & OF_TRANSFER) != 0) {
+			} else if (front_v->current_order.flags & (OFB_UNLOAD | OFB_TRANSFER)) {
+				if (!cp->paid_for && (front_v->current_order.flags & OFB_TRANSFER) != 0) {
 					Money profit = GetTransportedGoodsIncome(
 						cp->count,
 						/* pay transfer vehicle for only the part of transfer it has done: ie. cargo_loaded_at_xy to here */
@@ -1538,7 +1550,7 @@
 
 	/* We have not waited enough time till the next round of loading/unloading */
 	if (--v->load_unload_time_rem != 0) {
-		if (_patches.improved_load && HasBit(v->current_order.flags, OFB_FULL_LOAD)) {
+		if (_patches.improved_load && HasBit(v->current_order.flags, OF_FULL_LOAD)) {
 			/* 'Reserve' this cargo for this vehicle, because we were first. */
 			for (; v != NULL; v = v->Next()) {
 				if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
@@ -1562,7 +1574,7 @@
 	int result = 0;
 	uint cap;
 
-	bool completely_empty  = true;
+	bool completely_emptied = true;
 	bool anything_unloaded = false;
 	bool anything_loaded   = false;
 	uint32 cargo_not_full  = 0;
@@ -1586,12 +1598,12 @@
 			uint amount_unloaded = _patches.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
 			bool remaining; // Are there cargo entities in this vehicle that can still be unloaded here?
 
-			if (HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.flags & OF_TRANSFER)) {
+			if (HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.flags & OFB_TRANSFER)) {
 				/* The cargo has reached it's final destination, the packets may now be destroyed */
 				remaining = v->cargo.MoveTo(NULL, amount_unloaded, CargoList::MTA_FINAL_DELIVERY, last_visited);
 
 				result |= 1;
-			} else if (u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) {
+			} else if (u->current_order.flags & (OFB_UNLOAD | OFB_TRANSFER)) {
 				remaining = v->cargo.MoveTo(&ge->cargo, amount_unloaded);
 				SetBit(ge->acceptance_pickup, GoodsEntry::PICKUP);
 
@@ -1610,7 +1622,7 @@
 
 			anything_unloaded = true;
 			if (_patches.gradual_loading && remaining) {
-				completely_empty = false;
+				completely_emptied = false;
 			} else {
 				/* We have finished unloading (cargo count == 0) */
 				ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING);
@@ -1620,7 +1632,7 @@
 		}
 
 		/* Do not pick up goods that we unloaded */
-		if (u->current_order.flags & OF_UNLOAD) continue;
+		if (u->current_order.flags & OFB_UNLOAD) continue;
 
 		/* update stats */
 		int t;
@@ -1663,9 +1675,9 @@
 			 * loading them. Since this will cause
 			 * VEHICLE_TRIGGER_EMPTY to be called at the time when
 			 * the whole vehicle chain is really totally empty, the
-			 * completely_empty assignment can then be safely
+			 * completely_emptied assignment can then be safely
 			 * removed; that's how TTDPatch behaves too. --pasky */
-			completely_empty = false;
+			completely_emptied = false;
 			anything_loaded = true;
 
 			ge->cargo.MoveTo(&v->cargo, cap, CargoList::MTA_CARGO_LOAD, st->xy);
@@ -1685,11 +1697,14 @@
 		}
 	}
 
+	/* Only set completly_emptied, if we just unloaded all remaining cargo */
+	completely_emptied &= anything_unloaded;
+
 	/* We update these variables here, so gradual loading still fills
 	 * all wagons at the same time instead of using the same 'improved'
 	 * loading algorithm for the wagons (only fill wagon when there is
 	 * enough to fill the previous wagons) */
-	if (_patches.improved_load && HasBit(u->current_order.flags, OFB_FULL_LOAD)) {
+	if (_patches.improved_load && HasBit(u->current_order.flags, OF_FULL_LOAD)) {
 		/* Update left cargo */
 		for (v = u; v != NULL; v = v->Next()) {
 			if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
@@ -1708,7 +1723,7 @@
 		}
 	} else {
 		bool finished_loading = true;
-		if (HasBit(v->current_order.flags, OFB_FULL_LOAD)) {
+		if (HasBit(v->current_order.flags, OF_FULL_LOAD)) {
 			if (_patches.full_load_any) {
 				/* if the aircraft carries passengers and is NOT full, then
 				 * continue loading, no matter how much mail is in */
@@ -1752,7 +1767,7 @@
 
 	v->load_unload_time_rem = unloading_time;
 
-	if (completely_empty) {
+	if (completely_emptied) {
 		TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
 	}
 
@@ -1856,7 +1871,7 @@
 	if (!p->is_active) return CMD_ERROR;
 
 	/* Protect new companies from hostile takeovers */
-	if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_7080_PROTECTED);
+	if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_PROTECTED);
 
 	/* Those lines are here for network-protection (clients can be slow) */
 	if (GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 0) return cost;
--- a/src/economy_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/economy_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -12,6 +12,7 @@
 #include "tile_type.h"
 #include "town_type.h"
 #include "industry_type.h"
+#include "player_type.h"
 
 struct Player;
 
--- a/src/economy_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/economy_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -127,4 +127,10 @@
 	INVALID_EXPENSES      = 0xFF,
 };
 
+/* The "steps" in loan size, in British Pounds! */
+enum {
+	LOAN_INTERVAL        = 10000,
+	LOAN_INTERVAL_OLD_AI = 50000,
+};
+
 #endif /* ECONOMY_TYPE_H */
--- a/src/elrail.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/elrail.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -49,7 +49,7 @@
 #include "openttd.h"
 #include "station_map.h"
 #include "viewport_func.h"
-#include "variables.h" /* ... same here */
+#include "settings_type.h"
 #include "landscape.h"
 #include "rail_type.h"
 #include "debug.h"
@@ -58,22 +58,27 @@
 #include "bridge_map.h"
 #include "bridge.h"
 #include "rail_map.h"
-#include "table/sprites.h"
-#include "table/elrail_data.h"
 #include "train.h"
 #include "rail_gui.h"
 #include "transparency.h"
 #include "tunnelbridge_map.h"
 #include "vehicle_func.h"
+#include "player_base.h"
+#include "tunnelbridge.h"
 
+#include "table/sprites.h"
+#include "table/elrail_data.h"
 
 static inline TLG GetTLG(TileIndex t)
 {
 	return (TLG)((HasBit(TileX(t), 0) << 1) + HasBit(TileY(t), 0));
 }
 
-/** Finds which Rail Bits are present on a given tile. For bridge tiles,
- * returns track bits under the bridge
+/**
+ * Finds which Electrified Rail Bits are present on a given tile.
+ * @param t tile to check
+ * @param override pointer to PCP override, can be NULL
+ * @return trackbits of tile if it is electrified
  */
 static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
 {
@@ -92,7 +97,7 @@
 
 		case MP_TUNNELBRIDGE:
 			if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
-			if (override != NULL && (IsTunnel(t) || DistanceMax(t, GetOtherBridgeEnd(t)) > 1)) {
+			if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
 				*override = 1 << GetTunnelBridgeDirection(t);
 			}
 			return AxisToTrackBits(DiagDirToAxis(GetTunnelBridgeDirection(t)));
@@ -125,13 +130,7 @@
 		} else if (*tileh != SLOPE_FLAT) {
 			*tileh = SLOPE_FLAT;
 		} else {
-			switch (GetTunnelBridgeDirection(tile)) {
-				case DIAGDIR_NE: *tileh = SLOPE_NE; break;
-				case DIAGDIR_SE: *tileh = SLOPE_SE; break;
-				case DIAGDIR_SW: *tileh = SLOPE_SW; break;
-				case DIAGDIR_NW: *tileh = SLOPE_NW; break;
-				default: NOT_REACHED();
-			}
+			*tileh = InclinedSlope(GetTunnelBridgeDirection(tile));
 		}
 	}
 }
@@ -382,8 +381,8 @@
 	TileIndex end = GetSouthernBridgeEnd(ti->tile);
 	TileIndex start = GetOtherBridgeEnd(end);
 
-	uint length = GetBridgeLength(start, end);
-	uint num = DistanceMax(ti->tile, start);
+	uint length = GetTunnelBridgeLength(start, end);
+	uint num = GetTunnelBridgeLength(ti->tile, start) + 1;
 	uint height;
 
 	const SortableSpriteStruct *sss;
@@ -420,7 +419,7 @@
 	}
 
 	/* need a pylon on the southern end of the bridge */
-	if (DistanceMax(ti->tile, start) == length) {
+	if (GetTunnelBridgeLength(ti->tile, start) + 1 == length) {
 		DiagDirection PCPpos = (axis == AXIS_X ? DIAGDIR_SW : DIAGDIR_SE);
 		Direction PPPpos = (axis == AXIS_X ? DIR_NW : DIR_NE);
 		if (HasBit(tlg, (axis == AXIS_X ? 0 : 1))) PPPpos = ReverseDir(PPPpos);
@@ -470,7 +469,6 @@
 
 int32 SettingsDisableElrail(int32 p1)
 {
-	EngineID e_id;
 	Vehicle *v;
 	Player *p;
 	bool disable = (p1 != 0);
@@ -480,8 +478,9 @@
 	const RailType new_railtype = disable ? RAILTYPE_RAIL : RAILTYPE_ELECTRIC;
 
 	/* walk through all train engines */
-	for (e_id = 0; e_id < NUM_TRAIN_ENGINES; e_id++) {
-		RailVehicleInfo *rv_info = &_rail_vehicle_info[e_id];
+	EngineID eid;
+	FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_TRAIN) {
+		RailVehicleInfo *rv_info = &_rail_vehicle_info[eid];
 		/* if it is an electric rail engine and its railtype is the wrong one */
 		if (rv_info->engclass == 2 && rv_info->railtype == old_railtype) {
 			/* change it to the proper one */
@@ -496,7 +495,7 @@
 			if (v->type == VEH_TRAIN && v->u.rail.railtype == RAILTYPE_ELECTRIC) {
 				/* this railroad vehicle is now compatible only with elrail,
 				*  so add there also normal rail compatibility */
-				v->u.rail.compatible_railtypes |= (1 << RAILTYPE_RAIL);
+				v->u.rail.compatible_railtypes |= RAILTYPES_RAIL;
 				v->u.rail.railtype = RAILTYPE_RAIL;
 				SetBit(v->u.rail.flags, VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL);
 			}
--- a/src/engine.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/engine.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,9 +5,9 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/strings.h"
 #include "engine.h"
-#include "player.h"
+#include "player_base.h"
+#include "player_func.h"
 #include "command_func.h"
 #include "news.h"
 #include "saveload.h"
@@ -15,7 +15,6 @@
 #include "train.h"
 #include "aircraft.h"
 #include "newgrf_cargo.h"
-#include "table/engines.h"
 #include "group.h"
 #include "misc/autoptr.hpp"
 #include "strings_func.h"
@@ -26,7 +25,12 @@
 #include "autoreplace_base.h"
 #include "autoreplace_gui.h"
 #include "string_func.h"
+#include "settings_type.h"
 
+#include "table/strings.h"
+#include "table/engines.h"
+
+Engine _engines[TOTAL_NUM_ENGINES];
 EngineInfo _engine_info[TOTAL_NUM_ENGINES];
 RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES];
 ShipVehicleInfo _ship_vehicle_info[NUM_SHIP_ENGINES];
@@ -53,6 +57,12 @@
 	do e->type = VEH_ROAD;     while (++e < &_engines[SHIP_ENGINES_INDEX]);
 	do e->type = VEH_SHIP;     while (++e < &_engines[AIRCRAFT_ENGINES_INDEX]);
 	do e->type = VEH_AIRCRAFT; while (++e < &_engines[TOTAL_NUM_ENGINES]);
+
+	/* Set up default engine names */
+	for (EngineID engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
+		EngineInfo *ei = &_engine_info[engine];
+		ei->string_id = STR_8000_KIRBY_PAUL_TANK_STEAM + engine;
+	}
 }
 
 
@@ -60,13 +70,10 @@
 
 void DeleteCustomEngineNames()
 {
-	uint i;
-	StringID old;
-
-	for (i = 0; i != TOTAL_NUM_ENGINES; i++) {
-		old = _engine_name_strings[i];
-		_engine_name_strings[i] = i + STR_8000_KIRBY_PAUL_TANK_STEAM;
-		DeleteName(old);
+	Engine *e;
+	FOR_ALL_ENGINES(e) {
+		free(e->name);
+		e->name = NULL;
 	}
 
 	_vehicle_design_names &= ~1;
@@ -78,18 +85,6 @@
 	DEBUG(misc, 1, "LoadCustomEngineNames: not done");
 }
 
-static void SetupEngineNames()
-{
-	StringID *name;
-
-	for (name = _engine_name_strings; name != endof(_engine_name_strings); name++)
-		*name = STR_SV_EMPTY;
-
-	DeleteCustomEngineNames();
-	LoadCustomEngineNames();
-}
-
-
 static void CalcEngineReliability(Engine *e)
 {
 	uint age = e->age;
@@ -133,8 +128,6 @@
 	/* Aging of vehicles stops, so account for that when starting late */
 	const Date aging_date = min(_date, ConvertYMDToDate(YEAR_ENGINE_AGING_STOPS, 0, 1));
 
-	SetupEngineNames();
-
 	for (e = _engines, ei = _engine_info; e != endof(_engines); e++, ei++) {
 		uint32 r;
 
@@ -179,12 +172,6 @@
 			e->flags |= ENGINE_AVAILABLE;
 			e->player_avail = 0;
 		}
-
-		/* This sets up type for the engine
-		 * It is needed if you want to ask the engine what type it is
-		 * It should hopefully be the same as when you ask a vehicle what it is
-		 * but using this, you can ask what type an engine number is
-		 * even if it is not a vehicle (yet)*/
 	}
 }
 
@@ -355,10 +342,9 @@
 
 void EnginesMonthlyLoop()
 {
-	Engine *e;
-
 	if (_cur_year < YEAR_ENGINE_AGING_STOPS) {
-		for (e = _engines; e != endof(_engines); e++) {
+		Engine *e;
+		FOR_ALL_ENGINES(e) {
 			/* Age the vehicle */
 			if (e->flags & ENGINE_AVAILABLE && e->age != 0xFFFF) {
 				e->age++;
@@ -401,23 +387,16 @@
  */
 CommandCost CmdRenameEngine(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	StringID str;
-
 	if (!IsEngineIndex(p1) || StrEmpty(_cmd_text)) return CMD_ERROR;
 
 	if (!IsUniqueEngineName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	str = AllocateName(_cmd_text, 0);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
-		StringID old_str = _engine_name_strings[p1];
-		_engine_name_strings[p1] = str;
-		DeleteName(old_str);
+		Engine *e = GetEngine(p1);
+		free(e->name);
+		e->name = strdup(_cmd_text);
 		_vehicle_design_names |= 3;
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
@@ -521,6 +500,10 @@
 EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
 {
 	const EngineRenew *er = GetEngineReplacement(erl, engine, group);
+	if (er == NULL && (group == DEFAULT_GROUP || (IsValidGroupID(group) && !GetGroup(group)->replace_protection))) {
+		/* We didn't find anything useful in the vehicle's own group so we will try ALL_GROUP */
+		er = GetEngineReplacement(erl, engine, ALL_GROUP);
+	}
 	return er == NULL ? INVALID_ENGINE : er->to;
 }
 
@@ -636,6 +619,7 @@
 	    SLE_VAR(Engine, preview_wait,        SLE_UINT8),
 	SLE_CONDNULL(1, 0, 44),
 	    SLE_VAR(Engine, player_avail,        SLE_UINT8),
+	SLE_CONDSTR(Engine, name,                SLE_STR, 0,                 84, SL_MAX_VERSION),
 
 	/* reserve extra space in savegame here. (currently 16 bytes) */
 	SLE_CONDNULL(16, 2, SL_MAX_VERSION),
@@ -661,14 +645,21 @@
 	}
 }
 
-static void LoadSave_ENGS()
+static void Load_ENGS()
 {
-	SlArray(_engine_name_strings, lengthof(_engine_name_strings), SLE_STRINGID);
+	StringID names[TOTAL_NUM_ENGINES];
+
+	SlArray(names, lengthof(names), SLE_STRINGID);
+
+	for (EngineID engine = 0; engine < lengthof(names); engine++) {
+		Engine *e = GetEngine(engine);
+		e->name = CopyFromOldName(names[engine]);
+	}
 }
 
 extern const ChunkHandler _engine_chunk_handlers[] = {
 	{ 'ENGN', Save_ENGN,     Load_ENGN,     CH_ARRAY          },
-	{ 'ENGS', LoadSave_ENGS, LoadSave_ENGS, CH_RIFF           },
+	{ 'ENGS', NULL,          Load_ENGS,     CH_RIFF           },
 	{ 'ERNW', Save_ERNW,     Load_ERNW,     CH_ARRAY | CH_LAST},
 };
 
@@ -677,4 +668,10 @@
 	/* Clean the engine renew pool and create 1 block in it */
 	_EngineRenew_pool.CleanPool();
 	_EngineRenew_pool.AddBlockToPool();
+
+	Engine *e;
+	FOR_ALL_ENGINES(e) {
+		free(e->name);
+		e->name = NULL;
+	}
 }
--- a/src/engine.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/engine.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,14 +5,14 @@
 #ifndef ENGINE_H
 #define ENGINE_H
 
-#include "oldpool.h"
 #include "rail_type.h"
 #include "cargo_type.h"
 #include "vehicle_type.h"
-#include "command_type.h"
 #include "gfx_type.h"
 #include "date_type.h"
 #include "sound_type.h"
+#include "player_type.h"
+#include "strings_type.h"
 
 enum RailVehicleTypes {
 	RAILVEH_SINGLEHEAD,  ///< indicates a "standalone" locomotive
@@ -42,6 +42,7 @@
 	byte capacity;
 	CargoID cargo_type;
 	byte ai_rank;
+	byte ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only
 	uint16 pow_wag_power;
 	byte pow_wag_weight;
 	byte visual_effect; // NOTE: this is not 100% implemented yet, at the moment it is only used as a 'fallback' value
@@ -110,9 +111,11 @@
 	byte misc_flags;
 	byte callbackmask;
 	byte retire_early; ///< Number of years early to retire vehicle
+	StringID string_id; ///< Default name of engine
 };
 
 struct Engine {
+	char *name;         ///< Custom name of engine
 	Date intro_date;
 	Date age;
 	uint16 reliability;
@@ -200,7 +203,7 @@
 	return end[type];
 }
 
-VARDEF Engine _engines[TOTAL_NUM_ENGINES];
+extern Engine _engines[TOTAL_NUM_ENGINES];
 #define FOR_ALL_ENGINES(e) for (e = _engines; e != endof(_engines); e++)
 #define FOR_ALL_ENGINEIDS_OF_TYPE(e, type) for (e = GetFirstEngineOfType(type); e != GetLastEngineOfType(type); e++)
 
@@ -211,8 +214,6 @@
 	return &_engines[i];
 }
 
-VARDEF StringID _engine_name_strings[TOTAL_NUM_ENGINES];
-
 static inline bool IsEngineIndex(uint index)
 {
 	return index < TOTAL_NUM_ENGINES;
--- a/src/engine_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/engine_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "gfx_func.h"
@@ -17,6 +15,8 @@
 #include "newgrf_engine.h"
 #include "strings_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
 
 static StringID GetEngineCategoryName(EngineID engine)
 {
--- a/src/fileio.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/fileio.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -33,6 +33,7 @@
 	FILE *handles[MAX_FILE_SLOTS];         ///< array of file handles we can have open
 	byte buffer_start[FIO_BUFFER_SIZE];    ///< local buffer when read from file
 	const char *filenames[MAX_FILE_SLOTS]; ///< array of filenames we (should) have open
+	char *shortnames[MAX_FILE_SLOTS];///< array of short names for spriteloader's use
 #if defined(LIMITED_FDS)
 	uint open_handles;                     ///< current amount of open handles
 	uint usage_count[MAX_FILE_SLOTS];      ///< count how many times this file has been opened
@@ -47,9 +48,9 @@
 	return _fio.pos + (_fio.buffer - _fio.buffer_start) - FIO_BUFFER_SIZE;
 }
 
-const char *FioGetFilename()
+const char *FioGetFilename(uint8 slot)
 {
-	return _fio.filename;
+	return _fio.shortnames[slot];
 }
 
 void FioSeekTo(uint32 pos, int mode)
@@ -131,6 +132,10 @@
 {
 	if (_fio.handles[slot] != NULL) {
 		fclose(_fio.handles[slot]);
+
+		free(_fio.shortnames[slot]);
+		_fio.shortnames[slot] = NULL;
+
 		_fio.handles[slot] = NULL;
 #if defined(LIMITED_FDS)
 		_fio.open_handles--;
@@ -184,6 +189,14 @@
 	FioCloseFile(slot); // if file was opened before, close it
 	_fio.handles[slot] = f;
 	_fio.filenames[slot] = filename;
+
+	/* Store the filename without path and extension */
+	const char *t = strrchr(filename, PATHSEPCHAR);
+	_fio.shortnames[slot] = strdup(t == NULL ? filename : t);
+	char *t2 = strrchr(_fio.shortnames[slot], '.');
+	if (t2 != NULL) *t2 = '\0';
+	strtolower(_fio.shortnames[slot]);
+
 #if defined(LIMITED_FDS)
 	_fio.usage_count[slot] = 0;
 	_fio.open_handles++;
@@ -646,7 +659,14 @@
 
 	_searchpaths[SP_PERSONAL_DIR] = strdup(tmp);
 #endif
+
+#if defined(WITH_SHARED_DIR)
+	snprintf(tmp, MAX_PATH, "%s", SHARED_DIR);
+	AppendPathSeparator(tmp, MAX_PATH);
+	_searchpaths[SP_SHARED_DIR] = strdup(tmp);
+#else
 	_searchpaths[SP_SHARED_DIR] = NULL;
+#endif
 
 #if defined(__MORPHOS__) || defined(__AMIGA__)
 	_searchpaths[SP_WORKING_DIR] = NULL;
--- a/src/fileio.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/fileio.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,11 +7,12 @@
 
 #include <map>
 #include <string>
+#include "core/enum_type.hpp"
 
 void FioSeekTo(uint32 pos, int mode);
 void FioSeekToFile(uint8 slot, uint32 pos);
 uint32 FioGetPos();
-const char *FioGetFilename();
+const char *FioGetFilename(uint8 slot);
 byte FioReadByte();
 uint16 FioReadWord();
 uint32 FioReadDword();
--- a/src/fios.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/fios.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,7 +8,6 @@
 #include "openttd.h"
 #include "variables.h"
 #include "heightmap.h"
-#include "table/strings.h"
 #include "fios.h"
 #include "fileio.h"
 #include "core/alloc_func.hpp"
@@ -20,10 +19,14 @@
 #ifdef WIN32
 # include <tchar.h>
 # include <io.h>
+# define access _taccess
+# define unlink _tunlink
 #else
 # include <unistd.h>
 #endif /* WIN32 */
 
+#include "table/strings.h"
+
 /* Variables to display file lists */
 int _fios_num;
 
@@ -201,7 +204,7 @@
 	CloseHandle(hand);
 	return 0;
 #else
-	return access(filename, 0) == 0;
+	return access(OTTD2FS(filename), 0) == 0;
 #endif
 }
 
--- a/src/fios.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/fios.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,8 @@
 #ifndef FIOS_H
 #define FIOS_H
 
+#include "strings_type.h"
+
 enum {
 	/**
 	 * Slot used for the GRF scanning and such. This slot cannot be reused
--- a/src/fontcache.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/fontcache.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/control_codes.h"
 #include "spritecache.h"
 #include "fontcache.h"
 #include "spriteloader/spriteloader.hpp"
@@ -15,8 +13,10 @@
 #include "core/alloc_func.hpp"
 #include "core/math_func.hpp"
 
+#include "table/sprites.h"
+#include "table/control_codes.h"
+
 #ifdef WITH_FREETYPE
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 #include FT_GLYPH_H
@@ -518,34 +518,38 @@
 
 void InitializeUnicodeGlyphMap()
 {
-	FontSize size;
-	SpriteID base;
-	SpriteID sprite;
-	uint i;
-
-	for (size = FS_NORMAL; size != FS_END; size++) {
+	for (FontSize size = FS_NORMAL; size != FS_END; size++) {
 		/* Clear out existing glyph map if it exists */
 		if (_unicode_glyph_map[size] != NULL) {
-			for (i = 0; i < 256; i++) {
+			for (uint i = 0; i < 256; i++) {
 				if (_unicode_glyph_map[size][i] != NULL) free(_unicode_glyph_map[size][i]);
 			}
 			free(_unicode_glyph_map[size]);
 			_unicode_glyph_map[size] = NULL;
 		}
 
-		base = GetFontBase(size);
-		for (i = ASCII_LETTERSTART; i < 256; i++) {
-			sprite = base + i - ASCII_LETTERSTART;
+		SpriteID base = GetFontBase(size);
+
+		for (uint i = ASCII_LETTERSTART; i < 256; i++) {
+			SpriteID sprite = base + i - ASCII_LETTERSTART;
 			if (!SpriteExists(sprite)) continue;
 			SetUnicodeGlyph(size, i, sprite);
 			SetUnicodeGlyph(size, i + SCC_SPRITE_START, sprite);
 		}
-		for (i = 0; i < lengthof(_default_unicode_map); i++) {
-			sprite = base + _default_unicode_map[i].key - ASCII_LETTERSTART;
-			SetUnicodeGlyph(size, _default_unicode_map[i].code, sprite);
+
+		for (uint i = 0; i < lengthof(_default_unicode_map); i++) {
+			byte key = _default_unicode_map[i].key;
+			if (key == CLRA || key == CLRL) {
+				/* Clear the glyph. This happens if the glyph at this code point
+				 * is non-standard and should be accessed by an SCC_xxx enum
+				 * entry only. */
+				if (key == CLRA || size == FS_LARGE) {
+					SetUnicodeGlyph(size, _default_unicode_map[i].code, 0);
+				}
+			} else {
+				SpriteID sprite = base + key - ASCII_LETTERSTART;
+				SetUnicodeGlyph(size, _default_unicode_map[i].code, sprite);
+			}
 		}
 	}
 }
-
-
-
--- a/src/functions.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/functions.h	Sun Feb 03 20:17:54 2008 +0000
@@ -36,12 +36,7 @@
 
 /* misc.cpp */
 bool IsCustomName(StringID id);
-void DeleteName(StringID id);
-char *GetName(char *buff, StringID id, const char *last);
-
-#define AllocateName(name, skip) RealAllocateName(name, skip, false)
-StringID RealAllocateName(const char *name, byte skip, bool check_double);
-void ConvertNameArray();
+char *CopyFromOldName(StringID id);
 
 /* misc functions */
 /**
--- a/src/genworld.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/genworld.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,7 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "landscape.h"
-#include "player.h"
-#include "table/sprites.h"
+#include "player_func.h"
 #include "variables.h"
 #include "thread.h"
 #include "command_func.h"
@@ -22,6 +21,12 @@
 #include "map_func.h"
 #include "date_func.h"
 #include "core/random_func.hpp"
+#include "engine.h"
+#include "settings_type.h"
+#include "newgrf_storage.h"
+#include "water.h"
+
+#include "table/sprites.h"
 
 void GenerateClearTile();
 void GenerateIndustries();
@@ -85,7 +90,7 @@
 	if (_network_dedicated) DEBUG(net, 0, "Generating map, please wait...");
 	/* Set the Random() seed to generation_seed so we produce the same map with the same seed */
 	if (_patches.generation_seed == GENERATE_NEW_SEED) _patches.generation_seed = _patches_newgame.generation_seed = InteractiveRandom();
-	_random_seeds[0][0] = _random_seeds[0][1] = _patches.generation_seed;
+	_random.SetSeed(_patches.generation_seed);
 	SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
 	SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0);
 
@@ -115,6 +120,8 @@
 		}
 	}
 
+	ClearStorageChanges(true);
+
 	/* These are probably pointless when inside the scenario editor. */
 	SetGeneratingWorldProgress(GWP_GAME_INIT, 3);
 	StartupPlayers();
--- a/src/genworld.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/genworld.h	Sun Feb 03 20:17:54 2008 +0000
@@ -15,6 +15,8 @@
 #define OTTDThread void
 #endif
 
+#include "player_type.h"
+
 /*
  * Order of these enums has to be the same as in lang/english.txt
  * Otherwise you will get inconsistent behaviour.
--- a/src/genworld_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/genworld_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,13 +5,10 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "heightmap.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
 #include "gfxinit.h"
-#include "player.h"
 #include "command_func.h"
 #include "variables.h"
 #include "settings_func.h"
@@ -27,6 +24,13 @@
 #include "fios.h"
 #include "string_func.h"
 #include "gfx_func.h"
+#include "settings_type.h"
+#include "widgets/dropdown_type.h"
+#include "widgets/dropdown_func.h"
+#include "core/random_func.hpp"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 /**
  * In what 'mode' the GenerateLandscapeWindowProc is.
@@ -70,15 +74,18 @@
 	GLAND_INDUSTRY_TEXT,
 	GLAND_INDUSTRY_PULLDOWN,
 
+	GLAND_RANDOM_TEXT,
 	GLAND_RANDOM_EDITBOX,
 	GLAND_RANDOM_BUTTON,
 
 	GLAND_GENERATE_BUTTON,
 
+	GLAND_START_DATE_TEXT1,
 	GLAND_START_DATE_DOWN,
 	GLAND_START_DATE_TEXT,
 	GLAND_START_DATE_UP,
 
+	GLAND_SNOW_LEVEL_TEXT1,
 	GLAND_SNOW_LEVEL_DOWN,
 	GLAND_SNOW_LEVEL_TEXT,
 	GLAND_SNOW_LEVEL_UP,
@@ -108,39 +115,47 @@
 {   WWT_IMGBTN_2, RESIZE_NONE, 12, 170, 246,  24,  78, SPR_SELECT_SUB_TROPICAL,      STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
 {   WWT_IMGBTN_2, RESIZE_NONE, 12, 250, 326,  24,  78, SPR_SELECT_TOYLAND,           STR_0311_SELECT_TOYLAND_LANDSCAPE},
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 149,  90, 101, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 150, 161,  90, 101, STR_0225,                     STR_NULL}, // Mapsize X
-{      WWT_PANEL, RESIZE_NONE, 12, 180, 215,  90, 101, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 216, 227,  90, 101, STR_0225,                     STR_NULL}, // Mapsize Y
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110,  91, 101, STR_MAPSIZE,                  STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 161,  90, 101, STR_NUM_1,                    STR_NULL}, // Mapsize X
+{       WWT_TEXT, RESIZE_NONE,  0, 168, 176,  91, 101, STR_BY,                       STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 180, 227,  90, 101, STR_NUM_2,                    STR_NULL}, // Mapsize Y
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 163, 112, 123, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 164, 175, 112, 123, STR_0225,                     STR_NULL}, // Number of towns
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 163, 130, 141, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 164, 175, 130, 141, STR_0225,                     STR_NULL}, // Number of industries
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 113, 123, STR_NUMBER_OF_TOWNS,          STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 175, 112, 123, 0x0,                          STR_NULL}, // Number of towns
 
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 131, 141, STR_NUMBER_OF_INDUSTRIES,     STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 175, 130, 141, 0x0,                          STR_NULL}, // Number of industries
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 153, 163, STR_RANDOM_SEED,              STR_NULL},
 {      WWT_PANEL, RESIZE_NONE, 15, 114, 207, 152, 163, 0x0,                          STR_RANDOM_SEED_HELP}, // Edit box for seed
 {    WWT_TEXTBTN, RESIZE_NONE, 12, 216, 326, 152, 163, STR_RANDOM,                   STR_RANDOM_HELP},
 
 {    WWT_TEXTBTN, RESIZE_NONE,  6, 243, 326, 228, 257, STR_GENERATE,                 STR_NULL}, // Generate button
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 212, 113, 123, STR_DATE,                     STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 216, 227, 112, 123, SPR_ARROW_DOWN,               STR_029E_MOVE_THE_STARTING_DATE},
-{      WWT_PANEL, RESIZE_NONE, 12, 228, 314, 112, 123, 0x0,                          STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 228, 314, 112, 123, STR_GENERATE_DATE,            STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 112, 123, SPR_ARROW_UP,                 STR_029F_MOVE_THE_STARTING_DATE},
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 278, 131, 141, STR_SNOW_LINE_HEIGHT,         STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 282, 293, 130, 141, SPR_ARROW_DOWN,               STR_SNOW_LINE_DOWN},
-{      WWT_PANEL, RESIZE_NONE, 12, 294, 314, 130, 141, 0x0,                          STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 294, 314, 130, 141, STR_NUM_3,                    STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 130, 141, SPR_ARROW_UP,                 STR_SNOW_LINE_UP},
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 219, 192, 203, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 192, 203, STR_0225,                     STR_NULL}, // Tree placer
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 219, 174, 185, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 174, 185, STR_0225,                     STR_NULL}, // Landscape generator
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 219, 210, 221, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 210, 221, STR_0225,                     STR_NULL}, // Terrain type
-{      WWT_PANEL, RESIZE_NONE, 12, 113, 219, 228, 239, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 228, 239, STR_0225,                     STR_NULL}, // Water quantity
-{      WWT_PANEL, RESIZE_NONE, 12, 113, 219, 246, 257, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 246, 257, STR_0225,                     STR_NULL}, // Map smoothness
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 193, 203, STR_TREE_PLACER,              STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 192, 203, 0x0,                          STR_NULL}, // Tree placer
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 175, 185, STR_LAND_GENERATOR,           STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 174, 185, 0x0,                          STR_NULL}, // Landscape generator
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 211, 221, STR_TERRAIN_TYPE,             STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 210, 221, 0x0,                          STR_NULL}, // Terrain type
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 229, 239, STR_QUANTITY_OF_SEA_LAKES,    STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 228, 239, 0x0,                          STR_NULL}, // Water quantity
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 245, 257, STR_SMOOTHNESS,               STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 246, 257, 0x0,                          STR_NULL}, // Map smoothness
 {   WIDGETS_END},
 };
 
@@ -154,34 +169,39 @@
 {   WWT_IMGBTN_2, RESIZE_NONE, 12, 170, 246,  24,  78, SPR_SELECT_SUB_TROPICAL,     STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
 {   WWT_IMGBTN_2, RESIZE_NONE, 12, 250, 326,  24,  78, SPR_SELECT_TOYLAND,          STR_0311_SELECT_TOYLAND_LANDSCAPE},
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 149, 112, 123, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 150, 161, 112, 123, STR_0225,                     STR_NULL}, // Mapsize X
-{      WWT_PANEL, RESIZE_NONE, 12, 180, 215, 112, 123, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 216, 227, 112, 123, STR_0225,                     STR_NULL}, // Mapsize Y
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 113, 123, STR_MAPSIZE,                  STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 161, 112, 123, STR_NUM_1,                    STR_NULL}, // Mapsize X
+{       WWT_TEXT, RESIZE_NONE,  0, 168, 176, 113, 123, STR_BY,                       STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 180, 227, 112, 123, STR_NUM_2,                    STR_NULL}, // Mapsize Y
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 163, 134, 145, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 164, 175, 134, 145, STR_0225,                     STR_NULL}, // Number of towns
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 163, 152, 163, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 164, 175, 152, 163, STR_0225,                     STR_NULL}, // Number of industries
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 135, 145, STR_NUMBER_OF_TOWNS,          STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 175, 134, 145, 0x0,                          STR_NULL}, // Number of towns
 
-{      WWT_PANEL, RESIZE_NONE, 15, 114, 194, 174, 185, 0x0,                          STR_RANDOM_SEED_HELP}, // Edit box for seed
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 203, 285, 174, 185, STR_RANDOM,                   STR_RANDOM_HELP},
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 153, 163, STR_NUMBER_OF_INDUSTRIES,     STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 175, 152, 163, 0x0,                          STR_NULL}, // Number of industries
+
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 175, 185, STR_RANDOM_SEED,              STR_NULL},
+{      WWT_PANEL, RESIZE_NONE, 15, 114, 207, 174, 185, 0x0,                          STR_RANDOM_SEED_HELP}, // Edit box for seed
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 216, 326, 174, 185, STR_RANDOM,                   STR_RANDOM_HELP},
 
 {    WWT_TEXTBTN, RESIZE_NONE,  6, 243, 326, 196, 225, STR_GENERATE,                 STR_NULL}, // Generate button
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 212, 135, 145, STR_DATE,                     STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 216, 227, 134, 145, SPR_ARROW_DOWN,               STR_029E_MOVE_THE_STARTING_DATE},
-{      WWT_PANEL, RESIZE_NONE, 12, 228, 314, 134, 145, 0x0,                          STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 228, 314, 134, 145, STR_GENERATE_DATE,            STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 134, 145, SPR_ARROW_UP,                 STR_029F_MOVE_THE_STARTING_DATE},
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 278, 153, 163, STR_SNOW_LINE_HEIGHT,         STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 282, 293, 152, 163, SPR_ARROW_DOWN,               STR_SNOW_LINE_DOWN},
-{      WWT_PANEL, RESIZE_NONE, 12, 294, 314, 152, 163, 0x0,                          STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 294, 314, 152, 163, STR_NUM_3,                    STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 152, 163, SPR_ARROW_UP,                 STR_SNOW_LINE_UP},
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 219, 196, 207, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 196, 207, STR_0225,                     STR_NULL}, // Tree placer
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 197, 207, STR_TREE_PLACER,              STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 196, 207, STR_0225,                     STR_NULL}, // Tree placer
 
-{      WWT_PANEL, RESIZE_NONE, 12, 114, 219, 214, 225, 0x0,                          STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 214, 225, STR_0225,                     STR_NULL}, // Heightmap rotation
+{       WWT_TEXT, RESIZE_NONE,  0,  12, 110, 215, 225, STR_HEIGHTMAP_ROTATION,       STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 114, 231, 214, 225, STR_0225,                     STR_NULL}, // Heightmap rotation
+
 {   WIDGETS_END},
 };
 
@@ -209,9 +229,21 @@
 	if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number);
 }
 
+static DropDownList *BuildMapsizeDropDown()
+{
+	DropDownList *list = new DropDownList();
+
+	for (uint i = 6; i <= 11; i++) {
+		DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false);
+		item->SetParam(0, 1 << i);
+		list->push_back(item);
+	}
+
+	return list;
+}
+
 static void GenerateLandscapeWndProc(Window *w, WindowEvent *e)
 {
-	static const StringID mapsizes[]    = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID};
 	static const StringID elevations[]  = {STR_682A_VERY_FLAT, STR_682B_FLAT, STR_682C_HILLY, STR_682D_MOUNTAINOUS, INVALID_STRING_ID};
 	static const StringID sea_lakes[]   = {STR_VERY_LOW, STR_6820_LOW, STR_6821_MEDIUM, STR_6822_HIGH, INVALID_STRING_ID};
 	static const StringID smoothness[]  = {STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID};
@@ -219,295 +251,293 @@
 	static const StringID rotation[]    = {STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE, STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE, INVALID_STRING_ID};
 	static const StringID landscape[]   = {STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL, STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS, INVALID_STRING_ID};
 	static const StringID num_towns[]   = {STR_NUM_VERY_LOW, STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID};
-	static const StringID num_inds[]    = {STR_26816_NONE, STR_NUM_VERY_LOW, STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID};
+	static const StringID num_inds[]    = {STR_NONE, STR_NUM_VERY_LOW, STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID};
 
 	/* Data used for the generate seed edit box */
 	static querystr_d _genseed_query;
 	static char _genseed_buffer[11];
 
 	glwp_modes mode = (glwp_modes)w->window_number;
-	uint y;
 
 	switch (e->event) {
-	case WE_CREATE:
-		w->LowerWidget(_opt_newgame.landscape + GLAND_TEMPERATE);
-
-		snprintf(_genseed_buffer, sizeof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
-		InitializeTextBuffer(&_genseed_query.text, _genseed_buffer, lengthof(_genseed_buffer), 120);
-		_genseed_query.caption = STR_NULL;
-		_genseed_query.afilter = CS_NUMERAL;
-		break;
-
-	case WE_PAINT:
-		/* You can't select smoothness if not terragenesis */
-		if (mode == GLWP_GENERATE) {
-			w->SetWidgetDisabledState(GLAND_SMOOTHNESS_TEXT,     _patches_newgame.land_generator == 0);
-			w->SetWidgetDisabledState(GLAND_SMOOTHNESS_PULLDOWN, _patches_newgame.land_generator == 0);
-		}
-		/* Disable snowline if not hilly */
-		w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_TEXT, _opt_newgame.landscape != LT_ARCTIC);
-		/* Disable town, industry and trees in SE */
-		w->SetWidgetDisabledState(GLAND_TOWN_TEXT,         _game_mode == GM_EDITOR);
-		w->SetWidgetDisabledState(GLAND_TOWN_PULLDOWN,     _game_mode == GM_EDITOR);
-		w->SetWidgetDisabledState(GLAND_INDUSTRY_TEXT,     _game_mode == GM_EDITOR);
-		w->SetWidgetDisabledState(GLAND_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR);
-		w->SetWidgetDisabledState(GLAND_TREE_TEXT,         _game_mode == GM_EDITOR);
-		w->SetWidgetDisabledState(GLAND_TREE_PULLDOWN,     _game_mode == GM_EDITOR);
-
-		w->SetWidgetDisabledState(GLAND_START_DATE_DOWN, _patches_newgame.starting_year <= MIN_YEAR);
-		w->SetWidgetDisabledState(GLAND_START_DATE_UP,   _patches_newgame.starting_year >= MAX_YEAR);
-		w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_DOWN, _patches_newgame.snow_line_height <= 2 || _opt_newgame.landscape != LT_ARCTIC);
-		w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_UP,   _patches_newgame.snow_line_height >= MAX_SNOWLINE_HEIGHT || _opt_newgame.landscape != LT_ARCTIC);
-
-		w->SetWidgetLoweredState(GLAND_TEMPERATE, _opt_newgame.landscape == LT_TEMPERATE);
-		w->SetWidgetLoweredState(GLAND_ARCTIC,    _opt_newgame.landscape == LT_ARCTIC);
-		w->SetWidgetLoweredState(GLAND_TROPICAL,  _opt_newgame.landscape == LT_TROPIC);
-		w->SetWidgetLoweredState(GLAND_TOYLAND,   _opt_newgame.landscape == LT_TOYLAND);
-		DrawWindowWidgets(w);
-
-		y = (mode == GLWP_HEIGHTMAP) ? 22 : 0;
-
-		DrawString( 12,  91 + y, STR_MAPSIZE, TC_FROMSTRING);
-		DrawString(119,  91 + y, mapsizes[_patches_newgame.map_x - 6], TC_BLACK);
-		DrawString(168,  91 + y, STR_BY, TC_FROMSTRING);
-		DrawString(182,  91 + y, mapsizes[_patches_newgame.map_y - 6], TC_BLACK);
-
-		DrawString( 12, 113 + y, STR_NUMBER_OF_TOWNS, TC_FROMSTRING);
-		DrawString( 12, 131 + y, STR_NUMBER_OF_INDUSTRIES, TC_FROMSTRING);
-		if (_game_mode == GM_EDITOR) {
-			DrawString(118, 113 + y, STR_6836_OFF, TC_BLACK);
-			DrawString(118, 131 + y, STR_6836_OFF, TC_BLACK);
-		} else {
-			DrawString(118, 113 + y, num_towns[_opt_newgame.diff.number_towns], TC_BLACK);
-			DrawString(118, 131 + y, num_inds[_opt_newgame.diff.number_industries], TC_BLACK);
-		}
-
-		DrawString( 12, 153 + y, STR_RANDOM_SEED, TC_FROMSTRING);
-		DrawEditBox(w, &_genseed_query, GLAND_RANDOM_EDITBOX);
-
-		DrawString(182, 113 + y, STR_DATE, TC_FROMSTRING);
-		SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
-		DrawStringCentered(271, 113 + y, STR_GENERATE_DATE, TC_FROMSTRING);
+		case WE_CREATE:
+			w->LowerWidget(_opt_newgame.landscape + GLAND_TEMPERATE);
 
-		DrawString(182, 131 + y, STR_SNOW_LINE_HEIGHT, TC_FROMSTRING);
-		SetDParam(0, _patches_newgame.snow_line_height);
-		DrawStringCentered(303, 131 + y, STR_SNOW_LINE_HEIGHT_NUM, TC_BLACK);
-
-		if (mode == GLWP_GENERATE) {
-			DrawString( 12, 175, STR_LAND_GENERATOR, TC_FROMSTRING);
-			DrawString(118, 175, landscape[_patches_newgame.land_generator], TC_BLACK);
-
-			DrawString( 12, 193, STR_TREE_PLACER, TC_FROMSTRING);
-			DrawString(118, 193, tree_placer[_patches_newgame.tree_placer], TC_BLACK);
-
-			DrawString( 12, 211, STR_TERRAIN_TYPE, TC_FROMSTRING);
-			DrawString(118, 211, elevations[_opt_newgame.diff.terrain_type], TC_BLACK);
-
-			DrawString( 12, 229, STR_QUANTITY_OF_SEA_LAKES, TC_FROMSTRING);
-			DrawString(118, 229, sea_lakes[_opt_newgame.diff.quantity_sea_lakes], TC_BLACK);
-
-			DrawString( 12, 247, STR_SMOOTHNESS, TC_FROMSTRING);
-			DrawString(118, 247, smoothness[_patches_newgame.tgen_smoothness], TC_BLACK);
-		} else {
-			char buffer[512];
-
-			if (_patches_newgame.heightmap_rotation == HM_CLOCKWISE) {
-				SetDParam(0, WP(w, generate_d).y);
-				SetDParam(1, WP(w, generate_d).x);
-			} else {
-				SetDParam(0, WP(w, generate_d).x);
-				SetDParam(1, WP(w, generate_d).y);
-			}
-			GetString(buffer, STR_HEIGHTMAP_SIZE, lastof(buffer));
-			DrawStringRightAligned(326, 91, STR_HEIGHTMAP_SIZE, TC_BLACK);
+			snprintf(_genseed_buffer, sizeof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
+			InitializeTextBuffer(&_genseed_query.text, _genseed_buffer, lengthof(_genseed_buffer), 120);
+			_genseed_query.caption = STR_NULL;
+			_genseed_query.afilter = CS_NUMERAL;
+			break;
 
-			DrawString( 12,  91, STR_HEIGHTMAP_NAME, TC_BLACK);
-			SetDParamStr(0, WP(w, generate_d).name);
-			DrawStringTruncated(114,  91, STR_ORANGE, TC_BLACK, 326 - 114 - GetStringBoundingBox(buffer).width - 5);
-
-			DrawString( 12, 197, STR_TREE_PLACER, TC_FROMSTRING);
-			DrawString(118, 197, tree_placer[_patches_newgame.tree_placer], TC_BLACK);
-
-			DrawString( 12, 215, STR_HEIGHTMAP_ROTATION, TC_FROMSTRING);
-			DrawString(118, 215, rotation[_patches_newgame.heightmap_rotation], TC_BLACK);
-		}
+		case WE_PAINT:
+			/* You can't select smoothness if not terragenesis */
+			if (mode == GLWP_GENERATE) {
+				w->SetWidgetDisabledState(GLAND_SMOOTHNESS_PULLDOWN, _patches_newgame.land_generator == 0);
+			}
+			/* Disable snowline if not hilly */
+			w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_TEXT, _opt_newgame.landscape != LT_ARCTIC);
+			/* Disable town, industry and trees in SE */
+			w->SetWidgetDisabledState(GLAND_TOWN_PULLDOWN,     _game_mode == GM_EDITOR);
+			w->SetWidgetDisabledState(GLAND_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR);
+			w->SetWidgetDisabledState(GLAND_TREE_PULLDOWN,     _game_mode == GM_EDITOR);
 
-		break;
-	case WE_CLICK:
-		switch (e->we.click.widget) {
-		case 0: DeleteWindow(w); break;
-		case GLAND_TEMPERATE: case GLAND_ARCTIC: case GLAND_TROPICAL: case GLAND_TOYLAND:
-			w->RaiseWidget(_opt_newgame.landscape + GLAND_TEMPERATE);
-			SetNewLandscapeType(e->we.click.widget - GLAND_TEMPERATE);
-			break;
-		case GLAND_MAPSIZE_X_TEXT: case GLAND_MAPSIZE_X_PULLDOWN: // Mapsize X
-			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, GLAND_MAPSIZE_X_PULLDOWN, 0, 0);
+			w->SetWidgetDisabledState(GLAND_START_DATE_DOWN, _patches_newgame.starting_year <= MIN_YEAR);
+			w->SetWidgetDisabledState(GLAND_START_DATE_UP,   _patches_newgame.starting_year >= MAX_YEAR);
+			w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_DOWN, _patches_newgame.snow_line_height <= 2 || _opt_newgame.landscape != LT_ARCTIC);
+			w->SetWidgetDisabledState(GLAND_SNOW_LEVEL_UP,   _patches_newgame.snow_line_height >= MAX_SNOWLINE_HEIGHT || _opt_newgame.landscape != LT_ARCTIC);
+
+			w->SetWidgetLoweredState(GLAND_TEMPERATE, _opt_newgame.landscape == LT_TEMPERATE);
+			w->SetWidgetLoweredState(GLAND_ARCTIC,    _opt_newgame.landscape == LT_ARCTIC);
+			w->SetWidgetLoweredState(GLAND_TROPICAL,  _opt_newgame.landscape == LT_TROPIC);
+			w->SetWidgetLoweredState(GLAND_TOYLAND,   _opt_newgame.landscape == LT_TOYLAND);
+
+			if (_game_mode == GM_EDITOR) {
+				w->widget[GLAND_TOWN_PULLDOWN].data     = STR_6836_OFF;
+				w->widget[GLAND_INDUSTRY_PULLDOWN].data = STR_6836_OFF;
+			} else {
+				w->widget[GLAND_TOWN_PULLDOWN].data     = num_towns[_opt_newgame.diff.number_towns];
+				w->widget[GLAND_INDUSTRY_PULLDOWN].data = num_inds[_opt_newgame.diff.number_industries];
+			}
+
+			if (mode == GLWP_GENERATE) {
+				w->widget[GLAND_LANDSCAPE_PULLDOWN].data  = landscape[_patches_newgame.land_generator];
+				w->widget[GLAND_TREE_PULLDOWN].data       = tree_placer[_patches_newgame.tree_placer];
+				w->widget[GLAND_TERRAIN_PULLDOWN].data    = elevations[_opt_newgame.diff.terrain_type];
+				w->widget[GLAND_WATER_PULLDOWN].data      = sea_lakes[_opt_newgame.diff.quantity_sea_lakes];
+				w->widget[GLAND_SMOOTHNESS_PULLDOWN].data = smoothness[_patches_newgame.tgen_smoothness];
+			} else {
+				w->widget[GLAND_TREE_PULLDOWN].data               = tree_placer[_patches_newgame.tree_placer];
+				w->widget[GLAND_HEIGHTMAP_ROTATION_PULLDOWN].data = rotation[_patches_newgame.heightmap_rotation];
+			}
+
+			/* Set parameters for widget text that requires them. */
+			SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1)); // GLAND_START_DATE_TEXT
+			SetDParam(1, 1 << _patches_newgame.map_x); // GLAND_MAPSIZE_X_PULLDOWN
+			SetDParam(2, 1 << _patches_newgame.map_y); // GLAND_MAPSIZE_Y_PULLDOWN
+			SetDParam(3, _patches_newgame.snow_line_height); // GLAND_SNOW_LEVEL_TEXT
+
+			DrawWindowWidgets(w);
+
+			DrawEditBox(w, &_genseed_query, GLAND_RANDOM_EDITBOX);
+
+			if (mode != GLWP_GENERATE) {
+				char buffer[512];
+
+				if (_patches_newgame.heightmap_rotation == HM_CLOCKWISE) {
+					SetDParam(0, WP(w, generate_d).y);
+					SetDParam(1, WP(w, generate_d).x);
+				} else {
+					SetDParam(0, WP(w, generate_d).x);
+					SetDParam(1, WP(w, generate_d).y);
+				}
+				GetString(buffer, STR_HEIGHTMAP_SIZE, lastof(buffer));
+				DrawStringRightAligned(326, 91, STR_HEIGHTMAP_SIZE, TC_BLACK);
+
+				DrawString( 12,  91, STR_HEIGHTMAP_NAME, TC_BLACK);
+				SetDParamStr(0, WP(w, generate_d).name);
+				DrawStringTruncated(114,  91, STR_ORANGE, TC_BLACK, 326 - 114 - GetStringBoundingBox(buffer).width - 5);
+			}
 			break;
-		case GLAND_MAPSIZE_Y_TEXT: case GLAND_MAPSIZE_Y_PULLDOWN: // Mapsize Y
-			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_y - 6, GLAND_MAPSIZE_Y_PULLDOWN, 0, 0);
-			break;
-		case GLAND_TOWN_TEXT: case GLAND_TOWN_PULLDOWN: // Number of towns
-			ShowDropDownMenu(w, num_towns, _opt_newgame.diff.number_towns, GLAND_TOWN_PULLDOWN, 0, 0);
+
+		case WE_CLICK:
+			switch (e->we.click.widget) {
+				case 0: DeleteWindow(w); break;
+
+				case GLAND_TEMPERATE:
+				case GLAND_ARCTIC:
+				case GLAND_TROPICAL:
+				case GLAND_TOYLAND:
+					w->RaiseWidget(_opt_newgame.landscape + GLAND_TEMPERATE);
+					SetNewLandscapeType(e->we.click.widget - GLAND_TEMPERATE);
+					break;
+
+				case GLAND_MAPSIZE_X_PULLDOWN: // Mapsize X
+					ShowDropDownList(w, BuildMapsizeDropDown(), _patches_newgame.map_x, GLAND_MAPSIZE_X_PULLDOWN);
+					break;
+
+				case GLAND_MAPSIZE_Y_PULLDOWN: // Mapsize Y
+					ShowDropDownList(w, BuildMapsizeDropDown(), _patches_newgame.map_y, GLAND_MAPSIZE_Y_PULLDOWN);
+					break;
+
+				case GLAND_TOWN_PULLDOWN: // Number of towns
+					ShowDropDownMenu(w, num_towns, _opt_newgame.diff.number_towns, GLAND_TOWN_PULLDOWN, 0, 0);
+					break;
+
+				case GLAND_INDUSTRY_PULLDOWN: // Number of industries
+					ShowDropDownMenu(w, num_inds, _opt_newgame.diff.number_industries, GLAND_INDUSTRY_PULLDOWN, 0, 0);
+					break;
+
+				case GLAND_RANDOM_BUTTON: // Random seed
+					_patches_newgame.generation_seed = InteractiveRandom();
+					snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
+					UpdateTextBufferSize(&_genseed_query.text);
+					SetWindowDirty(w);
+					break;
+
+				case GLAND_GENERATE_BUTTON: // Generate
+
+					UpdatePatches();
+
+					if (_patches.town_layout == TL_NO_ROADS) {
+						ShowQuery(
+							STR_TOWN_LAYOUT_WARNING_CAPTION,
+							STR_TOWN_LAYOUT_WARNING_MESSAGE,
+							w,
+							LandscapeGenerationCallback);
+					} else if (mode == GLWP_HEIGHTMAP &&
+							(WP(w, generate_d).x * 2 < (1U << _patches_newgame.map_x) ||
+							WP(w, generate_d).x / 2 > (1U << _patches_newgame.map_x) ||
+							WP(w, generate_d).y * 2 < (1U << _patches_newgame.map_y) ||
+							WP(w, generate_d).y / 2 > (1U << _patches_newgame.map_y))) {
+						ShowQuery(
+							STR_HEIGHTMAP_SCALE_WARNING_CAPTION,
+							STR_HEIGHTMAP_SCALE_WARNING_MESSAGE,
+							w,
+							LandscapeGenerationCallback);
+					} else {
+						StartGeneratingLandscape(mode);
+					}
+					break;
+
+				case GLAND_START_DATE_DOWN:
+				case GLAND_START_DATE_UP: // Year buttons
+					/* Don't allow too fast scrolling */
+					if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
+						w->HandleButtonClick(e->we.click.widget);
+						SetWindowDirty(w);
+
+						_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + e->we.click.widget - GLAND_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
+					}
+					_left_button_clicked = false;
+					break;
+
+				case GLAND_START_DATE_TEXT: // Year text
+					WP(w, generate_d).widget_id = GLAND_START_DATE_TEXT;
+					SetDParam(0, _patches_newgame.starting_year);
+					ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
+					break;
+
+				case GLAND_SNOW_LEVEL_DOWN:
+				case GLAND_SNOW_LEVEL_UP: // Snow line buttons
+					/* Don't allow too fast scrolling */
+					if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
+						w->HandleButtonClick(e->we.click.widget);
+						SetWindowDirty(w);
+
+						_patches_newgame.snow_line_height = Clamp(_patches_newgame.snow_line_height + e->we.click.widget - GLAND_SNOW_LEVEL_TEXT, 2, MAX_SNOWLINE_HEIGHT);
+					}
+					_left_button_clicked = false;
+					break;
+
+				case GLAND_SNOW_LEVEL_TEXT: // Snow line text
+					WP(w, generate_d).widget_id = GLAND_SNOW_LEVEL_TEXT;
+					SetDParam(0, _patches_newgame.snow_line_height);
+					ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
+					break;
+
+				case GLAND_TREE_PULLDOWN: // Tree placer
+					ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, GLAND_TREE_PULLDOWN, 0, 0);
+					break;
+
+				case GLAND_LANDSCAPE_PULLDOWN: // Landscape generator OR Heightmap rotation
+				/* case GLAND_HEIGHTMAP_ROTATION_TEXT: case GLAND_HEIGHTMAP_ROTATION_PULLDOWN:*/
+					if (mode == GLWP_HEIGHTMAP) {
+						ShowDropDownMenu(w, rotation, _patches_newgame.heightmap_rotation, GLAND_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0);
+					} else {
+						ShowDropDownMenu(w, landscape, _patches_newgame.land_generator, GLAND_LANDSCAPE_PULLDOWN, 0, 0);
+					}
+					break;
+
+				case GLAND_TERRAIN_PULLDOWN: // Terrain type
+					ShowDropDownMenu(w, elevations, _opt_newgame.diff.terrain_type, GLAND_TERRAIN_PULLDOWN, 0, 0);
+					break;
+
+				case GLAND_WATER_PULLDOWN: // Water quantity
+					ShowDropDownMenu(w, sea_lakes, _opt_newgame.diff.quantity_sea_lakes, GLAND_WATER_PULLDOWN, 0, 0);
+					break;
+
+				case GLAND_SMOOTHNESS_PULLDOWN: // Map smoothness
+					ShowDropDownMenu(w, smoothness, _patches_newgame.tgen_smoothness, GLAND_SMOOTHNESS_PULLDOWN, 0, 0);
+					break;
+			}
 			break;
-		case GLAND_INDUSTRY_TEXT: case GLAND_INDUSTRY_PULLDOWN: // Number of industries
-			ShowDropDownMenu(w, num_inds, _opt_newgame.diff.number_industries, GLAND_INDUSTRY_PULLDOWN, 0, 0);
+
+		case WE_MOUSELOOP:
+			HandleEditBox(w, &_genseed_query, GLAND_RANDOM_EDITBOX);
 			break;
-		case GLAND_RANDOM_BUTTON: // Random seed
-			_patches_newgame.generation_seed = InteractiveRandom();
-			snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
-			UpdateTextBufferSize(&_genseed_query.text);
+
+		case WE_KEYPRESS:
+			HandleEditBoxKey(w, &_genseed_query, GLAND_RANDOM_EDITBOX, e);
+			/* the seed is unsigned, therefore atoi cannot be used.
+			 * As 2^32 - 1 (MAX_UVALUE(uint32)) is a 'magic' value
+			 * (use random seed) it should not be possible to be
+			 * entered into the input field; the generate seed
+			 * button can be used instead. */
+			_patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, sizeof(_genseed_buffer) - 1), MAX_UVALUE(uint32) - 1);
+			break;
+
+		case WE_DROPDOWN_SELECT:
+			switch (e->we.dropdown.button) {
+				case GLAND_MAPSIZE_X_PULLDOWN:  _patches_newgame.map_x = e->we.dropdown.index; break;
+				case GLAND_MAPSIZE_Y_PULLDOWN:  _patches_newgame.map_y = e->we.dropdown.index; break;
+				case GLAND_TREE_PULLDOWN:       _patches_newgame.tree_placer = e->we.dropdown.index; break;
+				case GLAND_SMOOTHNESS_PULLDOWN: _patches_newgame.tgen_smoothness = e->we.dropdown.index;  break;
+
+				case GLAND_TOWN_PULLDOWN:
+					_opt_newgame.diff.number_towns = e->we.dropdown.index;
+					if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
+					DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
+					break;
+
+				case GLAND_INDUSTRY_PULLDOWN:
+					_opt_newgame.diff.number_industries = e->we.dropdown.index;
+					if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
+					DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
+					break;
+
+				case GLAND_LANDSCAPE_PULLDOWN:
+				/* case GLAND_HEIGHTMAP_PULLDOWN: */
+					if (mode == GLWP_HEIGHTMAP) {
+						_patches_newgame.heightmap_rotation = e->we.dropdown.index;
+					} else {
+						_patches_newgame.land_generator = e->we.dropdown.index;
+					}
+					break;
+
+				case GLAND_TERRAIN_PULLDOWN:
+					_opt_newgame.diff.terrain_type = e->we.dropdown.index;
+					if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
+					DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
+					break;
+
+				case GLAND_WATER_PULLDOWN:
+					_opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index;
+					if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
+					DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
+					break;
+			}
 			SetWindowDirty(w);
 			break;
-		case GLAND_GENERATE_BUTTON: // Generate
-
-			UpdatePatches();
-
-			if (_patches.town_layout == TL_NO_ROADS) {
-				ShowQuery(
-					STR_TOWN_LAYOUT_WARNING_CAPTION,
-					STR_TOWN_LAYOUT_WARNING_MESSAGE,
-					w,
-					LandscapeGenerationCallback);
-			} else if (mode == GLWP_HEIGHTMAP &&
-					(WP(w, generate_d).x * 2 < (1U << _patches_newgame.map_x) ||
-					WP(w, generate_d).x / 2 > (1U << _patches_newgame.map_x) ||
-					WP(w, generate_d).y * 2 < (1U << _patches_newgame.map_y) ||
-					WP(w, generate_d).y / 2 > (1U << _patches_newgame.map_y))) {
-				ShowQuery(
-					STR_HEIGHTMAP_SCALE_WARNING_CAPTION,
-					STR_HEIGHTMAP_SCALE_WARNING_MESSAGE,
-					w,
-					LandscapeGenerationCallback);
-
-			} else {
-				StartGeneratingLandscape(mode);
-			}
-			break;
-		case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons
-			/* Don't allow too fast scrolling */
-			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
-				w->HandleButtonClick(e->we.click.widget);
-				SetWindowDirty(w);
 
-				_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + e->we.click.widget - GLAND_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
-			}
-			_left_button_clicked = false;
-			break;
-		case GLAND_START_DATE_TEXT: // Year text
-			WP(w, generate_d).widget_id = GLAND_START_DATE_TEXT;
-			SetDParam(0, _patches_newgame.starting_year);
-			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
-			break;
-		case GLAND_SNOW_LEVEL_DOWN: case GLAND_SNOW_LEVEL_UP: // Snow line buttons
-			/* Don't allow too fast scrolling */
-			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
-				w->HandleButtonClick(e->we.click.widget);
-				SetWindowDirty(w);
+		case WE_ON_EDIT_TEXT:
+			if (e->we.edittext.str != NULL) {
+				int32 value = atoi(e->we.edittext.str);
 
-				_patches_newgame.snow_line_height = Clamp(_patches_newgame.snow_line_height + e->we.click.widget - GLAND_SNOW_LEVEL_TEXT, 2, MAX_SNOWLINE_HEIGHT);
-			}
-			_left_button_clicked = false;
-			break;
-		case GLAND_SNOW_LEVEL_TEXT: // Snow line text
-			WP(w, generate_d).widget_id = GLAND_SNOW_LEVEL_TEXT;
-			SetDParam(0, _patches_newgame.snow_line_height);
-			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
-			break;
-		case GLAND_TREE_TEXT: case GLAND_TREE_PULLDOWN: // Tree placer
-			ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, GLAND_TREE_PULLDOWN, 0, 0);
-			break;
-		case GLAND_LANDSCAPE_TEXT: case GLAND_LANDSCAPE_PULLDOWN: // Landscape generator OR Heightmap rotation
-		/* case GLAND_HEIGHTMAP_ROTATION_TEXT: case GLAND_HEIGHTMAP_ROTATION_PULLDOWN:*/
-			if (mode == GLWP_HEIGHTMAP) {
-				ShowDropDownMenu(w, rotation, _patches_newgame.heightmap_rotation, GLAND_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0);
-			} else {
-				ShowDropDownMenu(w, landscape, _patches_newgame.land_generator, GLAND_LANDSCAPE_PULLDOWN, 0, 0);
+				switch (WP(w, generate_d).widget_id) {
+					case GLAND_START_DATE_TEXT:
+						w->InvalidateWidget(GLAND_START_DATE_TEXT);
+						_patches_newgame.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR);
+						break;
+
+					case GLAND_SNOW_LEVEL_TEXT:
+						w->InvalidateWidget(GLAND_SNOW_LEVEL_TEXT);
+						_patches_newgame.snow_line_height = Clamp(value, 2, MAX_SNOWLINE_HEIGHT);
+						break;
+				}
+
+				SetWindowDirty(w);
 			}
 			break;
-		case GLAND_TERRAIN_TEXT: case GLAND_TERRAIN_PULLDOWN: // Terrain type
-			ShowDropDownMenu(w, elevations, _opt_newgame.diff.terrain_type, GLAND_TERRAIN_PULLDOWN, 0, 0);
-			break;
-		case GLAND_WATER_TEXT: case GLAND_WATER_PULLDOWN: // Water quantity
-			ShowDropDownMenu(w, sea_lakes, _opt_newgame.diff.quantity_sea_lakes, GLAND_WATER_PULLDOWN, 0, 0);
-			break;
-		case GLAND_SMOOTHNESS_TEXT: case GLAND_SMOOTHNESS_PULLDOWN: // Map smoothness
-			ShowDropDownMenu(w, smoothness, _patches_newgame.tgen_smoothness, GLAND_SMOOTHNESS_PULLDOWN, 0, 0);
-			break;
-		}
-		break;
-
-	case WE_MOUSELOOP:
-		HandleEditBox(w, &_genseed_query, GLAND_RANDOM_EDITBOX);
-		break;
-
-	case WE_KEYPRESS:
-		HandleEditBoxKey(w, &_genseed_query, GLAND_RANDOM_EDITBOX, e);
-		/* the seed is unsigned, therefore atoi cannot be used.
-		 * As 2^32 - 1 (MAX_UVALUE(uint32)) is a 'magic' value
-		 * (use random seed) it should not be possible to be
-		 * entered into the input field; the generate seed
-		 * button can be used instead. */
-		_patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, sizeof(_genseed_buffer) - 1), MAX_UVALUE(uint32) - 1);
-		break;
-
-	case WE_DROPDOWN_SELECT:
-		switch (e->we.dropdown.button) {
-			case GLAND_MAPSIZE_X_PULLDOWN:  _patches_newgame.map_x = e->we.dropdown.index + 6; break;
-			case GLAND_MAPSIZE_Y_PULLDOWN:  _patches_newgame.map_y = e->we.dropdown.index + 6; break;
-			case GLAND_TREE_PULLDOWN:       _patches_newgame.tree_placer = e->we.dropdown.index; break;
-			case GLAND_SMOOTHNESS_PULLDOWN: _patches_newgame.tgen_smoothness = e->we.dropdown.index;  break;
-
-			case GLAND_TOWN_PULLDOWN:
-				_opt_newgame.diff.number_towns = e->we.dropdown.index;
-				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
-				DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
-				break;
-			case GLAND_INDUSTRY_PULLDOWN:
-				_opt_newgame.diff.number_industries = e->we.dropdown.index;
-				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
-				DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
-				break;
-			case GLAND_LANDSCAPE_PULLDOWN:
-			/* case GLAND_HEIGHTMAP_PULLDOWN: */
-				if (mode == GLWP_HEIGHTMAP) {
-					_patches_newgame.heightmap_rotation = e->we.dropdown.index;
-				} else {
-					_patches_newgame.land_generator = e->we.dropdown.index;
-				}
-				break;
-			case GLAND_TERRAIN_PULLDOWN:
-				_opt_newgame.diff.terrain_type = e->we.dropdown.index;
-				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
-				DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
-				break;
-			case GLAND_WATER_PULLDOWN:
-				_opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index;
-				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
-				DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
-				break;
-		}
-		SetWindowDirty(w);
-		break;
-
-	case WE_ON_EDIT_TEXT: {
-		if (e->we.edittext.str != NULL) {
-			int32 value = atoi(e->we.edittext.str);
-
-			switch (WP(w, generate_d).widget_id) {
-			case GLAND_START_DATE_TEXT:
-				w->InvalidateWidget(GLAND_START_DATE_TEXT);
-				_patches_newgame.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR);
-				break;
-			case GLAND_SNOW_LEVEL_TEXT:
-				w->InvalidateWidget(GLAND_SNOW_LEVEL_TEXT);
-				_patches_newgame.snow_line_height = Clamp(value, 2, MAX_SNOWLINE_HEIGHT);
-				break;
-			}
-
-			SetWindowDirty(w);
-		}
-		break;
-	}
 	}
 }
 
@@ -593,9 +623,11 @@
 	CSCEN_MAPSIZE_X_PULLDOWN,
 	CSCEN_MAPSIZE_Y_TEXT,
 	CSCEN_MAPSIZE_Y_PULLDOWN,
+	CSCEN_START_DATE_LABEL,
 	CSCEN_START_DATE_DOWN,
 	CSCEN_START_DATE_TEXT,
 	CSCEN_START_DATE_UP,
+	CSCEN_FLAT_LAND_HEIGHT_LABEL,
 	CSCEN_FLAT_LAND_HEIGHT_DOWN,
 	CSCEN_FLAT_LAND_HEIGHT_TEXT,
 	CSCEN_FLAT_LAND_HEIGHT_UP
@@ -604,115 +636,123 @@
 
 static void CreateScenarioWndProc(Window *w, WindowEvent *e)
 {
-	static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID};
-
 	switch (e->event) {
-	case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + CSCEN_TEMPERATE); break;
-
-	case WE_PAINT:
-		w->SetWidgetDisabledState(CSCEN_START_DATE_DOWN,       _patches_newgame.starting_year <= MIN_YEAR);
-		w->SetWidgetDisabledState(CSCEN_START_DATE_UP,         _patches_newgame.starting_year >= MAX_YEAR);
-		w->SetWidgetDisabledState(CSCEN_FLAT_LAND_HEIGHT_DOWN, _patches_newgame.se_flat_world_height <= 0);
-		w->SetWidgetDisabledState(CSCEN_FLAT_LAND_HEIGHT_UP,   _patches_newgame.se_flat_world_height >= MAX_TILE_HEIGHT);
-
-		w->SetWidgetLoweredState(CSCEN_TEMPERATE, _opt_newgame.landscape == LT_TEMPERATE);
-		w->SetWidgetLoweredState(CSCEN_ARCTIC,    _opt_newgame.landscape == LT_ARCTIC);
-		w->SetWidgetLoweredState(CSCEN_TROPICAL,  _opt_newgame.landscape == LT_TROPIC);
-		w->SetWidgetLoweredState(CSCEN_TOYLAND,   _opt_newgame.landscape == LT_TOYLAND);
-		DrawWindowWidgets(w);
-
-		DrawStringRightAligned(211, 97, STR_MAPSIZE, TC_FROMSTRING);
-		DrawString(            221, 97, mapsizes[_patches_newgame.map_x - 6], TC_BLACK);
-		DrawStringCentered(    272, 97, STR_BY, TC_FROMSTRING);
-		DrawString(            284, 97, mapsizes[_patches_newgame.map_y - 6], TC_BLACK);
-
-		DrawStringRightAligned(211, 115, STR_DATE, TC_FROMSTRING);
-		SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
-		DrawStringCentered(271, 115, STR_GENERATE_DATE, TC_FROMSTRING);
+		case WE_CREATE:
+			w->LowerWidget(_opt_newgame.landscape + CSCEN_TEMPERATE);
+			break;
 
-		DrawStringRightAligned(278, 133, STR_FLAT_WORLD_HEIGHT, TC_FROMSTRING);
-		SetDParam(0, _patches_newgame.se_flat_world_height);
-		DrawStringCentered(303, 133, STR_FLAT_WORLD_HEIGHT_NUM, TC_BLACK);
+		case WE_PAINT:
+			w->SetWidgetDisabledState(CSCEN_START_DATE_DOWN,       _patches_newgame.starting_year <= MIN_YEAR);
+			w->SetWidgetDisabledState(CSCEN_START_DATE_UP,         _patches_newgame.starting_year >= MAX_YEAR);
+			w->SetWidgetDisabledState(CSCEN_FLAT_LAND_HEIGHT_DOWN, _patches_newgame.se_flat_world_height <= 0);
+			w->SetWidgetDisabledState(CSCEN_FLAT_LAND_HEIGHT_UP,   _patches_newgame.se_flat_world_height >= MAX_TILE_HEIGHT);
 
-		break;
-	case WE_CLICK:
-		switch (e->we.click.widget) {
-		case CSCEN_TEMPERATE: case CSCEN_ARCTIC: case CSCEN_TROPICAL: case CSCEN_TOYLAND:
-			w->RaiseWidget(_opt_newgame.landscape + CSCEN_TEMPERATE);
-			SetNewLandscapeType(e->we.click.widget - CSCEN_TEMPERATE);
+			w->SetWidgetLoweredState(CSCEN_TEMPERATE, _opt_newgame.landscape == LT_TEMPERATE);
+			w->SetWidgetLoweredState(CSCEN_ARCTIC,    _opt_newgame.landscape == LT_ARCTIC);
+			w->SetWidgetLoweredState(CSCEN_TROPICAL,  _opt_newgame.landscape == LT_TROPIC);
+			w->SetWidgetLoweredState(CSCEN_TOYLAND,   _opt_newgame.landscape == LT_TOYLAND);
+
+			/* Set parameters for widget text that requires them */
+			SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1)); // CSCEN_START_DATE_TEXT
+			SetDParam(1, 1 << _patches_newgame.map_x); // CSCEN_MAPSIZE_X_PULLDOWN
+			SetDParam(2, 1 << _patches_newgame.map_y); // CSCEN_MAPSIZE_Y_PULLDOWN
+			SetDParam(3, _patches_newgame.se_flat_world_height); // CSCEN_FLAT_LAND_HEIGHT_TEXT
+
+			DrawWindowWidgets(w);
+
 			break;
-		case CSCEN_MAPSIZE_X_TEXT: case CSCEN_MAPSIZE_X_PULLDOWN: // Mapsize X
-			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, CSCEN_MAPSIZE_X_PULLDOWN, 0, 0);
-			break;
-		case CSCEN_MAPSIZE_Y_TEXT: case CSCEN_MAPSIZE_Y_PULLDOWN: // Mapsize Y
-			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_y - 6, CSCEN_MAPSIZE_Y_PULLDOWN, 0, 0);
+
+		case WE_CLICK:
+			switch (e->we.click.widget) {
+				case CSCEN_TEMPERATE:
+				case CSCEN_ARCTIC:
+				case CSCEN_TROPICAL:
+				case CSCEN_TOYLAND:
+					w->RaiseWidget(_opt_newgame.landscape + CSCEN_TEMPERATE);
+					SetNewLandscapeType(e->we.click.widget - CSCEN_TEMPERATE);
+					break;
+
+				case CSCEN_MAPSIZE_X_PULLDOWN: // Mapsize X
+					ShowDropDownList(w, BuildMapsizeDropDown(), _patches_newgame.map_x, CSCEN_MAPSIZE_X_PULLDOWN);
+					break;
+
+				case CSCEN_MAPSIZE_Y_PULLDOWN: // Mapsize Y
+					ShowDropDownList(w, BuildMapsizeDropDown(), _patches_newgame.map_y, CSCEN_MAPSIZE_Y_PULLDOWN);
+					break;
+
+				case CSCEN_EMPTY_WORLD: // Empty world / flat world
+					StartGeneratingLandscape(GLWP_SCENARIO);
+					break;
+
+				case CSCEN_RANDOM_WORLD: // Generate
+					ShowGenerateLandscape();
+					break;
+
+				case CSCEN_START_DATE_DOWN:
+				case CSCEN_START_DATE_UP: // Year buttons
+					/* Don't allow too fast scrolling */
+					if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
+						w->HandleButtonClick(e->we.click.widget);
+						SetWindowDirty(w);
+
+						_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + e->we.click.widget - CSCEN_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
+					}
+					_left_button_clicked = false;
+					break;
+
+				case CSCEN_START_DATE_TEXT: // Year text
+					WP(w, generate_d).widget_id = CSCEN_START_DATE_TEXT;
+					SetDParam(0, _patches_newgame.starting_year);
+					ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
+					break;
+
+				case CSCEN_FLAT_LAND_HEIGHT_DOWN:
+				case CSCEN_FLAT_LAND_HEIGHT_UP: // Height level buttons
+					/* Don't allow too fast scrolling */
+					if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
+						w->HandleButtonClick(e->we.click.widget);
+						SetWindowDirty(w);
+
+						_patches_newgame.se_flat_world_height = Clamp(_patches_newgame.se_flat_world_height + e->we.click.widget - CSCEN_FLAT_LAND_HEIGHT_TEXT, 0, MAX_TILE_HEIGHT);
+					}
+					_left_button_clicked = false;
+					break;
+
+				case CSCEN_FLAT_LAND_HEIGHT_TEXT: // Height level text
+					WP(w, generate_d).widget_id = CSCEN_FLAT_LAND_HEIGHT_TEXT;
+					SetDParam(0, _patches_newgame.se_flat_world_height);
+					ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
+					break;
+			}
 			break;
-		case CSCEN_EMPTY_WORLD: // Empty world / flat world
-			StartGeneratingLandscape(GLWP_SCENARIO);
+
+		case WE_DROPDOWN_SELECT:
+			switch (e->we.dropdown.button) {
+				case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index; break;
+				case CSCEN_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index; break;
+			}
+			SetWindowDirty(w);
 			break;
-		case CSCEN_RANDOM_WORLD: // Generate
-			ShowGenerateLandscape();
-			break;
-		case CSCEN_START_DATE_DOWN: case CSCEN_START_DATE_UP: // Year buttons
-			/* Don't allow too fast scrolling */
-			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
-				w->HandleButtonClick(e->we.click.widget);
+
+		case WE_ON_EDIT_TEXT:
+			if (e->we.edittext.str != NULL) {
+				int32 value = atoi(e->we.edittext.str);
+
+				switch (WP(w, generate_d).widget_id) {
+					case CSCEN_START_DATE_TEXT:
+						w->InvalidateWidget(CSCEN_START_DATE_TEXT);
+						_patches_newgame.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR);
+						break;
+
+					case CSCEN_FLAT_LAND_HEIGHT_TEXT:
+						w->InvalidateWidget(CSCEN_FLAT_LAND_HEIGHT_TEXT);
+						_patches_newgame.se_flat_world_height = Clamp(value, 0, MAX_TILE_HEIGHT);
+						break;
+				}
+
 				SetWindowDirty(w);
-
-				_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + e->we.click.widget - CSCEN_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
 			}
-			_left_button_clicked = false;
-			break;
-		case CSCEN_START_DATE_TEXT: // Year text
-			WP(w, generate_d).widget_id = CSCEN_START_DATE_TEXT;
-			SetDParam(0, _patches_newgame.starting_year);
-			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
-			break;
-		case CSCEN_FLAT_LAND_HEIGHT_DOWN: case CSCEN_FLAT_LAND_HEIGHT_UP: // Height level buttons
-			/* Don't allow too fast scrolling */
-			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
-				w->HandleButtonClick(e->we.click.widget);
-				SetWindowDirty(w);
-
-				_patches_newgame.se_flat_world_height = Clamp(_patches_newgame.se_flat_world_height + e->we.click.widget - CSCEN_FLAT_LAND_HEIGHT_TEXT, 0, MAX_TILE_HEIGHT);
-			}
-			_left_button_clicked = false;
-			break;
-		case CSCEN_FLAT_LAND_HEIGHT_TEXT: // Height level text
-			WP(w, generate_d).widget_id = CSCEN_FLAT_LAND_HEIGHT_TEXT;
-			SetDParam(0, _patches_newgame.se_flat_world_height);
-			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
 			break;
-		}
-		break;
-
-	case WE_DROPDOWN_SELECT:
-		switch (e->we.dropdown.button) {
-			case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break;
-			case CSCEN_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index + 6; break;
-		}
-		SetWindowDirty(w);
-		break;
-
-	case WE_ON_EDIT_TEXT: {
-		if (e->we.edittext.str != NULL) {
-			int32 value = atoi(e->we.edittext.str);
-
-			switch (WP(w, generate_d).widget_id) {
-			case CSCEN_START_DATE_TEXT:
-				w->InvalidateWidget(CSCEN_START_DATE_TEXT);
-				_patches_newgame.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR);
-				break;
-			case CSCEN_FLAT_LAND_HEIGHT_TEXT:
-				w->InvalidateWidget(CSCEN_FLAT_LAND_HEIGHT_TEXT);
-				_patches_newgame.se_flat_world_height = Clamp(value, 0, MAX_TILE_HEIGHT);
-				break;
-			}
-
-			SetWindowDirty(w);
-		}
-		break;
-	}
 	}
 }
 
@@ -729,17 +769,19 @@
 {    WWT_TEXTBTN, RESIZE_NONE,  6,  12, 115,  95, 124, STR_SE_FLAT_WORLD,       STR_SE_FLAT_WORLD_TIP},         // Empty (sea-level) map
 {    WWT_TEXTBTN, RESIZE_NONE,  6,  12, 115, 131, 160, STR_SE_RANDOM_LAND,      STR_022A_GENERATE_RANDOM_LAND}, // Generate
 
-{      WWT_PANEL, RESIZE_NONE, 12, 216, 251,  95, 106, 0x0,                     STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 252, 263,  95, 106, STR_0225,                STR_NULL}, // Mapsize X
-{      WWT_PANEL, RESIZE_NONE, 12, 279, 314,  95, 106, 0x0,                     STR_NULL},
-{    WWT_TEXTBTN, RESIZE_NONE, 12, 315, 326,  95, 106, STR_0225,                STR_NULL}, // Mapsize Y
+{       WWT_TEXT, RESIZE_NONE, 12, 182, 212,  96, 106, STR_MAPSIZE,             STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 216, 263,  95, 106, STR_NUM_1,               STR_NULL}, // Mapsize X
+{       WWT_TEXT, RESIZE_NONE, 12, 268, 276,  96, 106, STR_BY,                  STR_NULL},
+{   WWT_DROPDOWN, RESIZE_NONE, 12, 279, 326,  95, 106, STR_NUM_2,               STR_NULL}, // Mapsize Y
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 212, 114, 124, STR_DATE,                STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 216, 227, 113, 124, SPR_ARROW_DOWN,          STR_029E_MOVE_THE_STARTING_DATE},
-{      WWT_PANEL, RESIZE_NONE, 12, 228, 314, 113, 124, 0x0,                     STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 228, 314, 113, 124, STR_GENERATE_DATE,       STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 113, 124, SPR_ARROW_UP,            STR_029F_MOVE_THE_STARTING_DATE},
 
+{       WWT_TEXT, RESIZE_NONE,  0, 182, 278, 132, 142, STR_FLAT_WORLD_HEIGHT,   STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 282, 293, 131, 142, SPR_ARROW_DOWN,          STR_FLAT_WORLD_HEIGHT_DOWN},
-{      WWT_PANEL, RESIZE_NONE, 12, 294, 314, 131, 142, 0x0,                     STR_NULL},
+{    WWT_TEXTBTN, RESIZE_NONE, 12, 294, 314, 131, 142, STR_NUM_3,               STR_NULL},
 {     WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 131, 142, SPR_ARROW_UP,            STR_FLAT_WORLD_HEIGHT_UP},
 {   WIDGETS_END},
 };
@@ -788,39 +830,39 @@
 static void ShowTerrainProgressProc(Window* w, WindowEvent* e)
 {
 	switch (e->event) {
-	case WE_CLICK:
-		switch (e->we.click.widget) {
-		case 2:
-			if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
-			ShowQuery(
-				STR_GENERATION_ABORT_CAPTION,
-				STR_GENERATION_ABORT_MESSAGE,
-				w,
-				AbortGeneratingWorldCallback
-			);
+		case WE_CLICK:
+			switch (e->we.click.widget) {
+				case 2:
+					if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
+					ShowQuery(
+						STR_GENERATION_ABORT_CAPTION,
+						STR_GENERATION_ABORT_MESSAGE,
+						w,
+						AbortGeneratingWorldCallback
+					);
+					break;
+			}
 			break;
-		}
-		break;
 
-	case WE_PAINT:
-		DrawWindowWidgets(w);
-
-		/* Draw the % complete with a bar and a text */
-		DrawFrameRect(19, 20, (w->width - 18), 37, 14, FR_BORDERONLY);
-		DrawFrameRect(20, 21, (int)((w->width - 40) * _tp.percent / 100) + 20, 36, 10, FR_NONE);
-		SetDParam(0, _tp.percent);
-		DrawStringCentered(90, 25, STR_PROGRESS, TC_FROMSTRING);
+		case WE_PAINT:
+			DrawWindowWidgets(w);
 
-		/* Tell which class we are generating */
-		DrawStringCentered(90, 46, _tp.cls, TC_FROMSTRING);
+			/* Draw the % complete with a bar and a text */
+			DrawFrameRect(19, 20, (w->width - 18), 37, 14, FR_BORDERONLY);
+			DrawFrameRect(20, 21, (int)((w->width - 40) * _tp.percent / 100) + 20, 36, 10, FR_NONE);
+			SetDParam(0, _tp.percent);
+			DrawStringCentered(90, 25, STR_PROGRESS, TC_FROMSTRING);
 
-		/* And say where we are in that class */
-		SetDParam(0, _tp.current);
-		SetDParam(1, _tp.total);
-		DrawStringCentered(90, 58, STR_GENERATION_PROGRESS, TC_FROMSTRING);
+			/* Tell which class we are generating */
+			DrawStringCentered(90, 46, _tp.cls, TC_FROMSTRING);
 
-		SetWindowDirty(w);
-		break;
+			/* And say where we are in that class */
+			SetDParam(0, _tp.current);
+			SetDParam(1, _tp.total);
+			DrawStringCentered(90, 58, STR_GENERATION_PROGRESS, TC_FROMSTRING);
+
+			SetWindowDirty(w);
+			break;
 	}
 }
 
--- a/src/gfx.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/gfx.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,10 +6,7 @@
 #include "openttd.h"
 #include "gfx_func.h"
 #include "spritecache.h"
-#include "table/palettes.h"
-#include "table/sprites.h"
 #include "variables.h"
-#include "table/control_codes.h"
 #include "fontcache.h"
 #include "genworld.h"
 #include "debug.h"
@@ -19,6 +16,11 @@
 #include "video/video_driver.hpp"
 #include "strings_func.h"
 #include "core/math_func.hpp"
+#include "settings_type.h"
+
+#include "table/palettes.h"
+#include "table/sprites.h"
+#include "table/control_codes.h"
 
 byte _dirkeys;        ///< 1 = left, 2 = up, 4 = right, 8 = down
 bool _fullscreen;
@@ -31,6 +33,7 @@
 bool _right_button_down;
 bool _right_button_clicked;
 DrawPixelInfo _screen;
+bool _screen_disable_anim = false;   ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot)
 bool _exit_game;
 bool _networking;         ///< are we in networking mode?
 byte _game_mode;
--- a/src/gfx_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/gfx_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -55,6 +55,7 @@
 extern bool _right_button_clicked;
 
 extern DrawPixelInfo _screen;
+extern bool _screen_disable_anim;   ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot)
 
 extern int _pal_first_dirty;
 extern int _pal_count_dirty;
@@ -68,8 +69,6 @@
 void CSleep(int milliseconds);
 void UpdateWindows();
 
-uint32 InteractiveRandom(); //< Used for random sequences that are not the same on the other end of the multiplayer link
-uint InteractiveRandomRange(uint max);
 void DrawChatMessage();
 void DrawMouseCursor();
 void ScreenSizeChanged();
@@ -82,12 +81,6 @@
 
 void DrawSprite(SpriteID img, SpriteID pal, int x, int y, const SubSprite *sub = NULL);
 
-/* XXX doesn't really belong here, but the only
- * consumers always use it in conjunction with DoDrawString() */
-#define UPARROW   "\xEE\x8A\x80"
-#define DOWNARROW "\xEE\x8A\xAA"
-
-
 int DrawStringCentered(int x, int y, StringID str, uint16 color);
 int DrawStringCenteredTruncated(int xl, int xr, int y, StringID str, uint16 color);
 int DoDrawStringCentered(int x, int y, const char *str, uint16 color);
--- a/src/gfxinit.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/gfxinit.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,7 +7,6 @@
 #include "debug.h"
 #include "gfxinit.h"
 #include "spritecache.h"
-#include "table/sprites.h"
 #include "fileio.h"
 #include "fios.h"
 #include "newgrf.h"
@@ -16,7 +15,11 @@
 #include "fontcache.h"
 #include "gfx_func.h"
 #include "core/alloc_func.hpp"
+#include "core/bitmath_func.hpp"
 #include <string.h>
+#include "settings_type.h"
+
+#include "table/sprites.h"
 
 struct MD5File {
 	const char * filename;     ///< filename
@@ -27,7 +30,6 @@
 	MD5File basic[2];     ///< GRF files that always have to be loaded
 	MD5File landscape[3]; ///< Landscape specific grf files
 	MD5File sound;        ///< Sound samples
-	MD5File chars;        ///< GRF File with character replacements
 	MD5File openttd;      ///< GRF File with OTTD specific graphics
 };
 
@@ -68,20 +70,15 @@
 	while ((start = *index_tbl++) != END) {
 		uint end = *index_tbl++;
 
-		if (start == SKIP) { // skip sprites (amount in second var)
-			SkipSprites(end);
-			(*sprite_id) += end;
-		} else { // load sprites and use indexes from start to end
-			do {
-			#ifdef NDEBUG
-				LoadNextSprite(start, file_index, *sprite_id);
-			#else
-				bool b = LoadNextSprite(start, file_index, *sprite_id);
-				assert(b);
-			#endif
-				(*sprite_id)++;
-			} while (++start <= end);
-		}
+		do {
+		#ifdef NDEBUG
+			LoadNextSprite(start, file_index, *sprite_id);
+		#else
+			bool b = LoadNextSprite(start, file_index, *sprite_id);
+			assert(b);
+		#endif
+			(*sprite_id)++;
+		} while (++start <= end);
 	}
 }
 
@@ -189,10 +186,6 @@
 		add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your 'sample.cat' file is corrupted or missing! You can find 'sample.cat' on your Transport Tycoon Deluxe CD-ROM.\n");
 	}
 
-	if (!FileMD5(files->chars)) {
-		add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your '%s' file is corrupted or missing! The file was part of your installation.\n", files->chars.filename);
-	}
-
 	if (!FileMD5(files->openttd)) {
 		add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your '%s' file is corrupted or missing! The file was part of your installation.\n", files->openttd.filename);
 	}
@@ -201,142 +194,12 @@
 }
 
 
-static const SpriteID trg1idx[] = {
-	   0,    1, ///< Mouse cursor, ZZZ
-/* Medium font */
-	   2,   92, ///< ' ' till 'z'
-	SKIP,   36,
-	 160,  160, ///< Move Ÿ to the correct position
-	  98,   98, ///< Up arrow
-	 131,  133,
-	SKIP,    1, ///< skip currency sign
-	 135,  135,
-	SKIP,    1,
-	 137,  137,
-	SKIP,    1,
-	 139,  139,
-	 140,  140, ///< @todo Down arrow
-	 141,  141,
-	 142,  142, ///< @todo Check mark
-	 143,  143, ///< @todo Cross
-	 144,  144,
-	 145,  145, ///< @todo Right arrow
-	 146,  149,
-	 118,  122, ///< Transport markers
-	SKIP,    2,
-	 157,  157,
-	 114,  115, ///< Small up/down arrows
-	SKIP,    1,
-	 161,  225,
-/* Small font */
-	 226,  316, ///< ' ' till 'z'
-	SKIP,   36,
-	 384,  384, ///< Move Ÿ to the correct position
-	 322,  322, ///< Up arrow
-	 355,  357,
-	SKIP,    1, ///< skip currency sign
-	 359,  359,
-	SKIP,    1,
-	 361,  361,
-	SKIP,    1,
-	 363,  363,
-	 364,  364, ////< @todo Down arrow
-	 365,  366,
-	SKIP,    1,
-	 368,  368,
-	 369,  369, ///< @todo Right arrow
-	 370,  373,
-	SKIP,    7,
-	 381,  381,
-	SKIP,    3,
-	 385,  449,
-/* Big font */
-	 450,  540, ///< ' ' till 'z'
-	SKIP,   36,
-	 608,  608, ///< Move Ÿ to the correct position
-	SKIP,    1,
-	 579,  581,
-	SKIP,    1,
-	 583,  583,
-	SKIP,    5,
-	 589,  589,
-	SKIP,   15,
-	 605,  605,
-	SKIP,    3,
-	 609,  625,
-	SKIP,    1,
-	 627,  632,
-	SKIP,    1,
-	 634,  639,
-	SKIP,    1,
-	 641,  657,
-	SKIP,    1,
-	 659,  664,
-	SKIP,    2,
-	 667,  671,
-	SKIP,    1,
-	 673,  673,
-/* Graphics */
-	 674, 4792,
-	END
-};
-
-/** Replace some letter sprites with some other letters */
-static const SpriteID _chars_grf_indexes[] = {
-	134, 134, ///<  euro symbol medium size
-	582, 582, ///<  euro symbol large size
-	358, 358, ///<  euro symbol tiny
-	648, 648, ///<  nordic char: æ
-	616, 616, ///<  nordic char: Æ
-	666, 666, ///<  nordic char: ø
-	634, 634, ///<  nordic char: Ø
-	382, 383, ///<  Œ œ tiny
-	158, 159, ///<  Œ œ medium
-	606, 607, ///<  Œ œ large
-	360, 360, ///<  Š tiny
-	362, 362, ///<  š tiny
-	136, 136, ///<  Š medium
-	138, 138, ///<  š medium
-	584, 584, ///<  Š large
-	586, 586, ///<  š large
-	626, 626, ///<  Ð large
-	658, 658, ///<  ð large
-	374, 374, ///<  Ž tiny
-	378, 378, ///<  ž tiny
-	150, 150, ///<  Ž medium
-	154, 154, ///<  ž medium
-	598, 598, ///<  Ž large
-	602, 602, ///<  ž large
-	640, 640, ///<  Þ large
-	672, 672, ///<  þ large
-	380, 380, ///<  º tiny
-	156, 156, ///<  º medium
-	604, 604, ///<  º large
-	317, 320, ///<  { | } ~ tiny
-	 93,  96, ///<  { | } ~ medium
-	541, 544, ///<  { | } ~ large
-	585, 585, ///<  § large
-	587, 587, ///<  © large
-	592, 592, ///<  ® large
-	594, 597, ///<  ° ± ² ³ large
-	633, 633, ///<  × large
-	665, 665, ///<  ÷ large
-	377, 377, ///<  · small
-	153, 153, ///<  · medium
-	601, 601, ///<  · large
-	END
-};
-
-
 static void LoadSpriteTables()
 {
 	const FileList *files = _use_dos_palette ? &files_dos : &files_win;
 	uint i = FIRST_GRF_SLOT;
 
-	LoadGrfIndexed(files->basic[0].filename, trg1idx, i++);
-	DupSprite(  2, 130); // non-breaking space medium
-	DupSprite(226, 354); // non-breaking space tiny
-	DupSprite(450, 578); // non-breaking space large
+	LoadGrfFile(files->basic[0].filename, 0, i++);
 
 	/*
 	 * The second basic file always starts at the given location and does
@@ -359,8 +222,6 @@
 		);
 	}
 
-	LoadGrfIndexed(files->chars.filename, _chars_grf_indexes, i++);
-
 	/* Initialize the unicode to sprite mapping table */
 	InitializeUnicodeGlyphMap();
 
--- a/src/graph_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/graph_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,10 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
-#include "player.h"
+#include "player_base.h"
+#include "player_gui.h"
 #include "economy_func.h"
 #include "variables.h"
 #include "cargotype.h"
@@ -18,6 +17,9 @@
 #include "date_func.h"
 #include "gfx_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+
 /* Bitmasks of player and cargo indices that shouldn't be drawn. */
 static uint _legend_excluded_players;
 static uint _legend_excluded_cargo;
@@ -41,7 +43,7 @@
 };
 
 /* Apparently these don't play well with enums. */
-static const OverflowSafeInt64 INVALID_DATAPOINT = INT64_MAX; // Value used for a datapoint that shouldn't be drawn.
+static const OverflowSafeInt64 INVALID_DATAPOINT(INT64_MAX); // Value used for a datapoint that shouldn't be drawn.
 static const uint INVALID_DATAPOINT_POS = UINT_MAX;  // Used to determine if the previous point was drawn.
 
 struct GraphDrawer {
--- a/src/group.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/group.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,9 @@
 #define GROUP_H
 
 #include "oldpool.h"
+#include "player_type.h"
+#include "vehicle_type.h"
+#include "engine.h"
 
 enum {
 	ALL_GROUP     = 0xFFFD,
@@ -17,7 +20,7 @@
 DECLARE_OLD_POOL(Group, Group, 5, 2047)
 
 struct Group : PoolItem<Group, GroupID, &_Group_pool> {
-	StringID string_id;                     ///< Group Name
+	char *name;                             ///< Group Name
 
 	uint16 num_vehicle;                     ///< Number of vehicles wich belong to the group
 	PlayerID owner;                         ///< Group Owner
@@ -26,7 +29,7 @@
 	bool replace_protection;                ///< If set to true, the global autoreplace have no effect on the group
 	uint16 num_engines[TOTAL_NUM_ENGINES];  ///< Caches the number of engines of each type the player owns (no need to save this)
 
-	Group(StringID str = STR_NULL);
+	Group(PlayerID owner = INVALID_PLAYER);
 	virtual ~Group();
 
 	bool IsValid() const;
@@ -76,19 +79,7 @@
  * @param id_e The EngineID of the engine to count
  * @return The number of engines with EngineID id_e in the group
  */
-static inline uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e)
-{
-	if (IsValidGroupID(id_g)) return GetGroup(id_g)->num_engines[id_e];
-
-	uint num = GetPlayer(p)->num_engines[id_e];
-	if (!IsDefaultGroupID(id_g)) return num;
-
-	const Group *g;
-	FOR_ALL_GROUPS(g) {
-		if (g->owner == p) num -= g->num_engines[id_e];
-	}
-	return num;
-}
+uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e);
 
 static inline void IncreaseGroupNumVehicle(GroupID id_g)
 {
@@ -105,6 +96,6 @@
 void SetTrainGroupID(Vehicle *v, GroupID grp);
 void UpdateTrainGroupID(Vehicle *v);
 void RemoveVehicleFromGroup(const Vehicle *v);
-void RemoveAllGroupsForPlayer(const Player *p);
+void RemoveAllGroupsForPlayer(const PlayerID p);
 
 #endif /* GROUP_H */
--- a/src/group_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/group_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "variables.h"
-#include "player.h"
-#include "table/strings.h"
 #include "command_func.h"
 #include "saveload.h"
 #include "debug.h"
@@ -22,6 +20,9 @@
 #include "autoreplace_base.h"
 #include "autoreplace_func.h"
 #include "string_func.h"
+#include "player_func.h"
+
+#include "table/strings.h"
 
 /**
  * Update the num engines of a groupID. Decrease the old one and increase the new one
@@ -45,20 +46,20 @@
 DEFINE_OLD_POOL_GENERIC(Group, Group)
 
 
-Group::Group(StringID str)
+Group::Group(PlayerID owner)
 {
-	this->string_id = str;
+	this->owner = owner;
 }
 
 Group::~Group()
 {
-	DeleteName(this->string_id);
-	this->string_id = STR_NULL;
+	free(this->name);
+	this->owner = INVALID_PLAYER;
 }
 
 bool Group::IsValid() const
 {
-	return this->string_id != STR_NULL;
+	return this->owner != INVALID_PLAYER;
 }
 
 void InitializeGroup(void)
@@ -93,13 +94,12 @@
 
 	AutoPtrT<Group> g_auto_delete;
 
-	Group *g = new Group(STR_EMPTY);
+	Group *g = new Group(_current_player);
 	if (g == NULL) return CMD_ERROR;
 
 	g_auto_delete = g;
 
 	if (flags & DC_EXEC) {
-		g->owner = _current_player;
 		g->replace_protection = false;
 		g->vehicle_type = vt;
 
@@ -187,19 +187,13 @@
 
 	if (!IsUniqueGroupName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	/* Create the name */
-	StringID str = AllocateName(_cmd_text, 0);
-	if (str == STR_NULL) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
 		/* Delete the old name */
-		DeleteName(g->string_id);
+		free(g->name);
 		/* Assign the new one */
-		g->string_id = str;
+		g->name = strdup(_cmd_text);
 
 		InvalidateWindowData(GetWCForVT(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
@@ -409,19 +403,33 @@
 	InvalidateWindow(WC_REPLACE_VEHICLE, VEH_TRAIN);
 }
 
+uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e)
+{
+	if (IsValidGroupID(id_g)) return GetGroup(id_g)->num_engines[id_e];
 
-void RemoveAllGroupsForPlayer(const Player *p)
+	uint num = GetPlayer(p)->num_engines[id_e];
+	if (!IsDefaultGroupID(id_g)) return num;
+
+	const Group *g;
+	FOR_ALL_GROUPS(g) {
+		if (g->owner == p) num -= g->num_engines[id_e];
+	}
+	return num;
+}
+
+void RemoveAllGroupsForPlayer(const PlayerID p)
 {
 	Group *g;
 
 	FOR_ALL_GROUPS(g) {
-		if (p->index == g->owner) delete g;
+		if (p == g->owner) delete g;
 	}
 }
 
 
 static const SaveLoad _group_desc[] = {
-  SLE_VAR(Group, string_id,          SLE_UINT16),
+  SLE_CONDVAR(Group, name,           SLE_NAME,    0, 83),
+  SLE_CONDSTR(Group, name,           SLE_STR, 0, 84, SL_MAX_VERSION),
   SLE_VAR(Group, num_vehicle,        SLE_UINT16),
   SLE_VAR(Group, owner,              SLE_UINT8),
   SLE_VAR(Group, vehicle_type,       SLE_UINT8),
--- a/src/group_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/group_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
@@ -24,7 +22,12 @@
 #include "string_func.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
+#include "player_func.h"
+#include "widgets/dropdown_type.h"
+#include "widgets/dropdown_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
 
 struct Sorting {
 	Listing aircraft;
@@ -112,7 +115,6 @@
 	GRP_WIDGET_LIST_GROUP,
 	GRP_WIDGET_LIST_GROUP_SCROLLBAR,
 	GRP_WIDGET_SORT_BY_ORDER,
-	GRP_WIDGET_SORT_BY_TEXT,
 	GRP_WIDGET_SORT_BY_DROPDOWN,
 	GRP_WIDGET_EMPTY_TOP_RIGHT,
 	GRP_WIDGET_LIST_VEHICLE,
@@ -124,7 +126,6 @@
 	GRP_WIDGET_REPLACE_PROTECTION,
 	GRP_WIDGET_EMPTY2,
 	GRP_WIDGET_AVAILABLE_VEHICLES,
-	GRP_WIDGET_MANAGE_VEHICLES,
 	GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 	GRP_WIDGET_STOP_ALL,
 	GRP_WIDGET_START_ALL,
@@ -143,8 +144,7 @@
 {     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    52,   168, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    52,   168, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
-{      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   436,   447,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
+{   WWT_DROPDOWN,   RESIZE_NONE,    14,   282,   447,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
 {      WWT_PANEL,  RESIZE_RIGHT,    14,   448,   459,    14,    25, 0x0,                  STR_NULL},
 {     WWT_MATRIX,     RESIZE_RB,    14,   201,   447,    26,   181, 0x701,                STR_NULL},
 { WWT_SCROLL2BAR,    RESIZE_LRB,    14,   448,   459,    26,   181, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
@@ -155,8 +155,7 @@
 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   165,   188,   169,   193, 0x0,                  STR_GROUP_REPLACE_PROTECTION_TIP},
 {      WWT_PANEL,     RESIZE_TB,    14,   189,   200,   169,   193, 0x0,                  STR_NULL},
 { WWT_PUSHTXTBTN,     RESIZE_TB,    14,   201,   306,   182,   193, 0x0,                  STR_AVAILABLE_ENGINES_TIP},
-{    WWT_TEXTBTN,     RESIZE_TB,    14,   307,   411,   182,   193, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
-{    WWT_TEXTBTN,     RESIZE_TB,    14,   412,   423,   182,   193, STR_0225,             STR_MANAGE_LIST_TIP},
+{   WWT_DROPDOWN,     RESIZE_TB,    14,   307,   423,   182,   193, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   424,   435,   182,   193, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   436,   447,   182,   193, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
 {      WWT_PANEL,    RESIZE_RTB,    14,   448,   447,   182,   193, 0x0,                  STR_NULL},
@@ -256,28 +255,33 @@
 	}
 }
 
+enum GroupActionListFunction {
+	GALF_REPLACE,
+	GALF_SERVICE,
+	GALF_DEPOT,
+	GALF_ADD_SHARED,
+	GALF_REMOVE_ALL,
+};
+
 /**
  * Update/redraw the group action dropdown
  * @param w   the window the dropdown belongs to
  * @param gid the currently selected group in the window
  */
-static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
+static void ShowGroupActionDropdown(Window *w, GroupID gid)
 {
-	if (refresh && !w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
+	DropDownList *list = new DropDownList();
 
-	static StringID action_str[] = {
-		STR_REPLACE_VEHICLES,
-		STR_SEND_FOR_SERVICING,
-		STR_SEND_TRAIN_TO_DEPOT,
-		STR_NULL,
-		STR_NULL,
-		INVALID_STRING_ID
-	};
+	list->push_back(new DropDownListStringItem(STR_REPLACE_VEHICLES,    GALF_REPLACE, false));
+	list->push_back(new DropDownListStringItem(STR_SEND_FOR_SERVICING,  GALF_SERVICE, false));
+	list->push_back(new DropDownListStringItem(STR_SEND_TRAIN_TO_DEPOT, GALF_DEPOT,   false));
 
-	action_str[3] = IsValidGroupID(gid) ? STR_GROUP_ADD_SHARED_VEHICLE : INVALID_STRING_ID;
-	action_str[4] = IsValidGroupID(gid) ? STR_GROUP_REMOVE_ALL_VEHICLES : INVALID_STRING_ID;
+	if (IsValidGroupID(gid)) {
+		list->push_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE,  GALF_ADD_SHARED, false));
+		list->push_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, GALF_REMOVE_ALL, false));
+	}
 
-	ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
+	ShowDropDownList(w, list, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN);
 }
 
 /**
@@ -288,7 +292,6 @@
 static void GroupWndProc(Window *w, WindowEvent *e)
 {
 	const PlayerID owner = (PlayerID)GB(w->window_number, 0, 8);
-	const Player *p = GetPlayer(owner);
 	groupveh_d *gv = &WP(w, groupveh_d);
 	grouplist_d *gl = &WP(w, groupveh_d).gl;
 
@@ -298,7 +301,10 @@
 		case WE_INVALIDATE_DATA:
 			gv->l.flags |= VL_REBUILD;
 			gl->l.flags |= VL_REBUILD;
-			UpdateGroupActionDropdown(w, gv->group_sel);
+			if (!(IsAllGroupID(gv->group_sel) || IsDefaultGroupID(gv->group_sel) || IsValidGroupID(gv->group_sel))) {
+				gv->group_sel = ALL_GROUP;
+				HideDropDownMenu(w);
+			}
 			SetWindowDirty(w);
 			break;
 
@@ -328,21 +334,13 @@
 			/* The drop down menu is out, *but* it may not be used, retract it. */
 			if (gv->l.list_length == 0 && w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) {
 				w->RaiseWidget(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN);
-				Window **w2;
-				FOR_ALL_WINDOWS(w2) {
-					if (w->window_class  == WP(*w2, dropdown_d).parent_wnd_class &&
-							w->window_number == WP(*w2, dropdown_d).parent_wnd_num) {
-						DeleteWindow(*w2);
-						break;
-					}
-				}
+				HideDropDownMenu(w);
 			}
 
 			/* Disable all lists management button when the list is empty */
 			w->SetWidgetsDisabledState(gv->l.list_length == 0 || _local_player != owner,
 					GRP_WIDGET_STOP_ALL,
 					GRP_WIDGET_START_ALL,
-					GRP_WIDGET_MANAGE_VEHICLES,
 					GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 					WIDGET_LIST_END);
 
@@ -368,7 +366,7 @@
 			/* If selected_group == DEFAULT_GROUP || ALL_GROUP, draw the standard caption
 			   We list all vehicles or ungrouped vehicles */
 			if (IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel)) {
-				SetDParam(0, p->index);
+				SetDParam(0, owner);
 				SetDParam(1, gv->l.list_length);
 
 				switch (gv->vehicle_type) {
@@ -417,6 +415,8 @@
 				}
 			}
 
+			/* Set text of sort by dropdown */
+			w->widget[GRP_WIDGET_SORT_BY_DROPDOWN].data = _vehicle_sort_listing[gv->l.sort_type];
 
 			DrawWindowWidgets(w);
 
@@ -466,10 +466,9 @@
 				DrawStringRightAligned(187, y1 + 1, STR_GROUP_TINY_NUM, (gv->group_sel == g->index) ? TC_WHITE : TC_BLACK);
 			}
 
+			DrawSortButtonState(w, GRP_WIDGET_SORT_BY_ORDER, gv->l.flags & VL_DESC ? SBS_DOWN : SBS_UP);
+
 			/* Draw Matrix Vehicle according to the vehicle list built before */
-			DrawString(285, 15, _vehicle_sort_listing[gv->l.sort_type], TC_BLACK);
-			DoDrawString(gv->l.flags & VL_DESC ? DOWNARROW : UPARROW, 269, 15, TC_BLACK);
-
 			max = min(w->vscroll2.pos + w->vscroll2.cap, gv->l.list_length);
 			for (i = w->vscroll2.pos ; i < max ; ++i) {
 				const Vehicle* v = gv->sort_list[i];
@@ -500,6 +499,8 @@
 		}
 
 		case WE_CLICK:
+			HideDropDownMenu(w);
+
 			switch(e->we.click.widget) {
 				case GRP_WIDGET_SORT_BY_ORDER: // Flip sorting method ascending/descending
 					gv->l.flags ^= VL_DESC;
@@ -509,7 +510,6 @@
 					SetWindowDirty(w);
 					break;
 
-				case GRP_WIDGET_SORT_BY_TEXT:
 				case GRP_WIDGET_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
 					ShowDropDownMenu(w, _vehicle_sort_listing, gv->l.sort_type,  GRP_WIDGET_SORT_BY_DROPDOWN, 0, 0);
 					return;
@@ -518,7 +518,6 @@
 					if (!IsAllGroupID(gv->group_sel)) {
 						gv->group_sel = ALL_GROUP;
 						gv->l.flags |= VL_REBUILD;
-						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -527,7 +526,6 @@
 					if (!IsDefaultGroupID(gv->group_sel)) {
 						gv->group_sel = DEFAULT_GROUP;
 						gv->l.flags |= VL_REBUILD;
-						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -544,7 +542,6 @@
 					gv->group_sel = gl->sort_list[id_g]->index;;
 
 					gv->l.flags |= VL_REBUILD;
-					UpdateGroupActionDropdown(w, gv->group_sel);
 					SetWindowDirty(w);
 					break;
 				}
@@ -597,12 +594,9 @@
 					ShowBuildVehicleWindow(0, gv->vehicle_type);
 					break;
 
-				case GRP_WIDGET_MANAGE_VEHICLES:
-				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:  {
-					UpdateGroupActionDropdown(w, gv->group_sel, false);
+				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:
+					ShowGroupActionDropdown(w, gv->group_sel);
 					break;
-				}
-
 
 				case GRP_WIDGET_START_ALL:
 				case GRP_WIDGET_STOP_ALL: { // Start/stop all vehicles of the list
@@ -715,24 +709,24 @@
 					assert(gv->l.list_length != 0);
 
 					switch (e->we.dropdown.index) {
-						case 0: // Replace window
+						case GALF_REPLACE: // Replace window
 							ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type);
 							break;
-						case 1: // Send for servicing
+						case GALF_SERVICE: // Send for servicing
 							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
 										| DEPOT_MASS_SEND
 										| DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type));
 							break;
-						case 2: // Send to Depots
+						case GALF_DEPOT: // Send to Depots
 							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
 										| DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type));
 							break;
-						case 3: // Add shared Vehicles
+						case GALF_ADD_SHARED: // Add shared Vehicles
 							assert(IsValidGroupID(gv->group_sel));
 
 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE));
 							break;
-						case 4: // Remove all Vehicles from the selected group
+						case GALF_REMOVE_ALL: // Remove all Vehicles from the selected group
 							assert(IsValidGroupID(gv->group_sel));
 
 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES));
--- a/src/gui.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -10,6 +10,7 @@
 #include "gfx_type.h"
 #include "economy_type.h"
 #include "tile_type.h"
+#include "strings_type.h"
 
 /* main_gui.cpp */
 void CcPlaySound10(bool success, TileIndex tile, uint32 p1, uint32 p2);
@@ -59,6 +60,7 @@
 	DDSP_CREATE_DESERT,
 	DDSP_CREATE_ROCKS,
 	DDSP_CREATE_WATER,
+	DDSP_CREATE_RIVER,
 	DDSP_PLANT_TREES,
 	DDSP_BUILD_BRIDGE,
 
@@ -85,9 +87,6 @@
 void ShowTownDirectory();
 void ShowIndustryDirectory();
 void ShowSubsidiesList();
-void ShowPlayerStations(PlayerID player);
-void ShowPlayerFinances(PlayerID player);
-void ShowPlayerCompany(PlayerID player);
 
 void ShowEstimatedCostOrIncome(Money cost, int x, int y);
 void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
@@ -107,14 +106,13 @@
 extern const TextColour _fios_colors[];
 
 /* bridge_gui.cpp */
-void ShowBuildBridgeWindow(uint start, uint end, byte type);
+void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte type);
 
 void ShowBuildIndustryWindow();
 void ShowMusicWindow();
 
 /* main_gui.cpp */
 void HandleOnEditText(const char *str);
-VARDEF bool _station_show_coverage;
 
 void InitializeGUI();
 
--- a/src/heightmap.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/heightmap.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,7 +7,6 @@
 #include "variables.h"
 #include "heightmap.h"
 #include "clear_map.h"
-#include "table/strings.h"
 #include "void_map.h"
 #include "debug.h"
 #include "gui.h"
@@ -16,6 +15,9 @@
 #include "gfx_func.h"
 #include "core/alloc_func.hpp"
 #include "fios.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 /**
  * Convert RGB colors to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue
--- a/src/industry.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/industry.h	Sun Feb 03 20:17:54 2008 +0000
@@ -15,6 +15,7 @@
 #include "date_type.h"
 #include "town_type.h"
 #include "industry_type.h"
+#include "newgrf_string_type.h"
 
 enum {
 	INVALID_INDUSTRY       = 0xFFFF,
@@ -173,11 +174,12 @@
 	byte climate_availability;            ///< Bitmask, giving landscape enums as bit position
 	IndustryBehaviour behaviour;           ///< How this industry will behave, and how others entities can use it
 	byte map_colour;                      ///< colour used for the small map
-	StringID name;                        ///< Displayed name of the industry
-	StringID new_industry_text;           ///< Message appearing when the industry is built
-	StringID closure_text;                ///< Message appearing when the industry closes
-	StringID production_up_text;          ///< Message appearing when the industry's production is increasing
-	StringID production_down_text;        ///< Message appearing when the industry's production is decreasing
+	GRFMappedStringID name;               ///< Displayed name of the industry
+	GRFMappedStringID new_industry_text;  ///< Message appearing when the industry is built
+	GRFMappedStringID closure_text;       ///< Message appearing when the industry closes
+	GRFMappedStringID production_up_text; ///< Message appearing when the industry's production is increasing
+	GRFMappedStringID production_down_text; ///< Message appearing when the industry's production is decreasing
+	GRFMappedStringID station_name;       ///< Default name for nearby station
 	byte appear_ingame[NUM_LANDSCAPE];    ///< Probability of appearance in game
 	byte appear_creation[NUM_LANDSCAPE];  ///< Probability of appearance during map creation
 	uint8 number_of_sounds;               ///< Number of sounds available in the sounds array
--- a/src/industry_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/industry_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,8 +7,6 @@
 #include "clear_map.h"
 #include "industry_map.h"
 #include "station_map.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "train.h"
 #include "landscape.h"
 #include "viewport_func.h"
@@ -18,8 +16,6 @@
 #include "news.h"
 #include "saveload.h"
 #include "variables.h"
-#include "table/industry_land.h"
-#include "table/build_industry.h"
 #include "genworld.h"
 #include "water_map.h"
 #include "tree_map.h"
@@ -41,6 +37,11 @@
 #include "vehicle_func.h"
 #include "sound_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/industry_land.h"
+#include "table/build_industry.h"
+
 void ShowIndustryViewWindow(int industry);
 void BuildOilRig(TileIndex tile);
 
@@ -840,7 +841,7 @@
 {
 	switch (GetTileType(tile)) {
 		case MP_CLEAR: return IsClearGround(tile, CLEAR_FIELDS) || IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT);
-		case MP_TREES: return false;
+		case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE);
 		default:       return true;
 	}
 }
@@ -849,7 +850,7 @@
 {
 	switch (GetTileType(tile)) {
 		case MP_CLEAR: return IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT);
-		case MP_TREES: return false;
+		case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE);
 		default:       return true;
 	}
 }
@@ -1377,31 +1378,36 @@
 }
 
 
-static bool CheckIfTooCloseToIndustry(TileIndex tile, int type)
+static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type)
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 	const Industry *i;
 
-	/* accepting industries won't be close, not even with patch */
 	if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID)
+		/* Allow primary industries to be placed close to any other industry */
 		return true;
 
 	FOR_ALL_INDUSTRIES(i) {
+		/* Within 14 tiles from another industry is considered close */
+		bool in_low_distance = DistanceMax(tile, i->xy) <= 14;
+
 		/* check if an industry that accepts the same goods is nearby */
-		if (DistanceMax(tile, i->xy) <= 14 &&
-				indspec->accepts_cargo[0] != CT_INVALID &&
+		if (in_low_distance &&
+				indspec->accepts_cargo[0] != CT_INVALID && // not a primary industry?
 				indspec->accepts_cargo[0] == i->accepts_cargo[0] && (
-					_game_mode != GM_EDITOR ||
-					!_patches.same_industry_close ||
-					!_patches.multiple_industry_per_town
-				)) {
+				/* at least one of those options must be true */
+				_game_mode != GM_EDITOR || // editor must not be stopped
+				!_patches.same_industry_close ||
+				!_patches.multiple_industry_per_town)) {
 			_error_message = STR_INDUSTRY_TOO_CLOSE;
 			return false;
 		}
 
-		/* check "not close to" field. */
-		if ((i->type == indspec->conflicting[0] || i->type == indspec->conflicting[1] || i->type == indspec->conflicting[2]) &&
-				DistanceMax(tile, i->xy) <= 14) {
+		/* check if there are any conflicting industry types around */
+		if ((i->type == indspec->conflicting[0] ||
+				i->type == indspec->conflicting[1] ||
+				i->type == indspec->conflicting[2]) &&
+				in_low_distance) {
 			_error_message = STR_INDUSTRY_TOO_CLOSE;
 			return false;
 		}
@@ -1518,11 +1524,11 @@
 				SetIndustryConstructionCounter(cur_tile, 3);
 				SetIndustryConstructionStage(cur_tile, 2);
 			}
-			if (it->gfx >= NEW_INDUSTRYTILEOFFSET) {
-				/* New industry */
-				const IndustryTileSpec *its = GetIndustryTileSpec(it->gfx);
-				if (its->animation_info != 0xFFFF) AddAnimatedTile(cur_tile);
-			}
+
+			/* it->gfx is stored in the map. But the translated ID cur_gfx is the interesting one */
+			IndustryGfx cur_gfx = GetTranslatedIndustryTileID(it->gfx);
+			const IndustryTileSpec *its = GetIndustryTileSpec(cur_gfx);
+			if (its->animation_info != 0xFFFF) AddAnimatedTile(cur_tile);
 		}
 	} while ((++it)->ti.x != -0x80);
 
@@ -1542,9 +1548,10 @@
  * @param flags of operations to conduct
  * @param indspec pointer to industry specifications
  * @param itspec_index the index of the itsepc to build/fund
+ * @param seed random seed (possibly) used by industries
  * @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, uint itspec_index)
+static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, uint itspec_index, uint32 seed)
 {
 	const IndustryTileTable *it = indspec->table[itspec_index];
 	bool custom_shape_check = false;
@@ -1552,13 +1559,13 @@
 	if (!CheckIfIndustryTilesAreFree(tile, it, itspec_index, type, &custom_shape_check)) return NULL;
 
 	if (HasBit(GetIndustrySpec(type)->callback_flags, CBM_IND_LOCATION)) {
-		if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index)) return NULL;
+		if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index, seed)) 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 && !_ignore_restrictions && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
-	if (!CheckIfTooCloseToIndustry(tile, type)) return NULL;
+	if (!CheckIfFarEnoughFromIndustry(tile, type)) return NULL;
 
 	const Town *t = CheckMultipleIndustryInTown(tile, type);
 	if (t == NULL) return NULL;
@@ -1582,15 +1589,15 @@
 /** Build/Fund an industry
  * @param tile tile where industry is built
  * @param flags of operations to conduct
- * @param p1 industry type see build_industry.h and see industry.h
- * @param p2 first layout to try
+ * @param p1 various bitstuffed elements
+ * - p1 = (bit  0 - 15) - industry type see build_industry.h and see industry.h
+ * - p1 = (bit 16 - 31) - first layout to try
+ * @param p2 seed to use for variable 8F
  * @return index of the newly create industry, or CMD_ERROR if it failed
  */
 CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	const IndustrySpec *indspec;
-
-	indspec = GetIndustrySpec(p1);
+	const IndustrySpec *indspec = GetIndustrySpec(GB(p1, 0, 16));
 
 	/* Check if the to-be built/founded industry is available for this climate. */
 	if (!indspec->enabled) {
@@ -1614,7 +1621,7 @@
 					 * because parameter evaluation order is not guaranteed in the c++ standard
 					 */
 					tile = RandomTile();
-					const Industry *ind = CreateNewIndustryHelper(tile, p1, flags, indspec, RandomRange(indspec->num_table));
+					const Industry *ind = CreateNewIndustryHelper(tile, p1, flags, indspec, RandomRange(indspec->num_table), p2);
 					if (ind != NULL) {
 						SetDParam(0, indspec->name);
 						if (indspec->new_industry_text > STR_LAST_STRINGID) {
@@ -1633,7 +1640,7 @@
 	} else {
 		int count = indspec->num_table;
 		const IndustryTileTable * const *itt = indspec->table;
-		int num = Clamp(p2, 0, count - 1);
+		int num = Clamp(GB(p1, 16, 16), 0, count - 1);
 
 		_error_message = STR_0239_SITE_UNSUITABLE;
 		do {
@@ -1641,7 +1648,7 @@
 			if (--num < 0) num = indspec->num_table - 1;
 		} while (!CheckIfIndustryTilesAreFree(tile, itt[num], num, p1));
 
-		if (CreateNewIndustryHelper(tile, p1, flags, indspec, num) == NULL) return CMD_ERROR;
+		if (CreateNewIndustryHelper(tile, p1, flags, indspec, num, p2) == NULL) return CMD_ERROR;
 	}
 
 	return CommandCost(EXPENSES_OTHER, indspec->GetConstructionCost());
@@ -1652,7 +1659,8 @@
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 
-	return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table));
+	uint32 seed = Random();
+	return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table), seed);
 }
 
 enum {
@@ -1945,13 +1953,13 @@
 		 */
 		const Order *o;
 		FOR_VEHICLE_ORDERS(v, o) {
-			if (o->type == OT_GOTO_STATION && !HasBit(o->flags, OFB_TRANSFER)) {
+			if (o->type == OT_GOTO_STATION && !HasBit(o->flags, OF_TRANSFER)) {
 				/* Vehicle visits a station to load or unload */
 				Station *st = GetStation(o->dest);
 				if (!st->IsValid()) continue;
 
 				/* Same cargo produced by industry is dropped here => not serviced by vehicle v */
-				if (HasBit(o->flags, OFB_UNLOAD) && !c_accepts) break;
+				if (HasBit(o->flags, OF_UNLOAD) && !c_accepts) break;
 
 				if (stations.find(st) != stations.end()) {
 					if (v->owner == _local_player) return 2; // Player services industry
@@ -2137,9 +2145,13 @@
 		}
 	}
 
+	/* Increase or Decreasing the production level if needed */
 	if (increment != 0) {
-		i->prod_level = ClampU(i->prod_level + increment, 4, 0x80);
-		if (i->prod_level == 4) closeit = true;
+		if (increment < 0 && i->prod_level == 4) {
+			closeit = true;
+		} else {
+			i->prod_level = ClampU(i->prod_level + increment, 4, 0x80);
+		}
 	}
 
 	/* Close if needed and allowed */
@@ -2294,12 +2306,12 @@
 	    SLE_VAR(Industry, width,                      SLE_UINT8),
 	    SLE_VAR(Industry, height,                     SLE_UINT8),
 	    SLE_REF(Industry, town,                       REF_TOWN),
-	SLE_CONDNULL( 2, 2, 60),       ///< used to be industry's produced_cargo
+	SLE_CONDNULL( 2, 0, 60),       ///< used to be industry's produced_cargo
 	SLE_CONDARR(Industry, produced_cargo,             SLE_UINT8,  2,              78, SL_MAX_VERSION),
 	SLE_CONDARR(Industry, incoming_cargo_waiting,     SLE_UINT16, 3,              70, SL_MAX_VERSION),
 	    SLE_ARR(Industry, produced_cargo_waiting,     SLE_UINT16, 2),
 	    SLE_ARR(Industry, production_rate,            SLE_UINT8,  2),
-	SLE_CONDNULL( 3, 2, 60),       ///< used to be industry's accepts_cargo
+	SLE_CONDNULL( 3, 0, 60),       ///< used to be industry's accepts_cargo
 	SLE_CONDARR(Industry, accepts_cargo,              SLE_UINT8,  3,              78, SL_MAX_VERSION),
 	    SLE_VAR(Industry, prod_level,                 SLE_UINT8),
 	    SLE_ARR(Industry, this_month_production,      SLE_UINT16, 2),
--- a/src/industry_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/industry_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
@@ -23,6 +21,11 @@
 #include "newgrf_text.h"
 #include "strings_func.h"
 #include "map_func.h"
+#include "player_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 bool _ignore_restrictions;
 
@@ -54,6 +57,9 @@
 	bool enabled[NUM_INDUSTRYTYPES + 1];        ///< availability state, coming from CBID_INDUSTRY_AVAILABLE (if ever)
 } _fund_gui;
 
+assert_compile(lengthof(_fund_gui.index) == lengthof(_fund_gui.text));
+assert_compile(lengthof(_fund_gui.index) == lengthof(_fund_gui.enabled));
+
 static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
@@ -76,11 +82,14 @@
 			WP(w, fnd_d).timer_enabled = _loaded_newgrf_features.has_newindustries;
 
 			/* Initilialize structures */
-			memset(&_fund_gui.index, 0xFF, NUM_INDUSTRYTYPES);
-			memset(&_fund_gui.text, STR_NULL, NUM_INDUSTRYTYPES);
-			memset(&_fund_gui.enabled, false, NUM_INDUSTRYTYPES);
 			_fund_gui.count = 0;
 
+			for (uint i = 0; i < lengthof(_fund_gui.index); i++) {
+				_fund_gui.index[i]   = 0xFF;
+				_fund_gui.text[i]    = STR_NULL;
+				_fund_gui.enabled[i] = false;
+			}
+
 			w->vscroll.cap = 8; // rows in grid, same in scroller
 			w->resize.step_height = 13;
 
@@ -250,7 +259,7 @@
 							_generating_world = false;
 						}
 					} else if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(WP(w, fnd_d).select)->IsRawIndustry()) {
-						DoCommandP(0, WP(w, fnd_d).select, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+						DoCommandP(0, WP(w, fnd_d).select, InteractiveRandom(), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
 						w->HandleButtonClick(DPIW_FUND_WIDGET);
 					} else {
 						HandlePlacePushButton(w, DPIW_FUND_WIDGET, SPR_CURSOR_INDUSTRY, VHM_RECT, NULL);
@@ -269,6 +278,7 @@
 			bool success = true;
 			/* We do not need to protect ourselves against "Random Many Industries" in this mode */
 			const IndustrySpec *indsp = GetIndustrySpec(WP(w, fnd_d).select);
+			uint32 seed = InteractiveRandom();
 
 			if (_game_mode == GM_EDITOR) {
 				/* Show error if no town exists at all */
@@ -281,7 +291,7 @@
 				_current_player = OWNER_NONE;
 				_generating_world = true;
 				_ignore_restrictions = true;
-				success = DoCommandP(e->we.place.tile, WP(w, fnd_d).select, InteractiveRandomRange(indsp->num_table), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+				success = DoCommandP(e->we.place.tile, (InteractiveRandomRange(indsp->num_table) << 16) | WP(w, fnd_d).select, seed, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
 				if (!success) {
 					SetDParam(0, indsp->name);
 					ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
@@ -290,7 +300,7 @@
 				_ignore_restrictions = false;
 				_generating_world = false;
 			} else {
-				success = DoCommandP(e->we.place.tile, WP(w, fnd_d).select, InteractiveRandomRange(indsp->num_table), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+				success = DoCommandP(e->we.place.tile, (InteractiveRandomRange(indsp->num_table) << 16) | WP(w, fnd_d).select, seed, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
 			}
 
 			/* If an industry has been built, just reset the cursor and the system */
@@ -381,6 +391,7 @@
 	IVW_INFO,
 	IVW_GOTO,
 	IVW_SPACER,
+	IVW_RESIZE_WIDGET,
 };
 
 /** Information to store about the industry window */
@@ -434,13 +445,27 @@
 			lines++;
 		}
 
-		if (HasBit(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) lines += 2;
+		if (HasBit(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) {
+			lines += 2;
+		} else {
+			/* Remove the resizing option from the widgets. Do it before the Hiding since it will be overwritten */
+			for (byte j = IVW_INFO; j <= IVW_RESIZE_WIDGET; j++) {
+				w->widget[j].display_flags = RESIZE_NONE;
+			}
+			/* Hide the resize button and enlarge the spacer so it will take its place */
+			w->HideWidget(IVW_RESIZE_WIDGET);
+			w->widget[IVW_SPACER].right = w->widget[IVW_RESIZE_WIDGET].right;
+		}
 
-		for (byte j = 5; j <= 7; j++) {
-			if (j != 5) w->widget[j].top += lines * 10;
-			w->widget[j].bottom += lines * 10;
+		lines *= 10;
+
+		/* Resize the widgets for the new size, given by the addition of cargos */
+		for (byte j = IVW_INFO; j <= IVW_RESIZE_WIDGET; j++) {
+			if (j != IVW_INFO) w->widget[j].top += lines;
+			w->widget[j].bottom += lines;
 		}
-		w->height += lines * 10;
+		w->height += lines;
+		w->resize.height += lines;
 	} break;
 
 	case WE_PAINT: {
@@ -512,10 +537,12 @@
 			if (callback_res != CALLBACK_FAILED) {
 				StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
 				if (message != STR_NULL && message != STR_UNDEFINED) {
+					const Widget *wi = &w->widget[IVW_INFO];
 					y += 10;
 
 					PrepareTextRefStackUsage(6);
-					DrawString(2, y, message, TC_FROMSTRING);
+					/* Use all the available space left from where we stand up to the end of the window */
+					DrawStringMultiLine(2, y, message, wi->right - wi->left - 4, wi->bottom - y);
 					StopTextRefStackUsage();
 				}
 			}
@@ -604,9 +631,10 @@
 {  WWT_STICKYBOX,   RESIZE_NONE,     9,   248,   259,     0,    13, 0x0,               STR_STICKY_BUTTON},                // IVW_STICKY
 {      WWT_PANEL,   RESIZE_NONE,     9,     0,   259,    14,   105, 0x0,               STR_NULL},                         // IVW_BACKGROUND
 {      WWT_INSET,   RESIZE_NONE,     9,     2,   257,    16,   103, 0x0,               STR_NULL},                         // IVW_VIEWPORT
-{      WWT_PANEL,   RESIZE_NONE,     9,     0,   259,   106,   147, 0x0,               STR_NULL},                         // IVW_INFO
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,     9,     0,   129,   148,   159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON}, // IVW_GOTO
-{      WWT_PANEL,   RESIZE_NONE,     9,   130,   259,   148,   159, 0x0,               STR_NULL},                         // IVW_SPACER
+{      WWT_PANEL, RESIZE_BOTTOM,     9,     0,   259,   106,   147, 0x0,               STR_NULL},                         // IVW_INFO
+{ WWT_PUSHTXTBTN,     RESIZE_TB,     9,     0,   129,   148,   159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON}, // IVW_GOTO
+{      WWT_PANEL,     RESIZE_TB,     9,   130,   247,   148,   159, 0x0,               STR_NULL},                         // IVW_SPACER
+{  WWT_RESIZEBOX,     RESIZE_TB,     9,   248,   259,   148,   159, 0x0,               STR_RESIZE_BUTTON},                // IVW_RESIZE_WIDGET
 {   WIDGETS_END},
 };
 
@@ -614,7 +642,7 @@
 static const WindowDesc _industry_view_desc = {
 	WDP_AUTO, WDP_AUTO, 260, 160, 260, 160,
 	WC_INDUSTRY_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
 	_industry_view_widgets,
 	IndustryViewWndProc
 };
@@ -778,10 +806,6 @@
 {
 	switch (e->event) {
 	case WE_PAINT: {
-		int n;
-		uint p;
-		static const uint16 _indicator_positions[4] = {88, 187, 284, 387};
-
 		if (_industry_sort_dirty) {
 			_industry_sort_dirty = false;
 			MakeSortedIndustryList();
@@ -790,10 +814,10 @@
 		SetVScrollCount(w, _num_industry_sort);
 
 		DrawWindowWidgets(w);
-		DoDrawString(_industry_sort_order & 1 ? DOWNARROW : UPARROW, _indicator_positions[_industry_sort_order >> 1], 15, TC_BLACK);
+		DrawSortButtonState(w, IDW_SORTBYNAME + (_industry_sort_order >> 1), _industry_sort_order & 1 ? SBS_DOWN : SBS_UP);
 
-		p = w->vscroll.pos;
-		n = 0;
+		uint p = w->vscroll.pos;
+		int n = 0;
 
 		while (p < _num_industry_sort) {
 			const Industry* i = _industry_sort[p];
--- a/src/intro_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/intro_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,9 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
-#include "player.h"
 #include "network/network.h"
 #include "variables.h"
 #include "heightmap.h"
@@ -20,6 +17,10 @@
 #include "window_func.h"
 #include "fios.h"
 #include "gfx_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 static const Widget _select_game_widgets[] = {
 {    WWT_CAPTION, RESIZE_NONE, 13,   0, 335,   0,  13, STR_0307_OPENTTD,         STR_NULL},
@@ -51,51 +52,73 @@
 	InvalidateWindowClasses(WC_SELECT_GAME);
 }
 
+enum SelectGameIntroWidgets {
+	SGI_GENERATE_GAME = 2,
+	SGI_LOAD_GAME,
+	SGI_PLAY_SCENARIO,
+	SGI_PLAY_HEIGHTMAP,
+	SGI_EDIT_SCENARIO,
+	SGI_PLAY_NETWORK,
+	SGI_TEMPERATE_LANDSCAPE,
+	SGI_ARCTIC_LANDSCAPE,
+	SGI_TROPIC_LANDSCAPE,
+	SGI_TOYLAND_LANDSCAPE,
+	SGI_OPTIONS,
+	SGI_DIFFICULTIES,
+	SGI_PATCHES_OPTIONS,
+	SGI_GRF_SETTINGS,
+	SGI_EXIT,
+};
+
 static void SelectGameWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
-	case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + 8); break;
+		case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + 8); break;
 
-	case WE_PAINT:
-		w->SetWidgetLoweredState(8,  _opt_newgame.landscape == LT_TEMPERATE);
-		w->SetWidgetLoweredState(9,  _opt_newgame.landscape == LT_ARCTIC);
-		w->SetWidgetLoweredState(10, _opt_newgame.landscape == LT_TROPIC);
-		w->SetWidgetLoweredState(11, _opt_newgame.landscape == LT_TOYLAND);
-		SetDParam(0, STR_6801_EASY + _opt_newgame.diff_level);
-		DrawWindowWidgets(w);
-		break;
+		case WE_PAINT:
+			w->SetWidgetLoweredState(SGI_TEMPERATE_LANDSCAPE, _opt_newgame.landscape == LT_TEMPERATE);
+			w->SetWidgetLoweredState(SGI_ARCTIC_LANDSCAPE, _opt_newgame.landscape == LT_ARCTIC);
+			w->SetWidgetLoweredState(SGI_TROPIC_LANDSCAPE, _opt_newgame.landscape == LT_TROPIC);
+			w->SetWidgetLoweredState(SGI_TOYLAND_LANDSCAPE, _opt_newgame.landscape == LT_TOYLAND);
+			SetDParam(0, STR_6801_EASY + _opt_newgame.diff_level);
+			DrawWindowWidgets(w);
+			break;
 
-	case WE_CLICK:
+		case WE_CLICK:
 #ifdef ENABLE_NETWORK
-		/* Do not create a network server when you (just) have closed one of the game
-		 * creation/load windows for the network server. */
-		if (2 <= e->we.click.widget && e->we.click.widget <= 6) _is_network_server = false;
+			/* Do not create a network server when you (just) have closed one of the game
+			 * creation/load windows for the network server. */
+			if (SGI_GENERATE_GAME <= e->we.click.widget && e->we.click.widget <= SGI_EDIT_SCENARIO) _is_network_server = false;
 #endif /* ENABLE_NETWORK */
 
-		switch (e->we.click.widget) {
-		case 2: ShowGenerateLandscape(); break;
-		case 3: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
-		case 4: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
-		case 5: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
-		case 6: StartScenarioEditor(); break;
-		case 7:
-			if (!_network_available) {
-				ShowErrorMessage(INVALID_STRING_ID, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
-			} else {
-				ShowNetworkGameWindow();
+			switch (e->we.click.widget) {
+				case SGI_GENERATE_GAME:  ShowGenerateLandscape(); break;
+				case SGI_LOAD_GAME:      ShowSaveLoadDialog(SLD_LOAD_GAME); break;
+				case SGI_PLAY_SCENARIO:  ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
+				case SGI_PLAY_HEIGHTMAP: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
+				case SGI_EDIT_SCENARIO:  StartScenarioEditor(); break;
+
+				case SGI_PLAY_NETWORK:
+					if (!_network_available) {
+						ShowErrorMessage(INVALID_STRING_ID, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
+					} else {
+						ShowNetworkGameWindow();
+					}
+					break;
+
+				case SGI_TEMPERATE_LANDSCAPE:	case SGI_ARCTIC_LANDSCAPE:
+				case SGI_TROPIC_LANDSCAPE: case SGI_TOYLAND_LANDSCAPE:
+					w->RaiseWidget(_opt_newgame.landscape + SGI_TEMPERATE_LANDSCAPE);
+					SetNewLandscapeType(e->we.click.widget - SGI_TEMPERATE_LANDSCAPE);
+					break;
+
+				case SGI_OPTIONS:         ShowGameOptions(); break;
+				case SGI_DIFFICULTIES:    ShowGameDifficulty(); break;
+				case SGI_PATCHES_OPTIONS: ShowPatchesSelection(); break;
+				case SGI_GRF_SETTINGS:    ShowNewGRFSettings(true, true, false, &_grfconfig_newgame); break;
+				case SGI_EXIT:            HandleExitGameRequest(); break;
 			}
 			break;
-		case 8: case 9: case 10: case 11:
-			w->RaiseWidget(_opt_newgame.landscape + 8);
-			SetNewLandscapeType(e->we.click.widget - 8);
-			break;
-		case 12: ShowGameOptions(); break;
-		case 13: ShowGameDifficulty(); break;
-		case 14: ShowPatchesSelection(); break;
-		case 15: ShowNewGRFSettings(true, true, false, &_grfconfig_newgame); break;
-		case 16: HandleExitGameRequest(); break;
-		}
-		break;
 	}
 }
 
@@ -120,9 +143,9 @@
 void AskExitGame()
 {
 #if defined(_WIN32)
-		SetDParam(0, STR_0133_WINDOWS);
+		SetDParam(0, STR_OSNAME_WINDOWS);
 #elif defined(__APPLE__)
-		SetDParam(0, STR_0135_OSX);
+		SetDParam(0, STR_OSNAME_OSX);
 #elif defined(__BEOS__)
 		SetDParam(0, STR_OSNAME_BEOS);
 #elif defined(__MORPHOS__)
@@ -134,7 +157,7 @@
 #elif defined(SUNOS)
 		SetDParam(0, STR_OSNAME_SUNOS);
 #else
-		SetDParam(0, STR_0134_UNIX);
+		SetDParam(0, STR_OSNAME_UNIX);
 #endif
 	ShowQuery(
 		STR_00C7_QUIT,
--- a/src/landscape.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/landscape.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,9 +5,7 @@
 #include "bridge_map.h"
 #include "heightmap.h"
 #include "clear_map.h"
-#include "player.h"
 #include "spritecache.h"
-#include "table/sprites.h"
 #include <stdarg.h>
 #include "viewport_func.h"
 #include "command_func.h"
@@ -24,6 +22,10 @@
 #include "functions.h"
 #include "date_func.h"
 #include "vehicle_func.h"
+#include "settings_type.h"
+#include "water.h"
+
+#include "table/sprites.h"
 
 extern const TileTypeProcs
 	_tile_type_clear_procs,
@@ -140,7 +142,7 @@
 
 	int z = 0;
 
-	switch (corners & ~SLOPE_HALFTILE_MASK) {
+	switch (RemoveHalftileSlope(corners)) {
 	case SLOPE_W:
 		if (x - y >= 0)
 			z = (x - y) >> 1;
@@ -252,10 +254,7 @@
 int GetSlopeZInCorner(Slope tileh, Corner corner)
 {
 	assert(!IsHalftileSlope(tileh));
-	static const int _corner_slopes[4][2] = {
-		{ SLOPE_W, SLOPE_STEEP_W }, { SLOPE_S, SLOPE_STEEP_S }, { SLOPE_E, SLOPE_STEEP_E }, { SLOPE_N, SLOPE_STEEP_N }
-	};
-	return ((tileh & _corner_slopes[corner][0]) != 0 ? TILE_HEIGHT : 0) + (tileh == _corner_slopes[corner][1] ? TILE_HEIGHT : 0);
+	return ((tileh & SlopeWithOneCornerRaised(corner)) != 0 ? TILE_HEIGHT : 0) + (tileh == SteepSlope(corner) ? TILE_HEIGHT : 0);
 }
 
 /**
@@ -287,15 +286,24 @@
 
 	if ((tileh & corners[edge][0]) != 0) *z1 += TILE_HEIGHT; // z1 is raised
 	if ((tileh & corners[edge][1]) != 0) *z2 += TILE_HEIGHT; // z2 is raised
-	if ((tileh & ~SLOPE_HALFTILE_MASK) == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope
-	if ((tileh & ~SLOPE_HALFTILE_MASK) == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope
+	if (RemoveHalftileSlope(tileh) == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope
+	if (RemoveHalftileSlope(tileh) == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope
 }
 
-static Slope GetFoundationSlope(TileIndex tile, uint* z)
+/**
+ * Get slope of a tile on top of a (possible) foundation
+ * If a tile does not have a foundation, the function returns the same as GetTileSlope.
+ *
+ * @param tile The tile of interest.
+ * @param z returns the z of the foundation slope. (Can be NULL, if not needed)
+ * @return The slope on top of the foundation.
+ */
+Slope GetFoundationSlope(TileIndex tile, uint* z)
 {
 	Slope tileh = GetTileSlope(tile, z);
 	Foundation f = _tile_type_procs[GetTileType(tile)]->get_foundation_proc(tile, tileh);
-	*z += ApplyFoundationToSlope(f, &tileh);
+	uint z_inc = ApplyFoundationToSlope(f, &tileh);
+	if (z != NULL) *z += z_inc;
 	return tileh;
 }
 
@@ -628,7 +636,7 @@
 		for (x = 0; x < maxx; x++) {
 			MakeClear(sizex * y + x, CLEAR_GRASS, 3);
 			SetTileHeight(sizex * y + x, 0);
-			SetTropicZone(sizex * y + x, TROPICZONE_INVALID);
+			SetTropicZone(sizex * y + x, TROPICZONE_NORMAL);
 			ClearBridgeMiddle(sizex * y + x);
 		}
 		MakeVoid(sizex * y + x);
@@ -636,53 +644,6 @@
 	for (x = 0; x < sizex; x++) MakeVoid(sizex * y + x);
 }
 
-void ConvertGroundTilesIntoWaterTiles()
-{
-	TileIndex tile;
-	uint z;
-	Slope slope;
-
-	for (tile = 0; tile < MapSize(); ++tile) {
-		slope = GetTileSlope(tile, &z);
-		if (IsTileType(tile, MP_CLEAR) && z == 0) {
-			/* Make both water for tiles at level 0
-			 * and make shore, as that looks much better
-			 * during the generation. */
-			switch (slope) {
-				case SLOPE_FLAT:
-					MakeWater(tile);
-					break;
-
-				case SLOPE_N:
-				case SLOPE_E:
-				case SLOPE_S:
-				case SLOPE_W:
-					MakeShore(tile);
-					break;
-
-				case SLOPE_NW:
-					if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_SE), NULL) != SLOPE_SE) MakeShore(tile);
-					break;
-
-				case SLOPE_SW:
-					if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_NE), NULL) != SLOPE_NE) MakeShore(tile);
-					break;
-
-				case SLOPE_SE:
-					if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_NW), NULL) != SLOPE_NW) MakeShore(tile);
-					break;
-
-				case SLOPE_NE:
-					if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_SW), NULL) != SLOPE_SW) MakeShore(tile);
-					break;
-
-				default:
-					break;
-			}
-		}
-	}
-}
-
 static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4  };
 static const byte _genterrain_tbl_2[5] = {  0,  0,  0,  0, 33 };
 
--- a/src/landscape.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/landscape.h	Sun Feb 03 20:17:54 2008 +0000
@@ -32,6 +32,7 @@
 uint GetSlopeZ(int x, int y);
 void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
 int GetSlopeZInCorner(Slope tileh, Corner corner);
+Slope GetFoundationSlope(TileIndex tile, uint* z);
 
 static inline Point RemapCoords(int x, int y, int z)
 {
@@ -55,8 +56,6 @@
 void InitializeLandscape();
 void GenerateLandscape(byte mode);
 
-void ConvertGroundTilesIntoWaterTiles();
-
 TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
 
 #endif /* LANDSCAPE_H */
--- a/src/lang/afrikaans.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/afrikaans.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Plat daal vereis
 STR_0008_WAITING                                                :{BLACK}Wag: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en-roete van
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Aanvaar: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Aanvaar: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Te veel name bepaal
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Gekies naam alreeds in gebruik
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Vrag
 STR_013D_INFORMATION                                            :{BLACK}Inligting
 STR_013E_CAPACITIES                                             :{BLACK}Kapasiteite
-STR_013E_TOTAL_CARGO                                            :{BLACK}Totaale Vrag
+STR_TOTAL_CARGO                                                 :{BLACK}Totaale Vrag
 STR_013F_CAPACITY                                               :{BLACK}Kapasiteit: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapasiteit: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Totaale vrag kapasitiet van die trein:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Totaale vrag kapasitiet van die trein:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nuwe Speletjie
 STR_0141_LOAD_GAME                                              :{BLACK}Laai Speletjie
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Veelspeler
 STR_SCENARIO_EDITOR                                             :{BLACK}Draaiboek Redakteur
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Werfkaart groote:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Speletjie Opsies
@@ -733,7 +725,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Uitvee hierdie dorp heeltemal
 STR_0292_SAVE_SCENARIO                                          :Spaar draaiboek
 STR_0293_LOAD_SCENARIO                                          :Laai draaiboek
-STR_LOAD_HEIGHTMAP                                              :Laai Hoogtekaart
+STR_MENU_LOAD_HEIGHTMAP                                         :Laai Hoogtekaart
 STR_0294_QUIT_EDITOR                                            :Laat vaar redigeerder
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Laat vaar
@@ -773,9 +765,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Speletjie opsies
-STR_02C5_DIFFICULTY_SETTINGS                                    :Moeite stellings
-STR_02C7_CONFIG_PATCHES                                         :Konfigureer laslappe
+STR_02C4_GAME_OPTIONS                                           :Speletjie opsies
+STR_02C6_DIFFICULTY_SETTINGS                                    :Moeite stellings
+STR_MENU_CONFIG_PATCHES                                         :Konfigureer laslappe
 STR_NEWGRF_SETTINGS                                             :NewGRF stellings
 STR_TRANSPARENCY_OPTIONS                                        :Deursigtigheid opsies
 STR_GAMEOPTMENU_0A                                              :
@@ -875,8 +867,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Spaar nog in vorder, {}wag asb tot dit klaar is!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Kies 'Ezy Straat styl musiek' musiek lys
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engels (Oorspronkilik)
@@ -1649,41 +1641,41 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Moet pad eers verwyder
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Pad werke in vorder
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Pad Konstruksie
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Tremweg Konstruksie
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Tremweg Konstruksie
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Kies Pad Brug
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... een rigting paaie kan nie aansluitings hê nie
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan nie pad hier bou nie...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan nie tremweg hier bou nie...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan nie tremweg hier bou nie...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan nie pad van hier verwyder nie...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan nie tremweg van hier af verwyder nie...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan nie tremweg van hier af verwyder nie...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Pad Depot Ori�tering
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Trem Depot Orientasie
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Trem Depot Orientasie
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan nie pad voertuig depot hier bou nie...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan nie trem voertuig depot hier bou nie...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan nie trem voertuig depot hier bou nie...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan nie bus stasie hier bou nie...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan nie vragmotor stasie bou nie...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan nie passasier trem stasie bou nie...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan nie vrag trem stasie bou nie...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan nie passasier trem stasie bou nie...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan nie vrag trem stasie bou nie...
 STR_180A_ROAD_CONSTRUCTION                                      :Pad konstruksie
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Tremweg konstruksie
+STR_TRAMWAY_CONSTRUCTION                                        :Tremweg konstruksie
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bou pad afdeling
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Bou pad seksie gebruikend Outopad metode
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bou tremweg afdeling
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Bou tremweg afdeling
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Bou tremweg gebruikend die Outotrem metode
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Bou pad voertuig depot (vir bou en diens van voertuie)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Bou trem voertuig depot (vir bou en diens van voertuie)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Bou trem voertuig depot (vir bou en diens van voertuie)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Bou bus stasie
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Bou vraagmotor laai area
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Bou passasier trem stasie
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Bou vrag trem stasie
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Bou passasier trem stasie
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Bou vrag trem stasie
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bou pad brug
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Bou tremweg brug
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Bou tremweg brug
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Bou pad tonnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Bou tremweg tonnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Bou tremweg tonnel
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Tokkel bou/verwyder vir pad bou
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Kies pad voertuig depot orientasie
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Kies trem voertuig depot orientasie
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Kies trem voertuig depot orientasie
 STR_1814_ROAD                                                   :Pad
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Pad met straatligte
 STR_1816_TREE_LINED_ROAD                                        :Boom-belynde pad
@@ -1825,8 +1817,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Grens aan meer as een bestaande stasie/laai area
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Te veel stasies/laai areas in die stad
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Te veel stasies/laai areas
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Te veel bushalte
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Te veel vragmotor stasies
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Te veel bushalte
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Te veel vragmotor stasies
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Te naby aan 'n ander stasie/laai area
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Moet eers spoorweg stasie afbreek
@@ -1857,12 +1849,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} aanvaar nou {STRING} en {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Bus Stasie Orientasie
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Vragmotor Stasie Orientasie
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Passasier Trem Orientasie
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Vrag Trem Orientasie
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Passasier Trem Orientasie
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Vrag Trem Orientasie
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Moet eers bus stasie afbreek
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Moet eers vragmotor stasie afbreek
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Moet eers passasier trem stasie afbreek
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Moet eers vrag trem stasie afbreek
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Moet eers passasier trem stasie afbreek
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Moet eers vrag trem stasie afbreek
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stasie{P "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Geen -
@@ -1874,8 +1866,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Kies lengte van spoorweg stasie
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Kies bus stasie orientasie
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Kies vragmotor laai area orientasie
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Kies passasier trem stasie orientasie
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Kies vrag trem stasie orientasie
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Kies passasier trem stasie orientasie
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Kies vrag trem stasie orientasie
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Senter skerm op stasie
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Toon stasie graderings
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Verander naam van stasie
@@ -1897,7 +1889,7 @@
 STR_3069_BUOY                                                   :Baken
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...baken in die pad
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...Stasie te ver van mekaar af
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ongelyk stasies is versper
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ongelyk stasies is versper
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hou in CTRL om meer as een item te selekteer
 
 STR_UNDEFINED                                                   :(undefined string)
@@ -1938,7 +1930,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Kies Nuwe Speletjie Tipe
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Kies draaiboek (groen), vooraf-stel speletjie (blou), of lukraak nuwe speletjie
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Opwek lukraak nuwe speletjie
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laai Hoogtekaart
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Laai Hoogtekaart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} in die pad
@@ -2142,10 +2134,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomie: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Trein omkeer: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Rampe: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Stad raad se houding na area herstruktuuring: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Stad raad se houding na area herstruktuuring: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Geen
+STR_NONE                                                        :Geen
 STR_NUM_VERY_LOW                                                :Baie laag
 STR_6816_LOW                                                    :Laag
 STR_6817_NORMAL                                                 :Normaal
@@ -2183,9 +2175,9 @@
 STR_6836_OFF                                                    :Af
 STR_6837_ON                                                     :Aan
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Wys ho�telling tabel
-STR_6839_PERMISSIVE                                             :Permissief
-STR_683A_TOLERANT                                               :Toelaatbaar
-STR_683B_HOSTILE                                                :Vyandelik
+STR_PERMISSIVE                                                  :Permissief
+STR_TOLERANT                                                    :Toelaatbaar
+STR_HOSTILE                                                     :Vyandelik
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2317,7 +2309,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan nie 25% aandeel in die maatskappy verkoop nie...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% besit by {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} is deur {COMPANY} oorgevat!
-STR_7080_PROTECTED                                              :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie...
+STR_PROTECTED                                                   :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie...
 
 STR_LIVERY_DEFAULT                                              :Standaard Lewery
 STR_LIVERY_STEAM                                                :Stoom Enjin
@@ -2624,17 +2616,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Gaan na {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Gaan na {STATION} (Oordrag en vat vrag)
-STR_8808_GO_TO_UNLOAD                                           :Gaan na {STATION} (Aflaai)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Gaan na {STATION} (Oordrag en verlaat leeg)
-STR_880A_GO_TO_LOAD                                             :Gaan na {STATION} (Laai)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Gaan na {STATION} (Oordrag en wag vir volle lading)
-STR_880C_GO_NON_STOP_TO                                         :Gaan deurgaande na {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Gaan deurgaande na {STATION} (Oordra en neem vrag)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Gaan deurgaande na {STATION} (Aflaai)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Gaan deurgaande na {STATION} (Oordra en verlaat leë)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Gaan deurgaande na {STATION} (Laai)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Gaan deurgaande na {STATION} (Oordra en wag vir volle lading)
+STR_GO_TO_TRANSFER                                              :Gaan na {STATION} (Oordrag en vat vrag)
+STR_8807_GO_TO_UNLOAD                                           :Gaan na {STATION} (Aflaai)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Gaan na {STATION} (Oordrag en verlaat leeg)
+STR_8808_GO_TO_LOAD                                             :Gaan na {STATION} (Laai)
+STR_GO_TO_TRANSFER_LOAD                                         :Gaan na {STATION} (Oordrag en wag vir volle lading)
+STR_880A_GO_NON_STOP_TO                                         :Gaan deurgaande na {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Gaan deurgaande na {STATION} (Oordra en neem vrag)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Gaan deurgaande na {STATION} (Aflaai)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Gaan deurgaande na {STATION} (Oordra en verlaat leë)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Gaan deurgaande na {STATION} (Laai)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Gaan deurgaande na {STATION} (Oordra en wag vir volle lading)
 STR_GO_TO_TRAIN_DEPOT                                           :Gaan na {TOWN} Trein Depot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Diens by {TOWN} Trein Depot
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Gaan deurgaande na {TOWN} Trein Depot
@@ -2738,7 +2730,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Toon besonderhede van vrag gedra
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Toon besonderhede van trein voertuie
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Toon kapasiteite van elke voertuig
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Opdraglys - kliek op 'n opdrag om dit te verlig. CTRL + kliek senter op stasie
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sprong die huidige opdraag, en begin die volgende. CTRL + kliek sprong na verkieste opdrag
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Vee uit die verlig opdrag
@@ -2769,8 +2761,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan nie rigting van trein omkeer nie...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Hernoem trein voertuig tipe
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Trein voertuig tipe kan nie hernoem word nie...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Maak die verlig opdrag forseer die voertuig om sy vrag te stort
-STR_886F_TRANSFER                                               :{BLACK}Oordra
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Maak die verlig opdrag forseer die voertuig om sy vrag te stort
+STR_TRANSFER                                                    :{BLACK}Oordra
 STR_CLEAR_TIME                                                  :{BLACK}Reinig Tyd
 STR_RESET_LATENESS                                              :{BLACK}Herstel Laat Teller
 
@@ -2847,8 +2839,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Benaam pad voertuig
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste bus arriveer by {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste trok arriveer by {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste passasier trein arriveer by {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste vrag trein arriveer by {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste passasier trein arriveer by {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste vrag trein arriveer by {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Pad Voertuig Botsing!{}Bestuurder sterf in vuurbol na botsing met trein
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Pad voertuig Botsing!{}{COMMA} sterf in vuurbol na botsing met trein
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan nie voertuig forseer om te omdraai nie...
@@ -2857,7 +2849,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Hernoem pad voertuig tipe
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Hernoem pad voertuig tipe
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Pad voertuig tipe kan nie hernoem word nie...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Gaan na {TOWN} Pad Voertuig Depot
+STR_GO_TO_ROADVEH_DEPOT                                         :Gaan na {TOWN} Pad Voertuig Depot
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Diens by {TOWN} Pad Voertuig Depot
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Herpas pad voertuig om 'n ander vrag tipe te ontvoer
@@ -3256,7 +3248,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Om te verstel oorsprong werfkaart te is nie aanbeveel. Voortgaan met die generasie?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Dorp uitleg waarskuwing
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Die dorp uitleg "geen meer paaie" is nie aanbeveel nie. Gaan aan met generasie?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Hoogtekaart name:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Groote: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Genereer wêreld...
@@ -3282,7 +3273,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Beweeg die hoogte van platte daal bo een
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Verander die hoogte van platte daal
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Hoogte van platte daal:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Senter die kleinwerfkaart op die huidige posisie
 
--- a/src/lang/brazilian_portuguese.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/brazilian_portuguese.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -14,11 +14,10 @@
 STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Não há dinheiro - requer {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
 STR_EMPTY                                                       :
-STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necessita de terreno plano
+STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Requer terreno plano
 STR_0008_WAITING                                                :{BLACK}Aguardando: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW} (em rota de
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} vindo de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Aceita: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Aceita: {GOLD}
 STR_000E                                                        :
@@ -276,9 +275,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Muitos nomes definidos
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}O nome escolhido já está em uso
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +288,11 @@
 STR_013C_CARGO                                                  :{BLACK}Carga
 STR_013D_INFORMATION                                            :{BLACK}Informação
 STR_013E_CAPACITIES                                             :{BLACK}Capacidades
-STR_013E_TOTAL_CARGO                                            :{BLACK}Carga Total
+STR_TOTAL_CARGO                                                 :{BLACK}Carga Total
 STR_013F_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacidade: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Capacidade total deste trem:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Capacidade total deste trem:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Novo Jogo
 STR_0141_LOAD_GAME                                              :{BLACK}Abrir Jogo
@@ -301,12 +300,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multi-jogador
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor de Cenário
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Dimensões do mapa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opções do Jogo
@@ -487,7 +480,7 @@
 STR_019F_TRAIN                                                  :{G=m}Trem
 STR_01A0_IS_GETTING_OLD                                         :{WHITE}{STRING} {COMMA} está ficando velho
 STR_01A1_IS_GETTING_VERY_OLD                                    :{WHITE}{STRING} {COMMA} está ficando muito velho
-STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} está ficando muito velho e necessita substituição urgente
+STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} está ficando muito velho e precisa ser substituído urgentemente
 STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Informações do Terreno
 STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Custo para limpar: {LTBLUE}N/D
 STR_01A5_COST_TO_CLEAR                                          :{BLACK}Custo para limpar: {LTBLUE}{CURRENCY}
@@ -723,7 +716,7 @@
 STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Construir Extração de Caramelo
 STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Construir Mina de Açúcar
 STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}Impossível construir {STRING} aqui...
-STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...necessário construir uma cidade primeiro
+STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...deve construir uma cidade primeiro
 STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...só é permitido uma por cidade
 STR_0288_PLANT_TREES                                            :{BLACK}Plantar árvores
 STR_0289_PLACE_SIGN                                             :{BLACK}Colocar placas
@@ -734,11 +727,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Colocar transmissor
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Define área desértica.{} Pressione e segure CTRL para removê-la
 STR_CREATE_LAKE                                                 :{BLACK}Define área com água.{} Faz um canal, a menos se CTRL for pressionado ao nível do mar, neste caso inundará ao redor
+STR_CREATE_RIVER                                                :{BLACK}Criar Rios
 STR_0290_DELETE                                                 :{BLACK}Remover
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Remover esta cidade completamente
 STR_0292_SAVE_SCENARIO                                          :Salvar cenário
 STR_0293_LOAD_SCENARIO                                          :Abrir cenário
-STR_LOAD_HEIGHTMAP                                              :Carregar relevo
+STR_MENU_LOAD_HEIGHTMAP                                         :Carregar relevo
 STR_0294_QUIT_EDITOR                                            :Sair do editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Sair
@@ -753,7 +747,7 @@
 STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...só pode ser construído em cidades com pelo menos 1200 habitantes
 STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Retroceder data de inicio em 1 ano
 STR_029F_MOVE_THE_STARTING_DATE                                 :{BLACK}Avançar data de inicio em 1 ano
-STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...os extremos da ponte necessitam estar sobre a terra
+STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...os extremos da ponte devem estar sobre a terra
 STR_02A1_SMALL                                                  :{BLACK}Pequena
 STR_02A2_MEDIUM                                                 :{BLACK}Média
 STR_02A3_LARGE                                                  :{BLACK}Grande
@@ -778,9 +772,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opções do Jogo
-STR_02C5_DIFFICULTY_SETTINGS                                    :Configurações de dificuldade
-STR_02C7_CONFIG_PATCHES                                         :Configurar correções
+STR_02C4_GAME_OPTIONS                                           :Opções do Jogo
+STR_02C6_DIFFICULTY_SETTINGS                                    :Configurações de dificuldade
+STR_MENU_CONFIG_PATCHES                                         :Configurar correções
 STR_NEWGRF_SETTINGS                                             :Configurar NewGRF
 STR_TRANSPARENCY_OPTIONS                                        :Opções de Transparência
 STR_GAMEOPTMENU_0A                                              :
@@ -880,8 +874,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Gravação em progresso,{}por favor aguarde até que termine!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selecionar programa 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglês (Original)
@@ -1404,7 +1398,7 @@
 STR_NETWORK_INTERNET_ADVERTISE                                  :Internet (divulgar)
 STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
 STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Máximo de clientes:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não necessita estarem todos preenchidos
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos
 STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P ia ias}
 STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Máximo de empresas:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Limita o servidor para uma certa quantia de empresas
@@ -1576,7 +1570,7 @@
 
 STR_PNGMAP_ERROR                                                :{WHITE}Impossível carregar terreno a partir de PNG...
 STR_PNGMAP_ERR_FILE_NOT_FOUND                                   :{WHITE}...arquivo não encontrado.
-STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...impossível converter tipo de imagem. Necessária imagem PNG de 8 ou 24-bit.
+STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...impossível converter tipo de imagem. Precisa imagem PNG de 8 ou 24-bit.
 STR_PNGMAP_ERR_MISC                                             :{WHITE}...alguma coisa deu errado. Desculpe. (provavel arquivo corrupto)
 
 STR_BMPMAP_ERROR                                                :{WHITE}Impossível carregar terreno a partir de BMP...
@@ -1609,7 +1603,7 @@
 STR_1004_TOO_HIGH                                               :{WHITE}Muito alto
 STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Tipo de linha não apropriado
 STR_1007_ALREADY_BUILT                                          :{WHITE}...já construído
-STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Necessário remover a ferrovia primeiro
+STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Deve remover a ferrovia primeiro
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Construir ferrovias
 STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Construir ferrovias (elétricas)
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Construir ferrovias (monotrilho)
@@ -1648,50 +1642,50 @@
 STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Linha de trem com pré-sinais e de saída
 STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ferrovia com pré-sinais e combo
 STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ferrovia com sinais combo e de saída
-STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Remova a estação de trem antes
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Deve remover a estação de trem antes
 
 
 
 ##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Necessário remover a rodovia primeiro
+STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Deve remover a rodovia primeiro
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Recapeamento rodoviário em progresso
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construir rodovias
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construção de Bonde
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construção de Bonde
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Selecionar Ponte Rodoviária
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... vias de mão única não podem ter junções
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Impossível construir rodovia aqui...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Impossível construir bonde aqui...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Impossível construir bonde aqui...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Impossível remover rodovia daqui...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Impossível remover bonde daqui...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Impossível remover bonde daqui...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientação da Garagem
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientação do Depósito
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientação do Depósito
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Impossível construir garagem aqui...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Impossível construir depósito aqui...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Impossível construir depósito aqui...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Impossível construir estação de ônibus...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Impossível construir estação de caminhão
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Impossível construir estação de bonde...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Impossível construir estação de bonde
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Impossível construir estação de bonde...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Impossível construir estação de bonde
 STR_180A_ROAD_CONSTRUCTION                                      :Construir rodovias
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construção de Bonde
+STR_TRAMWAY_CONSTRUCTION                                        :Construção de Bonde
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construir trecho rodoviário
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construir estradas usando o modo Autoestrada
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construir linha de bonde
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construir linha de bonde
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construir linha de bonde usando o modo Automático
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construir garagem (para construção e manutenção de automóveis)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construir depósito de bonde (para construção e manutenção de bondes)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Construir depósito de bonde (para construção e manutenção de bondes)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Construir estação de ônibus
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construir carga de caminhões
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Constuir estação de bonde para passageiros
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Constuir estação de bonde para carga
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Constuir estação de bonde para passageiros
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Constuir estação de bonde para carga
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construir ponte rodoviária
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construir ponte de bonde
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construir ponte de bonde
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construir túnel rodoviário
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construir túnel de bonde
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construir túnel de bonde
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Ativar/Desativar vias de mão única
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Alternar construir/remover para contrução rodoviária
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Alternar construir/remover linhas de bonde e sinais
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Alternar construir/remover linhas de bonde e sinais
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Selecionar a orientação da garagem
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Selecionar a orientação do depósito de bonde
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Selecionar a orientação do depósito de bonde
 STR_1814_ROAD                                                   :Rodovia
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Rodovia iluminada
 STR_1816_TREE_LINED_ROAD                                        :Rodovia arborizada
@@ -1710,7 +1704,7 @@
 STR_TOWN_LABEL_TINY_WHITE                                       :{TINYFONT}{WHITE}{TOWN}
 STR_2002                                                        :{TINYFONT}{BLACK}{SIGN}
 STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
-STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}O edifício necessita ser demolido primeiro
+STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}O edifício deve ser demolido primeiro
 STR_2005                                                        :{WHITE}{TOWN}
 STR_2006_POPULATION                                             :{BLACK}População: {ORANGE}{COMMA}{BLACK}  Casas: {ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :Renomear Cidade
@@ -1836,13 +1830,13 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Muito perto de uma estação/local de carga já existente
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Muitas estações/áreas de carga nesta cidade
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Muitas estações/áreas de carga
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Muitas estações de ônibus
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Muitos locais de carga
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Muitas estações de ônibus
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Muitos locais de carga
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Muito perto de outra estação/local de carga
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
-STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Necessário demolir a estação primeiro
+STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Deve demolir a estação primeiro
 STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Muito perto de outro aeroporto
-STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Necessário demolir o aeroporto primeiro
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Deve demolir o aeroporto primeiro
 
 STR_3030_RENAME_STATION_LOADING                                 :Renomear estação/área de carga
 STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Impossível renomear a estação...
@@ -1868,25 +1862,25 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} agora aceita {STRING} e {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientação do estação de ônibus
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientação da estação de caminhão
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientação da Estação de Bonde
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientação da Estação de Bonde
-STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Necessário demolir a estação de ônibus primeiro
-STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Necessário demolir a estação de caminhão
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Necessário demolir estação de bonde primeiro
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Necessário demolir estação de bonde primeiro
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientação da Estação de Bonde
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientação da Estação de Bonde
+STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Deve demolir a estação de ônibus primeiro
+STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Deve demolir a estação de caminhão
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Deve demolir a estação de bonde primeiro
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Deve demolir a estação de bonde primeiro
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estações
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nenhuma -
 STR_304B_SITE_UNSUITABLE                                        :{WHITE}...local inadequado
 STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Muito perto de outra doca
-STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Necessário demolir a doca primeiro
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Deve demolir a doca primeiro
 STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Selecionar a orientação da estação ferroviária
 STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Selecionar o número de linhas da estação ferroviária
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Selecionar o tamanho da estação ferroviária
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Selecionar orientação do estação de ônibus
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Selecionar orientação da área de carga
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Selecionar orientação da estação de bonde
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Selecionar orientação da estação de bonde
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Selecionar orientação da estação de bonde
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Selecionar orientação da estação de bonde
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centralizar visualização no local estação
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Exibir avaliações da estação
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Alterar o nome da estação
@@ -1908,7 +1902,7 @@
 STR_3069_BUOY                                                   :Bóia
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bóia no caminho
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...estação muito extensa
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...Estações não-uniformes desativadas
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...Estações não-uniformes desativadas
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Segure CTRL para selecionar mais de um item
 
 STR_UNDEFINED                                                   :(undefined string)
@@ -1917,7 +1911,7 @@
 
 ##id 0x3800
 STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Orientação do Depósito Naval
-STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...necessita ser construído na água
+STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...deve ser construído na água
 STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Impossível construir depósito naval aqui...
 STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Selecionar orientação do depósito naval
 STR_3804_WATER                                                  :Água
@@ -1949,7 +1943,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Selecionar Novo Tipo de Jogo
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Selecionar cenário (verde), jogo pré-programado (azul), ou novo jogo aleatório
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Gerar novo jogo aleatório
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Carregar Relevo
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Carregar Relevo
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} no caminho
@@ -1993,9 +1987,9 @@
 STR_4826_SUGAR_MINE                                             :{G=f}Mina de Açúcar
 
 ############ range for requires starts
-STR_4827_REQUIRES                                               :{BLACK}Necessário: {YELLOW}{STRING}
-STR_4828_REQUIRES                                               :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}
-STR_4829_REQUIRES                                               :{BLACK}Necessário: {YELLOW}{STRING}, {STRING}, {STRING}
+STR_4827_REQUIRES                                               :{BLACK}Requer: {YELLOW}{STRING}
+STR_4828_REQUIRES                                               :{BLACK}Requer: {YELLOW}{STRING}, {STRING}
+STR_4829_REQUIRES                                               :{BLACK}Requer: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
 ############ range for produces starts
@@ -2031,12 +2025,12 @@
 STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Automóvel no túnel
 STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Há outro túnel no caminho
 STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Incapaz de escavar o terreno para o outro lado do túnel
-STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Necessário demolir o túnel primeiro
-STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Necessário demolir a ponte primeiro
+STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Deve demolir o túnel primeiro
+STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Deve demolir a ponte primeiro
 STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Impossível iniciar e terminar no mesmo ponto
 STR_BRIDGEHEADS_NOT_SAME_HEIGHT                                 :{WHITE}Extremidades da ponte não estão no mesmo nível
 STR_BRIDGE_TOO_LOW_FOR_TERRAIN                                  :{WHITE}Ponte é muito baixa para o terreno
-STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Inicio e fim necessitam estar alinhados
+STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Inicio e fim devem estar alinhados
 STR_500B_SITE_UNSUITABLE_FOR_TUNNEL                             :{WHITE}O local não é adequado para a entrada do túnel
 STR_500D                                                        :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
 STR_500E_SUSPENSION_STEEL                                       :Suspensa, Aço
@@ -2153,10 +2147,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economia: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Inverter trem: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Desastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Nenhum
+STR_NONE                                                        :Nenhum
 STR_NUM_VERY_LOW                                                :Muito baixo
 STR_6816_LOW                                                    :Baixo
 STR_6817_NORMAL                                                 :Normal
@@ -2194,9 +2188,9 @@
 STR_6836_OFF                                                    :Off
 STR_6837_ON                                                     :On
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Exibir melhores pontuações
-STR_6839_PERMISSIVE                                             :Permissivo
-STR_683A_TOLERANT                                               :Tolerante
-STR_683B_HOSTILE                                                :Hostil
+STR_PERMISSIVE                                                  :Permissivo
+STR_TOLERANT                                                    :Tolerante
+STR_HOSTILE                                                     :Hostil
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2245,7 +2239,7 @@
 STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...o empréstimo máximo permitido é de {CURRENCY}
 STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Impossível pedir mais dinheiro emprestado...
 STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...não há empréstimo para pagar
-STR_702E_REQUIRED                                               :{WHITE}...necessário {CURRENCY}
+STR_702E_REQUIRED                                               :{WHITE}...precisa de {CURRENCY}
 STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Impossível pagar empréstimo...
 STR_INSUFFICIENT_FUNDS                                          :{WHITE}Impossível dar o dinheiro emprestado do banco
 STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Selecionar novo rosto para o presidente
@@ -2321,8 +2315,8 @@
 STR_COMPANY_PASSWORD_CAPTION                                    :{WHITE}Senha da empresa
 STR_MAKE_DEFAULT_COMPANY_PASSWORD                               :{BLACK}Senha padrão da empresa
 STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP                           :{BLACK}Usar esta senha de empresa como padrão para novas empresas
-STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Recesso Mundial!{}{}Economistas temem crise!
-STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Fim do recesso!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
+STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Recessão Mundial!{}{}Economistas temem crise!
+STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Fim da recessão!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
 STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Alternar entre janela grande/pequena
 STR_7076_COMPANY_VALUE                                          :{GOLD}Valor da empresa: {WHITE}{CURRENCY}
 STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Comprar 25% de ações
@@ -2333,7 +2327,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Impossível vender 25% das ações desta empresa...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% propriedade de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} foi comprada por {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Esta empresa ainda não troca ações...
+STR_PROTECTED                                                   :{WHITE}Esta empresa ainda não troca ações...
 
 STR_LIVERY_DEFAULT                                              :Cores padrão
 STR_LIVERY_STEAM                                                :Máquina a Vapor
@@ -2346,6 +2340,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Vagão de Passageiro (Vapor)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Vagão de Passageiro (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Vagão de Passageiro (Elétrico)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Vagão de Passageiro (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Vagão de Passageiro (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagão de carga
 STR_LIVERY_BUS                                                  :Ônibus
 STR_LIVERY_TRUCK                                                :Caminhão
@@ -2640,17 +2636,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ir para {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ir para {STATION} (Transferir e carregar)
-STR_8808_GO_TO_UNLOAD                                           :Ir para {STATION} (Descarregar)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ir para {STATION} (Transferir e deixar vazio)
-STR_880A_GO_TO_LOAD                                             :Ir para {STATION} (Carregar)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ir para {STATION} (Trasferir e aguardar carga total)
-STR_880C_GO_NON_STOP_TO                                         :Ir sem parar para {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ir sem parar para {STATION} (Transferir e carregar)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ir sem parar para {STATION} (Descarregar)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ir sem parar para {STATION} (Transferir e deixar vazio)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ir sem parar para {STATION} (Carregar)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ir sem parar para {STATION} (Trasferir e aguardar carga total)
+STR_GO_TO_TRANSFER                                              :Ir para {STATION} (Transferir e carregar)
+STR_8807_GO_TO_UNLOAD                                           :Ir para {STATION} (Descarregar)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ir para {STATION} (Transferir e deixar vazio)
+STR_8808_GO_TO_LOAD                                             :Ir para {STATION} (Carregar)
+STR_GO_TO_TRANSFER_LOAD                                         :Ir para {STATION} (Trasferir e aguardar carga total)
+STR_880A_GO_NON_STOP_TO                                         :Ir sem parar para {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ir sem parar para {STATION} (Transferir e carregar)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ir sem parar para {STATION} (Descarregar)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ir sem parar para {STATION} (Transferir e deixar vazio)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ir sem parar para {STATION} (Carregar)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ir sem parar para {STATION} (Trasferir e aguardar carga total)
 STR_GO_TO_TRAIN_DEPOT                                           :Ir para o depósito de {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Manutenção no depósito de {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ir sem parar para o depósito de {TOWN}
@@ -2715,7 +2711,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valor: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Carregando / descarregando
-STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}O trem necessita estar parado dentro do depósito
+STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}O trem deve estar parado dentro do depósito
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Impossível enviar o trem para o depósito...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Não há espaço para mais ordens
 STR_8832_TOO_MANY_ORDERS                                        :{WHITE}Muitas ordens
@@ -2734,7 +2730,7 @@
 STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Intervalo de serviço: {LTBLUE}{COMMA}dias{BLACK}   Último serviço: {LTBLUE}{DATE_LONG}
 STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Intervalo de serviço: {LTBLUE}{COMMA}%{BLACK}   Último serviço: {LTBLUE}{DATE_LONG}
 STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trens - clique num trem para informações
-STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Construir novos trens (necessita depósito de trens)
+STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Construir novos trens (requer depósito de trens)
 STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trens - clique num trem para informações, arraste um veículo o adicionar ao tren ou remover
 STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Construir novo veículo ferroviário
 STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Arraste o veículo aqui para vendê-lo
@@ -2754,7 +2750,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Exibir detalhes da carga transportada
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Exibir detalhes dos veículos
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Exibir capacidades de cada veículo
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Exibir capacidade total do trem, dividir por tipo de carga
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Exibir capacidade total do trem, dividir por tipo de carga
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de ordens - clique numa ordem para a selecionar
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Pula a ordem atual e executa a próxima. CTRL + clique pula a ordem selecionada
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Remover a ordem selecionada
@@ -2766,7 +2762,7 @@
 STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Mude a quantidade de tempo que a ordem deverá levar
 STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Reseta a quantidade de tempo para a ordem selecionada
 STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Reseta o contador de atraso, fazendo o veículo estar na hora
-STR_SERVICE_HINT                                                :{BLACK}Saltar esta ordem a menos que seja necessário manutenção
+STR_SERVICE_HINT                                                :{BLACK}Pular esta ordem a menos que necessite de 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}Quebrado
 STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Idade: {LTBLUE}{STRING}{BLACK}   Custo de circulação: {LTBLUE}{CURRENCY}/ano
@@ -2785,8 +2781,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Impossível inverter a direção do trem...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renomear tipo de veículo ferroviário
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Impossível renomear tipo de veículo ferroviário...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Força o veículo a deixar a carga na ordem selecionada
-STR_886F_TRANSFER                                               :{BLACK}Transferir
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Força o veículo a deixar a carga na ordem selecionada
+STR_TRANSFER                                                    :{BLACK}Transferir
 STR_CLEAR_TIME                                                  :{BLACK}Resetar horário
 STR_RESET_LATENESS                                              :{BLACK}Resetar contador de atraso
 
@@ -2831,7 +2827,7 @@
 STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Confiabilidade: {LTBLUE}{COMMA}%  {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
 STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
 STR_9012_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}
-STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...necessita estar parado dentro de uma garagem
+STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...deve estar parado dentro de uma garagem
 STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}Impossível vender automóvel...
 STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}Impossível iniciar/parar automóvel...
 STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Automóvel {COMMA} está aguardando na garagem
@@ -2842,7 +2838,7 @@
 STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}Impossível enviar o veículo para a garagem...
 STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Incapaz de encontrar a garagem local
 STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}Automóveis - clique num veículo para informações
-STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Construir novos automóveis (necessita de garagem)
+STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Construir novos automóveis (requer garagem)
 STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Tarefa atual do veículo - clique aqui para iniciar/parar veículo
 STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Exibir ordens do veículo
 STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Centrar visualização na localização do veículo
@@ -2864,8 +2860,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Renomear automóvel
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro ônibus chega a {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro caminhão chega a {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de passageiros chega a {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de carga chega a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de passageiros chega a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de carga chega a {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Acidente Rodoviário!{} Condutor morre numa explosão após a colisão com um trem
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Acidente Rodoviário!{} {COMMA} mortos numa explosão após a colisão com um trem
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Impossível fazer o veículo dar a volta...
@@ -2874,7 +2870,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renomear tipo do automóvel
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renomear tipo do automóvel
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Impossível renomear tipo do automóvel...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ir para a garagem de {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Ir para a garagem de {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Manutenção na garagem de {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Adaptar automóvel para carregar tipo de carga diferente
@@ -2895,7 +2891,7 @@
 STR_CLONE_SHIP                                                  :{BLACK}Clonar Embarcação
 STR_CLONE_SHIP_INFO                                             :{BLACK}Isso vai construir uma cópia da embarcação. Control-clique vai compartilhar as ordens
 STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Isso irá construir uma cópia da embarcação. Clique neste botão e depois em uma embarcação dentro ou fora do depósito naval. Control-clique vai compartilhar as ordens
-STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}A embarcação necessita estar parado no depósito naval
+STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}A embarcação deve estar parado no depósito naval
 STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}Impossível vender embarcação...
 STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Impossível construir embarcação...
 STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Embarcação no caminho
@@ -2922,7 +2918,7 @@
 STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}Arraste a embarcação aqui para vendê-la
 STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Centrar visualização na localização do depósito naval
 STR_9823_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Embarcações - clique numa embarcação para informações
-STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Construir novas embarcações (necessita de depósito naval)
+STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Construir novas embarcações (requer depósito naval)
 STR_9825_SHIP_SELECTION_LIST_CLICK                              :{BLACK}Lista de embarcações - clique numa embarcação para informações
 STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Construir embarcação selecionado
 STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Tarefa atual da embarcação - clique aqui para iniciar/parar embarcação
@@ -2985,12 +2981,12 @@
 STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Aeronave está em voo
 STR_A019_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}, {CARGO}
 STR_A01A_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}
-STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}A aeronave necessita estar parada no hangar
+STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}A aeronave deve estar parada no hangar
 STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Impossível vender aeronave...
 STR_A01D_AIRPORT_CONSTRUCTION                                   :Construir aeroporto
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Construir aeroporto
 STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aeronave - clique na aeronave para informações
-STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Construir nova aeronave (necessita de aeroporto com hangar)
+STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Construir nova aeronave (requer de aeroporto com hangar)
 STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aeronave - clique na aeronave para informações
 STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Construir nova aeronave
 STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Arraste a aeronave aqui para vendê-la
@@ -3248,6 +3244,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Todas menos {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Tração : {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Gerar
@@ -3275,7 +3277,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Alterar muito o tamanho do mapa original não é recomendado. Continuar com a geração?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Aviso do layout da cidade
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}O Layout "sem mais estradas" não é recomendado. Continuar com a geração?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nome do mapa em relevo:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Tamanho: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Gerando mundo...
@@ -3301,7 +3302,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Mover a altitude da terra plana em uma unidade a mais
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Mudar a altitude da terra plana
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altitude da terra plana
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centralizar o minimapa na posição atual
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/bulgarian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/bulgarian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Трябва равна земя
 STR_0008_WAITING                                                :{BLACK}Чакане: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (на път от
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} на път от {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Приема: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Приема: {GOLD}
 STR_000E                                                        :
@@ -276,9 +275,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Прекалено много имена
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Избраното име вече е в употреба
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :ОС Х
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :ОС Х
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +288,11 @@
 STR_013C_CARGO                                                  :{BLACK}Товар
 STR_013D_INFORMATION                                            :{BLACK}Информация
 STR_013E_CAPACITIES                                             :{BLACK}Вместимости
-STR_013E_TOTAL_CARGO                                            :{BLACK}Общо товар
+STR_TOTAL_CARGO                                                 :{BLACK}Общо товар
 STR_013F_CAPACITY                                               :{BLACK}Вместимост: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Капацитет: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Обща товарна вместимост на влака:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Обща товарна вместимост на влака:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Нова игра
 STR_0141_LOAD_GAME                                              :{BLACK}Отвори игра
@@ -301,12 +300,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Много играчи
 STR_SCENARIO_EDITOR                                             :{BLACK}Редактор сценарии
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Размер на картата:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Настройки
@@ -734,11 +727,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Постави предавател
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Избери пустинен терен.{}Задръж CTRL за да го премахнеш.
 STR_CREATE_LAKE                                                 :{BLACK}Определи водна площ.{}Построи канал, освем когато CTRL е натиснат на морско ниво, когато ще наводни околната среда в замяна
+STR_CREATE_RIVER                                                :{BLACK}Направи реки.
 STR_0290_DELETE                                                 :{BLACK}Изтрий
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Премахни напълно града
 STR_0292_SAVE_SCENARIO                                          :Запис на сценарий
 STR_0293_LOAD_SCENARIO                                          :Зареждане на сценарий
-STR_LOAD_HEIGHTMAP                                              :Отвори височинна карта
+STR_MENU_LOAD_HEIGHTMAP                                         :Отвори височинна карта
 STR_0294_QUIT_EDITOR                                            :Изход от редактора
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Изход
@@ -778,9 +772,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Игрови опции
-STR_02C5_DIFFICULTY_SETTINGS                                    :Опции за трудност
-STR_02C7_CONFIG_PATCHES                                         :Конфигурирай патчове
+STR_02C4_GAME_OPTIONS                                           :Игрови опции
+STR_02C6_DIFFICULTY_SETTINGS                                    :Опции за трудност
+STR_MENU_CONFIG_PATCHES                                         :Конфигурирай патчове
 STR_NEWGRF_SETTINGS                                             :Newgrf настройки
 STR_TRANSPARENCY_OPTIONS                                        :Опций на прозрачност
 STR_GAMEOPTMENU_0A                                              :
@@ -880,8 +874,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Записването продължава,{}моля изчакайте да сръши!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Избери програмата 'Ezy Street style music'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :английски (оригинални)
@@ -1656,42 +1650,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Първо махнете пътя
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Пътни ремонти в процес
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Пътно строителство
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Конструкциа на трамвайна линиа
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Конструкциа на трамвайна линиа
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Избор на асфалтов мост
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... еднопосочни пътища немогат да имат съединениа
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Пътя не може да се построи...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Пътя не може да се махне...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Ориентация на гараж
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Посока на Трамвайно Депо
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Посока на Трамвайно Депо
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Гаража не може да се построи...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Трамвайно депо неможе да бъде построено тук...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Товарна трамвайна гара неможе да бъде построена...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Товарна трамвайна гара неможе да бъде построена...
 STR_180A_ROAD_CONSTRUCTION                                      :Пътно строителство
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Конструкциа на трамвайна линиа
+STR_TRAMWAY_CONSTRUCTION                                        :Конструкциа на трамвайна линиа
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Строене на път
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Построи отсечка от шосе използвайки Афто-шосе методът
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Построи секциа от трамвайна линиа
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Построи секциа от трамвайна линиа
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Построи отсечка от железопътна линиа използвайки Афто-линиа методът
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Строене на гараж (за строене и сервиз на МПС-та)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Строене на автогара
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Строене на товарна гара
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Построи пъгническа трамвайна гара
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Построи товарна трамвайна гара
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Построи пъгническа трамвайна гара
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Построи товарна трамвайна гара
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Построй мост
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Построи трамвайен мост
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Построи трамвайен мост
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Построй тунел
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Построи трамвайен тунел
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Построи трамвайен тунел
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Активирай/Деактивирай еднопосочни пътища
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Премахване на асфалтов път
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Превключване строене/разрушаване на трамвайни консктрукции
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Превключване строене/разрушаване на трамвайни консктрукции
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Ориентация на гараж
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Избери посоката на трамвайното депо
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Избери посоката на трамвайното депо
 STR_1814_ROAD                                                   :път
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Асфалтов път с улични лампи
 STR_1816_TREE_LINED_ROAD                                        :Асфалтов път с дървета
@@ -1834,8 +1828,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Граничи с повече от една гара/товарна платформа
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Твърде много гари/товарни платформи в града
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Твърде много гари/товарни платформи
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Твърде много автобусни спирки
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Твърде много гари за камиони
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Твърде много автобусни спирки
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Твърде много гари за камиони
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Твърде близо до друга гара/товарна платформа
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Първо разрушете ЖП гарата
@@ -1866,12 +1860,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} вече приема {STRING} и {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Ориентация на автогара
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Ориент. товарна гара
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Посока на пътнически трамвай
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Посока на товарен трамвай
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Посока на пътнически трамвай
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Посока на товарен трамвай
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Първо разрушете автогарата
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Първо разрушете товарната гара
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Станци{P я и}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Николко -
@@ -1883,8 +1877,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Дължина на ЖП гарата
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Ориентация на автогарата
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Ориентация на товарната гара
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Избери посоката на пътническата трамвайна гара
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Избери посоката на товарната трамвайна гара
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Избери посоката на пътническата трамвайна гара
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Избери посоката на товарната трамвайна гара
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Центриране на главния прозорец върху станцията
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Покажи нивото на обслужване
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Промяна името на станцията
@@ -1906,7 +1900,7 @@
 STR_3069_BUOY                                                   :Шамандура
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...шамандура на пътя
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...станцията е прекалено разпръсната
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...неправилните станции са изключени
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...неправилните станции са изключени
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Задържете CTRL за да изберете повече от един обект
 
 STR_UNDEFINED                                                   :(неопределен текст)
@@ -1947,7 +1941,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Избери нов тип игра
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Избери на сценарии (зелено), предварително настроена игра (синьо), или произволна нова игра
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Генерирай произволна нова игра
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Зареди височинна карта
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Зареди височинна карта
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} пречи
@@ -2151,10 +2145,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Икономика: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Обръщане на влаковете: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Бедствия: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Отношение на градските власти към промяна на земята: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Отношение на градските власти към промяна на земята: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Николко
+STR_NONE                                                        :Николко
 STR_NUM_VERY_LOW                                                :Много ниско
 STR_6816_LOW                                                    :малко
 STR_6817_NORMAL                                                 :нормално
@@ -2192,9 +2186,9 @@
 STR_6836_OFF                                                    :изключено
 STR_6837_ON                                                     :включено
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Покажи класирането
-STR_6839_PERMISSIVE                                             :разрешаващи
-STR_683A_TOLERANT                                               :толерантни
-STR_683B_HOSTILE                                                :враждебни
+STR_PERMISSIVE                                                  :разрешаващи
+STR_TOLERANT                                                    :толерантни
+STR_HOSTILE                                                     :враждебни
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2331,7 +2325,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Не може да продадеш 25% от акциите на тази компания...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% е притежание на {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} бе закупена от {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Тази компания все още не е достатъчно стара да предлага акции...
+STR_PROTECTED                                                   :{WHITE}Тази компания все още не е достатъчно стара да предлага акции...
 
 STR_LIVERY_DEFAULT                                              :Стандартен Ливъри
 STR_LIVERY_STEAM                                                :Парен локомотив
@@ -2344,6 +2338,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Пътнически вагон (Парен)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Пътнически вагон (Дизел)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Пътнически вагон (Електрически)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Пътнически вагон (Monorail - еднорелсова железопътна линия)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Пътнически вагон (Maglev - магнетично издигнат влак)
 STR_LIVERY_FREIGHT_WAGON                                        :Товарен вагон
 STR_LIVERY_BUS                                                  :Автобус
 STR_LIVERY_TRUCK                                                :Камион
@@ -2638,17 +2634,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Отиди на {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Отиди на {STATION} (Обмени и вземи товар)
-STR_8808_GO_TO_UNLOAD                                           :Отиди на {STATION} (Разтовари)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Отиди на {STATION} (Обмени и не взимай нов товар)
-STR_880A_GO_TO_LOAD                                             :Отиди на {STATION} (Товари)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Отиди на {STATION} (Обмени и изчакай до пълен товар)
-STR_880C_GO_NON_STOP_TO                                         :Отиди без да спираш на {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Отиди без да спираш на {STATION} (Обмени и вземи товар)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :отиди без да спираш на {STATION} (Разтовари)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Отиди без да спираш на {STATION} (Обмени и не товари)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Отиди без да спираш на {STATION} (Товари)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Отиди без да спираш на {STATION} (Обмени и изчакай до пълен товар)
+STR_GO_TO_TRANSFER                                              :Отиди на {STATION} (Обмени и вземи товар)
+STR_8807_GO_TO_UNLOAD                                           :Отиди на {STATION} (Разтовари)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Отиди на {STATION} (Обмени и не взимай нов товар)
+STR_8808_GO_TO_LOAD                                             :Отиди на {STATION} (Товари)
+STR_GO_TO_TRANSFER_LOAD                                         :Отиди на {STATION} (Обмени и изчакай до пълен товар)
+STR_880A_GO_NON_STOP_TO                                         :Отиди без да спираш на {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Отиди без да спираш на {STATION} (Обмени и вземи товар)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :отиди без да спираш на {STATION} (Разтовари)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Отиди без да спираш на {STATION} (Обмени и не товари)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Отиди без да спираш на {STATION} (Товари)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Отиди без да спираш на {STATION} (Обмени и изчакай до пълен товар)
 STR_GO_TO_TRAIN_DEPOT                                           :Отиди до Влаковото депо на {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Ремонт в {TOWN} влаково депо
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Отиди без да спираш на {TOWN} Влаково депо
@@ -2752,7 +2748,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Информация за превозвания товар
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Информация за влаковата композиция
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Капацитет на влаковата композиция
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Общ капацитет на влака, разбит по типове товар
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Общ капацитет на влака, разбит по типове товар
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Пътен лист - натиснете върху назначение за маркиране. CTRL + натискане - центрира върху станцията
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Прескачане на настоящата заповед и започване на цледващата. CTRL + клик прескача до избраната заповед
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Изтриване на избраното назначение
@@ -2783,8 +2779,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Не може да обърне посоката на влак...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Преименуване на влак
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Не може да се преименува влак...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Изхвърляне на товара при достигане на избраното назначение
-STR_886F_TRANSFER                                               :{BLACK}Транфер
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Изхвърляне на товара при достигане на избраното назначение
+STR_TRANSFER                                                    :{BLACK}Транфер
 STR_CLEAR_TIME                                                  :{BLACK}Изчисти времето
 STR_RESET_LATENESS                                              :{BLACK}Преправи закъснялата бройка
 
@@ -2862,8 +2858,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат пътнически трамвай пристига на {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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}Не може да обърнеш МПС-то...
@@ -2872,7 +2868,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :Отиди  в {TOWN} МПС-депото
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Ремонт в {TOWN} гараж
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Преоборудване автомобила за друг товар
@@ -3246,6 +3242,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Всички освен {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Макс. теглеща сила: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Генериране
@@ -3273,7 +3275,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Прекаленото оразмеряване не е препорачително. Продължаване с генерацията?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Грацки план предупреждение
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Грацкиа план "няма повече пътища" не е препоръчан. Продължи със създаването?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Име на височинна карта:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Размер: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Създаване на свят...
@@ -3299,7 +3300,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Повишаване височината на плоска земя
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Промяна височината на плоска земя
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Височина на плоска земя:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Центриране на малката карта на текущата позиция
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/catalan.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/catalan.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Es necessita un terreny pla
 STR_0008_WAITING                                                :{BLACK}Esperant: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en ruta des de
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} en ruta des de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepta: {GOLD}
 STR_000E                                                        :
@@ -274,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Massa noms definits
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Aquest nom ja es fa servir
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Càrrega
 STR_013D_INFORMATION                                            :{BLACK}Informació
 STR_013E_CAPACITIES                                             :{BLACK}Capacitats
-STR_013E_TOTAL_CARGO                                            :{BLACK}Càrrega Total
+STR_TOTAL_CARGO                                                 :{BLACK}Càrrega Total
 STR_013F_CAPACITY                                               :{BLACK}Capacitats: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacitat: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Càrrega total (capacitat) d'aquest tren:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Càrrega total (capacitat) d'aquest tren:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Joc Nou
 STR_0141_LOAD_GAME                                              :{BLACK}Carrega un Joc
@@ -299,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multijugador
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor d'Escenaris
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Tamany del mapa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opcions del Joc
@@ -732,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Situa un repetidor
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Defineix àrea de desert.{}Prem i mantingues la tecla CTRL per treure'l
 STR_CREATE_LAKE                                                 :{BLACK}Defineix l'area d'aigua.{}Fa un canal, excepte si CTRL està apretat al nivell del mar, llavors s'inundaran els voltants
+STR_CREATE_RIVER                                                :{BLACK}Posa rius.
 STR_0290_DELETE                                                 :{BLACK}Esborra
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Esborra totalment aquesta població
 STR_0292_SAVE_SCENARIO                                          :Desa l'escenari
 STR_0293_LOAD_SCENARIO                                          :Carrega un escenari
-STR_LOAD_HEIGHTMAP                                              :Carrega Mapa d'alçades
+STR_MENU_LOAD_HEIGHTMAP                                         :Carrega Mapa d'alçades
 STR_0294_QUIT_EDITOR                                            :Surt de l'editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Surt
@@ -776,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opcions del Joc
-STR_02C5_DIFFICULTY_SETTINGS                                    :Paràmetres de dificultat
-STR_02C7_CONFIG_PATCHES                                         :Configura pedaços
+STR_02C4_GAME_OPTIONS                                           :Opcions del Joc
+STR_02C6_DIFFICULTY_SETTINGS                                    :Paràmetres de dificultat
+STR_MENU_CONFIG_PATCHES                                         :Configura pedaços
 STR_NEWGRF_SETTINGS                                             :Extensions NewGRF
 STR_TRANSPARENCY_OPTIONS                                        :Opcions de transparència
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}S'està desant el joc,{}espera a que acabi l'operació!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selecciona el programa 'Ezy Street style music'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglès
@@ -1654,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}S'ha de treure la carretera primer
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Obres en progrés
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construcció de Carreteres
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construcció de Tramvies
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construcció de Tramvies
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Selecciona un Pont per Carretera
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... les carreteres de sentit únic no poden tenir encreuaments
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Aquí no es pot construir una carretera...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}No puc construir la via de tramvia aquí...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}No puc construir la via de tramvia aquí...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Aquí no es pot treure una carretera...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}No puc treure la via de tramvia d'aquí...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}No puc treure la via de tramvia d'aquí...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Cotxeres
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientació de les cotxeres de tramvies
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientació de les cotxeres de tramvies
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Aquí no es pot construir una cotxera...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Aquí no puc construir les cotxeres de tramvies...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Aquí no puc construir les cotxeres de tramvies...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}No es pot construir una parada d'autobús...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}No es pot construir estació de mercaderies...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}No puc construir l'estació de tramvies de passatgers
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}No puc construir l'estació de tramvies de càrrega
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}No puc construir l'estació de tramvies de passatgers
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}No puc construir l'estació de tramvies de càrrega
 STR_180A_ROAD_CONSTRUCTION                                      :Construcció de Carreteres
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construcció de Tramvies
+STR_TRAMWAY_CONSTRUCTION                                        :Construcció de Tramvies
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construeix una secció de carretera
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construeix secció de carretera utilitzant el mode Autocarretera
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construeix una secció de via de tramvia
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construeix una secció de via de tramvia
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construeix secció de tramvia utilitzant el mode Autotramvia
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construeix una cotxera (per construir i mantenir vehicles)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construeix cotxeres de tramvies (per construir i revisar tramvies)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Construeix cotxeres de tramvies (per construir i revisar tramvies)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Constueix una parada d'autobús
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construeix un moll de càrrega
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Construeix una estació de tramvies de passatgers
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Construeix una estació de tramvies de mercaderies
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Construeix una estació de tramvies de passatgers
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Construeix una estació de tramvies de mercaderies
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construeix un pont per carretera
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construeix pont per tramvies
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construeix pont per tramvies
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construeix un túnel per carretera
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construeix túnel per tramvies
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construeix túnel per tramvies
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activa/Desactiva les carreteres d'un sentit
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Intercanvia funció construeix/treu per la construcció de carreteres
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Canvia construeix/treu de la construcció de vies de tramvia
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Canvia construeix/treu de la construcció de vies de tramvia
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Selecciona la orientació de les Cotxeres
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Selecciona l'orientació de les cotxeres de tramvies
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Selecciona l'orientació de les cotxeres de tramvies
 STR_1814_ROAD                                                   :Carretera
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Carretera amb fanals
 STR_1816_TREE_LINED_ROAD                                        :Carretera de tres carrils
@@ -1832,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Fusiona més d'una estació/àrea de càrrega existent
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Hi ha massa estacions/àrees de càrrega en aquesta població
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Massa estacions/àrees de càrrega
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Massa parades d'autobús
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Masses estacions de càrrega
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Massa parades d'autobús
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Masses estacions de càrrega
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Massa a prop d'una altra estació/àrea de càrrega
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Primer has d'enderrocar l'estació de tren
@@ -1864,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} ara accepta {STRING} i {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Parada d'autobús
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Estació de Mercaderies
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientació estació passatgers
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientació estació mercaderies
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientació estació passatgers
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientació estació mercaderies
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Primer has d'enderrocar la parada d'autobús
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Primer has d'enderrocar l'estació de mercaderies
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Primer has de demolir l'estació de tramvies de passatgers
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Primer has de demolir l'estació de tramvies de mercaderies
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Primer has de demolir l'estació de tramvies de passatgers
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Primer has de demolir l'estació de tramvies de mercaderies
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estacions/Parades
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Cap -
@@ -1881,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Selecciona la mida de les andanes de l'estació de tren
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Selecciona l'orientació de la parada d'autobús
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Selecciona l'orientació del moll de càrrega de camions
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Selecciona l'orientació de l'estació de tramvies de passatgers
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Selecciona l'orientació de l'estació de tramvies de mercaderies
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Selecciona l'orientació de l'estació de tramvies de passatgers
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Selecciona l'orientació de l'estació de tramvies de mercaderies
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centra la pantalla principal al lloc de l'estació
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Mostra els ratis de l'estació
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Canvia el nom de l'estació
@@ -1904,7 +1898,7 @@
 STR_3069_BUOY                                                   :Boia
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boia en el camí
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...estació massa extesa
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...estacions no uniformes desactivades
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...estacions no uniformes desactivades
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Mantin apretat CTRL per a seleccionar més de un item
 
 STR_UNDEFINED                                                   :(cadena sense definir)
@@ -1945,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Selecciona el Nou Tipus de Joc
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Selecciona l'escenari (verd), joc pre-programat (blau), o el nou joc aleatori
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Genera un nou joc aleatori
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Carrega un Mapa d'alçades
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Carrega un Mapa d'alçades
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} en el camí
@@ -2149,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economia: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Canvi de sentit dels trens: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Desastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Actitud de l'Ajuntament sobre reestructuracions d'àrees: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Actitud de l'Ajuntament sobre reestructuracions d'àrees: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Cap
+STR_NONE                                                        :Cap
 STR_NUM_VERY_LOW                                                :Molt baix
 STR_6816_LOW                                                    :Baix
 STR_6817_NORMAL                                                 :Normal
@@ -2190,9 +2184,9 @@
 STR_6836_OFF                                                    :Desactivat
 STR_6837_ON                                                     :Activat
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Veure la taula de les majors puntuacions
-STR_6839_PERMISSIVE                                             :Permisiu
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Hostil
+STR_PERMISSIVE                                                  :Permisiu
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Hostil
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}No pots vendre el 25% de participació en aquesta empresa...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% propietat de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} ha estat absorbida per {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Aquesta empresa ja no negocia participacions...
+STR_PROTECTED                                                   :{WHITE}Aquesta empresa ja no negocia participacions...
 
 STR_LIVERY_DEFAULT                                              :Decoració estandard
 STR_LIVERY_STEAM                                                :Motor de vapor
@@ -2342,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Vagó de passatgers (Vapor)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Vagó de passatgers (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Vagó de passatgers (Elèctric)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Vagó de Passatgers (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Vagó de Passatgers (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagó de càrrega
 STR_LIVERY_BUS                                                  :Autobús
 STR_LIVERY_TRUCK                                                :Camió
@@ -2636,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ves a {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ves a {STATION} (Transfereix i agafa càrrega)
-STR_8808_GO_TO_UNLOAD                                           :Ves a {STATION} (Descarrega)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ves a {STATION} (Transfereix i deixa buit)
-STR_880A_GO_TO_LOAD                                             :Ves a {STATION} (Carrega)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ves a {STATION} (Transfereix i espera càrrega completa)
-STR_880C_GO_NON_STOP_TO                                         :Ves sense parar a {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ves sense parar a {STATION} (Transfereix i agafa càrrega)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ves sense parar a {STATION} (Descarrega)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ves sense parar a {STATION} (Transfereix i deixa buit)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ves sense parar a {STATION} (Carrega)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ves sense parar a {STATION} (Transfereix i espera càrrega completa)
+STR_GO_TO_TRANSFER                                              :Ves a {STATION} (Transfereix i agafa càrrega)
+STR_8807_GO_TO_UNLOAD                                           :Ves a {STATION} (Descarrega)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ves a {STATION} (Transfereix i deixa buit)
+STR_8808_GO_TO_LOAD                                             :Ves a {STATION} (Carrega)
+STR_GO_TO_TRANSFER_LOAD                                         :Ves a {STATION} (Transfereix i espera càrrega completa)
+STR_880A_GO_NON_STOP_TO                                         :Ves sense parar a {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ves sense parar a {STATION} (Transfereix i agafa càrrega)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ves sense parar a {STATION} (Descarrega)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ves sense parar a {STATION} (Transfereix i deixa buit)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ves sense parar a {STATION} (Carrega)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ves sense parar a {STATION} (Transfereix i espera càrrega completa)
 STR_GO_TO_TRAIN_DEPOT                                           :Ves al Diposit {TOWN} de Tren
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Manteniment a cotxeres de {TOWN}.
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ves sense parar a les cotxeres de {TOWN}.
@@ -2750,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Mostra els detalls de càrrega transportada
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Mostra els detalls d'elements del tren
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostra les capacitats de cada element
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Llista d'ordres - clica en una per seleccionar-la
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Salta l'ordre actual, i comença la següent. CTRL + clic salta l'ordre seleccionada
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Esborra l'ordre seleccionada
@@ -2781,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}No es pot invertir la direcció del tren...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Reanomena el tipus d'element del tren
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}No es pot reanomenar el tipus d'element del tren...
-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_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Fer que l'ordre marcada forci al vehicle a volcar la càrrega
+STR_TRANSFER                                                    :{BLACK}Transf.
 STR_CLEAR_TIME                                                  :{BLACK}Esborra Temps
 STR_RESET_LATENESS                                              :{BLACK}Reset. control de retràs
 
@@ -2860,8 +2856,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Anomena automòbil
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Celebració popular . . .{}Primer autobús arriba a {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Celebració popular . . .{}Primer camió arriba a {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de passatgers arriba a {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de mercaderies arriba a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de passatgers arriba a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de mercaderies arriba a {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Accident de Vehicle!{}El conductor mor en una bola de foc després de la colisió amb un tren
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Accident de Vehicle!{}{COMMA} moren en una bola de foc després d'una colisió amb un tren
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}No es pot fer que el vehicle torni...
@@ -2870,7 +2866,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Reanomena tipus d'automòbil
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Reanomena tipus d'automòbil
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}No es pot reanomenar tipus d'automòbil
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ves a la cotxera de {TOWN}.
+STR_GO_TO_ROADVEH_DEPOT                                         :Ves a la cotxera de {TOWN}.
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Manteniment a la cotxera de {TOWN}.
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Remodela vehicle de carretera per dur un tipus diferent de càrrega
@@ -3244,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Tots menys {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Esforç de Tracció: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Genera
@@ -3271,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}No es recomana redimensionar massa el mapa d'origen. Vols continuar amb la generació?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Alerta de format de poble
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}El format de poble "no més carreteres" no està recomanat. Continuar amb la generació?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nom del mapa d'alçades:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Mida: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generant món...
@@ -3297,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Mou l'alçada del terreny pla un pas amunt
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Canvia alçada del terreny pla
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Alçada del terreny pla:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrar el mapa petit a la posició actual
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/croatian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/croatian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,14 +17,12 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebna ravna površina
 STR_0008_WAITING                                                :{BLACK}Čekanje: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (na putu od
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Prihvaća: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Prihvaća: {GOLD}
 STR_000E                                                        :
-STR_000F_PASSENGERS                                             :putnici
-STR_0010_COAL                                                   :ugljen
-STR_0011_MAIL                                                   :pošta
+STR_000F_PASSENGERS                                             :Putnici
+STR_0010_COAL                                                   :Ugljen
+STR_0011_MAIL                                                   :Pošta
 STR_0012_OIL                                                    :nafta
 STR_0013_LIVESTOCK                                              :domaće životinje
 STR_0014_GOODS                                                  :robe
@@ -276,9 +274,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Previše definiranih imena
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Odabrano ime već se koristi
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +287,11 @@
 STR_013C_CARGO                                                  :{BLACK}Teret
 STR_013D_INFORMATION                                            :{BLACK}Informacije
 STR_013E_CAPACITIES                                             :{BLACK}Nosivosti
-STR_013E_TOTAL_CARGO                                            :{BLACK}Ukupni teret
+STR_TOTAL_CARGO                                                 :{BLACK}Ukupni teret
 STR_013F_CAPACITY                                               :{BLACK}Nosivost: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Nosivost: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Ukupna nosivost tereta ovog vlaka:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Ukupna nosivost tereta ovog vlaka:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nova igra
 STR_0141_LOAD_GAME                                              :{BLACK}Učitaj igru
@@ -301,12 +299,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Više igrača
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor scenarija
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Veličina karte:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Postavke igre
@@ -738,7 +730,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Obriši ovaj grad u cjelosti
 STR_0292_SAVE_SCENARIO                                          :Spremi scenarij
 STR_0293_LOAD_SCENARIO                                          :Učitaj secenarij
-STR_LOAD_HEIGHTMAP                                              :Učitaj visinsku kartu
+STR_MENU_LOAD_HEIGHTMAP                                         :Učitaj visinsku kartu
 STR_0294_QUIT_EDITOR                                            :Završi s uređivanjem
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Završi
@@ -778,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Postavke igre
-STR_02C5_DIFFICULTY_SETTINGS                                    :Postavke težine
-STR_02C7_CONFIG_PATCHES                                         :Konfiguriraj zakrpe
+STR_02C4_GAME_OPTIONS                                           :Postavke igre
+STR_02C6_DIFFICULTY_SETTINGS                                    :Postavke težine
+STR_MENU_CONFIG_PATCHES                                         :Konfiguriraj zakrpe
 STR_NEWGRF_SETTINGS                                             :Postavke NewGRF-a
 STR_TRANSPARENCY_OPTIONS                                        :Postavke prozirnosti
 STR_GAMEOPTMENU_0A                                              :
@@ -880,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Odaberi glazbeni program 'Ezy Street style'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engleski (original)
@@ -1656,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Najprije moraš ukloniti cestu
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Cestovni radovi u tijeku
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Izgradnja ceste
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Izgradnja tramvaja
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Izgradnja tramvaja
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Odaberi cestovni most
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}...jednosmjerne ceste ne mogu imati raskrižja
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Ovdje nije moguće izgraditi cestu...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Ovdje nije moguće izgraditi tramvaj...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Ovdje nije moguće izgraditi tramvaj...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nije moguće ukloniti cestu odavdje...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nije moguće ukloniti tramvaj odavdje...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nije moguće ukloniti tramvaj odavdje...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Smjer cestovnog spremišta
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Smjer tramvajskog spremišta
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Smjer tramvajskog spremišta
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Ovdje nije moguće izgraditi spremište cestovnih vozila...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nije moguće izgraditi autobusnu stanicu...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nije moguće izgraditi kamionski terminal...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nije moguće izgraditi tramvajsku stanicu za putnike...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nije moguće izgraditi teretnu tramvajsku stanicu...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nije moguće izgraditi tramvajsku stanicu za putnike...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nije moguće izgraditi teretnu tramvajsku stanicu...
 STR_180A_ROAD_CONSTRUCTION                                      :Izgradnja ceste
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Izgradnja tramvaja
+STR_TRAMWAY_CONSTRUCTION                                        :Izgradnja tramvaja
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Izgradi dio ceste
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Izgradi cestu koristeći Autoroad način gradnje
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Izgradi tramvajski dio
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Izgradi tramvajski dio
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Izgradi tramvajsku prugu koristeći Autotram način gradnje
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Izgradi spremište cestovnih vozila (za izgradnju i servisiranje vozila)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Izgradi spremište tramvajskih vozila (za izgradnju i servisiranje vozila)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Izgradi spremište tramvajskih vozila (za izgradnju i servisiranje vozila)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Izgradi autobusnu stanicu
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Izgradi pretovarni kamionski terminal
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Izgradi putničku tramvajsku stanicu
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Izgradi teretnu tramvajsku stanicu
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Izgradi putničku tramvajsku stanicu
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Izgradi teretnu tramvajsku stanicu
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Izgradi cestovni most
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Izgradi tramvajski most
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Izgradi tramvajski most
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Izgradi cestovni tunel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Izgradi tramvajski tunel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Izgradi tramvajski tunel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktiviraj/deaktiviraj jednosmjerne ceste
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Aktiviraj izgradnju/uklanjanje ceste
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Aktiviraj izgradnju/brisanje za izgradnju tramvaja
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Aktiviraj izgradnju/brisanje za izgradnju tramvaja
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Odaberi smjer spremišta cestovnih vozila
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Odaberi smjer tramvajskog spremišta
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Odaberi smjer tramvajskog spremišta
 STR_1814_ROAD                                                   :Cesta
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Cesta sa semaforima
 STR_1816_TREE_LINED_ROAD                                        :Cesta s tri trake
@@ -1834,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Spaja više od jedne postojeće stanice/terminala
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}U ovom gradu ima previše stanica/terminala
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Previše stanica/terminala
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Previše autobusnih stanica
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Previše kamionskih stanica
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Previše autobusnih stanica
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Previše kamionskih stanica
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Preblizu drugoj stanici/terminalu
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Najprije moraš srušiti željezničku stanicu
@@ -1866,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} od sada prihvaća {STRING} i {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Smjer autobusne stanice
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Smjer kamionskog terminala
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orijentacija putničkog tramvaja
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orijentacija teretnog tramvaja
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orijentacija putničkog tramvaja
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orijentacija teretnog tramvaja
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Najprije moraš srušiti autobusnu stanicu
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Najprije moraš srušiti kamionski terminal
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Najprije moraš srušiti putničku tramvajsku stanicu
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Najprije moraš srušiti teretnu tramvajsku stanicu
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Najprije moraš srušiti putničku tramvajsku stanicu
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Najprije moraš srušiti teretnu tramvajsku stanicu
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stanic{P a e a}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ništa -
@@ -1883,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Odaberi dužinu željezničke stanice
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Odaberi smjer autobusne stanice
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Odaberi smjer kamionskog terminala
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Odaberi smjer putničke tramvajske stanice
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Odaberi smjer teretne tramvajske stanice
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Odaberi smjer putničke tramvajske stanice
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Odaberi smjer teretne tramvajske stanice
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centriraj glavni pogled na lokaciju stanice
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Pokaži ocjene stanice
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Promijeni ime stanice
@@ -1906,7 +1898,7 @@
 STR_3069_BUOY                                                   :Plutača
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...plutača na putu
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stanica previše proširena
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...neujednačene stanice onemogućene
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...neujednačene stanice onemogućene
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Drži CTRL kako bi odabrao više od jedne stavke
 
 STR_UNDEFINED                                                   :(neodređen znakovni niz)
@@ -1947,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Odaberi vrstu nove igre
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Odaberi scenarij (zeleno), namještenu igru (plavo), ili nasumičnu novu igru
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Stvori nasumičnu novu igru
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Učitaj visinsku kartu
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Učitaj visinsku kartu
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} na putu
@@ -2151,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomija: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Promjena smjera vlaka: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Prirodne katastrofe: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Stav gradsko vijeća prema restrukturiranju područja: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Stav gradsko vijeća prema restrukturiranju područja: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ništa
+STR_NONE                                                        :Ništa
 STR_NUM_VERY_LOW                                                :Vrlo nisko
 STR_6816_LOW                                                    :Nisko
 STR_6817_NORMAL                                                 :Normalno
@@ -2192,9 +2184,9 @@
 STR_6836_OFF                                                    :Isključeno
 STR_6837_ON                                                     :Uključeno
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Pokaži tablice najboljih rezultata
-STR_6839_PERMISSIVE                                             :Dopustiv
-STR_683A_TOLERANT                                               :Tolerantan
-STR_683B_HOSTILE                                                :Agresivan
+STR_PERMISSIVE                                                  :Dopustiv
+STR_TOLERANT                                                    :Tolerantan
+STR_HOSTILE                                                     :Agresivan
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2331,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Nije moguće prodati 25% udjela u ovoj tvrtci...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% u vlasništvu {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} je preuzeta od strane tvrtke {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Ova tvrka još nije dovoljno stara da bi trgovala udjelima...
+STR_PROTECTED                                                   :{WHITE}Ova tvrka još nije dovoljno stara da bi trgovala udjelima...
 
 STR_LIVERY_DEFAULT                                              :Standardna boja
 STR_LIVERY_STEAM                                                :Parna lokomotiva
@@ -2638,17 +2630,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Idi do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Idi do {STATION} (Transferiraj i preuzmi teret)
-STR_8808_GO_TO_UNLOAD                                           :Idi do {STATION} (Istovar)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Go to {STATION} (Transferiraj i otiđi prazan)
-STR_880A_GO_TO_LOAD                                             :Idi do{STATION} (Utovar)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Idi do {STATION} (Transferiraj i pričekaj puni utovar)
-STR_880C_GO_NON_STOP_TO                                         :Idi neprekidno do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Idi neprekidno do {STATION} (Transferiraj i preuzmi teret)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Idi neprekidno do {STATION} (Istovar)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Idi neprekidno do {STATION} (Transferiraj i otiđi prazan)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Idi neprekidno do {STATION} (Utovar)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Idi neprekidno do {STATION} (Transferiraj i pričekaj puni utovar)
+STR_GO_TO_TRANSFER                                              :Idi do {STATION} (Transferiraj i preuzmi teret)
+STR_8807_GO_TO_UNLOAD                                           :Idi do {STATION} (Istovar)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Go to {STATION} (Transferiraj i otiđi prazan)
+STR_8808_GO_TO_LOAD                                             :Idi do{STATION} (Utovar)
+STR_GO_TO_TRANSFER_LOAD                                         :Idi do {STATION} (Transferiraj i pričekaj puni utovar)
+STR_880A_GO_NON_STOP_TO                                         :Idi neprekidno do {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Idi neprekidno do {STATION} (Transferiraj i preuzmi teret)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Idi neprekidno do {STATION} (Istovar)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Idi neprekidno do {STATION} (Transferiraj i otiđi prazan)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Idi neprekidno do {STATION} (Utovar)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Idi neprekidno do {STATION} (Transferiraj i pričekaj puni utovar)
 STR_GO_TO_TRAIN_DEPOT                                           :Idi u spremište vlakova grada {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Servisiranje u spremištu vlakova grada {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Idi neprekidno do spremišta vlakova grada {TOWN}
@@ -2734,7 +2726,7 @@
 STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Vlakovi - klikni na vlak za informacije
 STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Izgradi/kupi nove vlakove (zahtijeva spremište vlakova)
 STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Vlakovi - klikni na vlak za informacije., vuci vozilo kako bi dodao/oduzeo od vlaka
-STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Izgradi novi vlak
+STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Kupi novo željezničko vozilo
 STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Ovdje povuci vlak kako bi ga prodao
 STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Centriraj glavni pogled na lokaciju željezničkog spremišta
 STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Popis izabranih vlakova - klikni na vlak za informacije
@@ -2752,7 +2744,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaži detalje tereta koji se prevozi
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Pokaži detalje vagona
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Pokaži nosivosti svakog vagona
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Pokaži ukupnu nosivost vlaka podijeljenu prema vrsti tereta
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Pokaži ukupnu nosivost vlaka podijeljenu prema vrsti tereta
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Popis naredbi - klikni na naredbu kako bi ju označio. CTRL + klik klizi na stanicu
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Preskoči trenutnu naredbu i pokreni slijedeću. CTRL + klik preskače na odabranu naredbu
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Obriši označenu naredbu
@@ -2783,8 +2775,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nije moguće promijeniti smjer vlaka...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Preimenuj vrstu vagona
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nije moguće preimenovati vrstu vagona...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Napravi da označena naredba prisili vozilo da izbaci teret
-STR_886F_TRANSFER                                               :{BLACK}Transfer
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Napravi da označena naredba prisili vozilo da izbaci teret
+STR_TRANSFER                                                    :{BLACK}Transfer
 STR_CLEAR_TIME                                                  :{BLACK}Obriši vrijeme
 STR_RESET_LATENESS                                              :{BLACK}Poništi Brojač Kašnjenja
 
@@ -2862,8 +2854,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Imenuj cestovno vozilo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Građani slave . . .{}Prvi bus je stigao na {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Građani slave . . .{}Prvi kamion je stigao na {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Građani slave . . .{}Prvi putnički tramvaj je stigao na {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Građani slave . . .{}Prvi teretni tramvaj je stigao na {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Građani slave . . .{}Prvi putnički tramvaj je stigao na {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Građani slave . . .{}Prvi teretni tramvaj je stigao na {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}Vozač poginuo u eksploziji nakon sudara s vlakom
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}{COMMA} poginulih u eksploziji nakon sudara s vlakom
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nije moguće natjerati vozilo da se okrene...
@@ -2872,7 +2864,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Preimenuj vrstu cestovnog vozila
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Preimenuj vrstu cestovnog vozila
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nije moguće preimenovati vrstu cestovnog vozila...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Idi prema spremištu cestovnih vozila grada {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Idi prema spremištu cestovnih vozila grada {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Servisiranje u spremištu cestovnih vozila grada {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Prenamijeni cestovno vozilo  za prijevoz neke druge vrste tereta
@@ -3246,6 +3238,9 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Sve osim {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK} Maks. vučni napor: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Izradi
@@ -3273,7 +3268,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Prekomjerna promjena veličine mape nije preporučena. Nastaviti sa kreiranjem?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Upozorenje na raspored grada
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Raspored grada s opcijom "nema više cesti" nije preporučen. Nastaviti s generiranjem?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Ime heightmape:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Veličina: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Izrada svijeta u toku...
@@ -3299,7 +3293,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Povisi ravnu površinu za jedan korak
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Promijeni visinu ravne površine
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Visina ravne površine:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centriraj malu mapu na trenutni položaj
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/czech.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/czech.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Je potřeba plochá země
 STR_0008_WAITING                                                :{BLACK}Čeká tu: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (na cestě z
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} na cestě z{NBSP}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Přijímá: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Přijímá: {GOLD}
 STR_000E                                                        :
@@ -332,9 +331,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Definováno příliš mnoho jmen
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Zvolené jméno se už používá
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unixu
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unixu
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -345,11 +344,11 @@
 STR_013C_CARGO                                                  :{BLACK}Náklad
 STR_013D_INFORMATION                                            :{BLACK}Informace
 STR_013E_CAPACITIES                                             :{BLACK}Kapacity
-STR_013E_TOTAL_CARGO                                            :{BLACK}Celkový náklad
+STR_TOTAL_CARGO                                                 :{BLACK}Celkový náklad
 STR_013F_CAPACITY                                               :{BLACK}Kapacita: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapacita: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Celková kapacita tohoto vlaku:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Celková kapacita tohoto vlaku:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nová hra
 STR_0141_LOAD_GAME                                              :{BLACK}Nahrát hru
@@ -357,12 +356,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Více hráčů
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor scénáře
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Velikost mapy:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Možnosti hry
@@ -790,11 +783,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Umístit vysílač
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Vytvořit pouštní oblast{}Stiskem CTRL ji odstraníš
 STR_CREATE_LAKE                                                 :{BLACK}Vytvořit vodní plochu.{}Pokud není držen CTRL, vytvoří se na úrovni moře průplav; v opačném případě se zaplaví ostatní dílky
+STR_CREATE_RIVER                                                :{BLACK}Vytvořit řeky.
 STR_0290_DELETE                                                 :{BLACK}Smaž
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Smazat celé toto město
 STR_0292_SAVE_SCENARIO                                          :Uložit mapu
 STR_0293_LOAD_SCENARIO                                          :Otevřit mapu
-STR_LOAD_HEIGHTMAP                                              :Použít výškovou mapu
+STR_MENU_LOAD_HEIGHTMAP                                         :Použít výškovou mapu
 STR_0294_QUIT_EDITOR                                            :Ukončit editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Ukončit
@@ -834,9 +828,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Možnosti hry
-STR_02C5_DIFFICULTY_SETTINGS                                    :Nastavení obtížnosti
-STR_02C7_CONFIG_PATCHES                                         :Nastavení patchů
+STR_02C4_GAME_OPTIONS                                           :Možnosti hry
+STR_02C6_DIFFICULTY_SETTINGS                                    :Nastavení obtížnosti
+STR_MENU_CONFIG_PATCHES                                         :Nastavení patchů
 STR_NEWGRF_SETTINGS                                             :Nastavení newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Nastavení průhlednosti
 STR_GAMEOPTMENU_0A                                              :
@@ -936,8 +930,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Ukládání ještě běží,{}počkej prosím, než doběhne!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Zvolit 'Ezy Street style music' program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglická (původní)
@@ -1712,42 +1706,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Musíš nejprve odstranit silnici
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Silnice je v rekonstrukci
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Výstavba silnic
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Výstavba tramvajové tratě
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Výstavba tramvajové tratě
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Zvolit silniční most
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... na jednosměrných silnicích nemůžou být křižovatky
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Zde nemohu postavit silnici...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Zde není možné postavit tramvajovou trať...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Zde není možné postavit tramvajovou trať...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nemohu odsud odstranit silnici
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Není možné odsud odstranit tramvajovou trať...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Není možné odsud odstranit tramvajovou trať...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientace garáže
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientace tramvajového depa
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientace tramvajového depa
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Tady nejde postavit garáž
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Zde není možné postavit depo pro tramvaje...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Zde není možné postavit depo pro tramvaje...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nemohu postavit autobusovou stanici...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nemohu postavit nákladovou rampu...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
 STR_180A_ROAD_CONSTRUCTION                                      :Výstavba silnic
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Výstavba tramvajové tratě
+STR_TRAMWAY_CONSTRUCTION                                        :Výstavba tramvajové tratě
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Postavit silnici
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Postavit úsek silnice pomocí módu Autoroad
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Položit kus kolejí pro tramvaje
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Položit kus kolejí pro tramvaje
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Postavit úsek tramvajové tratě pomocí módu Autoroad
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Postavit garáž (pro nákup a servis vozidel)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Vystavět tramvajové depo (na kupování a servis tramvají)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Vystavět tramvajové depo (na kupování a servis tramvají)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Postavit autobusovou stanici
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Postavit nákladovou rampu
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Postavit tramvajovou stanici pro cestující
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Postavit nákladní tramvajovou stanici
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Postavit tramvajovou stanici pro cestující
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Postavit nákladní tramvajovou stanici
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Postavit silniční most
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Postavit tramvajový most
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Postavit tramvajový most
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Postavit silniční tunel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Postavit tramvajový tunel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Postavit tramvajový tunel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Povolit / zakázat jednosměrné silnice
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Přepnout stavba / odstranění silnice
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Výběr orientace garáže
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Zvol směr tramvajového depa
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Zvol směr tramvajového depa
 STR_1814_ROAD                                                   :Silnice
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Silnice s pouličním osvětlením
 STR_1816_TREE_LINED_ROAD                                        :Silnice s alejí
@@ -1890,8 +1884,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Spojuje více jak jedno existující nádraží nebo nákladovou rampu...
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Příliš mnoho nádraží nebo nákladových ramp v tomto městě
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Příliš mnoho nádraží nebo nákladových ramp
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Příliš mnoho autobusových zastávek
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Příliš mnoho zastávek nákladních automobilů
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Příliš mnoho autobusových zastávek
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Příliš mnoho zastávek nákladních automobilů
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Příliš blízko k jinému nádraží nebo nákladové rampě
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Musíš nejprve zničit stanici
@@ -1922,12 +1916,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} nyní přijímá {STRING} a {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientace autobusové zastávky.
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientace nákladové rampy
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientace tramvajové stanice pro cestující
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientace nákladní tramvajové stanice
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientace tramvajové stanice pro cestující
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientace nákladní tramvajové stanice
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Musíš nejprve zničit autobusovou zastávku
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Musíš nejprve zničit nákladovou rampu
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Je nutné nejdříve zbourat tramvajovou stanici pro cestující
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Je nutné nejdříve zbourat nákladní tramvajovou stanici
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Je nutné nejdříve zbourat tramvajovou stanici pro cestující
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Je nutné nejdříve zbourat nákladní tramvajovou stanici
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stanic{P e e ""}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nic -
@@ -1939,8 +1933,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Zvolit délku nádraží
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Zvolit orientaci autobusové zastávky
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Zvolit orientaci nákladové rampy
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Vyber směr tramvajové stanice pro cestující
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Vyber směr nákladní tramvajové stanice
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Vyber směr tramvajové stanice pro cestující
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Vyber směr nákladní tramvajové stanice
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Vycentrovat pohled na stanici
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Ukázat hodnocení společností
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Změnit jméno stanice
@@ -1962,7 +1956,7 @@
 STR_3069_BUOY                                                   :Bójka
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}... bójka v cestě
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}... stanice je příliš rozložitá
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}... nejednolité stanice nejsou povoleny
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}... nejednolité stanice nejsou povoleny
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Podržením CTRL můžeš označit více položek
 
 STR_UNDEFINED                                                   :(nedefinovaný řetězec)
@@ -2003,7 +1997,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Zvolit nový typ hry
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Zvolit scénář (zelená), přednastavenou hru (modrá), nebo novou náhodnou hru
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Vytvořit novou náhodnou hru
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Nahrát výškovou mapu
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Nahrát výškovou mapu
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} v cestě
@@ -2207,10 +2201,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomika: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Otáčení vlaků: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofy: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Postoj místní rady k (terénním) úpravám kolem města: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Postoj místní rady k (terénním) úpravám kolem města: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :žádný
+STR_NONE                                                        :žádný
 STR_NUM_VERY_LOW                                                :velmi nízké
 STR_6816_LOW                                                    :nízké
 STR_6817_NORMAL                                                 :střední
@@ -2248,9 +2242,9 @@
 STR_6836_OFF                                                    :vypnuty
 STR_6837_ON                                                     :zapnuty
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Zobraz tabulku nejlepších výsledků
-STR_6839_PERMISSIVE                                             :nezaujatý
-STR_683A_TOLERANT                                               :tolerantní
-STR_683B_HOSTILE                                                :zaujatý
+STR_PERMISSIVE                                                  :nezaujatý
+STR_TOLERANT                                                    :tolerantní
+STR_HOSTILE                                                     :zaujatý
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2387,7 +2381,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Nemohu prodat podíl v této společnosti...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% vlastněno {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} byla převzata {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Tato společnost zatím neobchoduje s akciemi...
+STR_PROTECTED                                                   :{WHITE}Tato společnost zatím neobchoduje s akciemi...
 
 STR_LIVERY_DEFAULT                                              :Výchozí barva
 STR_LIVERY_STEAM                                                :Parní lokomotiva
@@ -2400,6 +2394,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Osobní vagon (parní)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Osobní vagon (dieselový)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Osobní vagon (elektrický)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Osobní vagon (monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Osobní vagon (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Nákladní vagon
 STR_LIVERY_BUS                                                  :Autobus
 STR_LIVERY_TRUCK                                                :Nákladní vůz
@@ -2700,17 +2696,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Jet do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Jet do {STATION} (přeložit a naložit jiný náklad)
-STR_8808_GO_TO_UNLOAD                                           :Jet do {STATION} (vyložit)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Jet do {STATION} (přeložit a nenakládat)
-STR_880A_GO_TO_LOAD                                             :Jet do {STATION} (naložit)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Jet do {STATION} (přeložit a plně naložit jiný náklad)
-STR_880C_GO_NON_STOP_TO                                         :Jet bez zastavení do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Jet bez zastavení do {STATION} (přeložit a naložit jiný náklad)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Jet bez zastavení do {STATION} (vyložit)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Jet bez zastavení do {STATION} (přeložit a nenakládat)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Jet bez zastavení do {STATION} (naložit)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Jet bez zastavení do {STATION} (přeložit a plně naložit jiný náklad)
+STR_GO_TO_TRANSFER                                              :Jet do {STATION} (přeložit a naložit jiný náklad)
+STR_8807_GO_TO_UNLOAD                                           :Jet do {STATION} (vyložit)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Jet do {STATION} (přeložit a nenakládat)
+STR_8808_GO_TO_LOAD                                             :Jet do {STATION} (naložit)
+STR_GO_TO_TRANSFER_LOAD                                         :Jet do {STATION} (přeložit a plně naložit jiný náklad)
+STR_880A_GO_NON_STOP_TO                                         :Jet bez zastavení do {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Jet bez zastavení do {STATION} (přeložit a naložit jiný náklad)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Jet bez zastavení do {STATION} (vyložit)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Jet bez zastavení do {STATION} (přeložit a nenakládat)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Jet bez zastavení do {STATION} (naložit)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Jet bez zastavení do {STATION} (přeložit a plně naložit jiný náklad)
 STR_GO_TO_TRAIN_DEPOT                                           :Jet do železničního depa v {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Údržba v železničním depu {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Jet bez zastavení do železničního depa {TOWN}
@@ -2814,7 +2810,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Ukázat detaily přepravovaného zboží
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Ukázat detaily jednotlivých vagonů
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Ukázat kapacity jednotlivých vagonů
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Ukázat celkovou kapacitu vlaku, rozdělenou dle nákladu
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Ukázat celkovou kapacitu vlaku, rozdělenou dle nákladu
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Seznam příkazů - stiskni příkaz pro označení. Kliknutím na příkaz se stisknutým CTRL se nastaví pohled na stanici
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Přeskočit příkaz a jít na další. Pomocí CTRL + kliknutí se přeskočí na vybraný příkaz
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Smazat označený příkaz
@@ -2845,8 +2841,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nelze obrátit vlak...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Přejmenovat typ železničního vozidla
 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_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}U označeného příkazu vozidlo musí vyložit náklad
+STR_TRANSFER                                                    :{BLACK}Překládka
 STR_CLEAR_TIME                                                  :{BLACK}Smazat čas
 STR_RESET_LATENESS                                              :{BLACK}Smazat ukazatel zpoždění
 
@@ -2924,8 +2920,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Přejmenovat silniční vozidlo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První autobus přijel do {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První nákladní vozidlo přijelo do {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První tramvaj pro cestující přijela do {STATION}
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První nákladní tramvaj přijíždí do {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První tramvaj pro cestující přijela do {STATION}
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První nákladní tramvaj přijíždí do {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Dopravní nehoda!{}Řidič zahynul v plamenech při srážce s vlakem
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Dopravní nehoda!{}{COMMA} {P člověk lidé lidí} zahynul{P "" i o} v plamenech při srážce s vlakem
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nelze otočit vozidlo...
@@ -2934,7 +2930,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Přejmenovat typ silničního vozidla
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Přejmenovat typ silničního vozidla
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nelze přejmenovat typ silničního vozidla...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Jet do garáže {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Jet do garáže {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Údržba v garáži {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Přestavět silniční vozidlo, aby mohlo vozit jiný druh nákladu
@@ -3308,6 +3304,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Všechny kromě {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. tažná síla: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Vytvořit
@@ -3335,7 +3337,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Tak velká zmena velikosti zdrojové mapy není doporučena. Pokračovat s generováním?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Varování kvůli vzoru silnic
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Vzor "žádné silnice" není doporučen (nepostaví se ani domy). Pokračovat ve vytváření mapy?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Jméno výškové mapy:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Velikost: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Vytvářím krajinu...
@@ -3361,7 +3362,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Zvednout výšku ploché země o jednu úroveň
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Změnit výšku ploché země
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Výška ploché země:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Vycentrovat malou mapu na tomto místě
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/danish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/danish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Landskabet skal være fladt
 STR_0008_WAITING                                                :{BLACK}Venter: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (på vej fra
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} undervejs fra {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepterer: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepterer: {GOLD}
 STR_000E                                                        :
@@ -274,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}For mange navne defineret
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Valgte navn bruges allerede
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Last
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Lasteevner
-STR_013E_TOTAL_CARGO                                            :{BLACK}Samlet last
+STR_TOTAL_CARGO                                                 :{BLACK}Samlet last
 STR_013F_CAPACITY                                               :{BLACK}Lasteevne: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapacitet: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Samlet last (lasteevne) på dette tog:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Samlet last (lasteevne) på dette tog:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nyt spil
 STR_0141_LOAD_GAME                                              :{BLACK}Hent spil
@@ -299,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Netværksspil
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenarieeditor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kortstørrelse:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spilvalg
@@ -732,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Placér sender
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Definer ørkenområde.{}Hold CTRL nede for at fjerne det
 STR_CREATE_LAKE                                                 :{BLACK}Definer vandområde.{}Lav en kanal, med mindre CTRL-tasten holdes ved havniveau, hvorved omgivelserne oversvømmes i stedet
+STR_CREATE_RIVER                                                :{BLACK}Placér floder.
 STR_0290_DELETE                                                 :{BLACK}Slet
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Slet denne by fuldstændigt
 STR_0292_SAVE_SCENARIO                                          :Gem scenarie
 STR_0293_LOAD_SCENARIO                                          :Hent scenarie
-STR_LOAD_HEIGHTMAP                                              :Hent højdekort
+STR_MENU_LOAD_HEIGHTMAP                                         :Hent højdekort
 STR_0294_QUIT_EDITOR                                            :Afslut editoren
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Afslut
@@ -776,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spilvalg
-STR_02C5_DIFFICULTY_SETTINGS                                    :Sværhedsgrad
-STR_02C7_CONFIG_PATCHES                                         :Indstil programrettelser
+STR_02C4_GAME_OPTIONS                                           :Spilvalg
+STR_02C6_DIFFICULTY_SETTINGS                                    :Sværhedsgrad
+STR_MENU_CONFIG_PATCHES                                         :Indstil programrettelser
 STR_NEWGRF_SETTINGS                                             :NewGRF indstillinger
 STR_TRANSPARENCY_OPTIONS                                        :Gennemsigtighedsvalg
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Gemmer stadig,{}vent venligst!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Vælg 'Ezy Street musik' program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engelske
@@ -941,6 +935,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Fuld skærm
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Afkryds for at spille OpenTTD i fuld skærm
+STR_FULLSCREEN_FAILED                                           :{WHITE}Fuldskærmstilstand fejlede
 
 STR_OPTIONS_RES                                                 :{BLACK}Skærmopløsning
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1653,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Det er nødvendigt at fjerne vejen først
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Vejarbejde i gang
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Vejkonstruktion
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Sporvejskonstruktion
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Sporvejskonstruktion
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Vælg vejbro
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... ensrettede veje kan ikke have kryds
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan ikke bygge vej her...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan ikke bygge sporvej her...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan ikke bygge sporvej her...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan ikke fjerne vej herfra...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan ikke fjerne sporvej her...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan ikke fjerne sporvej her...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Retning af værksted
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Retning af sporvognsremise
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Retning af sporvognsremise
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan ikke bygge værksted her...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan ikke bygge sporvognsremise her...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan ikke bygge sporvognsremise her...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan ikke bygge rutebilstation...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan ikke bygge fragtcentral...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan ikke bygge passager-sporvognsstation...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan ikke bygge fragt-sporvognsstation...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan ikke bygge passager-sporvognsstation...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan ikke bygge fragt-sporvognsstation...
 STR_180A_ROAD_CONSTRUCTION                                      :Vejkonstruktion
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Sporvejskonstruktion
+STR_TRAMWAY_CONSTRUCTION                                        :Sporvejskonstruktion
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Byg en sektion vej
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Byg vejsektion ved hjælp af 'Auto-vej'
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Byg sporvejssektion
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Byg sporvejssektion
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Byg sporvejssektion ved hjælp af 'Auto-sporvej'
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Byg værksted (til bygning og servicering af vejkøretøjer)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Byg sporvognsremise (til konstruktion og service af vogne)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Byg sporvognsremise (til konstruktion og service af vogne)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Byg rutebilstation
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Byg fragtcentral
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Byg passager-sporvognsstation
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Byg fragt-sporvognsstation
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Byg passager-sporvognsstation
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Byg fragt-sporvognsstation
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Byg bro
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Byg sporvejsbro
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Byg sporvejsbro
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Byg tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Byg sporvejstunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Byg sporvejstunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktiver/Deaktiver ensrettede veje
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Skift mellem bygning/fjernelse af veje
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Skift mellem bygning/fjernelse af sporveje
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Skift mellem bygning/fjernelse af sporveje
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vælg retning for værksted
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Vælg retning af sporvognsremise
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Vælg retning af sporvognsremise
 STR_1814_ROAD                                                   :Vej
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Vej med gadelygter
 STR_1816_TREE_LINED_ROAD                                        :Vej med vejtræer
@@ -1831,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Grænser op til mere end en eksisterende station/fragtcentral
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stationer/fragtcentraler i denne by
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stationer/fragtcentraler
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}For mange busterminaler
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}For mange fragtcentraler
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}For mange busterminaler
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}For mange fragtcentraler
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}For tæt på en anden station/fragtcentral
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Det er nødvendigt at rive stationen ned først
@@ -1863,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} accepterer nu {STRING} og {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Retning af rutebilstation
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Retning af fragtcentral
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Retning af sporvognsstation
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Retning af sporvognsstation
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Retning af sporvognsstation
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Retning af sporvognsstation
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Det er nødvendigt at nedrive rutebilstationen først
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Det er nødvendigt at rive fragtcentralen ned først
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Passager-sporvognsstation skal fjernes først
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Fragt-sporvognsstation skal fjernes først
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Passager-sporvognsstation skal fjernes først
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Fragt-sporvognsstation skal fjernes først
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stationer
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ingen -
@@ -1880,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Vælg længde af banegård
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Vælg retning af rutebilstation
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Vælg retning af fragtcentral
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Vælg retning af sporvognsstation
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Vælg retning af sporvognsstation
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Vælg retning af sporvognsstation
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Vælg retning af sporvognsstation
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrer skærmen over stationens lokalitet
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Vis stationens bedømmelse
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Ændre stationens navn
@@ -1903,7 +1898,7 @@
 STR_3069_BUOY                                                   :Bøje
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...der er en bøje i vejen
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stationen er for spredt
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ikke uniforme stationer er slået fra
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ikke uniforme stationer er slået fra
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hold CTRL nede for at vælge mere end en ting
 
 STR_UNDEFINED                                                   :(udefineret tekststring)
@@ -1944,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Vælg Spiltype til Nyt Spil
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Vælg scenarie (grøn), predefineret spil (blå), eller nyt tilfældigt spil
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generer nyt tilfældigt spil
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Hent højdekort
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Hent højdekort
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} i vejen
@@ -2148,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Økonomi: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Tog vender: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofer: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Byrådets holdning til ændring i landskabet: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Byrådets holdning til ændring i landskabet: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ingen
+STR_NONE                                                        :Ingen
 STR_NUM_VERY_LOW                                                :Meget lav
 STR_6816_LOW                                                    :Lav
 STR_6817_NORMAL                                                 :Normal
@@ -2189,9 +2184,9 @@
 STR_6836_OFF                                                    :Fra
 STR_6837_ON                                                     :Til
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Vis higscoreliste
-STR_6839_PERMISSIVE                                             :Passiv
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Fjendtlig
+STR_PERMISSIVE                                                  :Passiv
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Fjendtlig
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2328,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan ikke sælge 25% aktier i dette selskab...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% ejes af {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} er blevet overtaget af {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Dette selskab sælger ikke aktier endnu...
+STR_PROTECTED                                                   :{WHITE}Dette selskab sælger ikke aktier endnu...
 
 STR_LIVERY_DEFAULT                                              :Standardfarver
 STR_LIVERY_STEAM                                                :Damplokomotiv
@@ -2341,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passagervogn (damp)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passagervogn (diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passagervogn (elektrisk)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Passagervogn (monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Passagervogn (magnetskinne)
 STR_LIVERY_FREIGHT_WAGON                                        :Godsvogn
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Lastbil
@@ -2635,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Gå til {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Gå til {STATION} (Overfør og tag gods)
-STR_8808_GO_TO_UNLOAD                                           :Gå til {STATION} (Aflæs)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Gå til {STATION} (Overfør og efterlad tom)
-STR_880A_GO_TO_LOAD                                             :Gå til {STATION} (Fuld last)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Gå til {STATION} (Overfør og vent på fuld last)
-STR_880C_GO_NON_STOP_TO                                         :Gå uden stop til {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Gå uden stop til {STATION} (Overfør og tag gods)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Gå uden stop til {STATION} (Aflæs)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Gå uden stop til {STATION} (Overfør og efterlad tom)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Gå uden stop til {STATION} (Fuld last)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Gå uden stop til {STATION} (Overfør og vent på fuld last)
+STR_GO_TO_TRANSFER                                              :Gå til {STATION} (Overfør og tag gods)
+STR_8807_GO_TO_UNLOAD                                           :Gå til {STATION} (Aflæs)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Gå til {STATION} (Overfør og efterlad tom)
+STR_8808_GO_TO_LOAD                                             :Gå til {STATION} (Fuld last)
+STR_GO_TO_TRANSFER_LOAD                                         :Gå til {STATION} (Overfør og vent på fuld last)
+STR_880A_GO_NON_STOP_TO                                         :Gå uden stop til {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Gå uden stop til {STATION} (Overfør og tag gods)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Gå uden stop til {STATION} (Aflæs)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Gå uden stop til {STATION} (Overfør og efterlad tom)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Gå uden stop til {STATION} (Fuld last)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Gå uden stop til {STATION} (Overfør og vent på fuld last)
 STR_GO_TO_TRAIN_DEPOT                                           :Gå til {TOWN} remise
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Service i {TOWN} remise
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Gå uden stop til {TOWN} remise
@@ -2749,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Vis detaljer omkring den last der medbringes
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Vis detaljer omkring toget/vognene
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Vis kapaciteten af hver togvogn
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Vis total lasteevne på toget, fordelt på lasttyper
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Vis total lasteevne på toget, fordelt på lasttyper
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordreliste - klik på en ordre for at markere den. CTRL-klik for at centrere skærmen over stationen
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Spring over nuværende ordre og start næste. CTRL + klik springer til den valgte ordre
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Slet den markerede ordre
@@ -2780,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan ikke vende retningen af toget...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Omdøb tog-/togvognstypen
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Kan ikke omdøbe tog-/togvognstypen...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Få den valgte ordre til at tvinge køretøjet til at smide lasten
-STR_886F_TRANSFER                                               :{BLACK}Overfør
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Få den valgte ordre til at tvinge køretøjet til at smide lasten
+STR_TRANSFER                                                    :{BLACK}Overfør
 STR_CLEAR_TIME                                                  :{BLACK}Nulstil tid
 STR_RESET_LATENESS                                              :{BLACK}Nulstil forsinkelse
 
@@ -2796,6 +2793,7 @@
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Ny {STRING} er nu tilgængelig!  -  {ENGINE}
 
 STR_CAN_T_SELL_DESTROYED_VEHICLE                                :{WHITE}Kan ikke sælge ødelagt køretøj...
+STR_CAN_T_REFIT_DESTROYED_VEHICLE                               :{WHITE}Kan ikke ændre ødelagt køretøj...
 
 STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Kan ikke lave køreplan for transportmiddel...
 STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Transportmidler kan kun vente ved stationer.
@@ -2858,8 +2856,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Giv køretøjet et navn
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første bus ankommer til {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første lastbil ankommer til {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første passager-sporvogn ankommer til {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første fragt-sporvogn ankommer til {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første passager-sporvogn ankommer til {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første fragt-sporvogn ankommer til {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Lastbil forulykket!{}Chauffør dør i flammerne efter sammenstød med tog
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Bus forulykket!{}{COMMA} dør i flammerne efter kollision med et tog
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan ikke få køretøjet til at vende...
@@ -2868,7 +2866,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Omdøb køretøjstypen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Omdøb køretøjstypen
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kan ikke omdøbe køretøjstypen...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Gå til {TOWN} værksted
+STR_GO_TO_ROADVEH_DEPOT                                         :Gå til {TOWN} værksted
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Service i {TOWN} værksted
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Ombyg vejkøretøj til at laste en anden type last
@@ -3242,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Alle undtagen {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Maks. trækkraft: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generer
@@ -3269,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}At ændre størrelsen på kildebilledet anbefales ikke. Fortsæt genereringen?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Vejlayout-advarsel
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Vejlayoutet "ikke flere veje" anbefales ikke. Fortsæt med at generere?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Højdekortets navn:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Størrelse: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Genererer verden...
@@ -3295,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Flyt højden af fladt land en op
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Ændre højden af fladt land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Højde af fladt land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrer det lille kort ved den nuværende position
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/dutch.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/dutch.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Vlak land nodig
 STR_0008_WAITING                                                :{BLACK}Wachtend: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (onderweg uit
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} opweg van {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepteert: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepteert: {GOLD}
 STR_000E                                                        :
@@ -274,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Te veel namen in gebruik
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Deze naam is al in gebruik
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Lading
 STR_013D_INFORMATION                                            :{BLACK}Informatie
 STR_013E_CAPACITIES                                             :{BLACK}Capaciteiten
-STR_013E_TOTAL_CARGO                                            :{BLACK}Totale lading
+STR_TOTAL_CARGO                                                 :{BLACK}Totale lading
 STR_013F_CAPACITY                                               :{BLACK}Capaciteit: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capaciteit: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Totale lading (capaciteit) van deze trein:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Totale lading (capaciteit) van deze trein:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nieuw spel
 STR_0141_LOAD_GAME                                              :{BLACK}Laad spel
@@ -299,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multiplayer
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenario Bewerken
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Mapgrootte:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spelopties
@@ -732,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Plaats radiomast
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Definieer woestijn gebied.{}Gebruik CTRL om het te verwijderen
 STR_CREATE_LAKE                                                 :{BLACK}Definiëer water gebied.{}Maak een kanaal, tenzij CTRL wordt vastgehouden op zee niveau, dan zal de omgeving overstromen
+STR_CREATE_RIVER                                                :{BLACK}Maak rivier.
 STR_0290_DELETE                                                 :{BLACK}Verwijder
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Verwijder deze hele stad
 STR_0292_SAVE_SCENARIO                                          :Scenario opslaan
 STR_0293_LOAD_SCENARIO                                          :Scenario openen
-STR_LOAD_HEIGHTMAP                                              :Laad hoogtekaart
+STR_MENU_LOAD_HEIGHTMAP                                         :Laad hoogtekaart
 STR_0294_QUIT_EDITOR                                            :Sluit editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Afsluiten
@@ -776,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spelopties
-STR_02C5_DIFFICULTY_SETTINGS                                    :Moeilijkheidsgraad
-STR_02C7_CONFIG_PATCHES                                         :Kies patches
+STR_02C4_GAME_OPTIONS                                           :Spelopties
+STR_02C6_DIFFICULTY_SETTINGS                                    :Moeilijkheidsgraad
+STR_MENU_CONFIG_PATCHES                                         :Kies patches
 STR_NEWGRF_SETTINGS                                             :Newgrf instellingen
 STR_TRANSPARENCY_OPTIONS                                        :Doorzichtigheidsopties
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Opslaan van spel is nog bezig,{}Wacht tot dit voltooid is!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Kies 'Ezy Street style music' programma
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engels (Origineel)
@@ -1654,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Moet weg eerst weghalen
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Er wordt aan de weg gewerkt
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Wegenbouw
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Bouw tramrails
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Bouw tramrails
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Kies brug
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... eenrichtingswegen kunnen geen kruisingen hebben
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan hier geen weg bouwen...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan geen tramrails bouwen hier...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan geen tramrails bouwen hier...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan hier geen weg weghalen...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan de tramrails hier niet verwijderen...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan de tramrails hier niet verwijderen...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Bouw wegvoertuigdepot
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Tram depot richting
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Tram depot richting
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan hier geen vrachtwagendepot bouwen...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan geen tram voertuig depot bouwen hier...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan geen tram voertuig depot bouwen hier...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan hier geen bushalte bouwen...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan hier geen laadstation bouwen...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan geen passagiers tram station bouwen...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan geen vracht tram station bouwen...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan geen passagiers tram station bouwen...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan geen vracht tram station bouwen...
 STR_180A_ROAD_CONSTRUCTION                                      :Wegenbouw
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramrails constructie
+STR_TRAMWAY_CONSTRUCTION                                        :Tramrails constructie
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bouw weg
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Bouw weg met de Autoweg-methode
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bouw tramrails onderdeel
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Bouw tramrails onderdeel
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Bouw tramrails met de Autotram-methode
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Bouw wegvoertuigdepot (om voertuigen te bouwen en te repareren)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Bouw tram voertuig depot (voor de bouw en onderhoud)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Bouw tram voertuig depot (voor de bouw en onderhoud)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Bouw bushalte
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Bouw vrachtwagen laadhal
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Bouw passagiers tram station
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Bouw vracht tram station
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Bouw passagiers tram station
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Bouw vracht tram station
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bouw brug voor wegvoertuigen
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Bouw tramrails brug
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Bouw tramrails brug
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Bouw wegtunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Bouw tramrails tunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Bouw tramrails tunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activeer/Deactiveer eenrichtingsverkeer
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Schakel tussen bouwen en verwijderen voor wegbouw
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Schakelaar tussen bouwen/verwijderen van tramrails
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Schakelaar tussen bouwen/verwijderen van tramrails
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Selecteer richting van wegvoertuigdepot
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Selecteer tram voertuig depot richting
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Selecteer tram voertuig depot richting
 STR_1814_ROAD                                                   :Weg
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Weg met straatlantaarns
 STR_1816_TREE_LINED_ROAD                                        :Weg met bomenrij
@@ -1832,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Voegt meer dan één bestaand (laad)station samen
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Teveel (laad)stations in de buurt van deze stad
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Teveel (laad)stations
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Te veel bushaltes
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Te veel vrachtwagenstations
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Te veel bushaltes
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Te veel vrachtwagenstations
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Te dicht bij een andere (laad)station
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Verwijder eerst treinstation
@@ -1864,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} accepteert voortaan {STRING} en {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Bouw bushalte
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Bouw Vrachtwagenstation
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Passagiers tram richting
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Vracht tram richting
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Passagiers tram richting
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Vracht tram richting
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Verwijder eerst bushalte
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Verwijder eerst vrachtwagenstation
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Verwijder eerst passagiers tram station
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Verwijder eerst vracht tram station
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Verwijder eerst passagiers tram station
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Verwijder eerst vracht tram station
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stations
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Geen -
@@ -1881,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Selecteer lengte van station
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Selecteer richting van bushalte
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Selecteer richting van vrachtwagenstation
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Selecteer passagiers tram station richting
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Selecteer vracht tram station richting
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Selecteer passagiers tram station richting
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Selecteer vracht tram station richting
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centreer hoofdbeeld op locatie van station
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Bekijk stationsreputaties
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Hernoem station
@@ -1904,7 +1898,7 @@
 STR_3069_BUOY                                                   :Boei
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boei in de weg
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...station te verspreid
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...niet uniforme stations uit
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...niet uniforme stations uit
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Houd CTRL ingedrukt om meer items te kiezen
 
 STR_UNDEFINED                                                   :(ongedefinieerde string)
@@ -1945,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Selecteer nieuw speltype
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Selecteer scenario (groen), vooraf ingesteld spel (blauw), or willekeurig nieuw spel
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Genereer willekeurig nieuw spel
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laad Hoogtekaart
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Laad Hoogtekaart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} in de weg
@@ -2149,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economie: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Treinen draaien om: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Rampen: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Houding van gemeente mbt landschapsaanpassingen: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Houding van gemeente mbt landschapsaanpassingen: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Geen
+STR_NONE                                                        :Geen
 STR_NUM_VERY_LOW                                                :Erg laag
 STR_6816_LOW                                                    :Laag
 STR_6817_NORMAL                                                 :Normaal
@@ -2190,9 +2184,9 @@
 STR_6836_OFF                                                    :Uit
 STR_6837_ON                                                     :Aan
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Bekijk topscore lijst
-STR_6839_PERMISSIVE                                             :Tolerant
-STR_683A_TOLERANT                                               :Neutraal
-STR_683B_HOSTILE                                                :Negatief
+STR_PERMISSIVE                                                  :Tolerant
+STR_TOLERANT                                                    :Neutraal
+STR_HOSTILE                                                     :Negatief
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan geen 25% aandeel in dit bedrijf verkopen...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% eigendom van {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} is overgenomen door {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Dit bedrijf verhandelt nog geen aandelen...
+STR_PROTECTED                                                   :{WHITE}Dit bedrijf verhandelt nog geen aandelen...
 
 STR_LIVERY_DEFAULT                                              :Standaard Logo
 STR_LIVERY_STEAM                                                :Stoom Locomotief
@@ -2342,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passagierswagon (Stoom)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passagierswagon (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passagierswagon (Elektrisch)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Passagierswagon (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Passagierswagon (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Vracht Wagon
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Vrachtwagen
@@ -2636,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ga naar {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ga naar {STATION} (Overladen en neem goederen)
-STR_8808_GO_TO_UNLOAD                                           :Ga naar {STATION} (Uit laden)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ga naar {STATION} (Overladen en leeg laten)
-STR_880A_GO_TO_LOAD                                             :Ga naar {STATION} (Laden)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ga naar {STATION} (Overladen en wacht tot vol geladen)
-STR_880C_GO_NON_STOP_TO                                         :Ga non-stop naar {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ga non-stop naar {STATION} (Overladen en neem goederen)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ga non-stop naar {STATION} (Uitladen)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ga non-stop naar {STATION} (Overladen en leeg laten)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ga non-stop naar {STATION} (Laden)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ga non-stop naar {STATION} (Overladen en wacht tot vol geladen)
+STR_GO_TO_TRANSFER                                              :Ga naar {STATION} (Overladen en neem goederen)
+STR_8807_GO_TO_UNLOAD                                           :Ga naar {STATION} (Uit laden)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ga naar {STATION} (Overladen en leeg laten)
+STR_8808_GO_TO_LOAD                                             :Ga naar {STATION} (Laden)
+STR_GO_TO_TRANSFER_LOAD                                         :Ga naar {STATION} (Overladen en wacht tot vol geladen)
+STR_880A_GO_NON_STOP_TO                                         :Ga non-stop naar {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ga non-stop naar {STATION} (Overladen en neem goederen)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ga non-stop naar {STATION} (Uitladen)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ga non-stop naar {STATION} (Overladen en leeg laten)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ga non-stop naar {STATION} (Laden)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ga non-stop naar {STATION} (Overladen en wacht tot vol geladen)
 STR_GO_TO_TRAIN_DEPOT                                           :Ga naar {TOWN} Trein Depot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Reparatie in {TOWN} treindepot
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ga zonder tussenstop naar {TOWN} Treindepot
@@ -2750,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Laat details zien van vervoerde goederen
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Laat details zien van treinvoertuigen
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Laat de mogelijkheden van elk voertuig zien
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Laat totale capaciteit van trein zien, gescheiden door goederentype
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Laat totale capaciteit van trein zien, gescheiden door goederentype
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orderlijst - klik op een order om deze te selecteren. CTRL + klikken gaat naar het station
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sla huidige order over, en begin met de volgende. CTRL + klik, begin direct met geselecteerde order
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Verwijder de geselecteerde order
@@ -2781,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan de richting van de trein niet omdraaien...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Hernoem trein voertuig type
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Kan het trein voertuig type niet hernoemen...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Forceer het voertuig goederen te dumpen bij geselecteerde order
-STR_886F_TRANSFER                                               :{BLACK}Overladen
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Forceer het voertuig goederen te dumpen bij geselecteerde order
+STR_TRANSFER                                                    :{BLACK}Overladen
 STR_CLEAR_TIME                                                  :{BLACK}Reset de tijd
 STR_RESET_LATENESS                                              :{BLACK}Reset teller
 
@@ -2860,8 +2856,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Benoem wegvoertuig
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste bus arriveert in {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste vrachtwagen arriveert in {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste passagiers tram arriveert in {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste vracht tram arriveert in {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste passagiers tram arriveert in {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste vracht tram arriveert in {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}Bestuurder verongelukt door treinbotsing
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}{COMMA} verongelukt door treinbotsing
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan voertuig niet omdraaien...
@@ -2870,7 +2866,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Hernoem wegvoertuigtype
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Hernoem wegvoertuigtype
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kan wegvoertuigtype niet hernoemen...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ga naar {TOWN} Wegvoertuig Depot
+STR_GO_TO_ROADVEH_DEPOT                                         :Ga naar {TOWN} Wegvoertuig Depot
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Repareren in {TOWN} wagendepot
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Verbouw het wegvoertuig om een andere lading the vervoeren
@@ -3244,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Alles behalve {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Trekkracht: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Maak aan
@@ -3271,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Het aanpassen van de grootte van een bronkaar is niet aan te bevelen. Toch doorgaan?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Stadsindelingswaarschuwing
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}De stadsindeling "geen wegen" is niet aanbevolen. Doorgaan met aanmaken?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Hoogtekaart naam:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Grootte: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Wereld creëren
@@ -3297,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Maak de hoogte van plat land een hoger
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Verander hoogte van vlak land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Hoogte van platte grond:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centreer de kleine kaart op huidige positie
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/english.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/english.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flat land required
 STR_0008_WAITING                                                :{BLACK}Waiting: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en-route from
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} en-route from {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepts: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepts: {GOLD}
 STR_000E                                                        :
@@ -168,7 +167,7 @@
 STR_00C7_QUIT                                                   :{WHITE}Quit
 STR_00C8_YES                                                    :{BLACK}Yes
 STR_00C9_NO                                                     :{BLACK}No
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Are you sure you want to abandon this game and return to {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Are you sure you want to exit OpenTTD and return to {STRING}?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -274,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Too many names defined
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Chosen name already in use
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Cargo
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Capacities
-STR_013E_TOTAL_CARGO                                            :{BLACK}Total Cargo
+STR_TOTAL_CARGO                                                 :{BLACK}Total Cargo
 STR_013F_CAPACITY                                               :{BLACK}Capacity: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacity: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Total cargo capacity of this train:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Total cargo capacity of this train:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}New Game
 STR_0141_LOAD_GAME                                              :{BLACK}Load Game
@@ -299,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multiplayer
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenario Editor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Map size:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Game Options
@@ -732,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Place transmitter
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Define desert area.{}Press and hold CTRL to remove it
 STR_CREATE_LAKE                                                 :{BLACK}Define water area.{}Make a canal, unless CTRL is held down at sea level, when it will flood the surroundings instead
+STR_CREATE_RIVER                                                :{BLACK}Place rivers.
 STR_0290_DELETE                                                 :{BLACK}Delete
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Delete this town completely
 STR_0292_SAVE_SCENARIO                                          :Save scenario
 STR_0293_LOAD_SCENARIO                                          :Load scenario
-STR_LOAD_HEIGHTMAP                                              :Load heightmap
+STR_MENU_LOAD_HEIGHTMAP                                         :Load heightmap
 STR_0294_QUIT_EDITOR                                            :Quit editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Quit
@@ -776,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Game options
-STR_02C5_DIFFICULTY_SETTINGS                                    :Difficulty settings
-STR_02C7_CONFIG_PATCHES                                         :Configure patches
+STR_02C4_GAME_OPTIONS                                           :Game options
+STR_02C6_DIFFICULTY_SETTINGS                                    :Difficulty settings
+STR_MENU_CONFIG_PATCHES                                         :Configure patches
 STR_NEWGRF_SETTINGS                                             :NewGRF settings
 STR_TRANSPARENCY_OPTIONS                                        :Transparency options
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Saving still in progress,{}please wait until it is finished!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Select 'Ezy Street style music' programme
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :English (Original)
@@ -1074,7 +1068,7 @@
 STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Duration of error message: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING1}
-STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING1}
+STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Invisible trees: {ORANGE}{STRING1}
 
 STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Land generator: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Original
@@ -1611,7 +1605,7 @@
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Railway Construction
 STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Electrified Railway Construction
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Monorail Construction
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}MagLev Construction
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Maglev Construction
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Select Rail Bridge
 STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Can't build train depot here...
 STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Can't build railway station here...
@@ -1623,7 +1617,7 @@
 STR_1015_RAILROAD_CONSTRUCTION                                  :Railway construction
 STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Electrified Railway construction
 STR_1016_MONORAIL_CONSTRUCTION                                  :Monorail construction
-STR_1017_MAGLEV_CONSTRUCTION                                    :MagLev construction
+STR_1017_MAGLEV_CONSTRUCTION                                    :Maglev construction
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Build railway track
 STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Build train depot (for building and servicing trains)
 STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Build railway station
@@ -1654,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Must remove road first
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Road works in progress
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Road Construction
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Tramway Construction
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Tramway Construction
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Select Road Bridge
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... one way roads can't have junctions
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Can't build road here...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Can't build tramway here...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Can't build tramway here...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Can't remove road from here...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Can't remove tramway from here...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Can't remove tramway from here...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Road Depot Orientation
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Tram Depot Orientation
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Tram Depot Orientation
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Can't build road vehicle depot here...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Can't build tram vehicle depot here...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Can't build tram vehicle depot here...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Can't build bus station...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Can't build lorry station...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Can't build passenger tram station...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Can't build freight tram station...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Can't build passenger tram station...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Can't build freight tram station...
 STR_180A_ROAD_CONSTRUCTION                                      :Road construction
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramway construction
+STR_TRAMWAY_CONSTRUCTION                                        :Tramway construction
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Build road section
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Build road section using the Autoroad mode
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Build tramway section
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Build tramway section
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Build tramway section using the Autotram mode
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Build road vehicle depot (for building and servicing vehicles)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Build tram vehicle depot (for building and servicing vehicles)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Build tram vehicle depot (for building and servicing vehicles)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Build bus station
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Build lorry loading bay
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Build passenger tram station
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Build freight tram station
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Build passenger tram station
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Build freight tram station
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Build road bridge
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Build tramway bridge
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Build tramway bridge
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Build road tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Build tramway tunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Build tramway tunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activate/Deactivate one way roads
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Toggle build/remove for road construction
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Toggle build/remove for tramway construction
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Toggle build/remove for tramway construction
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Select road vehicle depot orientation
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Select tram vehicle depot orientation
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Select tram vehicle depot orientation
 STR_1814_ROAD                                                   :Road
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Road with streetlights
 STR_1816_TREE_LINED_ROAD                                        :Tree-lined road
@@ -1832,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Adjoins more than one existing station/loading area
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Too many stations/loading areas in this town
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Too many stations/loading areas
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Too many bus stops
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Too many lorry stations
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Too many bus stops
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Too many lorry stations
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Too close to another station/loading area
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Must demolish railway station first
@@ -1864,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} now accepts {STRING} and {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Bus Station Orientation
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lorry Station Orientation
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Passenger Tram Orientation
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Freight Tram Orientation
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Passenger Tram Orientation
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Freight Tram Orientation
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Must demolish bus station first
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Must demolish lorry station first
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Must demolish passenger tram station first
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Must demolish freight tram station first
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Must demolish passenger tram station first
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Must demolish freight tram station first
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- None -
@@ -1881,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Select length of railway station
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Select bus station orientation
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Select lorry loading bay orientation
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Select passenger tram station orientation
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Select freight tram station orientation
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Select passenger tram station orientation
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Select freight tram station orientation
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centre main view on station location
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Show station ratings
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Change name of station
@@ -1904,7 +1898,7 @@
 STR_3069_BUOY                                                   :Buoy
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...buoy in the way
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...station too spread out
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...nonuniform stations disabled
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...nonuniform stations disabled
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hold down CTRL to select more than one item
 
 STR_UNDEFINED                                                   :(undefined string)
@@ -1945,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Select New Game Type
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Select scenario (green), pre-set game (blue), or random new game
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generate random new game
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Load Heightmap
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Load Heightmap
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} in the way
@@ -2149,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economy: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Train reversing: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Disasters: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}City council's attitude towards area restructuring: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}City council's attitude towards area restructuring: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :None
+STR_NONE                                                        :None
 STR_NUM_VERY_LOW                                                :Very low
 STR_6816_LOW                                                    :Low
 STR_6817_NORMAL                                                 :Normal
@@ -2190,9 +2184,9 @@
 STR_6836_OFF                                                    :Off
 STR_6837_ON                                                     :On
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Show hi-score chart
-STR_6839_PERMISSIVE                                             :Permissive
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Hostile
+STR_PERMISSIVE                                                  :Permissive
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Hostile
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Can't sell 25% share in this company...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% owned by {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} has been taken over by {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}This company is not old enough to trade shares yet...
+STR_PROTECTED                                                   :{WHITE}This company is not old enough to trade shares yet...
 
 STR_LIVERY_DEFAULT                                              :Standard Livery
 STR_LIVERY_STEAM                                                :Steam Engine
@@ -2342,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passenger Coach (Steam)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passenger Coach (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passenger Coach (Electric)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Passenger Coach (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Passenger Coach (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Freight Wagon
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Lorry
@@ -2636,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING1} {STRING1}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING1} {STRING1}
 STR_8806_GO_TO                                                  :Go to {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Go to {STATION} (Transfer and take cargo)
-STR_8808_GO_TO_UNLOAD                                           :Go to {STATION} (Unload)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Go to {STATION} (Transfer and leave empty)
-STR_880A_GO_TO_LOAD                                             :Go to {STATION} (Load)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Go to {STATION} (Transfer and wait for full load)
-STR_880C_GO_NON_STOP_TO                                         :Go non-stop to {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Go non-stop to {STATION} (Transfer and take cargo)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Go non-stop to {STATION} (Unload)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Go non-stop to {STATION} (Transfer and leave empty)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Go non-stop to {STATION} (Load)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Go non-stop to {STATION} (Transfer and wait for full load)
+STR_GO_TO_TRANSFER                                              :Go to {STATION} (Transfer and take cargo)
+STR_8807_GO_TO_UNLOAD                                           :Go to {STATION} (Unload)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Go to {STATION} (Transfer and leave empty)
+STR_8808_GO_TO_LOAD                                             :Go to {STATION} (Load)
+STR_GO_TO_TRANSFER_LOAD                                         :Go to {STATION} (Transfer and wait for full load)
+STR_880A_GO_NON_STOP_TO                                         :Go non-stop to {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Go non-stop to {STATION} (Transfer and take cargo)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Go non-stop to {STATION} (Unload)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Go non-stop to {STATION} (Transfer and leave empty)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Go non-stop to {STATION} (Load)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Go non-stop to {STATION} (Transfer and wait for full load)
 STR_GO_TO_TRAIN_DEPOT                                           :Go to {TOWN} Train Depot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Service at {TOWN} Train Depot
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Go non-stop to {TOWN} Train Depot
@@ -2750,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Show details of cargo carried
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Show details of train vehicles
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Show capacities of each vehicle
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Show total capacity of train, split by cargo type
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Show total capacity of train, split by cargo type
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orders list - click on an order to highlight it. CTRL + click scrolls to the station
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Skip the current order, and start the next. CTRL + click skips to the selected order
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Delete the highlighted order
@@ -2781,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Can't reverse direction of train...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Rename train vehicle type
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Can't rename train vehicle type...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Make the highlighted order force the vehicle to dump cargo
-STR_886F_TRANSFER                                               :{BLACK}Transfer
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Make the highlighted order force the vehicle to dump cargo
+STR_TRANSFER                                                    :{BLACK}Transfer
 STR_CLEAR_TIME                                                  :{BLACK}Clear Time
 STR_RESET_LATENESS                                              :{BLACK}Reset Late Counter
 
@@ -2860,8 +2856,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Name road vehicle
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Citizens celebrate . . .{}First bus arrives at {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Citizens celebrate . . .{}First truck arrives at {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Citizens celebrate . . .{}First passenger tram arrives at {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Citizens celebrate . . .{}First freight tram arrives at {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Citizens celebrate . . .{}First passenger tram arrives at {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Citizens celebrate . . .{}First freight tram arrives at {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Road Vehicle Crash!{}Driver dies in fireball after collision with train
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Road Vehicle Crash!{}{COMMA} die in fireball after collision with train
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Can't make vehicle turn around...
@@ -2870,7 +2866,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Rename road vehicle type
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Rename road vehicle type
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Can't rename road vehicle type...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Go to {TOWN} Road Vehicle Depot
+STR_GO_TO_ROADVEH_DEPOT                                         :Go to {TOWN} Road Vehicle Depot
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Service at {TOWN} Road Vehicle Depot
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Refit road vehicle to carry a different cargo type
@@ -3244,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :All but {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Tractive Effort: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generate
@@ -3271,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Resizing source map too much is not recommended. Continue with the generation?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Town layout warning
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}The town layout "no more roads" is not recommended. Continue with the generation?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Heightmap name:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Size: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generating world...
@@ -3297,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Move the height of flat land one up
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Change height of flat land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Height of flat land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Center the smallmap on the current position
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/english_US.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/english_US.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flat land required
 STR_0008_WAITING                                                :{BLACK}Waiting: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en-route from
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepts: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepts: {GOLD}
 STR_000E                                                        :
@@ -168,7 +166,7 @@
 STR_00C7_QUIT                                                   :{WHITE}Quit
 STR_00C8_YES                                                    :{BLACK}Yes
 STR_00C9_NO                                                     :{BLACK}No
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Are you sure you want to abandon this game and return to {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Are you sure you want to quit OpenTTD and return to {STRING}?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Too many names defined
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Chosen name already in use
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Cargo
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Capacities
-STR_013E_TOTAL_CARGO                                            :{BLACK}Total Cargo
+STR_TOTAL_CARGO                                                 :{BLACK}Total Cargo
 STR_013F_CAPACITY                                               :{BLACK}Capacity: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacity: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Total cargo (capacity) of this train:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Total cargo (capacity) of this train:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}New Game
 STR_0141_LOAD_GAME                                              :{BLACK}Load Game
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multiplayer
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenario Editor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Map size:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Game Options
@@ -736,7 +728,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Delete this town completely
 STR_0292_SAVE_SCENARIO                                          :Save scenario
 STR_0293_LOAD_SCENARIO                                          :Load scenario
-STR_LOAD_HEIGHTMAP                                              :Load heightmap
+STR_MENU_LOAD_HEIGHTMAP                                         :Load heightmap
 STR_0294_QUIT_EDITOR                                            :Quit editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Quit
@@ -776,9 +768,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Game options
-STR_02C5_DIFFICULTY_SETTINGS                                    :Difficulty settings
-STR_02C7_CONFIG_PATCHES                                         :Configure patches
+STR_02C4_GAME_OPTIONS                                           :Game options
+STR_02C6_DIFFICULTY_SETTINGS                                    :Difficulty settings
+STR_MENU_CONFIG_PATCHES                                         :Configure patches
 STR_NEWGRF_SETTINGS                                             :Newgrf settings
 STR_TRANSPARENCY_OPTIONS                                        :Transparency options
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +870,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Saving still in progress,{}please wait until it is finished!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Select 'Ezy Street style music' program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :English (Original)
@@ -1653,42 +1645,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Must remove road first
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Road works in progress
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Road Construction
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Tramway Construction
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Tramway Construction
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Select Road Bridge
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... one way roads can't have junctions
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Can't build road here...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Can't build tramway here...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Can't build tramway here...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Can't remove road from here...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Can't remove tramway from here...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Can't remove tramway from here...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Road Depot Orientation
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Tram Depot Orientation
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Tram Depot Orientation
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Can't build road vehicle depot here...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Can't build tram vehicle depot here...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Can't build tram vehicle depot here...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Can't build bus station...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Can't build truck station...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Can't build passenger tram station...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Can't build freight tram station...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Can't build passenger tram station...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Can't build freight tram station...
 STR_180A_ROAD_CONSTRUCTION                                      :Road construction
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramway construction
+STR_TRAMWAY_CONSTRUCTION                                        :Tramway construction
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Build road section
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Build road section using the Autoroad mode
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Build tramway section
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Build tramway section
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Build tramway section using the Autotram mode
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Build road vehicle depot (for building and servicing vehicles)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Build tram vehicle depot (for building and servicing trams)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Build tram vehicle depot (for building and servicing trams)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Build bus station
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Build truck loading bay
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Build passenger tram station
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Build freight tram station
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Build passenger tram station
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Build freight tram station
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Build road bridge
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Build tramway bridge
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Build tramway bridge
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Build road tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Build tramway tunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Build tramway tunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activate/Deactivate one way roads
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Toggle build/remove for road construction
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Toggle build/remove for tramway construction
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Toggle build/remove for tramway construction
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Select road vehicle depot orientation
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Select tram vehicle depot orientation
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Select tram vehicle depot orientation
 STR_1814_ROAD                                                   :Road
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Road with streetlights
 STR_1816_TREE_LINED_ROAD                                        :Tree-lined road
@@ -1831,8 +1823,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Adjoins more than one existing station/loading area
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Too many stations/loading areas in this town
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Too many stations/loading areas
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Too many bus stops
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Too many truck stations
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Too many bus stops
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Too many truck stations
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Too close to another station/loading area
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Must demolish railroad station first
@@ -1863,12 +1855,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} now accepts {STRING} and {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Bus Station Orientation
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Truck Station Orient.
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Passenger Tram Orientation
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Freight Tram Orientation
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Passenger Tram Orientation
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Freight Tram Orientation
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Must demolish bus station first
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Must demolish truck station first
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Must demolish passenger tram station first
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Must demolish freight tram station first
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Must demolish passenger tram station first
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Must demolish freight tram station first
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- None -
@@ -1880,8 +1872,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Select length of railroad station
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Select bus station orientation
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Select truck loading bay orientation
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Select passenger tram station orientation
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Select freight tram station orientation
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Select passenger tram station orientation
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Select freight tram station orientation
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Center main view on station location
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Show station ratings
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Change name of station
@@ -1903,7 +1895,7 @@
 STR_3069_BUOY                                                   :Buoy
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...buoy in the way
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...station too spread out
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...nonuniform stations disabled
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...nonuniform stations disabled
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hold down CTRL to select more than one item
 
 STR_UNDEFINED                                                   :(undefined string)
@@ -1944,7 +1936,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Select New Game Type
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Select scenario (green), pre-set game (blue), or random new game
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generate random new game
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Load Heightmap
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Load Heightmap
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} in the way
@@ -2148,10 +2140,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economy: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Train reversing: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Disasters: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}City council's attitude towards area restructuring: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}City council's attitude towards area restructuring: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :None
+STR_NONE                                                        :None
 STR_NUM_VERY_LOW                                                :Very low
 STR_6816_LOW                                                    :Low
 STR_6817_NORMAL                                                 :Normal
@@ -2189,9 +2181,9 @@
 STR_6836_OFF                                                    :Off
 STR_6837_ON                                                     :On
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Show hi-score chart
-STR_6839_PERMISSIVE                                             :Permissive
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Hostile
+STR_PERMISSIVE                                                  :Permissive
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Hostile
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2328,7 +2320,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Can't sell 25% share in this company...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% owned by {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} has been taken over by {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}This company is not old enough to trade shares yet...
+STR_PROTECTED                                                   :{WHITE}This company is not old enough to trade shares yet...
 
 STR_LIVERY_DEFAULT                                              :Standard Livery
 STR_LIVERY_STEAM                                                :Steam Engine
@@ -2635,17 +2627,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Go to {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Go to {STATION} (Transfer and take cargo)
-STR_8808_GO_TO_UNLOAD                                           :Go to {STATION} (Unload)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Go to {STATION} (Transfer and leave empty)
-STR_880A_GO_TO_LOAD                                             :Go to {STATION} (Load)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Go to {STATION} (Transfer and wait for full load)
-STR_880C_GO_NON_STOP_TO                                         :Go non-stop to {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Go non-stop to {STATION} (Transfer and take cargo)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Go non-stop to {STATION} (Unload)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Go non-stop to {STATION} (Transfer and leave empty)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Go non-stop to {STATION} (Load)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Go non-stop to {STATION} (Transfer and wait for full load)
+STR_GO_TO_TRANSFER                                              :Go to {STATION} (Transfer and take cargo)
+STR_8807_GO_TO_UNLOAD                                           :Go to {STATION} (Unload)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Go to {STATION} (Transfer and leave empty)
+STR_8808_GO_TO_LOAD                                             :Go to {STATION} (Load)
+STR_GO_TO_TRANSFER_LOAD                                         :Go to {STATION} (Transfer and wait for full load)
+STR_880A_GO_NON_STOP_TO                                         :Go non-stop to {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Go non-stop to {STATION} (Transfer and take cargo)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Go non-stop to {STATION} (Unload)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Go non-stop to {STATION} (Transfer and leave empty)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Go non-stop to {STATION} (Load)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Go non-stop to {STATION} (Transfer and wait for full load)
 STR_GO_TO_TRAIN_DEPOT                                           :Go to {TOWN} Train Depot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Service at {TOWN} Train Depot
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Go non-stop to {TOWN} Train Depot
@@ -2749,7 +2741,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Show details of cargo carried
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Show details of train vehicles
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Show capacities of each vehicle
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Show total capacity of train, split by cargo type
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Show total capacity of train, split by cargo type
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orders list - click on order to highlight it
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Skip the current order, and start the next. CTRL + click skips to the selected order)
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Delete the highlighted order
@@ -2780,8 +2772,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Can't reverse direction of train...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Rename train vehicle type
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Can't rename train vehicle type...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Make the highlighted order force the vehicle to dump cargo
-STR_886F_TRANSFER                                               :{BLACK}Transfer
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Make the highlighted order force the vehicle to dump cargo
+STR_TRANSFER                                                    :{BLACK}Transfer
 STR_CLEAR_TIME                                                  :{BLACK}Clear Time
 STR_RESET_LATENESS                                              :{BLACK}Reset Late Counter
 
@@ -2858,8 +2850,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Name road vehicle
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Citizens celebrate . . .{}First bus arrives at {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Citizens celebrate . . .{}First truck arrives at {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Citizens celebrate . . .{}First passenger tram arrives at {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Citizens celebrate . . .{}First freight tram arrives at {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Citizens celebrate . . .{}First passenger tram arrives at {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Citizens celebrate . . .{}First freight tram arrives at {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Road Vehicle Crash!{}Driver dies in fireball after collision with train
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Road Vehicle Crash!{}{COMMA} die in fireball after collision with train
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Can't make vehicle turn around...
@@ -2868,7 +2860,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Rename road vehicle type
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Rename road vehicle type
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Can't rename road vehicle type...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Go to {TOWN} Road Vehicle Depot
+STR_GO_TO_ROADVEH_DEPOT                                         :Go to {TOWN} Road Vehicle Depot
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Service at {TOWN} Road Vehicle Depot
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Refit road vehicle to carry a different cargo type
@@ -3267,7 +3259,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Resizing source map too much is not recommended. Continue with the generation?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Town layout warning
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}The town layout "no more roads" is not recommended. Continue with the generation?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Heightmap name:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Size: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generating world...
@@ -3293,7 +3284,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Move the height of flat land up one
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Change height of flat land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Height of flat land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Center the smallmap on the current position
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/esperanto.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/esperanto.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesas ebena lando
 STR_0008_WAITING                                                :{BLACK}Atendas: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (survoje de
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Akceptiĝas: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Akceptiĝas: {GOLD}
 STR_000E                                                        :
@@ -275,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Tro da nomoj difinitaj
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}La elektita nomo jam uziĝas
 
-STR_0133_WINDOWS                                                :Vindozo
-STR_0134_UNIX                                                   :Unikso
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Vindozo
+STR_OSNAME_UNIX                                                 :Unikso
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Ŝarĝo
 STR_013D_INFORMATION                                            :{BLACK}Informoj
 STR_013E_CAPACITIES                                             :{BLACK}Kapabloj
-STR_013E_TOTAL_CARGO                                            :{BLACK}Tuta Ŝarĝo
+STR_TOTAL_CARGO                                                 :{BLACK}Tuta Ŝarĝo
 STR_013F_CAPACITY                                               :{BLACK}Enhavkapablo: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapablo: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Tuta ŝarĝkapablo de ĉi tiu trajno:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Tuta ŝarĝkapablo de ĉi tiu trajno:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nova Ludo
 STR_0141_LOAD_GAME                                              :{BLACK}Ŝarĝu ludon
@@ -300,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Pluraj Ludantoj
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenarkreilo
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Mapgrandeco:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Ludaj Opcioj
@@ -734,7 +726,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Plene forigu ĉi tiun urbon
 STR_0292_SAVE_SCENARIO                                          :Konservu scenaron
 STR_0293_LOAD_SCENARIO                                          :Ŝarĝu scenaron
-STR_LOAD_HEIGHTMAP                                              :Ŝarĝu altecmapon
+STR_MENU_LOAD_HEIGHTMAP                                         :Ŝarĝu altecmapon
 STR_0294_QUIT_EDITOR                                            :Fermu kreilon
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Fermu
@@ -774,9 +766,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Ludaj opcioj
-STR_02C5_DIFFICULTY_SETTINGS                                    :Malfacilec-agordoj
-STR_02C7_CONFIG_PATCHES                                         :Agordu flikojn
+STR_02C4_GAME_OPTIONS                                           :Ludaj opcioj
+STR_02C6_DIFFICULTY_SETTINGS                                    :Malfacilec-agordoj
+STR_MENU_CONFIG_PATCHES                                         :Agordu flikojn
 STR_NEWGRF_SETTINGS                                             :Agordoj de NewGRF
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Urbonomoj montriĝas
@@ -875,8 +867,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Ankoraŭ konservas,{}bv atendi ĝis finiĝo!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Elektu programon de 'Facilvoja muziko'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Angle (Origine)
@@ -1731,8 +1723,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Alligas pli ol unu ekzistantan stacion/ŝarĝejon
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Tro da stacioj/ŝarĝejoj en la urbo
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Tro da stacioj/ŝarĝejoj
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Tro da bushaltejoj
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Tro da ŝarĝaŭtaj stacioj
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Tro da bushaltejoj
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Tro da ŝarĝaŭtaj stacioj
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Tro proksime al alia stacioj/ŝarĝejoj
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Antaŭe forigu stacidomon
@@ -1797,7 +1789,7 @@
 STR_3069_BUOY                                                   :Buo
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...buo okupas la lokon
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stacio tro vastas
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...nekonformaj stacioj neebligitaj
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...nekonformaj stacioj neebligitaj
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Tenu la CTRL-klavon por elekti pliajn erojn
 
 STR_UNDEFINED                                                   :(nedifinita tekstero)
@@ -1832,7 +1824,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Elektu Novan Ludtipon
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Elektu scenaron (green), antaŭ-agorditan ludon (blue), aŭ hazardan novan ludon
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generu hazardan novan ludon
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Ŝarĝu Altecmapon
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Ŝarĝu Altecmapon
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} okupas la lokon
@@ -2027,10 +2019,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomio: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Trajna inversigo: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofoj: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Urbestrara teniĝo al regiona strukturŝanĝiĝo: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Urbestrara teniĝo al regiona strukturŝanĝiĝo: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Neniu
+STR_NONE                                                        :Neniu
 STR_NUM_VERY_LOW                                                :Tre malalte
 STR_6816_LOW                                                    :Malalte
 STR_6817_NORMAL                                                 :Normale
@@ -2068,9 +2060,9 @@
 STR_6836_OFF                                                    :Malaktiva
 STR_6837_ON                                                     :Aktiva
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Montru plej bonajn ludantojn
-STR_6839_PERMISSIVE                                             :Permeseme
-STR_683A_TOLERANT                                               :Tolerante
-STR_683B_HOSTILE                                                :Gastige
+STR_PERMISSIVE                                                  :Permeseme
+STR_TOLERANT                                                    :Tolerante
+STR_HOSTILE                                                     :Gastige
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2202,7 +2194,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Ne povas vendi 25%-an dividaĵon...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% posedataj de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} estas transprenita de {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Ĉi tiu kompanio ne sufiĉe aĝas por jam komerci dividaĵojn...
+STR_PROTECTED                                                   :{WHITE}Ĉi tiu kompanio ne sufiĉe aĝas por jam komerci dividaĵojn...
 
 STR_LIVERY_DEFAULT                                              :Normala Koloro
 STR_LIVERY_STEAM                                                :Vapormaŝino
@@ -2507,17 +2499,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Iru al {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Iru al {STATION} (Transigu kaj prenu ŝarĝon)
-STR_8808_GO_TO_UNLOAD                                           :Iru al {STATION} (Deŝarĝu)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Iru al {STATION} (Transigu kaj lasu malplena)
-STR_880A_GO_TO_LOAD                                             :Iru al {STATION} (Ŝarĝu)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Iru al {STATION} (Transigu kaj atendu ĝis plena ŝarĝo)
-STR_880C_GO_NON_STOP_TO                                         :Iru senhalte al {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Iru senhalte al {STATION} (Transigu kaj prenu ŝarĝon)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Iru senhalte al {STATION} (Deŝarĝu)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Iru senhalte al {STATION} (Transigu kaj lasu malplena)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Iru senhalte al {STATION} (Ŝarĝu)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Iru senhalte al {STATION} (Transigu kaj atendu ĝis plena ŝarĝo)
+STR_GO_TO_TRANSFER                                              :Iru al {STATION} (Transigu kaj prenu ŝarĝon)
+STR_8807_GO_TO_UNLOAD                                           :Iru al {STATION} (Deŝarĝu)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Iru al {STATION} (Transigu kaj lasu malplena)
+STR_8808_GO_TO_LOAD                                             :Iru al {STATION} (Ŝarĝu)
+STR_GO_TO_TRANSFER_LOAD                                         :Iru al {STATION} (Transigu kaj atendu ĝis plena ŝarĝo)
+STR_880A_GO_NON_STOP_TO                                         :Iru senhalte al {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Iru senhalte al {STATION} (Transigu kaj prenu ŝarĝon)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Iru senhalte al {STATION} (Deŝarĝu)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Iru senhalte al {STATION} (Transigu kaj lasu malplena)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Iru senhalte al {STATION} (Ŝarĝu)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Iru senhalte al {STATION} (Transigu kaj atendu ĝis plena ŝarĝo)
 STR_GO_TO_TRAIN_DEPOT                                           :Iru al {TOWN} Trajndeponejo
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Prizorgo ĉe {TOWN} Trajndeponejo
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Iru senhalte al {TOWN} Trajndeponejo
@@ -2609,7 +2601,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Montru detalojn de portata ŝarĝo
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Montru detalojn de trajnaj veturiloj
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Montru kapablojn de ĉiu veturilo
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Montru tutan kapablon de trajno, dividite laŭ ŝarĝtipo
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Montru tutan kapablon de trajno, dividite laŭ ŝarĝtipo
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordena listo - alklaku ordenon por elekti. CTRL + klako skrolas al la stacio
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Forviŝu la elektitan ordenon
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Senhaltigu elektitan ordenon
@@ -2635,8 +2627,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Ne povas inversigi direkton de trajno...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renomu trajnan veturiltipon
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Ne povas renomi trajnan veturiltipon...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}La elektita ordeno igu la veturilon demeti la ŝarĝon
-STR_886F_TRANSFER                                               :{BLACK}Transigu
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}La elektita ordeno igu la veturilon demeti la ŝarĝon
+STR_TRANSFER                                                    :{BLACK}Transigu
 
 STR_TRAIN_STOPPING                                              :{RED}Haltiĝas
 STR_TRAIN_STOPPING_VEL                                          :{RED}Haltiĝas, {VELOCITY}
@@ -2703,7 +2695,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renomu vojveturilan tipon
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renomu vojveturilan tipon
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Ne povas renomi vojveturilan tipon...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Iru al {TOWN} Vojveturila Deponejo
+STR_GO_TO_ROADVEH_DEPOT                                         :Iru al {TOWN} Vojveturila Deponejo
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Prizorgo ĉe {TOWN} Vojveturila Deponejo
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Transformu vojveturilon por porti alian ŝarĝon
@@ -3097,7 +3089,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Ne rekomendindas tro ŝanĝi la grandecon de la mapo. Ĉu daŭrigi la generadon?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Urbaspekta averto
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}La urbaspekto "sen pliaj vojoj" ne estas rekomendata. Ĉu plugeneri?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Mapa nomo:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Grandeco: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generante mondon...
@@ -3123,7 +3114,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Altigu la altecon de ebena lando per unu
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Ŝanĝu altecon de ebena lando
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Alteco de ebena lando:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrigu la mapeton al la nuna loko
 
--- a/src/lang/estonian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/estonian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Maapind peab olema tasane
 STR_0008_WAITING                                                :{BLACK}Ootel: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (tulnud jaamast
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} teel jaamast {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Võtab vastu: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Võtab vastu: {GOLD}
 STR_000E                                                        :
@@ -374,9 +373,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Liiga palju määratletud nimesid
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Valitud nimi on juba kasutusel
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -387,11 +386,11 @@
 STR_013C_CARGO                                                  :{BLACK}Laadung
 STR_013D_INFORMATION                                            :{BLACK}Andmed
 STR_013E_CAPACITIES                                             :{BLACK}Kandevõimed
-STR_013E_TOTAL_CARGO                                            :{BLACK}Laadungit kokku
+STR_TOTAL_CARGO                                                 :{BLACK}Laadungit kokku
 STR_013F_CAPACITY                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Selle rongi kandevõime:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Selle rongi kandevõime:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Uus mäng
 STR_0141_LOAD_GAME                                              :{BLACK}Mängu laadimine
@@ -399,12 +398,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Võrgumäng
 STR_SCENARIO_EDITOR                                             :{BLACK}Stsenaariumiredaktor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kaardi suurus:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Mängu valikud
@@ -735,7 +728,7 @@
 STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Maastiku loomine
 STR_022F_TOWN_GENERATION                                        :{BLACK}Linnade loomine
 STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Tööstuste loomine
-STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Tee-ehitus
+STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Maanteede ehitamine
 STR_0233_TOWN_GENERATION                                        :{WHITE}Linnade loomine
 STR_0234_NEW_TOWN                                               :{BLACK}Uus linn
 STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Ehita uus linn
@@ -832,11 +825,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Paigalda saatjamast
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Loo kõrbealad.{}Eemaldamiseks klõpsa hoides all CTRL nuppu
 STR_CREATE_LAKE                                                 :{BLACK}Määratle veealad.{}Ehita kanal. CTRL-klahvi all hoides ujutab ümbruskonna üle.
+STR_CREATE_RIVER                                                :{BLACK}Jõgede paigutamine.
 STR_0290_DELETE                                                 :{BLACK}Kustuta
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Hävita see linn täielikult
 STR_0292_SAVE_SCENARIO                                          :Salvesta kaart
 STR_0293_LOAD_SCENARIO                                          :Laadi kaart
-STR_LOAD_HEIGHTMAP                                              :Lae kõrguskaart
+STR_MENU_LOAD_HEIGHTMAP                                         :Lae kõrguskaart
 STR_0294_QUIT_EDITOR                                            :Lahku redaktorist
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Välju
@@ -876,9 +870,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Mängu valikud
-STR_02C5_DIFFICULTY_SETTINGS                                    :Raskusastme seadistused
-STR_02C7_CONFIG_PATCHES                                         :Paikade seadistamine
+STR_02C4_GAME_OPTIONS                                           :Mängu valikud
+STR_02C6_DIFFICULTY_SETTINGS                                    :Raskusastme seadistused
+STR_MENU_CONFIG_PATCHES                                         :Paikade seadistamine
 STR_NEWGRF_SETTINGS                                             :NewGRF seadistused
 STR_TRANSPARENCY_OPTIONS                                        :Läbipaistvuse valikud
 STR_GAMEOPTMENU_0A                                              :
@@ -978,8 +972,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Ikka salvestamisel,{}palun oota salvestuse lõpuni!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}'Ezy Street' stiilis muusikaprogrammi valimine
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglise (originaalne)
@@ -1232,7 +1226,7 @@
 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_MAGLEV                     :Magnethõljukrong
 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
@@ -1708,10 +1702,10 @@
 STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Sobiv rongitee puudub
 STR_1007_ALREADY_BUILT                                          :{WHITE}...juba ehitatud
 STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Rööbastee tuleb eelnevalt lammutada
-STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Rööbasteede ehitus
-STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Elektrifitseeritud rööbastee ehitus
+STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Rööbasteede ehitamine
+STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Elektrifitseeritud rööbasteede ehitamine
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Monorelsi ehitamine
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Elektromageetilise rööbastee ehitamine
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Magnethõljuktee ehitamine
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Vali raudteesild
 STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Siia ei saa depood ehitada...
 STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Siia ei saa raudteejaama ehitada...
@@ -1721,9 +1715,9 @@
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Siit ei saa signaale lammutada...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Depoo suund
 STR_1015_RAILROAD_CONSTRUCTION                                  :Rööbastee ehitamine
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Elektrifitseeritud rööbastee ehitus
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Elektrifitseeritud rööbasteede ehitamine
 STR_1016_MONORAIL_CONSTRUCTION                                  :Monorelsi ehitamine
-STR_1017_MAGLEV_CONSTRUCTION                                    :Elektromagneetilise rööbastee ehitamine
+STR_1017_MAGLEV_CONSTRUCTION                                    :Magnethõljuktee ehitamine
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Ehita rööbasteed
 STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Ehita rongidepoo (rongide ehitamiseks ja hoolduseks)
 STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Ehita raudteejaam
@@ -1753,43 +1747,43 @@
 ##id 0x1800
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Enne on vaja sõidutee lammutada
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Teede ehitamine
-STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Sõiduteede ehitus
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Trammitee ehitamine
+STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Sõiduteede ehitamine
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Trammiteede ehitamine
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Vali sillatüüp
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... ühesuunalised teed ei saa teedesõlmi omada
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Siia ei saa sõiduteed ehitada...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Trammiteed ei ole võimalik siia rajada...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Trammiteed ei ole võimalik siia rajada...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Siinset sõiduteed ei saa lammutada...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Siinset trammiteed ei saa lammutada...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Siinset trammiteed ei saa lammutada...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Depoo suund
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Trammidepoo suund
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Trammidepoo suund
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Siia ei saa depood ehitada...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Trammidepood ei saa siia rajada
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Trammidepood ei saa siia rajada
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Siia ei saa bussijaama ehitada...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Siia ei saa laadimisplatsi ehitada...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Siia ei saa reisitrammijaama rajada...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Siia ei saa kaubatrammijaama rajada...
-STR_180A_ROAD_CONSTRUCTION                                      :Tee-ehitus
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Trammitee ehitamine
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Siia ei saa reisitrammijaama rajada...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Siia ei saa kaubatrammijaama rajada...
+STR_180A_ROAD_CONSTRUCTION                                      :Maanteede ehitamine
+STR_TRAMWAY_CONSTRUCTION                                        :Trammiteede ehitamine
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Ehita sõidutee blokk
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Ehita autotee osa kasutades Autoroad režiimi
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Ehita trammitee blokk
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Ehita trammitee blokk
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Ehita trammitee osa kasutades Autotram režiimi
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Depoo ehitamine (veovahendite ehitamiseks ja hooldamiseks)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Ehita trammidepoo (veeremi ehitamiseks ja hoolduseks)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Ehita trammidepoo (veeremi ehitamiseks ja hoolduseks)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Ehita bussijaam
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Ehita veokite laadimisplats
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Ehita reisitrammijaam
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Ehita kaubatrammijaam
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Ehita reisitrammijaam
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Ehita kaubatrammijaam
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Ehita sild
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Ehita trammisild
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Ehita trammisild
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Ehita tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Ehita trammitunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Ehita trammitunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Lülita ühesuunalised teed sisse/välja
-STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Tee-ehituse ja -lammutamise vahetamine
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Lülitu trammitee ehitamise ja lammutamise vahel
+STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Lülitu maanteede ehitamise ja lammutamise vahel
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Lülitu trammitee ehitamise ja lammutamise vahel
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vali depoole suund
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Vali trammidepoo suund
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Vali trammidepoo suund
 STR_1814_ROAD                                                   :Sõidutee
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Valgustatud sõidutee
 STR_1816_TREE_LINED_ROAD                                        :Puiestee
@@ -1932,8 +1926,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Mitme olemasoleva jaama ühendamine
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Selles linnas on juba liiga palju jaamasid
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Liiga palju jaamu
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Liiga palju bussipeatusi
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Liiga palju laadimisplatvorme
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Liiga palju bussipeatusi
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Liiga palju laadimisplatvorme
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Mõnele teisele jaamale liiga lähedal
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Raudteejaam tuleb eelnevalt lammutada
@@ -1964,12 +1958,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}Jaam {STATION} võtab nüüd vastu veoseid {STRING} ja {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Bussijaama suund
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Laadimisplatsi suund
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Reisitrammi suund
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Kaubatrammi suund
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Reisitrammi suund
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Kaubatrammi suund
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Bussijaam tuleb enne hävitada
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Enne pead laadimisplatsi hävitama
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Reisitrammijaam tuleb eelnevalt lammutada
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Kaubatrammijaam tuleb eelnevalt lammutada
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Reisitrammijaam tuleb eelnevalt lammutada
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Kaubatrammijaam tuleb eelnevalt lammutada
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} jaam{P "" a}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Puudub -
@@ -1981,8 +1975,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Vali raudteejaama pikkus
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Vali bussijaamale suund
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Vali laadimisplatsile suund
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Vali reisitrammijaama suund
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Vali kaubatrammijaama suund
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Vali reisitrammijaama suund
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Vali kaubatrammijaama suund
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Vaate viimine jaama juurde
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Näita jaamahinnangut
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Muuda jaama nime
@@ -2004,7 +1998,7 @@
 STR_3069_BUOY                                                   :Poi
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...poi on ees
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...jaam on liiga laiaks venitatud
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...korrapäratud jaamad keelatud
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...korrapäratud jaamad keelatud
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Enam kui ühe eseme valimiseks hoia all CTRL klahvi
 
 STR_UNDEFINED                                                   :(määratlemata väljend)
@@ -2045,7 +2039,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Vali uue mängu tüüp
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Vali valmis kaart (roheline), eelseadistatud mäng (sinine), või juhusliku kaardiga uus mäng
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Tekita suvaline kaart
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laadi kõrguskaart
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Laadi kõrguskaart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} on ees
@@ -2249,10 +2243,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Majandus: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Rongide ümberpööramine: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastroofid: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Linnanõukogu suhtumine maastikukujundusse: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Linnanõukogu suhtumine maastikukujundusse: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Pole
+STR_NONE                                                        :Pole
 STR_NUM_VERY_LOW                                                :Väga madal
 STR_6816_LOW                                                    :Madal
 STR_6817_NORMAL                                                 :Harilik
@@ -2290,9 +2284,9 @@
 STR_6836_OFF                                                    :Väljas
 STR_6837_ON                                                     :Sees
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Näita mängijate edetabelit
-STR_6839_PERMISSIVE                                             :Soodustav
-STR_683A_TOLERANT                                               :Tolerantne
-STR_683B_HOSTILE                                                :Vaenulik
+STR_PERMISSIVE                                                  :Soodustav
+STR_TOLERANT                                                    :Tolerantne
+STR_HOSTILE                                                     :Vaenulik
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2429,19 +2423,21 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Selle ettevõtte aktsiatest ei saa 25% müüa...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% on ettevõtte {COMPANY} käes)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} võeti üle ettevõtte {COMPANY} poolt!
-STR_7080_PROTECTED                                              :{WHITE}See ettevõtte pole veel piisavalt vana, et aktsiaid vahetada...
+STR_PROTECTED                                                   :{WHITE}See ettevõtte pole veel piisavalt vana, et aktsiaid vahetada...
 
 STR_LIVERY_DEFAULT                                              :Firmavärv
 STR_LIVERY_STEAM                                                :Aurumootorvedur
 STR_LIVERY_DIESEL                                               :Diiselmootorvedur
 STR_LIVERY_ELECTRIC                                             :Elektrimootorvedur
 STR_LIVERY_MONORAIL                                             :Monorelssvedur
-STR_LIVERY_MAGLEV                                               :Elektromagneetiline mootorvedur
+STR_LIVERY_MAGLEV                                               :Magnethõljukvedur
 STR_LIVERY_DMU                                                  :DMU
 STR_LIVERY_EMU                                                  :EMU
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Reisivagun (auru)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Reisivagun (diisel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Reisivagun (elektri)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Reisivagun (monorelss)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Reisivagun (magnethõljukrong)
 STR_LIVERY_FREIGHT_WAGON                                        :Kaubavagun
 STR_LIVERY_BUS                                                  :Buss
 STR_LIVERY_TRUCK                                                :Veoauto
@@ -2726,7 +2722,7 @@
 STR_8104_AIRCRAFT                                               :lennuk
 STR_8105_SHIP                                                   :laev
 STR_8106_MONORAIL_LOCOMOTIVE                                    :monorelssvedur
-STR_8107_MAGLEV_LOCOMOTIVE                                      :maglevivedur
+STR_8107_MAGLEV_LOCOMOTIVE                                      :magnethõljukvedur
 
 ##id 0x8800
 STR_8800_TRAIN_DEPOT                                            :{WHITE}Linna {TOWN} rongidepoo
@@ -2736,17 +2732,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Mine {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Mine {STATION} (laadi ümber ja võta laadung peale)
-STR_8808_GO_TO_UNLOAD                                           :Mine {STATION} (laadi maha)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Mine {STATION} (laadi ümber ja jäta tühjaks)
-STR_880A_GO_TO_LOAD                                             :Mine {STATION} (laadi)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Mine {STATION} (laadi ümber ja oota täislaadungit)
-STR_880C_GO_NON_STOP_TO                                         :Sõida läbi {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Sõida läbi {STATION} (laadi ümber ja oota täislaadungit)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Sõida läbi {STATION} (laadi maha)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Sõida läbi {STATION} (laadi ümber ja jäta tühjaks)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Sõida läbi {STATION} (laadi)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Sõida läbi {STATION} (laadi ümber ja oota täislaadungit)
+STR_GO_TO_TRANSFER                                              :Mine {STATION} (laadi ümber ja võta laadung peale)
+STR_8807_GO_TO_UNLOAD                                           :Mine {STATION} (laadi maha)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Mine {STATION} (laadi ümber ja jäta tühjaks)
+STR_8808_GO_TO_LOAD                                             :Mine {STATION} (laadi)
+STR_GO_TO_TRANSFER_LOAD                                         :Mine {STATION} (laadi ümber ja oota täislaadungit)
+STR_880A_GO_NON_STOP_TO                                         :Sõida läbi {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Sõida läbi {STATION} (laadi ümber ja oota täislaadungit)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Sõida läbi {STATION} (laadi maha)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Sõida läbi {STATION} (laadi ümber ja jäta tühjaks)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Sõida läbi {STATION} (laadi)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Sõida läbi {STATION} (laadi ümber ja oota täislaadungit)
 STR_GO_TO_TRAIN_DEPOT                                           :Mine linna {TOWN} rongidepoosse
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Hoolda linna {TOWN} rongidepoos
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Sõida läbi linna {TOWN} rongidepoo
@@ -2770,17 +2766,17 @@
 STR_8812_EMPTY                                                  :{LTBLUE}Tühi
 STR_8813_FROM                                                   :{LTBLUE}{CARGO} jaamast {STATION}
 STR_FROM_MULT                                                   :{LTBLUE}{CARGO} jaamast {STATION} (x{NUM})
-STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Rong {COMMA} ootab depoos
+STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Rong {COMMA} on depoos ootel
 STR_8815_NEW_VEHICLES                                           :{BLACK}Uus rong
 STR_8816                                                        :{BLACK}-
 STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Rong on liiga pikk
-STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Ronge saab ainult siis muuta kui nad on peatatud depoo sees
+STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Ainult depoos peatunud ronge saab muuta
 STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} rong{P "" i}
 
 STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Uued rööbassõidukid
 STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Uus elektriraudteeveerem
-STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Uued monorelsi sõidukid
-STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Uus maglevi sõiduk
+STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Uus monorelssveerem
+STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Uus magnethõljukveerem
 STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Rööbassõidukid
 
 STR_881F_BUILD_VEHICLE                                          :{BLACK}Ehita veovahend
@@ -2803,7 +2799,7 @@
 STR_TIMETABLE_VIEW                                              :{BLACK}Sõiduplaan
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Näita sõiduplaani
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (käsud)
-STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Käskude Lõpp - -
+STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Sihtpunktide lõpp - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
 STR_SERVICE                                                     :{BLACK}Hooldus
 STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}Rööbassõidukit ei saa ehitada...
@@ -2850,7 +2846,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Näita detaile viidud kauba kohta
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Näita täpsemat infot rongivagunite kohta
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Näita iga rongivaguni kandevõimet
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Näita kogu rongi mahtu, jagatud kauba tüübi järgi
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Näita kogu rongi mahtu, jagatud kauba tüübi järgi
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Sihtpunktide nimekiri - vajuta käsul et see valida. CTRL + klik kerib jaama juurde
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Jäta praegune järjestus vahele ja alusta järgmisega. CTRL + klõps jätab vahele kuni valitud järjestuseni
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Kustuta valitud käsk
@@ -2881,8 +2877,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Ei saa rongi ümber pöörata.
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Muuda rongivaguni tüübinime
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Raudteesõiduki tüübinime ei saa muuta...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Käsi valitud sihtpunktis sõiduki laadung kõrvaldada
-STR_886F_TRANSFER                                               :{BLACK}Laadi ümber
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Käsi valitud sihtpunktis sõiduki laadung kõrvaldada
+STR_TRANSFER                                                    :{BLACK}Laadi ümber
 STR_CLEAR_TIME                                                  :{BLACK}Tühista aeg
 STR_RESET_LATENESS                                              :{BLACK}Tühista hilinemisloendur
 
@@ -2960,8 +2956,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Nimeta mootorsõidukit
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} jaama saabus esimene buss!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{} esimene veok saabus {STATION} jaama!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene reisitramm saabus trammijaama {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene kaubatramm saabus trammijaama {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene reisitramm saabus trammijaama {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene kaubatramm saabus trammijaama {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Rongikokkupõrge!{}Juht suri peale õnnetust tules
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Mootorsõiduki kokkupõrge rongiga!{}{COMMA} inimest suri õnnetuses
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Transpordivahendit ei saa ümber pöörata...
@@ -2970,7 +2966,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Muuda mootorsõiduki tüübinime
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Muuda mootorsõiduki tüübinime
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Mootorsõiduki tüübinime ei saa muuta...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Mine linna {TOWN} garaaži
+STR_GO_TO_ROADVEH_DEPOT                                         :Mine linna {TOWN} garaaži
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Hoolda linna {TOWN} mootorsõidukidepoos
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Seadista mootorsõidukit kandmaks teist tüüpi veost
@@ -2980,7 +2976,7 @@
 STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Vali, millist tüüpi laadungit veovahend veab
 
 ##id 0x9800
-STR_9800_DOCK_CONSTRUCTION                                      :Sadamaehitus
+STR_9800_DOCK_CONSTRUCTION                                      :Sadamate ehitamine
 STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Sadama ehitus
 STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Siia ei saa sadamat ehitada
 STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN} Laevaangaar
@@ -3083,7 +3079,7 @@
 STR_A01A_CAPACITY                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO}
 STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Lennuk peab olema peatatud angaari sees
 STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Ei saa lennukit müüa...
-STR_A01D_AIRPORT_CONSTRUCTION                                   :Lennuvälja ehitamine
+STR_A01D_AIRPORT_CONSTRUCTION                                   :Lennuväljade ehitamine
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Ehita lennuväli
 STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Lennuk - info saamiseks vajuta lennukile
 STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Ehita uus lennuk (vajab angaariga lennujaama)
@@ -3320,8 +3316,8 @@
 
 STR_RAIL_VEHICLES                                               :Raudteesõidukid
 STR_ELRAIL_VEHICLES                                             :Elektrirongid
-STR_MONORAIL_VEHICLES                                           :Monorelss-sõidukid
-STR_MAGLEV_VEHICLES                                             :Maglevi Sõidukid
+STR_MONORAIL_VEHICLES                                           :Monorelssveerem
+STR_MAGLEV_VEHICLES                                             :Magnethõljukveerem
 
 ############ End of list of rail types
 
@@ -3344,6 +3340,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Kõik, välja arvatud {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Suurim veojõud: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Tekita
@@ -3371,7 +3373,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Kaardi suuruse muutmine pole soovitatav. Jätka?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Linnaplaneerimise hoiatus
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Linnaplaneeringut "ilma teedeta" ei ole soovitatav kasutada. Jätkata selle tekitamisega?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Kõrgusekaardi nimi:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Suurus: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Maailma genereerimine...
@@ -3397,7 +3398,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Liiguta lameda maa kõrgus ühe võrra üles
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Muuda maa kõrgust lamedal maal
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Lameda maa kõrgus:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Vii väikekaart praegusele asukohale
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/finnish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/finnish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Tarvitaan tasaista maata.
 STR_0008_WAITING                                                :{BLACK}Lähdössä: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (matkalla:
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Vastaanottaa: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Vastaanottaa: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Liian monta nimeä määritelty
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Nimi on jo käytössä
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS{NBSP}X{NBSP}
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS{NBSP}X{NBSP}
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Rahti
 STR_013D_INFORMATION                                            :{BLACK}Tietoa
 STR_013E_CAPACITIES                                             :{BLACK}Kapasiteetit
-STR_013E_TOTAL_CARGO                                            :{BLACK}Rahtia yhteensä
+STR_TOTAL_CARGO                                                 :{BLACK}Rahtia yhteensä
 STR_013F_CAPACITY                                               :{BLACK}Kapaisteetti: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapasiteetti: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Kokonaisrahtikapasiteetti:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Kokonaisrahtikapasiteetti:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Uusi peli
 STR_0141_LOAD_GAME                                              :{BLACK}Lataa peli
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Moninpeli
 STR_SCENARIO_EDITOR                                             :{BLACK}Maisemaeditori
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kartan koko:
 STR_BY                                                          :{BLACK}×
 STR_0148_GAME_OPTIONS                                           :{BLACK}Pelin asetukset
@@ -733,7 +725,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Poista tämä kaupunki kokonaan.
 STR_0292_SAVE_SCENARIO                                          :Tallenna skenaario
 STR_0293_LOAD_SCENARIO                                          :Lataa skenaario
-STR_LOAD_HEIGHTMAP                                              :Lataa korkeuskartta
+STR_MENU_LOAD_HEIGHTMAP                                         :Lataa korkeuskartta
 STR_0294_QUIT_EDITOR                                            :Sulje muokkain
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Sulje
@@ -773,9 +765,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Pelin asetukset
-STR_02C5_DIFFICULTY_SETTINGS                                    :Vaikeusasetukset
-STR_02C7_CONFIG_PATCHES                                         :Muokkaa paikkauksia
+STR_02C4_GAME_OPTIONS                                           :Pelin asetukset
+STR_02C6_DIFFICULTY_SETTINGS                                    :Vaikeusasetukset
+STR_MENU_CONFIG_PATCHES                                         :Muokkaa paikkauksia
 STR_NEWGRF_SETTINGS                                             :Newgrf-asetukset
 STR_TRANSPARENCY_OPTIONS                                        :Läpinäkyvyysvalinnat
 STR_GAMEOPTMENU_0A                                              :
@@ -874,8 +866,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Tallentaminen käynnissä,{}odota, kunnes se päättyy!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Valitse 'Ezy Street'.
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Englantilainen
@@ -1644,39 +1636,39 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Tie pitää siirtää ensin.
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Tietyöt ovat käynnissä.
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Tien rakentaminen
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Raitiotien rakentaminen
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Raitiotien rakentaminen
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Valitse maantiesilta
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... yksisuuntaisella kadulla ei voi olla risteystä
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Tietä ei voi rakentaa.
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Tähän ei voi rakentaa raitiotietä.
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Tähän ei voi rakentaa raitiotietä.
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Tietä ei voi poistaa.
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Tästä ei voi poistaa raitiotietä.
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Tästä ei voi poistaa raitiotietä.
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Autovarikon suunta
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Varikon suunta
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Varikon suunta
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Autovarikkoa ei voi rakentaa.
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Tähän ei voi rakentaa varikkoa.
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Tähän ei voi rakentaa varikkoa.
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Linja-autoasemaa ei voi rakentaa.
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Lastauslaituria ei voi rakentaa.
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Ei voi rakentaa asemaa.
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Ei voi rakentaa rahtiasemaa.
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Ei voi rakentaa asemaa.
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Ei voi rakentaa rahtiasemaa.
 STR_180A_ROAD_CONSTRUCTION                                      :Tien rakentaminen
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Raitiotien rakentaminen
+STR_TRAMWAY_CONSTRUCTION                                        :Raitiotien rakentaminen
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Rakenna tieosuus.
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Rakenna raitiotietä
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Rakenna raitiotietä
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Rakenna autovarikko (ajoneuvojen rakentamista ja huoltoa varten)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Rakenna raitiotievarikko (vaunujen rakentamiseen ja korjaamiseen)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Rakenna raitiotievarikko (vaunujen rakentamiseen ja korjaamiseen)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Rakenna linja-autoasema
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Rakenna lastauslaituri
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Rakenna asema
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Rakenna rahtiasema
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Rakenna asema
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Rakenna rahtiasema
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Rakenna maantiesilta
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Rakenna raitiotiesilta
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Rakenna raitiotiesilta
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Rakenna maantietunneli
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Rakenna raitiotietunneli
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Rakenna raitiotietunneli
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Tien rakentaminen/siirtäminen päälle/pois
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Vaihda rakentamisen ja purkamisen välillä
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Vaihda rakentamisen ja purkamisen välillä
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Valitse autovarikon suunta.
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Valitse varikon suunta
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Valitse varikon suunta
 STR_1814_ROAD                                                   :Tie
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Tie katuvaloilla
 STR_1816_TREE_LINED_ROAD                                        :Puilla reunustettu tie
@@ -1818,8 +1810,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Liitä yhteen useampi asema/lastausalue.
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Liian monta asemaa ja lastausaluetta kaupungissa.
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Liian monta asemaa ja lastausaluetta.
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Liian monta linja-autopysäkkiä.
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Liian monta lastauslaituria.
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Liian monta linja-autopysäkkiä.
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Liian monta lastauslaituria.
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Liian lähellä toista asemaa tai lastausaluetta.
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Rautatieasema pitää tuhota ensin.
@@ -1850,12 +1842,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} ottaa nyt vastaan {STRING} ja {STRING}.
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Linja-autoaseman suunta
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lastauslaiturin suunta
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Aseman suunta
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Rahtiaseman suunta
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Aseman suunta
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Rahtiaseman suunta
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Linja-autoasema pitää purkaa ensin.
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Lastauslaituri pitää purkaa ensin.
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Asema täytyy purkaa ensin
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Rahtiasema täytyy purkaa ensin
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Asema täytyy purkaa ensin
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Rahtiasema täytyy purkaa ensin
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} asema{P "" a}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ei mitään -
@@ -1867,8 +1859,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Valitse rautatieaseman pituus.
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Valitse linja-autoaseman suunta.
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Valitse lastauslaiturin suunta.
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Valitse aseman suunta
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Valitse rahtiaseman suunta
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Valitse aseman suunta
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Valitse rahtiaseman suunta
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Keskitä näkymä aseman sijaintiin.
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Näytä aseman arviot.
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Muuta aseman nimi.
@@ -1890,7 +1882,7 @@
 STR_3069_BUOY                                                   :Poiju
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...poiju on tiellä.
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...asema liian levittäytynyt.
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...epäsymmetriset asemat poissa käytöstä.
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...epäsymmetriset asemat poissa käytöstä.
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Pidä CTRL painettuna valitaksesi enemmän kuin yhden tavaran
 
 STR_UNDEFINED                                                   :(määrittelemätön)
@@ -1931,7 +1923,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Valitse uusi pelityyppi
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Valitse skenaario (vihreä), alkuasetettu peli (sininen) tai satunnainen peli.
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Luo uusi satunnainen peli
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Lataa korkeuskartta
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Lataa korkeuskartta
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} on tiellä.
@@ -2133,10 +2125,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Talous: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Junien peruutus: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Onnettomuudet: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Kaupunginvaltuuston asenne alueen uudelleenjärjestelyyn: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Kaupunginvaltuuston asenne alueen uudelleenjärjestelyyn: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ei mitään
+STR_NONE                                                        :Ei mitään
 STR_NUM_VERY_LOW                                                :Erittäin alhainen
 STR_6816_LOW                                                    :Matala
 STR_6817_NORMAL                                                 :Normaali
@@ -2174,9 +2166,9 @@
 STR_6836_OFF                                                    :Pois
 STR_6837_ON                                                     :Päällä
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Näytä pistetaulukko
-STR_6839_PERMISSIVE                                             :Salliva
-STR_683A_TOLERANT                                               :Suvaitseva
-STR_683B_HOSTILE                                                :Vihamielinen
+STR_PERMISSIVE                                                  :Salliva
+STR_TOLERANT                                                    :Suvaitseva
+STR_HOSTILE                                                     :Vihamielinen
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2308,7 +2300,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Tästä yhtiöstä ei voi myydä 25{NBSP}%:n osuutta...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}{NBSP}%:n omistus: {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}Yhtiön {COMPANY} on ottanut haltuun {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Tällä yhtiöllä ei ole vielä osakkeita...
+STR_PROTECTED                                                   :{WHITE}Tällä yhtiöllä ei ole vielä osakkeita...
 
 STR_LIVERY_DEFAULT                                              :Normaalit tunnusvärit
 STR_LIVERY_STEAM                                                :Höyryveturi
@@ -2615,17 +2607,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Asemalle {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Mene asemalle {STATION} (Siirrä ja ota rahti)
-STR_8808_GO_TO_UNLOAD                                           :Mene asemalle {STATION} (Pura rahti)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Mene asemalle {STATION} (Siirrä ja jätä tyhjäksi)
-STR_880A_GO_TO_LOAD                                             :Mene asemalle {STATION} (Lastaa)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Mene asemalle {STATION} (Siirrä ja odota täyttä rahtia)
-STR_880C_GO_NON_STOP_TO                                         :Mene tauotta asemalle {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Mene tauotta asemalle {STATION} (Siirrä ja ota rahti)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Mene tauotta asemalle {STATION} (Pura rahti)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Mene tauotta asemalle {STATION} (Siirrä ja jätä tyhjäksi)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Mene tauotta asemalle {STATION} (Lastaa)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Mene tauotta asemalle {STATION} (Siirrä ja odota täyttä rahtia)
+STR_GO_TO_TRANSFER                                              :Mene asemalle {STATION} (Siirrä ja ota rahti)
+STR_8807_GO_TO_UNLOAD                                           :Mene asemalle {STATION} (Pura rahti)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Mene asemalle {STATION} (Siirrä ja jätä tyhjäksi)
+STR_8808_GO_TO_LOAD                                             :Mene asemalle {STATION} (Lastaa)
+STR_GO_TO_TRANSFER_LOAD                                         :Mene asemalle {STATION} (Siirrä ja odota täyttä rahtia)
+STR_880A_GO_NON_STOP_TO                                         :Mene tauotta asemalle {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Mene tauotta asemalle {STATION} (Siirrä ja ota rahti)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Mene tauotta asemalle {STATION} (Pura rahti)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Mene tauotta asemalle {STATION} (Siirrä ja jätä tyhjäksi)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Mene tauotta asemalle {STATION} (Lastaa)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Mene tauotta asemalle {STATION} (Siirrä ja odota täyttä rahtia)
 STR_GO_TO_TRAIN_DEPOT                                           :Mene kaupungin {TOWN} veturitalliin
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Huolto veturitallilla ({TOWN})
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Mene pysähtymättä veturitalliin ({TOWN})
@@ -2729,7 +2721,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Näytä kuljetettavan rahdin tiedot.
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Näytä yksikön tiedot.
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Näytä kunkin ajoneuvon kapasiteetti.
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Näytä junan kokonaiskapasiteetti, eritelty rahtityypin mukaan.
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Näytä junan kokonaiskapasiteetti, eritelty rahtityypin mukaan.
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Aikataulu - napsauta määräystä korostaaksesi.
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Ohita nykyinen pysähdys ja aloita seuraava.
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Poista korostettu määräys.
@@ -2760,8 +2752,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Junan suuntaa ei voi kääntää...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Nimeä juna(vaunu)n tyyppi uudelleen.
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Juna(vaunu)n tyyppiä ei voi uudelleennimetä...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Pakottaa tyhjentämään rahdin valitulla pysäkillä
-STR_886F_TRANSFER                                               :{BLACK}Siirrä
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Pakottaa tyhjentämään rahdin valitulla pysäkillä
+STR_TRANSFER                                                    :{BLACK}Siirrä
 STR_CLEAR_TIME                                                  :{BLACK}Nollaa aika
 STR_RESET_LATENESS                                              :{BLACK}Nollaa myöhästymislaskuri
 
@@ -2836,8 +2828,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Nimeä ajoneuvo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen linja-auto saapuu asemalle {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen kuorma-auto saapuu asemalle {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen raitiovaunu saapuu asemalle {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen rahtiraitiovaunu saapuu asemalle {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen raitiovaunu saapuu asemalle {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen rahtiraitiovaunu saapuu asemalle {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Ajoneuvokolari!{}Kuljettaja kuolee junaan törmäyksen jälkeisessä tulipallossa
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Ajoneuvokolari!{}{COMMA} kuolee junaan törmäyksen jälkeisessä tulipallossa
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Ajoneuvoa ei voi pakottaa kääntymään ympäri...
@@ -2846,7 +2838,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Nimeä ajoneuvon tyyppi uudelleen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Nimeä ajoneuvon tyyppi uudelleen
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Ajoneuvotyyppiä ei voi uudelleennimetä...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Aseta kohteeksi huoltoasema, {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Aseta kohteeksi huoltoasema, {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Huolto, kohteena huoltoasema, {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Muuta ajoneuvo rahtaamaan muuta rahtityyppiä.
@@ -3243,7 +3235,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Lähdekartan koon liiallinen muuttaminen ei ole suositeltavaa. Haluatko jatkaa?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Varoitus tiekaavasta
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Tiekaavaa "ei uusia teitä" ei suositella. Jatketaanko?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Korkeuskartan nimi:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Koko: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Maailmaa luodaan...
@@ -3269,7 +3260,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Siirrä tasaista maata yksi ylöspäin
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Vaihda tasaisen maan korkeutta
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Tasaisen maan korkeus:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Keskitä pieni kartta tähän paikkaan
 
--- a/src/lang/french.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/french.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Terrain plat requis
 STR_0008_WAITING                                                :{BLACK}En attente: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (venant de
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} venant de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepte: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepte: {GOLD}
 STR_000E                                                        :
@@ -169,7 +168,7 @@
 STR_00C7_QUIT                                                   :{WHITE}Quitter
 STR_00C8_YES                                                    :{BLACK}Oui
 STR_00C9_NO                                                     :{BLACK}Non
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Êtes vous sur de vouloir abandonner cette partie et retourner à {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Êtes vous sur de vouloir quitter OpenTTD et retourner à {STRING}?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -275,9 +274,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Trop de noms déjà définis
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Ce nom est déjà utilisé
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +287,11 @@
 STR_013C_CARGO                                                  :{BLACK}Cargaison
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Capacités
-STR_013E_TOTAL_CARGO                                            :{BLACK}Charge totale
+STR_TOTAL_CARGO                                                 :{BLACK}Charge totale
 STR_013F_CAPACITY                                               :{BLACK}Capacité: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacité: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Capacité totale de ce train:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Capacité totale de ce train:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nouvelle Partie
 STR_0141_LOAD_GAME                                              :{BLACK}Charger une Partie
@@ -300,12 +299,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Mode Multijoueur
 STR_SCENARIO_EDITOR                                             :{BLACK}Éditeur de Scénario
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Taille de la carte :
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Options
@@ -733,11 +726,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Placer un Transmetteur
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Définir une zone désertique.{}Garder Ctrl enfoncé pour retrait
 STR_CREATE_LAKE                                                 :{BLACK}Définir une zone d'eau.{}Construit un canal, si Ctrl est enfoncé au niveau de la mer, le voisinage sera innondé.
+STR_CREATE_RIVER                                                :{BLACK}Placer des rivières.
 STR_0290_DELETE                                                 :{BLACK}Supprimer
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Supprimer complètement cette ville
 STR_0292_SAVE_SCENARIO                                          :Sauvegarder scénario
 STR_0293_LOAD_SCENARIO                                          :Charger scénario
-STR_LOAD_HEIGHTMAP                                              :Charger une carte d'altitude
+STR_MENU_LOAD_HEIGHTMAP                                         :Charger une carte d'altitude
 STR_0294_QUIT_EDITOR                                            :Quitter éditeur
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Quitter
@@ -777,9 +771,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Options du Jeu
-STR_02C5_DIFFICULTY_SETTINGS                                    :Niveau de Difficulté
-STR_02C7_CONFIG_PATCHES                                         :Configuration Avancée
+STR_02C4_GAME_OPTIONS                                           :Options du Jeu
+STR_02C6_DIFFICULTY_SETTINGS                                    :Niveau de Difficulté
+STR_MENU_CONFIG_PATCHES                                         :Configuration Avancée
 STR_NEWGRF_SETTINGS                                             :Paramètres Newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Options de transparence
 STR_GAMEOPTMENU_0A                                              :
@@ -879,8 +873,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Sauvegarde en cours,{}Veuillez attendre la fin du processus!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Sélectionner programme de musique 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglais (Originaux)
@@ -1075,7 +1069,7 @@
 STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Argent nécessaire pour l'auto-renouvelement : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Temps d'affichage des messages d'erreur: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Afficher la population d'une ville dans son label : {ORANGE}{STRING}
-STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Arbres invisibles (quand les bâtiments sont transparents) : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Arbres invisibles: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Générateur de terrain : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Original
@@ -1655,42 +1649,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Vous devez d'abord retirer la route
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Route en travaux
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construction routière
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construction de tramway
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construction de tramway
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Choisir Pont Routier
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... les routes à sens unique ne peuvent pas avoir de jonctions
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Impossible de construire la route ici...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Impossible de construire une section de tramway ici...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Impossible de construire une section de tramway ici...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Impossible de retirer la route ici...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Impossible de retirer la section de tramway d'ici...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Impossible de retirer la section de tramway d'ici...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientation du dépôt
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientation du dépôt
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientation du dépôt
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Impossible de construire un dépôt routier ici...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Impossible de construire un dépôt de tramway ici...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Impossible de construire un dépôt de tramway ici...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Impossible de construire un arrêt d'autobus...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Impossible de construire une aire de chargement...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Impossible de construire une station de tramway pour passagers...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Impossible de construire une station de tramway pour fret...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Impossible de construire une station de tramway pour passagers...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Impossible de construire une station de tramway pour fret...
 STR_180A_ROAD_CONSTRUCTION                                      :Construction routière
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construction de tramway
+STR_TRAMWAY_CONSTRUCTION                                        :Construction de tramway
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construire une section de route
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construire une route avec le mode Auto-route
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construire une section de tramway
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construire une section de tramway
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construire une section de tramway avec le mode Auto-tram
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construire un dépôt routier (pour construire et entretenir les véhicules routiers)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construire un dépôt de tramway (pour la construction et l'entretien des véhicules)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Construire un dépôt de tramway (pour la construction et l'entretien des véhicules)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Construire un arrêt d'autobus
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construire une aire de chargement
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Construire une station de tramway pour passagers
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Construire une station de tramway pour fret
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Construire une station de tramway pour passagers
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Construire une station de tramway pour fret
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construire un pont routier
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construire un pont
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construire un pont
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construire un tunnel routier
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construire un tunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construire un tunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activer/Désactiver les routes à sens unique
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Basculer construire/détruire routes
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Basculer construire/retirer pour tramways
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Basculer construire/retirer pour tramways
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Choisir orientation du dépôt routier
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Choisir l'orientation du dépôt de tramway
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Choisir l'orientation du dépôt de tramway
 STR_1814_ROAD                                                   :Route
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Route avec lampadaires
 STR_1816_TREE_LINED_ROAD                                        :Route avec lignée d'arbustres
@@ -1833,8 +1827,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Adjacent à plus d'une gare à la fois
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Trop de gares dans cette ville
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Trop de gares
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Trop d'arrêts d'autobus
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Trop d'aires de chargement
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Trop d'arrêts d'autobus
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Trop d'aires de chargement
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Trop près d'une autre gare
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Vous devez d'abord détruire la gare
@@ -1865,12 +1859,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} accepte désormais: {STRING} et {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Arrêt d'autobus
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Aire de chargement
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Tramway pour passagers
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Tramway pour fret
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Tramway pour passagers
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Tramway pour fret
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Vous devez d'abord détruire l'arrêt d'autobus
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Vous devez d'abord détruire l'aire de chargement
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Vous devez d'abord démolir la station de tramway pour passagers
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Vous devez d'abord démolir la station de tramway pour fret
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Vous devez d'abord démolir la station de tramway pour passagers
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Vous devez d'abord démolir la station de tramway pour fret
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P 2 "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Aucun -
@@ -1882,8 +1876,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Choisir la longueur de la gare
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Choisir l'orientation de l'arrêt d'autobus
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Choix de l'orientation de l'aire de chargement
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Choisir l'orientation de la station de tramway pour passagers
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Choisir l'orientation de la station de tramway pour fret
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Choisir l'orientation de la station de tramway pour passagers
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Choisir l'orientation de la station de tramway pour fret
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrer la vue sur la station
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Afficher la notation de la station
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Renommer la station
@@ -1905,7 +1899,7 @@
 STR_3069_BUOY                                                   :Bouée
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bouée présente
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...gare trop étendue
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...stations non-uniformes désactivées
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...stations non-uniformes désactivées
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Cliquer avec Ctrl pour sélectionner plus d'un élément
 
 STR_UNDEFINED                                                   :(chaîne non définie)
@@ -1946,7 +1940,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Choix du type de partie
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Choisir un scénario (vert), une partie préparée (bleu), ou une partie aléatoire
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Créer une partie aléatoirement
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Charger une carte d'altitude
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Charger une carte d'altitude
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} présente
@@ -2150,10 +2144,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economie: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Demi-tour des trains: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Désastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Attitude de la municipalité face au repaysagement : {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Attitude de la municipalité face au repaysagement : {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Aucune
+STR_NONE                                                        :Aucune
 STR_NUM_VERY_LOW                                                :Très bas
 STR_6816_LOW                                                    :Bas
 STR_6817_NORMAL                                                 :Normal
@@ -2191,9 +2185,9 @@
 STR_6836_OFF                                                    :Désactivé
 STR_6837_ON                                                     :Activé
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Afficher le tableau des scores
-STR_6839_PERMISSIVE                                             :Laxiste
-STR_683A_TOLERANT                                               :Tolérant
-STR_683B_HOSTILE                                                :Hostile
+STR_PERMISSIVE                                                  :Laxiste
+STR_TOLERANT                                                    :Tolérant
+STR_HOSTILE                                                     :Hostile
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2330,7 +2324,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Impossible de vendre des parts...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% détenus par {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} a été rachetée par {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Cette compagnie ne vend pas d'actions pour le moment...
+STR_PROTECTED                                                   :{WHITE}Cette compagnie ne vend pas d'actions pour le moment...
 
 STR_LIVERY_DEFAULT                                              :Livrée standard
 STR_LIVERY_STEAM                                                :Locomotive à vapeur
@@ -2343,6 +2337,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Voiture (Vapeur)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Voiture (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Voiture (Electrique)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Voiture (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Voiture (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Wagon
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Camion
@@ -2637,17 +2633,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Aller à {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Aller à {STATION} (Transférer et charger)
-STR_8808_GO_TO_UNLOAD                                           :Aller à {STATION} (Décharger)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Aller à {STATION} (Transférer et laisser vide)
-STR_880A_GO_TO_LOAD                                             :Aller à {STATION} (Charger)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Aller à {STATION} (Transférer et attendre pleine charge)
-STR_880C_GO_NON_STOP_TO                                         :Aller sans s'arrêter à {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Aller sans s'arrêter à {STATION} (Transférer et charger)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Aller sans s'arrêter à {STATION} (Décharger)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Aller sans s'arrêter à {STATION} (Transférer et laisser vide)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Aller sans s'arrêter à {STATION} (Charger)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Aller sans s'arrêter à {STATION} (Transférer et attendre pleine charge)
+STR_GO_TO_TRANSFER                                              :Aller à {STATION} (Transférer et charger)
+STR_8807_GO_TO_UNLOAD                                           :Aller à {STATION} (Décharger)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Aller à {STATION} (Transférer et laisser vide)
+STR_8808_GO_TO_LOAD                                             :Aller à {STATION} (Charger)
+STR_GO_TO_TRANSFER_LOAD                                         :Aller à {STATION} (Transférer et attendre pleine charge)
+STR_880A_GO_NON_STOP_TO                                         :Aller sans s'arrêter à {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Aller sans s'arrêter à {STATION} (Transférer et charger)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Aller sans s'arrêter à {STATION} (Décharger)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Aller sans s'arrêter à {STATION} (Transférer et laisser vide)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Aller sans s'arrêter à {STATION} (Charger)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Aller sans s'arrêter à {STATION} (Transférer et attendre pleine charge)
 STR_GO_TO_TRAIN_DEPOT                                           :Aller au dépot de {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Entretien au dépôt de {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Aller sans s'arrêter au dépôt de {TOWN}
@@ -2751,7 +2747,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Afficher des informations sur les marchandises transportées
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Afficher des informations sur les wagons
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Afficher la capacité de chaque wagon
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Afficher la capacité totale du train, par type de cargaison
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Afficher la capacité totale du train, par type de cargaison
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner.  Cliquer avec Ctrl déplace la vue sur la station
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sauter l'ordre courant, et enchaîner sur le suivant. Ctrl-clic pour sauter l'ordre sélectionné
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Supprime l'ordre sélectionné
@@ -2782,8 +2778,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Impossible de faire faire demi-tour...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renommer le type de train
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Impossible de renommer le type de train...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Forcer le véhicule à vider sa cargaison pour l'ordre sélectionné
-STR_886F_TRANSFER                                               :{BLACK}Transfert
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Forcer le véhicule à vider sa cargaison pour l'ordre sélectionné
+STR_TRANSFER                                                    :{BLACK}Transfert
 STR_CLEAR_TIME                                                  :{BLACK}Annuler durée
 STR_RESET_LATENESS                                              :{BLACK}RAZ compteur de retard
 
@@ -2861,8 +2857,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Renommer le véhicule
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier bus arrive à {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier camion arrive à {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier tramway arrive à {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier tramway arrive à {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier tramway arrive à {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier tramway arrive à {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Accident routier!{}Un automobiliste meurt brûlé vif lors d'une collision avec un train
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Accident routier!{}{COMMA} mort{P "" s} lors d'une collision avec un train
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Impossible de faire faire demi-tour au véhicule...
@@ -2871,7 +2867,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renommer type de véhicule routier
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renommer type de véhicule routier
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Impossible de renommer type de véhicule routier...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Aller à {TOWN} Dépôt Routier
+STR_GO_TO_ROADVEH_DEPOT                                         :Aller à {TOWN} Dépôt Routier
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Entretien au dépôt de {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Réaménager le véhicule routier pour transporter une cargaison différente
@@ -3245,6 +3241,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Tous sauf {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Effort de traction max.: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Créer
@@ -3272,7 +3274,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Trop redimensionner la carte source n'est pas recommandé. Continuer la génération ?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Avertissement schéma de ville
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Le schéma de ville "pas de routes" n'est pas recommandé.  Voulez-vous poursuivre la génération?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nom de la carte d'altitude :
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Taille: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Création du monde...
@@ -3298,7 +3299,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Augmenter l'altitude du terrain plat
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Modifier l'altitude du terrain plat
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altitude du terrain plat :
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrer la carte sur la position actuelle
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/galician.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/galician.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesitas terreo chan
 STR_0008_WAITING                                                :{BLACK}Esperando: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en ruta dende
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Acepta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Acepta: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Hay demasiados nomes definidos
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}O nome elixido xa está en uso
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Carga
 STR_013D_INFORMATION                                            :{BLACK}Información
 STR_013E_CAPACITIES                                             :{BLACK}Capacidades
-STR_013E_TOTAL_CARGO                                            :{BLACK}Carga Total
+STR_TOTAL_CARGO                                                 :{BLACK}Carga Total
 STR_013F_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacidade: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Carga total (capacidade) deste tren:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Carga total (capacidade) deste tren:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nova Partida
 STR_0141_LOAD_GAME                                              :{BLACK}Cargar Partida
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multixogador
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor De Escenarios
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Tamaño do mapa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opcións da Partida
@@ -752,9 +744,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opcións da Partida
-STR_02C5_DIFFICULTY_SETTINGS                                    :Configuración de Dificultade
-STR_02C7_CONFIG_PATCHES                                         :Configuración dos Parches
+STR_02C4_GAME_OPTIONS                                           :Opcións da Partida
+STR_02C6_DIFFICULTY_SETTINGS                                    :Configuración de Dificultade
+STR_MENU_CONFIG_PATCHES                                         :Configuración dos Parches
 STR_NEWGRF_SETTINGS                                             :Configuración NewGRF
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Amosar nomes de cidades
@@ -851,8 +843,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}¡Grabación en progreso,{}por favor espera ata que termine!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selecciona-lo programa 'Música Estilo Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglés
@@ -1674,8 +1666,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Xunta máis dunha estación/área de carga existente
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Hay demasiadas estacións/áreas de carga nesta cidade
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Hay demasiadas estacións/áreas de carga
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Demasiadas paradas de bus
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Demasiadas estacions de camións
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Demasiadas paradas de bus
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Demasiadas estacions de camións
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Demasiado cerca doutra estación ou área de carga
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Debes demole-la estación de ferrocarril primeiro
@@ -1740,7 +1732,7 @@
 STR_3069_BUOY                                                   :Boia
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boia no camiño
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...a estación ocupa demasiado
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...estacións non uniformes deshabilitadas
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...estacións non uniformes deshabilitadas
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Presiona CTRL para seleccionar máis dun ítem
 
 STR_UNDEFINED                                                   :(cadea indefinida)
@@ -1974,10 +1966,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economía: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Inverti-lo sentido do tren: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Desastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Actitude do consello sobre a reestructuración de áreas: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Actitude do consello sobre a reestructuración de áreas: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ningún
+STR_NONE                                                        :Ningún
 STR_6816_LOW                                                    :Baixo
 STR_6817_NORMAL                                                 :Normal
 STR_6818_HIGH                                                   :Alto
@@ -2014,9 +2006,9 @@
 STR_6836_OFF                                                    :Off
 STR_6837_ON                                                     :On
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Mostra-la lista das mellores puntuacións
-STR_6839_PERMISSIVE                                             :Permisivo
-STR_683A_TOLERANT                                               :Tolerante
-STR_683B_HOSTILE                                                :Hostil
+STR_PERMISSIVE                                                  :Permisivo
+STR_TOLERANT                                                    :Tolerante
+STR_HOSTILE                                                     :Hostil
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2147,7 +2139,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Non se pode vender un 25% das accións desta compañía...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% propiedade de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} comprada por  {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Esta compañía todavía non comercia con accións...
+STR_PROTECTED                                                   :{WHITE}Esta compañía todavía non comercia con accións...
 
 STR_LIVERY_STEAM                                                :Máquina de Vapor
 STR_LIVERY_DIESEL                                               :Máquina Diésel
@@ -2443,17 +2435,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ir a {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ir a {STATION} (Transferir e coller carga)
-STR_8808_GO_TO_UNLOAD                                           :Ir a {STATION} (Descargar)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ir a {STATION} (Transferir e sair valeiro)
-STR_880A_GO_TO_LOAD                                             :Ir a {STATION} (Cargar)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ir a {STATION} (Transferir e esperar a cargar)
-STR_880C_GO_NON_STOP_TO                                         :Ir sen parar a {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ir sen parar a {STATION} (Transferir e coller carga)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ir sen parar a {STATION} (Descargar)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ir sen parar a {STATION} (Descargar e saír baleiro)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ir sen parar a {STATION} (Cargar)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ir sen parar a {STATION} (Transferir e esperar a cargar)
+STR_GO_TO_TRANSFER                                              :Ir a {STATION} (Transferir e coller carga)
+STR_8807_GO_TO_UNLOAD                                           :Ir a {STATION} (Descargar)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ir a {STATION} (Transferir e sair valeiro)
+STR_8808_GO_TO_LOAD                                             :Ir a {STATION} (Cargar)
+STR_GO_TO_TRANSFER_LOAD                                         :Ir a {STATION} (Transferir e esperar a cargar)
+STR_880A_GO_NON_STOP_TO                                         :Ir sen parar a {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ir sen parar a {STATION} (Transferir e coller carga)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ir sen parar a {STATION} (Descargar)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ir sen parar a {STATION} (Descargar e saír baleiro)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ir sen parar a {STATION} (Cargar)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ir sen parar a {STATION} (Transferir e esperar a cargar)
 STR_GO_TO_TRAIN_DEPOT                                           :Ir o Depósito De Trens de {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Face-lo servicio no Depósito de Trens de {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ir sen paradas o Depósito de Trens de {TOWN}
@@ -2541,7 +2533,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Mostra-los detalles das mercadorías transportadas
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Mostra-los detalles dos vehículos do tren
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostra-la capacidade de cada vehículo
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostra-la capacidade total do tren, dividida por tipos de carga
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Mostra-la capacidade total do tren, dividida por tipos de carga
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de Ordes - Pincha nunha orde para seleccionala
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Borra-la orde seleccionada
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Facer que a orde seleccionada sexa de Non Parar
@@ -2567,7 +2559,7 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}No se pode cambia-lo sentido do tren...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renomea-lo tipo de vehículo de ferrocarril
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Non se pode renome-lo tipo de vehículo de ferrocarril...
-STR_886F_TRANSFER                                               :{BLACK}Transferir
+STR_TRANSFER                                                    :{BLACK}Transferir
 
 STR_TRAIN_STOPPING                                              :{RED}Parando
 STR_TRAIN_STOPPING_VEL                                          :{RED}Parando, {VELOCITY}
@@ -2640,7 +2632,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renomea-lo tipo de vehículo de estrada
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renomea-lo tipo de vehículo de estrada
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Non se pode renomea-lo tipo de vehículo de estrada...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ir ó Depósito de Vehículos de Estrada de {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Ir ó Depósito de Vehículos de Estrada de {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Servicio no Depósito de Vehículos de Estrada de {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Reaxustar vehículo para levar un tipo diferente de carga
@@ -2992,7 +2984,6 @@
 STR_SNOW_LINE_DOWN                                              :{BLACK}Baixar a altura da liña de neve
 STR_SNOW_LINE_QUERY_CAPT                                        :{WHITE}Cambiar a altura da liña de neve
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Cambia-lo ano de inicio
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Tamaño: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Xerando mundo...
 STR_GENERATION_ABORT                                            :{BLACK}Cancelar
@@ -3013,7 +3004,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Baixar a altura do terreo chan un nivel
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Cambiar a altura do terreo chan
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altura do terreo chan:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centra-lo mapa pequeno na posición actual
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/german.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/german.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Ebenes Land erforderlich
 STR_0008_WAITING                                                :{BLACK}Im Wartezustand:  {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (unterwegs von
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Akzeptiert: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Akzeptiert: {GOLD}
 STR_000E                                                        :
@@ -275,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Zu viele Namen definiert
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Gewählter Name existiert bereits
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Fracht
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Kapazitäten
-STR_013E_TOTAL_CARGO                                            :{BLACK}Frachtübersicht
+STR_TOTAL_CARGO                                                 :{BLACK}Frachtübersicht
 STR_013F_CAPACITY                                               :{BLACK}Kapazität: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapazität: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Frachtkapazität dieses Zuges:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}{CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Frachtkapazität dieses Zuges:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}{CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Neues Spiel
 STR_0141_LOAD_GAME                                              :{BLACK}Spiel laden
@@ -300,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Mehrspieler
 STR_SCENARIO_EDITOR                                             :{BLACK}Szenarieneditor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Spielfeldgröße:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spieleinstellungen
@@ -733,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Sender errichten
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Lege Wüstengebiet an.{}STRG drücken zum entfernen
 STR_CREATE_LAKE                                                 :{BLACK}Wasser erzeugen.{}Baut einen Kanal. Bei gedrückter Strg.-Taste wird ein Wasserfeld erzeugt, das umliegendes Land flutet.
+STR_CREATE_RIVER                                                :{BLACK}Flüsse platzieren.
 STR_0290_DELETE                                                 :{BLACK}Löschen
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Diese Stadt vollständig löschen
 STR_0292_SAVE_SCENARIO                                          :Szenario speichern
 STR_0293_LOAD_SCENARIO                                          :Szenario laden
-STR_LOAD_HEIGHTMAP                                              :Reliefkarte laden
+STR_MENU_LOAD_HEIGHTMAP                                         :Reliefkarte laden
 STR_0294_QUIT_EDITOR                                            :Editor verlassen
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Beenden
@@ -777,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spieleinstellungen
-STR_02C5_DIFFICULTY_SETTINGS                                    :Schwierigkeitsgrad
-STR_02C7_CONFIG_PATCHES                                         :Einstellungen der Patches
+STR_02C4_GAME_OPTIONS                                           :Spieleinstellungen
+STR_02C6_DIFFICULTY_SETTINGS                                    :Schwierigkeitsgrad
+STR_MENU_CONFIG_PATCHES                                         :Einstellungen der Patches
 STR_NEWGRF_SETTINGS                                             :Newgrf-Einstellungen
 STR_TRANSPARENCY_OPTIONS                                        :Transparenzeinstellungen
 STR_GAMEOPTMENU_0A                                              :
@@ -879,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Speichern läuft,{}bitte warten bis beendet!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Wähle 'Ezy Street style music'-Programm
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Englisch
@@ -1054,7 +1047,7 @@
 STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Spielfeld scrollen, wenn die Maus am Bildrand anstößt: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Bestechen der Stadtverwaltung erlauben: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE                              :{LTBLUE}Erlaube den Erwerb exklusiver Transportrechte: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY                             :{LTBLUE}Erlaube es, anderen Firemn Geld zu schenken: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY                             :{LTBLUE}Erlaube es, anderen Firmen Geld zu schenken: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Ungleichmäßige Bahnhöfe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Neue globale Wegfindung für alle Fahrzeuge: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Frachtgewicht erhöhen um schwere Züge zu simulieren: {ORANGE}{STRING}
@@ -1655,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Straße muss erst entfernt werden
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Straßenarbeiten sind im Gange
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Straßenbau
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Straßenbahnbau
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Straßenbahnbau
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Brücke wählen
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... Einbahnstraßen können keine Abzweigung haben
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Straße kann hier nicht gebaut werden...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Straßenbahn kann hier nicht gebaut werden...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Straßenbahn kann hier nicht gebaut werden...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Diese Straße kann nicht entfernt werden...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Straßenbahn kann hier nicht entfernt werden...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Straßenbahn kann hier nicht entfernt werden...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Fahrzeugdepot-Ausr.
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Ausrichtung des Straßenbahndepots
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Ausrichtung des Straßenbahndepots
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Fahrzeugdepot kann hier nicht gebaut werden...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Straßenbahndepot kann hier nicht gebaut werden...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Straßenbahndepot kann hier nicht gebaut werden...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Busbahnhof kann nicht gebaut werden...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Lkw-Ladeplatz kann nicht gebaut werden...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Straßenbahnhaltestelle kann hier nicht gebaut werden...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Güterverladestelle kann hier nicht gebaut werden...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Straßenbahnhaltestelle kann hier nicht gebaut werden...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Güterverladestelle kann hier nicht gebaut werden...
 STR_180A_ROAD_CONSTRUCTION                                      :Straßenbau
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Straßenbahnbau
+STR_TRAMWAY_CONSTRUCTION                                        :Straßenbahnbau
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Straße bauen
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Werkzeug zum automatischen Bauen von Straßen
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Straßenbahnabschnitt bauen
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Straßenbahnabschnitt bauen
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Werkzeug zum automatischen Bauen von Schienen
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Fahrzeugdepot bauen (zum Bau und zur Wartung von Fahrzeugen)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Straßenbahndepot bauen (zum Erstellen und Warten von Straßenbahnen)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Straßenbahndepot bauen (zum Erstellen und Warten von Straßenbahnen)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Busbahnhof bauen
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Lkw-Ladeplatz bauen
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Straßenbahnhaltestelle bauen
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Güterverladestelle bauen
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Straßenbahnhaltestelle bauen
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Güterverladestelle bauen
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Straßenbrücke bauen
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Straßenbahnbrücke bauen
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Straßenbahnbrücke bauen
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Straßentunnel bauen
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Straßenbahntunnel bauen
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Straßenbahntunnel bauen
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktiviere/Deaktiviere Einbahnstraßen
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Zwischen Bau/Abriss der Straße umschalten
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Umschalten zwischen Bauen/Entfernen für Straßenbahnbau
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Umschalten zwischen Bauen/Entfernen für Straßenbahnbau
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Fahrzeugdepots wählen
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Straßenbahndepots wählen
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Ausrichtung des Straßenbahndepots wählen
 STR_1814_ROAD                                                   :Straße
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Straße mit Laternen
 STR_1816_TREE_LINED_ROAD                                        :Straße mit Bäumen
@@ -1833,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Grenzt an mehr als eine vorhandene Station/Ladeplatz
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Zu viele Stationen/Ladeplätze im Stadtgebiet
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Zu viele Stationen/Ladeplätze im Umkreis
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Zu viele Busbahnhöfe
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Zu viele Lkw-Ladeplätze
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Zu viele Busbahnhöfe
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Zu viele Lkw-Ladeplätze
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Stationen/Ladeplätze liegen zu dicht beisammen
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Bahnhof muss erst abgerissen werden
@@ -1865,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} akzeptiert jetzt auch {STRING} und {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Busbahnhof-Ausr.
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lkw-Ladeplatz-Ausr.
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Ausrichtung der Straßenbahnhaltestelle
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Ausrichtung der Güterverladestelle
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Ausrichtung der Straßenbahnhaltestelle
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Ausrichtung der Güterverladestelle
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Der Busbahnhof muss erst abgerissen werden
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Der Lkw-Ladeplatz muss erst abgerissen werden
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Straßenbahnhaltestelle muss vorher abgerissen werden
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Güterverladestelle muss vorher abgerissen werden
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Straßenbahnhaltestelle muss vorher abgerissen werden
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Güterverladestelle muss vorher abgerissen werden
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Haltestelle{P "" n}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Keine -
@@ -1882,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Bahnsteiglänge wählen
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Busbahnhofsausrichtung wählen
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Ladeplatzausrichtung wählen
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Ausrichtung für die Straßenbahnhaltestelle wählen
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Ausrichtung für die Güterverladestelle wählen
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Ausrichtung für die Straßenbahnhaltestelle wählen
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Ausrichtung für die Güterverladestelle wählen
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Hauptansicht zur Station scrollen
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Stationsbewertung anzeigen
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Name der Station ändern
@@ -1905,7 +1898,7 @@
 STR_3069_BUOY                                                   :Boje
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...Boje ist im Weg
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...Bahnhof ist zu groß
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ungleichförmige Stationen deaktiviert
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ungleichförmige Stationen deaktiviert
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}STRG gedrückt halten um mehrere Einträge auszuwählen
 
 STR_UNDEFINED                                                   :(nicht definierter Wert)
@@ -1946,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Neues Spiel auswählen
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Wähle Szenario (grün), vorgegebens Spiel (blau), oder ein Spiel nach dem Zufallsprinzip
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Spiel nach Zufallsprinzip erstellen
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Reliefkarte laden
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Reliefkarte laden
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} im Weg
@@ -2150,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Wirtschaft: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Zug umkehren: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrophen: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Haltung der Stadtverwaltung zum Landschaftsbau: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Haltung der Stadtverwaltung zum Landschaftsbau: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Keine
+STR_NONE                                                        :Keine
 STR_NUM_VERY_LOW                                                :Sehr niedrig
 STR_6816_LOW                                                    :Niedrig
 STR_6817_NORMAL                                                 :Normal
@@ -2191,9 +2184,9 @@
 STR_6836_OFF                                                    :Aus
 STR_6837_ON                                                     :An
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Highscoretabelle zeigen
-STR_6839_PERMISSIVE                                             :Zustimmend
-STR_683A_TOLERANT                                               :Akzeptierend
-STR_683B_HOSTILE                                                :Feindlich
+STR_PERMISSIVE                                                  :Zustimmend
+STR_TOLERANT                                                    :Akzeptierend
+STR_HOSTILE                                                     :Feindlich
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2330,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Verkauf von 25% der Aktien dieser Firma nicht möglich...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% Eigentum von {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} wurde von {COMPANY} übernommen!
-STR_7080_PROTECTED                                              :{WHITE}Dieses Unternehmen ist noch nicht an der Börse...
+STR_PROTECTED                                                   :{WHITE}Dieses Unternehmen ist noch nicht an der Börse...
 
 STR_LIVERY_DEFAULT                                              :Standardlackierung
 STR_LIVERY_STEAM                                                :Dampflok
@@ -2343,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passagierwagen (Dampf)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passagierwagen (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passagierwagen (elektrisch)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Reisezugwagen (Einschienenbahn)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Reisezugwagen (Magnetschwebebahn)
 STR_LIVERY_FREIGHT_WAGON                                        :Güterwaggon
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Lastwagen
@@ -2637,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Fahre nach {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Fahre nach {STATION} (Umladen und beladen)
-STR_8808_GO_TO_UNLOAD                                           :Fahre nach {STATION} (Entladen)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Fahre nach {STATION} (Umladen und leer verlassen)
-STR_880A_GO_TO_LOAD                                             :Fahre nach {STATION} (Beladen)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Fahre nach {STATION} (Umladen und voll beladen)
-STR_880C_GO_NON_STOP_TO                                         :Fahre ohne Halt nach {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Fahre ohne Halt nach {STATION} (Umladen und beladen)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Fahre ohne Halt nach {STATION} (Entladen)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Fahre nach {STATION} (Umladen und leer verlassen)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Fahre ohne Halt nach {STATION} (Beladen)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Fahre ohne Halt nach {STATION} (Umladen und voll beladen)
+STR_GO_TO_TRANSFER                                              :Fahre nach {STATION} (Umladen und beladen)
+STR_8807_GO_TO_UNLOAD                                           :Fahre nach {STATION} (Entladen)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Fahre nach {STATION} (Umladen und leer verlassen)
+STR_8808_GO_TO_LOAD                                             :Fahre nach {STATION} (Beladen)
+STR_GO_TO_TRANSFER_LOAD                                         :Fahre nach {STATION} (Umladen und voll beladen)
+STR_880A_GO_NON_STOP_TO                                         :Fahre ohne Halt nach {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Fahre ohne Halt nach {STATION} (Umladen und beladen)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Fahre ohne Halt nach {STATION} (Entladen)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Fahre nach {STATION} (Umladen und leer verlassen)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Fahre ohne Halt nach {STATION} (Beladen)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Fahre ohne Halt nach {STATION} (Umladen und voll beladen)
 STR_GO_TO_TRAIN_DEPOT                                           :Fahre zum {TOWN} Zugdepot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Wartung bei {TOWN} Zugdepot
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Fahre ohne Halt zu {TOWN} Zugdepot
@@ -2751,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Zeige Einzelheiten zur geladenen Fracht
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Zeige Einzelheiten zu den Schienenfahrzeugen
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Zeige Kapazität jedes Fahrzeugs
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Auftragsliste - zum Markieren hier anklicken
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Übergehe den laufenden Auftrag, und starte den nächsten
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Lösche den markierten Auftrag
@@ -2782,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Die Zugbewegung kann nicht umgekehrt werden...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Zugtyp umbenennen
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Zugtyp kann nicht umbenannt werden...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Beim markierten Eintrag wird die Ladung in den Bahnhof entladen (für späteren Weitertransport)
-STR_886F_TRANSFER                                               :{BLACK}Umladen
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Beim markierten Eintrag wird die Ladung in den Bahnhof entladen (für späteren Weitertransport)
+STR_TRANSFER                                                    :{BLACK}Umladen
 STR_CLEAR_TIME                                                  :{BLACK}Zeit löschen
 STR_RESET_LATENESS                                              :{BLACK}Verspätungszähler zurücksetzen
 
@@ -2861,8 +2856,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Name des Fahrzeuges
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Der erste Bus erreicht {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Der erste Lkw erreicht {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}Fahrer stirbt in Inferno nach Zusammenstoß mit Zug
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}{COMMA} sterben in Inferno nach Zusammenstoß mit Zug
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Das Fahrzeug kann nicht wenden...
@@ -2871,7 +2866,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Fahrzeug umbenennen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Fahrzeug umbenennen
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Fahrzeug kann nicht umbenannt werden...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Fahre zum Fahrzeugdepot {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Fahre zum Fahrzeugdepot {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Wartung im Fahrzeugdepot {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Straßenfahrzeug für den Transport anderer Güter umrüsten
@@ -3245,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Alles außer {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Zugkraft: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Erzeugen
@@ -3272,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Zu starke Skalierung des Spielfeldes wird nicht empfohlen. Generierung dennoch fortsetzen?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Städtebauwarnung
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Der Stadtaufbau "keine weiteren Straßen" wird nicht empfohlen. Mit der Generierung fortfahren?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Reliefkartenname:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Größe: {ORANGE}{NUM} × {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Spielfeld wird generiert...
@@ -3298,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Flachland um eine Stufe erhöhen
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Flachlandhöhe ändern
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Höhe des Flachlands:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Zusatzansicht zur akutellen Position scrollen
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/hungarian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/hungarian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Sima talaj szükséges
 STR_0008_WAITING                                                :{BLACK}Várakozik: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW} (elvitelre
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Elfogad:{WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Elfogad:{GOLD}
 STR_000E                                                        :
@@ -340,9 +338,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Túl sok név van megadva
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}A megadott név már használatban van
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -353,11 +351,11 @@
 STR_013C_CARGO                                                  :{BLACK}Rakomány
 STR_013D_INFORMATION                                            :{BLACK}Információ
 STR_013E_CAPACITIES                                             :{BLACK}Kapacitás
-STR_013E_TOTAL_CARGO                                            :{BLACK}Teljes rakomány
+STR_TOTAL_CARGO                                                 :{BLACK}Teljes rakomány
 STR_013F_CAPACITY                                               :{BLACK}Kapacitás: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapacitás: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Teljes rakománya (kapacitása) ennek a vonatnak:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Teljes rakománya (kapacitása) ennek a vonatnak:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Új játék
 STR_0141_LOAD_GAME                                              :{BLACK}Játék betöltése
@@ -365,12 +363,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Hálózati játék
 STR_SCENARIO_EDITOR                                             :{BLACK}Pályaszerkesztő
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Méret:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Beállítások
@@ -660,6 +652,9 @@
 STR_0209_COMPANY_INFORMATION                                    :{YELLOW}Céginformációk
 STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Ipari létesítmények létrejötte / bezárása
 STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Gazdasági változások
+STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER                           :{YELLOW}Termelésváltozások az általad szállított ipari cégeknél
+STR_INDUSTRY_CHANGES_SERVED_BY_OTHER                            :{YELLOW}Termelésváltozások a konkurrenseid által szállított ipari cégeknél
+STR_OTHER_INDUSTRY_PRODUCTION_CHANGES                           :{YELLOW}Más ipari termelési változások
 STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Tanácsok / információk a játékos járműveiről
 STR_020C_NEW_VEHICLES                                           :{YELLOW}Új járművek
 STR_020D_CHANGES_OF_CARGO_ACCEPTANCE                            :{YELLOW}Áruk elfogadásának változásai
@@ -795,11 +790,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Rádióadó építése
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Sivatagot hoz létre.{}Nyomj CTRL-t az eltávolításához
 STR_CREATE_LAKE                                                 :{BLACK}Vizi terület definiálása.{}Csatornát készít, kivéve ha tengerszinten CTRL-t lenyomva hívod meg, ekkor elárasztja a területet
+STR_CREATE_RIVER                                                :{BLACK}Folyók elhelyezése
 STR_0290_DELETE                                                 :{BLACK}Töröl
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}A város teljes eltüntetése
 STR_0292_SAVE_SCENARIO                                          :Pálya mentése
 STR_0293_LOAD_SCENARIO                                          :Pálya betöltése
-STR_LOAD_HEIGHTMAP                                              :Magasságtérkép betöltése
+STR_MENU_LOAD_HEIGHTMAP                                         :Magasságtérkép betöltése
 STR_0294_QUIT_EDITOR                                            :Kilépés a szerkesztőből
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Kilépés
@@ -839,9 +835,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Beállítások
-STR_02C5_DIFFICULTY_SETTINGS                                    :Nehézségi beállítások
-STR_02C7_CONFIG_PATCHES                                         :Foltok beállítása
+STR_02C4_GAME_OPTIONS                                           :Beállítások
+STR_02C6_DIFFICULTY_SETTINGS                                    :Nehézségi beállítások
+STR_MENU_CONFIG_PATCHES                                         :Foltok beállítása
 STR_NEWGRF_SETTINGS                                             :Newgrf beállítások
 STR_TRANSPARENCY_OPTIONS                                        :Átlátszósági beállítások
 STR_GAMEOPTMENU_0A                                              :
@@ -941,8 +937,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}A mentés még tart,{}kérlek várd meg a végét!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}A 'szép az élet' zenei műsor kiválasztása
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Angol (Eredeti)
@@ -1004,6 +1000,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Teljes képernyő
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Jelöld be ezt, ha teljes képernyős módban szeretnél OpenTTD-zni
+STR_FULLSCREEN_FAILED                                           :{WHITE}Teljesképernyős módra váltás sikertelen
 
 STR_OPTIONS_RES                                                 :{BLACK}A képernyő felbontása
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1716,42 +1713,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Előbb le kell rombolnod az utat
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Útkarbantartás folyamatban
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Útépítés
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Villamospálya építés
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Villamospálya építés
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Közúti híd építése
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... egy irányú utaknak nem lehetnek kereszteződéseik...
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Nem építhetsz ide utat...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Nem lehet villamossínt építeni itt...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Nem lehet villamossínt építeni itt...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nem rombolhatod le innen az utat...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nem lehet villamossínt eltávolítani innen...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nem lehet villamossínt eltávolítani innen...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Garázs helyzete
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Villamos-depó iránya
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Villamos-depó iránya
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nem építhetsz ide garázst...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Nem lehet villamos-depót építeni ide...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Nem lehet villamos-depót építeni ide...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nem építhetsz ide buszmegállót...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nem építhetsz ide teherautó-rakodóhelyet...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nem lehet villamos utasvárót építeni...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nem lehet tehervillamos-állomást építeni...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nem lehet villamos utasvárót építeni...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nem lehet tehervillamos-állomást építeni...
 STR_180A_ROAD_CONSTRUCTION                                      :Útépítés
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Villamospálya építés
+STR_TRAMWAY_CONSTRUCTION                                        :Villamospálya építés
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Út építése
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Közút-szakasz megépítése automata módon
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Villamos-sín építése
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Villamos-sín építése
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Villamos-sín szakasz megépítése automata módon
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Garázs építése (járművek vételére és karbantartására)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Villamos-depó építése (járművek megépítésére és szervizelésére)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Villamos-depó építése (járművek megépítésére és szervizelésére)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Buszmegálló építése
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Teherautó-rakodóhely építése
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Villamos utasváró építése
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Tehervillamos-állomás építése
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Villamos utasváró építése
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Tehervillamos-állomás építése
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Közúti híd építése
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Villamos-híd építése
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Villamos-híd építése
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Közúti alagút építése
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Villamos-alagút építése
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Villamos-alagút építése
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Egyirányú utak ki/be kapcsolása
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Építés/felszedés közötti váltás utaknál
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Építő/bontó üzemmód váltása a villamospályákhoz
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Építő/bontó üzemmód váltása a villamospályákhoz
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Válaszd ki a garázs helyzetét
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Válassz villamos-depó irányt
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Válassz villamos-depó irányt
 STR_1814_ROAD                                                   :Út
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Út lámpákkal
 STR_1816_TREE_LINED_ROAD                                        :Fával szegélyezett út
@@ -1894,8 +1891,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Több állomással/rakodóhellyel érintkezik
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Túl sok állomás/rakodóhely van ebben a városban
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Túl sok az állomás/rakodóhely
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Túl sok buszmegálló
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Túl sok kamion megálló
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Túl sok buszmegálló
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Túl sok kamion megálló
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Túl közel van egy másik állomáshoz/rakodóhelyhez
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Előbb le kell rombolnod a vasútállomást
@@ -1926,12 +1923,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} most már elfogad {STRING} és {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Buszmegálló helyzete
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Rakodóhely helyzete
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Utasszállító villamos irány
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Teherszállító-villamos irány
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Utasszállító villamos irány
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Teherszállító-villamos irány
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Előbb le kell rombolnod a buszmegállót
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Előbb le kell rombolnod a teherautó-rakodóhelyet
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Előbb le kell rombolni a villamos utasvárót
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Előbb le kell rombolni a tehervillamos-állomást
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Előbb le kell rombolni a villamos utasvárót
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Előbb le kell rombolni a tehervillamos-állomást
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} állomásai - {COMMA}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nincs -
@@ -1943,8 +1940,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}A vasútállomás hossza
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Buszmegálló helyzetének kiválasztása
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Teherautó-rakodó helyzetének kiválasztása
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Válassz villamos utasváró irányt
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Válassz tehervillamos-állomás irányt
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Válassz villamos utasváró irányt
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Válassz tehervillamos-állomás irányt
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}A fő nézetet az állomásra állítja
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Vélemény megmutatása az állomásról
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Az állomás nevének megváltoztatása
@@ -1966,7 +1963,7 @@
 STR_3069_BUOY                                                   :Bója
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bója van az útban
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...az állomás túl kiterjedt
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...csak egyféle vágánytípusú állomások lehetnek
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...csak egyféle vágánytípusú állomások lehetnek
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Több elem kiválasztásához tartsd lenyomva a CTRL-t
 
 STR_UNDEFINED                                                   :(nem definiált string)
@@ -2007,7 +2004,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Az új játék típusa
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Válassz egy pályát (zöld), előre beállított játékot (kék) vagy véletlenszerű új játékot
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Véletlenszerű új játék
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Magasságtérkép betöltése
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Magasságtérkép betöltése
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}...{STRING} van az útban
@@ -2248,10 +2245,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Gazdasági élet: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Vonatok fordítása: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katasztrófák: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}A városi tanács hozzáállása a területrendezéshez: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}A városi tanács hozzáállása a területrendezéshez: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Egyiksem
+STR_NONE                                                        :Egyiksem
 STR_NUM_VERY_LOW                                                :Nagyon kevés
 STR_6816_LOW                                                    :Kevés
 STR_6817_NORMAL                                                 :Normál
@@ -2289,9 +2286,9 @@
 STR_6836_OFF                                                    :Ki
 STR_6837_ON                                                     :Be
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Legjobb pontok
-STR_6839_PERMISSIVE                                             :Engedékeny
-STR_683A_TOLERANT                                               :Toleráns
-STR_683B_HOSTILE                                                :Ellenséges
+STR_PERMISSIVE                                                  :Engedékeny
+STR_TOLERANT                                                    :Toleráns
+STR_HOSTILE                                                     :Ellenséges
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2412,8 +2409,10 @@
 STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Védd le a vállalatodat jelszóval ha nem akarod hogy mások csatlakozzanak hozzá.
 STR_SET_COMPANY_PASSWORD                                        :{BLACK}Vállalati jelszó beállítása
 STR_COMPANY_PASSWORD_CANCEL                                     :{BLACK}Ne mentsd el a megadott jelszót
+STR_COMPANY_PASSWORD_OK                                         :{BLACK}Új jelszó megadása a céghez
 STR_COMPANY_PASSWORD_CAPTION                                    :{WHITE}Cég jelszó
 STR_MAKE_DEFAULT_COMPANY_PASSWORD                               :{BLACK}Alapértelmezett cég jelszó
+STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP                           :{BLACK}Ezen jelszó mint alapjelszó használata az új cégeknél
 STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Gazdasági visszaesés!{}{}A közgazdászok gazdasági válságtól tartanak!
 STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Vége a visszaesésnek!{}{}A kereskedelem fellendül, ami önbizalmat ad az iparnak, és erősödik a gazdaság!
 STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Kicsi/nagy ablakméret közötti váltás
@@ -2426,7 +2425,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Nem adhatsz el 25%-ot ebből a cégből...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% {COMPANY} tulajdona)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} céget felvásárolta {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Ez a cég egyelőre még nem rendelkezik részvényekkel...
+STR_PROTECTED                                                   :{WHITE}Ez a cég egyelőre még nem rendelkezik részvényekkel...
 
 STR_LIVERY_DEFAULT                                              :Alapértelmezett
 STR_LIVERY_STEAM                                                :Gőzmozdony
@@ -2439,6 +2438,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Utasszállító kocsi (gőz)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Utasszállító kocsi (dízeles)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Utasszállító kocsi (elektromos)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Utasszállító kocsi (Egysínű)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Utasszállító kocsi (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Tehervagon
 STR_LIVERY_BUS                                                  :Busz
 STR_LIVERY_TRUCK                                                :Teherautó
@@ -2733,17 +2734,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8806_GO_TO                                                  :Menj {STATION} állomásra
-STR_8807_GO_TO_TRANSFER                                         :Menj {STATION} (odaszállít és felvesz rakományt)
-STR_8808_GO_TO_UNLOAD                                           :Menj {STATION} (lepakol)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Menj {STATION} (odaszállít és üresen továbbmegy)
-STR_880A_GO_TO_LOAD                                             :Menj {STATION} (felpakol)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Menj {STATION} (odaszállít és teljes rakományra vár)
-STR_880C_GO_NON_STOP_TO                                         :Megállás nélkül menj {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Megállás nélkül menj {STATION} (odaszállít és felvesz rakományt)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Megállás nélkül menj {STATION} (lepakol)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Megállás nélkül menj {STATION} (odaszállít és üresen távozik)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Megállás nélkül menj {STATION} (felpakol)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Megállás nélkül menj {STATION} (odaszállít és teljes rakományra vár)
+STR_GO_TO_TRANSFER                                              :Menj {STATION} (odaszállít és felvesz rakományt)
+STR_8807_GO_TO_UNLOAD                                           :Menj {STATION} (lepakol)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Menj {STATION} (odaszállít és üresen továbbmegy)
+STR_8808_GO_TO_LOAD                                             :Menj {STATION} (felpakol)
+STR_GO_TO_TRANSFER_LOAD                                         :Menj {STATION} (odaszállít és teljes rakományra vár)
+STR_880A_GO_NON_STOP_TO                                         :Megállás nélkül menj {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Megállás nélkül menj {STATION} (odaszállít és felvesz rakományt)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Megállás nélkül menj {STATION} (lepakol)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Megállás nélkül menj {STATION} (odaszállít és üresen távozik)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Megállás nélkül menj {STATION} (felpakol)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Megállás nélkül menj {STATION} (odaszállít és teljes rakományra vár)
 STR_GO_TO_TRAIN_DEPOT                                           :Menj {TOWN} jármütelepre
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Javítsd a vonatot a {TOWN}i járműtelepen
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Menj megállás nélkül {TOWN}i járműtelepre
@@ -2847,7 +2848,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}A szállított rakomány részletei
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}A vonat kocsiainak részletei
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}A kocsik kapacitása
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Megmutatja a vonat teljes kapacitását, rakománytípusokra lebontva
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Megmutatja a vonat teljes kapacitását, rakománytípusokra lebontva
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Menetrend - kattints egy célpontra a kijelöléséhez
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Jelenlegi úticél átugrása, és a következő aktiválása. CTRL + kattintásra a kiválasztott úticélra ugrik
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}A kijelölt célpont törlése
@@ -2878,8 +2879,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nem fordíthatod meg a vonatot...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Márkanév megváltoztatása
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nem változtathatod meg a márkanevet...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A kiválasztott állomásnál a jármű a rakományt leteszi
-STR_886F_TRANSFER                                               :{BLACK}Elszállít
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}A kiválasztott állomásnál a jármű a rakományt leteszi
+STR_TRANSFER                                                    :{BLACK}Elszállít
 STR_CLEAR_TIME                                                  :{BLACK}Idő törlése
 STR_RESET_LATENESS                                              :{BLACK}Késés nullázása
 
@@ -2894,6 +2895,7 @@
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Új {STRING} elérhető!  -  {ENGINE}
 
 STR_CAN_T_SELL_DESTROYED_VEHICLE                                :{WHITE}A megsemmisült jármű nem eladható...
+STR_CAN_T_REFIT_DESTROYED_VEHICLE                               :{WHITE}Nem lehetséges a megsemmisült jármű átalakítása...
 
 STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}A jármű nem időzíthető
 STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}A járművek csak az állomáson várakozhatnak
@@ -2956,8 +2958,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Közúti jármű átnevezése
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Az emberek ünnepelnek . . .{}Megérkezett az első busz {STATION} állomásra!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Az emberek ünnepelnek . . .{}Megérkezett az első teherautó {STATION} állomásra!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}A lakosság ünnepel . . .{}Első utasszállító villamos megérkezett {STATION} állomásra!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}A lakosság ünnepel . . .{}Első teherszállító-villamos megérkezett {STATION} állomásra!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}A lakosság ünnepel . . .{}Első utasszállító villamos megérkezett {STATION} állomásra!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}A lakosság ünnepel . . .{}Első teherszállító-villamos megérkezett {STATION} állomásra!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Közúti baleset!{}A vezető meghalt a vonattal való ütközéskor
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Közúti baleset!{}{COMMA} ember meghalt a vonattal való ütközéskor
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nem fordíthatod vissza a járművet...
@@ -2966,7 +2968,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}A közúti jármű márkanevének megváltoztatása
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Márkanév megváltoztatása
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nem változtathatod meg a márkanevet...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Menj a  {TOWN}i garázsba
+STR_GO_TO_ROADVEH_DEPOT                                         :Menj a  {TOWN}i garázsba
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Javítsd a járművet a {TOWN}i garázsban
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Teherautó átalakítása hogy mást is tudjon szállítani
@@ -3215,6 +3217,7 @@
 STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Hiányzó GRF fájl(oka)t kikapcsoltam
 STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}Kritikus GRF fájl(ok) hiányoznak, a játék nem betölthető
 STR_NEWGRF_UNPAUSE_WARNING_TITLE                                :{YELLOW}Hiányzó GRF fájl(ok)
+STR_NEWGRF_UNPAUSE_WARNING                                      :{WHITE}A játék folytatásától az OpenTTD lefagyhat.{}Ne jelentsd be az ismétlődő lefagyásokat egyesével.{}Biztosan folytatni akarod?
 
 STR_CURRENCY_WINDOW                                             :{WHITE}Saját pénznem
 STR_CURRENCY_EXCHANGE_RATE                                      :{LTBLUE}Értékarány: {ORANGE}{CURRENCY} = £ {COMMA}
@@ -3339,6 +3342,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Mindenre, kivéve {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Maximális húzó erő: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generál
@@ -3366,7 +3375,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}A forrás térkép túlságosan nagy mértékű átméretezése nem javasolt. Folytatod mégis?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Városkinézeti figyelmeztetés
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}A "nincs több út" városkinézeti séma ellenjavallott. Biztosan folytatod a generálást?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Magasságtérkép neve:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Méret: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Térkép létrehozása...
@@ -3392,7 +3400,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Növeli eggyel a sima terep magasságát
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Sima terem magasságát változtatja
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Sima terep magassága:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}A kistérkép közepét a jelenlegi helyre állítja
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
@@ -3563,6 +3570,7 @@
 STR_BUILD_SIGNAL_ELECTRIC_EXIT_TIP                              :{BLACK}Kilépő-szignál (lámpa){}Ugyanúgy viselkedik mint az általános szignál, de megléte elengedhetetlenül szükséges a belépő- és a kombó-szignálok működéséhez.
 STR_BUILD_SIGNAL_ELECTRIC_COMBO_TIP                             :{BLACK}Kombó-szignál (lámpa){}A kombó szignál voltaképpen egy kilépő- és egy belépő-szignál egybeépítve. Segítségével előjelző szignálokból lehet nagy "fákat" kialakítani.
 STR_SIGNAL_CONVERT_TIP                                          :{BLACK}Szignál Átalakító{}Amikor ki van jelölve, egy meglévő szignálra kattintással átkonvertálja a kiválasztott szignál-típusra és -variációra, CTRL+kattintás a variációt fogja változtatni.
+STR_DRAG_SIGNALS_DENSITY_TIP                                    :{BLACK}Automata szignálsűrűség
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Automata szignáltávolság csökkentése
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Automata szignáltávolság növelése
 ########
--- a/src/lang/icelandic.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/icelandic.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -14,8 +14,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Sléttlendi nauðsynlegt
 STR_0008_WAITING                                                :{BLACK}Bíður: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (á leið frá
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Tekur við: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Tekur við: {GOLD}
 STR_000E                                                        :
@@ -273,9 +271,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Of mörg nöfn skilgreint
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Valið nafn er þegar í notkun
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -285,11 +283,11 @@
 STR_013C_CARGO                                                  :{BLACK}Farmur
 STR_013D_INFORMATION                                            :{BLACK}Upplýsingar
 STR_013E_CAPACITIES                                             :{BLACK}Burðargeta
-STR_013E_TOTAL_CARGO                                            :{BLACK}Heildarfarmur
+STR_TOTAL_CARGO                                                 :{BLACK}Heildarfarmur
 STR_013F_CAPACITY                                               :{BLACK}Burðargeta: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Burðargeta: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Farmur alls (burðargeta) þessarar lestar:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Farmur alls (burðargeta) þessarar lestar:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nýr leikur
 STR_0141_LOAD_GAME                                              :{BLACK}Opna leik
@@ -297,12 +295,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Fjölspilun
 STR_SCENARIO_EDITOR                                             :{BLACK}Landslagsgerð
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kortastærð:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Stillingar
@@ -729,7 +721,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Eyða þessum bæ algjörlega
 STR_0292_SAVE_SCENARIO                                          :Vista kort
 STR_0293_LOAD_SCENARIO                                          :Opna kort
-STR_LOAD_HEIGHTMAP                                              :Hlaða hæðarkorti
+STR_MENU_LOAD_HEIGHTMAP                                         :Hlaða hæðarkorti
 STR_0294_QUIT_EDITOR                                            :Hætta í kortagerð
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Hætta
@@ -768,9 +760,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Stillingar
-STR_02C5_DIFFICULTY_SETTINGS                                    :Erfiðleikastig
-STR_02C7_CONFIG_PATCHES                                         :Viðbætur
+STR_02C4_GAME_OPTIONS                                           :Stillingar
+STR_02C6_DIFFICULTY_SETTINGS                                    :Erfiðleikastig
+STR_MENU_CONFIG_PATCHES                                         :Viðbætur
 STR_NEWGRF_SETTINGS                                             :NewGRF stillingar
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Bæjarnöfn sýnd
@@ -868,8 +860,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Vistun er enn í gangi,{}vinsamlegast bíddu á meðan hún klárst!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Velja 'Ezy gata' listann
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Ensk (Upphafleg)
@@ -1698,8 +1690,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Tengist fleiri en einni annarri stöð
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Of margar stöðvar/lestunarsvæði í þessum bæ
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Of margar stöðvar/lestunarsvæði
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Of margar strætisvagnastöðvar
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Of margar vörubílastöðvar
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Of margar strætisvagnastöðvar
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Of margar vörubílastöðvar
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Of nálægt annarri stöð/lestunarsvæði
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Þarf fyrst að rífa lestarstöð
@@ -1764,7 +1756,7 @@
 STR_3069_BUOY                                                   :Bauja
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bauja fyrir
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stöð of dreyfð
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...óregluleg lögun lestarstöðva bönnuð
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...óregluleg lögun lestarstöðva bönnuð
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Haltu CTRL inni til að velja fleiri en eitt
 
 STR_UNDEFINED                                                   :(óskilgreindur strengur)
@@ -1799,7 +1791,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Velja tegund leiks
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Velja landslag (grænt), forstilltan leik (blátt) eða handahófskenndan leik
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Búa til nýjan leik
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Hlaða hæðakorti
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Hlaða hæðakorti
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} er fyrir
@@ -1993,10 +1985,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Efnahagur: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Snúningur lestar: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Hrakföll: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Afstaða borgaryfirvalda til landmótunar: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Afstaða borgaryfirvalda til landmótunar: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Engin
+STR_NONE                                                        :Engin
 STR_6816_LOW                                                    :Fáir
 STR_6817_NORMAL                                                 :Miðlungs
 STR_6818_HIGH                                                   :Margir
@@ -2033,9 +2025,9 @@
 STR_6836_OFF                                                    :Ekki á
 STR_6837_ON                                                     :Á
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Sýna topplistann
-STR_6839_PERMISSIVE                                             :Eftirgefin
-STR_683A_TOLERANT                                               :Umburðarlynd
-STR_683B_HOSTILE                                                :Fjandsamleg
+STR_PERMISSIVE                                                  :Eftirgefin
+STR_TOLERANT                                                    :Umburðarlynd
+STR_HOSTILE                                                     :Fjandsamleg
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2167,7 +2159,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Get ekki selt 25% hlut í þessu fyrirtæki...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% í eigu {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} hefur verið yfirtekið af {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Þetta fyrirtæki er ekki nógu gamalt til að versla með hluti ...
+STR_PROTECTED                                                   :{WHITE}Þetta fyrirtæki er ekki nógu gamalt til að versla með hluti ...
 
 STR_LIVERY_DEFAULT                                              :Aðal litaskema
 STR_LIVERY_STEAM                                                :Gufuvagnar
@@ -2472,17 +2464,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Fer til {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Fer til {STATION} (Yfirfæra og ferma)
-STR_8808_GO_TO_UNLOAD                                           :Fer til {STATION} (Afferma)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Fer til {STATION} (Yfirfæra og yfirgefa tóm)
-STR_880A_GO_TO_LOAD                                             :Fer til {STATION} (Fullferma)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Fer til {STATION} (Yfirfæra og fullferma)
-STR_880C_GO_NON_STOP_TO                                         :Fer viðstöðulaust til {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Fer viðstöðulaust til {STATION} (Yfirfæra og ferma)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Fer viðstöðulaust til {STATION} (Afferma)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Fer viðstöðulaust til {STATION} (Yfirfæra og yfirgefa tóm)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Fer viðstöðulaust til {STATION} (Fullferma)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Fer viðstöðulaust til {STATION} (Yfirfæra og fullferma)
+STR_GO_TO_TRANSFER                                              :Fer til {STATION} (Yfirfæra og ferma)
+STR_8807_GO_TO_UNLOAD                                           :Fer til {STATION} (Afferma)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Fer til {STATION} (Yfirfæra og yfirgefa tóm)
+STR_8808_GO_TO_LOAD                                             :Fer til {STATION} (Fullferma)
+STR_GO_TO_TRANSFER_LOAD                                         :Fer til {STATION} (Yfirfæra og fullferma)
+STR_880A_GO_NON_STOP_TO                                         :Fer viðstöðulaust til {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Fer viðstöðulaust til {STATION} (Yfirfæra og ferma)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Fer viðstöðulaust til {STATION} (Afferma)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Fer viðstöðulaust til {STATION} (Yfirfæra og yfirgefa tóm)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Fer viðstöðulaust til {STATION} (Fullferma)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Fer viðstöðulaust til {STATION} (Yfirfæra og fullferma)
 STR_GO_TO_TRAIN_DEPOT                                           :Fer til {TOWN} Lestaskýli
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Viðgerð í {TOWN} Lestar Byggingu
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Fer viðstöðulaust til {TOWN} Lestar Byggingar
@@ -2574,7 +2566,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Sýna nánari upplýsingar um núverandi farm
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Sýna nánari upplýsingar um lestir
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Sýna burðargetu hvers farartækis
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Sýna heildar burðargetu lestar, raðar eftir tegund farms
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Sýna heildar burðargetu lestar, raðar eftir tegund farms
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Áætlun - smelltu til að velja stöð. CTRL + músartakki færir sjónarhorn að stöðinni
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eyða valdri skipun
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gera valda skipun viðstöðulausa
@@ -2600,8 +2592,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Get ekki snúið lest við...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Endurskíra lestargerð
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Get ekki endurskírt lestargerð...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Lætur lestina losa farminn á valinni skipun
-STR_886F_TRANSFER                                               :{BLACK}Yfirfæra
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Lætur lestina losa farminn á valinni skipun
+STR_TRANSFER                                                    :{BLACK}Yfirfæra
 
 STR_TRAIN_STOPPING                                              :{RED}Stöðva
 STR_TRAIN_STOPPING_VEL                                          :{RED}Stöðva, {VELOCITY}
@@ -2664,7 +2656,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Endurnefna tegund bifreiðar
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Endurnefna tegund bifreiðar
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE} Get ekki endurnefnat tegund bifreiðar...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Fara í {TOWN} bifreiðaskýli
+STR_GO_TO_ROADVEH_DEPOT                                         :Fara í {TOWN} bifreiðaskýli
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Skoða í  {TOWN} bifreiðaskýli
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Breyta bifreið svo hún flytji annan farm
@@ -3041,7 +3033,6 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Breyta upphafsári
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Stærð hæðarlínukorts
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Ekki er mælt með því að breyta stærð grunnkorts of mikið. Viltu halda áfram?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nafn hæðarlínukorts:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Stærð: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Skapa heim...
@@ -3067,7 +3058,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Hækka slétt land upp um eitt þrep
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Breyta hæð á sléttu landi
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Hæð slétts lands yfir sjávarmáli
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Miðja heimskort á núverandi staðsetningu
 
--- a/src/lang/italian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/italian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Richiesto terreno pianeggiante
 STR_0008_WAITING                                                :{BLACK}In attesa: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (in viaggio da
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} in viaggio da {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accetta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accetta: {GOLD}
 STR_000E                                                        :
@@ -170,7 +169,7 @@
 STR_00C7_QUIT                                                   :{WHITE}Esci
 STR_00C8_YES                                                    :{BLACK}Sì
 STR_00C9_NO                                                     :{BLACK}No
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Si è sicuri di voler abbandonare la partita e tornare a {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Si è sicuri di voler uscire da OpenTTD e tornare a {STRING}?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -276,9 +275,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Troppi nomi definiti
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Il nome scelto è già in uso
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +288,11 @@
 STR_013C_CARGO                                                  :{BLACK}Carico
 STR_013D_INFORMATION                                            :{BLACK}Informazioni
 STR_013E_CAPACITIES                                             :{BLACK}Capienza
-STR_013E_TOTAL_CARGO                                            :{BLACK}Carico totale
+STR_TOTAL_CARGO                                                 :{BLACK}Carico totale
 STR_013F_CAPACITY                                               :{BLACK}Capacità: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacità: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Capacità di carico totale di questo treno:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Capacità di carico totale di questo treno:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nuova partita
 STR_0141_LOAD_GAME                                              :{BLACK}Carica partita
@@ -301,12 +300,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multigiocatore
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor di scenari
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Dimensione mappa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opzioni di gioco
@@ -734,11 +727,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Piazza trasmettitore
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Definisce un'area desertica.{}Fare clic tenendo premuto CTRL per rimuoverla
 STR_CREATE_LAKE                                                 :{BLACK}Definisce una zona d'acqua.{}Costruisce un canale, a meno che non si tenga premuto CTRL mentre si fa clic al livello del mare, provocando l'allagamento dei dintorni
+STR_CREATE_RIVER                                                :{BLACK}Crea un fiume
 STR_0290_DELETE                                                 :{BLACK}Elimina
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Elimina completamente questa città
 STR_0292_SAVE_SCENARIO                                          :Salva scenario
 STR_0293_LOAD_SCENARIO                                          :Carica scenario
-STR_LOAD_HEIGHTMAP                                              :Carica heightmap
+STR_MENU_LOAD_HEIGHTMAP                                         :Carica heightmap
 STR_0294_QUIT_EDITOR                                            :Esci dall'editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Esci
@@ -778,9 +772,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opzioni gioco
-STR_02C5_DIFFICULTY_SETTINGS                                    :Impostazioni difficoltà
-STR_02C7_CONFIG_PATCHES                                         :Configura patch
+STR_02C4_GAME_OPTIONS                                           :Opzioni gioco
+STR_02C6_DIFFICULTY_SETTINGS                                    :Impostazioni difficoltà
+STR_MENU_CONFIG_PATCHES                                         :Configura patch
 STR_NEWGRF_SETTINGS                                             :Impostazioni NewGRF
 STR_TRANSPARENCY_OPTIONS                                        :Opzioni trasparenza
 STR_GAMEOPTMENU_0A                                              :
@@ -880,8 +874,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Salvataggio in corso,{}prego attenderne la fine!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Seleziona il programma 'Musica ezy street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglesi (originali)
@@ -1076,7 +1070,7 @@
 STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Rinnova solo se disponibile il fondo minimo di {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Durata dei messaggi d'errore: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Mostra la popolazione di una città nell'etichetta del nome: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Alberi invisibili (con edifici trasparenti attivati): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Alberi invisibili: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Generatore terreno: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Originale
@@ -1656,42 +1650,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Bisogna rimuovere la strada prima
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Lavori stradali in corso
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Costruzione strade
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Costruzione tranvie
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Costruzione tranvie
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Seleziona ponte stradale
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}...le strade a senso unico non possono avere raccordi
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Impossibile costruire la strada qui...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Impossibile costruire la tranvia qui...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Impossibile costruire la tranvia qui...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Impossibile rimuovere la strada da qui...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Impossibile rimuovere la tranvia da qui...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Impossibile rimuovere la tranvia da qui...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientamento deposito
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientamento deposito
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientamento deposito
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Impossibile costruire il deposito qui...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Impossibile costruire il deposito qui...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Impossibile costruire il deposito qui...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Impossibile costruire la stazione degli autobus qui...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Impossibile costruire la stazione dei camion qui...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Impossibile costruire la stazione tram passeggeri...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Impossibile costruire la stazione tram merci...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Impossibile costruire la stazione tram passeggeri...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Impossibile costruire la stazione tram merci...
 STR_180A_ROAD_CONSTRUCTION                                      :Costruzione strade
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Costruzione tranvie
+STR_TRAMWAY_CONSTRUCTION                                        :Costruzione tranvie
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Costruisce una sezione di strada
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Costruisce sezioni di strada usando la modalità automatica
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Costruisce una sezione di tranvia
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Costruisce una sezione di tranvia
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Costruisce sezioni di tranvia usando la modalità automatica
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Costruisce un deposito automezzi (per costruire e manutenere i veicoli)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Costruisce un deposito tranviario (per costruire e manutenere i veicoli)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Costruisce un deposito tranviario (per costruire e manutenere i veicoli)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Costruisce una stazione degli autobus
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Costruisce un'area di carico per camion
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Costruisce una stazione tram passeggeri
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Costruisce una stazione tram merci
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Costruisce una stazione tram passeggeri
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Costruisce una stazione tram merci
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Costruisce un ponte stradale
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Costruisce un ponte tranviario
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Costruisce un ponte tranviario
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Costruisce un tunnel stradale
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Costruisce un tunnel tranviario
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Costruisce un tunnel tranviario
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Attiva/disattiva strade a senso unico
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Seleziona fra costruzione/rimozione di strade
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Seleziona fra costruzione/rimozione di tranvie
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Seleziona fra costruzione/rimozione di tranvie
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Seleziona l'orientamento del deposito automezzi
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Seleziona l'orientamento del deposito tranviario
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Seleziona l'orientamento del deposito tranviario
 STR_1814_ROAD                                                   :Strada
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Strada con lampioni
 STR_1816_TREE_LINED_ROAD                                        :Strada alberata
@@ -1834,8 +1828,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Farebbe parte di due o più stazioni/aree di carico
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Troppe stazioni/aree di carico in questa città
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Troppe stazioni/aree di carico
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Troppe stazioni degli autobus
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Troppe aree di carico per camion
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Troppe stazioni degli autobus
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Troppe aree di carico per camion
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Troppo vicino ad un'altra stazione/area di carico
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Bisogna demolire la stazione ferroviaria prima
@@ -1866,12 +1860,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} adesso accetta {STRING} e {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientamento stazione
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orient. area carico
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orient. stazione tram passeggeri
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orient. stazione tram merci
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orient. stazione tram passeggeri
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orient. stazione tram merci
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Bisogna demolire la stazione degli autobus prima
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Bisogna demolire l'area di carico per camion prima
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Bisogna demolire la stazione tram passeggeri prima
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Bisogna demolire la stazione tram merci prima
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Bisogna demolire la stazione tram passeggeri prima
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Bisogna demolire la stazione tram merci prima
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stazion{P 2 e i}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nessuna -
@@ -1883,8 +1877,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Seleziona la lunghezza della stazione ferroviaria
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Seleziona l'orientamento della stazione degli autobus
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Seleziona l'orientamento dell'area di carico per camion
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Seleziona l'orientamento della stazione tram passeggeri
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Seleziona l'orientamento della stazione tram merci
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Seleziona l'orientamento della stazione tram passeggeri
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Seleziona l'orientamento della stazione tram merci
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centra la visuale principale sulla posizione della stazione
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Mostra la valutazione della stazione
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Cambia il nome della stazione
@@ -1906,7 +1900,7 @@
 STR_3069_BUOY                                                   :Boa
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boa di mezzo
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stazione troppo estesa
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...stazioni non uniformi disabilitate
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...stazioni non uniformi disabilitate
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Tenere premuto CTRL per scegliere più di un oggetto
 
 STR_UNDEFINED                                                   :(stringa non definita)
@@ -1947,7 +1941,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Seleziona tipo partita
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Seleziona uno scenario (verde), una partita pre-impostata (blu), o una nuova partita casuale
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Crea partita casuale
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Carica heightmap
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Carica heightmap
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} di mezzo
@@ -2151,10 +2145,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economia: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Inversione treni: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Disastri: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Atteggiamento della città in merito alle modifiche: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Atteggiamento della città in merito alle modifiche: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Nessuno
+STR_NONE                                                        :Nessuno
 STR_NUM_VERY_LOW                                                :Molto basso
 STR_6816_LOW                                                    :Basso
 STR_6817_NORMAL                                                 :Normale
@@ -2192,9 +2186,9 @@
 STR_6836_OFF                                                    :No
 STR_6837_ON                                                     :Si
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Mostra punteggi migliori
-STR_6839_PERMISSIVE                                             :Permissivo
-STR_683A_TOLERANT                                               :Tollerante
-STR_683B_HOSTILE                                                :Ostile
+STR_PERMISSIVE                                                  :Permissivo
+STR_TOLERANT                                                    :Tollerante
+STR_HOSTILE                                                     :Ostile
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2331,7 +2325,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Impossibile vendere il 25% delle azioni...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% posseduto dalla {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}La {COMPANY} è stata rilevata dalla {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Questa compagnia non è abbastanza vecchia per scambiare azioni...
+STR_PROTECTED                                                   :{WHITE}Questa compagnia non è abbastanza vecchia per scambiare azioni...
 
 STR_LIVERY_DEFAULT                                              :Livrea standard
 STR_LIVERY_STEAM                                                :Locomotiva a vapore
@@ -2344,6 +2338,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Carrozza passeggeri (V)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Carrozza passeggeri (D)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Carrozza passeggeri (E)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Carrozza passeggeri (MR)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Carrozza passeggeri (ML)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagone merci
 STR_LIVERY_BUS                                                  :Autobus
 STR_LIVERY_TRUCK                                                :Camion
@@ -2638,17 +2634,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Vai a {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Vai a {STATION} (Trasferisci e carica merce)
-STR_8808_GO_TO_UNLOAD                                           :Vai a {STATION} (Scarica)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Vai a {STATION} (Trasferisci e parti vuoto)
-STR_880A_GO_TO_LOAD                                             :Vai a {STATION} (Carica)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Vai a {STATION} (Trasferisci e aspetta carico completo)
-STR_880C_GO_NON_STOP_TO                                         :Vai non-stop a {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Vai non-stop a {STATION} (Trasferisci e carica merce)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Vai non-stop a {STATION} (Scarica)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Vai non-stop a {STATION} (Trasferisci e parti vuoto)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Vai non-stop a {STATION} (Carica)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Vai non-stop a {STATION} (Trasferisci e aspetta carico completo)
+STR_GO_TO_TRANSFER                                              :Vai a {STATION} (Trasferisci e carica merce)
+STR_8807_GO_TO_UNLOAD                                           :Vai a {STATION} (Scarica)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Vai a {STATION} (Trasferisci e parti vuoto)
+STR_8808_GO_TO_LOAD                                             :Vai a {STATION} (Carica)
+STR_GO_TO_TRANSFER_LOAD                                         :Vai a {STATION} (Trasferisci e aspetta carico completo)
+STR_880A_GO_NON_STOP_TO                                         :Vai non-stop a {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Vai non-stop a {STATION} (Trasferisci e carica merce)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Vai non-stop a {STATION} (Scarica)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Vai non-stop a {STATION} (Trasferisci e parti vuoto)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Vai non-stop a {STATION} (Carica)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Vai non-stop a {STATION} (Trasferisci e aspetta carico completo)
 STR_GO_TO_TRAIN_DEPOT                                           :Vai al Deposito ferroviario di {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Manutenzione al Deposito di {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Vai non-stop al Deposito ferroviario di {TOWN}
@@ -2752,7 +2748,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Mostra i dettagli sul carico trasportato
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Mostra i dettagli sui veicoli che compongono il treno
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostra la capienza di ogni veicolo
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostra la capacità totale del treno, suddivisa per tipo di carico
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Mostra la capacità totale del treno, suddivisa per tipo di carico
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista degli ordini - fare clic su un ordine per selezionarlo e CTRL+clic per portarsi sulla stazione corrispondente
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Salta l'ordine corrente e inizia il successivo. Tenere premuto CTRL per saltare all'ordine selezionato
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Elimina l'ordine selezionato
@@ -2783,8 +2779,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Impossibile invertire la direzione del treno...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Rinomina tipo di veicolo ferroviario
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Impossibile rinominare il tipo di veicolo ferroviario...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Fa in modo che l'ordine selezionato forzi il veicolo a trasferire il carico
-STR_886F_TRANSFER                                               :{BLACK}Trasferisci
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Fa in modo che l'ordine selezionato forzi il veicolo a trasferire il carico
+STR_TRANSFER                                                    :{BLACK}Trasferisci
 STR_CLEAR_TIME                                                  :{BLACK}Elimina tempo
 STR_RESET_LATENESS                                              :{BLACK}Azzera ritardo
 
@@ -2862,8 +2858,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Rinomina l'automezzo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo autobus arriva a {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo camion arriva a {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo tram passeggeri arriva a {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo tram merci arriva a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo tram passeggeri arriva a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo tram merci arriva a {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Incidente stradale!{}Il conducente muore nell'incendio seguito alla collisione con un treno
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Incidente stradale!{}In {COMMA} muoiono nell'incendio seguito alla collisione con un treno
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Impossibile far girare il veicolo...
@@ -2872,7 +2868,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Rinomina il tipo di automezzo
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Rinomina tipo automezzo
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Impossibile rinominare il tipo di automezzo...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Vai al Deposito automezzi di {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Vai al Deposito automezzi di {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Manutenzione al Deposito di {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Riadatta l'automezzo per trasportare un tipo di carico differente
@@ -3246,6 +3242,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Tutto tranne {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Sforzo di trazione massimo: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Genera
@@ -3273,7 +3275,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Ridimensionare di molto l'heightmap sorgente non è consigliabile. Continuare con la generazione?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Avviso sulla disposizione delle strade
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}L'opzione "Nessuna nuova strada" non è raccomandata. Proseguire con la generazione?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nome heightmap:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Dim.: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generazione del mondo...
@@ -3299,7 +3300,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Sposta in su di uno l'altezza del terreno pianeggiante
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Cambia l'altezza del terreno pianeggiante
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altezza terreno pianeggiante:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centra la minimappa sulla posizione corrente
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/japanese.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/japanese.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}平地が必要です
 STR_0008_WAITING                                                :{BLACK}到着待ち:{WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}(原点:
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({1:STATION}から運送途中の{0:SHORTCARGO})
 STR_000C_ACCEPTS                                                :{BLACK}受入れ貨物:{WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}受入れ貨物:{GOLD}
 STR_000E                                                        :
@@ -274,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}名称定義数の制限を超えています
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}指定した名称はすでに使用中です
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}貨物
 STR_013D_INFORMATION                                            :{BLACK}情報
 STR_013E_CAPACITIES                                             :{BLACK}容量
-STR_013E_TOTAL_CARGO                                            :{BLACK}合計貨物
+STR_TOTAL_CARGO                                                 :{BLACK}合計貨物
 STR_013F_CAPACITY                                               :{BLACK}容量:{LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}容量:{LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}この列車の貨物最大容量:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}この列車の貨物最大容量:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}新しいゲーム
 STR_0141_LOAD_GAME                                              :{BLACK}ゲームを開く
@@ -299,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}多人数プレイ
 STR_SCENARIO_EDITOR                                             :{BLACK}シナリオエディタ
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}地図のサイズ:
 STR_BY                                                          :{BLACK}x
 STR_0148_GAME_OPTIONS                                           :{BLACK}ゲームの設定
@@ -732,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}送信機を建設します
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}砂漠を作成します。{}Control+クリックすると消去します
 STR_CREATE_LAKE                                                 :{BLACK}。水を作成します。{}通常の使用時に運河を建設します。Controlをクリックすると、海水位にある地域が浸水できます。
+STR_CREATE_RIVER                                                :{BLACK}川を造る
 STR_0290_DELETE                                                 :{BLACK}破壊
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}この町を完全に破壊します
 STR_0292_SAVE_SCENARIO                                          :シナリオを保存
 STR_0293_LOAD_SCENARIO                                          :シナリオを開く
-STR_LOAD_HEIGHTMAP                                              :ハイトマップを開く
+STR_MENU_LOAD_HEIGHTMAP                                         :ハイトマップを開く
 STR_0294_QUIT_EDITOR                                            :エディタを終了
 STR_0295                                                        :
 STR_0296_QUIT                                                   :終了
@@ -776,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :ゲームの設定
-STR_02C5_DIFFICULTY_SETTINGS                                    :難易度の設定
-STR_02C7_CONFIG_PATCHES                                         :パッチの設定
+STR_02C4_GAME_OPTIONS                                           :ゲームの設定
+STR_02C6_DIFFICULTY_SETTINGS                                    :難易度の設定
+STR_MENU_CONFIG_PATCHES                                         :パッチの設定
 STR_NEWGRF_SETTINGS                                             :NewGRFの設定
 STR_TRANSPARENCY_OPTIONS                                        :半透明設定
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}ゲームを保存しています{}完了してからしばらくお待ちください!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}'Ezy Street 式の音楽'のプレイリストを選択します
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :イギリス
@@ -1654,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}先に道路を破壊しなければなりません
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}道路工事中
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}道路の建設
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}路面電車線の建設
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}路面電車線の建設
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}道路橋を選択
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}...一方通行路上にジャンクションが建設できません
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}ここに道路が建設できません...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}ここに路面電車線が建設できません...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}ここに路面電車線が建設できません...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}ここから道路が破壊できません...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}ここから路面電車線が破壊できません...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}ここから路面電車線が破壊できません...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}車庫の配置
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}路面電車庫の配置
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}路面電車庫の配置
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}ここに車庫が建設できません...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}ここに路面電車庫が建設できません...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}乗客用路面電車駅が建設できません...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}貨物用路面電車駅が建設できません...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}乗客用路面電車駅が建設できません...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}貨物用路面電車駅が建設できません...
 STR_180A_ROAD_CONSTRUCTION                                      :道路の建設
-STR_180A_TRAMWAY_CONSTRUCTION                                   :路面電車線の建設
+STR_TRAMWAY_CONSTRUCTION                                        :路面電車線の建設
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}道路の部分を建設します
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}自動道路建設モードを用いて道路を建設
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}路面電車線を建設します
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}路面電車線を建設します
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}自動路面電車線建設モードを用いて路面電車線を建設
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}(バス、トラックの建設、整備のための)車庫を建設します
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}(路面電車の購入や修理のため)路面電車庫を建設します
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}(路面電車の購入や修理のため)路面電車庫を建設します
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}バス停を建設します
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}荷役所を建設します
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}乗客用路面電車駅を建設
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}貨物用路面電車駅を建設
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}乗客用路面電車駅を建設
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}貨物用路面電車駅を建設
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}道路の端を建設します
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}路面電車用橋を建設
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}路面電車用橋を建設
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}道路のトンネルを建設します
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}路面電車用トンネルを建設
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}路面電車用トンネルを建設
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}一方通行の道路を入/切
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}道路の建設/破壊を切り替えます
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}路面電車線の建設/破壊を切り替えます
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}路面電車線の建設/破壊を切り替えます
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}車庫の配置の選択
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}路面電車庫の配置を選択
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}路面電車庫の配置を選択
 STR_1814_ROAD                                                   :道路
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :街路照明のある道路
 STR_1816_TREE_LINED_ROAD                                        :並木道
@@ -1832,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}複数のすでに存在している駅/バス停/荷役所に接しています
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}町内に駅/バス停/荷役所が多すぎます
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}駅/バス停/荷役所が多すぎます
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}バス停が多すぎます
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}荷役所が多すぎます
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}バス停が多すぎます
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}荷役所が多すぎます
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}他の駅/荷役所に近すぎます
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}先に駅を破壊しなければなりません
@@ -1864,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION}は今後{STRING}と{STRING}が受入れます
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}バス停の配置
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}荷役所の配置
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}乗客用路面電車駅の配置
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}貨物用路面電車駅の配置
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}乗客用路面電車駅の配置
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}貨物用路面電車駅の配置
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}先にバス停を破壊しなければなりません
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}先にバス停を破壊しなければなりません
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}先に乗客用路面電車駅を破壊しなければなりません
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}先に貨物用路面電車駅を破壊しなければなりません
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}先に乗客用路面電車駅を破壊しなければなりません
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}先に貨物用路面電車駅を破壊しなければなりません
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA}軒の駅
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- なし -
@@ -1881,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}駅のホームの長さを選択します
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}バス停の配置を選択します
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}荷役所の配置を選択します
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}乗客用路面電車駅の配置を選択
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}貨物用路面電車駅の配置を選択
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}乗客用路面電車駅の配置を選択
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}貨物用路面電車駅の配置を選択
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}主の画面を駅の場所に移動します
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}駅の評価を表示します
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}駅名を変更します
@@ -1904,7 +1898,7 @@
 STR_3069_BUOY                                                   :ブイ
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...ブイがあります
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...駅が広すぎます
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...不統一の駅が建設できません
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...不統一の駅が建設できません
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}複数の項目を選択するにはcontrolを押します
 
 STR_UNDEFINED                                                   :(不定義)
@@ -1945,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}新規ゲーム種類の選択
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}シナリオ(緑)、プリセットゲーム(青)もしくは新規ランダムゲームを選択します
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :新規ランダムゲームを作成
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}ハイトマップを開く
+STR_LOAD_HEIGHTMAP                                              :{WHITE}ハイトマップを開く
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING}があります
@@ -2149,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}経済の傾向:{ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}列車の反転:{ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}災害:{ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}町議会の地域の再構築に関わる姿勢:{ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}町議会の地域の再構築に関わる姿勢:{ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :なし
+STR_NONE                                                        :なし
 STR_NUM_VERY_LOW                                                :特に低い
 STR_6816_LOW                                                    :低い
 STR_6817_NORMAL                                                 :通常
@@ -2190,9 +2184,9 @@
 STR_6836_OFF                                                    :切
 STR_6837_ON                                                     :入
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}ハイスコアを表示
-STR_6839_PERMISSIVE                                             :寛大
-STR_683A_TOLERANT                                               :寛容
-STR_683B_HOSTILE                                                :対立
+STR_PERMISSIVE                                                  :寛大
+STR_TOLERANT                                                    :寛容
+STR_HOSTILE                                                     :対立
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}この会社の25%の株が販売できません...
 STR_707D_OWNED_BY                                               :{WHITE}({1:COMPANY}が{0:COMMA}%株式保有)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY}が{COMPANY}に買収!
-STR_7080_PROTECTED                                              :{WHITE}まだ早いため、この会社は株式取引できません...
+STR_PROTECTED                                                   :{WHITE}まだ早いため、この会社は株式取引できません...
 
 STR_LIVERY_DEFAULT                                              :通常のカラースキーム
 STR_LIVERY_STEAM                                                :蒸気機関車
@@ -2342,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :客車(蒸気動)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :客車(ディーゼル動)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :客車(電動)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :モノレール用乗客車
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :次期浮上式電車用乗客車
 STR_LIVERY_FREIGHT_WAGON                                        :貨車
 STR_LIVERY_BUS                                                  :バス
 STR_LIVERY_TRUCK                                                :トラック
@@ -2636,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :{STATION}へ行く
-STR_8807_GO_TO_TRANSFER                                         :{STATION}へ行く(運搬して貨物を積む)
-STR_8808_GO_TO_UNLOAD                                           :{STATION}へ行く(貨物を降ろす)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :{STATION}へ行く(運搬して空そのまま次へ行く)
-STR_880A_GO_TO_LOAD                                             :{STATION}へ行く(全負荷)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :{STATION}へ行く(運搬して全負荷まで待つ)
-STR_880C_GO_NON_STOP_TO                                         :{STATION}へ直行で行く
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :{STATION}へ直行で行く(運搬して貨物を積む)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :{STATION}へ直行で行く(貨物を降ろす)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :{STATION}へ直行で行く(運搬して空そのまま次へ行く)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :{STATION}へ直行で行く(全負荷)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :{STATION}へ直行で行く(運搬して全負荷まで待つ)
+STR_GO_TO_TRANSFER                                              :{STATION}へ行く(運搬して貨物を積む)
+STR_8807_GO_TO_UNLOAD                                           :{STATION}へ行く(貨物を降ろす)
+STR_GO_TO_TRANSFER_UNLOAD                                       :{STATION}へ行く(運搬して空そのまま次へ行く)
+STR_8808_GO_TO_LOAD                                             :{STATION}へ行く(全負荷)
+STR_GO_TO_TRANSFER_LOAD                                         :{STATION}へ行く(運搬して全負荷まで待つ)
+STR_880A_GO_NON_STOP_TO                                         :{STATION}へ直行で行く
+STR_GO_TO_NON_STOP_TRANSFER                                     :{STATION}へ直行で行く(運搬して貨物を積む)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :{STATION}へ直行で行く(貨物を降ろす)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :{STATION}へ直行で行く(運搬して空そのまま次へ行く)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :{STATION}へ直行で行く(全負荷)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :{STATION}へ直行で行く(運搬して全負荷まで待つ)
 STR_GO_TO_TRAIN_DEPOT                                           :{TOWN}電車庫へ回送
 STR_SERVICE_AT_TRAIN_DEPOT                                      :{TOWN}電車庫で修理
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :{TOWN}電車庫へ直行で回送
@@ -2750,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}運送している貨物の情報を表示します
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}鉄道車両の情報を表示します
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}各車両の容量を表示します
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}貨物種類に並べ替えて列車の合計容量を表示します
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}貨物種類に並べ替えて列車の合計容量を表示します
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}指令リスト - 指令を選択するにはクリックします
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}実行中の指令をスキップして、次へ移動します。Control クリックすると、選択した指令へ移動します。
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}選択した指令を削除します
@@ -2781,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}列車が逆転されられません...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}鉄道車両の名称を変更
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}鉄道車両の名称が変更できません...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}選択した指令に貨物の降ろすことを含みます
-STR_886F_TRANSFER                                               :{BLACK}運搬
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}選択した指令に貨物の降ろすことを含みます
+STR_TRANSFER                                                    :{BLACK}運搬
 STR_CLEAR_TIME                                                  :{BLACK}時間を消去
 STR_RESET_LATENESS                                              :{BLACK}遅刻回数をリセット
 
@@ -2860,8 +2856,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}町民の祝賀{}初乗客用路面電車が{STATION}駅に到着!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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}車両が逆転させられません...
@@ -2870,7 +2866,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :{TOWN}車庫へ回送
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :{TOWN}車庫で修理
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}他の貨物の種類を運送するに道路車両を再装備します
@@ -3244,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :{GOLD}を除いてすべて
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}最大牽引力:{GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}作成
@@ -3271,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}ソース地図をリサイズしすぎることはお勧めしません。地形作成を続けてもよろしいですか?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}道路網の警告
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}「道路網を拡大せず」という道路網をおすすめしません。続けてもよろしいですか?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}ハイトマップ名:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}サイズ:{ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}地形作成中...
@@ -3297,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}平地の高さを上げる
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}平地の高さを変更
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}平地の土地の高さ:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}予約地図を現在の場所に移動します
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/korean.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/korean.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}평지가 필요합니다!
 STR_0008_WAITING                                                :{BLACK}대기: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (이것은
-STR_000B                                                        :{YELLOW}{STATION}에서 옴)
 STR_000C_ACCEPTS                                                :{BLACK}받음: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}받음: {GOLD}
 STR_000E                                                        :
@@ -275,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}더이상 이름을 설정할 수 없습니다!
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}이미 사용중인 이름입니다!
 
-STR_0133_WINDOWS                                                :윈도우
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :윈도우
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}화물
 STR_013D_INFORMATION                                            :{BLACK}정보
 STR_013E_CAPACITIES                                             :{BLACK}수용량
-STR_013E_TOTAL_CARGO                                            :{BLACK}총 화물량
+STR_TOTAL_CARGO                                                 :{BLACK}총 화물량
 STR_013F_CAPACITY                                               :{BLACK}수용량: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}수용량: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}이 열차의 총 수용량:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}이 열차의 총 수용량:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}새로운 게임
 STR_0141_LOAD_GAME                                              :{BLACK}불러오기
@@ -300,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}멀티 플레이
 STR_SCENARIO_EDITOR                                             :{BLACK}시나리오 에디터
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}맵 크기:
 STR_BY                                                          :{BLACK}x
 STR_0148_GAME_OPTIONS                                           :{BLACK}게임 설정
@@ -354,7 +346,7 @@
 STR_0157_PERFORMANCE_HISTORY_GRAPH                              :성취도 그래프
 STR_0158_COMPANY_VALUE_GRAPH                                    :회사가치 그래프
 STR_0159_CARGO_PAYMENT_RATES                                    :화물 지불량 그래프
-STR_015A_COMPANY_LEAGUE_TABLE                                   :회사 리그 순위
+STR_015A_COMPANY_LEAGUE_TABLE                                   :회사 성취도 순위
 STR_PERFORMANCE_DETAIL_MENU                                     :상세 성취도
 ############ range for menu ends
 
@@ -439,7 +431,7 @@
 STR_0177_DISPLAY_COMPANY_FINANCES                               :{BLACK}회사 재정 정보 보여주기
 STR_0178_DISPLAY_COMPANY_GENERAL                                :{BLACK}회사 기본 정보 보여주기
 STR_0179_DISPLAY_GRAPHS                                         :{BLACK}그래프 표시
-STR_017A_DISPLAY_COMPANY_LEAGUE                                 :{BLACK}회사의 리그 순위 표시
+STR_017A_DISPLAY_COMPANY_LEAGUE                                 :{BLACK}회사의 성취도 순위 표시
 STR_017B_DISPLAY_LIST_OF_COMPANY                                :{BLACK}회사의 열차 목록 표시
 STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}회사의 자동차 목록 표시
 STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}회사의 선박 목록 표시
@@ -607,7 +599,7 @@
 STR_MESSAGE_SOUND                                               :{YELLOW}요약된 메시지와 함께 소리를 들려줍니다
 STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO                       :{WHITE}...이전의 목적지로부터 너무 멉니다
 STR_0211_TOP_COMPANIES_WHO_REACHED                              :{BIGFONT}{BLACK}{NUM}에 달성한 최고의 회사 ({STRING} 난이도)
-STR_TOP_COMPANIES_NETWORK_GAME                                  :{BIGFONT}{BLACK}{NUM}의 회사 리그 목록
+STR_TOP_COMPANIES_NETWORK_GAME                                  :{BIGFONT}{BLACK}{NUM}의 회사 성취도 목록
 STR_0212                                                        :{BIGFONT}{COMMA}.
 STR_0213_BUSINESSMAN                                            :초보자
 STR_0214_ENTREPRENEUR                                           :사업주
@@ -733,11 +725,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}송신기를 놓습니다.
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}사막 지역을 지정합니다.{}CTRL키를 누른채로 지우십시오.
 STR_CREATE_LAKE                                                 :{BLACK}수면 지역을 정의하세요.{}바다 높이에서 CTRL이 눌려 있지 않으면, 운하를 만들때 침수할 것입니다.
+STR_CREATE_RIVER                                                :{BLACK}강을 만듦.
 STR_0290_DELETE                                                 :{BLACK}삭제
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}이 도시를 완전히 삭제
 STR_0292_SAVE_SCENARIO                                          :시나리오 저장
 STR_0293_LOAD_SCENARIO                                          :시나리오 불러오기
-STR_LOAD_HEIGHTMAP                                              :DEM지형 불러오기
+STR_MENU_LOAD_HEIGHTMAP                                         :DEM지형 불러오기
 STR_0294_QUIT_EDITOR                                            :에디터 종료
 STR_0295                                                        :
 STR_0296_QUIT                                                   :게임 종료
@@ -777,9 +770,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :게임 옵션
-STR_02C5_DIFFICULTY_SETTINGS                                    :난이도 설정
-STR_02C7_CONFIG_PATCHES                                         :패치 구성
+STR_02C4_GAME_OPTIONS                                           :게임 옵션
+STR_02C6_DIFFICULTY_SETTINGS                                    :난이도 설정
+STR_MENU_CONFIG_PATCHES                                         :패치 구성
 STR_NEWGRF_SETTINGS                                             :NewGRF 설정
 STR_TRANSPARENCY_OPTIONS                                        :투명 옵션
 STR_GAMEOPTMENU_0A                                              :
@@ -807,15 +800,15 @@
 STR_02DC_DISPLAY_SUBSIDIES                                      :{BLACK}보조금 표시
 STR_02DD_SUBSIDIES                                              :보조금
 STR_02DE_MAP_OF_WORLD                                           :전체 지도 보기
-STR_EXTRA_VIEW_PORT                                             :추가 뷰포인트
+STR_EXTRA_VIEW_PORT                                             :추가 보임창
 STR_SIGN_LIST                                                   :팻말 목록
 STR_02DF_TOWN_DIRECTORY                                         :도시 목록
 STR_TOWN_POPULATION                                             :{BLACK}세계 인구: {COMMA}
-STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}뷰포인트 {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}뷰포인트로 복사
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}이 지역의 풍경을 이 뷰포인트로 복사합니다
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}뷰포인트에서 붙여넣기
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}뷰포인트를 이 지역의 풍경으로 붙여넣습니다
+STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}보임창 {COMMA}
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}보임창으로 복사
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}이 지역의 풍경을 이 보임창으로 복사합니다
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}보임창에서 붙여넣기
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}이 지역의 풍경을 이 보임창에 붙여넣습니다
 
 STR_02E0_CURRENCY_UNITS                                         :{BLACK}화폐 단위
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
@@ -879,8 +872,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}저장중입니다,{}끝날때까지 기다려주세요
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}'Ezy Street 스타일 음악' 프로그램 선택
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :영어 (기본)
@@ -942,6 +935,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}전체화면
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}OpenTTD를 전체화면으로 플레이하려면 클릭하세요
+STR_FULLSCREEN_FAILED                                           :{WHITE}풀스크린 모드 실패
 
 STR_OPTIONS_RES                                                 :{BLACK}화면 해상도
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1099,7 +1093,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}헬리콥터를 발착장에서 자동으로 점검 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}철도/도로/항만/공항 툴바에 지형 정보 링크 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}스크롤 방향 뒤집기 : {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}부드러운 뷰포인트 스크롤: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}부드러운 보임창 스크롤: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}건설도구 사용시 거리측정 툴팁 표시 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}회사 조합원 표시 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :없음
@@ -1654,42 +1648,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}도로를 먼저 제거하십시오
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}도로 작업이 진행중입니다
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}도로 건설
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}전찻길 건설
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}전찻길 건설
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}교량을 선택하십시오
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... 일방통행 도로는 교차로를 만들 수 없습니다
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}도로를 건설할 수 없습니다...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}여기에 전찻길을 건설할 수 없습니다...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}여기에 전찻길을 건설할 수 없습니다...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}도로를 제거할 수 없습니다...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}이곳의 전찻길을 제거할 수 없습니다...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}이곳의 전찻길을 제거할 수 없습니다...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}차고 방향
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}차량기지 방향
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}차량기지 방향
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}여기에 차고를 지을 수 없습니다...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}여기에 차량기지를 건설할 수 없습니다...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}여기에 승객 전차 정거장을 건설할 수 없습니다...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}여기에 화물 전차 정거장을 건설할 수 없습니다...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}여기에 승객 전차 정거장을 건설할 수 없습니다...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}여기에 화물 전차 정거장을 건설할 수 없습니다...
 STR_180A_ROAD_CONSTRUCTION                                      :도로 건설
-STR_180A_TRAMWAY_CONSTRUCTION                                   :전찻길 건설
+STR_TRAMWAY_CONSTRUCTION                                        :전찻길 건설
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}도로 섹션 건설
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}자동건설 모드로 도로 섹션 건설
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}전찻길 섹션 건설
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}전찻길 섹션 건설
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}자동건설 모드로 전차 섹션 건설
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}차고 건설 (차량의 제작/점검용)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}차량기지 건설 (차량 건설/점검용)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}차량기지 건설 (차량 건설/점검용)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}버스 정류장 건설
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}트럭 적하장 건설
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}승객 전차 정거장 건설
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}화물 전차 전거장 건설
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}승객 전차 정거장 건설
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}화물 전차 전거장 건설
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}교량 건설
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}철교 건설
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}철교 건설
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}터널 건설
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}터널 건설
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}터널 건설
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}일방통행 활성/비활성화
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}도로 제거툴 켜기/끄기
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}전찻길/신호등 제거툴 켜기/끄기
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}전찻길/신호등 제거툴 켜기/끄기
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}차고의 방향을 선택하십시오
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}차량기지의 방향을 선택하세요
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}차량기지의 방향을 선택하세요
 STR_1814_ROAD                                                   :도로
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :신호등이 있는 도로
 STR_1816_TREE_LINED_ROAD                                        :가로수가 있는 도로
@@ -1832,8 +1826,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}1개 이상의 역을 인접시키십시오
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}이 도시에 너무 많은 역이 있습니다
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}역이 너무 많습니다
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}버스 정류장이 너무 많습니다
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}트럭 적하장이 너무 많습니다
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}버스 정류장이 너무 많습니다
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}트럭 적하장이 너무 많습니다
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}다른 역과 너무 가깝습니다!
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}기차역을 먼저 제거하십시오!
@@ -1864,12 +1858,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION}에서 {STRING}/{STRING}을/를 받습니다.
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}버스 정류장 방향
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}트럭 적하장 방향
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}승객 전차 정거장 방향
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}화물 전차 정거장 방향
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}승객 전차 정거장 방향
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}화물 전차 정거장 방향
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}버스 정류장을 먼저 제거하십시오.
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}트럭 적하장을 먼저 제거하십시오.
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}승객 전차 정거장을 먼저 제거하십시오.
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}화물 전차 정거장을 먼저 제거하십시오.
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}승객 전차 정거장을 먼저 제거하십시오.
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}화물 전차 정거장을 먼저 제거하십시오.
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA}개 역사
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- 없음 -
@@ -1881,8 +1875,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}기차역의 길이를 선택합니다.
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}버스 정류장의 방향을 선택합니다.
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}트럭 적하장의 방향을 선택합니다.
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}승객 전차 정거장의 방향을 선택하세요.
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}화물 전차 정거장의 방향을 선택하세요.
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}승객 전차 정거장의 방향을 선택하세요.
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}화물 전차 정거장의 방향을 선택하세요.
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}이 역이 있는 곳으로 이동합니다.
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}역의 등급 표시
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}역 이름 변경
@@ -1904,7 +1898,7 @@
 STR_3069_BUOY                                                   :부이
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...도중에 부이가 있습니다.
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...역이 너무 큽니다.
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...역을 결합할 수 없습니다! (패치 구성 참고)
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...역을 결합할 수 없습니다! (패치 구성 참고)
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}1개 이상의 아이템을 선택하려면 CTRL키를 누르고 계십시오.
 
 STR_UNDEFINED                                                   :(정의되지 않은 문자열)
@@ -1945,7 +1939,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}새로운 게임 종류를 선택
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}시나리오(녹색), 프리셋 게임(파랑), 무작위 게임 선택
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :신규 무작위 게임 생성
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}DEM지형 로드
+STR_LOAD_HEIGHTMAP                                              :{WHITE}DEM지형 로드
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}중간에 {STRING}이/가 있습니다
@@ -2149,10 +2143,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}경제: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}열차 회차: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}재앙: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}도시 당국의 지역 재건설에 대한 태도: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}도시 당국의 지역 재건설에 대한 태도: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :없음
+STR_NONE                                                        :없음
 STR_NUM_VERY_LOW                                                :매우 적음
 STR_6816_LOW                                                    :낮음
 STR_6817_NORMAL                                                 :보통
@@ -2190,9 +2184,9 @@
 STR_6836_OFF                                                    :끔
 STR_6837_ON                                                     :켬
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}고득점 차트 보이기
-STR_6839_PERMISSIVE                                             :허용적
-STR_683A_TOLERANT                                               :관대함
-STR_683B_HOSTILE                                                :적대적
+STR_PERMISSIVE                                                  :허용적
+STR_TOLERANT                                                    :관대함
+STR_HOSTILE                                                     :적대적
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2323,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}이 회사 주식의 25%를 매도할 수 없습니다...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% {COMPANY}의 소유)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY}의 관리권이 {COMPANY}(으)로 넘어갔습니다!
-STR_7080_PROTECTED                                              :{WHITE}이 회사는 주식을 거래할 만큼 오래되지 않았습니다...
+STR_PROTECTED                                                   :{WHITE}이 회사는 주식을 거래할 만큼 오래되지 않았습니다...
 
 STR_LIVERY_DEFAULT                                              :기본 색상
 STR_LIVERY_STEAM                                                :증기 기관차
@@ -2342,6 +2336,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :객차 (증기)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :객차 (디젤)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :객차 (전기)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :승객 객차 (모노레일)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :승객 객차 (자기부상열차)
 STR_LIVERY_FREIGHT_WAGON                                        :화물차
 STR_LIVERY_BUS                                                  :버스
 STR_LIVERY_TRUCK                                                :트럭
@@ -2636,17 +2632,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :{STATION} 행
-STR_8807_GO_TO_TRANSFER                                         :{STATION} 행 (환승시키고 화물 싣기)
-STR_8808_GO_TO_UNLOAD                                           :{STATION} 행 (모두 내림)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :{STATION} 행 (환승시키고 화물을 모두 내림)
-STR_880A_GO_TO_LOAD                                             :{STATION} 행 (모두 싣기)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :{STATION} 행 (환승시키고 화물을 가득 실음)
-STR_880C_GO_NON_STOP_TO                                         :{STATION} 급행
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :{STATION} 급행 (환승시키고 화물 싣기)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :{STATION} 급행 (모두 내림)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :{STATION} 급행 (환승시키고 화물을 모두 내림)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :{STATION} 급행 (모두 싣기)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :{STATION} 급행 (환승시키고 화물을 가득 실음)
+STR_GO_TO_TRANSFER                                              :{STATION} 행 (환승시키고 화물 싣기)
+STR_8807_GO_TO_UNLOAD                                           :{STATION} 행 (모두 내림)
+STR_GO_TO_TRANSFER_UNLOAD                                       :{STATION} 행 (환승시키고 화물을 모두 내림)
+STR_8808_GO_TO_LOAD                                             :{STATION} 행 (모두 싣기)
+STR_GO_TO_TRANSFER_LOAD                                         :{STATION} 행 (환승시키고 화물을 가득 실음)
+STR_880A_GO_NON_STOP_TO                                         :{STATION} 급행
+STR_GO_TO_NON_STOP_TRANSFER                                     :{STATION} 급행 (환승시키고 화물 싣기)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :{STATION} 급행 (모두 내림)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :{STATION} 급행 (환승시키고 화물을 모두 내림)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :{STATION} 급행 (모두 싣기)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :{STATION} 급행 (환승시키고 화물을 가득 실음)
 STR_GO_TO_TRAIN_DEPOT                                           :{TOWN} 차량기지행
 STR_SERVICE_AT_TRAIN_DEPOT                                      :{TOWN} 차량기지행 (점검)
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :{TOWN} 차량기지 급행
@@ -2750,7 +2746,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}현재 싣고있는 화물 정보를 보여줌
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}각 차량의 상세 정보를 보여줌
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}각 차량의 수송량 정보를 보여줌
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}각 화물 종류에 따른 총 수송량 보여줌
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}각 화물 종류에 따른 총 수송량 보여줌
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}이 열차의 경로 - 선택하려면 클릭하세요. CTRL+클릭하시면 그 역이 있는 장소로 이동합니다.
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}현재 경로를 건너 뜁니다, 그리고 다음 경로를 시작합니다. Ctrl + 클릭은 선택된 경로로 건너 뜁니다.
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}선택된 경로를 삭제합니다.
@@ -2781,8 +2777,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}열차를 회차시킬 수 없습니다...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}열차 차량 타입 이름 재지정
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}차량 타입의 이름을 다시 지정할 수 없습니다...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}선택된 경로에서 모든 화물을 내려서 쌓아놓도록 변경합니다.
-STR_886F_TRANSFER                                               :{BLACK}환승
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}선택된 경로에서 모든 화물을 내려서 쌓아놓도록 변경합니다.
+STR_TRANSFER                                                    :{BLACK}환승
 STR_CLEAR_TIME                                                  :{BLACK}시간 초기화
 STR_RESET_LATENESS                                              :{BLACK}지연 카운터 초기화
 
@@ -2860,8 +2856,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}{STATION}에 처음으로 승객 전차가 도착했습니다!{}사람들이 환호성을 지릅니다!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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}자동차를 회차시킬 수 없습니다...
@@ -2870,7 +2866,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :{TOWN} 차고로 가는 중
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :{TOWN} 차고로 점검하러 가는 중
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}자동차가 다른 종류의 화물을 싣도록 개조
@@ -3244,6 +3240,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :모든 화물 / 제외: {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}최고 견인 효과: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}생성
@@ -3271,7 +3273,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}맵 자원의 크기를 너무 키우는 것은 좋지 않습니다. 생성을 계속하시겠습니까?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}도시 설계 경고
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}도시 설계 "도로건설 안함"은 추천하지 않습니다. 생성을 계속 하시겠습니까?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}DEM지형 이름:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}크기: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}나는야 신이라네~ 천지창조중...
@@ -3297,7 +3298,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}평지의 높이를 1칸 낮춥니다
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}평지의 높이 변경
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}평지의 높이:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}소형맵을 현재 위치에 위치시킵니다
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
@@ -3334,7 +3334,7 @@
 
 STR_FEEDER_CARGO_VALUE                                          :{BLACK}환승 단위: {LTBLUE}{CURRENCY}
 STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD                            :{WHITE}...여기는 마을 소유의 도로 입니다
-STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...도로가 잘못된 반향을 향하고 있습니다
+STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...도로가 잘못된 방향을 향하고 있습니다
 
 STR_TRANSPARENCY_TOOLB                                          :{WHITE}투명 옵션
 STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}역이름 팻말 투명 전환
@@ -3416,7 +3416,7 @@
 STR_FACE_LOAD                                                   :{BLACK}불러오기
 STR_FACE_LOAD_TIP                                               :{BLACK}즐겨찾는 얼굴 불러오기
 STR_FACE_LOAD_DONE                                              :{WHITE}당신이 즐겨찾는 얼굴을 OpenTTD 설정 파일로부터 불러왔습니다.
-STR_FACE_FACECODE                                               :{BLACK}플레이어 얼굴 없음.
+STR_FACE_FACECODE                                               :{BLACK}플레이어 얼굴 번호
 STR_FACE_FACECODE_TIP                                           :{BLACK}플레이어 얼굴 번호 보기/설정
 STR_FACE_FACECODE_CAPTION                                       :{WHITE}플레이어 얼굴 번호 보기/설정
 STR_FACE_FACECODE_SET                                           :{WHITE}새 얼굴 번호 코드가 설정되었습니다.
--- a/src/lang/lithuanian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/lithuanian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Paviršius turi būti lygus
 STR_0008_WAITING                                                :{BLACK}Laukia: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (maršrutas iš
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Priima: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Priima: {GOLD}
 STR_000E                                                        :
@@ -308,9 +306,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Per daug vardų
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Pasirinktas vardas jau naudojamas
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -321,11 +319,11 @@
 STR_013C_CARGO                                                  :{BLACK}Keliamoji galia
 STR_013D_INFORMATION                                            :{BLACK}Informacija
 STR_013E_CAPACITIES                                             :{BLACK}Talpumas
-STR_013E_TOTAL_CARGO                                            :{BLACK}Visa keliamoji galia
+STR_TOTAL_CARGO                                                 :{BLACK}Visa keliamoji galia
 STR_013F_CAPACITY                                               :{BLACK}Talpa: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Talpa: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Visa traukinio keliamoji galia:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Visa traukinio keliamoji galia:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Naujas žaidimas
 STR_0141_LOAD_GAME                                              :{BLACK}Atverti žaidimą
@@ -333,12 +331,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Žaidimas tinkle
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenarijaus redaktorius
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Zemelapio dydis:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Žaidimo nustatymai
@@ -765,7 +757,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Šalinti šį miestą
 STR_0292_SAVE_SCENARIO                                          :Išsaugoti scenarijų
 STR_0293_LOAD_SCENARIO                                          :Atverti scenarijų
-STR_LOAD_HEIGHTMAP                                              :Atverti aukščių žemėlapį
+STR_MENU_LOAD_HEIGHTMAP                                         :Atverti aukščių žemėlapį
 STR_0294_QUIT_EDITOR                                            :Uždaryti redaktoriu
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Išeiti
@@ -805,9 +797,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Žaidimo nustatymai
-STR_02C5_DIFFICULTY_SETTINGS                                    :Sunkumo lygio nustatymai
-STR_02C7_CONFIG_PATCHES                                         :Papildomi nustatymai
+STR_02C4_GAME_OPTIONS                                           :Žaidimo nustatymai
+STR_02C6_DIFFICULTY_SETTINGS                                    :Sunkumo lygio nustatymai
+STR_MENU_CONFIG_PATCHES                                         :Papildomi nustatymai
 STR_NEWGRF_SETTINGS                                             :Papild. grafikos nustatymai (NewGRF)
 STR_TRANSPARENCY_OPTIONS                                        :Permatomumo nustatymai
 STR_GAMEOPTMENU_0A                                              :
@@ -906,8 +898,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Vyksta išsaugojimas,{}palaukite kol baigsis!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Pasirink „Ezy Street“ muzikos stiliaus programą
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglų (Oginalus)
@@ -1738,8 +1730,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Ribojasi su daugiau nei viena stotele/pakrovimo aikštele
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Per daug stotelių/pakrovimo aikstelių šiame mieste
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Per daug stotelių
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Per daug autobusų stotelių
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Per daug sunkvežimių pakrovimo aikstelių
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Per daug autobusų stotelių
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Per daug sunkvežimių pakrovimo aikstelių
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Per arti kitos stotelės
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Pirmiausia reikia nugriauti geležinkelio stotį
@@ -1804,7 +1796,7 @@
 STR_3069_BUOY                                                   :Pluduras
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...pluduras pakeliui
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stotis per daug issipletusi
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...nestandartines stoteles atjungtos
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...nestandartines stoteles atjungtos
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Laikant nuspaustą VALD (CTRL) galima pažymėti daugiau nei vieną
 
 STR_UNDEFINED                                                   :(neapibrėžta eilutė)
@@ -1839,7 +1831,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Pasirink zaujo zaidimo tipa
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Pasirinkite scenariju (zalia spalva), nustatyta zaidima (melyna), ar atsitiktini nauja zaidima
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Sukurti atsitiktinį naują žaidimą
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Atverti aukščių žemėlapį
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Atverti aukščių žemėlapį
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} kelyje
@@ -2036,10 +2028,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomika: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Traukiniai apsisuka: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Nelaimes, katastrofos: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Miesto valdžios požiūris į aplinkos pertvarkymą: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Miesto valdžios požiūris į aplinkos pertvarkymą: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Nėra
+STR_NONE                                                        :Nėra
 STR_6816_LOW                                                    :Žemas
 STR_6817_NORMAL                                                 :Vidutinis
 STR_6818_HIGH                                                   :Aukštas
@@ -2076,9 +2068,9 @@
 STR_6836_OFF                                                    :Išjungta
 STR_6837_ON                                                     :Įjungta
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Rodyti rezultatų lentelę
-STR_6839_PERMISSIVE                                             :Atlaidus
-STR_683A_TOLERANT                                               :Tolerantiskas
-STR_683B_HOSTILE                                                :Priešiškas
+STR_PERMISSIVE                                                  :Atlaidus
+STR_TOLERANT                                                    :Tolerantiskas
+STR_HOSTILE                                                     :Priešiškas
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2210,7 +2202,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Negalima parduoti 25% sios kompanijos akciju...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% priklauso {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} buvo perimta {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Si kompanija dar pernelyg jauna, kad galetu pardavineti savo akcijas...
+STR_PROTECTED                                                   :{WHITE}Si kompanija dar pernelyg jauna, kad galetu pardavineti savo akcijas...
 
 STR_LIVERY_DEFAULT                                              :Standartinis Livery
 STR_LIVERY_STEAM                                                :Garo Variklis
@@ -2515,17 +2507,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Vaziuoja i {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Vykti i {STATION} (Perkelti ir pakrauti krovinius)
-STR_8808_GO_TO_UNLOAD                                           :Vykti i {STATION} (Issikrauti)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Vykti i {STATION} (Perkrauti ir palikti tuscia)
-STR_880A_GO_TO_LOAD                                             :Vykti i {STATION} (Pasikrauti)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Vykti i {STATION} (Perkrauti ir palaukti pilno pakrovimo)
-STR_880C_GO_NON_STOP_TO                                         :Vykti be sustojimo i {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Vykti be sustojimo i {STATION} (Perkrauti ir paimti krovini)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Vykti be sustojimo i {STATION} (Issikrauti)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Vykti be sustojimo i {STATION} (Perkrauti ir palikti tuscia)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Vykti be sustojimo i {STATION} (Pasikrauti)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Vykti be sustojimo i {STATION} (Perkrauti ir palaukti pilno pakrovimo)
+STR_GO_TO_TRANSFER                                              :Vykti i {STATION} (Perkelti ir pakrauti krovinius)
+STR_8807_GO_TO_UNLOAD                                           :Vykti i {STATION} (Issikrauti)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Vykti i {STATION} (Perkrauti ir palikti tuscia)
+STR_8808_GO_TO_LOAD                                             :Vykti i {STATION} (Pasikrauti)
+STR_GO_TO_TRANSFER_LOAD                                         :Vykti i {STATION} (Perkrauti ir palaukti pilno pakrovimo)
+STR_880A_GO_NON_STOP_TO                                         :Vykti be sustojimo i {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Vykti be sustojimo i {STATION} (Perkrauti ir paimti krovini)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Vykti be sustojimo i {STATION} (Issikrauti)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Vykti be sustojimo i {STATION} (Perkrauti ir palikti tuscia)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Vykti be sustojimo i {STATION} (Pasikrauti)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Vykti be sustojimo i {STATION} (Perkrauti ir palaukti pilno pakrovimo)
 STR_GO_TO_TRAIN_DEPOT                                           :Vaziuoti i {TOWN} Traukinio Depa
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Remontas {TOWN} traukiniu depe
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Važiuoti nestojant į {TOWN} traukinių depą
@@ -2618,7 +2610,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Rodyti detalia kroviniu informacija
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Rodyti detalia vagonu informacija
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Rodyti detalia vagonu talpos informacija
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Rodyti bendra traukinio talpos informacija pagal kroviniu tipa
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Rodyti bendra traukinio talpos informacija pagal kroviniu tipa
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Nurodymų sąrašas - nurodymas pažymimas ant jo spragtelėjus. Spregtelėjimas laikant VALD (CTRL) nukelia į stotį
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Istrinti pazymeta uzduoti
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Nestoti pazymetoje stoteleje
@@ -2644,8 +2636,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Traukinio vaziavimo krypties pakeisti negalima...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Pervardinti traukinio tipa
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Neimanoma pervardinti traukinio tipo...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Priversti iškrauti krovinius pažymėta tvarka
-STR_886F_TRANSFER                                               :{BLACK}Perkelti
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Priversti iškrauti krovinius pažymėta tvarka
+STR_TRANSFER                                                    :{BLACK}Perkelti
 
 STR_TRAIN_STOPPING                                              :{RED}Stabdoma
 STR_TRAIN_STOPPING_VEL                                          :{RED}Stabdomas, {VELOCITY}
@@ -2711,7 +2703,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Pervardinti automobiliu tipa
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Pervardinti automobiliu tipa
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Negali pervardinti automobliu tipo...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Kursas: {TOWN} automobiliu garazas
+STR_GO_TO_ROADVEH_DEPOT                                         :Kursas: {TOWN} automobiliu garazas
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Remontas: {TOWN} garaze
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Perkomplektuoti transporto priemone kad galetu vezti kitoki krovinio tipa
@@ -3089,7 +3081,6 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Keisti pradzios metus
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Skales ispejimas
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Perdaryti pagrindini zemelapi per daug nerekomenduojama. Testi generavima?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Zemelapio vardas:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Dydis: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Pasaulis generuojamas...
@@ -3115,7 +3106,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Pakelti lygios zemes lygi vienu lygiu
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Keisti lygumos auksti
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Lygumos aukstis:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centruoti maza zemelapi i sita vieta
 
--- a/src/lang/norwegian_bokmal.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/norwegian_bokmal.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flatt land er nødvendig
 STR_0008_WAITING                                                :{BLACK}Venter: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (på vei fra
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Godtar: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Godtar: {GOLD}
 STR_000E                                                        :
@@ -275,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}For mange navn oppgitt
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Navnet er allerede i bruk
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Last
 STR_013D_INFORMATION                                            :{BLACK}Informasjon
 STR_013E_CAPACITIES                                             :{BLACK}Kapasitet
-STR_013E_TOTAL_CARGO                                            :{BLACK}Total last
+STR_TOTAL_CARGO                                                 :{BLACK}Total last
 STR_013F_CAPACITY                                               :{BLACK}Kapasitet: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapasitet: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Total kapasitet på dette toget:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Total kapasitet på dette toget:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nytt spill
 STR_0141_LOAD_GAME                                              :{BLACK}Last inn spill
@@ -300,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Flerspiller
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenario Editor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kartstørrelse:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spillinnstillinger
@@ -737,7 +729,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Slett denne byen fullstendig
 STR_0292_SAVE_SCENARIO                                          :Lagre scenario
 STR_0293_LOAD_SCENARIO                                          :Last inn scenario
-STR_LOAD_HEIGHTMAP                                              :Last høydekart
+STR_MENU_LOAD_HEIGHTMAP                                         :Last høydekart
 STR_0294_QUIT_EDITOR                                            :Avslutt redigeringsprogram
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Avslutt
@@ -777,9 +769,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spillinnstillinger
-STR_02C5_DIFFICULTY_SETTINGS                                    :Vanskelighetsgrad
-STR_02C7_CONFIG_PATCHES                                         :Konfigurer patcher
+STR_02C4_GAME_OPTIONS                                           :Spillinnstillinger
+STR_02C6_DIFFICULTY_SETTINGS                                    :Vanskelighetsgrad
+STR_MENU_CONFIG_PATCHES                                         :Konfigurer patcher
 STR_NEWGRF_SETTINGS                                             :Innstillinger for ny grafikk
 STR_TRANSPARENCY_OPTIONS                                        :Instillinger for gjennomsiktighet
 STR_GAMEOPTMENU_0A                                              :
@@ -879,8 +871,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Lagring foregår enda,{}vennligst vent til det er ferdig!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Velg 'Ezy style music'-program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engelsk
@@ -1655,42 +1647,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Må fjerne vei først
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Veiarbeid i gang
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Bygg vei
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Trikkekonstruksjon
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Trikkekonstruksjon
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Velg brotype
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... enveiskjørte veier kan ikke ha kryss
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan ikke bygge vei her
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan ikke bygge trikkespor her...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan ikke bygge trikkespor her...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan ikke fjerne vei herfra...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan ikke fjerne trikkespor herfra...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan ikke fjerne trikkespor herfra...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Retning for garasje
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Trikkestallretning
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Trikkestallretning
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan ikke bygge garasje her...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan ikke bygge trikkestall her...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan ikke bygge trikkestall her...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan ikke bygge busstasjon...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan ikke bygge lasteterminal...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan ikke bygge trikkestasjon for passasjerer...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan ikke bygge trikkestasjon for frakt...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan ikke bygge trikkestasjon for passasjerer...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan ikke bygge trikkestasjon for frakt...
 STR_180A_ROAD_CONSTRUCTION                                      :Bygg vei
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Trikkesporkonstruksjon
+STR_TRAMWAY_CONSTRUCTION                                        :Trikkesporkonstruksjon
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bygg vei
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Bygg veiseksjon ved bruk av autovei-modusen
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bygg trikkestasjon
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Bygg trikkestasjon
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Bygg trikkespor ved bruk av autotrikkespor-modusen
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Bygg garasje (trengs for bygging og vedlikehold av kjøretøy)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Bygg trikkevognstall (for kjøp og vedlikehold av kjøretøy)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Bygg trikkevognstall (for kjøp og vedlikehold av kjøretøy)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Bygg bussstasjon
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Bygg lasteterminal
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Bygg trikkestasjon for passasjerer
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Bygg trikkestasjon for frakt
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Bygg trikkestasjon for passasjerer
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Bygg trikkestasjon for frakt
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bygg bro
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Bygg bro for trikkespor
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Bygg bro for trikkespor
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Bygg tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Bygg tunnel for trikkespor
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Bygg tunnel for trikkespor
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktiver/deaktiver énveiskjørte veier
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Velg mellom bygging/fjerning for veibygging
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Velg mellom bygging/fjerning for trikkesporkonstruksjon
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Velg mellom bygging/fjerning for trikkesporkonstruksjon
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Velg garasjens retning
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Velg trikkestallens retning
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Velg trikkestallens retning
 STR_1814_ROAD                                                   :Vei
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Vei med gatelykter
 STR_1816_TREE_LINED_ROAD                                        :Aveny
@@ -1833,8 +1825,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Grenser til mer enn én eksiterende stasjon/lasteterminal
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stasjoner/lasteterminaler i byen
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stasjoner/lasteterminaler
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}For mange bussholdeplasser
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}For mange lasteterminaler
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}For mange bussholdeplasser
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}For mange lasteterminaler
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}For nær en annen jernbanestasjon/lasteterminal
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Må rive eksiterende jernbanestasjon først
@@ -1865,12 +1857,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} godtar nå {STRING} og {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Retning på bussterminal
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Retning på lasteterminal
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Retning for passasjertrikk
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Retning for frakttrikk
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Retning for passasjertrikk
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Retning for frakttrikk
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Må rive bussterminal først
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Må rive lasteterminal først
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Må fjerne trikkestasjon for passasjerer først
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Må fjerne trikkestasjon for frakt først
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Må fjerne trikkestasjon for passasjerer først
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Må fjerne trikkestasjon for frakt først
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stasjoner
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ingen -
@@ -1882,8 +1874,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Velg hvor lang stasjonen skal være
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Velg retning på bussterminal
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Velg retning på lasteterminal
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Velg retning på trikkestasjon for passasjerer
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Velg retning på trikkestasjon for frakt
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Velg retning på trikkestasjon for passasjerer
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Velg retning på trikkestasjon for frakt
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Sentrer bildet på stasjonen
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Vis stasjonsvurdering
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Endre navnet til stasjonen
@@ -1905,7 +1897,7 @@
 STR_3069_BUOY                                                   :Bøye
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bøyen er i veien
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stasjonen er spredd for mye
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...uensartede stasjoner deaktivert
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...uensartede stasjoner deaktivert
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hold nede CTRL for å velge mer en en ting
 
 STR_UNDEFINED                                                   :(udefinert streng)
@@ -1946,7 +1938,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Velg ny spilltype
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Velg scenario (grønn), forhåndsatte spill (blått), eller nytt tilfeldig spill
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Lag et tilfeldig spill
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Last høydekart
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Last høydekart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} er i veien
@@ -2150,10 +2142,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Økonomi: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Togreversering: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofer: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Bystyrets holdning mot ombygging av felt: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Bystyrets holdning mot ombygging av felt: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ingen
+STR_NONE                                                        :Ingen
 STR_NUM_VERY_LOW                                                :Veldig lav
 STR_6816_LOW                                                    :Lite
 STR_6817_NORMAL                                                 :Normal
@@ -2191,9 +2183,9 @@
 STR_6836_OFF                                                    :Av
 STR_6837_ON                                                     :På
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Vis rekorder
-STR_6839_PERMISSIVE                                             :Tillatende
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Fientlig
+STR_PERMISSIVE                                                  :Tillatende
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Fientlig
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2330,7 +2322,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan ikke selge 25{NBSP}% av aksjene...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}{NBSP}% eies av {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} har blitt kjøpt opp av {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Dette selskapet selger ikke aksjer enda...
+STR_PROTECTED                                                   :{WHITE}Dette selskapet selger ikke aksjer enda...
 
 STR_LIVERY_DEFAULT                                              :Standardovertakelse
 STR_LIVERY_STEAM                                                :Damplokomotiv
@@ -2637,17 +2629,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Kjør til {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Gå til {STATION} (overfør og ta last)
-STR_8808_GO_TO_UNLOAD                                           :Gå til {STATION} (last av)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Gå til {STATION} (overfør og forlat som tom)
-STR_880A_GO_TO_LOAD                                             :Gå til {STATION} (last)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Gå til {STATION} (overfør og vent på full last)
-STR_880C_GO_NON_STOP_TO                                         :Gå uten stopp til {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Gå uten stopp til {STATION} (overfør og ta last)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Gå uten stopp til {STATION} (last av)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Gå uten stopp {STATION} (overfør og forlat som tom)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Gå uten stopp til {STATION} (last)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Gå uten stopp til {STATION} (overfør og vent på full last)
+STR_GO_TO_TRANSFER                                              :Gå til {STATION} (overfør og ta last)
+STR_8807_GO_TO_UNLOAD                                           :Gå til {STATION} (last av)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Gå til {STATION} (overfør og forlat som tom)
+STR_8808_GO_TO_LOAD                                             :Gå til {STATION} (last)
+STR_GO_TO_TRANSFER_LOAD                                         :Gå til {STATION} (overfør og vent på full last)
+STR_880A_GO_NON_STOP_TO                                         :Gå uten stopp til {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Gå uten stopp til {STATION} (overfør og ta last)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Gå uten stopp til {STATION} (last av)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Gå uten stopp {STATION} (overfør og forlat som tom)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Gå uten stopp til {STATION} (last)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Gå uten stopp til {STATION} (overfør og vent på full last)
 STR_GO_TO_TRAIN_DEPOT                                           :Gå til {TOWN} togdepot
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Velikehold ved {TOWN} togstall
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Kjør uten å stoppe til {TOWN} togstall
@@ -2751,7 +2743,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Vis detaljer om innholdet i vognene
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Vis detaljer om tog/vogner
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Vis kapasiteten til vognene
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Vis en total kapasitet på togene oppdelt etter godstype
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Vis en total kapasitet på togene oppdelt etter godstype
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordreliste - trykk på en ordre for å velge den
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Hopp over den nåværende ordren og begynn på neste. CTRL + klikk hopper fram til valgte ordre
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Slett den valgte ordren
@@ -2782,8 +2774,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan ikke snu toget...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Gi tog/vogn nytt navn
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Kan ikke gi tog/vogn nytt navn...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Få den merkede ordren til å tvinge kjøretøyet til å dumpe lasten
-STR_886F_TRANSFER                                               :{BLACK}Overfør
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Få den merkede ordren til å tvinge kjøretøyet til å dumpe lasten
+STR_TRANSFER                                                    :{BLACK}Overfør
 STR_CLEAR_TIME                                                  :{BLACK}Nullstill tid
 STR_RESET_LATENESS                                              :{BLACK}Nullstill senhetsteller
 
@@ -2861,8 +2853,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Navngi kjøretøy
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første buss ankommer {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første lastebil ankommer {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første passasjertrikk ankommer {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første frakttrikk ankommer {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første passasjertrikk ankommer {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første frakttrikk ankommer {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Kollisjon!{}Sjåfør dør etter kollisjon med tog
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Kollisjon!{}{COMMA} dør etter kollisjon med tog
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan ikke snu...
@@ -2871,7 +2863,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Endre navnet til kjøretøytypen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Endre navnet til kjøretøytypen
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kan ikke endre navnet til kjøretøytypen...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Kjør til {TOWN} garasje
+STR_GO_TO_ROADVEH_DEPOT                                         :Kjør til {TOWN} garasje
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Vedlikehold ved {TOWN} garasje
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Bygg om kjøretøyet til å ta en annen type last
@@ -3272,7 +3264,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Å endre kildemapstørrelsen for mye er ikke anbefalt. Fortsette generering?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Byutleggsadvarsel
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Byutlegget «ingen flere veier» anbefales ikke. Fortsette generering?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Høydekartnavn:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Størrelse: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Genererer verden...
@@ -3298,7 +3289,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Flytt høyden på flagg land ett nivå opp
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Endre høyden på flatt land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Høyde av flatt land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Midstill oversiktskartet på den gjeldende posisjonen
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/norwegian_nynorsk.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flatt land er naudsynt
 STR_0008_WAITING                                                :{BLACK}Ventar: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (på veg frå
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Godtek: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Godtek: {GOLD}
 STR_000E                                                        :
@@ -275,9 +273,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}For mange namn oppgjeve
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Namnet er allereie i i bruk
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +286,11 @@
 STR_013C_CARGO                                                  :{BLACK}Last
 STR_013D_INFORMATION                                            :{BLACK}Informasjon
 STR_013E_CAPACITIES                                             :{BLACK}Kapasitet
-STR_013E_TOTAL_CARGO                                            :{BLACK}Total last
+STR_TOTAL_CARGO                                                 :{BLACK}Total last
 STR_013F_CAPACITY                                               :{BLACK}Kapasitet: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapasitet: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Total kapasitet for dette toget:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Total kapasitet for dette toget:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nytt spel
 STR_0141_LOAD_GAME                                              :{BLACK}Last inn spel
@@ -300,12 +298,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Fleirspelar
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenarioredigering
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kartstorleik:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spelinnstillingar
@@ -737,7 +729,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Slett byen heilt
 STR_0292_SAVE_SCENARIO                                          :Lagre scenario
 STR_0293_LOAD_SCENARIO                                          :Last inn scenario
-STR_LOAD_HEIGHTMAP                                              :Last inn høgdekart
+STR_MENU_LOAD_HEIGHTMAP                                         :Last inn høgdekart
 STR_0294_QUIT_EDITOR                                            :Avslutt redigeringsprogram
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Avslutt
@@ -777,9 +769,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spelinstillingar
-STR_02C5_DIFFICULTY_SETTINGS                                    :Vanskegrad
-STR_02C7_CONFIG_PATCHES                                         :Konfigurer patcher
+STR_02C4_GAME_OPTIONS                                           :Spelinstillingar
+STR_02C6_DIFFICULTY_SETTINGS                                    :Vanskegrad
+STR_MENU_CONFIG_PATCHES                                         :Konfigurer patcher
 STR_NEWGRF_SETTINGS                                             :Instillingar for ny grafikk
 STR_TRANSPARENCY_OPTIONS                                        :Gjennomsiktigheitsinnstillingar
 STR_GAMEOPTMENU_0A                                              :
@@ -879,8 +871,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Lagring foregår framleis,{}ver venleg å vente til det er ferdig!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Vel 'Ezy Street style music'-program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engelsk
@@ -1654,42 +1646,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Må fjerne veg først
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Vegarbeid pågår
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Bygg veg
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Trikkekonstruksjon
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Trikkekonstruksjon
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Vel type bru
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... einvegskøyrde vegar kan ikkje ha kryss
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan ikkje byggje veg her...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan ikkje byggje trikk her
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan ikkje byggje trikk her
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan ikkje fjerne veg her...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan ikkje fjerna trikk
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan ikkje fjerna trikk
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Retning for garasje
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Retning for trikkedepot
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Retning for trikkedepot
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan ikkje byggje garasje her...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan ikkje byggje trikkedepot her
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan ikkje byggje trikkedepot her
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan ikkje byggje busstasjon...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan ikkje byggje lasteterminal...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan ikkje byggje trikkestasjon for passasjerer...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan ikkje byggje trikkestasjon for frakt...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan ikkje byggje trikkestasjon for passasjerer...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan ikkje byggje trikkestasjon for frakt...
 STR_180A_ROAD_CONSTRUCTION                                      :Bygg veg
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Trikkekonstruksjon
+STR_TRAMWAY_CONSTRUCTION                                        :Trikkekonstruksjon
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bygg veg
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Bygg vegseksjon med automatisk vegmodus
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bygg trikkeseksjon
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Bygg trikkeseksjon
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Bygg trikkestasjon med automatisk trikkemodus
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Bygg garasje (trengst for bygging og vedlikehald av køyretøy)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Bygg trikkedepot ( for å bygge og vedlikeholde køyretøy)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Bygg trikkedepot ( for å bygge og vedlikeholde køyretøy)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Bygg busstasjon
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Bygg lasteterminal
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Bygg trikkestasjon for passasjerer
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Bygg trikkestasjon for frakt
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Bygg trikkestasjon for passasjerer
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Bygg trikkestasjon for frakt
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bygg bru
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Bygg bro for trikk
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Bygg bro for trikk
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Bygg tunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Bygg tunell for trikk
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Bygg tunell for trikk
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktiver / Deaktiver envegskøyrde vegar
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Vel mellom bygging/fjerning for vegbygging
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Byt mellom bygge / fjerne for trikk
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Byt mellom bygge / fjerne for trikk
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vel retninga på garasjen
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Vel retning for trikkedepot
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Vel retning for trikkedepot
 STR_1814_ROAD                                                   :Veg
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Veg med gatelykter
 STR_1816_TREE_LINED_ROAD                                        :Aveny
@@ -1832,8 +1824,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Grensar til meir enn éin eksisterande stasjon/lasteterminal
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stasjonar/lasteterminalar i byen
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}For mange stasjonar/lasteterminalar
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}For mange busshaldeplassar
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}For mange lasteterminalar
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}For mange busshaldeplassar
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}For mange lasteterminalar
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}For nær ein annan jernbanestasjon/lasteterminal
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Må rive eksisterande jernbanestasjon først
@@ -1864,12 +1856,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} godtek no {STRING} og {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Retning på bussterminal
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Retning på lasteterminal
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Retning på trikkestajon
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Retning på trikkestasjon
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Retning på trikkestajon
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Retning på trikkestasjon
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Må rive bussterminal først
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Må rive lasteterminal først
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Må fjerne trikkestasjon først
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Må fjerne trikkestajon først
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Må fjerne trikkestasjon først
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Må fjerne trikkestajon først
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stasjon{P "" ar}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ingen -
@@ -1881,8 +1873,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Vel kor lang stasjonen skal vere
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Vel retning på bussterminal
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Vel retning på lasteterminal
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Velg retning på trikkestajon
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Velg retning på trikkestajon
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Velg retning på trikkestajon
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Velg retning på trikkestajon
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Sentrer biletet på stasjonen
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Vis stasjonsvurdering
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Endre namnet på stasjonen
@@ -1904,7 +1896,7 @@
 STR_3069_BUOY                                                   :Bøye
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bøya er i vegen
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stasjonen er spreidd for mykje
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ikkje-einsarta stasjonar er deaktiverte
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ikkje-einsarta stasjonar er deaktiverte
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Hald nede CTRL for å velje meir enn éin ting
 
 STR_UNDEFINED                                                   :(udefinert streng)
@@ -1945,7 +1937,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Vel ny speltype
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Vel scenario (grønn), førehandssette spel (blått), eller nytt tilfeldig spel
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Lag eit tilfeldig spel
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Last høgdekart
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Last høgdekart
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} er i vegen
@@ -2149,10 +2141,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Økonomi: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Togreversering: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofar: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Haldninga til bystyret til ombygging av felt: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Haldninga til bystyret til ombygging av felt: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ingen
+STR_NONE                                                        :Ingen
 STR_NUM_VERY_LOW                                                :Særs låg
 STR_6816_LOW                                                    :Lite
 STR_6817_NORMAL                                                 :Normal
@@ -2190,9 +2182,9 @@
 STR_6836_OFF                                                    :Av
 STR_6837_ON                                                     :På
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Vis rekordar
-STR_6839_PERMISSIVE                                             :Tillatande
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Fiendsleg
+STR_PERMISSIVE                                                  :Tillatande
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Fiendsleg
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2321,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan ikkje selje 25 % av aksjane...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA} % eigast av {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} har vorte kjøpt opp av {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Dette selskapet sel ikkje aksjer enno...
+STR_PROTECTED                                                   :{WHITE}Dette selskapet sel ikkje aksjer enno...
 
 STR_LIVERY_DEFAULT                                              :Standardovertaking
 STR_LIVERY_STEAM                                                :Damplokomotiv
@@ -2636,17 +2628,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Køyr til {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Køyr til {STATION} (overfør og ta last)
-STR_8808_GO_TO_UNLOAD                                           :Køyr til {STATION} (last av)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Køyr til {STATION} (overfør og forlat som tom)
-STR_880A_GO_TO_LOAD                                             :Køyr til {STATION} (last)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Køyr til {STATION} (overfør og vent på full last)
-STR_880C_GO_NON_STOP_TO                                         :Køyr utan stopp til {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Køyr utan stopp til {STATION} (overfør og ta last)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Køyr utan stopp til {STATION} (last av)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Køyr utan stopp til {STATION} (overfør og forlat som tom)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Køyr utan stopp til {STATION} (last)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Køyr utan stopp til {STATION} (overfør og vent på full last)
+STR_GO_TO_TRANSFER                                              :Køyr til {STATION} (overfør og ta last)
+STR_8807_GO_TO_UNLOAD                                           :Køyr til {STATION} (last av)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Køyr til {STATION} (overfør og forlat som tom)
+STR_8808_GO_TO_LOAD                                             :Køyr til {STATION} (last)
+STR_GO_TO_TRANSFER_LOAD                                         :Køyr til {STATION} (overfør og vent på full last)
+STR_880A_GO_NON_STOP_TO                                         :Køyr utan stopp til {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Køyr utan stopp til {STATION} (overfør og ta last)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Køyr utan stopp til {STATION} (last av)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Køyr utan stopp til {STATION} (overfør og forlat som tom)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Køyr utan stopp til {STATION} (last)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Køyr utan stopp til {STATION} (overfør og vent på full last)
 STR_GO_TO_TRAIN_DEPOT                                           :Køyr til {TOWN} togstall
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Velikehald ved {TOWN} togstall
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Køyr utan stopp til togstallen i {TOWN}
@@ -2750,7 +2742,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Vis detaljar om innhaldet i vognene
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Vis detaljar om tog/vogner
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Vis kapasiteten til vognene
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Vis total kapasitet på vognene, sortert etter type vare
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Vis total kapasitet på vognene, sortert etter type vare
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordreliste - trykk på ein ordre for å velje han
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Hopp over gjedande ordre, og start neste.  CTRL + klikk hopper til valde ordre
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Slett den valde ordren
@@ -2781,8 +2773,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan ikkje snu toget...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Gje tog/vogn nytt namn
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Kan ikkje gje tog/vogn nytt namn...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Få den merka ordren til å tvinge køyretøyet til å dumpe lasta
-STR_886F_TRANSFER                                               :{BLACK}Overfør
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Få den merka ordren til å tvinge køyretøyet til å dumpe lasta
+STR_TRANSFER                                                    :{BLACK}Overfør
 STR_CLEAR_TIME                                                  :{BLACK}Fjern Tid
 STR_RESET_LATENESS                                              :{BLACK}Still attende teljaren for forseining
 
@@ -2859,8 +2851,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Namngje køyretøy
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Innbyggjarane jublar . . .{}Første buss kjem til {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Innbyggjarane jublar . . .{}Første lastebil kjem til {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første passasjertrikk kjem til{STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første fraktetrikk kjem til {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første passasjertrikk kjem til{STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første fraktetrikk kjem til {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Kollisjon!{}Sjåfør døyr etter kollisjon med tog
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Kollisjon!{}{COMMA} døyr etter kollisjon med tog
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan ikkje snu...
@@ -2869,7 +2861,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Endre namnet til køyretøytypen
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Endre namnet til køyretøytypen
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kan ikkje endre namnet til køyretøytypen...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Køyr til {TOWN} garasje
+STR_GO_TO_ROADVEH_DEPOT                                         :Køyr til {TOWN} garasje
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Vedlikehald ved {TOWN} garasje
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Bygg om køyretøyet til å ta ein annan type last
@@ -3270,7 +3262,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Å endre storleiken på kjeldekartet for mykje er ikkje anbefalt. Vil du halde fram med genereringa?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Åtvaring for byoppsett
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Byoppsettet "ingen fleire vegar" er ikkje anbefalt.  Hald fram med bygginga?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Høgdekartnamn:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Storleik: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Genererer verd...
@@ -3296,7 +3287,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Flytt landhøgda eitt nivå opp
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Endre høgda på flatt land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Høgde på flatt land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Still oversiktskartet midt på på den gjeldande posisjonen
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/piglatin.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/piglatin.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -1,3380 +1,3397 @@
-##name Pig latin
-##ownname Igpay atinlay
-##isocode xx_PL
-##plural 0
-
-#
-
-##id 0x0000
-STR_NULL                                                        :
-STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Offway edgeway ofway apmay
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Ootay oseclay otay edgeway ofway apmay
-STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Otnay enoughway ashcay - equiresray {CURRENCY}
-STR_0004                                                        :{WHITE}{CURRENCY}
-STR_EMPTY                                                       :
-STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Atflay andlay equiredray
-STR_0008_WAITING                                                :{BLACK}Aitingway: {WHITE}{STRING}
-STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (enway-outeray omfray
-STR_000B                                                        :{YELLOW}{STATION})
-STR_000C_ACCEPTS                                                :{BLACK}Acceptsway: {WHITE}
-STR_000D_ACCEPTS                                                :{BLACK}Acceptsway: {GOLD}
-STR_000E                                                        :
-STR_000F_PASSENGERS                                             :Assengerspay
-STR_0010_COAL                                                   :Oalcay
-STR_0011_MAIL                                                   :Ailmay
-STR_0012_OIL                                                    :Oilway
-STR_0013_LIVESTOCK                                              :Ivestocklay
-STR_0014_GOODS                                                  :Oodsgay
-STR_0015_GRAIN                                                  :Aingray
-STR_0016_WOOD                                                   :Oodway
-STR_0017_IRON_ORE                                               :Ironway Oreway
-STR_0018_STEEL                                                  :Eelstay
-STR_0019_VALUABLES                                              :Aluablesvay
-STR_001A_COPPER_ORE                                             :Oppercay Oreway
-STR_001B_MAIZE                                                  :Aizemay
-STR_001C_FRUIT                                                  :Uitfray
-STR_001D_DIAMONDS                                               :Iamondsday
-STR_001E_FOOD                                                   :Oodfay
-STR_001F_PAPER                                                  :Aperpay
-STR_0020_GOLD                                                   :Oldgay
-STR_0021_WATER                                                  :Aterway
-STR_0022_WHEAT                                                  :Eatwhay
-STR_0023_RUBBER                                                 :Ubberray
-STR_0024_SUGAR                                                  :Ugarsay
-STR_0025_TOYS                                                   :Oystay
-STR_0026_CANDY                                                  :Eetssway
-STR_0027_COLA                                                   :Olacay
-STR_0028_COTTON_CANDY                                           :Andyflosscay
-STR_0029_BUBBLES                                                :Ubblesbay
-STR_002A_TOFFEE                                                 :Offeetay
-STR_002B_BATTERIES                                              :Atteriesbay
-STR_002C_PLASTIC                                                :Asticplay
-STR_002D_FIZZY_DRINKS                                           :Izzyfay Inksdray
-STR_002E                                                        :
-STR_002F_PASSENGER                                              :Assengerpay
-STR_0030_COAL                                                   :Oalcay
-STR_0031_MAIL                                                   :Ailmay
-STR_0032_OIL                                                    :Oilway
-STR_0033_LIVESTOCK                                              :Ivestocklay
-STR_0034_GOODS                                                  :Oodsgay
-STR_0035_GRAIN                                                  :Aingray
-STR_0036_WOOD                                                   :Oodway
-STR_0037_IRON_ORE                                               :Ironway Oreway
-STR_0038_STEEL                                                  :Eelstay
-STR_0039_VALUABLES                                              :Aluablesvay
-STR_003A_COPPER_ORE                                             :Oppercay Oreway
-STR_003B_MAIZE                                                  :Aizemay
-STR_003C_FRUIT                                                  :Uitfray
-STR_003D_DIAMOND                                                :Iamondday
-STR_003E_FOOD                                                   :Oodfay
-STR_003F_PAPER                                                  :Aperpay
-STR_0040_GOLD                                                   :Oldgay
-STR_0041_WATER                                                  :Aterway
-STR_0042_WHEAT                                                  :Eatwhay
-STR_0043_RUBBER                                                 :Ubberray
-STR_0044_SUGAR                                                  :Ugarsay
-STR_0045_TOY                                                    :Oytay
-STR_0046_CANDY                                                  :Eetsway
-STR_0047_COLA                                                   :Olacay
-STR_0048_COTTON_CANDY                                           :Andyflosscay
-STR_0049_BUBBLE                                                 :Ubblebay
-STR_004A_TOFFEE                                                 :Offeetay
-STR_004B_BATTERY                                                :Atterybay
-STR_004C_PLASTIC                                                :Asticplay
-STR_004D_FIZZY_DRINK                                            :Izzyfay Inkdray
-STR_QUANTITY_NOTHING                                            :
-STR_QUANTITY_PASSENGERS                                         :{COMMA} assenger{P "" s}pay
-STR_QUANTITY_COAL                                               :{WEIGHT} ofway oalcay
-STR_QUANTITY_MAIL                                               :{COMMA} ag{P "" s}bay ofway ailmay
-STR_QUANTITY_OIL                                                :{VOLUME} ofway oilway
-STR_QUANTITY_LIVESTOCK                                          :{COMMA} item{P "" s}WAY ofway ivestocklay
-STR_QUANTITY_GOODS                                              :{COMMA} ate{P "" s}cray ofway oodsgay
-STR_QUANTITY_GRAIN                                              :{WEIGHT} ofway aingray
-STR_QUANTITY_WOOD                                               :{WEIGHT} ofway oodway
-STR_QUANTITY_IRON_ORE                                           :{WEIGHT} ofway ironway oreway
-STR_QUANTITY_STEEL                                              :{WEIGHT} ofway eelstay
-STR_QUANTITY_VALUABLES                                          :{COMMA} ag{P "" s}bay ofway aluablesvay
-STR_QUANTITY_COPPER_ORE                                         :{WEIGHT} ofway oppercay oreway
-STR_QUANTITY_MAIZE                                              :{WEIGHT} ofway aizemay
-STR_QUANTITY_FRUIT                                              :{WEIGHT} ofway uitfray
-STR_QUANTITY_DIAMONDS                                           :{COMMA} ag{P "" s}bay ofway iamondsday
-STR_QUANTITY_FOOD                                               :{WEIGHT} ofway oodfay
-STR_QUANTITY_PAPER                                              :{WEIGHT} ofway aperpay
-STR_QUANTITY_GOLD                                               :{COMMA} ag{P "" s}bay ofway oldgay
-STR_QUANTITY_WATER                                              :{VOLUME} ofway aterway
-STR_QUANTITY_WHEAT                                              :{WEIGHT} ofway eatwhay
-STR_QUANTITY_RUBBER                                             :{VOLUME} ofway ubberray
-STR_QUANTITY_SUGAR                                              :{WEIGHT} ofway ugarsay
-STR_QUANTITY_TOYS                                               :{COMMA} oy{P "" s}tay
-STR_QUANTITY_SWEETS                                             :{COMMA} ag{P "" s}bay ofway eetssway
-STR_QUANTITY_COLA                                               :{VOLUME} ofway olacay
-STR_QUANTITY_CANDYFLOSS                                         :{WEIGHT} ofway andyflosscay
-STR_QUANTITY_BUBBLES                                            :{COMMA} ubble{P "" s}bay
-STR_QUANTITY_TOFFEE                                             :{WEIGHT} ofway offeetay
-STR_QUANTITY_BATTERIES                                          :{COMMA} atter{P y ies}bay
-STR_QUANTITY_PLASTIC                                            :{VOLUME} ofway asticplay
-STR_QUANTITY_FIZZY_DRINKS                                       :{COMMA} izzyfay ink{P "" s}dray
-STR_ABBREV_NOTHING                                              :
-STR_ABBREV_PASSENGERS                                           :{TINYFONT}PSay
-STR_ABBREV_COAL                                                 :{TINYFONT}CLay
-STR_ABBREV_MAIL                                                 :{TINYFONT}MLay
-STR_ABBREV_OIL                                                  :{TINYFONT}OLWAY
-STR_ABBREV_LIVESTOCK                                            :{TINYFONT}LVay
-STR_ABBREV_GOODS                                                :{TINYFONT}GDay
-STR_ABBREV_GRAIN                                                :{TINYFONT}GRay
-STR_ABBREV_WOOD                                                 :{TINYFONT}WDay
-STR_ABBREV_IRON_ORE                                             :{TINYFONT}ORWAY
-STR_ABBREV_STEEL                                                :{TINYFONT}STay
-STR_ABBREV_VALUABLES                                            :{TINYFONT}VLay
-STR_ABBREV_COPPER_ORE                                           :{TINYFONT}OCay
-STR_ABBREV_MAIZE                                                :{TINYFONT}MZay
-STR_ABBREV_FRUIT                                                :{TINYFONT}FTay
-STR_ABBREV_DIAMONDS                                             :{TINYFONT}DMay
-STR_ABBREV_FOOD                                                 :{TINYFONT}FDay
-STR_ABBREV_PAPER                                                :{TINYFONT}PRay
-STR_ABBREV_GOLD                                                 :{TINYFONT}GDay
-STR_ABBREV_WATER                                                :{TINYFONT}WRay
-STR_ABBREV_WHEAT                                                :{TINYFONT}WHay
-STR_ABBREV_RUBBER                                               :{TINYFONT}RBay
-STR_ABBREV_SUGAR                                                :{TINYFONT}SGay
-STR_ABBREV_TOYS                                                 :{TINYFONT}YTay
-STR_ABBREV_SWEETS                                               :{TINYFONT}SWay
-STR_ABBREV_COLA                                                 :{TINYFONT}CLay
-STR_ABBREV_CANDYFLOSS                                           :{TINYFONT}CFay
-STR_ABBREV_BUBBLES                                              :{TINYFONT}UBay
-STR_ABBREV_TOFFEE                                               :{TINYFONT}TFay
-STR_ABBREV_BATTERIES                                            :{TINYFONT}BAay
-STR_ABBREV_PLASTIC                                              :{TINYFONT}PLay
-STR_ABBREV_FIZZY_DRINKS                                         :{TINYFONT}FZay
-STR_ABBREV_NONE                                                 :{TINYFONT}ONay
-STR_ABBREV_ALL                                                  :{TINYFONT}ALLWAY
-STR_00AE                                                        :{WHITE}{DATE_SHORT}
-STR_00AF                                                        :{WHITE}{DATE_LONG}
-STR_00B0_MAP                                                    :{WHITE}Apmay - {STRING}
-STR_00B1_GAME_OPTIONS                                           :{WHITE}Amegay Optionsway
-STR_00B2_MESSAGE                                                :{YELLOW}Essagemay
-STR_00B3_MESSAGE_FROM                                           :{YELLOW}Essagemay omfray {STRING}
-STR_POPUP_CAUTION_CAPTION                                       :{WHITE}Autioncay!
-STR_00B4_CAN_T_DO_THIS                                          :{WHITE}An'tcay oday isthay....
-STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}An'tcay earclay isthay areaway....
-STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Originalway opyrightcay {COPYRIGHT} 1995 Ischray Awyersay, Allway ightsray eservedray
-STR_00B7_VERSION                                                :{BLACK}OpenTTDWAY ersionvay {REV}
-STR_00BA_COPYRIGHT_OPENTTD                                      :{BLACK}OpenTTDWAY {COPYRIGHT}2002-2008 Ethay OpenTTDWAY eamtay
-STR_TRANSLATED_BY                                               :{BLACK}  Anslatortray(say) -
-
-STR_00C5                                                        :{BLACK}{CROSS}
-STR_00C6                                                        :{SILVER}{CROSS}
-STR_00C7_QUIT                                                   :{WHITE}Itquay
-STR_00C8_YES                                                    :{BLACK}Esyay
-STR_00C9_NO                                                     :{BLACK}Onay
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Areway ouyay uresay ouyay antway otay abandonway isthay amegay andway eturnray otay {STRING}?
-STR_00CB_1                                                      :{BLACK}1
-STR_00CC_2                                                      :{BLACK}2
-STR_00CD_3                                                      :{BLACK}3
-STR_00CE_4                                                      :{BLACK}4
-STR_00CF_5                                                      :{BLACK}5
-STR_00D0_NOTHING                                                :Othingnay
-STR_00D1_DARK_BLUE                                              :Arkday Ueblay
-STR_00D2_PALE_GREEN                                             :Alepay Eengray
-STR_00D3_PINK                                                   :Inkpay
-STR_00D4_YELLOW                                                 :Ellowyay
-STR_00D5_RED                                                    :Edray
-STR_00D6_LIGHT_BLUE                                             :Ightlay Ueblay
-STR_00D7_GREEN                                                  :Eengray
-STR_00D8_DARK_GREEN                                             :Arkday Eengray
-STR_00D9_BLUE                                                   :Ueblay
-STR_00DA_CREAM                                                  :Eamcray
-STR_00DB_MAUVE                                                  :Auvemay
-STR_00DC_PURPLE                                                 :Urplepay
-STR_00DD_ORANGE                                                 :Orangeway
-STR_00DE_BROWN                                                  :Ownbray
-STR_00DF_GREY                                                   :Eygray
-STR_00E0_WHITE                                                  :Itewhay
-STR_00E1_TOO_MANY_VEHICLES_IN_GAME                              :{WHITE}Ootay anymay ehiclesvay inway amegay
-STR_00E2                                                        :{BLACK}{COMMA}
-STR_00E3                                                        :{RED}{COMMA}
-STR_00E4_LOCATION                                               :{BLACK}Ocationlay
-STR_00E5_CONTOURS                                               :Ontourscay
-STR_00E6_VEHICLES                                               :Ehiclesvay
-STR_00E7_INDUSTRIES                                             :Industriesway
-STR_00E8_ROUTES                                                 :Outesray
-STR_00E9_VEGETATION                                             :Egetationvay
-STR_00EA_OWNERS                                                 :Ownersway
-STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Oadsray
-STR_00EC_RAILROADS                                              :{BLACK}{TINYFONT}Ailwaysray
-STR_00ED_STATIONS_AIRPORTS_DOCKS                                :{BLACK}{TINYFONT}Ationsstay/Airportsway/Ocksday
-STR_00EE_BUILDINGS_INDUSTRIES                                   :{BLACK}{TINYFONT}Uildingsbay/Industriesway
-STR_00EF_VEHICLES                                               :{BLACK}{TINYFONT}Ehiclesvay
-STR_00F0_100M                                                   :{BLACK}{TINYFONT}100may
-STR_00F1_200M                                                   :{BLACK}{TINYFONT}200may
-STR_00F2_300M                                                   :{BLACK}{TINYFONT}300may
-STR_00F3_400M                                                   :{BLACK}{TINYFONT}400may
-STR_00F4_500M                                                   :{BLACK}{TINYFONT}500may
-STR_00F5_TRAINS                                                 :{BLACK}{TINYFONT}Ainstray
-STR_00F6_ROAD_VEHICLES                                          :{BLACK}{TINYFONT}Oadray Ehiclesvay
-STR_00F7_SHIPS                                                  :{BLACK}{TINYFONT}Ipsshay
-STR_00F8_AIRCRAFT                                               :{BLACK}{TINYFONT}Aircraftway
-STR_00F9_TRANSPORT_ROUTES                                       :{BLACK}{TINYFONT}Ansporttray Outesray
-STR_00FA_COAL_MINE                                              :{BLACK}{TINYFONT}Oalcay Inemay
-STR_00FB_POWER_STATION                                          :{BLACK}{TINYFONT}Owerpay Ationstay
-STR_00FC_FOREST                                                 :{BLACK}{TINYFONT}Orestfay
-STR_00FD_SAWMILL                                                :{BLACK}{TINYFONT}Awmillsay
-STR_00FE_OIL_REFINERY                                           :{BLACK}{TINYFONT}Oilway Efineryray
-STR_00FF_FARM                                                   :{BLACK}{TINYFONT}Armfay
-STR_0100_FACTORY                                                :{BLACK}{TINYFONT}Actoryfay
-STR_0101_PRINTING_WORKS                                         :{BLACK}{TINYFONT}Intingpray Orksway
-STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Oilway Ellsway
-STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Ironway Oreway Inemay
-STR_0104_STEEL_MILL                                             :{BLACK}{TINYFONT}Eelstay Illmay
-STR_0105_BANK                                                   :{BLACK}{TINYFONT}Ankbay
-STR_0106_PAPER_MILL                                             :{BLACK}{TINYFONT}Aperpay Illmay
-STR_0107_GOLD_MINE                                              :{BLACK}{TINYFONT}Oldgay Inemay
-STR_0108_FOOD_PROCESSING_PLANT                                  :{BLACK}{TINYFONT}Oodfay Ocessingpray Antplay
-STR_0109_DIAMOND_MINE                                           :{BLACK}{TINYFONT}Iamondday Inemay
-STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Oppercay Oreway Inemay
-STR_010B_FRUIT_PLANTATION                                       :{BLACK}{TINYFONT}Uitfray Antationplay
-STR_010C_RUBBER_PLANTATION                                      :{BLACK}{TINYFONT}Ubberray Antationplay
-STR_010D_WATER_SUPPLY                                           :{BLACK}{TINYFONT}Aterway Upplysay
-STR_010E_WATER_TOWER                                            :{BLACK}{TINYFONT}Aterway Owertay
-STR_010F_LUMBER_MILL                                            :{BLACK}{TINYFONT}Umberlay Illmay
-STR_0110_COTTON_CANDY_FOREST                                    :{BLACK}{TINYFONT}Andyflosscay Orestfay
-STR_0111_CANDY_FACTORY                                          :{BLACK}{TINYFONT}Eetsway Actoryfay
-STR_0112_BATTERY_FARM                                           :{BLACK}{TINYFONT}Atterybay Armfay
-STR_0113_COLA_WELLS                                             :{BLACK}{TINYFONT}Olacay Ellsway
-STR_0114_TOY_SHOP                                               :{BLACK}{TINYFONT}Oytay Opshay
-STR_0115_TOY_FACTORY                                            :{BLACK}{TINYFONT}Oytay Actoryfay
-STR_0116_PLASTIC_FOUNTAINS                                      :{BLACK}{TINYFONT}Asticplay Ountainsfay
-STR_0117_FIZZY_DRINK_FACTORY                                    :{BLACK}{TINYFONT}Izzyfay Inkdray Actoryfay
-STR_0118_BUBBLE_GENERATOR                                       :{BLACK}{TINYFONT}Ubblebay Eneratorgay
-STR_0119_TOFFEE_QUARRY                                          :{BLACK}{TINYFONT}Offeetay Arryquay
-STR_011A_SUGAR_MINE                                             :{BLACK}{TINYFONT}Ugarsay Inemay
-STR_011B_RAILROAD_STATION                                       :{BLACK}{TINYFONT}Ailwayray Ationstay
-STR_011C_TRUCK_LOADING_BAY                                      :{BLACK}{TINYFONT}Orrylay Oadinglay Aybay
-STR_011D_BUS_STATION                                            :{BLACK}{TINYFONT}Usbay Ationstay
-STR_011E_AIRPORT_HELIPORT                                       :{BLACK}{TINYFONT}Airportway/Eliporthay
-STR_011F_DOCK                                                   :{BLACK}{TINYFONT}Ockday
-STR_0120_ROUGH_LAND                                             :{BLACK}{TINYFONT}Oughray Andlay
-STR_0121_GRASS_LAND                                             :{BLACK}{TINYFONT}Assgray Andlay
-STR_0122_BARE_LAND                                              :{BLACK}{TINYFONT}Arebay Andlay
-STR_0123_FIELDS                                                 :{BLACK}{TINYFONT}Ieldsfay
-STR_0124_TREES                                                  :{BLACK}{TINYFONT}Eestray
-STR_0125_ROCKS                                                  :{BLACK}{TINYFONT}Ocksray
-STR_0126_WATER                                                  :{BLACK}{TINYFONT}Aterway
-STR_0127_NO_OWNER                                               :{BLACK}{TINYFONT}Onay Ownerway
-STR_0128_TOWNS                                                  :{BLACK}{TINYFONT}Ownstay
-STR_0129_INDUSTRIES                                             :{BLACK}{TINYFONT}Industriesway
-STR_012A_DESERT                                                 :{BLACK}{TINYFONT}Esertday
-STR_012B_SNOW                                                   :{BLACK}{TINYFONT}Owsnay
-STR_012C_MESSAGE                                                :{WHITE}Essagemay
-STR_012D                                                        :{WHITE}{STRING}
-STR_012E_CANCEL                                                 :{BLACK}Ancelcay
-STR_012F_OK                                                     :{BLACK}OKWAY
-STR_0130_RENAME                                                 :{BLACK}Enameray
-STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Ootay anymay amesnay efinedday
-STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Osenchay amenay alreadyway inway useway
-
-STR_0133_WINDOWS                                                :Indowsway
-STR_0134_UNIX                                                   :Unixway
-STR_0135_OSX                                                    :OSWAY Xay
-STR_OSNAME_BEOS                                                 :EOSbay
-STR_OSNAME_MORPHOS                                              :OrphOSmay
-STR_OSNAME_AMIGAOS                                              :AmigaOSWAY
-STR_OSNAME_OS2                                                  :OSWAY/2
-STR_OSNAME_SUNOS                                                :UnOSsay
-
-STR_013B_OWNED_BY                                               :{WHITE}...ownedway ybay {STRING}
-STR_013C_CARGO                                                  :{BLACK}Argocay
-STR_013D_INFORMATION                                            :{BLACK}Informationway
-STR_013E_CAPACITIES                                             :{BLACK}Apacitiescay
-STR_013E_TOTAL_CARGO                                            :{BLACK}Otaltay Argocay
-STR_013F_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
-STR_CAPACITY_MULT                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO} (xay{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Otaltay argocay apacitycay ofway isthay aintray:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
-STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (xay{NUM})
-STR_0140_NEW_GAME                                               :{BLACK}Ewnay Amegay
-STR_0141_LOAD_GAME                                              :{BLACK}Oadlay Amegay
-STR_SINGLE_PLAYER                                               :{BLACK}Inglesay ayerplay
-STR_MULTIPLAYER                                                 :{BLACK}Ultiplayermay
-STR_SCENARIO_EDITOR                                             :{BLACK}Enarioscay Editorway
-
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
-STR_MAPSIZE                                                     :{BLACK}Apmay izesay:
-STR_BY                                                          :{BLACK}*
-STR_0148_GAME_OPTIONS                                           :{BLACK}Amegay Optionsway
-
-STR_0150_SOMEONE                                                :omeonesay{SKIP}{SKIP}
-STR_0151_MAP_OF_WORLD                                           :Apmay ofway orldway
-STR_0152_TOWN_DIRECTORY                                         :Owntay irectoryday
-STR_0153_SUBSIDIES                                              :Ubsidiessay
-
-STR_UNITS_IMPERIAL                                              :Imperialway
-STR_UNITS_METRIC                                                :Etricmay
-STR_UNITS_SI                                                    :ISay
-
-STR_UNITS_VELOCITY_IMPERIAL                                     :{COMMA} mphay
-STR_UNITS_VELOCITY_METRIC                                       :{COMMA} kmay/hay
-STR_UNITS_VELOCITY_SI                                           :{COMMA} may/say
-
-STR_UNITS_POWER_IMPERIAL                                        :{COMMA}hpay
-STR_UNITS_POWER_METRIC                                          :{COMMA}hpay
-STR_UNITS_POWER_SI                                              :{COMMA}kWay
-
-STR_UNITS_WEIGHT_SHORT_IMPERIAL                                 :{COMMA}tay
-STR_UNITS_WEIGHT_SHORT_METRIC                                   :{COMMA}tay
-STR_UNITS_WEIGHT_SHORT_SI                                       :{COMMA}kgay
-
-STR_UNITS_WEIGHT_LONG_IMPERIAL                                  :{COMMA} on{P "" s}tay
-STR_UNITS_WEIGHT_LONG_METRIC                                    :{COMMA} onne{P "" s}tay
-STR_UNITS_WEIGHT_LONG_SI                                        :{COMMA} kgay
-
-STR_UNITS_VOLUME_SHORT_IMPERIAL                                 :{COMMA}algay
-STR_UNITS_VOLUME_SHORT_METRIC                                   :{COMMA}lay
-STR_UNITS_VOLUME_SHORT_SI                                       :{COMMA}may³
-
-STR_UNITS_VOLUME_LONG_IMPERIAL                                  :{COMMA} allon{P "" s}gay
-STR_UNITS_VOLUME_LONG_METRIC                                    :{COMMA} itre{P "" s}lay
-STR_UNITS_VOLUME_LONG_SI                                        :{COMMA} may³
-
-STR_UNITS_FORCE_IMPERIAL                                        :{COMMA}xay10³ lbfay
-STR_UNITS_FORCE_METRIC                                          :{COMMA} ontay orcefay
-STR_UNITS_FORCE_SI                                              :{COMMA} kNay
-
-############ range for menu starts
-STR_0154_OPERATING_PROFIT_GRAPH                                 :Operatingway ofitpray aphgray
-STR_0155_INCOME_GRAPH                                           :Incomeway aphgray
-STR_0156_DELIVERED_CARGO_GRAPH                                  :Eliveredday argocay aphgray
-STR_0157_PERFORMANCE_HISTORY_GRAPH                              :Erformancepay istoryhay aphgray
-STR_0158_COMPANY_VALUE_GRAPH                                    :Ompanycay aluevay aphgray
-STR_0159_CARGO_PAYMENT_RATES                                    :Argocay aymentpay atesray
-STR_015A_COMPANY_LEAGUE_TABLE                                   :Ompanycay eaguelay abletay
-STR_PERFORMANCE_DETAIL_MENU                                     :Etailedday erformancepay atingray
-############ range for menu ends
-
-STR_015B_OPENTTD                                                :{WHITE}Aboutway OpenTTDWAY
-STR_015C_SAVE_GAME                                              :Avesay amegay
-STR_015D_LOAD_GAME                                              :Oadlay amegay
-STR_015E_QUIT_GAME                                              :Abandonway amegay
-STR_015F_QUIT                                                   :Exitway
-STR_ABANDON_GAME_QUERY                                          :{YELLOW}Areway ouyay uresay ouyay antway otay abandonway isthay amegay?
-STR_0161_QUIT_GAME                                              :{WHITE}Abandonway Amegay
-STR_SORT_ORDER_TIP                                              :{BLACK}Electsay ortingsay orderway (escendingday/ascendingway)
-STR_SORT_CRITERIA_TIP                                           :{BLACK}Electsay ortingsay iteriacray
-STR_SORT_BY                                                     :{BLACK}Ortsay ybay
-
-STR_SORT_BY_POPULATION                                          :{BLACK}Opulationpay
-STR_SORT_BY_PRODUCTION                                          :{BLACK}Oductionpray
-STR_SORT_BY_TYPE                                                :{BLACK}Ypetay
-STR_SORT_BY_TRANSPORTED                                         :{BLACK}Ansportedtray
-STR_SORT_BY_NAME                                                :{BLACK}Amenay
-STR_SORT_BY_DROPDOWN_NAME                                       :Amenay
-STR_SORT_BY_DATE                                                :{BLACK}Ateday
-STR_SORT_BY_NUMBER                                              :Umbernay
-STR_SORT_BY_PROFIT_LAST_YEAR                                    :Ofitpray astlay earyay
-STR_SORT_BY_PROFIT_THIS_YEAR                                    :Ofitpray isthay earyay
-STR_SORT_BY_AGE                                                 :Ageway
-STR_SORT_BY_RELIABILITY                                         :Eliabilityray
-STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Otaltay apacitycay erpay argocay ypetay
-STR_SORT_BY_MAX_SPEED                                           :Aximummay eedspay
-STR_SORT_BY_MODEL                                               :Odelmay
-STR_SORT_BY_VALUE                                               :Aluevay
-STR_SORT_BY_FACILITY                                            :Ationstay ypetay
-STR_SORT_BY_WAITING                                             :Aitingway argocay aluevay
-STR_SORT_BY_RATING_MAX                                          :Argocay atingray
-STR_ENGINE_SORT_ENGINE_ID                                       :EngineIDWAY (assicclay ortsay)
-STR_ENGINE_SORT_COST                                            :Ostcay
-STR_ENGINE_SORT_POWER                                           :Owerpay
-STR_ENGINE_SORT_INTRO_DATE                                      :Introductionway Ateday
-STR_ENGINE_SORT_RUNNING_COST                                    :Unningray Ostcay
-STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Owerpay/Unningray Ostcay
-STR_ENGINE_SORT_CARGO_CAPACITY                                  :Argocay Apacitycay
-STR_NO_WAITING_CARGO                                            :{BLACK}Onay argocay ofway anyway ypetay isway aitingway
-STR_SELECT_ALL_FACILITIES                                       :{BLACK}Electsay allway acilitiesfay
-STR_SELECT_ALL_TYPES                                            :{BLACK}Electsay allway argocay ypestay (includingway onay aitingway argocay)
-STR_AVAILABLE_TRAINS                                            :{BLACK}Availableway Ainstray
-STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Availableway Ehiclesvay
-STR_AVAILABLE_SHIPS                                             :{BLACK}Availableway Ipsshay
-STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Availableway Aircraftway
-STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Eesay away istlay ofway availableway engineway esignsday orfay isthay ehiclevay ypetay.
-STR_MANAGE_LIST                                                 :{BLACK}Anagemay istlay
-STR_MANAGE_LIST_TIP                                             :{BLACK}Endsay instructionsway otay allway ehiclesvay inway isthay istlay
-STR_REPLACE_VEHICLES                                            :Eplaceray ehiclesvay
-STR_SEND_TRAIN_TO_DEPOT                                         :Endsay otay Epotday
-STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Endsay otay Epotday
-STR_SEND_SHIP_TO_DEPOT                                          :Endsay otay Epotday
-STR_SEND_AIRCRAFT_TO_HANGAR                                     :Endsay otay Angarhay
-STR_SEND_FOR_SERVICING                                          :Endsay orfay Ervicingsay
-
-############ range for months starts
-STR_0162_JAN                                                    :Anjay
-STR_0163_FEB                                                    :Ebfay
-STR_0164_MAR                                                    :Armay
-STR_0165_APR                                                    :Aprway
-STR_0166_MAY                                                    :Aymay
-STR_0167_JUN                                                    :Unjay
-STR_0168_JUL                                                    :Uljay
-STR_0169_AUG                                                    :Augway
-STR_016A_SEP                                                    :Epsay
-STR_016B_OCT                                                    :Octway
-STR_016C_NOV                                                    :Ovnay
-STR_016D_DEC                                                    :Ecday
-############ range for months ends
-
-STR_016E                                                        :{TINYFONT}{STRING}{} {STRING}
-STR_016F                                                        :{TINYFONT}{STRING}{} {STRING}{}{NUM}
-STR_0170                                                        :{TINYFONT}{STRING}-
-STR_0171_PAUSE_GAME                                             :{BLACK}Ausepay amegay
-STR_0172_SAVE_GAME_ABANDON_GAME                                 :{BLACK}Avesay amegay, abandonway amegay, itquay
-STR_0173_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ationsstay
-STR_0174_DISPLAY_MAP                                            :{BLACK}Isplayday apmay
-STR_0175_DISPLAY_MAP_TOWN_DIRECTORY                             :{BLACK}Isplayday apmay, owntay irectoryday
-STR_0176_DISPLAY_TOWN_DIRECTORY                                 :{BLACK}Isplayday owntay irectoryday
-STR_0177_DISPLAY_COMPANY_FINANCES                               :{BLACK}Isplayday ompanycay inancesfay informationway
-STR_0178_DISPLAY_COMPANY_GENERAL                                :{BLACK}Isplayday eneralgay ompanycay informationway
-STR_0179_DISPLAY_GRAPHS                                         :{BLACK}Isplayday aphsgray
-STR_017A_DISPLAY_COMPANY_LEAGUE                                 :{BLACK}Isplayday ompanycay eaguelay abletay
-STR_017B_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ainstray
-STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay oadray ehiclesvay
-STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ipsshay
-STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay aircraftway
-STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Oomzay ethay iewvay inway
-STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Oomzay ethay iewvay outway
-STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Uildbay ailwayray acktray
-STR_0182_BUILD_ROADS                                            :{BLACK}Uildbay oadsray
-STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}Uildbay ipshay ocksday
-STR_0184_BUILD_AIRPORTS                                         :{BLACK}Uildbay airportsway
-STR_0185_PLANT_TREES_PLACE_SIGNS                                :{BLACK}Antplay eestray, aceplay ignssay etcway.
-STR_0186_LAND_BLOCK_INFORMATION                                 :{BLACK}Andlay areaway informationway
-STR_0187_OPTIONS                                                :{BLACK}Optionsway
-STR_0188                                                        :{BLACK}{SMALLUPARROW}
-STR_0189                                                        :{BLACK}{SMALLDOWNARROW}
-STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}An'tcay angechay ervicingsay intervalway...
-STR_018B_CLOSE_WINDOW                                           :{BLACK}Oseclay indowway
-STR_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}Indowway itletay - agdray isthay otay ovemay indowway
-STR_STICKY_BUTTON                                               :{BLACK}Arkmay isthay indowway asway uncloseableway ybay ethay 'Oseclay Allway Indows'way eykay
-STR_RESIZE_BUTTON                                               :{BLACK}Ickclay andway agdray otay esizeray isthay indowway
-STR_SAVELOAD_HOME_BUTTON                                        :{BLACK}Ickclay erehay otay umpjay otay ethay urrentcay efaultday avesay/oadlay irectoryday
-STR_018D_DEMOLISH_BUILDINGS_ETC                                 :{BLACK}Emolishday uildingsbay etcway. onway away aresquay ofway andlay
-STR_018E_LOWER_A_CORNER_OF_LAND                                 :{BLACK}Owerlay away ornercay ofway andlay
-STR_018F_RAISE_A_CORNER_OF_LAND                                 :{BLACK}Aiseray away ornercay ofway andlay
-STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Ollscray arbay - ollsscray istlay upway/ownday
-STR_HSCROLL_BAR_SCROLLS_LIST                                    :{BLACK}Ollscray arbay - ollsscray istlay eftlay/ightray
-STR_0191_SHOW_LAND_CONTOURS_ON_MAP                              :{BLACK}Owshay andlay ontourscay onway apmay
-STR_0192_SHOW_VEHICLES_ON_MAP                                   :{BLACK}Owshay ehiclesvay onway apmay
-STR_0193_SHOW_INDUSTRIES_ON_MAP                                 :{BLACK}Owshay industriesway onway apmay
-STR_0194_SHOW_TRANSPORT_ROUTES_ON                               :{BLACK}Owshay ansporttray outesray onway apmay
-STR_0195_SHOW_VEGETATION_ON_MAP                                 :{BLACK}Owshay egetationvay onway apmay
-STR_0196_SHOW_LAND_OWNERS_ON_MAP                                :{BLACK}Owshay andlay ownersway onway apmay
-STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Oggletay owntay amesnay onway/offway onway apmay
-STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}Ofitpray isthay earyay: {CURRENCY} (astlay earyay: {CURRENCY})
-
-############ range for service numbers starts
-STR_AGE                                                         :{COMMA} ear{P "" s}yay ({COMMA})
-STR_AGE_RED                                                     :{RED}{COMMA} ear{P "" s}yay ({COMMA})
-############ range for service numbers ends
-
-STR_019C_ROAD_VEHICLE                                           :Oadray ehiclevay
-STR_019D_AIRCRAFT                                               :Aircraftway
-STR_019E_SHIP                                                   :Ipshay
-STR_019F_TRAIN                                                  :Aintray
-STR_01A0_IS_GETTING_OLD                                         :{WHITE}{STRING} {COMMA} isway ettinggay oldway
-STR_01A1_IS_GETTING_VERY_OLD                                    :{WHITE}{STRING} {COMMA} isway ettinggay eryvay oldway
-STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} isway ettinggay eryvay oldway andway urgentlyway eedsnay eplacingray
-STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Andlay Areaway Informationway
-STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Ostcay otay earclay: {LTBLUE}Nay/Away
-STR_01A5_COST_TO_CLEAR                                          :{BLACK}Ostcay otay earclay: {LTBLUE}{CURRENCY}
-STR_01A6_N_A                                                    :Nay/Away
-STR_01A7_OWNER                                                  :{BLACK}Ownerway: {LTBLUE}{STRING}
-STR_01A8_LOCAL_AUTHORITY                                        :{BLACK}Ocallay authorityway: {LTBLUE}{STRING}
-STR_01A9_NONE                                                   :Onenay
-STR_01AA_NAME                                                   :{BLACK}Amenay
-STR_01AB                                                        :{BLACK}{TINYFONT}{VEHICLE}
-
-############ range for days starts
-STR_01AC_1ST                                                    :1stay
-STR_01AD_2ND                                                    :2nday
-STR_01AE_3RD                                                    :3rday
-STR_01AF_4TH                                                    :4thay
-STR_01B0_5TH                                                    :5thay
-STR_01B1_6TH                                                    :6thay
-STR_01B2_7TH                                                    :7thay
-STR_01B3_8TH                                                    :8thay
-STR_01B4_9TH                                                    :9thay
-STR_01B5_10TH                                                   :10thay
-STR_01B6_11TH                                                   :11thay
-STR_01B7_12TH                                                   :12thay
-STR_01B8_13TH                                                   :13thay
-STR_01B9_14TH                                                   :14thay
-STR_01BA_15TH                                                   :15thay
-STR_01BB_16TH                                                   :16thay
-STR_01BC_17TH                                                   :17thay
-STR_01BD_18TH                                                   :18thay
-STR_01BE_19TH                                                   :19thay
-STR_01BF_20TH                                                   :20thay
-STR_01C0_21ST                                                   :21stay
-STR_01C1_22ND                                                   :22nday
-STR_01C2_23RD                                                   :23rday
-STR_01C3_24TH                                                   :24thay
-STR_01C4_25TH                                                   :25thay
-STR_01C5_26TH                                                   :26thay
-STR_01C6_27TH                                                   :27thay
-STR_01C7_28TH                                                   :28thay
-STR_01C8_29TH                                                   :29thay
-STR_01C9_30TH                                                   :30thay
-STR_01CA_31ST                                                   :31stay
-############ range for days ends
-
-STR_01CB                                                        :{TINYFONT}{COMMA}
-
-STR_01CE_CARGO_ACCEPTED                                         :{BLACK}Argocay acceptedway: {LTBLUE}
-
-STR_01D1_8                                                      :({COMMA}/8 {STRING})
-STR_01D2_JAZZ_JUKEBOX                                           :{WHITE}Azzjay Ukeboxjay
-STR_01D3_SOUND_MUSIC                                            :Oundsay/usicmay
-STR_01D4_SHOW_SOUND_MUSIC_WINDOW                                :{BLACK}Owshay oundsay/usicmay indowway
-STR_01D5_ALL                                                    :{TINYFONT}Allway
-STR_01D6_OLD_STYLE                                              :{TINYFONT}Oldway Ylestay
-STR_01D7_NEW_STYLE                                              :{TINYFONT}Ewnay Ylestay
-STR_01D8_EZY_STREET                                             :{TINYFONT}Ezyway Eetstray
-STR_01D9_CUSTOM_1                                               :{TINYFONT}Ustomcay 1
-STR_01DA_CUSTOM_2                                               :{TINYFONT}Ustomcay 2
-STR_01DB_MUSIC_VOLUME                                           :{BLACK}{TINYFONT}Usicmay Olumevay
-STR_01DC_EFFECTS_VOLUME                                         :{BLACK}{TINYFONT}Effectsway Olumevay
-STR_01DD_MIN_MAX                                                :{BLACK}{TINYFONT}INMay  '  '  ' '  '  '  MAXay
-STR_01DE_SKIP_TO_PREVIOUS_TRACK                                 :{BLACK}Ipskay otay eviouspray acktray inway electionsay
-STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION                        :{BLACK}Ipskay otay extnay acktray inway electionsay
-STR_01E0_STOP_PLAYING_MUSIC                                     :{BLACK}Opstay ayingplay usicmay
-STR_01E1_START_PLAYING_MUSIC                                    :{BLACK}Artstay ayingplay usicmay
-STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC                              :{BLACK}Agdray idersslay otay etsay usicmay andway oundsay effectway olumesvay
-STR_01E3                                                        :{DKGREEN}{TINYFONT}--
-STR_01E4_0                                                      :{DKGREEN}{TINYFONT}0{COMMA}
-STR_01E5                                                        :{DKGREEN}{TINYFONT}{COMMA}
-STR_01E6                                                        :{DKGREEN}{TINYFONT}------
-STR_01E7                                                        :{DKGREEN}{TINYFONT}"{STRING}"
-STR_01E8_TRACK_XTITLE                                           :{BLACK}{TINYFONT}Acktray{SETX 88}Itletay
-STR_01E9_SHUFFLE                                                :{TINYFONT}Uffleshay
-STR_01EA_PROGRAM                                                :{TINYFONT}{BLACK}Ogrammepray
-STR_01EB_MUSIC_PROGRAM_SELECTION                                :{WHITE}Usicmay Ogrammepray Electionsay
-STR_01EC_0                                                      :{TINYFONT}{LTBLUE}0{COMMA} "{STRING}"
-STR_01ED                                                        :{TINYFONT}{LTBLUE}{COMMA} "{STRING}"
-STR_01EE_TRACK_INDEX                                            :{TINYFONT}{BLACK}Acktray Indexway
-STR_01EF_PROGRAM                                                :{TINYFONT}{BLACK}Ogrammepray - '{STRING}'
-STR_01F0_CLEAR                                                  :{TINYFONT}{BLACK}Earclay
-STR_01F1_SAVE                                                   :{TINYFONT}{BLACK}Avesay
-STR_01F2_CURRENT_PROGRAM_OF_MUSIC                               :{BLACK}Urrentcay ogrammepray ofway usicmay ackstray
-STR_01F3_SELECT_ALL_TRACKS_PROGRAM                              :{BLACK}Electsay 'allway acks'tray ogrammepray
-STR_01F4_SELECT_OLD_STYLE_MUSIC                                 :{BLACK}Electsay 'oldway ylestay usic'may ogrammepray
-STR_01F5_SELECT_NEW_STYLE_MUSIC                                 :{BLACK}Electsay 'ewnay ylestay usic'may ogrammepray
-STR_01F6_SELECT_CUSTOM_1_USER_DEFINED                           :{BLACK}Electsay 'Ustomcay 1' (userway-efinedday) ogrammepray
-STR_01F7_SELECT_CUSTOM_2_USER_DEFINED                           :{BLACK}Electsay 'Ustomcay 2' (userway-efinedday) ogrammepray
-STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Earclay urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
-STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Avesay usicmay ettingssay
-STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Ickclay onway usicmay acktray otay addway otay urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
-STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Ickclay onway usicmay acktray otay emoveray itway omfray urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
-STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Oggletay ogrammepray uffleshay onway/offway
-STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Owshay usicmay acktray electionsay indowway
-STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Ickclay onway ervicesay otay entrecay iewvay onway industryway/owntay
-STR_01FE_DIFFICULTY                                             :{BLACK}Ifficultyday ({STRING})
-STR_01FF                                                        :{TINYFONT}{BLACK}{DATE_LONG}
-STR_0200_LAST_MESSAGE_NEWS_REPORT                               :Astlay essagemay/ewsnay eportray
-STR_0201_MESSAGE_SETTINGS                                       :Essagemay ettingssay
-STR_MESSAGE_HISTORY_MENU                                        :Essagemay Istoryhay
-STR_0203_SHOW_LAST_MESSAGE_NEWS                                 :{BLACK}Owshay astlay essagemay/ewsnay eportray, owshay essagemay optionsway
-STR_0204_MESSAGE_OPTIONS                                        :{WHITE}Essagemay Optionsway
-STR_0205_MESSAGE_TYPES                                          :{BLACK}Essagemay ypestay:
-STR_0206_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Arrivalway ofway irstfay ehiclevay atway ayer'splay ationstay
-STR_0207_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Arrivalway ofway irstfay ehiclevay atway ompetitor'scay ationstay
-STR_0208_ACCIDENTS_DISASTERS                                    :{YELLOW}Accidentsway / isastersday
-STR_0209_COMPANY_INFORMATION                                    :{YELLOW}Ompanycay informationway
-STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Openway / oseclay ofway industriesway
-STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Economyway angeschay
-STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Adviceway / informationway onway ayer'splay ehiclesvay
-STR_020C_NEW_VEHICLES                                           :{YELLOW}Ewnay ehiclesvay
-STR_020D_CHANGES_OF_CARGO_ACCEPTANCE                            :{YELLOW}Angeschay otay argocay acceptanceway
-STR_020E_SUBSIDIES                                              :{YELLOW}Ubsidiessay
-STR_020F_GENERAL_INFORMATION                                    :{YELLOW}Eneralgay informationway
-STR_MESSAGES_ALL                                                :{YELLOW}Etsay allway essagemay ypestay otay: Offway / Ummarysay/ Ullfay
-STR_MESSAGE_SOUND                                               :{YELLOW}Ayplay oundsay orfay ummarisedsay ewsnay essagesmay
-STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO                       :{WHITE}...ootay arfay omfray eviouspray estinationday
-STR_0211_TOP_COMPANIES_WHO_REACHED                              :{BIGFONT}{BLACK}Optay ompaniescay owhay eachedray {NUM}{}({STRING} Evellay)
-STR_TOP_COMPANIES_NETWORK_GAME                                  :{BIGFONT}{BLACK}Ompanycay Eaguelay Abletay inway {NUM}
-STR_0212                                                        :{BIGFONT}{COMMA}.
-STR_0213_BUSINESSMAN                                            :Usinessmanbay
-STR_0214_ENTREPRENEUR                                           :Entrepreneurway
-STR_0215_INDUSTRIALIST                                          :Industrialistway
-STR_0216_CAPITALIST                                             :Apitalistcay
-STR_0217_MAGNATE                                                :Agnatemay
-STR_0218_MOGUL                                                  :Ogulmay
-STR_0219_TYCOON_OF_THE_CENTURY                                  :Ycoontay ofway ethay Enturycay
-STR_HIGHSCORE_NAME                                              :{BIGFONT}{PLAYERNAME}, {COMPANY}
-STR_HIGHSCORE_STATS                                             :{BIGFONT}'{STRING}'   ({COMMA})
-STR_021B_ACHIEVES_STATUS                                        :{BLACK}{BIGFONT}{COMPANY} achievesway '{STRING}' atusstay!
-STR_021C_OF_ACHIEVES_STATUS                                     :{WHITE}{BIGFONT}{PLAYERNAME} ofway {COMPANY} achievesway '{STRING}' atusstay!
-STR_021F                                                        :{BLUE}{COMMA}
-STR_0221_OPENTTD                                                :{YELLOW}OpenTTDWAY
-STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Enarioscay Editorway
-STR_0223_LAND_GENERATION                                        :{WHITE}Andlay Enerationgay
-STR_0224                                                        :{BLACK}{UPARROW}
-STR_0225                                                        :{BLACK}{DOWNARROW}
-STR_0228_INCREASE_SIZE_OF_LAND_AREA                             :{BLACK}Increaseway areaway ofway andlay otay owerlay/aiseray
-STR_0229_DECREASE_SIZE_OF_LAND_AREA                             :{BLACK}Ecreaseday areaway ofway andlay otay owerlay/aiseray
-STR_022A_GENERATE_RANDOM_LAND                                   :{BLACK}Enerategay andomray andlay
-STR_022B_RESET_LANDSCAPE                                        :{BLACK}Esetray andscapelay
-STR_022C_RESET_LANDSCAPE                                        :{WHITE}Esetray Andscapelay
-STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Emoveray allway ayerplay-ownedway opertypray omfray ethay apmay
-STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Areway ouyay uresay ouyay antway otay emoveray allway ayerplay-ownedway opertypray?
-STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Andscapelay enerationgay
-STR_022F_TOWN_GENERATION                                        :{BLACK}Owntay enerationgay
-STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Industryway enerationgay
-STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Oadray onstructioncay
-STR_0233_TOWN_GENERATION                                        :{WHITE}Owntay Enerationgay
-STR_0234_NEW_TOWN                                               :{BLACK}Ewnay Owntay
-STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Onstructcay ewnay owntay
-STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}An'tcay uildbay owntay erehay...
-STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...ootay oseclay otay edgeway ofway apmay
-STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...ootay oseclay otay anotherway owntay
-STR_0239_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
-STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...ootay anymay ownstay
-STR_CANNOT_GENERATE_TOWN                                        :{WHITE}An'tcay uildbay anyway ownstay
-STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...erethay isway onay oremay acespay onway ethay apmay
-STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Increaseway izesay ofway owntay
-STR_023C_EXPAND                                                 :{BLACK}Expandway
-STR_023D_RANDOM_TOWN                                            :{BLACK}Andomray Owntay
-STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION                          :{BLACK}Uildbay owntay inway andomray ocationlay
-STR_023F_INDUSTRY_GENERATION                                    :{WHITE}Industryway Enerationgay
-STR_0240_COAL_MINE                                              :{BLACK}Oalcay Inemay
-STR_0241_POWER_STATION                                          :{BLACK}Owerpay Ationstay
-STR_0242_SAWMILL                                                :{BLACK}Awmillsay
-STR_0243_FOREST                                                 :{BLACK}Orestfay
-STR_0244_OIL_REFINERY                                           :{BLACK}Oilway Efineryray
-STR_0245_OIL_RIG                                                :{BLACK}Oilway Igray
-STR_0246_FACTORY                                                :{BLACK}Actoryfay
-STR_0247_STEEL_MILL                                             :{BLACK}Eelstay Illmay
-STR_0248_FARM                                                   :{BLACK}Armfay
-STR_0249_IRON_ORE_MINE                                          :{BLACK}Ironway Oreway Inemay
-STR_024A_OIL_WELLS                                              :{BLACK}Oilway Ellsway
-STR_024B_BANK                                                   :{BLACK}Ankbay
-STR_024C_PAPER_MILL                                             :{BLACK}Aperpay Illmay
-STR_024D_FOOD_PROCESSING_PLANT                                  :{BLACK}Oodfay Ocessingpray Antplay
-STR_024E_PRINTING_WORKS                                         :{BLACK}Intingpray Orksway
-STR_024F_GOLD_MINE                                              :{BLACK}Oldgay Inemay
-STR_0250_LUMBER_MILL                                            :{BLACK}Umberlay Illmay
-STR_0251_FRUIT_PLANTATION                                       :{BLACK}Uitfray Antationplay
-STR_0252_RUBBER_PLANTATION                                      :{BLACK}Ubberray Antationplay
-STR_0253_WATER_SUPPLY                                           :{BLACK}Aterway Upplysay
-STR_0254_WATER_TOWER                                            :{BLACK}Aterway Owertay
-STR_0255_DIAMOND_MINE                                           :{BLACK}Iamondday Inemay
-STR_0256_COPPER_ORE_MINE                                        :{BLACK}Oppercay Oreway Inemay
-STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Andyflosscay Orestfay
-STR_0258_CANDY_FACTORY                                          :{BLACK}Eetsway Actoryfay
-STR_0259_BATTERY_FARM                                           :{BLACK}Atterybay Armfay
-STR_025A_COLA_WELLS                                             :{BLACK}Olacay Ellsway
-STR_025B_TOY_SHOP                                               :{BLACK}Oytay Opshay
-STR_025C_TOY_FACTORY                                            :{BLACK}Oytay Actoryfay
-STR_025D_PLASTIC_FOUNTAINS                                      :{BLACK}Asticplay Ountainsfay
-STR_025E_FIZZY_DRINK_FACTORY                                    :{BLACK}Izzyfay Inkdray Actoryfay
-STR_025F_BUBBLE_GENERATOR                                       :{BLACK}Ubblebay Eneratorgay
-STR_0260_TOFFEE_QUARRY                                          :{BLACK}Offeetay Arryquay
-STR_0261_SUGAR_MINE                                             :{BLACK}Ugarsay Inemay
-STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}Onstructcay Oalcay Inemay
-STR_0263_CONSTRUCT_POWER_STATION                                :{BLACK}Onstructcay Owerpay Ationstay
-STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Onstructcay Awmillsay
-STR_0265_PLANT_FOREST                                           :{BLACK}Antplay Orestfay
-STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Onstructcay Oilway Efineryray
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Onstructcay Oilway Igray (Ancay onlyway ebay uiltbay earnay ethay edgesway ofway ethay apmay)
-STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Onstructcay Actoryfay
-STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Onstructcay Eelstay Illmay
-STR_026A_CONSTRUCT_FARM                                         :{BLACK}Onstructcay Armfay
-STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Onstructcay Ironway Oreway Inemay
-STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Onstructcay Oilway Ellsway
-STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Onstructcay Ankbay (Ancay onlyway ebay uiltbay inway ownstay ithway away opulationpay eatergray anthay 1200)
-STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Onstructcay Aperpay Illmay
-STR_026F_CONSTRUCT_FOOD_PROCESSING                              :{BLACK}Onstructcay Oodfay Ocessingpray Antplay
-STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Onstructcay Intingpray Orksway
-STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Onstructcay Oldgay Inemay
-STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Onstructcay Ankbay (Ancay onlyway ebay uiltbay inway ownstay)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Onstructcay Umberlay Illmay (otay earclay ainforestray andway oducepray Oodway)
-STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Antplay Uitfray Antationplay
-STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Antplay Ubberray Antationplay
-STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Onstructcay Aterway Upplysay
-STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Onstructcay Aterway Owertay (Ancay onlyway ebay uiltbay inway ownstay)
-STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Onstructcay Iamondday Inemay
-STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Onstructcay Oppercay Oreway Inemay
-STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Antplay Andyflosscay Orestfay
-STR_027B_CONSTRUCT_CANDY_FACTORY                                :{BLACK}Onstructcay Eetsway Actoryfay
-STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Onstructcay Atterybay Armfay
-STR_027D_CONSTRUCT_COLA_WELLS                                   :{BLACK}Onstructcay Olacay Ellsway
-STR_027E_CONSTRUCT_TOY_SHOP                                     :{BLACK}Onstructcay Oytay Opshay
-STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}Onstructcay Oytay Actoryfay
-STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS                            :{BLACK}Onstructcay Asticplay Ountainsfay
-STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY                          :{BLACK}Onstructcay Izzyfay Inkdray Actoryfay
-STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}Onstructcay Ubblebay Eneratorgay
-STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Onstructcay Offeetay Arryquay
-STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Onstructcay Ugarsay Inemay
-STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}An'tcay uildbay {STRING} erehay...
-STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...ustmay uildbay owntay irstfay
-STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...onlyway oneway allowedway erpay owntay
-STR_0288_PLANT_TREES                                            :{BLACK}Antplay eestray
-STR_0289_PLACE_SIGN                                             :{BLACK}Aceplay ignsay
-STR_028A_RANDOM_TREES                                           :{BLACK}Andomray Eestray
-STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Antplay eestray andomlyray overway andscapelay
-STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Aceplay ockyray areasway onway andscapelay
-STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Aceplay ighthouselay
-STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Aceplay ansmittertray
-STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Efineday esertday areaway.{}Esspray andway oldhay CTRLay otay emoveray itway
-STR_CREATE_LAKE                                                 :{BLACK}Efineday aterway areaway.{}Akemay away analcay, unlessway CTRLay isway eldhay ownday atway easay evellay, enwhay itway illway oodflay ethay urroundingssay insteadway
-STR_0290_DELETE                                                 :{BLACK}Eleteday
-STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Eleteday isthay owntay ompletelycay
-STR_0292_SAVE_SCENARIO                                          :Avesay enarioscay
-STR_0293_LOAD_SCENARIO                                          :Oadlay enarioscay
-STR_LOAD_HEIGHTMAP                                              :Oadlay eightmaphay
-STR_0294_QUIT_EDITOR                                            :Itquay editorway
-STR_0295                                                        :
-STR_0296_QUIT                                                   :Itquay
-STR_0297_SAVE_SCENARIO_LOAD_SCENARIO                            :{BLACK}Avesay enarioscay, oadlay enarioscay, abandonway enarioscay editorway, itquay
-STR_0298_LOAD_SCENARIO                                          :{WHITE}Oadlay Enarioscay
-STR_0299_SAVE_SCENARIO                                          :{WHITE}Avesay Enarioscay
-STR_029A_PLAY_SCENARIO                                          :{BLACK}Ayplay Enarioscay
-STR_PLAY_HEIGHTMAP                                              :{BLACK}Ayplay Eightmaphay
-STR_PLAY_HEIGHTMAP_HINT                                         :{BLACK}Artstay away ewnay amegay, usingway away eightmaphay asway andscapelay
-STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Areway ouyay uresay ouyay antway otay itquay isthay enarioscay ?
-STR_029C_QUIT_EDITOR                                            :{WHITE}Itquay Editorway
-STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay ithway away opulationpay ofway atway eastlay 1200
-STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Ovemay ethay artingstay ateday ackwardbay 1 earyay
-STR_029F_MOVE_THE_STARTING_DATE                                 :{BLACK}Ovemay ethay artingstay ateday orwardfay 1 earyay
-STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...endsway ofway idgebray ustmay othbay ebay onway andlay
-STR_02A1_SMALL                                                  :{BLACK}Allsmay
-STR_02A2_MEDIUM                                                 :{BLACK}Ediummay
-STR_02A3_LARGE                                                  :{BLACK}Argelay
-STR_SCENARIO_EDITOR_CITY                                        :{BLACK}Itycay
-STR_02A4_SELECT_TOWN_SIZE                                       :{BLACK}Electsay owntay izesay
-STR_02A5_TOWN_SIZE                                              :{YELLOW}Owntay izesay:
-
-STR_02B6                                                        :{STRING}  -  {STRING}
-STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS                              :{BLACK}Owshay astlay essagemay orway ewsnay eportray
-STR_OFF                                                         :Offway
-STR_SUMMARY                                                     :Ummarysay
-STR_FULL                                                        :Ullfay
-STR_02BA                                                        :{SILVER}- -  {COMPANY}  - -
-STR_02BB_TOWN_DIRECTORY                                         :Owntay irectoryday
-STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Ehiclevay esignday amesnay
-STR_02BD                                                        :{BLACK}{STRING}
-STR_02BE_DEFAULT                                                :Efaultday
-STR_02BF_CUSTOM                                                 :Ustomcay
-STR_02C0_SAVE_CUSTOM_NAMES                                      :{BLACK}Avesay ustomcay amesnay
-STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION                         :{BLACK}Ehiclevay esignday amesnay electionsay
-STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Avesay ustomisedcay ehiclevay esignday amesnay
-
-STR_CHECKMARK                                                   :{CHECKMARK}
-############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Amegay optionsway
-STR_02C5_DIFFICULTY_SETTINGS                                    :Ifficultyday ettingssay
-STR_02C7_CONFIG_PATCHES                                         :Onfigurecay atchespay
-STR_NEWGRF_SETTINGS                                             :EwGRFnay ettingssay
-STR_TRANSPARENCY_OPTIONS                                        :Ansparencytray optionsway
-STR_GAMEOPTMENU_0A                                              :
-STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Owntay amesnay isplayedday
-STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Ationstay amesnay isplayedday
-STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Ignssay isplayedday
-STR_WAYPOINTS_DISPLAYED2                                        :{SETX 12}Aypointsway isplayedday
-STR_02D0_FULL_ANIMATION                                         :{SETX 12}Ullfay animationway
-STR_02D2_FULL_DETAIL                                            :{SETX 12}Ullfay etailday
-STR_02D4_TRANSPARENT_BUILDINGS                                  :{SETX 12}Ansparenttray uildingsbay
-STR_TRANSPARENT_SIGNS                                           :{SETX 12}Ansparenttray ationstay ignssay
-############ range ends here
-
-############ range for menu starts
-STR_02D5_LAND_BLOCK_INFO                                        :Andlay areaway informationway
-STR_02D6                                                        :
-STR_CONSOLE_SETTING                                             :Oggletay Onsolecay
-STR_02D7_SCREENSHOT_CTRL_S                                      :Eenshotscray (Ctrlay-Say)
-STR_02D8_GIANT_SCREENSHOT_CTRL_G                                :Iantgay Eenshotscray (Ctrlay-Gay)
-STR_02D9_ABOUT_OPENTTD                                          :Aboutway 'OpenTTD'WAY
-############ range ends here
-
-STR_02DB_OFF                                                    :{BLACK}Offway
-STR_02DA_ON                                                     :{BLACK}Onway
-STR_02DC_DISPLAY_SUBSIDIES                                      :{BLACK}Isplayday ubsidiessay
-STR_02DD_SUBSIDIES                                              :Ubsidiessay
-STR_02DE_MAP_OF_WORLD                                           :Apmay ofway orldway
-STR_EXTRA_VIEW_PORT                                             :Extraway iewportvay
-STR_SIGN_LIST                                                   :Ignsay istlay
-STR_02DF_TOWN_DIRECTORY                                         :Owntay irectoryday
-STR_TOWN_POPULATION                                             :{BLACK}Orldway opulationpay: {COMMA}
-STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Iewportvay {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}Opycay otay iewportvay
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}Opycay ethay ocationlay ofway ethay obalglay iewvay otay isthay iewportvay
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Astepay omfray iewportvay
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Astepay ethay ocationlay ofway isthay iewportvay otay ethay obalglay iewvay
-
-STR_02E0_CURRENCY_UNITS                                         :{BLACK}Urrencycay unitsway
-STR_02E1                                                        :{BLACK}{SKIP}{STRING}
-STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Urrencycay unitsway electionsay
-STR_MEASURING_UNITS                                             :{BLACK}Easuringmay unitsway
-STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
-STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Easuringmay unitsway electionsay
-STR_02E6_ROAD_VEHICLES                                          :{BLACK}Oadray ehiclesvay
-STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Electsay idesay ofway oadray orfay ehiclesvay otay ivedray onway
-STR_02E9_DRIVE_ON_LEFT                                          :Ivedray onway eftlay
-STR_02EA_DRIVE_ON_RIGHT                                         :Ivedray onway ightray
-STR_02EB_TOWN_NAMES                                             :{BLACK}Owntay amesnay
-STR_02EC                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}Electsay ylestay ofway owntay amesnay
-
-STR_02F4_AUTOSAVE                                               :{BLACK}Autosaveway
-STR_02F5                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Electsay intervalway etweenbay automaticway amegay avessay
-STR_02F7_OFF                                                    :Offway
-STR_02F8_EVERY_3_MONTHS                                         :Everyway 3 onthsmay
-STR_02F9_EVERY_6_MONTHS                                         :Everyway 6 onthsmay
-STR_02FA_EVERY_12_MONTHS                                        :Everyway 12 onthsmay
-STR_02FB_START_A_NEW_GAME                                       :{BLACK}Artstay away ewnay amegay
-STR_02FC_LOAD_A_SAVED_GAME                                      :{BLACK}Oadlay away avedsay amegay
-STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Eatecray away ustomisedcay amegay orldway/enarioscay
-STR_02FF_SELECT_SINGLE_PLAYER_GAME                              :{BLACK}Electsay inglesay-ayerplay amegay
-STR_0300_SELECT_MULTIPLAYER_GAME                                :{BLACK}Electsay ultiplayermay amegay ofway 2-8 ayersplay
-STR_0301_DISPLAY_GAME_OPTIONS                                   :{BLACK}Isplayday amegay optionsway
-STR_0302_DISPLAY_DIFFICULTY_OPTIONS                             :{BLACK}Isplayday ifficultyday optionsway
-STR_0303_START_A_NEW_GAME_USING                                 :{BLACK}Artstay away ewnay amegay, usingway away ustomisedcay enarioscay
-STR_0304_QUIT                                                   :{BLACK}Itquay
-STR_0305_QUIT_OPENTTD                                           :{BLACK}Itquay 'OpenTTD'WAY
-STR_0307_OPENTTD                                                :{WHITE}OpenTTDWAY {REV}
-STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay
-STR_030E_SELECT_TEMPERATE_LANDSCAPE                             :{BLACK}Electsay 'emperate'tay andscapelay ylestay
-STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Electsay 'ubsay-arctic'WAY andscapelay ylestay
-STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Electsay 'ubsay-opical'tray andscapelay ylestay
-STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Electsay 'oyland'tay andscapelay ylestay
-STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Undfay onstructioncay ofway ewnay industryway
-
-############ range for menu starts
-STR_INDUSTRY_DIR                                                :Industryway Irectoryday
-STR_0313_FUND_NEW_INDUSTRY                                      :Undfay ewnay industryway
-############ range ends here
-
-STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Undfay ewnay industryway
-STR_JUST_STRING                                                 :{STRING}
-STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay
-STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST                        :{WHITE}...ancay onlyway ebay uiltbay inway ainforestray areasway
-STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT                            :{WHITE}...ancay onlyway ebay uiltbay inway esertday areasway
-STR_0319_PAUSED                                                 :{YELLOW}* *  USEDPAay  *  *
-
-STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Eenshotscray uccessfullysay avedsay asway '{STRING}'
-STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Eenshotscray ailedfay!
-
-STR_0329_PURCHASE_LAND_FOR_FUTURE                               :{BLACK}Urchasepay andlay orfay uturefay useway
-STR_032F_AUTOSAVE                                               :{RED}AUTOSAVEWAY
-STR_SAVING_GAME                                                 :{RED}*  *  INGSAVay EGAMay  *  *
-STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Avingsay illstay inway ogresspray,{}easeplay aitway untilway itway isway inishedfay!
-STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Electsay 'Ezyway Eetstray ylestay usic'may ogrammepray
-
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
-
-############ start of townname region
-STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Englishway (Originalway)
-STR_TOWNNAME_FRENCH                                             :Enchfray
-STR_TOWNNAME_GERMAN                                             :Ermangay
-STR_TOWNNAME_ADDITIONAL_ENGLISH                                 :Englishway (Additionalway)
-STR_TOWNNAME_LATIN_AMERICAN                                     :Atinlay-Americanway
-STR_TOWNNAME_SILLY                                              :Illysay
-STR_TOWNNAME_SWEDISH                                            :Edishsway
-STR_TOWNNAME_DUTCH                                              :Utchday
-STR_TOWNNAME_FINNISH                                            :Innishfay
-STR_TOWNNAME_POLISH                                             :Olishpay
-STR_TOWNNAME_SLOVAKISH                                          :Ovakishslay
-STR_TOWNNAME_NORWEGIAN                                          :Orwegiannay
-STR_TOWNNAME_HUNGARIAN                                          :Ungarianhay
-STR_TOWNNAME_AUSTRIAN                                           :Austrianway
-STR_TOWNNAME_ROMANIAN                                           :Omanianray
-STR_TOWNNAME_CZECH                                              :Echczay
-STR_TOWNNAME_SWISS                                              :Isssway
-STR_TOWNNAME_DANISH                                             :Anishday
-STR_TOWNNAME_TURKISH                                            :Urkishtay
-STR_TOWNNAME_ITALIAN                                            :Italianway
-STR_TOWNNAME_CATALAN                                            :Atalancay
-############ end of townname region
-
-STR_CURR_GBP                                                    :Oundspay (£)
-STR_CURR_USD                                                    :Ollarsday ($)
-STR_CURR_EUR                                                    :Euroway (€)
-STR_CURR_YEN                                                    :Enyay (¥)
-STR_CURR_ATS                                                    :Austrianway Illingshay (ATSWAY)
-STR_CURR_BEF                                                    :Elgianbay Ancfray (EFBay)
-STR_CURR_CHF                                                    :Isssway Ancfray (CHFay)
-STR_CURR_CZK                                                    :Echczay Orunakay (CZKay)
-STR_CURR_DEM                                                    :Eutschmarkday (EMDay)
-STR_CURR_DKK                                                    :Anishday Onekray (DKKay)
-STR_CURR_ESP                                                    :Esetapay (ESPWAY)
-STR_CURR_FIM                                                    :Innishfay Arkkamay (IMFay)
-STR_CURR_FRF                                                    :Ancfray (FRFay)
-STR_CURR_GRD                                                    :Eekgray Achmadray (GRDay)
-STR_CURR_HUF                                                    :Ungarianhay Orintfay (UFHay)
-STR_CURR_ISK                                                    :Icelandicway Onakray (ISKWAY)
-STR_CURR_ITL                                                    :Italianway Iralay (ITLWAY)
-STR_CURR_NLG                                                    :Utchday Uildergay (NLGay)
-STR_CURR_NOK                                                    :Orwegiannay Onekray (OKNay)
-STR_CURR_PLN                                                    :Olishpay Otyzlay (PLNay)
-STR_CURR_ROL                                                    :Omanianray Eulay (OLRay)
-STR_CURR_RUR                                                    :Ussianray Ublesray (URRay)
-STR_CURR_SIT                                                    :Ovenianslay Olartay (ITSay)
-STR_CURR_SEK                                                    :Edishsway Onakray (EKSay)
-STR_CURR_YTL                                                    :Urkishtay Iralay (YTLay)
-STR_CURR_SKK                                                    :Ovakslay Orunakay (SKKay)
-STR_CURR_BRR                                                    :Azilianbray Ealray (BRLay)
-
-STR_CURR_CUSTOM                                                 :Ustomcay...
-
-STR_OPTIONS_LANG                                                :{BLACK}Anguagelay
-STR_OPTIONS_LANG_CBO                                            :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_LANG_TIP                                            :{BLACK}Electsay ethay interfaceway anguagelay otay useway
-
-STR_OPTIONS_FULLSCREEN                                          :{BLACK}Ullscreenfay
-STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Eckchay isthay oxbay otay ayplay OpenTTDWAY ullscreenfay odemay
-
-STR_OPTIONS_RES                                                 :{BLACK}Eenscray esolutionray
-STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_RES_TIP                                             :{BLACK}Electsay ethay eenscray esolutionray otay useway
-
-STR_OPTIONS_SCREENSHOT_FORMAT                                   :{BLACK}Eenshotscray ormatfay
-STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Electsay ethay eenshotscray ormatfay otay useway
-
-STR_AUTOSAVE_1_MONTH                                            :Everyway onthmay
-STR_AUTOSAVE_FAILED                                             :{WHITE}Autosaveway ailedfay
-
-STR_MONTH_JAN                                                   :Anuaryjay
-STR_MONTH_FEB                                                   :Ebruaryfay
-STR_MONTH_MAR                                                   :Archmay
-STR_MONTH_APR                                                   :Aprilway
-STR_MONTH_MAY                                                   :Aymay
-STR_MONTH_JUN                                                   :Unejay
-STR_MONTH_JUL                                                   :Ulyjay
-STR_MONTH_AUG                                                   :Augustway
-STR_MONTH_SEP                                                   :Eptembersay
-STR_MONTH_OCT                                                   :Octoberway
-STR_MONTH_NOV                                                   :Ovembernay
-STR_MONTH_DEC                                                   :Ecemberday
-
-STR_HEADING_FOR_STATION                                         :{LTBLUE}Eadinghay orfay {STATION}
-STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Eadinghay orfay {STATION}, {VELOCITY}
-STR_NO_ORDERS                                                   :{LTBLUE}Onay ordersway
-STR_NO_ORDERS_VEL                                               :{LTBLUE}Onay ordersway, {VELOCITY}
-
-STR_PASSENGERS                                                  :assengerspay
-STR_BAGS                                                        :agsbay
-STR_TONS                                                        :onnestay
-STR_LITERS                                                      :itreslay
-STR_ITEMS                                                       :itemsway
-STR_CRATES                                                      :atescray
-STR_RES_OTHER                                                   :otherway
-STR_NOTHING                                                     :
-
-STR_SMALL_RIGHT_ARROW                                           :{TINYFONT}{RIGHTARROW}
-
-STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}An'tcay areshay orderway istlay...
-STR_CANT_COPY_ORDER_LIST                                        :{WHITE}An'tcay opycay orderway istlay...
-STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Endway ofway Aredshay Ordersway - -
-
-STR_TRAIN_IS_LOST                                               :{WHITE}Aintray {COMMA} isway ostlay.
-STR_TRAIN_IS_UNPROFITABLE                                       :{WHITE}Aintray {COMMA}'say ofitpray astlay earyay asway {CURRENCY}
-STR_EURO_INTRODUCE                                              :{BLACK}{BIGFONT}Europeanway Onetarymay Unionway!{}{}Ethay Euroway isway introducedway asway ethay olesay urrencycay orfay everydayway ansactionstray inway ouryay ountrycay!
-
-# Start of order review system.
-# DON'T ADD OR REMOVE LINES HERE
-STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Aintray {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
-STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Aintray {COMMA} ashay away oidvay orderway
-STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Aintray {COMMA} ashay uplicateday ordersway
-STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Aintray {COMMA} ashay anway invalidway ationstay inway itsway ordersway
-STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Oadray Ehiclevay {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
-STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Oadray Ehiclevay {COMMA} ashay away oidvay orderway
-STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Oadray Ehiclevay {COMMA} ashay uplicateday ordersway
-STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Oadray Ehiclevay {COMMA} ashay anway invalidway ationstay inway itsway ordersway
-STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Ipshay {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
-STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Ipshay {COMMA} ashay away oidvay orderway
-STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Ipshay {COMMA} ashay uplicateday ordersway
-STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Ipshay {COMMA} ashay anway invalidway ationstay inway itsway ordersway
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Aircraftway {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
-STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Aircraftway {COMMA} ashay away oidvay orderway
-STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Aircraftway {COMMA} ashay uplicateday ordersway
-STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Aircraftway {COMMA} ashay anway invalidway ationstay inway itsway ordersway
-# end of order system
-
-STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Autorenewway ailedfay onway aintray {COMMA} (oneymay imitlay)
-STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Autorenewway ailedfay onway oadray ehiclevay {COMMA} (oneymay imitlay)
-STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Autorenewway ailedfay onway ipshay {COMMA} (oneymay imitlay)
-STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Autorenewway ailedfay onway aircraftway {COMMA} (oneymay imitlay)
-STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}Aintray {COMMA} isway ootay onglay afterway eplacementray
-
-STR_CONFIG_PATCHES                                              :{BLACK}Onfigurecay Atchespay
-STR_CONFIG_PATCHES_TIP                                          :{BLACK}Onfigurecay ethay atchespay
-STR_CONFIG_PATCHES_CAPTION                                      :{WHITE}Onfigurecay Atchespay
-
-STR_CONFIG_PATCHES_OFF                                          :Offway
-STR_CONFIG_PATCHES_ON                                           :Onway
-STR_CONFIG_PATCHES_VEHICLESPEED                                 :{LTBLUE}Owshay ehiclevay eedspay inway atusstay arbay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BUILDONSLOPES                                :{LTBLUE}Allowway uildingbay onway opesslay andway oastscay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_CATCHMENT                                    :{LTBLUE}Allowway oremay ealisticallyray izedsay atchmentcay areasway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_EXTRADYNAMITE                                :{LTBLUE}Allowway emovalray ofway oremay owntay-ownedway oadsray, idgesbray, etcway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAMMOTHTRAINS                                :{LTBLUE}Enableway uildingbay eryvay onglay ainstray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_REALISTICACCEL                               :{LTBLUE}Enableway ealisticray accelerationway orfay ainstray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_FORBID_90_DEG                                :{LTBLUE}Orbidfay ainstray andway ipsshay otay akemay 90 egday urnstay: {ORANGE}{STRING} {LTBLUE} (equiresray NPFay)
-STR_CONFIG_PATCHES_JOINSTATIONS                                 :{LTBLUE}Oinjay aintray ationsstay uiltbay extnay otay eachway otherway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_FULLLOADANY                                  :{LTBLUE}Eavelay ationstay enwhay anyway argocay isway ullfay, ifway 'ullfay oad'lay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_IMPROVEDLOAD                                 :{LTBLUE}Useway improvedway oadinglay algorithmway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_GRADUAL_LOADING                              :{LTBLUE}Oadlay ehiclesvay aduallygray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_INFLATION                                    :{LTBLUE}Inflationway: {ORANGE}{STRING}
-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}
-STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Owshay ignalssay onway ethay ivedray idesay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Owshay inancesfay indowway atway ethay endway ofway ethay earyay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}AtchtTDPay ompatiblecay onstopnay andlinghay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Oadray ehiclevay eueingquay (ithway antumquay effectsway): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Anpay indowway enwhay ousemay isway atway ethay edgeway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Allowway ibingbray ofway ethay ocallay authorityway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Onuniformnay ationsstay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ewnay obalglay athfindingpay (NPFay, overridesway NTPay): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Eightway ultipliermay orfay eightfray otay imulatesay eavyhay ainstray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Allowway ivedray-oughthray oadray opsstay onway owntay ownedway oadsray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Allowway uildingbay adjacentway ationsstay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Alwaysway allowway allsmay airportsway: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Arnway ifway aintray isway ostlay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ORDER_REVIEW                                 :{LTBLUE}Eviewray ehicles'vay ordersway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ORDER_REVIEW_OFF                             :onay
-STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT                         :esyay, utbay excludeway oppedstay ehiclesvay
-STR_CONFIG_PATCHES_ORDER_REVIEW_ON                              :ofway allway ehiclesvay
-STR_CONFIG_PATCHES_WARN_INCOME_LESS                             :{LTBLUE}Arnway ifway away ain'stray incomeway isway egativenay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES                        :{LTBLUE}Ehiclesvay evernay expireway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTORENEW_VEHICLE                            :{LTBLUE}Autorenewway ehiclevay enwhay itway etsgay oldway
-STR_CONFIG_PATCHES_AUTORENEW_MONTHS                             :{LTBLUE}Autorenewway enwhay ehicevay isway {ORANGE}{STRING}{LTBLUE} onthsmay eforebay/afterway axmay ageway
-STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Autorenewway inimummay eedednay oneymay orfay enewray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Urationday ofway errorway essagemay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Owshay owntay opulationpay inway ethay owntay amenay abellay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Invisibleway eestray (ithway ansparenttray uildingsbay): {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Andlay eneratorgay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Originalway
-STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :ErraGenesistay
-STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Axmay istanceday omfray edgeway orfay Oilway Efineriesray {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SNOWLINE_HEIGHT                              :{LTBLUE}Owsnay inelay eighthay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Oughnessray ofway erraintay (ErraGenesistay onlyway) : {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH             :Eryvay Oothsmay
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Oothsmay
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Oughray
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Eryvay Oughray
-STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Eetray acerplay algorithmway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Onenay
-STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Originalway
-STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Improvedway
-STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION                           :{LTBLUE}Eightmaphay otationray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :Ountercay ockwiseclay
-STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :Ockwiseclay
-STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Ethay eighthay evellay away atflay enarioscay apmay etsgay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Axmay ationstay eadspray: {ORANGE}{STRING} {RED}Arningway: Ighhay ettingsay owsslay amegay
-STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Ervicesay elicoptershay atway elipadshay automaticallyway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Inklay andscapelay oolbartay otay ailray/oadray/aterway/airportway oolbarstay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Everseray ollscray irectionday: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Oothsmay iewportvay ollingscray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Owshay away easurementmay ooltiptay enwhay usingway ariousvay uildbay-oolstay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Owshay ompanycay iverieslay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LIVERIES_NONE                                :Onenay
-STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Ownway ompanycay
-STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Allway ompaniescay
-STR_CONFIG_PATCHES_PREFER_TEAMCHAT                              :{LTBLUE}Eferpray eamtay atchay ithway <ENTERWAY>: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING                        :{LTBLUE}Unctionfay ofway ollwheelscray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Oomzay apmay
-STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Ollscray apmay
-STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Offway
-STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Apmay ollwheelscray eedspay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU                          :{LTBLUE}Ightray-ickclay emulationway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND                  :Ommandcay-ickclay
-STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL                  :Ontrolcay-ickclay
-STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF                      :Offway
-
-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_ADVANCED_VEHICLE_LISTS_OFF                   :Offway
-STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN                   :Ownway ompanycay
-STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL                   :Allway ompaniescay
-STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Useway oadinglay indicatorsway:{ORANGE}{STRING}
-STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF                       :Offway
-STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN                       :Ownway ompanycay
-STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL                       :Allway ompaniescay
-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}
-STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Axmay ipsshay erpay ayerplay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_AI_BUILDS_TRAINS                             :{LTBLUE}Isableday ainstray orfay omputercay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH                            :{LTBLUE}Isableday oadray ehiclesvay orfay omputercay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT                           :{LTBLUE}Isableday aircraftway orfay omputercay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_SHIPS                              :{LTBLUE}Isableday ipsshay orfay omputercay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_AINEW_ACTIVE                                 :{LTBLUE}Enableway ewnay AIWAY (alphaway): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER                            :{LTBLUE}Allowway AIsway inway ultiplayermay (experimentalway): {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_SERVINT_TRAINS                               :{LTBLUE}Efaultday ervicesay intervalway orfay ainstray: {ORANGE}{STRING} aysday/%
-STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Efaultday ervicesay intervalway orfay ainstray: {ORANGE}isabledday
-STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Efaultday ervicesay intervalway orfay oadray ehiclesvay: {ORANGE}{STRING} aysday/%
-STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Efaultday ervicesay intervalway orfay oadray ehiclesvay: {ORANGE}isabledday
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Efaultday ervicesay intervalway orfay aircraftway: {ORANGE}{STRING} aysday/%
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Efaultday ervicesay intervalway orfay aircraftway: {ORANGE}isabledday
-STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Efaultday ervicesay intervalway orfay ipsshay: {ORANGE}{STRING} aysday/%
-STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Efaultday ervicesay intervalway orfay ipsshay: {ORANGE}isabledday
-STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Isableday ervicingsay enwhay eakdownsbray etsay otay onenay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Enableway agonway eedspay imitslay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Isableday electricway ailsray: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Olouredcay ewsnay appearsway inway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STARTING_YEAR                                :{LTBLUE}Artingstay earyay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ENDING_YEAR                                  :{LTBLUE}Endway amegay inway: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Enableway oothsmay economyway (oremay, allersmay angeschay)
-STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Allowway uyingbay aresshay omfray otherway ompaniescay
-STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Enwhay aggingdray, aceplay ignalssay everyway: {ORANGE}{STRING} iletay(say)
-STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automaticallyway uildbay emaphoressay eforebay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Ethay owntay ayoutlay "onay oremay oadsray" isn'tway alidvay inway ethay enarioscay editorway
-STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Electsay owntay-oadray ayoutlay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :onay oremay oadsray
-STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :efaultday
-STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :etterbay oadsray
-STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2xay2 idgray
-STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3xay3 idgray
-
-STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Ositionpay ofway ainmay oolbartay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Eftlay
-STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Entrecay
-STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Ightray
-STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Indowway apsnay adiusray: {ORANGE}{STRING} pxay
-STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Indowway apsnay adiusray: {ORANGE}isabledday
-STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Owntay owthgray eedspay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :Onenay
-STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Owslay
-STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Ormalnay
-STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Astfay
-STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Eryvay astfay
-STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Oportionpray ofway ownstay atthay illway ecomebay itiescay: {ORANGE}1 inway {STRING}
-STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Oportionpray ofway ownstay atthay illway ecomebay itiescay: {ORANGE}Onenay
-STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Initialway itycay izesay ultipliermay: {ORANGE}{STRING}
-
-STR_CONFIG_PATCHES_GUI                                          :{BLACK}Interfaceway
-STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Onstructioncay
-STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Ehiclesvay
-STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Ationsstay
-STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Economyway
-STR_CONFIG_PATCHES_AI                                           :{BLACK}Ompetitorscay
-
-STR_CONFIG_PATCHES_DISABLED                                     :isabledday
-STR_CONFIG_PATCHES_INT32                                        :{NUM}
-STR_CONFIG_PATCHES_CURRENCY                                     :{CURRENCY}
-
-STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Angechay ettingsay aluevay
-STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Omesay orway allway ofway ethay efaultday ervicesay intervalway(say) elowbay areway incompatibleway ithway ethay osenchay ettingsay! 5-90% andway 30-800 aysday areway alidvay
-STR_CONFIG_PATCHES_YAPF_SHIPS                                   :{LTBLUE}Useway YAPFay orfay ipsshay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_YAPF_ROAD                                    :{LTBLUE}Useway YAPFay orfay oadvehsray: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_YAPF_RAIL                                    :{LTBLUE}Useway YAPFay orfay ainstray: {ORANGE}{STRING}
-
-STR_TEMPERATE_LANDSCAPE                                         :Emperatetay andscapelay
-STR_SUB_ARCTIC_LANDSCAPE                                        :Ubsay-arcticway andscapelay
-STR_SUB_TROPICAL_LANDSCAPE                                      :Ubsay-opicaltray andscapelay
-STR_TOYLAND_LANDSCAPE                                           :Oylandtay andscapelay
-
-STR_CHEATS                                                      :{WHITE}Eatschay
-STR_CHEATS_TIP                                                  :{BLACK}Eckboxeschay indicateway ifway ouyay avehay usedway isthay eatchay eforebay
-STR_CHEATS_WARNING                                              :{BLACK}Arningway! Ouyay areway aboutway otay etraybay ouryay ellowfay ompetitorscay. Eepkay inway indmay atthay uchsay away isgraceday illway ebay ememberedray orfay eternityway.
-STR_CHEAT_MONEY                                                 :{LTBLUE}Increaseway oneymay ybay {CURRENCY}
-STR_CHEAT_CHANGE_PLAYER                                         :{LTBLUE}Ayingplay asway ayerplay: {ORANGE}{COMMA}
-STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Agicmay ulldozerbay (emoveray industriesway, unmovablesway): {ORANGE}{STRING}
-STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Unnelstay aymay osscray eachway otherway: {ORANGE}{STRING}
-STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Uildbay ilewhay inway ausepay odemay: {ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Etplanesjay illway otnay ashcray (equentlyfray) onway allsmay airportsway: {ORANGE} {STRING}
-STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Itchsway imateclay: {ORANGE} {STRING}
-STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Angechay ateday: {ORANGE} {DATE_SHORT}
-STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Enableway odifyingmay oductionpray aluesvay: {ORANGE}{STRING}
-
-STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Eadinghay orfay {WAYPOINT}
-STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Eadinghay orfay {WAYPOINT}, {VELOCITY}
-
-STR_GO_TO_WAYPOINT                                              :Ogay iavay {WAYPOINT}
-STR_GO_NON_STOP_TO_WAYPOINT                                     :Ogay onnay-opstay iavay {WAYPOINT}
-
-STR_WAYPOINTNAME_CITY                                           :Aypointway {TOWN}
-STR_WAYPOINTNAME_CITY_SERIAL                                    :Aypointway {TOWN} #{COMMA}
-STR_LANDINFO_WAYPOINT                                           :Aypointway
-
-STR_WAYPOINT                                                    :{WHITE}Aypointway
-STR_WAYPOINT_GRAPHICS_TIP                                       :{BLACK}Electsay aypointway ypetay
-
-STR_WAYPOINT_VIEWPORT                                           :{WHITE}{WAYPOINT}
-STR_WAYPOINT_VIEWPORT_TINY                                      :{TINYFONT}{WHITE}{WAYPOINT}
-STR_WAYPOINT_RAW                                                :{WAYPOINT}
-STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Editway aypointway amenay
-
-STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}An'tcay angechay aypointway amenay...
-STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Onvertcay ailray otay aypointway
-STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}An'tcay uildbay aintray aypointway erehay...
-STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}An'tcay emoveray aintray aypointway erehay...
-
-STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Uildbay ailwayray acktray usingway ethay Autorailway odemay
-
-STR_NO_TOWN_IN_SCENARIO                                         :{WHITE}...erethay isway onay owntay inway isthay enarioscay
-
-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                                      :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...
-
-STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Openway ethay andscapinglay oolbartay otay aiseray/owerlay andlay, antplay eestray, etcway.
-STR_LANDSCAPING_TOOLBAR                                         :{WHITE}Andscapinglay
-STR_LEVEL_LAND_TOOLTIP                                          :{BLACK}Evellay andlay
-
-
-STR_TREES_RANDOM_TYPE                                           :{BLACK}Eestray ofway andomray ypetay
-STR_TREES_RANDOM_TYPE_TIP                                       :{BLACK}Aceplay eestray ofway andomray ypetay
-
-STR_CANT_BUILD_CANALS                                           :{WHITE}An'tcay uildbay analscay erehay...
-STR_BUILD_CANALS_TIP                                            :{BLACK}Uildbay analscay.
-STR_LANDINFO_CANAL                                              :Analcay
-
-STR_CANT_BUILD_LOCKS                                            :{WHITE}An'tcay uildbay ockslay erehay...
-STR_BUILD_LOCKS_TIP                                             :{BLACK}Uildbay ockslay
-STR_LANDINFO_LOCK                                               :Ocklay
-
-STR_BUOY_IS_IN_USE                                              :{WHITE}...uoybay isway inway useway!
-
-STR_LANDINFO_COORDS                                             :{BLACK}Oordinatescay: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
-
-STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}An'tcay emoveray artpay ofway ationstay...
-STR_CANT_CONVERT_RAIL                                           :{WHITE}An'tcay onvertcay ailtyperay erehay...
-STR_CONVERT_RAIL_TIP                                            :{BLACK}Onvertcay/Upgradeway ethay ypetay ofway ailray
-
-STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP                                :{BLACK}Agdray aintray engineway erehay otay ellsay ethay olewhay aintray
-
-STR_DRAG_DROP                                                   :{BLACK}Agdray & Opdray
-STR_STATION_DRAG_DROP                                           :{BLACK}Uildbay away ationstay usingway agdray & opdray
-STR_SELECT_STATION_CLASS_TIP                                    :{BLACK}Electsay away ationstay assclay otay isplayday
-STR_SELECT_STATION_TYPE_TIP                                     :{BLACK}Electsay ethay ationstay ypetay otay uildbay
-
-STR_FAST_FORWARD                                                :{BLACK}Astfay orwardfay ethay amegay
-STR_MESSAGE_HISTORY                                             :{WHITE}Essagemay Istoryhay
-STR_MESSAGE_HISTORY_TIP                                         :{BLACK}Away istlay ofway ethay ecentray ewsnay essagesmay
-STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Isableday allway
-STR_MESSAGES_ENABLE_ALL                                         :{BLACK}Enableway allway
-
-STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Onstructcay Oalcay Inemay
-STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Antplay Orestfay
-STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Onstructcay Oilway Igray
-STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Undfay Armfay
-STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Onstructcay Oppercay Oreway Inemay
-STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Illdray orfay Oilway
-STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Onstructcay Oldgay Inemay
-STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Onstructcay Iamondday Inemay
-STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Onstructcay Ironway Oreway Inemay
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Undfay Uitfray Antationplay
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Undfay Ubberray Antationplay
-STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Undfay Aterway Upplysay
-STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Antplay Andyflosscay Orestfay
-STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Undfay Atterybay Armfay
-STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}Illdray orfay Olacay
-STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Undfay Asticplay Ountainsfay
-STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}Onstructcay Ubblebay Eneratorgay
-STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Undfay Offeetay Arryquay
-STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Onstructcay Ugarsay Inemay
-
-STR_INDUSTRYDIR_CAPTION                                         :{WHITE}Industriesway
-STR_INDUSTRYDIR_ITEM                                            :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% ansportedtray)
-STR_INDUSTRYDIR_ITEM_TWO                                        :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}/{CARGO}){YELLOW} ({COMMA}%/{COMMA}% ansportedtray)
-STR_INDUSTRYDIR_ITEM_NOPROD                                     :{ORANGE}{INDUSTRY}
-
-STR_INDUSTRY_TOO_CLOSE                                          :{WHITE}...ootay oseclay otay anotherway industryway
-
-STR_RAIL_REFIT_VEHICLE_TO_CARRY                                 :{BLACK}Efitray aintray otay arrycay away ifferentday argocay ypetay
-STR_RAIL_REFIT_VEHICLE                                          :{BLACK}Efitray aintray
-STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay aintray otay arrycay
-STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Efitray aintray otay arrycay ighlightedhay argocay ypetay
-STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}An'tcay efitray aintray...
-STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Ervicesay intervalsway areway inway ercentspay: {ORANGE}{STRING}
-STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Angechay oductionpray
-
-TEMP_AI_IN_PROGRESS                                             :{WHITE}Elcomeway otay ethay ewnay AIWAY underway evelopmentday. Ifway ouyay encounterway oblemspray, aketay away eenshotscray andway ostpay itway inway ethay orumfay.
-TEMP_AI_ACTIVATED                                               :{WHITE}Arningway: isthay ewnay AIWAY isway illstay alphaway! Urrentlycay, onlyway uckstray andway ussesbay orkway!
-TEMP_AI_MULTIPLAYER                                             :{WHITE}Arningway: implementationway isway illstay experimentalway (usingway ewnay AIWAY). Easeplay eportray anyway oblemspray otay uelighttray@openttdway.orgway.
-
-############ network gui strings
-
-STR_NETWORK_MULTIPLAYER                                         :{WHITE}Ultiplayermay
-
-STR_NETWORK_PLAYER_NAME                                         :{BLACK}Ayerplay amenay:
-STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Isthay isway ethay amenay otherway ayersplay illway identifyway ouyay ybay
-STR_NETWORK_CONNECTION                                          :{BLACK}Onnectioncay:
-STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Oosechay etweenbay anway internetway amegay orway away Ocallay Areaway Etworknay (LANay) amegay
-
-STR_NETWORK_START_SERVER                                        :{BLACK}Artstay erversay
-STR_NETWORK_START_SERVER_TIP                                    :{BLACK}Artstay ouryay ownway erversay
-
-STR_NETWORK_GAME_NAME                                           :{BLACK}Amenay
-STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Amenay ofway ethay amegay
-STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Anguagelay, erversay ersionvay, etcway.
-STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Ickclay away amegay omfray ethay istlay otay electsay itway
-
-STR_NETWORK_FIND_SERVER                                         :{BLACK}Indfay erversay
-STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Earchsay etworknay orfay away erversay
-STR_NETWORK_ADD_SERVER                                          :{BLACK}Addway erversay
-STR_NETWORK_ADD_SERVER_TIP                                      :{BLACK}Addsway away erversay otay ethay istlay ichwhay illway alwaysway ebay eckedchay orfay unningray amesgay.
-STR_NETWORK_ENTER_IP                                            :{BLACK}Enterway ethay addressway ofway ethay osthay
-
-STR_NETWORK_GENERAL_ONLINE                                      :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
-STR_NETWORK_CLIENTS_CAPTION                                     :{BLACK}Ientsclay
-STR_NETWORK_CLIENTS_CAPTION_TIP                                 :{BLACK}Ientsclay onlineway / ientsclay axmay{}Ompaniescay onlineway / ompaniescay axmay
-STR_NETWORK_GAME_INFO                                           :{SILVER}EGAMay INFOWAY
-STR_ORANGE                                                      :{ORANGE}{STRING}
-STR_NETWORK_CLIENTS                                             :{SILVER}Ientsclay:  {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
-STR_NETWORK_LANGUAGE                                            :{SILVER}Anguagelay:  {WHITE}{STRING}
-STR_NETWORK_TILESET                                             :{SILVER}Ilesettay:  {WHITE}{STRING}
-STR_NETWORK_MAP_SIZE                                            :{SILVER}Apmay izesay:  {WHITE}{COMMA}xay{COMMA}
-STR_NETWORK_SERVER_VERSION                                      :{SILVER}Erversay ersionvay:  {WHITE}{STRING}
-STR_NETWORK_SERVER_ADDRESS                                      :{SILVER}Erversay addressway:  {WHITE}{STRING} : {NUM}
-STR_NETWORK_START_DATE                                          :{SILVER}Artstay ateday:  {WHITE}{DATE_SHORT}
-STR_NETWORK_CURRENT_DATE                                        :{SILVER}Urrentcay ateday:  {WHITE}{DATE_SHORT}
-STR_NETWORK_PASSWORD                                            :{SILVER}Asswordpay otectedpray!
-STR_NETWORK_SERVER_OFFLINE                                      :{SILVER}ERVERSay OFFLINEWAY
-STR_NETWORK_SERVER_FULL                                         :{SILVER}ERVERSay ULLFay
-STR_NETWORK_VERSION_MISMATCH                                    :{SILVER}ERSIONVay ISMATCHMay
-STR_NETWORK_GRF_MISMATCH                                        :{SILVER}EWGRFNay ISMATCHMay
-
-STR_NETWORK_JOIN_GAME                                           :{BLACK}Oinjay amegay
-
-
-STR_NETWORK_START_GAME_WINDOW                                   :{WHITE}Artstay ewnay ultiplayermay amegay
-
-STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Amegay amenay:
-STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Ethay amegay amenay illway ebay isplayedday otay otherway ayersplay inway ethay ultiplayermay amegay electionsay enumay
-STR_NETWORK_SET_PASSWORD                                        :{BLACK}Etsay asswordpay
-STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Otectpray ouryay amegay ithway away asswordpay ifway ouyay on'tday antway itway otay ebay ubliclypay accessibleway
-STR_NETWORK_SELECT_MAP                                          :{BLACK}Electsay away apmay:
-STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ichwhay apmay oday ouyay antway otay ayplay?
-STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
-STR_NETWORK_LAN                                                 :LANay
-STR_NETWORK_INTERNET                                            :Internetway
-STR_NETWORK_LAN_INTERNET                                        :LANay / Internetway
-STR_NETWORK_INTERNET_ADVERTISE                                  :Internetway (advertiseway)
-STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} ient{P "" s}clay
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Axmay ientsclay:
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Oosechay ethay aximummay umbernay ofway ientsclay. Otnay allway otsslay eednay otay ebay illedfay
-STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} ompan{P y ies}cay
-STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Axmay ompaniescay:
-STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ompaniescay
-STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} ectator{P "" s}spay
-STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Axmay ectatorsspay:
-STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ectatorsspay
-STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Anguagelay okenspay:
-STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Otherway ayersplay illway owknay ichwhay anguagelay isway okenspay onway ethay erversay
-STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_START_GAME                                          :{BLACK}Artstay Amegay
-STR_NETWORK_START_GAME_TIP                                      :{BLACK}Artstay away ewnay etworknay amegay omfray away andomray apmay, orway enarioscay
-STR_NETWORK_LOAD_GAME                                           :{BLACK}Oadlay Amegay
-STR_NETWORK_LOAD_GAME_TIP                                       :{BLACK}Esumeray anway earlierway avedsay ultiplayermay amegay (ebay uresay otay onnectcay asway ethay orrectcay ayerplay)
-
-############ Leave those lines in this order!!
-STR_NETWORK_LANG_ANY                                            :Anyway
-STR_NETWORK_LANG_ENGLISH                                        :Englishway
-STR_NETWORK_LANG_GERMAN                                         :Ermangay
-STR_NETWORK_LANG_FRENCH                                         :Enchfray
-STR_NETWORK_LANG_BRAZILIAN                                      :Azilianbray
-STR_NETWORK_LANG_BULGARIAN                                      :Ulgarianbay
-STR_NETWORK_LANG_CHINESE                                        :Inesechay
-STR_NETWORK_LANG_CZECH                                          :Echczay
-STR_NETWORK_LANG_DANISH                                         :Anishday
-STR_NETWORK_LANG_DUTCH                                          :Utchday
-STR_NETWORK_LANG_ESPERANTO                                      :Esperantoway
-STR_NETWORK_LANG_FINNISH                                        :Innishfay
-STR_NETWORK_LANG_HUNGARIAN                                      :Ungarianhay
-STR_NETWORK_LANG_ICELANDIC                                      :Icelandicway
-STR_NETWORK_LANG_ITALIAN                                        :Italianway
-STR_NETWORK_LANG_JAPANESE                                       :Apanesejay
-STR_NETWORK_LANG_KOREAN                                         :Oreankay
-STR_NETWORK_LANG_LITHUANIAN                                     :Ithuanianlay
-STR_NETWORK_LANG_NORWEGIAN                                      :Orwegiannay
-STR_NETWORK_LANG_POLISH                                         :Olishpay
-STR_NETWORK_LANG_PORTUGUESE                                     :Ortuguesepay
-STR_NETWORK_LANG_ROMANIAN                                       :Omanianray
-STR_NETWORK_LANG_RUSSIAN                                        :Ussianray
-STR_NETWORK_LANG_SLOVAK                                         :Ovakslay
-STR_NETWORK_LANG_SLOVENIAN                                      :Ovenianslay
-STR_NETWORK_LANG_SPANISH                                        :Anishspay
-STR_NETWORK_LANG_SWEDISH                                        :Edishsway
-STR_NETWORK_LANG_TURKISH                                        :Urkishtay
-STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainianway
-############ End of leave-in-this-order
-
-STR_NETWORK_GAME_LOBBY                                          :{WHITE}Ultiplayermay amegay obbylay
-
-STR_NETWORK_PREPARE_TO_JOIN                                     :{BLACK}Eparingpray otay oinjay:   {ORANGE}{STRING}
-STR_NETWORK_COMPANY_LIST_TIP                                    :{BLACK}Away istlay ofway allway ompaniescay urrentlycay inway isthay amegay. Ouyay ancay eitherway oinjay oneway orway artstay away ewnay oneway ifway erethay isway away eefray ompanycay otslay
-STR_NETWORK_NEW_COMPANY                                         :{BLACK}Ewnay ompanycay
-STR_NETWORK_NEW_COMPANY_TIP                                     :{BLACK}Eatecray away ewnay ompanycay
-STR_NETWORK_SPECTATE_GAME                                       :{BLACK}Ectatespay amegay
-STR_NETWORK_SPECTATE_GAME_TIP                                   :{BLACK}Atchway ethay amegay asway away ectatorspay
-STR_NETWORK_JOIN_COMPANY                                        :{BLACK}Oinjay ompanycay
-STR_NETWORK_JOIN_COMPANY_TIP                                    :{BLACK}Elphay anagemay isthay ompanycay
-STR_NETWORK_REFRESH                                             :{BLACK}Efreshray erversay
-STR_NETWORK_REFRESH_TIP                                         :{BLACK}Efreshray ethay erversay infoway
-
-STR_NETWORK_COMPANY_INFO                                        :{SILVER}OMPANYCay INFOWAY
-
-STR_NETWORK_COMPANY_NAME                                        :{SILVER}Ompanycay amenay:  {WHITE}{STRING}
-STR_NETWORK_INAUGURATION_YEAR                                   :{SILVER}Inaugurationway:  {WHITE}{NUM}
-STR_NETWORK_VALUE                                               :{SILVER}Ompanycay aluevay:  {WHITE}{CURRENCY}
-STR_NETWORK_CURRENT_BALANCE                                     :{SILVER}Urrentcay alancebay:  {WHITE}{CURRENCY}
-STR_NETWORK_LAST_YEARS_INCOME                                   :{SILVER}Astlay ear'syay incomeway:  {WHITE}{CURRENCY}
-STR_NETWORK_PERFORMANCE                                         :{SILVER}Erformancepay:  {WHITE}{NUM}
-
-STR_NETWORK_VEHICLES                                            :{SILVER}Ehiclesvay:  {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
-STR_NETWORK_STATIONS                                            :{SILVER}Ationsstay:  {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
-STR_NETWORK_PLAYERS                                             :{SILVER}Ayersplay:  {WHITE}{STRING}
-
-STR_NETWORK_CONNECTING                                          :{WHITE}Onnectingcay...
-
-############ Leave those lines in this order!!
-STR_NETWORK_CONNECTING_1                                        :{BLACK}(1/6) Onnectingcay..
-STR_NETWORK_CONNECTING_2                                        :{BLACK}(2/6) Authorisingway..
-STR_NETWORK_CONNECTING_3                                        :{BLACK}(3/6) Aitingway..
-STR_NETWORK_CONNECTING_4                                        :{BLACK}(4/6) Ownloadingday apmay..
-STR_NETWORK_CONNECTING_5                                        :{BLACK}(5/6) Ocessingpray ataday..
-STR_NETWORK_CONNECTING_6                                        :{BLACK}(6/6) Egisteringray..
-
-STR_NETWORK_CONNECTING_SPECIAL_1                                :{BLACK}Etchingfay amegay infoway..
-STR_NETWORK_CONNECTING_SPECIAL_2                                :{BLACK}Etchingfay ompanycay infoway..
-############ End of leave-in-this-order
-STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} ient{P "" s}clay inway ontfray ofway ouyay
-STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} yteskbay ownloadedday osay arfay
-
-STR_NETWORK_DISCONNECT                                          :{BLACK}Isconnectday
-
-STR_NETWORK_GIVE_MONEY_CAPTION                                  :{WHITE}Enterway ethay amountway ofway oneymay ouyay antway otay ivegay
-STR_NETWORK_NEED_GAME_PASSWORD_CAPTION                          :{WHITE}Erversay isway otectedpray. Enterway asswordpay
-STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION                       :{WHITE}Ompanycay isway otectedpray. Enterway asswordpay
-STR_NETWORK_CLIENT_LIST                                         :{WHITE}Ientclay Istlay
-
-STR_NETWORK_ERR_NOTAVAILABLE                                    :{WHITE} Onay etworknay evicesday oundfay orway ompiledcay ithoutway ENABLEWAY_ETWORKNay
-STR_NETWORK_ERR_NOSERVER                                        :{WHITE} Ouldcay otnay indfay anyway etworknay amesgay
-STR_NETWORK_ERR_NOCONNECTION                                    :{WHITE} Ethay erversay idn'tday answerway ethay equestray
-STR_NETWORK_ERR_NEWGRF_MISMATCH                                 :{WHITE} Ouldcay otnay onnectcay ueday otay EwGRFnay ismatchmay
-STR_NETWORK_ERR_DESYNC                                          :{WHITE} Etworknay-Amegay ynchronisationsay ailedfay
-STR_NETWORK_ERR_LOSTCONNECTION                                  :{WHITE} Etworknay-Amegay onnectioncay ostlay
-STR_NETWORK_ERR_SAVEGAMEERROR                                   :{WHITE} Ouldcay otnay oadlay avegamesay
-STR_NETWORK_ERR_SERVER_START                                    :{WHITE} Ouldcay otnay artstay ethay erversay
-STR_NETWORK_ERR_CLIENT_START                                    :{WHITE} Ouldcay otnay onnectcay
-STR_NETWORK_ERR_TIMEOUT                                         :{WHITE} Onnectioncay #{NUM} imedtay outway
-STR_NETWORK_ERR_SERVER_ERROR                                    :{WHITE} Away otocolpray-errorway asway ademay andway ethay onnectioncay asway osedclay
-STR_NETWORK_ERR_WRONG_REVISION                                  :{WHITE} Ethay evisionray ofway isthay ientclay oesday otnay atchmay ethay erver'ssay evisionray
-STR_NETWORK_ERR_WRONG_PASSWORD                                  :{WHITE} Ongwray asswordpay
-STR_NETWORK_ERR_SERVER_FULL                                     :{WHITE} Ethay erversay isway ullfay
-STR_NETWORK_ERR_SERVER_BANNED                                   :{WHITE} Ouyay areway annedbay omfray isthay erversay
-STR_NETWORK_ERR_KICKED                                          :{WHITE} Ouyay ereway ickedkay outway ofway ethay amegay
-STR_NETWORK_ERR_CHEATER                                         :{WHITE} Eatingchay isway otnay allowedway onway isthay erversay
-
-STR_NETWORK_ERR_LEFT                                            :ashay eftlay ethay amegay
-############ Leave those lines in this order!!
-STR_NETWORK_ERR_CLIENT_GENERAL                                  :eneralgay errorway
-STR_NETWORK_ERR_CLIENT_DESYNC                                   :esyncday errorway
-STR_NETWORK_ERR_CLIENT_SAVEGAME                                 :ouldcay otnay oadlay apmay
-STR_NETWORK_ERR_CLIENT_CONNECTION_LOST                          :onnectioncay ostlay
-STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR                           :otocolpray errorway
-STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH                          :EwGRFnay ismatchmay
-STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED                           :otnay authorizedway
-STR_NETWORK_ERR_CLIENT_NOT_EXPECTED                             :eceivedray angestray acketpay
-STR_NETWORK_ERR_CLIENT_WRONG_REVISION                           :ongwray evisionray
-STR_NETWORK_ERR_CLIENT_NAME_IN_USE                              :amenay alreadyway inway useway
-STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD                           :ongwray asswordpay
-STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH                          :ongwray ayerplay-idway inway OCommandday
-STR_NETWORK_ERR_CLIENT_KICKED                                   :ickedkay ybay erversay
-STR_NETWORK_ERR_CLIENT_CHEATER                                  :asway yingtray otay useway away eatchay
-STR_NETWORK_ERR_CLIENT_SERVER_FULL                              :erversay ullfay
-############ End of leave-in-this-order
-STR_NETWORK_CLIENT_JOINED                                       :ashay oinedjay ethay amegay
-STR_NETWORK_GIVE_MONEY                                          :avegay ouryay ompanycay omesay oneymay ({CURRENCY})
-STR_NETWORK_GAVE_MONEY_AWAY                                     :ouyay avegay {STRING} omesay oneymay ({CURRENCY})
-STR_NETWORK_CHAT_COMPANY_CAPTION                                :[Eamtay] :
-STR_NETWORK_CHAT_COMPANY                                        :[Eamtay] {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_TO_COMPANY                                     :[Eamtay] Otay {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_CLIENT_CAPTION                                 :[Ivatepray] :
-STR_NETWORK_CHAT_CLIENT                                         :[Ivatepray] {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_TO_CLIENT                                      :[Ivatepray] Otay {STRING}: {GRAY}{STRING}
-STR_NETWORK_CHAT_ALL_CAPTION                                    :[Allway] :
-STR_NETWORK_CHAT_ALL                                            :[Allway] {STRING}: {GRAY}{STRING}
-STR_NETWORK_NAME_CHANGE                                         :ashay angedchay ishay/erhay amenay otay
-STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} Ethay erversay osedclay ethay essionsay
-STR_NETWORK_SERVER_REBOOT                                       :{WHITE} Ethay erversay isway estartingray...{}Easeplay aitway...
-
-STR_NETWORK_SERVER                                              :Erversay
-STR_NETWORK_CLIENT                                              :Ientclay
-STR_NETWORK_SPECTATORS                                          :Ectatorsspay
-
-STR_NETWORK_CLIENTLIST_NONE                                     :(onenay)
-STR_NETWORK_CLIENTLIST_KICK                                     :Ickkay
-STR_NETWORK_CLIENTLIST_GIVE_MONEY                               :Ivegay oneymay
-STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL                             :Eakspay otay allway
-STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY                         :Eakspay otay ompanycay
-STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT                          :Ivatepray essagemay
-
-
-STR_NETWORK_SEND                                                :{BLACK}Endsay
-
-############ end network gui strings
-
-
-STR_CONFIG_PATCHES_MAP_X                                        :{LTBLUE}Xay-izesay ofway apmay: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAP_Y                                        :{LTBLUE}Yay-izesay ofway apmay: {ORANGE}{STRING}
-
-
-##### PNG-MAP-Loader
-
-STR_PNGMAP_ERROR                                                :{WHITE}Annotcay oadlay andscapelay omfray PNGay...
-STR_PNGMAP_ERR_FILE_NOT_FOUND                                   :{WHITE}...ilefay otnay oundfay.
-STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...ouldcay otnay onvertcay imageway ypetay. 8 orway 24-itbay PNGay imageway eedednay.
-STR_PNGMAP_ERR_MISC                                             :{WHITE}...omethingsay ustjay entway ongwray. Orrysay. (obablypray orruptedcay ilefay)
-
-STR_BMPMAP_ERROR                                                :{WHITE}Annotcay oadlay andscapelay omfray BMPay...
-STR_BMPMAP_ERR_IMAGE_TYPE                                       :{WHITE}...ouldcay otnay onvertcay imageway ypetay.
-
-##id 0x0800
-STR_0800_COST                                                   :{TINYFONT}{RED}Ostcay: {CURRENCY}
-STR_0801_COST                                                   :{RED}Ostcay: {CURRENCY}
-STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Incomeway: {CURRENCY}
-STR_0803_INCOME                                                 :{GREEN}Incomeway: {CURRENCY}
-STR_FEEDER_TINY                                                 :{TINYFONT}{YELLOW}Ansfertray: {CURRENCY}
-STR_FEEDER                                                      :{YELLOW}Ansfertray: {CURRENCY}
-STR_0805_ESTIMATED_COST                                         :{WHITE}Estimatedway Ostcay: {CURRENCY}
-STR_0807_ESTIMATED_INCOME                                       :{WHITE}Estimatedway Incomeway: {CURRENCY}
-STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}An'tcay aiseray andlay erehay...
-STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}An'tcay owerlay andlay erehay...
-STR_080A_ROCKS                                                  :Ocksray
-STR_080B_ROUGH_LAND                                             :Oughray andlay
-STR_080C_BARE_LAND                                              :Arebay andlay
-STR_080D_GRASS                                                  :Assgray
-STR_080E_FIELDS                                                 :Ieldsfay
-STR_080F_SNOW_COVERED_LAND                                      :Owsnay-overedcay andlay
-STR_0810_DESERT                                                 :Esertday
-
-##id 0x1000
-STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION                         :{WHITE}Andlay opedslay inway ongwray irectionday
-STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Impossibleway acktray ombinationcay
-STR_1002_EXCAVATION_WOULD_DAMAGE                                :{WHITE}Excavationway ouldway amageday unneltay
-STR_1003_ALREADY_AT_SEA_LEVEL                                   :{WHITE}Alreadyway atway easay-evellay
-STR_1004_TOO_HIGH                                               :{WHITE}Ootay ighhay
-STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Onay uitablesay ailwayray acktray
-STR_1007_ALREADY_BUILT                                          :{WHITE}...alreadyway uiltbay
-STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Ustmay emoveray ailwayray acktray irstfay
-STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Ailwayray Onstructioncay
-STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Electrifiedway Ailwayray Onstructioncay
-STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Onorailmay Onstructioncay
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}AgLevmay Onstructioncay
-STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Electsay Ailray Idgebray
-STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}An'tcay uildbay aintray epotday erehay...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}An'tcay uildbay ailwayray ationstay erehay...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}An'tcay uildbay ignalssay erehay...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}An'tcay uildbay ailwayray acktray erehay...
-STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}An'tcay emoveray ailwayray acktray omfray erehay...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}An'tcay emoveray ignalssay omfray erehay...
-STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Aintray Epotday Orientationway
-STR_1015_RAILROAD_CONSTRUCTION                                  :Ailwayray onstructioncay
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Electrifiedway Ailwayray onstructioncay
-STR_1016_MONORAIL_CONSTRUCTION                                  :Onorailmay onstructioncay
-STR_1017_MAGLEV_CONSTRUCTION                                    :AgLevmay onstructioncay
-STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Uildbay ailwayray acktray
-STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Uildbay aintray epotday (orfay uildingbay andway ervicingsay ainstray)
-STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Uildbay ailwayray ationstay
-STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Uildbay ailwayray ignalssay
-STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Uildbay ailwayray idgebray
-STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}Uildbay ailwayray unneltay
-STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Oggletay uildbay/emoveray orfay ailwayray acktray andway ignalssay
-STR_101F_BRIDGE_SELECTION_CLICK                                 :{BLACK}Idgebray electionsay - ickclay onway ouryay eferedpray idgebray otay uildbay itway
-STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO                       :{BLACK}Electsay ailwayray epotday orientationway
-STR_1021_RAILROAD_TRACK                                         :Ailwayray acktray
-STR_1023_RAILROAD_TRAIN_DEPOT                                   :Ailwayray aintray epotday
-STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...areaway isway ownedway ybay anotherway ompanycay
-STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Ailwayray acktray ithway ormalnay ignalssay
-STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ailwayray acktray ithway epray-ignalssay
-STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ailwayray acktray ithway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ailwayray acktray ithway ombocay-ignalssay
-STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Ailwayray acktray ithway ormalnay andway epray-ignalssay
-STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Ailwayray acktray ithway ormalnay andway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Ailwayray acktray ithway ormalnay andway ombocay-ignalssay
-STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Ailwayray acktray ithway epray- andway exitway-ignalssay
-STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ailwayray acktray ithway epray- andway ombocay-ignalssay
-STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ailwayray acktray ithway exitway- andway ombocay-ignalssay
-STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Ustmay emoveray ailwayray ationstay irstfay
-
-
-
-##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Ustmay emoveray oadray irstfay
-STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Oadray orksway inway ogresspray
-STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Oadray Onstructioncay
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Amwaytray Onstructioncay
-STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Electsay Oadray Idgebray
-STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... oneway ayway oadsray an'tcay avehay unctionsjay
-STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}An'tcay uildbay oadray erehay...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}An'tcay uildbay amwaytray erehay...
-STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}An'tcay emoveray oadray omfray erehay...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}An'tcay emoveray amwaytray omfray erehay...
-STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Oadray Epotday Orientationway
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Amtray Epotday Orientationway
-STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}An'tcay uildbay oadray ehiclevay epotday erehay...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}An'tcay uildbay amtray ehiclevay epotday erehay...
-STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}An'tcay uildbay usbay ationstay...
-STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}An'tcay uildbay orrylay ationstay...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}An'tcay uildbay assengerpay amtray ationstay...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}An'tcay uildbay eightfray amtray ationstay...
-STR_180A_ROAD_CONSTRUCTION                                      :Oadray onstructioncay
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Amwaytray onstructioncay
-STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Uildbay oadray ectionsay
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Uildbay amwaytray ectionsay
-STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Uildbay oadray ehiclevay epotday (orfay uildingbay andway ervicingsay ehiclesvay)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Uildbay amtray ehiclevay epotday (orfay uildingbay andway ervicingsay ehiclesvay)
-STR_180D_BUILD_BUS_STATION                                      :{BLACK}Uildbay usbay ationstay
-STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Uildbay orrylay oadinglay aybay
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Uildbay assengerpay amtray ationstay
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Uildbay eightfray amtray ationstay
-STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Uildbay oadray idgebray
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Uildbay amwaytray idgebray
-STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Uildbay oadray unneltay
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Uildbay amwaytray unneltay
-STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Oggletay uildbay/emoveray orfay oadray onstructioncay
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Oggletay uildbay/emoveray orfay amwaytray onstructioncay
-STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Electsay oadray ehiclevay epotday orientationway
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Electsay amtray ehiclevay epotday orientationway
-STR_1814_ROAD                                                   :Oadray
-STR_1815_ROAD_WITH_STREETLIGHTS                                 :Oadray ithway eetlightsstray
-STR_1816_TREE_LINED_ROAD                                        :Eetray-inedlay oadray
-STR_1817_ROAD_VEHICLE_DEPOT                                     :Oadray ehiclevay epotday
-STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Oadray/ailray evellay ossingcray
-STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}An'tcay emoveray usbay ationstay...
-STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}An'tcay emoveray orrylay ationstay...
-STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}An'tcay emoveray assengerpay amtray ationstay...
-STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}An'tcay emoveray eightfray amtray ationstay...
-
-##id 0x2000
-STR_2000_TOWNS                                                  :{WHITE}Ownstay
-STR_TOWN_LABEL_POP                                              :{WHITE}{TOWN} ({COMMA})
-STR_TOWN_LABEL                                                  :{WHITE}{TOWN}
-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}Uildingbay ustmay ebay emolishedday irstfay
-STR_2005                                                        :{WHITE}{TOWN}
-STR_2006_POPULATION                                             :{BLACK}Opulationpay: {ORANGE}{COMMA}{BLACK}  Ouseshay: {ORANGE}{COMMA}
-STR_2007_RENAME_TOWN                                            :Enameray Owntay
-STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}An'tcay enameray owntay...
-STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} ocallay authorityway efusesray otay allowway isthay
-STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Owntay amesnay - ickclay onway amenay otay entrecay iewvay onway owntay
-STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Entrecay ethay ainmay iewvay onway owntay ocationlay
-STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Angechay owntay amenay
-STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Assengerspay astlay onthmay: {ORANGE}{COMMA}{BLACK}  axmay: {ORANGE}{COMMA}
-STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Ailmay astlay onthmay: {ORANGE}{COMMA}{BLACK}  axmay: {ORANGE}{COMMA}
-STR_200F_TALL_OFFICE_BLOCK                                      :Alltay officeway ockblay
-STR_2010_OFFICE_BLOCK                                           :Officeway ockblay
-STR_2011_SMALL_BLOCK_OF_FLATS                                   :Allsmay ockblay ofway atsflay
-STR_2012_CHURCH                                                 :Urchchay
-STR_2013_LARGE_OFFICE_BLOCK                                     :Argelay officeway ockblay
-STR_2014_TOWN_HOUSES                                            :Owntay ouseshay
-STR_2015_HOTEL                                                  :Otelhay
-STR_2016_STATUE                                                 :Atuestay
-STR_2017_FOUNTAIN                                               :Ountainfay
-STR_2018_PARK                                                   :Arkpay
-STR_2019_OFFICE_BLOCK                                           :Officeway ockblay
-STR_201A_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
-STR_201B_MODERN_OFFICE_BUILDING                                 :Odernmay officeway uildingbay
-STR_201C_WAREHOUSE                                              :Arehouseway
-STR_201D_OFFICE_BLOCK                                           :Officeway ockblay
-STR_201E_STADIUM                                                :Adiumstay
-STR_201F_OLD_HOUSES                                             :Oldway ouseshay
-STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Ocallay authorityway
-STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Owshay informationway onway ocallay authorityway
-STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} ocallay authorityway
-STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Ansporttray ompanycay atingsray:
-STR_2024                                                        :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
-STR_2025_SUBSIDIES                                              :{WHITE}Ubsidiessay
-STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Ubsidiessay onway offerway orfay ervicessay akingtay:
-STR_2027_FROM_TO                                                :{ORANGE}{STRING} omfray {STRING} otay {STRING}
-STR_2028_BY                                                     :{YELLOW} (ybay {DATE_SHORT})
-STR_202A_NONE                                                   :{ORANGE}Onenay
-STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Ervicessay alreadyway ubsidisedsay:
-STR_202C_FROM_TO                                                :{ORANGE}{STRING} omfray {STATION} otay {STATION}{YELLOW} ({COMPANY}
-STR_202D_UNTIL                                                  :{YELLOW}, untilway {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Offerway ofway ubsidysay expiredway:{}{}{STRING} omfray {STRING} otay {STRING} illway ownay otnay attractway away ubsidysay.
-STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Ubsidysay ithdrawnway:{}{}{STRING} ervicesay omfray {STATION} otay {STATION} isway onay ongerlay ubsidisedsay.
-STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay offeredway:{}{}Irstfay {STRING} ervicesay omfray {STRING} otay {STRING} illway attractway away ear'syay ubsidysay omfray ethay ocallay authorityway!
-STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay 50% extraway orfay ethay extnay earyay!
-STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay oubleday atesray orfay ethay extnay earyay!
-STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay ipletray atesray orfay ethay extnay earyay!
-STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay adruplequay atesray orfay ethay extnay earyay!
-STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} ocallay authorityway efusesray otay allowway anotherway airportway otay ebay uiltbay inway isthay owntay
-STR_2036_COTTAGES                                               :Ottagescay
-STR_2037_HOUSES                                                 :Ouseshay
-STR_2038_FLATS                                                  :Atsflay
-STR_2039_TALL_OFFICE_BLOCK                                      :Alltay officeway ockblay
-STR_203A_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
-STR_203B_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
-STR_203C_THEATER                                                :Eatrethay
-STR_203D_STADIUM                                                :Adiumstay
-STR_203E_OFFICES                                                :Officesway
-STR_203F_HOUSES                                                 :Ouseshay
-STR_2040_CINEMA                                                 :Inemacay
-STR_2041_SHOPPING_MALL                                          :Oppingshay allmay
-STR_2042_DO_IT                                                  :{BLACK}Oday itway
-STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Istlay ofway ingsthay otay oday atway isthay owntay - ickclay onway itemway orfay oremay etailsday
-STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Arrycay outway ethay ighlightedhay actionway inway ethay istlay aboveway
-STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Actionsway availableway:
-STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Allsmay advertisingway ampaigncay
-STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Ediummay advertisingway ampaigncay
-STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Argelay advertisingway ampaigncay
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Undfay ocallay oadray econstructionray
-STR_204A_BUILD_STATUE_OF_COMPANY                                :Uildbay atuestay ofway ompanycay ownerway
-STR_204B_FUND_NEW_BUILDINGS                                     :Undfay ewnay uildingsbay
-STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Uybay exclusiveway ansporttray ightsray
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Ibebray ethay ocallay authorityway
-STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiateway away allsmay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
-STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Initiateway away ediummay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
-STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiateway away argelay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Undfay ethay econstructionray ofway ethay urbanway oadray etworknay. Ausescay onsiderablecay isruptionday otay oadray affictray orfay upway otay 6 onthsmay.{}  Ostcay: {CURRENCY}
-STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Uildbay away atuestay inway onourhay ofway ouryay ompanycay.{} Ostcay: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Undfay ethay onstructioncay ofway ewnay ommercialcay uildingsbay inway ethay owntay.{}  Ostcay: {CURRENCY}
-STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Uybay 1 ear'syay exclusiveway ansporttray ightsray inway owntay. Owntay authorityway illway onlyway allowway assengerspay andway argocay otay useway ouryay ompany'scay ationsstay.{} Ostcay: {CURRENCY}
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Ibebray ethay ocallay authorityway otay increaseway ouryay atingray, atway ethay iskray ofway away everesay enaltypay ifway aughtcay.{}  Ostcay: {CURRENCY}
-STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Affictray aoschay inway {TOWN}!{}{}Oadray ebuildingray ogrammepray undedfay ybay {COMPANY} ingsbray 6 onthsmay ofway iserymay otay otoristsmay!
-STR_2056                                                        :{TINYFONT}{WHITE}{TOWN}
-STR_2057                                                        :{ORANGE}{TOWN}{BLACK} ({COMMA})
-STR_2058_UNDER_CONSTRUCTION                                     :{STRING} (underway onstructioncay)
-STR_2059_IGLOO                                                  :Iglooway
-STR_205A_TEPEES                                                 :Epeestay
-STR_205B_TEAPOT_HOUSE                                           :Eapottay-Ousehay
-STR_205C_PIGGY_BANK                                             :Iggypay-Ankbay
-
-STR_INDUSTRY                                                    :{INDUSTRY}
-STR_TOWN                                                        :{TOWN}
-STR_INDUSTRY_FORMAT                                             :{TOWN} {STRING}
-STR_STATION                                                     :{STATION}
-
-##id 0x2800
-STR_LANDSCAPING                                                 :Andscapinglay
-STR_2800_PLANT_TREES                                            :Antplay eestray
-STR_2801_PLACE_SIGN                                             :Aceplay ignsay
-STR_2802_TREES                                                  :{WHITE}Eestray
-STR_2803_TREE_ALREADY_HERE                                      :{WHITE}...eetray alreadyway erehay
-STR_2804_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
-STR_2805_CAN_T_PLANT_TREE_HERE                                  :{WHITE}An'tcay antplay eetray erehay...
-STR_2806                                                        :{WHITE}{SIGN}
-STR_2808_TOO_MANY_SIGNS                                         :{WHITE}...ootay anymay ignssay
-STR_2809_CAN_T_PLACE_SIGN_HERE                                  :{WHITE}An'tcay aceplay ignsay erehay...
-STR_280A_SIGN                                                   :Ignsay
-STR_280B_EDIT_SIGN_TEXT                                         :{WHITE}Editway ignsay exttay
-STR_280C_CAN_T_CHANGE_SIGN_NAME                                 :{WHITE}An'tcay angechay ignsay amenay...
-STR_280D_SELECT_TREE_TYPE_TO_PLANT                              :{BLACK}Electsay eetray ypetay otay antplay
-STR_280E_TREES                                                  :Eestray
-STR_280F_RAINFOREST                                             :Ainforestray
-STR_2810_CACTUS_PLANTS                                          :Actuscay Antsplay
-
-##id 0x3000
-STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Ailray Ationstay Electionsay
-STR_3001_AIRPORT_SELECTION                                      :{WHITE}Airportway Electionsay
-STR_3002_ORIENTATION                                            :{BLACK}Orientationway
-STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Umbernay ofway ackstray
-STR_3004_PLATFORM_LENGTH                                        :{BLACK}Atformplay engthlay
-STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Ootay oseclay otay anotherway ailwayray ationstay
-STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Adjoinsway oremay anthay oneway existingway ationstay/oadinglay areaway
-STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Ootay anymay ationsstay/oadinglay areasway inway isthay owntay
-STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Ootay anymay ationsstay/oadinglay areasway
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Ootay anymay usbay opsstay
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Ootay anymay orrylay ationsstay
-STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Ootay oseclay otay anotherway ationstay/oadinglay areaway
-STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
-STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Ustmay emolishday ailwayray ationstay irstfay
-STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Ootay oseclay otay anotherway airportway
-STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Ustmay emolishday airportway irstfay
-
-STR_3030_RENAME_STATION_LOADING                                 :Enameray ationstay/oadinglay areaway
-STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}An'tcay enameray ationstay...
-STR_3032_RATINGS                                                :{BLACK}Atingsray
-STR_3033_ACCEPTS                                                :{BLACK}Acceptsway
-STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Ocallay atingray ofway ansporttray ervicesay:
-
-############ range for rating starts
-STR_3035_APPALLING                                              :Appallingway
-STR_3036_VERY_POOR                                              :Eryvay Oorpay
-STR_3037_POOR                                                   :Oorpay
-STR_3038_MEDIOCRE                                               :Ediocremay
-STR_3039_GOOD                                                   :Oodgay
-STR_303A_VERY_GOOD                                              :Eryvay Oodgay
-STR_303B_EXCELLENT                                              :Excellentway
-STR_303C_OUTSTANDING                                            :Outstandingway
-############ range for rating ends
-
-STR_303D                                                        :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
-STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} onay ongerlay acceptsway {STRING}
-STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} onay ongerlay acceptsway {STRING} orway {STRING}
-STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} ownay acceptsway {STRING}
-STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} ownay acceptsway {STRING} andway {STRING}
-STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Usbay Ationstay Orientationway
-STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orrylay Ationstay Orientationway
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Assengerpay Amtray Orientationway
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Eightfray Amtray Orientationway
-STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Ustmay emolishday usbay ationstay irstfay
-STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Ustmay emolishday orrylay ationstay irstfay
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Ustmay emolishday assengerpay amtray ationstay irstfay
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Ustmay emolishday eightfray amtray ationstay irstfay
-STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Ation{P "" s}stay
-STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
-STR_304A_NONE                                                   :{YELLOW}- Onenay -
-STR_304B_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
-STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Ootay oseclay otay anotherway ockday
-STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Ustmay emolishday ockday irstfay
-STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Electsay ailwayray ationstay orientationway
-STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Electsay umbernay ofway atformsplay orfay ailwayray ationstay
-STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Electsay engthlay ofway ailwayray ationstay
-STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Electsay usbay ationstay orientationway
-STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Electsay orrylay oadinglay aybay orientationway
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Electsay assengerpay amtray ationstay orientationway
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Electsay eightfray amtray ationstay orientationway
-STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Entrecay ainmay iewvay onway ationstay ocationlay
-STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Owshay ationstay atingsray
-STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Angechay amenay ofway ationstay
-STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Owshay istlay ofway acceptedway argocay
-STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Ationstay amesnay - ickclay onway amenay otay entrecay ainmay iewvay onway ationstay
-STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Electsay izesay/ypetay ofway airportway
-STR_305C_0                                                      :{STATION} {STATIONFEATURES}
-STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
-STR_305E_RAILROAD_STATION                                       :Ailwayray ationstay
-STR_305F_AIRCRAFT_HANGAR                                        :Aircraftway angarhay
-STR_3060_AIRPORT                                                :Airportway
-STR_3061_TRUCK_LOADING_AREA                                     :Orrylay oadinglay areaway
-STR_3062_BUS_STATION                                            :Usbay ationstay
-STR_3063_SHIP_DOCK                                              :Ipshay ockday
-STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Ighlighthay overagecay areaway ofway oposedpray itesay
-STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}On'tday ighlighthay overagecay areaway ofway oposedpray itesay
-STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Overagecay areaway ighlighthay
-STR_3068_DOCK                                                   :{WHITE}Ockday
-STR_3069_BUOY                                                   :Uoybay
-STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...uoybay inway ethay ayway
-STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...ationstay ootay eadspray outway
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...onuniformnay ationsstay isabledday
-STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Oldhay ownday CTRLay otay electsay oremay anthay oneway itemway
-
-STR_UNDEFINED                                                   :(undefinedway ingstray)
-STR_STAT_CLASS_DFLT                                             :Efaultday ationstay
-STR_STAT_CLASS_WAYP                                             :Aypointsway
-
-##id 0x3800
-STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Ipshay Epotday Orientationway
-STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...ustmay ebay uiltbay onway aterway
-STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}An'tcay uildbay ipshay epotday erehay...
-STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Electsay ipshay epotday orientationway
-STR_3804_WATER                                                  :Aterway
-STR_3805_COAST_OR_RIVERBANK                                     :Oastcay orway iverbankray
-STR_3806_SHIP_DEPOT                                             :Ipshay epotday
-STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...An'tcay uildbay onway aterway
-STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Ustmay emolishday analcay irstfay
-
-##id 0x4000
-STR_4000_SAVE_GAME                                              :{WHITE}Avesay Amegay
-STR_4001_LOAD_GAME                                              :{WHITE}Oadlay Amegay
-STR_4002_SAVE                                                   :{BLACK}Avesay
-STR_4003_DELETE                                                 :{BLACK}Eleteday
-STR_4004                                                        :{COMPANY}, {DATE_LONG}
-STR_4005_BYTES_FREE                                             :{BLACK}{COMMA} egabyte{P "" s}may eefray
-STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Unableway otay eadray ivedray
-STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Amegay Avesay Ailedfay{}{STRING}
-STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Unableway otay eleteday ilefay
-STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Amegay Oadlay Ailedfay{}{STRING}
-STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Internalway errorway: {STRING}
-STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Okenbray avegamesay - {STRING}
-STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Avegamesay isway ademay ithway ewernay ersionvay
-STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Ilefay otnay eadableray
-STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Ilefay otnay iteablewray
-STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Istlay ofway ivesdray, irectoriesday andway avedsay-amegay ilesfay
-STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Urrentlycay electedsay amenay orfay avedsay-amegay
-STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Eleteday ethay urrentlycay electedsay avedsay-amegay
-STR_400D_SAVE_THE_CURRENT_GAME_USING                            :{BLACK}Avesay ethay urrentcay amegay, usingway ethay electedsay amenay
-STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Electsay Ewnay Amegay Ypetay
-STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Electsay enarioscay (eengray), epray-etsay amegay (ueblay), orway andomray ewnay amegay
-STR_4010_GENERATE_RANDOM_NEW_GAME                               :Enerategay andomray ewnay amegay
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Oadlay Eightmaphay
-
-##id 0x4800
-STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} inway ethay ayway
-STR_4801                                                        :{WHITE}{INDUSTRY}
-STR_4802_COAL_MINE                                              :Oalcay Inemay
-STR_4803_POWER_STATION                                          :Owerpay Ationstay
-STR_4804_SAWMILL                                                :Awmillsay
-STR_4805_FOREST                                                 :Orestfay
-STR_4806_OIL_REFINERY                                           :Oilway Efineryray
-STR_4807_OIL_RIG                                                :Oilway Igray
-STR_4808_FACTORY                                                :Actoryfay
-STR_4809_PRINTING_WORKS                                         :Intingpray Orksway
-STR_480A_STEEL_MILL                                             :Eelstay Illmay
-STR_480B_FARM                                                   :Armfay
-STR_480C_COPPER_ORE_MINE                                        :Oppercay Oreway Inemay
-STR_480D_OIL_WELLS                                              :Oilway Ellsway
-STR_480E_BANK                                                   :Ankbay
-STR_480F_FOOD_PROCESSING_PLANT                                  :Oodfay Ocessingpray Antplay
-STR_4810_PAPER_MILL                                             :Aperpay Illmay
-STR_4811_GOLD_MINE                                              :Oldgay Inemay
-STR_4812_BANK                                                   :Ankbay
-STR_4813_DIAMOND_MINE                                           :Iamondday Inemay
-STR_4814_IRON_ORE_MINE                                          :Ironway Oreway Inemay
-STR_4815_FRUIT_PLANTATION                                       :Uitfray Antationplay
-STR_4816_RUBBER_PLANTATION                                      :Ubberray Antationplay
-STR_4817_WATER_SUPPLY                                           :Aterway Upplysay
-STR_4818_WATER_TOWER                                            :Aterway Owertay
-STR_4819_FACTORY                                                :Actoryfay
-STR_481A_FARM                                                   :Armfay
-STR_481B_LUMBER_MILL                                            :Umberlay Illmay
-STR_481C_COTTON_CANDY_FOREST                                    :Andyflosscay Orestfay
-STR_481D_CANDY_FACTORY                                          :Eetsway Actoryfay
-STR_481E_BATTERY_FARM                                           :Atterybay Armfay
-STR_481F_COLA_WELLS                                             :Olacay Ellsway
-STR_4820_TOY_SHOP                                               :Oytay Opshay
-STR_4821_TOY_FACTORY                                            :Oytay Actoryfay
-STR_4822_PLASTIC_FOUNTAINS                                      :Asticplay Ountainsfay
-STR_4823_FIZZY_DRINK_FACTORY                                    :Izzyfay Inkdray Actoryfay
-STR_4824_BUBBLE_GENERATOR                                       :Ubblebay Eneratorgay
-STR_4825_TOFFEE_QUARRY                                          :Offeetay Arryquay
-STR_4826_SUGAR_MINE                                             :Ugarsay Inemay
-
-############ range for requires starts
-STR_4827_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}
-STR_4828_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}, {STRING}
-STR_4829_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}, {STRING}, {STRING}
-############ range for requires ends
-
-############ range for produces starts
-STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Argocay aitingway otay ebay ocessedpray:
-STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
-STR_4827_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}
-STR_4828_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}, {STRING}
-############ range for produces ends
-
-STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Oductionpray astlay onthmay:
-STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% ansportedtray)
-STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Entrecay ethay ainmay iewvay onway industryway ocationlay
-STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Ewnay {STRING} underway onstructioncay earnay {TOWN}!
-STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Ewnay {STRING} eingbay antedplay earnay {TOWN}!
-STR_482F_COST                                                   :{BLACK}Ostcay: {YELLOW}{CURRENCY}
-STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}An'tcay onstructcay isthay industryway ypetay erehay...
-STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...orestfay ancay onlyway ebay antedplay aboveway owsnay-inelay
-STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{STRING} announcesway imminentway osureclay!
-STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Upplysay oblemspray ausecay {STRING} otay announceway imminentway osureclay!
-STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Acklay ofway earbynay eestray ausescay {STRING} otay announceway imminentway osureclay!
-STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} increasesway oductionpray!
-STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Ewnay oalcay eamsay oundfay atway {INDUSTRY}!{}Oductionpray isway expectedway otay oubleday!
-STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Ewnay oilway eservesray oundfay atway {INDUSTRY}!{}Oductionpray isway expectedway otay oubleday!
-STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Improvedway armingfay ethodsmay atway {INDUSTRY} areway expectedway otay oubleday oductionpray!
-STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}{INDUSTRY} oductionpray ownday ybay 50%
-STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Insectway infestationway ausescay avochay atway {INDUSTRY}!{}Oductionpray ownday ybay 50%
-STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...ancay onlyway ebay ositionedpay earnay edgesway ofway apmay
-STR_INDUSTRY_PROD_GOUP                                          :{BLACK}{BIGFONT}{STRING} oductionpray atway {INDUSTRY} increasesway {COMMA}%!
-STR_INDUSTRY_PROD_GODOWN                                        :{BLACK}{BIGFONT}{STRING} oductionpray atway {INDUSTRY} ecreasesday {COMMA}%!
-
-##id 0x5000
-STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}Aintray inway unneltay
-STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Oadray ehiclevay inway unneltay
-STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Anotherway unneltay inway ethay ayway
-STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Unableway otay excavateway andlay orfay otherway endway ofway unneltay
-STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Ustmay emolishday unneltay irstfay
-STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Ustmay emolishday idgebray irstfay
-STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Annotcay artstay andway endway inway ethay amesay otspay
-STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Artstay andway endway ustmay ebay inway inelay
-STR_500B_SITE_UNSUITABLE_FOR_TUNNEL                             :{WHITE}Itesay unsuitableway orfay unneltay entranceway
-STR_500D                                                        :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
-STR_500E_SUSPENSION_STEEL                                       :Uspensionsay, Eelstay
-STR_500F_GIRDER_STEEL                                           :Irdergay, Eelstay
-STR_5010_CANTILEVER_STEEL                                       :Antilevercay, Eelstay
-STR_5011_SUSPENSION_CONCRETE                                    :Uspensionsay, Oncretecay
-STR_5012_WOODEN                                                 :Oodenway
-STR_5013_CONCRETE                                               :Oncretecay
-STR_5014_TUBULAR_STEEL                                          :Ubulartay, Eelstay
-STR_BRIDGE_TUBULAR_SILICON                                      :Ubulartay, Iliconsay
-STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}An'tcay uildbay idgebray erehay...
-STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}An'tcay uildbay unneltay erehay...
-STR_5017_RAILROAD_TUNNEL                                        :Ailwayray unneltay
-STR_5018_ROAD_TUNNEL                                            :Oadray unneltay
-STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Eelstay uspensionsay ailray idgebray
-STR_501C_STEEL_GIRDER_RAIL_BRIDGE                               :Eelstay irdergay ailray idgebray
-STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE                           :Eelstay antilevercay ailray idgebray
-STR_501E_REINFORCED_CONCRETE_SUSPENSION                         :Einforcedray oncretecay uspensionsay ailray idgebray
-STR_501F_WOODEN_RAIL_BRIDGE                                     :Oodenway ailray idgebray
-STR_5020_CONCRETE_RAIL_BRIDGE                                   :Oncretecay ailray idgebray
-STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Eelstay uspensionsay oadray idgebray
-STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Eelstay irdergay oadray idgebray
-STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Eelstay antilevercay oadray idgebray
-STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Einforcedray oncretecay uspensionsay oadray idgebray
-STR_5025_WOODEN_ROAD_BRIDGE                                     :Oodenway oadray idgebray
-STR_5026_CONCRETE_ROAD_BRIDGE                                   :Oncretecay oadray idgebray
-STR_5027_TUBULAR_RAIL_BRIDGE                                    :Ubulartay ailray idgebray
-STR_5028_TUBULAR_ROAD_BRIDGE                                    :Ubulartay oadray idgebray
-
-##id 0x5800
-STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Objectway inway ethay ayway
-STR_5801_TRANSMITTER                                            :Ansmittertray
-STR_5802_LIGHTHOUSE                                             :Ighthouselay
-STR_5803_COMPANY_HEADQUARTERS                                   :Ompanycay Eadquartershay
-STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...ompanycay eadquartershay inway ethay ayway
-STR_5805_COMPANY_OWNED_LAND                                     :Ompanycay-ownedway andlay
-STR_5806_CAN_T_PURCHASE_THIS_LAND                               :{WHITE}An'tcay urchasepay isthay andlay areaway...
-STR_5807_YOU_ALREADY_OWN_IT                                     :{WHITE}...ouyay alreadyway ownway itway!
-
-
-############ WARNING, using range 0x6000 for strings that are stored in the savegame
-############ These strings may never get a new id, or savegames will break!
-##id 0x6000
-STR_SV_EMPTY                                                    :
-STR_SV_UNNAMED                                                  :Unnamedway
-STR_SV_TRAIN_NAME                                               :Aintray {COMMA}
-STR_SV_ROADVEH_NAME                                             :Oadray Ehiclevay {COMMA}
-STR_SV_SHIP_NAME                                                :Ipshay {COMMA}
-STR_SV_AIRCRAFT_NAME                                            :Aircraftway {COMMA}
-
-STR_SV_STNAME                                                   :{STRING}
-STR_SV_STNAME_NORTH                                             :{STRING} Orthnay
-STR_SV_STNAME_SOUTH                                             :{STRING} Outhsay
-STR_SV_STNAME_EAST                                              :{STRING} Eastway
-STR_SV_STNAME_WEST                                              :{STRING} Estway
-STR_SV_STNAME_CENTRAL                                           :{STRING} Entralcay
-STR_SV_STNAME_TRANSFER                                          :{STRING} Ansfertray
-STR_SV_STNAME_HALT                                              :{STRING} Althay
-STR_SV_STNAME_VALLEY                                            :{STRING} Alleyvay
-STR_SV_STNAME_HEIGHTS                                           :{STRING} Eightshay
-STR_SV_STNAME_WOODS                                             :{STRING} Oodsway
-STR_SV_STNAME_LAKESIDE                                          :{STRING} Akesidelay
-STR_SV_STNAME_EXCHANGE                                          :{STRING} Exchangeway
-STR_SV_STNAME_AIRPORT                                           :{STRING} Airportway
-STR_SV_STNAME_OILFIELD                                          :{STRING} Oilfieldway
-STR_SV_STNAME_MINES                                             :{STRING} Inesmay
-STR_SV_STNAME_DOCKS                                             :{STRING} Ocksday
-STR_SV_STNAME_BUOY_1                                            :{STRING} Uoybay 1
-STR_SV_STNAME_BUOY_2                                            :{STRING} Uoybay 2
-STR_SV_STNAME_BUOY_3                                            :{STRING} Uoybay 3
-STR_SV_STNAME_BUOY_4                                            :{STRING} Uoybay 4
-STR_SV_STNAME_BUOY_5                                            :{STRING} Uoybay 5
-STR_SV_STNAME_BUOY_6                                            :{STRING} Uoybay 6
-STR_SV_STNAME_BUOY_7                                            :{STRING} Uoybay 7
-STR_SV_STNAME_BUOY_8                                            :{STRING} Uoybay 8
-STR_SV_STNAME_BUOY_9                                            :{STRING} Uoybay 9
-STR_SV_STNAME_ANNEXE                                            :{STRING} Annexeway
-STR_SV_STNAME_SIDINGS                                           :{STRING} Idingssay
-STR_SV_STNAME_BRANCH                                            :{STRING} Anchbray
-STR_SV_STNAME_UPPER                                             :Upperway {STRING}
-STR_SV_STNAME_LOWER                                             :Owerlay {STRING}
-STR_SV_STNAME_HELIPORT                                          :{STRING} Eliporthay
-STR_SV_STNAME_FOREST                                            :{STRING} Orestfay
-STR_SV_STNAME_FALLBACK                                          :{STRING} Ationstay #{NUM}
-
-############ end of savegame specific region!
-
-##id 0x6800
-STR_6800_DIFFICULTY_LEVEL                                       :{WHITE}Ifficultyday Evellay
-STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Avesay
-
-############ range for difficulty levels starts
-STR_6801_EASY                                                   :{BLACK}Easyway
-STR_6802_MEDIUM                                                 :{BLACK}Ediummay
-STR_6803_HARD                                                   :{BLACK}Ardhay
-STR_6804_CUSTOM                                                 :{BLACK}Ustomcay
-############ range for difficulty levels ends
-
-############ range for difficulty settings starts
-STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Aximummay onay. ompetitorscay: {ORANGE}{COMMA}
-STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Ompetitorcay artstay imetay: {ORANGE}{STRING}
-STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Onay. ofway ownstay: {ORANGE}{STRING}
-STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Onay. ofway industriesway: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Aximummay initialway oanlay: {ORANGE}{CURRENCY}
-STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Initialway interestway ateray: {ORANGE}{COMMA}%
-STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Ehiclevay unningray ostscay: {ORANGE}{STRING}
-STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Onstructioncay eedspay ofway ompetitorscay: {ORANGE}{STRING}
-STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Intelligenceway ofway ompetitorscay: {ORANGE}{STRING}
-STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Ehiclevay eakdownsbray: {ORANGE}{STRING}
-STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Ubsidysay ultipliermay: {ORANGE}{STRING}
-STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Ostcay ofway onstructioncay: {ORANGE}{STRING}
-STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Erraintay ypetay: {ORANGE}{STRING}
-STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Antityquay ofway easay/akeslay: {ORANGE}{STRING}
-STR_6813_ECONOMY                                                :{LTBLUE}Economyway: {ORANGE}{STRING}
-STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Aintray eversingray: {ORANGE}{STRING}
-STR_6815_DISASTERS                                              :{LTBLUE}Isastersday: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Itycay ouncil'scay attitudeway owardstay areaway estructuringray: {ORANGE}{STRING}
-############ range for difficulty settings ends
-
-STR_26816_NONE                                                  :Onenay
-STR_NUM_VERY_LOW                                                :Eryvay owlay
-STR_6816_LOW                                                    :Owlay
-STR_6817_NORMAL                                                 :Ormalnay
-STR_6818_HIGH                                                   :Ighhay
-STR_6819                                                        :{BLACK}{SMALLLEFTARROW}
-STR_681A                                                        :{BLACK}{SMALLRIGHTARROW}
-STR_681B_VERY_SLOW                                              :Eryvay Owslay
-STR_681C_SLOW                                                   :Owslay
-STR_681D_MEDIUM                                                 :Ediummay
-STR_681E_FAST                                                   :Astfay
-STR_681F_VERY_FAST                                              :Eryvay Astfay
-STR_VERY_LOW                                                    :Eryvay Owlay
-STR_6820_LOW                                                    :Owlay
-STR_6821_MEDIUM                                                 :Ediummay
-STR_6822_HIGH                                                   :Ighhay
-STR_6823_NONE                                                   :Onenay
-STR_6824_REDUCED                                                :Educedray
-STR_6825_NORMAL                                                 :Ormalnay
-STR_6826_X1_5                                                   :xay1.5
-STR_6827_X2                                                     :xay2
-STR_6828_X3                                                     :xay3
-STR_6829_X4                                                     :xay4
-STR_682A_VERY_FLAT                                              :Eryvay Atflay
-STR_682B_FLAT                                                   :Atflay
-STR_682C_HILLY                                                  :Illyhay
-STR_682D_MOUNTAINOUS                                            :Ountainousmay
-STR_682E_STEADY                                                 :Eadystay
-STR_682F_FLUCTUATING                                            :Uctuatingflay
-STR_6830_IMMEDIATE                                              :Immediateway
-STR_6831_3_MONTHS_AFTER_PLAYER                                  :3 onthsmay afterway ayerplay
-STR_6832_6_MONTHS_AFTER_PLAYER                                  :6 onthsmay afterway ayerplay
-STR_6833_9_MONTHS_AFTER_PLAYER                                  :9 onthsmay afterway ayerplay
-STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :Atway endway ofway inelay, andway atway ationsstay
-STR_6835_AT_END_OF_LINE_ONLY                                    :Atway endway ofway inelay onlyway
-STR_6836_OFF                                                    :Offway
-STR_6837_ON                                                     :Onway
-STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Owshay ihay-orescay artchay
-STR_6839_PERMISSIVE                                             :Ermissivepay
-STR_683A_TOLERANT                                               :Oleranttay
-STR_683B_HOSTILE                                                :Ostilehay
-
-##id 0x7000
-STR_7000                                                        :
-STR_7001                                                        :{WHITE}{COMPANY} {BLACK}{COMPANYNUM}
-STR_7002_PLAYER                                                 :(Ayerplay {COMMA})
-STR_7004_NEW_FACE                                               :{BLACK}Ewnay Acefay
-STR_7005_COLOR_SCHEME                                           :{BLACK}Olourcay Emeschay
-STR_7006_COLOR_SCHEME                                           :{GOLD}Olourcay Emeschay:
-STR_7007_NEW_COLOR_SCHEME                                       :{WHITE}Ewnay Olourcay Emeschay
-STR_7008_COMPANY_NAME                                           :{BLACK}Ompanycay Amenay
-STR_7009_PRESIDENT_NAME                                         :{BLACK}Anagermay Amenay
-STR_700A_COMPANY_NAME                                           :Ompanycay Amenay
-STR_700B_PRESIDENT_S_NAME                                       :Anager'smay Amenay
-STR_700C_CAN_T_CHANGE_COMPANY_NAME                              :{WHITE}An'tcay angechay ompanycay amenay...
-STR_700D_CAN_T_CHANGE_PRESIDENT                                 :{WHITE}An'tcay angechay anager'smay amenay...
-STR_700E_FINANCES                                               :{WHITE}{COMPANY} Inancesfay {BLACK}{COMPANYNUM}
-STR_700F_EXPENDITURE_INCOME                                     :{WHITE}Expenditureway/Incomeway
-STR_7010                                                        :{WHITE}{NUM}
-STR_7011_CONSTRUCTION                                           :{GOLD}Onstructioncay
-STR_7012_NEW_VEHICLES                                           :{GOLD}Ewnay Ehiclesvay
-STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Aintray Unningray Ostscay
-STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Oadray Ehvay. Unningray Ostscay
-STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Aircraftway Unningray Ostscay
-STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Ipshay Unningray Ostscay
-STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Opertypray Aintenancemay
-STR_7018_TRAIN_INCOME                                           :{GOLD}Aintray Incomeway
-STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Oadray Ehiclevay Incomeway
-STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Aircraftway Incomeway
-STR_701B_SHIP_INCOME                                            :{GOLD}Ipshay Incomeway
-STR_701C_LOAN_INTEREST                                          :{GOLD}Oanlay Interestway
-STR_701D_OTHER                                                  :{GOLD}Otherway
-STR_701E                                                        :{BLACK}-{CURRENCY}
-STR_701F                                                        :{BLACK}+{CURRENCY}
-STR_7020_TOTAL                                                  :{WHITE}Otaltay:
-STR_7021                                                        :{COMPANY} {COMPANYNUM}
-STR_7022_INCOME_GRAPH                                           :{WHITE}Incomeway Aphgray
-STR_CURRCOMPACT                                                 :{CURRCOMPACT}
-STR_7024                                                        :{COMMA}
-STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Operatingway Ofitpray Aphgray
-STR_7026_BANK_BALANCE                                           :{WHITE}Ankbay Alancebay
-STR_7027_LOAN                                                   :{WHITE}Oanlay
-STR_MAX_LOAN                                                    :{WHITE}Axmay Oanlay:  {BLACK}{CURRENCY}
-STR_7028                                                        :{BLACK}{CURRENCY}
-STR_7029_BORROW                                                 :{BLACK}Orrowbay {SKIP}{SKIP}{CURRENCY}
-STR_702A_REPAY                                                  :{BLACK}Epayray {SKIP}{SKIP}{CURRENCY}
-STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...aximummay ermittedpay oanlay izesay isway {CURRENCY}
-STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}An'tcay orrowbay anyway oremay oneymay...
-STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...onay oanlay otay epayray
-STR_702E_REQUIRED                                               :{WHITE}...{CURRENCY} equiredray
-STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}An'tcay epayray oanlay...
-STR_INSUFFICIENT_FUNDS                                          :{WHITE}An'tcay ivegay awayway oneymay atthay isway oanedlay omfray ethay ankbay...
-STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Electsay ewnay acefay orfay anagermay
-STR_7031_CHANGE_THE_COMPANY_VEHICLE                             :{BLACK}Angechay ethay ompanycay ehiclevay iverylay
-STR_7032_CHANGE_THE_PRESIDENT_S                                 :{BLACK}Angechay ethay anager'smay amenay
-STR_7033_CHANGE_THE_COMPANY_NAME                                :{BLACK}Angechay ethay ompanycay amenay
-STR_7034_CLICK_ON_SELECTED_NEW_COLOR                            :{BLACK}Ickclay onway esiredday olourcay emeschay
-STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Increaseway izesay ofway oanlay
-STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Epayray artpay ofway oanlay
-STR_7037_PRESIDENT                                              :{WHITE}{PLAYERNAME}{}{GOLD}(Anagermay)
-STR_7038_INAUGURATED                                            :{GOLD}Inauguratedway: {WHITE}{NUM}
-STR_7039_VEHICLES                                               :{GOLD}Ehiclesvay:
-STR_TRAINS                                                      :{WHITE}{COMMA} ain{P "" s}tray
-STR_ROAD_VEHICLES                                               :{WHITE}{COMMA} oadray ehicle{P "" s}vay
-STR_AIRCRAFT                                                    :{WHITE}{COMMA} aircraftway
-STR_SHIPS                                                       :{WHITE}{COMMA} ip{P "" s}shay
-STR_7042_NONE                                                   :{WHITE}Onenay
-STR_7043_FACE_SELECTION                                         :{WHITE}Acefay Electionsay
-STR_7044_MALE                                                   :{BLACK}Alemay
-STR_7045_FEMALE                                                 :{BLACK}Emalefay
-STR_7046_NEW_FACE                                               :{BLACK}Ewnay Acefay
-STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Ancelcay ewnay acefay electionsay
-STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Acceptway ewnay acefay electionsay
-STR_7049_SELECT_MALE_FACES                                      :{BLACK}Electsay alemay acesfay
-STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Electsay emalefay acesfay
-STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Enerategay andomray ewnay acefay
-STR_704C_KEY                                                    :{BLACK}Eykay
-STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Owshay eykay otay aphsgray
-STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Eykay otay ompanycay aphsgray
-STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Ickclay erehay otay oggletay ompany'scay entryway onway aphgray onway/offway
-STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Unitsway ofway argocay eliveredday
-STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Ompanycay erformancepay atingsray (aximummay atingray=1000)
-STR_7052_COMPANY_VALUES                                         :{WHITE}Ompanycay aluesvay
-STR_7053_COMPANY_LEAGUE_TABLE                                   :{WHITE}Ompanycay Eaguelay Abletay
-STR_7054                                                        :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
-STR_7055                                                        :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM}  '{STRING}'
-STR_7056_TRANSPORT_COMPANY_IN_TROUBLE                           :{BLACK}{BIGFONT}Ansporttray ompanycay inway oubletray!
-STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} illway ebay oldsay offway orway eclaredday ankruptbay unlessway erformancepay increasesway oonsay!
-STR_7058_PRESIDENT                                              :{BLACK}{PLAYERNAME}{}(Anagermay)
-STR_7059_TRANSPORT_COMPANY_MERGER                               :{BLACK}{BIGFONT}Ansporttray ompanycay ergermay!
-STR_705A_HAS_BEEN_SOLD_TO_FOR                                   :{BLACK}{BIGFONT}{COMPANY} ashay eenbay oldsay otay {COMPANY} orfay {CURRENCY}!
-STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT                         :{WHITE}Eway areway ookinglay orfay away ansporttray ompanycay otay aketay-overway ourway ompanycay.{}{}Oday ouyay antway otay urchasepay {COMPANY} orfay {CURRENCY}?
-STR_705C_BANKRUPT                                               :{BLACK}{BIGFONT}Ankruptbay!
-STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}{COMPANY} ashay eenbay osedclay ownday ybay editorscray andway allway assetsway oldsay offway!
-STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}Ewnay ansporttray ompanycay aunchedlay!
-STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} artsstay onstructioncay earnay {TOWN}!
-STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}An'tcay uybay ompanycay...
-STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Argocay Aymentpay Atesray
-STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Aysday inway ansittray
-STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Aymentpay orfay eliveringday 10 unitsway (orway 10,000 itreslay) ofway argocay away istanceday ofway 20 aressquay
-STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Oggletay aphgray orfay argocay ypetay onway/offway
-STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
-STR_7066_ENGINEER                                               :Engineerway
-STR_7067_TRAFFIC_MANAGER                                        :Affictray Anagermay
-STR_7068_TRANSPORT_COORDINATOR                                  :Ansporttray Oordinatorcay
-STR_7069_ROUTE_SUPERVISOR                                       :Outeray Upervisorsay
-STR_706A_DIRECTOR                                               :Irectorday
-STR_706B_CHIEF_EXECUTIVE                                        :Iefchay Executiveway
-STR_706C_CHAIRMAN                                               :Airmanchay
-STR_706D_PRESIDENT                                              :Esidentpray
-STR_706E_TYCOON                                                 :Ycoontay
-STR_706F_BUILD_HQ                                               :{BLACK}Uildbay HQay
-STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Uildbay ompanycay eadquartershay / iewvay ompanycay eadquartershay
-STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Ebuildray ompanycay eadquartershay elsewhereway orfay 1% ostcay ofway ompanycay aluevay
-STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}An'tcay uildbay ompanycay eadquartershay...
-STR_7072_VIEW_HQ                                                :{BLACK}Iewvay HQay
-STR_RELOCATE_HQ                                                 :{BLACK}Elocateray HQay
-STR_COMPANY_PASSWORD                                            :{BLACK}Asswordpay
-STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Asswordpay-otectpray ouryay ompanycay otay eventpray unauthorisedway usersway omfray oiningjay.
-STR_SET_COMPANY_PASSWORD                                        :{BLACK}Etsay ompanycay asswordpay
-STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Orldway Ecessionray!{}{}Inancialfay expertsway earfay orstway asway economyway umpsslay!
-STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Ecessionray Overway!{}{}Upturnway inway adetray ivesgay onfidencecay otay industriesway asway economyway engthensstray!
-STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Oggletay argelay/allsmay indowway izesay
-STR_7076_COMPANY_VALUE                                          :{GOLD}Ompanycay aluevay: {WHITE}{CURRENCY}
-STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Uybay 25% areshay inway ompanycay
-STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Ellsay 25% areshay inway ompanycay
-STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Uybay 25% areshay inway isthay ompanycay
-STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}Ellsay 25% areshay inway isthay ompanycay
-STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}An'tcay uybay 25% areshay inway isthay ompanycay...
-STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}An'tcay ellsay 25% areshay inway isthay ompanycay...
-STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% ownedway ybay {COMPANY})
-STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} ashay eenbay akentay overway ybay {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Isthay ompanycay isway otnay oldway enoughway otay adetray aresshay etyay...
-
-STR_LIVERY_DEFAULT                                              :Andardstay Iverylay
-STR_LIVERY_STEAM                                                :Eamstay Engineway
-STR_LIVERY_DIESEL                                               :Ieselday Engineway
-STR_LIVERY_ELECTRIC                                             :Electricway Engineway
-STR_LIVERY_MONORAIL                                             :Onorailmay Engineway
-STR_LIVERY_MAGLEV                                               :Aglevmay Engineway
-STR_LIVERY_DMU                                                  :UDMay
-STR_LIVERY_EMU                                                  :EMUWAY
-STR_LIVERY_PASSENGER_WAGON_STEAM                                :Assengerpay Oachcay (Eamstay)
-STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Assengerpay Oachcay (Ieselday)
-STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Assengerpay Oachcay (Electricway)
-STR_LIVERY_FREIGHT_WAGON                                        :Eightfray Agonway
-STR_LIVERY_BUS                                                  :Usbay
-STR_LIVERY_TRUCK                                                :Orrylay
-STR_LIVERY_PASSENGER_SHIP                                       :Assengerpay Erryfay
-STR_LIVERY_FREIGHT_SHIP                                         :Eightfray Ipshay
-STR_LIVERY_HELICOPTER                                           :Elicopterhay
-STR_LIVERY_SMALL_PLANE                                          :Allsmay Aeroplaneway
-STR_LIVERY_LARGE_PLANE                                          :Argelay Aeroplaneway
-STR_LIVERY_PASSENGER_TRAM                                       :Assengerpay Amtray
-STR_LIVERY_FREIGHT_TRAM                                         :Eightfray Amtray
-
-STR_LIVERY_GENERAL_TIP                                          :{BLACK}Owshay eneralgay olourcay emesschay
-STR_LIVERY_TRAIN_TIP                                            :{BLACK}Owshay aintray olourcay emesschay
-STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Owshay oadray ehiclevay olourcay emesschay
-STR_LIVERY_SHIP_TIP                                             :{BLACK}Owshay ipshay olourcay emesschay
-STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Owshay aircraftway olourcay emesschay
-STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Oosechay ethay imarypray olourcay orfay ethay electedsay emeschay
-STR_LIVERY_SECONDARY_TIP                                        :{BLACK}Oosechay ethay econdarysay olourcay orfay ethay electedsay emeschay
-STR_LIVERY_PANEL_TIP                                            :{BLACK}Electsay away olourcay emeschay otay angechay, orway ultiplemay emesschay ithway CTRLay+ickclay. Ickclay onway ethay oxbay otay oggletay useway ofway ethay emeschay
-
-##id 0x8000
-STR_8000_KIRBY_PAUL_TANK_STEAM                                  :Irbykay Aulpay Anktay (Eamstay)
-STR_8001_MJS_250_DIESEL                                         :MJSay 250 (Ieselday)
-STR_8002_PLODDYPHUT_CHOO_CHOO                                   :Oddyphutplay Oochay-Oochay
-STR_8003_POWERNAUT_CHOO_CHOO                                    :Owernautpay Oochay-Oochay
-STR_8004_MIGHTYMOVER_CHOO_CHOO                                  :Ightymovermay Oochay-Oochay
-STR_8005_PLODDYPHUT_DIESEL                                      :Oddyphutplay Ieselday
-STR_8006_POWERNAUT_DIESEL                                       :Owernautpay Ieselday
-STR_8007_WILLS_2_8_0_STEAM                                      :Illsway 2-8-0 (Eamstay)
-STR_8008_CHANEY_JUBILEE_STEAM                                   :Aneychay 'Ubilee'jay (Eamstay)
-STR_8009_GINZU_A4_STEAM                                         :Inzugay 'Away4' (Eamstay)
-STR_800A_SH_8P_STEAM                                            :SHay '8P'ay (Eamstay)
-STR_800B_MANLEY_MOREL_DMU_DIESEL                                :Anleymay-Orelmay UDMay (Ieselday)
-STR_800C_DASH_DIESEL                                            :'Ash'day (Ieselday)
-STR_800D_SH_HENDRY_25_DIESEL                                    :SHay/Endryhay '25' (Ieselday)
-STR_800E_UU_37_DIESEL                                           :UUWAY '37' (Ieselday)
-STR_800F_FLOSS_47_DIESEL                                        :Ossflay '47' (Ieselday)
-STR_8010_CS_4000_DIESEL                                         :CSay 4000 (Ieselday)
-STR_8011_CS_2400_DIESEL                                         :CSay 2400 (Ieselday)
-STR_8012_CENTENNIAL_DIESEL                                      :Entennialcay (Ieselday)
-STR_8013_KELLING_3100_DIESEL                                    :Ellingkay 3100 (Ieselday)
-STR_8014_TURNER_TURBO_DIESEL                                    :Urnertay Urbotay (Ieselday)
-STR_8015_MJS_1000_DIESEL                                        :MJSay 1000 (Ieselday)
-STR_8016_SH_125_DIESEL                                          :SHay '125' (Ieselday)
-STR_8017_SH_30_ELECTRIC                                         :SHay '30' (Electricway)
-STR_8018_SH_40_ELECTRIC                                         :SHay '40' (Electricway)
-STR_8019_T_I_M_ELECTRIC                                         :'Tay.Iway.May.' (Electricway)
-STR_801A_ASIASTAR_ELECTRIC                                      :'AsiaStar'WAY (Electricway)
-STR_801B_PASSENGER_CAR                                          :Assengerpay Arriagecay
-STR_801C_MAIL_VAN                                               :Ailmay Anvay
-STR_801D_COAL_CAR                                               :Oalcay Ucktray
-STR_801E_OIL_TANKER                                             :Oilway Ankertay
-STR_801F_LIVESTOCK_VAN                                          :Ivestocklay Anvay
-STR_8020_GOODS_VAN                                              :Oodsgay Anvay
-STR_8021_GRAIN_HOPPER                                           :Aingray Opperhay
-STR_8022_WOOD_TRUCK                                             :Oodway Ucktray
-STR_8023_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
-STR_8024_STEEL_TRUCK                                            :Eelstay Ucktray
-STR_8025_ARMORED_VAN                                            :Armouredway Anvay
-STR_8026_FOOD_VAN                                               :Oodfay Anvay
-STR_8027_PAPER_TRUCK                                            :Aperpay Ucktray
-STR_8028_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
-STR_8029_WATER_TANKER                                           :Aterway Ankertay
-STR_802A_FRUIT_TRUCK                                            :Uitfray Ucktray
-STR_802B_RUBBER_TRUCK                                           :Ubberray Ucktray
-STR_802C_SUGAR_TRUCK                                            :Ugarsay Ucktray
-STR_802D_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
-STR_802E_TOFFEE_HOPPER                                          :Offeetay Opperhay
-STR_802F_BUBBLE_VAN                                             :Ubblebay Anvay
-STR_8030_COLA_TANKER                                            :Olacay Ankertay
-STR_8031_CANDY_VAN                                              :Eetsway Anvay
-STR_8032_TOY_VAN                                                :Oytay Anvay
-STR_8033_BATTERY_TRUCK                                          :Atterybay Ucktray
-STR_8034_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
-STR_8035_PLASTIC_TRUCK                                          :Asticplay Ucktray
-STR_8036_X2001_ELECTRIC                                         :'Xay2001' (Electricway)
-STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Illenniummay Zay1' (Electricway)
-STR_8038_WIZZOWOW_Z99                                           :Izzowowway Zay99
-STR_8039_PASSENGER_CAR                                          :Assengerpay Arriagecay
-STR_803A_MAIL_VAN                                               :Ailmay Anvay
-STR_803B_COAL_CAR                                               :Oalcay Ucktray
-STR_803C_OIL_TANKER                                             :Oilway Ankertay
-STR_803D_LIVESTOCK_VAN                                          :Ivestocklay Anvay
-STR_803E_GOODS_VAN                                              :Oodsgay Anvay
-STR_803F_GRAIN_HOPPER                                           :Aingray Opperhay
-STR_8040_WOOD_TRUCK                                             :Oodway Ucktray
-STR_8041_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
-STR_8042_STEEL_TRUCK                                            :Eelstay Ucktray
-STR_8043_ARMORED_VAN                                            :Armouredway Anvay
-STR_8044_FOOD_VAN                                               :Oodfay Anvay
-STR_8045_PAPER_TRUCK                                            :Aperpay Ucktray
-STR_8046_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
-STR_8047_WATER_TANKER                                           :Aterway Ankertay
-STR_8048_FRUIT_TRUCK                                            :Uitfray Ucktray
-STR_8049_RUBBER_TRUCK                                           :Ubberray Ucktray
-STR_804A_SUGAR_TRUCK                                            :Ugarsay Ucktray
-STR_804B_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
-STR_804C_TOFFEE_HOPPER                                          :Offeetay Opperhay
-STR_804D_BUBBLE_VAN                                             :Ubblebay Anvay
-STR_804E_COLA_TANKER                                            :Olacay Ankertay
-STR_804F_CANDY_VAN                                              :Eetsway Anvay
-STR_8050_TOY_VAN                                                :Oytay Anvay
-STR_8051_BATTERY_TRUCK                                          :Atterybay Ucktray
-STR_8052_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
-STR_8053_PLASTIC_TRUCK                                          :Asticplay Ucktray
-STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Evlay1 'Eviathan'lay (Electricway)
-STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Evlay2 'Yclops'cay (Electricway)
-STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Evlay3 'Egasus'pay (Electricway)
-STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Evlay4 'Imaera'chay (Electricway)
-STR_8058_WIZZOWOW_ROCKETEER                                     :Izzowowway Ocketeerray
-STR_8059_PASSENGER_CAR                                          :Assengerpay Arriagecay
-STR_805A_MAIL_VAN                                               :Ailmay Anvay
-STR_805B_COAL_CAR                                               :Oalcay Ucktray
-STR_805C_OIL_TANKER                                             :Oilway Ankertay
-STR_805D_LIVESTOCK_VAN                                          :Ivestocklay Anvay
-STR_805E_GOODS_VAN                                              :Oodsgay Anvay
-STR_805F_GRAIN_HOPPER                                           :Aingray Opperhay
-STR_8060_WOOD_TRUCK                                             :Oodway Ucktray
-STR_8061_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
-STR_8062_STEEL_TRUCK                                            :Eelstay Ucktray
-STR_8063_ARMORED_VAN                                            :Armouredway Anvay
-STR_8064_FOOD_VAN                                               :Oodfay Anvay
-STR_8065_PAPER_TRUCK                                            :Aperpay Ucktray
-STR_8066_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
-STR_8067_WATER_TANKER                                           :Aterway Ankertay
-STR_8068_FRUIT_TRUCK                                            :Uitfray Ucktray
-STR_8069_RUBBER_TRUCK                                           :Ubberray Ucktray
-STR_806A_SUGAR_TRUCK                                            :Ugarsay Ucktray
-STR_806B_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
-STR_806C_TOFFEE_HOPPER                                          :Offeetay Opperhay
-STR_806D_BUBBLE_VAN                                             :Ubblebay Anvay
-STR_806E_COLA_TANKER                                            :Olacay Ankertay
-STR_806F_CANDY_VAN                                              :Eetsway Anvay
-STR_8070_TOY_VAN                                                :Oytay Anvay
-STR_8071_BATTERY_TRUCK                                          :Atterybay Ucktray
-STR_8072_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
-STR_8073_PLASTIC_TRUCK                                          :Asticplay Ucktray
-STR_8074_MPS_REGAL_BUS                                          :MPSay Egalray Usbay
-STR_8075_HEREFORD_LEOPARD_BUS                                   :Erefordhay Eopardlay Usbay
-STR_8076_FOSTER_BUS                                             :Osterfay Usbay
-STR_8077_FOSTER_MKII_SUPERBUS                                   :Osterfay IImkay Uperbussay
-STR_8078_PLODDYPHUT_MKI_BUS                                     :Oddyphutplay Imkay Usbay
-STR_8079_PLODDYPHUT_MKII_BUS                                    :Oddyphutplay IImkay Usbay
-STR_807A_PLODDYPHUT_MKIII_BUS                                   :Oddyphutplay IIImkay Usbay
-STR_807B_BALOGH_COAL_TRUCK                                      :Aloghbay Oalcay Ucktray
-STR_807C_UHL_COAL_TRUCK                                         :Uhlway Oalcay Ucktray
-STR_807D_DW_COAL_TRUCK                                          :DWay Oalcay Ucktray
-STR_807E_MPS_MAIL_TRUCK                                         :MPSay Ailmay Ucktray
-STR_807F_REYNARD_MAIL_TRUCK                                     :Eynardray Ailmay Ucktray
-STR_8080_PERRY_MAIL_TRUCK                                       :Errypay Ailmay Ucktray
-STR_8081_MIGHTYMOVER_MAIL_TRUCK                                 :IghtyMovermay Ailmay Ucktray
-STR_8082_POWERNAUGHT_MAIL_TRUCK                                 :Owernaughtpay Ailmay Ucktray
-STR_8083_WIZZOWOW_MAIL_TRUCK                                    :Izzowowway Ailmay Ucktray
-STR_8084_WITCOMBE_OIL_TANKER                                    :Itcombeway Oilway Ankertay
-STR_8085_FOSTER_OIL_TANKER                                      :Osterfay Oilway Ankertay
-STR_8086_PERRY_OIL_TANKER                                       :Errypay Oilway Ankertay
-STR_8087_TALBOTT_LIVESTOCK_VAN                                  :Albotttay Ivestocklay Anvay
-STR_8088_UHL_LIVESTOCK_VAN                                      :Uhlway Ivestocklay Anvay
-STR_8089_FOSTER_LIVESTOCK_VAN                                   :Osterfay Ivestocklay Anvay
-STR_808A_BALOGH_GOODS_TRUCK                                     :Aloghbay Oodsgay Ucktray
-STR_808B_CRAIGHEAD_GOODS_TRUCK                                  :Aigheadcray Oodsgay Ucktray
-STR_808C_GOSS_GOODS_TRUCK                                       :Ossgay Oodsgay Ucktray
-STR_808D_HEREFORD_GRAIN_TRUCK                                   :Erefordhay Aingray Ucktray
-STR_808E_THOMAS_GRAIN_TRUCK                                     :Omasthay Aingray Ucktray
-STR_808F_GOSS_GRAIN_TRUCK                                       :Ossgay Aingray Ucktray
-STR_8090_WITCOMBE_WOOD_TRUCK                                    :Itcombeway Oodway Ucktray
-STR_8091_FOSTER_WOOD_TRUCK                                      :Osterfay Oodway Ucktray
-STR_8092_MORELAND_WOOD_TRUCK                                    :Orelandmay Oodway Ucktray
-STR_8093_MPS_IRON_ORE_TRUCK                                     :MPSay Ironway Oreway Ucktray
-STR_8094_UHL_IRON_ORE_TRUCK                                     :Uhlway Ironway Oreway Ucktray
-STR_8095_CHIPPY_IRON_ORE_TRUCK                                  :Ippychay Ironway Oreway Ucktray
-STR_8096_BALOGH_STEEL_TRUCK                                     :Aloghbay Eelstay Ucktray
-STR_8097_UHL_STEEL_TRUCK                                        :Uhlway Eelstay Ucktray
-STR_8098_KELLING_STEEL_TRUCK                                    :Ellingkay Eelstay Ucktray
-STR_8099_BALOGH_ARMORED_TRUCK                                   :Aloghbay Armouredway Ucktray
-STR_809A_UHL_ARMORED_TRUCK                                      :Uhlway Armouredway Ucktray
-STR_809B_FOSTER_ARMORED_TRUCK                                   :Osterfay Armouredway Ucktray
-STR_809C_FOSTER_FOOD_VAN                                        :Osterfay Oodfay Anvay
-STR_809D_PERRY_FOOD_VAN                                         :Errypay Oodfay Anvay
-STR_809E_CHIPPY_FOOD_VAN                                        :Ippychay Oodfay Anvay
-STR_809F_UHL_PAPER_TRUCK                                        :Uhlway Aperpay Ucktray
-STR_80A0_BALOGH_PAPER_TRUCK                                     :Aloghbay Aperpay Ucktray
-STR_80A1_MPS_PAPER_TRUCK                                        :MPSay Aperpay Ucktray
-STR_80A2_MPS_COPPER_ORE_TRUCK                                   :MPSay Oppercay Oreway Ucktray
-STR_80A3_UHL_COPPER_ORE_TRUCK                                   :Uhlway Oppercay Oreway Ucktray
-STR_80A4_GOSS_COPPER_ORE_TRUCK                                  :Ossgay Oppercay Oreway Ucktray
-STR_80A5_UHL_WATER_TANKER                                       :Uhlway Aterway Ankertay
-STR_80A6_BALOGH_WATER_TANKER                                    :Aloghbay Aterway Ankertay
-STR_80A7_MPS_WATER_TANKER                                       :MPSay Aterway Ankertay
-STR_80A8_BALOGH_FRUIT_TRUCK                                     :Aloghbay Uitfray Ucktray
-STR_80A9_UHL_FRUIT_TRUCK                                        :Uhlway Uitfray Ucktray
-STR_80AA_KELLING_FRUIT_TRUCK                                    :Ellingkay Uitfray Ucktray
-STR_80AB_BALOGH_RUBBER_TRUCK                                    :Aloghbay Ubberray Ucktray
-STR_80AC_UHL_RUBBER_TRUCK                                       :Uhlway Ubberray Ucktray
-STR_80AD_RMT_RUBBER_TRUCK                                       :RMTay Ubberray Ucktray
-STR_80AE_MIGHTYMOVER_SUGAR_TRUCK                                :IghtyMovermay Ugarsay Ucktray
-STR_80AF_POWERNAUGHT_SUGAR_TRUCK                                :Owernaughtpay Ugarsay Ucktray
-STR_80B0_WIZZOWOW_SUGAR_TRUCK                                   :Izzowowway Ugarsay Ucktray
-STR_80B1_MIGHTYMOVER_COLA_TRUCK                                 :IghtyMovermay Olacay Ucktray
-STR_80B2_POWERNAUGHT_COLA_TRUCK                                 :Owernaughtpay Olacay Ucktray
-STR_80B3_WIZZOWOW_COLA_TRUCK                                    :Izzowowway Olacay Ucktray
-STR_80B4_MIGHTYMOVER_COTTON_CANDY                               :IghtyMovermay Andyflosscay Ucktray
-STR_80B5_POWERNAUGHT_COTTON_CANDY                               :Owernaughtpay Andyflosscay Ucktray
-STR_80B6_WIZZOWOW_COTTON_CANDY_TRUCK                            :Izzowowway Andyflosscay Ucktray
-STR_80B7_MIGHTYMOVER_TOFFEE_TRUCK                               :IghtyMovermay Offeetay Ucktray
-STR_80B8_POWERNAUGHT_TOFFEE_TRUCK                               :Owernaughtpay Offeetay Ucktray
-STR_80B9_WIZZOWOW_TOFFEE_TRUCK                                  :Izzowowway Offeetay Ucktray
-STR_80BA_MIGHTYMOVER_TOY_VAN                                    :IghtyMovermay Oytay Anvay
-STR_80BB_POWERNAUGHT_TOY_VAN                                    :Owernaughtpay Oytay Anvay
-STR_80BC_WIZZOWOW_TOY_VAN                                       :Izzowowway Oytay Anvay
-STR_80BD_MIGHTYMOVER_CANDY_TRUCK                                :IghtyMovermay Eetsway Ucktray
-STR_80BE_POWERNAUGHT_CANDY_TRUCK                                :Owernaughtpay Eetsway Ucktray
-STR_80BF_WIZZOWOW_CANDY_TRUCK                                   :Izzowowway Eetsway Ucktray
-STR_80C0_MIGHTYMOVER_BATTERY_TRUCK                              :IghtyMovermay Atterybay Ucktray
-STR_80C1_POWERNAUGHT_BATTERY_TRUCK                              :Owernaughtpay Atterybay Ucktray
-STR_80C2_WIZZOWOW_BATTERY_TRUCK                                 :Izzowowway Atterybay Ucktray
-STR_80C3_MIGHTYMOVER_FIZZY_DRINK                                :IghtyMovermay Izzyfay Inkdray Ucktray
-STR_80C4_POWERNAUGHT_FIZZY_DRINK                                :Owernaughtpay Izzyfay Inkdray Ucktray
-STR_80C5_WIZZOWOW_FIZZY_DRINK_TRUCK                             :Izzowowway Izzyfay Inkdray Ucktray
-STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :IghtyMovermay Asticplay Ucktray
-STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Owernaughtpay Asticplay Ucktray
-STR_80C8_WIZZOWOW_PLASTIC_TRUCK                                 :Izzowowway Asticplay Ucktray
-STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :IghtyMovermay Ubblebay Ucktray
-STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Owernaughtpay Ubblebay Ucktray
-STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Izzowowway Ubblebay Ucktray
-STR_80CC_MPS_OIL_TANKER                                         :MPSay Oilway Ankertay
-STR_80CD_CS_INC_OIL_TANKER                                      :CSay-Incway. Oilway Ankertay
-STR_80CE_MPS_PASSENGER_FERRY                                    :MPSay Assengerpay Erryfay
-STR_80CF_FFP_PASSENGER_FERRY                                    :FFPay Assengerpay Erryfay
-STR_80D0_BAKEWELL_300_HOVERCRAFT                                :Akewellbay 300 Overcrafthay
-STR_80D1_CHUGGER_CHUG_PASSENGER                                 :Uggerchay-Ugchay Assengerpay Erryfay
-STR_80D2_SHIVERSHAKE_PASSENGER_FERRY                            :Ivershakeshay Assengerpay Erryfay
-STR_80D3_YATE_CARGO_SHIP                                        :Ateyay Argocay ipshay
-STR_80D4_BAKEWELL_CARGO_SHIP                                    :Akewellbay Argocay ipshay
-STR_80D5_MIGHTYMOVER_CARGO_SHIP                                 :Ightymovermay Argocay ipshay
-STR_80D6_POWERNAUT_CARGO_SHIP                                   :Owernautpay Argocay ipshay
-STR_80D7_SAMPSON_U52                                            :Ampsonsay Uway52
-STR_80D8_COLEMAN_COUNT                                          :Olemancay Ountcay
-STR_80D9_FFP_DART                                               :FFPay Artday
-STR_80DA_YATE_HAUGAN                                            :Ateyay Auganhay
-STR_80DB_BAKEWELL_COTSWALD_LB_3                                 :Akewellbay Otswaldcay LBay-3
-STR_80DC_BAKEWELL_LUCKETT_LB_8                                  :Akewellbay Uckettlay LBay-8
-STR_80DD_BAKEWELL_LUCKETT_LB_9                                  :Akewellbay Uckettlay LBay-9
-STR_80DE_BAKEWELL_LUCKETT_LB80                                  :Akewellbay Uckettlay LBay80
-STR_80DF_BAKEWELL_LUCKETT_LB_10                                 :Akewellbay Uckettlay LBay-10
-STR_80E0_BAKEWELL_LUCKETT_LB_11                                 :Akewellbay Uckettlay LBay-11
-STR_80E1_YATE_AEROSPACE_YAC_1_11                                :Ateyay Aerospaceway YACay 1-11
-STR_80E2_DARWIN_100                                             :Arwinday 100
-STR_80E3_DARWIN_200                                             :Arwinday 200
-STR_80E4_DARWIN_300                                             :Arwinday 300
-STR_80E5_DARWIN_400                                             :Arwinday 400
-STR_80E6_DARWIN_500                                             :Arwinday 500
-STR_80E7_DARWIN_600                                             :Arwinday 600
-STR_80E8_GURU_GALAXY                                            :Urugay Alaxygay
-STR_80E9_AIRTAXI_A21                                            :Airtaxiway Away21
-STR_80EA_AIRTAXI_A31                                            :Airtaxiway Away31
-STR_80EB_AIRTAXI_A32                                            :Airtaxiway Away32
-STR_80EC_AIRTAXI_A33                                            :Airtaxiway Away33
-STR_80ED_YATE_AEROSPACE_YAE46                                   :Ateyay Aerospaceway EyAay46
-STR_80EE_DINGER_100                                             :Ingerday 100
-STR_80EF_AIRTAXI_A34_1000                                       :AirTaxiway Away34-1000
-STR_80F0_YATE_Z_SHUTTLE                                         :Ateyay Zay-Uttleshay
-STR_80F1_KELLING_K1                                             :Ellingkay Kay1
-STR_80F2_KELLING_K6                                             :Ellingkay Kay6
-STR_80F3_KELLING_K7                                             :Ellingkay Kay7
-STR_80F4_DARWIN_700                                             :Arwinday 700
-STR_80F5_FFP_HYPERDART_2                                        :FFPay Yperdarthay 2
-STR_80F6_DINGER_200                                             :Ingerday 200
-STR_80F7_DINGER_1000                                            :Ingerday 1000
-STR_80F8_PLODDYPHUT_100                                         :Oddyphutplay 100
-STR_80F9_PLODDYPHUT_500                                         :Oddyphutplay 500
-STR_80FA_FLASHBANG_X1                                           :Ashbangflay Xay1
-STR_80FB_JUGGERPLANE_M1                                         :Uggerplanejay May1
-STR_80FC_FLASHBANG_WIZZER                                       :Ashbangflay Izzerway
-STR_80FD_TRICARIO_HELICOPTER                                    :Icariotray Elicopterhay
-STR_80FE_GURU_X2_HELICOPTER                                     :Urugay Xay2 Elicopterhay
-STR_80FF_POWERNAUT_HELICOPTER                                   :Owernautpay Elicopterhay
-STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Essagemay omfray ehiclevay anufacturermay
-STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Eway avehay ustjay esignedday away ewnay {STRING} - ouldway ouyay ebay interestedway inway away ear'syay exclusiveway useway ofway isthay ehiclevay, osay eway ancay eesay owhay itway erformspay eforebay akingmay itway universallyway availableway?
-STR_8102_RAILROAD_LOCOMOTIVE                                    :ailwayray ocomotivelay
-STR_8103_ROAD_VEHICLE                                           :oadray ehiclevay
-STR_8104_AIRCRAFT                                               :aircraftway
-STR_8105_SHIP                                                   :ipshay
-STR_8106_MONORAIL_LOCOMOTIVE                                    :onorailmay ocomotivelay
-STR_8107_MAGLEV_LOCOMOTIVE                                      :aglevmay ocomotivelay
-
-##id 0x8800
-STR_8800_TRAIN_DEPOT                                            :{WHITE}{TOWN} Aintray Epotday
-STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay aintray arrivesway atway {STATION}!
-STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
-STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Aintray inway ethay ayway
-STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
-STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
-STR_8806_GO_TO                                                  :Ogay otay {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ogay otay {STATION} (Ansfertray andway aketay argocay)
-STR_8808_GO_TO_UNLOAD                                           :Ogay otay {STATION} (Unloadway)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ogay otay {STATION} (Ansfertray andway eavelay emptyway)
-STR_880A_GO_TO_LOAD                                             :Ogay otay {STATION} (Oadlay)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ogay otay {STATION} (Ansfertray andway aitway orfay ullfay oadlay)
-STR_880C_GO_NON_STOP_TO                                         :Ogay onnay-opstay otay {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ogay onnay-opstay otay {STATION} (Ansfertray andway aketay argocay)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ogay onnay-opstay otay {STATION} (Unloadway)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ogay onnay-opstay otay {STATION} (Ansfertray andway eavelay emptyway)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ogay onnay-opstay otay {STATION} (Oadlay)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ogay onnay-opstay otay {STATION} (Ansfertray andway aitway orfay ullfay oadlay)
-STR_GO_TO_TRAIN_DEPOT                                           :Ogay otay {TOWN} Aintray Epotday
-STR_SERVICE_AT_TRAIN_DEPOT                                      :Ervicesay atway {TOWN} Aintray Epotday
-STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ogay onnay-opstay otay {TOWN} Aintray Epotday
-STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Ervicesay onnay-opstay atway {TOWN} Aintray Epotday
-
-STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
-STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Aveltray (otnay imetabledtay)
-STR_TIMETABLE_TRAVEL_FOR                                        :Aveltray orfay {STRING}
-STR_TIMETABLE_STAY_FOR                                          :andway aystay orfay {STRING}
-STR_TIMETABLE_DAYS                                              :{COMMA} ay{P "" s}day
-STR_TIMETABLE_TICKS                                             :{COMMA} ick{P "" s}tay
-
-STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Eadinghay orfay {TOWN} Aintray Epotday
-STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Eadinghay orfay {TOWN} Aintray Epotday, {VELOCITY}
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Ervicesay atway {TOWN} Aintray Epotday
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL                         :{LTBLUE}Ervicesay atway {TOWN} Aintray Epotday, {VELOCITY}
-
-STR_INVALID_ORDER                                               :{RED} (Invalidway Orderway)
-
-STR_UNKNOWN_DESTINATION                                         :unknownway estinationday
-STR_8812_EMPTY                                                  :{LTBLUE}Emptyway
-STR_8813_FROM                                                   :{LTBLUE}{CARGO} omfray {STATION}
-STR_FROM_MULT                                                   :{LTBLUE}{CARGO} omfray {STATION} (xay{NUM})
-STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Aintray {COMMA} isway aitingway inway epotday
-STR_8815_NEW_VEHICLES                                           :{BLACK}Ewnay Ehiclesvay
-STR_8816                                                        :{BLACK}-
-STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Aintray ootay onglay
-STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Ainstray ancay onlyway ebay alteredway enwhay oppedstay insideway away epotday
-STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Ain{P "" s}tray
-
-STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Ewnay Ailray Ehiclesvay
-STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Ewnay Electricway Ailray Ehiclesvay
-STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Ewnay Onorailmay Ehiclesvay
-STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Ewnay Aglevmay Ehiclesvay
-STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Ailray Ehiclesvay
-
-STR_881F_BUILD_VEHICLE                                          :{BLACK}Uildbay Ehiclevay
-STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Oneclay Ehiclevay
-STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}Isthay illway uildbay away opycay ofway ethay oadray ehiclevay. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}Isthay illway uildbay away opycay ofway away oadray ehiclevay. Ickclay isthay uttonbay andway enthay onway away oadray ehiclevay insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_CLONE_TRAIN                                                 :{BLACK}Oneclay Aintray
-STR_CLONE_TRAIN_INFO                                            :{BLACK}Isthay illway uildbay away opycay ofway ethay aintray includingway allway arscay. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Isthay illway uildbay away opycay ofway away aintray includingway allway arscay. Ickclay isthay uttonbay andway enthay onway away aintray insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_8820_RENAME                                                 :{BLACK}Enameray
-STR_8823_SKIP                                                   :{BLACK}Ipskay
-STR_8824_DELETE                                                 :{BLACK}Eleteday
-STR_8825_NON_STOP                                               :{BLACK}Onnay-Opstay
-STR_8826_GO_TO                                                  :{BLACK}Ogay Otay
-STR_8827_FULL_LOAD                                              :{BLACK}Ullfay Oadlay
-STR_8828_UNLOAD                                                 :{BLACK}Unloadway
-STR_REFIT                                                       :{BLACK}Efitray
-STR_REFIT_TIP                                                   :{BLACK}Electsay atwhay argocay ypetay otay efitray otay inway isthay orderway. Ontrolcay ickclay otay emoveray efitray instructionway
-STR_REFIT_ORDER                                                 :(Efitray otay {STRING})
-STR_TIMETABLE_VIEW                                              :{BLACK}Imetabletay
-STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Itchsway otay ethay imetabletay iewvay
-STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Ordersway)
-STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Endway ofway Ordersway - -
-STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
-STR_SERVICE                                                     :{BLACK}Ervicesay
-STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}An'tcay uildbay ailwayray ehiclevay...
-STR_882C_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
-STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Aluevay: {LTBLUE}{CURRENCY}
-STR_882E                                                        :{WHITE}{VEHICLE}
-STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Oadinglay / Unloadingway
-STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Aintray ustmay ebay oppedstay insideway away epotday
-STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}An'tcay endsay aintray otay epotday...
-STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Onay oremay acespay orfay ordersway
-STR_8832_TOO_MANY_ORDERS                                        :{WHITE}Ootay anymay ordersway
-STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}An'tcay insertway ewnay orderway...
-STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}An'tcay eleteday isthay orderway...
-STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}An'tcay odifymay isthay orderway...
-STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}An'tcay ovemay isthay orderway...
-STR_CAN_T_SKIP_ORDER                                            :{WHITE}An'tcay ipskay urrentcay orderway...
-STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}An'tcay ipskay otay electedsay orderway...
-STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}An'tcay ovemay ehiclevay...
-STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Ethay earray engineway illway alwaysway ollowfay itsway ontfray ounterpartcay
-STR_8838_N_A                                                    :Nay/Away{SKIP}
-STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}An'tcay ellsay ailwayray ehiclevay...
-STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Unableway otay indfay outeray otay ocallay epotday
-STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}An'tcay opstay/artstay aintray...
-STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Ervicingsay intervalway: {LTBLUE}{COMMA}aysday{BLACK}   Astlay ervicesay: {LTBLUE}{DATE_LONG}
-STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Ervicingsay intervalway: {LTBLUE}{COMMA}%{BLACK}   Astlay ervicesay: {LTBLUE}{DATE_LONG}
-STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Ainstray - ickclay onway aintray orfay informationway
-STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Uildbay ewnay ainstray (equiresray aintray epotday)
-STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Ainstray - ickclay onway aintray orfay infoway., agdray ehiclevay otay addway/emoveray omfray aintray
-STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Uildbay ewnay aintray ehiclevay
-STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Agdray aintray ehiclevay otay erehay otay ellsay itway
-STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Entrecay ainmay iewvay onway aintray epotday ocationlay
-STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Aintray ehiclevay electionsay istlay - ickclay onway ehiclevay orfay informationway
-STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Uildbay ethay ighlightedhay aintray ehiclevay
-STR_8845_RENAME_TRAIN_VEHICLE_TYPE                              :{BLACK}Enameray aintray ehiclevay ypetay
-STR_8846_CURRENT_TRAIN_ACTION_CLICK                             :{BLACK}Urrentcay aintray actionway - ickclay erehay otay opstay/artstay aintray
-STR_8847_SHOW_TRAIN_S_ORDERS                                    :{BLACK}Owshay ain'stray ordersway
-STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Entrecay ainmay iewvay onway ain'stray ocationlay
-STR_8849_SEND_TRAIN_TO_DEPOT                                    :{BLACK}Endsay aintray otay epotday. CTRLay+ickclay illway onlyway ervicesay
-STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Orcefay aintray otay oceedpray ithoutway aitingway orfay ignalsay otay earclay itway
-STR_884B_REVERSE_DIRECTION_OF_TRAIN                             :{BLACK}Everseray irectionday ofway aintray
-STR_884C_SHOW_TRAIN_DETAILS                                     :{BLACK}Owshay aintray etailsday
-STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Increaseway ervicingsay intervalway
-STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Ecreaseday ervicingsay intervalway
-STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Owshay etailsday ofway argocay arriedcay
-STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Owshay etailsday ofway aintray ehiclesvay
-STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Owshay apacitiescay ofway eachway ehiclevay
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Owshay otaltay apacitycay ofway aintray, itsplay ybay argocay ypetay
-STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordersway istlay - ickclay onway anway orderway otay ighlighthay itway. CTRLay + ickclay ollsscray otay ethay ationstay
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Ipskay ethay urrentcay orderway, andway artstay ethay extnay. CTRLay + ickclay ipsskay otay ethay electedsay orderway
-STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eleteday ethay ighlightedhay orderway
-STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway onnay-opstay
-STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insertway away ewnay orderway eforebay ethay ighlightedhay orderway, orway addway otay endway ofway istlay
-STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay aitway orfay away ullfay oadlay
-STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay unloadway
-STR_TIMETABLE_TOOLTIP                                           :{BLACK}Imetabletay - ickclay onway anway orderway otay ighlighthay itway.
-STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Angechay ethay amountway ofway imetay atthay ethay ighlightedhay orderway ouldshay aketay
-STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Earclay ethay amountway ofway imetay orfay ethay ighlightedhay orderway
-STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Esetray ethay atenesslay ountercay, osay ethay ehiclevay illway ebay onway imetay
-STR_SERVICE_HINT                                                :{BLACK}Ipskay isthay orderway unlessway away ervicesay isway eedednay
-STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Ostcay: {CURRENCY} Eightway: {WEIGHT_S}{}Eedspay: {VELOCITY}  Owerpay: {POWER}{}Unningray Ostcay: {CURRENCY}/yray{}Apacitycay: {CARGO}
-STR_885C_BROKEN_DOWN                                            :{RED}Okenbray ownday
-STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Eightway: {LTBLUE}{WEIGHT_S}  {BLACK}Owerpay: {LTBLUE}{POWER}{BLACK} Axmay. eedspay: {LTBLUE}{VELOCITY}
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Eightway: {LTBLUE}{WEIGHT_S} {BLACK}Owerpay: {LTBLUE}{POWER}{BLACK} Axmay. eedspay: {LTBLUE}{VELOCITY} {BLACK}Axmay. Tay.Eway.: {LTBLUE}{FORCE}
-STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
-STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
-STR_8861_STOPPED                                                :{RED}Oppedstay
-STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}An'tcay akemay aintray asspay ignalsay atway angerday...
-STR_8863_CRASHED                                                :{RED}Ashedcray!
-
-STR_8865_NAME_TRAIN                                             :{WHITE}Amenay aintray
-STR_8866_CAN_T_NAME_TRAIN                                       :{WHITE}An'tcay amenay aintray...
-STR_8867_NAME_TRAIN                                             :{BLACK}Amenay aintray
-STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Aintray Ashcray!{}{COMMA} ieday inway ireballfay afterway ollisioncay
-STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}An'tcay everseray irectionday ofway aintray...
-STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Enameray aintray ehiclevay ypetay
-STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}An'tcay enameray aintray ehiclevay ypetay...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay umpday argocay
-STR_886F_TRANSFER                                               :{BLACK}Ansfertray
-STR_CLEAR_TIME                                                  :{BLACK}Angechay Imetay
-STR_RESET_LATENESS                                              :{BLACK}Esetray Atelay Ountercay
-
-STR_TRAIN_STOPPING                                              :{RED}Oppingstay
-STR_TRAIN_STOPPING_VEL                                          :{RED}Oppingstay, {VELOCITY}
-STR_INCOMPATIBLE_RAIL_TYPES                                     :Incompatibleway ailray ypestay
-STR_TRAIN_NO_POWER                                              :{RED}Onay owerpay
-STR_TRAIN_START_NO_CATENARY                                     :Isthay acktray ackslay atenarycay, osay ethay aintray an'tcay artstay
-
-STR_NEW_VEHICLE_NOW_AVAILABLE                                   :{BLACK}{BIGFONT}Ewnay {STRING} ownay availableway!
-STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
-STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Ewnay {STRING} ownay availableway!  -  {ENGINE}
-
-STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Ancay otnay imetabletay ehiclevay...
-STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Ehiclesvay ancay onlyway aitway atway ationsstay.
-STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Isthay ehiclevay isway otnay oppingstay atway isthay ationstay.
-STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Angechay Imetay
-STR_TIMETABLE_STATUS_ON_TIME                                    :Isthay ehiclevay isway urrentlycay unningray onway imetay
-STR_TIMETABLE_STATUS_LATE                                       :Isthay ehiclevay isway urrentlycay unningray {STRING} atelay
-STR_TIMETABLE_STATUS_EARLY                                      :Isthay ehiclevay isway urrentlycay unningray {STRING} earlyway
-STR_TIMETABLE_TOTAL_TIME                                        :Isthay imetabletay illway aketay {STRING} otay ompletecay
-STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Isthay imetabletay illway aketay atway eastlay {STRING} otay ompletecay (otnay allway imetabledtay)
-STR_TIMETABLE_AUTOFILL                                          :{BLACK}Autofillway
-STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Fill thIllfay ethay imetabletay automaticallyway ithway ethay aluesvay omfray ethay irstfay ourneyjay
-
-##id 0x9000
-STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Oadray ehiclevay inway ethay ayway
-STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} Oadray Ehicle{P "" s}vay
-STR_9002                                                        :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Oadray Ehiclevay Epotday
-STR_9004_NEW_VEHICLES                                           :{BLACK}Ewnay Ehiclesvay
-STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Ewnay Oadray Ehiclesvay
-STR_9007_BUILD_VEHICLE                                          :{BLACK}Uildbay Ehiclevay
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}An'tcay uildbay oadray ehiclevay...
-STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
-STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
-STR_900E_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
-STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
-STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
-STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
-STR_9012_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
-STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...ustmay ebay oppedstay insideway away oadray ehiclevay epotday
-STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}An'tcay ellsay oadray ehiclevay...
-STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}An'tcay opstay/artstay oadray ehiclevay...
-STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Oadray ehiclevay {COMMA} isway aitingway inway epotday
-STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Eadinghay orfay {TOWN} Oadray Epotday
-STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Eadinghay orfay {TOWN} Oadray Epotday, {VELOCITY}
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Ervicesay atway {TOWN} Oadray Epotday
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Ervicesay atway {TOWN} Oadray Epotday, {VELOCITY}
-STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}An'tcay endsay ehiclevay otay epotday...
-STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Unableway otay indfay ocallay epotday
-STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}Oadray ehiclesvay - ickclay onway ehiclevay orfay informationway
-STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Uildbay ewnay oadray ehiclesvay (equiresray oadray ehiclevay epotday)
-STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Urrentcay ehiclevay actionway - ickclay erehay otay opstay/artstay ehiclevay
-STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Owshay ehicle'svay ordersway
-STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Entrecay ainmay iewvay onway ehicle'svay ocationlay
-STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Endsay ehiclevay otay epotday. CTRLay+ickclay illway onlyway ervicesay
-STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}Orcefay ehiclevay otay urntay aroundway
-STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Owshay oadray ehiclevay etailsday
-STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}Ehiclesvay - ickclay onway ehiclevay orfay informationway
-STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Uildbay ewnay oadray ehiclevay
-STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Agdray oadray ehiclevay otay erehay otay ellsay itway
-STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Entrecay ainmay iewvay onway oadray ehiclevay epotday ocationlay
-STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Oadray ehiclevay electionsay istlay - ickclay onway ehiclevay orfay informationway
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Uildbay ethay ighlightedhay oadray ehiclevay
-STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Ostcay: {CURRENCY}{}Eedspay: {VELOCITY}{}Unningray Ostcay: {CURRENCY}/yray{}Apacitycay: {CARGO}
-STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Apacitycay: {LTBLUE}
-STR_BARE_CARGO                                                  :{CARGO}
-
-STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Amenay oadray ehiclevay
-STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}An'tcay amenay oadray ehiclevay...
-STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Amenay oadray ehiclevay
-STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay usbay arrivesway atway {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay ucktray arrivesway atway {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay assengerpay amtray arrivesway atway {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay eightfray amtray arrivesway atway {STATION}!
-STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Oadray Ehiclevay Ashcray!{}Iverdray iesday inway ireballfay afterway ollisioncay ithway aintray
-STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Oadray Ehiclevay Ashcray!{}{COMMA} ieday inway ireballfay afterway ollisioncay ithway aintray
-STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}An'tcay akemay ehiclevay urntay aroundway...
-STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}An'tcay urntay ehiclesvay onsistingcay ofway ultiplemay unitsway
-STR_9034_RENAME                                                 :{BLACK}Enameray
-STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Enameray oadray ehiclevay ypetay
-STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Enameray oadray ehiclevay ypetay
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}An'tcay enameray oadray ehiclevay ypetay...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ogay otay {TOWN} Oadray Ehiclevay Epotday
-STR_SERVICE_AT_ROADVEH_DEPOT                                    :Ervicesay atway {TOWN} Oadray Ehiclevay Epotday
-
-STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Efitray oadray ehiclevay otay arrycay away ifferentday argocay ypetay
-STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Efitray oadray ehiclevay
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Efitray oadray ehiclevay otay arrycay ighlightedhay argocay ypetay
-STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}An'tcay efitray oadray ehiclevay...
-STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay oadray ehiclevay otay arrycay
-
-##id 0x9800
-STR_9800_DOCK_CONSTRUCTION                                      :Ockday onstructioncay
-STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Ockday onstructioncay
-STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}An'tcay uildbay ockday erehay...
-STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN} Ipshay Epotday
-STR_9804_NEW_SHIPS                                              :{BLACK}Ewnay Ipsshay
-STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} Ip{P "" s}shay
-STR_9808_NEW_SHIPS                                              :{WHITE}Ewnay Ipsshay
-STR_9809_BUILD_SHIP                                             :{BLACK}Uildbay Ipshay
-STR_CLONE_SHIP                                                  :{BLACK}Oneclay Ipshay
-STR_CLONE_SHIP_INFO                                             :{BLACK}Isthay illway uildbay away opycay ofway ethay ipshay. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Isthay illway uildbay away opycay ofway away ipshay. Ickclay isthay uttonbay andway enthay onway away ipshay insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Ipshay ustmay ebay oppedstay inway epotday
-STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}An'tcay ellsay ipshay...
-STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}An'tcay uildbay ipshay...
-STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Ipshay inway ethay ayway
-STR_980F                                                        :{WHITE}{VEHICLE}
-STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
-STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
-STR_9813_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
-STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
-STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
-STR_9816_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
-STR_9817_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
-STR_9818_CAN_T_STOP_START_SHIP                                  :{WHITE}An'tcay opstay/artstay ipshay...
-STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}An'tcay endsay ipshay otay epotday...
-STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Unableway otay indfay ocallay epotday
-STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Eadinghay orfay {TOWN} Ipshay Epotday
-STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Eadinghay orfay {TOWN} Ipshay Epotday, {VELOCITY}
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Ervicesay atway {TOWN} Ipshay Epotday
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Ervicesay atway {TOWN} Ipshay Epotday, {VELOCITY}
-STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}Ipshay {COMMA} isway aitingway inway epotday
-STR_981D_BUILD_SHIP_DOCK                                        :{BLACK}Uildbay ipshay ockday
-STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING                          :{BLACK}Uildbay ipshay epotday (orfay uildingbay andway ervicingsay ipsshay)
-STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Ipsshay - ickclay onway ipshay orfay informationway
-STR_9820_BUILD_NEW_SHIP                                         :{BLACK}Uildbay ewnay ipshay
-STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}Agdray ipshay otay erehay otay ellsay itway
-STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Entrecay ainmay iewvay onway ipshay epotday ocationlay
-STR_9823_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Ipsshay - ickclay onway ipshay orfay informationway
-STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Uildbay ewnay ipsshay (equiresray ipshay epotday)
-STR_9825_SHIP_SELECTION_LIST_CLICK                              :{BLACK}Ipshay electionsay istlay - ickclay onway ipshay orfay informationway
-STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Uildbay ethay ighlightedhay ipshay
-STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Urrentcay ipshay actionway - ickclay erehay otay opstay/artstay ipshay
-STR_9828_SHOW_SHIP_S_ORDERS                                     :{BLACK}Owshay ip'sshay ordersway
-STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Entrecay ainmay iewvay onway ip'sshay ocationlay
-STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Endsay ipshay otay epotday. CTRLay+ickclay illway onlyway ervicesay
-STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Owshay ipshay etailsday
-STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Ostcay: {CURRENCY} Axmay. Eedspay: {VELOCITY}{}Apacitycay: {CARGO}{}Unningray Ostcay: {CURRENCY}/yray
-STR_982F_NAME_SHIP                                              :{BLACK}Amenay ipshay
-
-STR_9831_NAME_SHIP                                              :{WHITE}Amenay ipshay
-STR_9832_CAN_T_NAME_SHIP                                        :{WHITE}An'tcay amenay ipshay...
-STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay ipshay arrivesway atway {STATION}!
-STR_9834_POSITION_BUOY_WHICH_CAN                                :{BLACK}Aceplay away uoybay ichwhay ancay ebay usedway asway away aypointway
-STR_9835_CAN_T_POSITION_BUOY_HERE                               :{WHITE}An'tcay aceplay uoybay erehay...
-STR_9836_RENAME                                                 :{BLACK}Enameray
-STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Enameray ipshay ypetay
-STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Enameray ipshay ypetay
-STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}An'tcay enameray ipshay ypetay...
-STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Efitray argocay ipshay otay arrycay away ifferentday argocay ypetay
-STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Efitray)
-STR_983C_REFIT_SHIP                                             :{BLACK}Efitray ipshay
-STR_983D_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay ipshay otay arrycay
-STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Efitray ipshay otay arrycay ighlightedhay argocay ypetay
-STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Electsay argocay ypetay otay arrycay:
-STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Ewnay apacitycay: {GOLD}{CARGO}{}{BLACK}Ostcay ofway efitray: {GOLD}{CURRENCY}
-STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}An'tcay efitray ipshay...
-STR_9842_REFITTABLE                                             :(efittableray)
-STR_GO_TO_SHIP_DEPOT                                            :Ogay otay {TOWN} Ipshay Epotday
-SERVICE_AT_SHIP_DEPOT                                           :Ervicesay atway {TOWN} Ipshay Epotday
-
-##id 0xA000
-STR_A000_AIRPORTS                                               :{WHITE}Airportsway
-STR_A001_CAN_T_BUILD_AIRPORT_HERE                               :{WHITE}An'tcay uildbay airportway erehay...
-STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Aircraftway Angarhay
-STR_A003_NEW_AIRCRAFT                                           :{BLACK}Ewnay Aircraftway
-STR_CLONE_AIRCRAFT                                              :{BLACK}Oneclay Aircraftway
-STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Isthay illway uildbay away opycay ofway ethay aircraftway. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Isthay illway uildbay away opycay ofway anway aircraftway. Ickclay isthay uttonbay andway enthay onway anway aircraftway insideway orway outsideway ethay angarhay. Ontrolcay-ickclay illway areshay ethay ordersway
-STR_A005_NEW_AIRCRAFT                                           :{WHITE}Ewnay Aircraftway
-STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Uildbay Aircraftway
-STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}An'tcay uildbay aircraftway...
-STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} Aircraftway
-STR_A00A                                                        :{WHITE}{VEHICLE}
-STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Ordersway)
-STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
-STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
-STR_A00E_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
-STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
-STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
-STR_A011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
-STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}An'tcay endsay aircraftway otay angarhay...
-STR_HEADING_FOR_HANGAR                                          :{ORANGE}Eadinghay orfay {STATION} Angarhay
-STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Eadinghay orfay {STATION} Angarhay, {VELOCITY}
-STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Ervicesay atway {STATION} Angarhay
-STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Ervicesay atway {STATION} Angarhay, {VELOCITY}
-STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Aircraftway {COMMA} isway aitingway inway ethay aircraftway angarhay
-STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Aircraftway inway ethay ayway
-STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}An'tcay opstay/artstay aircraftway...
-STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Aircraftway isway inway ightflay
-STR_A019_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}, {CARGO}
-STR_A01A_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
-STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Aircraftway ustmay ebay oppedstay inway angarhay
-STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}An'tcay ellsay aircraftway...
-STR_A01D_AIRPORT_CONSTRUCTION                                   :Airportway onstructioncay
-STR_A01E_BUILD_AIRPORT                                          :{BLACK}Uildbay airportway
-STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aircraftway - ickclay onway aircraftway orfay informationway
-STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Uildbay ewnay aircraftway (equiresray airportway ithway angarhay)
-STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aircraftway - ickclay onway aircraftway orfay informationway
-STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Uildbay ewnay aircraftway
-STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Agdray aircraftway otay erehay otay ellsay itway
-STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Entrecay ainmay iewvay onway angarhay ocationlay
-STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Aircraftway electionsay istlay - ickclay onway aircraftway orfay informationway
-STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Uildbay ethay ighlightedhay aircraftway
-STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Urrentcay aircraftway actionway - ickclay erehay otay opstay/artstay aircraftway
-STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Owshay aircraft'sway ordersway
-STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Entrecay ainmay iewvay onway aircraft'sway ocationlay
-STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Endsay aircraftway otay angarhay. CTRLay+ickclay illway onlyway ervicesay
-STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Owshay aircraftway etailsday
-STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Ostcay: {CURRENCY} Axmay. Eedspay: {VELOCITY}{}Apacitycay: {COMMA} assengerspay, {COMMA} agsbay ofway ailmay{}Unningray Ostcay: {CURRENCY}/yray
-
-STR_A030_NAME_AIRCRAFT                                          :{WHITE}Amenay aircraftway
-STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}An'tcay amenay aircraftway...
-STR_A032_NAME_AIRCRAFT                                          :{BLACK}Amenay aircraftway
-STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay aircraftway arrivesway atway {STATION}!
-STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Aneplay Ashcray!{}{COMMA} ieday inway ireballfay atway {STATION}
-STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Aneplay Ashcray!{}Aircraftway anray outway ofway uelfay, {COMMA} ieday inway ireballfay!
-STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
-STR_A037_RENAME                                                 :{BLACK}Enameray
-STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Enameray aircraftway ypetay
-STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Enameray aircraftway ypetay
-STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}An'tcay enameray aircraftway ypetay...
-STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Efitray aircraftway otay arrycay away ifferentday argocay ypetay
-STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Efitray)
-STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Efitray aircraftway
-STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay aircraftway otay arrycay
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Efitray aircraftway otay arrycay ighlightedhay argocay ypetay
-STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Electsay argocay ypetay otay arrycay:
-STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Ewnay apacitycay: {GOLD}{STRING}{}{BLACK}Ostcay ofway efitray: {GOLD}{CURRENCY}
-STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}An'tcay efitray aircraftway...
-STR_GO_TO_AIRPORT_HANGAR                                        :Ogay otay {STATION} Angarhay
-SERVICE_AT_AIRPORT_HANGAR                                       :Ervicesay atway {STATION} Angarhay
-
-STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Imetabletay)
-
-##id 0xB000
-STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Eppelinzay isasterday atway {STATION}!
-STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Oadray ehiclevay estroyedday inway 'UFO'WAY ollisioncay!
-STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Oilway efineryray explosionway earnay {TOWN}!
-STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}Actoryfay estroyedday inway uspicioussay ircumstancescay earnay {TOWN}!
-STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}'UFO'WAY andslay earnay {TOWN}!
-STR_B005_COAL_MINE_SUBSIDENCE_LEAVES                            :{BLACK}{BIGFONT}Oalcay inemay ubsidencesay eaveslay ailtray ofway estructionday earnay {TOWN}!
-STR_B006_FLOOD_VEHICLE_DESTROYED                                :{BLACK}{BIGFONT}Oodsflay!{}Atway eastlay {COMMA} issingmay, esumedpray eadday afterway ignificantsay oodingflay!
-
-STR_BRIBE_FAILED                                                :{WHITE}Ouryay attemptedway ibebray ashay eenbay
-STR_BRIBE_FAILED_2                                              :{WHITE}iscoveredday ybay away egionalray investigatorway
-STR_BUILD_DATE                                                  :{BLACK}Uiltbay: {LTBLUE}{DATE_LONG}
-
-STR_PERFORMANCE_DETAIL                                          :{WHITE}Etailedday erformancepay atingray
-STR_PERFORMANCE_DETAIL_KEY                                      :{BLACK}Etailday
-STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY                          :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
-STR_PERFORMANCE_DETAIL_AMOUNT_INT                               :{BLACK}({COMMA}/{COMMA})
-STR_PERFORMANCE_DETAIL_PERCENT                                  :{WHITE}{NUM}%
-SET_PERFORMANCE_DETAIL_INT                                      :{BLACK}{NUM}
-############ Those following lines need to be in this order!!
-STR_PERFORMANCE_DETAIL_VEHICLES                                 :{BLACK}Ehiclesvay:
-STR_PERFORMANCE_DETAIL_STATIONS                                 :{BLACK}Ationsstay:
-STR_PERFORMANCE_DETAIL_MIN_PROFIT                               :{BLACK}Inmay. ofitpray:
-STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Inmay. incomeway:
-STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Axmay. incomeway:
-STR_PERFORMANCE_DETAIL_DELIVERED                                :{BLACK}Eliveredday:
-STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Argocay:
-STR_PERFORMANCE_DETAIL_MONEY                                    :{BLACK}Oneymay:
-STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Oanlay:
-STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Otaltay:
-############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Umbernay ofway ehiclesvay; isthay includesway oadray ehiclesvay, ainstray, ipsshay andway aircraftway
-STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Umbernay ofway ationstay artspay. Everyway artpay ofway away ationstay (eway.gay. aintray ationstay, usbay opstay, airportway) isway ountedcay, evenway ifway eythay areway onnectedcay asway oneway ationstay
-STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Ethay ofitpray ofway ethay ehiclevay ithway ethay owestlay incomeway (ofway allway ehiclesvay olderway anthay 2 earsyay)
-STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Amountway ofway ashcay ademay inway ethay onthmay ithway ethay owestlay ofitpray ofway ethay astlay 12 artersquay
-STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Amountway ofway ashcay ademay inway ethay onthmay ithway ethay ighesthay ofitpray ofway ethay astlay 12 artersquay
-STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Unitsway ofway argocay eliveredday inway ethay astlay ourfay artersquay
-STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Umbernay ofway ypestay ofway argocay eliveredday inway ethay astlay arterquay
-STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Amountway ofway oneymay isthay ompanycay ashay inway ethay ankbay
-STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Ethay amountway ofway oneymay isthay ompanycay ashay akentay onway oanlay
-STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Otaltay ointspay outway ofway ossiblepay ointspay
-
-STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}EwGRFnay Ettingssay
-STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}EwGRFnay ettingssay
-STR_NEWGRF_APPLY_CHANGES                                        :{BLACK}Applyway angeschay
-STR_NEWGRF_SET_PARAMETERS                                       :{BLACK}Etsay arameterspay
-STR_NEWGRF_TIP                                                  :{BLACK}Away istlay ofway allway ethay Ewgrfnay etssay atthay ouyay avehay installedway. Ickclay away etsay otay angechay ethay ettingssay
-STR_NEWGRF_NO_FILES_INSTALLED                                   :{BLACK}Erethay areway urrentlycay onay ewgrfnay ilesfay installedway! Easeplay eferray otay ethay anualmay orfay instructionsway onway installingway ewnay aphicsgray
-STR_NEWGRF_FILENAME                                             :{BLACK}Ilenamefay: {SILVER}{STRING}
-STR_NEWGRF_GRF_ID                                               :{BLACK}GRFay IDWAY: {SILVER}{STRING}
-STR_NEWGRF_MD5SUM                                               :{BLACK}MDay5umsay: {SILVER}{STRING}
-STR_NEWGRF_CONFIRMATION_TEXT                                    :{YELLOW}Ouyay areway aboutway otay akemay angeschay otay away unningray amegay; isthay ancay ashcray OpenTTDWAY.{}Areway ouyay absolutelyway uresay aboutway isthay?
-
-STR_NEWGRF_ERROR_MSG_INFO                                       :{SILVER}{STRING}
-STR_NEWGRF_ERROR_MSG_WARNING                                    :{RED}Arningway: {SILVER}{STRING}
-STR_NEWGRF_ERROR_MSG_ERROR                                      :{RED}Errorway: {SILVER}{STRING}
-STR_NEWGRF_ERROR_MSG_FATAL                                      :{RED}Atalfay: {SILVER}{STRING}
-STR_NEWGRF_ERROR_VERSION_NUMBER                                 :{STRING} illway otnay orkway ithway ethay AtchtTDPay ersionvay eportedray ybay OpenTTDWAY.
-STR_NEWGRF_ERROR_DOS_OR_WINDOWS                                 :{STRING} isway orfay ethay {STRING} ersionvay ofway TTDay.
-STR_NEWGRF_ERROR_UNSET_SWITCH                                   :{STRING} isway esignedday otay ebay usedway ithway {STRING}
-STR_NEWGRF_ERROR_INVALID_PARAMETER                              :Invalidway arameterpay orfay {STRING}: arameterpay {STRING} ({NUM})
-STR_NEWGRF_ERROR_LOAD_BEFORE                                    :{STRING} ustmay ebay oadedlay eforebay {STRING}.
-STR_NEWGRF_ERROR_LOAD_AFTER                                     :{STRING} ustmay ebay oadedlay afterway {STRING}.
-STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE                          :ethay GRFay ilefay itway asway esignedday otay anslatetray
-
-STR_NEWGRF_ADD                                                  :{BLACK}Addway
-STR_NEWGRF_ADD_TIP                                              :{BLACK}Addway away EwGRFnay ilefay otay ethay istlay
-STR_NEWGRF_REMOVE                                               :{BLACK}Emoveray
-STR_NEWGRF_REMOVE_TIP                                           :{BLACK}Emoveray ethay electedsay EwGRFnay ilefay omfray ethay istlay
-STR_NEWGRF_MOVEUP                                               :{BLACK}Ovemay Upway
-STR_NEWGRF_MOVEUP_TIP                                           :{BLACK}Ovemay ethay electedsay EwGRFnay ilefay upway ethay istlay
-STR_NEWGRF_MOVEDOWN                                             :{BLACK}Ovemay Ownday
-STR_NEWGRF_MOVEDOWN_TIP                                         :{BLACK}Ovemay ethay electedsay EwGRFnay ilefay ownday ethay istlay
-STR_NEWGRF_FILE_TIP                                             :{BLACK}Away istlay ofway ethay EwGRFnay ilesfay atthay areway installedway. Ickclay away ilefay otay angechay itsway arameterspay
-STR_NEWGRF_PARAMETER                                            :{BLACK}Arameterspay: {SILVER}{STRING}
-STR_NEWGRF_PARAMETER_QUERY                                      :{BLACK}Enterway EwGRFnay arameterspay
-STR_NEWGRF_NO_INFO                                              :{BLACK}Onay informationway availableway
-
-STR_NEWGRF_ADD_CAPTION                                          :{WHITE}Availableway EwGRFnay ilesfay
-STR_NEWGRF_ADD_FILE                                             :{BLACK}Addway otay electionsay
-STR_NEWGRF_ADD_FILE_TIP                                         :{BLACK}Addway ethay electedsay EwGRFnay ilefay otay ouryay onfigurationcay
-STR_NEWGRF_RESCAN_FILES                                         :{BLACK}Escanray ilesfay
-STR_NEWGRF_RESCAN_FILES_TIP                                     :{BLACK}Updateway ethay istlay ofway availableway EwGRFnay ilesfay
-STR_NEWGRF_DUPLICATE_GRFID                                      :{WHITE}Annotcay addway ilefay: uplicateday GRFay IDWAY
-
-STR_NEWGRF_NOT_FOUND                                            :{RED}Atchingmay ilefay otnay oundfay
-STR_NEWGRF_DISABLED                                             :{RED}Isabledday
-STR_NEWGRF_COMPATIBLE_LOADED                                    :{ORANGE}Atchingmay ilefay otnay oundfay (ompatiblecay GRFay oadedlay)
-
-STR_NEWGRF_COMPATIBLE_LOAD_WARNING                              :{WHITE}Ompatiblecay GRFay(say) oadedlay orfay issingmay ilesfay
-STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Issingmay GRFay ilefay(say) avehay eenbay isabledday
-STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}Issingmay GRFay ilefay(say) otay ebay ableway otay oadlay amegay
-
-STR_CURRENCY_WINDOW                                             :{WHITE}Ustomcay urrencycay
-STR_CURRENCY_EXCHANGE_RATE                                      :{LTBLUE}Exchangeway ateray: {ORANGE}{CURRENCY} = £ {COMMA}
-STR_CURRENCY_SEPARATOR                                          :{LTBLUE}Eparatorsay:
-STR_CURRENCY_PREFIX                                             :{LTBLUE}Efixpray:
-STR_CURRENCY_SUFFIX                                             :{LTBLUE}Uffixsay:
-STR_CURRENCY_SWITCH_TO_EURO                                     :{LTBLUE}Itchsway otay Euroway: {ORANGE}{NUM}
-STR_CURRENCY_SWITCH_TO_EURO_NEVER                               :{LTBLUE}Itchsway otay Euroway: {ORANGE}evernay
-STR_CURRENCY_PREVIEW                                            :{LTBLUE}Eviewpray: {ORANGE}{CURRENCY}
-STR_CURRENCY_CHANGE_PARAMETER                                   :{BLACK}Angechay ustomcay urrencycay arameterpay
-
-STR_TRAIN                                                       :{BLACK}{TRAIN}
-STR_BUS                                                         :{BLACK}{BUS}
-STR_LORRY                                                       :{BLACK}{LORRY}
-STR_PLANE                                                       :{BLACK}{PLANE}
-STR_SHIP                                                        :{BLACK}{SHIP}
-
-STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} Ain{P "" s}tray
-STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} Oadray Ehicle{P "" s}vay
-STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Aircraftway
-STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Ip{P "" s}shay
-
-STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Owshay allway ainstray ichwhay avehay isthay ationstay onway eirthay eduleschay
-STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Owshay allway oadray ehiclesvay ichwhay avehay isthay ationstay onway eirthay eduleschay
-STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Owshay allway aircraftway ichwhay avehay isthay ationstay onway eirthay eduleschay
-STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Owshay allway ipsshay ichwhay avehay isthay ationstay onway eirthay eduleschay
-
-STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Aredshay ordersway ofway {COMMA} Ehicle{P "" s}vay
-STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Owshay allway ehiclesvay atthay areshay isthay eduleschay
-
-### depot strings
-STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Ouyay areway aboutway otay ellsay allway ethay ehiclesvay inway ethay epotday. Areway ouyay uresay?
-STR_DEPOT_WRONG_DEPOT_TYPE                                      :Ongwray epotday ypetay
-
-STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Ellsay allway ainstray inway ethay epotday
-STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Ellsay allway oadray ehiclesvay inway ethay epotday
-STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Ellsay allway ipsshay inway ethay epotday
-STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}Ellsay allway aircraftway inway ethay angarhay
-
-STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Etgay away istlay ofway allway ainstray ithway ethay urrentcay epotday inway eirthay ordersway
-STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Etgay away istlay ofway allway oadray ehiclesvay ithway ethay urrentcay epotday inway eirthay ordersway
-STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Etgay away istlay ofway allway ipsshay ithway ethay urrentcay epotday inway eirthay ordersway
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Etgay away istlay ofway allway aircraftway ithway anyway angarhay atway isthay airportway inway eirthay ordersway
-
-STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Autoreplaceway allway ainstray inway ethay epotday
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Autoreplaceway allway oadray ehiclesvay inway ethay epotday
-STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Autoreplaceway allway ipsshay inway ethay epotday
-STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Autoreplaceway allway aircraftway inway ethay angarhay
-
-STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} Ain{P "" s}tray
-STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} Oadray Ehicle{P "" s}vay
-STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA} Ip{P "" s}shay
-STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA} Aircraftway
-
-STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Eplaceray {STRING}
-STR_REPLACE_VEHICLES_START                                      :{BLACK}Artstay Eplacingray Ehiclesvay
-STR_REPLACE_VEHICLES_STOP                                       :{BLACK}Opstay Eplacingray Ehiclesvay
-STR_NOT_REPLACING                                               :{BLACK}Otnay eplacingray
-STR_NOT_REPLACING_VEHICLE_SELECTED                              :{BLACK}Onay ehiclevay electedsay
-STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Electsay ethay engineway ypetay otay eplaceray
-STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Electsay ethay ewnay engineway ypetay ouyay ouldway ikelay otay useway inway aceplay ofway ethay eftlay electedsay engineway ypetay
-STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Esspray otay opstay ethay eplacementray ofway ethay engineway ypetay electedsay onway ethay eftlay
-STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Esspray otay eginbay eplacementray ofway ethay eftlay electedsay engineway ypetay ithway ethay ightray electedsay engineway ypetay
-STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Oosechay ethay ailtyperay ouyay antway otay eplaceray enginesway orfay
-STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Isplaysday ichwhay engineway ethay eftlay electedsay engineway isway eingbay eplacedray ithway, ifway anyway
-STR_REPLACE_HELP                                                :{BLACK}Isthay allowsway ouyay otay eplaceray oneway engineway ypetay ithway anotherway ypetay, enwhay ainstray ofway ethay originalway ypetay enterway away epotday
-STR_REPLACE_REMOVE_WAGON                                        :{BLACK}Agonway emovalray: {ORANGE}{SKIP}{STRING}
-STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Akemay autoreplaceway eepkay ethay engthlay ofway away aintray ethay amesay ybay emovingray agonsway (artingstay atway ethay ontfray), ifway eplacingray ethay engineway ouldway akemay ethay aintray ongerlay.
-STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Eplacingray: {ORANGE}{SKIP}{SKIP}{STRING}
-STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} EXPERIMENTALWAY EATUREFay {}Itchsway etweenbay engineway andway agonway eplacementray indowsway.{}Agonway eplacementray illway onlyway ebay oneday ifway ethay ewnay agonway ancay ebay efittedray intoway arryingcay ethay amesay ypetay ofway argocay asway ethay oldway oneway. Isthay isway eckedchay orfay eachway agonway enwhay ethay actualway eplacementray akestay aceplay.
-STR_RAIL_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Ehiclevay isway otnay availableway
-STR_ROAD_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Ehiclevay isway otnay availableway
-STR_SHIP_NOT_AVAILABLE                                          :{WHITE}Ipshay isway otnay availableway
-STR_AIRCRAFT_NOT_AVAILABLE                                      :{WHITE}Aircraftway isway otnay availableway
-
-STR_ENGINES                                                     :Enginesway
-STR_WAGONS                                                      :Agonsway
-
-STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Ickclay otay opstay allway ethay ainstray insideway ethay epotday
-STR_MASS_STOP_DEPOT_ROADVEH_TIP                                 :{BLACK}Ickclay otay opstay allway ethay oadray ehiclesvay insideway ethay epotday
-STR_MASS_STOP_DEPOT_SHIP_TIP                                    :{BLACK}Ickclay otay opstay allway ethay ipsshay insideway ethay epotday
-STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Ickclay otay opstay allway ethay aircraftway insideway ethay angarhay
-
-STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Ickclay otay artstay allway ethay ainstray insideway ethay epotday
-STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Ickclay otay artstay allway ethay oadray ehiclesvay insideway ethay epotday
-STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Ickclay otay artstay allway ethay ipsshay insideway ethay epotday
-STR_MASS_START_HANGAR_TIP                                       :{BLACK}Ickclay otay artstay allway ethay aircraftway insideway ethay angarhay
-
-STR_MASS_STOP_LIST_TIP                                          :{BLACK}Ickclay otay opstay allway ethay ehiclesvay inway ethay istlay
-STR_MASS_START_LIST_TIP                                         :{BLACK}Ickclay otay artstay allway ethay ehiclesvay inway ethay istlay
-
-STR_SHORT_DATE                                                  :{WHITE}{DATE_TINY}
-STR_SIGN_LIST_CAPTION                                           :{WHITE}Ignsay Istlay - {COMMA} Ign{P "" s}say
-
-STR_ORDER_REFIT_FAILED                                          :{WHITE}Orderway efitray ailurefay oppedstay {STRING} {COMMA}
-
-############ Lists rail types
-
-STR_RAIL_VEHICLES                                               :Ailray Ehiclesvay
-STR_ELRAIL_VEHICLES                                             :Electrifiedway Ailray Ehiclesvay
-STR_MONORAIL_VEHICLES                                           :Onorailmay Ehiclesvay
-STR_MAGLEV_VEHICLES                                             :Aglevmay Ehiclesvay
-
-############ End of list of rail types
-
-STR_TINY_BLACK                                                  :{BLACK}{TINYFONT}{COMMA}
-
-STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Ostcay: {GOLD}{CURRENCY}{BLACK} Eightway: {GOLD}{WEIGHT_S}
-STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Eedspay: {GOLD}{VELOCITY}{BLACK}   Owerpay: {GOLD}{POWER}
-STR_PURCHASE_INFO_SPEED                                         :{BLACK}Eedspay: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Unningray Ostcay: {GOLD}{CURRENCY}/yray
-STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Apacitycay: {GOLD}{CARGO} {STRING}
-STR_PURCHASE_INFO_DESIGNED_LIFE                                 :{BLACK}Esignedday: {GOLD}{NUM}{BLACK} Ifelay: {GOLD}{COMMA} earsyay
-STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Axmay. Eliabilityray: {GOLD}{COMMA}%
-STR_PURCHASE_INFO_COST                                          :{BLACK}Ostcay: {GOLD}{CURRENCY}
-STR_PURCHASE_INFO_WEIGHT_CWEIGHT                                :{BLACK}Eightway: {GOLD}{WEIGHT_S}  ({WEIGHT_S})
-STR_PURCHASE_INFO_COST_SPEED                                    :{BLACK}Ostcay: {GOLD}{CURRENCY}{BLACK} Eedspay: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Apacitycay: {GOLD}{COMMA} assengerspay, {COMMA} agsbay ofway ailmay
-STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Oweredpay Agonsway: {GOLD}+{POWER}{BLACK} Eightway: {GOLD}+{WEIGHT_S}
-STR_PURCHASE_INFO_REFITTABLE_TO                                 :{BLACK}Efittableray otay: {GOLD}
-STR_PURCHASE_INFO_ALL_TYPES                                     :Allway argocay ypestay
-STR_PURCHASE_INFO_ALL_BUT                                       :Allway utbay {GOLD}
-STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Axmay. Activetray Effortway: {GOLD}{FORCE}
-
-########### String for New Landscape Generator
-
-STR_GENERATE                                                    :{WHITE}Enerategay
-STR_RANDOM                                                      :{BLACK}Andomiseray
-STR_RANDOM_HELP                                                 :{BLACK}Angechay ethay andomray eedsay usedway orfay Erraintay Enerationgay
-STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Orldway enerationgay
-STR_RANDOM_SEED                                                 :{BLACK}Andomray Eedsay:
-STR_RANDOM_SEED_HELP                                            :{BLACK}Ickclay otay enterway away andomray eedsay
-STR_LAND_GENERATOR                                              :{BLACK}Andlay eneratorgay:
-STR_TREE_PLACER                                                 :{BLACK}Eetray algorithmway:
-STR_HEIGHTMAP_ROTATION                                          :{BLACK}Eightmaphay otationray:
-STR_TERRAIN_TYPE                                                :{BLACK}Erraintay ypetay:
-STR_QUANTITY_OF_SEA_LAKES                                       :{BLACK}Easay evellay:
-STR_SMOOTHNESS                                                  :{BLACK}Oothnesssmay:
-STR_SNOW_LINE_HEIGHT                                            :{BLACK}Owsnay inelay eighthay:
-STR_DATE                                                        :{BLACK}Ateday:
-STR_NUMBER_OF_TOWNS                                             :{BLACK}Onay. ofway ownstay:
-STR_NUMBER_OF_INDUSTRIES                                        :{BLACK}Onay. ofway industriesway:
-STR_GENERATE_DATE                                               :{BLACK}{DATE_LONG}
-STR_SNOW_LINE_UP                                                :{BLACK}Ovemay ethay owsnay inelay eighthay oneway upway
-STR_SNOW_LINE_DOWN                                              :{BLACK}Ovemay ethay owsnay inelay eighthay oneway ownday
-STR_SNOW_LINE_QUERY_CAPT                                        :{WHITE}Angechay owsnay inelay eighthay
-STR_START_DATE_QUERY_CAPT                                       :{WHITE}Angechay artingstay earyay
-STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Alescay arningway
-STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Esizingray ourcesay apmay ootay uchmay isway otnay ecommendedray. Ontinuecay ithway ethay enerationgay?
-STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Owntay ayoutlay arningway
-STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Ethay owntay ayoutlay "onay oremay oadsray" isway otnay ecommendedray. Ontinuecay ithway ethay enerationgay?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
-STR_HEIGHTMAP_NAME                                              :{BLACK}Eightmaphay amenay:
-STR_HEIGHTMAP_SIZE                                              :{BLACK}Izesay: {ORANGE}{NUM} xay {NUM}
-STR_GENERATION_WORLD                                            :{WHITE}Eneratinggay orldway...
-STR_GENERATION_ABORT                                            :{BLACK}Abortway
-STR_GENERATION_ABORT_CAPTION                                    :{WHITE}Abortway Orldway Enerationgay
-STR_GENERATION_ABORT_MESSAGE                                    :{YELLOW}Oday ouyay eallyray antway otay abortway ethay enerationgay?
-STR_PROGRESS                                                    :{WHITE}{NUM}% ompletecay
-STR_GENERATION_PROGRESS                                         :{BLACK}{NUM} / {NUM}
-STR_WORLD_GENERATION                                            :{BLACK}Orldway enerationgay
-STR_TREE_GENERATION                                             :{BLACK}Eetray enerationgay
-STR_UNMOVABLE_GENERATION                                        :{BLACK}Unmovableway enerationgay
-STR_CLEARING_TILES                                              :{BLACK}Oughray andway ockyray areaway enerationgay
-STR_SETTINGUP_GAME                                              :{BLACK}Ettingsay upway amegay
-STR_PREPARING_TILELOOP                                          :{BLACK}Unningray iletay-ooplay
-STR_PREPARING_GAME                                              :{BLACK}Eparingpray amegay
-STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Isthay actionway angedchay ethay ifficultyday evellay otay ustomcay
-STR_SE_FLAT_WORLD                                               :{WHITE}Atflay andlay
-STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Enerategay away atflay andlay
-STR_SE_RANDOM_LAND                                              :{WHITE}Andomray andlay
-STR_SE_NEW_WORLD                                                :{BLACK}Eatecray ewnay enarioscay
-STR_SE_CAPTION                                                  :{WHITE}Enarioscay ypetay
-STR_FLAT_WORLD_HEIGHT_DOWN                                      :{BLACK}Ovemay ethay eighthay ofway atflay andlay oneway ownday
-STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Ovemay ethay eighthay ofway atflay andlay oneway upway
-STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Angechay eighthay ofway atflay andlay
-STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Eighthay ofway atflay andlay:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
-
-STR_SMALLMAP_CENTER                                             :{BLACK}Entercay ethay allmapsmay onway ethay urrentcay ositionpay
-
-########### String for new airports
-STR_SMALL_AIRPORT                                               :{BLACK}Allsmay
-STR_CITY_AIRPORT                                                :{BLACK}Itycay
-STR_METRO_AIRPORT                                               :{BLACK}Etropolitanmay airportway
-STR_INTERNATIONAL_AIRPORT                                       :{BLACK}Internationalway airportway
-STR_COMMUTER_AIRPORT                                            :{BLACK}Ommutercay
-STR_INTERCONTINENTAL_AIRPORT                                    :{BLACK}Intercontinentalway
-STR_HELIPORT                                                    :{BLACK}Eliporthay
-STR_HELIDEPOT                                                   :{BLACK}Elidepothay
-STR_HELISTATION                                                 :{BLACK}Elistationhay
-
-STR_SMALL_AIRPORTS                                              :{BLACK}Allsmay airportsway
-STR_LARGE_AIRPORTS                                              :{BLACK}Argelay airportsway
-STR_HUB_AIRPORTS                                                :{BLACK}Ubhay airportsway
-STR_HELIPORTS                                                   :{BLACK}Elicopterhay airportsway
-
-############ Tooltip measurment
-
-STR_MEASURE_LENGTH                                              :{BLACK}Engthlay: {NUM}
-STR_MEASURE_AREA                                                :{BLACK}Areaway: {NUM} xay {NUM}
-STR_MEASURE_LENGTH_HEIGHTDIFF                                   :{BLACK}Engthlay: {NUM}{}Eighthay ifferenceday: {NUM} may
-STR_MEASURE_AREA_HEIGHTDIFF                                     :{BLACK}Areaway: {NUM} xay {NUM}{}Eighthay ifferenceday: {NUM} may
-
-############ Date formatting
-STR_DATE_TINY                                                   :{STRING}-{STRING}-{NUM}
-STR_DATE_SHORT                                                  :{STRING} {NUM}
-STR_DATE_LONG                                                   :{STRING} {STRING} {NUM}
-
-########
-
-STR_FEEDER_CARGO_VALUE                                          :{BLACK}Ansfertray Editscray: {LTBLUE}{CURRENCY}
-STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD                            :{WHITE}...isthay isway away owntay ownedway oadray
-STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...oadray acingfay inway ethay ongwray irectionday
-
-STR_TRANSPARENCY_TOOLB                                          :{WHITE}Ansparencytray Optionsway
-STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}Oggletay ansparencytray orfay ationstay ignssay
-STR_TRANSPARENT_TREES_DESC                                      :{BLACK}Oggletay ansparencytray orfay eestray
-STR_TRANSPARENT_HOUSES_DESC                                     :{BLACK}Oggletay ansparencytray orfay ouseshay
-STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Oggletay ansparencytray orfay industriesway
-STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Oggletay ansparencytray orfay uildablesbay ikelay ationsstay, epotsday, aypointsway andway atenarycay
-STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Oggletay ansparencytray orfay idgesbray
-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}
-STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
-STR_GROUP_ALL_TRAINS                                            :Allway ainstray
-STR_GROUP_ALL_ROADS                                             :Allway oadray ehiclesvay
-STR_GROUP_ALL_SHIPS                                             :Allway ipsshay
-STR_GROUP_ALL_AIRCRAFTS                                         :Allway aircraftway
-STR_GROUP_DEFAULT_TRAINS                                        :Ungroupedway ainstray
-STR_GROUP_DEFAULT_ROADS                                         :Ungroupedway oadray ehiclesvay
-STR_GROUP_DEFAULT_SHIPS                                         :Ungroupedway ipsshay
-STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ungroupedway aircraftway
-STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
-STR_GROUP_ADD_SHARED_VEHICLE                                    :Addway aredshay ehiclesvay
-STR_GROUP_REMOVE_ALL_VEHICLES                                   :Emoveray allway ehiclesvay
-
-STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Ain{P "" s}tray
-STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Oadray Ehicle{P "" s}vay
-STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Ip{P "" s}shay
-STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aircraftway
-STR_GROUP_RENAME_CAPTION                                        :{BLACK}Enameray away oupgray
-STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Eplaceray Ehiclesvay ofway "{GROUP}"
-
-STR_GROUP_CAN_T_CREATE                                          :{WHITE}An'tcay eatecray oupgray...
-STR_GROUP_CAN_T_DELETE                                          :{WHITE}An'tcay eleteday isthay oupgray...
-STR_GROUP_CAN_T_RENAME                                          :{WHITE}An'tcay enameray oupgray...
-STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}An'tcay emoveray allway ehiclesvay omfray isthay oupgray...
-STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}An'tcay addway ethay ehiclevay otay isthay oupgray...
-STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}An'tcay addway aredshay ehiclesvay otay oupgray...
-
-STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Oupsgray - Ickclay onway away oupgray otay istlay allway ehiclesvay ofway isthay oupgray
-STR_GROUP_CREATE_TIP                                            :{BLACK}Ickclay otay eatecray away oupgray
-STR_GROUP_DELETE_TIP                                            :{BLACK}Eleteday ethay electedsay oupgray
-STR_GROUP_RENAME_TIP                                            :{BLACK}Enameray ethay electedsay oupgray
-STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Ickclay otay otectpray isthay oupgray omfray obalglay autoreplaceway
-
-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
-
-########
-
-STR_FUND_NEW_INDUSTRY                                           :{BLACK}Undfay
-STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Ospectpray
-STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Uildbay
-STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Oosechay ethay appropriateway industryway omfray isthay istlay
+##name Pig latin
+##ownname Igpay atinlay
+##isocode xx_PL
+##plural 0
+
+#
+
+##id 0x0000
+STR_NULL                                                        :
+STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Offway edgeway ofway apmay
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Ootay oseclay otay edgeway ofway apmay
+STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Otnay enoughway ashcay - equiresray {CURRENCY}
+STR_0004                                                        :{WHITE}{CURRENCY}
+STR_EMPTY                                                       :
+STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Atflay andlay equiredray
+STR_0008_WAITING                                                :{BLACK}Aitingway: {WHITE}{STRING}
+STR_0009                                                        :{WHITE}{CARGO}
+STR_000C_ACCEPTS                                                :{BLACK}Acceptsway: {WHITE}
+STR_000D_ACCEPTS                                                :{BLACK}Acceptsway: {GOLD}
+STR_000E                                                        :
+STR_000F_PASSENGERS                                             :Assengerspay
+STR_0010_COAL                                                   :Oalcay
+STR_0011_MAIL                                                   :Ailmay
+STR_0012_OIL                                                    :Oilway
+STR_0013_LIVESTOCK                                              :Ivestocklay
+STR_0014_GOODS                                                  :Oodsgay
+STR_0015_GRAIN                                                  :Aingray
+STR_0016_WOOD                                                   :Oodway
+STR_0017_IRON_ORE                                               :Ironway Oreway
+STR_0018_STEEL                                                  :Eelstay
+STR_0019_VALUABLES                                              :Aluablesvay
+STR_001A_COPPER_ORE                                             :Oppercay Oreway
+STR_001B_MAIZE                                                  :Aizemay
+STR_001C_FRUIT                                                  :Uitfray
+STR_001D_DIAMONDS                                               :Iamondsday
+STR_001E_FOOD                                                   :Oodfay
+STR_001F_PAPER                                                  :Aperpay
+STR_0020_GOLD                                                   :Oldgay
+STR_0021_WATER                                                  :Aterway
+STR_0022_WHEAT                                                  :Eatwhay
+STR_0023_RUBBER                                                 :Ubberray
+STR_0024_SUGAR                                                  :Ugarsay
+STR_0025_TOYS                                                   :Oystay
+STR_0026_CANDY                                                  :Eetssway
+STR_0027_COLA                                                   :Olacay
+STR_0028_COTTON_CANDY                                           :Andyflosscay
+STR_0029_BUBBLES                                                :Ubblesbay
+STR_002A_TOFFEE                                                 :Offeetay
+STR_002B_BATTERIES                                              :Atteriesbay
+STR_002C_PLASTIC                                                :Asticplay
+STR_002D_FIZZY_DRINKS                                           :Izzyfay Inksdray
+STR_002E                                                        :
+STR_002F_PASSENGER                                              :Assengerpay
+STR_0030_COAL                                                   :Oalcay
+STR_0031_MAIL                                                   :Ailmay
+STR_0032_OIL                                                    :Oilway
+STR_0033_LIVESTOCK                                              :Ivestocklay
+STR_0034_GOODS                                                  :Oodsgay
+STR_0035_GRAIN                                                  :Aingray
+STR_0036_WOOD                                                   :Oodway
+STR_0037_IRON_ORE                                               :Ironway Oreway
+STR_0038_STEEL                                                  :Eelstay
+STR_0039_VALUABLES                                              :Aluablesvay
+STR_003A_COPPER_ORE                                             :Oppercay Oreway
+STR_003B_MAIZE                                                  :Aizemay
+STR_003C_FRUIT                                                  :Uitfray
+STR_003D_DIAMOND                                                :Iamondday
+STR_003E_FOOD                                                   :Oodfay
+STR_003F_PAPER                                                  :Aperpay
+STR_0040_GOLD                                                   :Oldgay
+STR_0041_WATER                                                  :Aterway
+STR_0042_WHEAT                                                  :Eatwhay
+STR_0043_RUBBER                                                 :Ubberray
+STR_0044_SUGAR                                                  :Ugarsay
+STR_0045_TOY                                                    :Oytay
+STR_0046_CANDY                                                  :Eetsway
+STR_0047_COLA                                                   :Olacay
+STR_0048_COTTON_CANDY                                           :Andyflosscay
+STR_0049_BUBBLE                                                 :Ubblebay
+STR_004A_TOFFEE                                                 :Offeetay
+STR_004B_BATTERY                                                :Atterybay
+STR_004C_PLASTIC                                                :Asticplay
+STR_004D_FIZZY_DRINK                                            :Izzyfay Inkdray
+STR_QUANTITY_NOTHING                                            :
+STR_QUANTITY_PASSENGERS                                         :{COMMA} assenger{P "" s}pay
+STR_QUANTITY_COAL                                               :{WEIGHT} ofway oalcay
+STR_QUANTITY_MAIL                                               :{COMMA} ag{P "" s}bay ofway ailmay
+STR_QUANTITY_OIL                                                :{VOLUME} ofway oilway
+STR_QUANTITY_LIVESTOCK                                          :{COMMA} item{P "" s}WAY ofway ivestocklay
+STR_QUANTITY_GOODS                                              :{COMMA} ate{P "" s}cray ofway oodsgay
+STR_QUANTITY_GRAIN                                              :{WEIGHT} ofway aingray
+STR_QUANTITY_WOOD                                               :{WEIGHT} ofway oodway
+STR_QUANTITY_IRON_ORE                                           :{WEIGHT} ofway ironway oreway
+STR_QUANTITY_STEEL                                              :{WEIGHT} ofway eelstay
+STR_QUANTITY_VALUABLES                                          :{COMMA} ag{P "" s}bay ofway aluablesvay
+STR_QUANTITY_COPPER_ORE                                         :{WEIGHT} ofway oppercay oreway
+STR_QUANTITY_MAIZE                                              :{WEIGHT} ofway aizemay
+STR_QUANTITY_FRUIT                                              :{WEIGHT} ofway uitfray
+STR_QUANTITY_DIAMONDS                                           :{COMMA} ag{P "" s}bay ofway iamondsday
+STR_QUANTITY_FOOD                                               :{WEIGHT} ofway oodfay
+STR_QUANTITY_PAPER                                              :{WEIGHT} ofway aperpay
+STR_QUANTITY_GOLD                                               :{COMMA} ag{P "" s}bay ofway oldgay
+STR_QUANTITY_WATER                                              :{VOLUME} ofway aterway
+STR_QUANTITY_WHEAT                                              :{WEIGHT} ofway eatwhay
+STR_QUANTITY_RUBBER                                             :{VOLUME} ofway ubberray
+STR_QUANTITY_SUGAR                                              :{WEIGHT} ofway ugarsay
+STR_QUANTITY_TOYS                                               :{COMMA} oy{P "" s}tay
+STR_QUANTITY_SWEETS                                             :{COMMA} ag{P "" s}bay ofway eetssway
+STR_QUANTITY_COLA                                               :{VOLUME} ofway olacay
+STR_QUANTITY_CANDYFLOSS                                         :{WEIGHT} ofway andyflosscay
+STR_QUANTITY_BUBBLES                                            :{COMMA} ubble{P "" s}bay
+STR_QUANTITY_TOFFEE                                             :{WEIGHT} ofway offeetay
+STR_QUANTITY_BATTERIES                                          :{COMMA} atter{P y ies}bay
+STR_QUANTITY_PLASTIC                                            :{VOLUME} ofway asticplay
+STR_QUANTITY_FIZZY_DRINKS                                       :{COMMA} izzyfay ink{P "" s}dray
+STR_ABBREV_NOTHING                                              :
+STR_ABBREV_PASSENGERS                                           :{TINYFONT}PSay
+STR_ABBREV_COAL                                                 :{TINYFONT}CLay
+STR_ABBREV_MAIL                                                 :{TINYFONT}MLay
+STR_ABBREV_OIL                                                  :{TINYFONT}OLWAY
+STR_ABBREV_LIVESTOCK                                            :{TINYFONT}LVay
+STR_ABBREV_GOODS                                                :{TINYFONT}GDay
+STR_ABBREV_GRAIN                                                :{TINYFONT}GRay
+STR_ABBREV_WOOD                                                 :{TINYFONT}WDay
+STR_ABBREV_IRON_ORE                                             :{TINYFONT}ORWAY
+STR_ABBREV_STEEL                                                :{TINYFONT}STay
+STR_ABBREV_VALUABLES                                            :{TINYFONT}VLay
+STR_ABBREV_COPPER_ORE                                           :{TINYFONT}OCay
+STR_ABBREV_MAIZE                                                :{TINYFONT}MZay
+STR_ABBREV_FRUIT                                                :{TINYFONT}FTay
+STR_ABBREV_DIAMONDS                                             :{TINYFONT}DMay
+STR_ABBREV_FOOD                                                 :{TINYFONT}FDay
+STR_ABBREV_PAPER                                                :{TINYFONT}PRay
+STR_ABBREV_GOLD                                                 :{TINYFONT}GDay
+STR_ABBREV_WATER                                                :{TINYFONT}WRay
+STR_ABBREV_WHEAT                                                :{TINYFONT}WHay
+STR_ABBREV_RUBBER                                               :{TINYFONT}RBay
+STR_ABBREV_SUGAR                                                :{TINYFONT}SGay
+STR_ABBREV_TOYS                                                 :{TINYFONT}YTay
+STR_ABBREV_SWEETS                                               :{TINYFONT}SWay
+STR_ABBREV_COLA                                                 :{TINYFONT}CLay
+STR_ABBREV_CANDYFLOSS                                           :{TINYFONT}CFay
+STR_ABBREV_BUBBLES                                              :{TINYFONT}UBay
+STR_ABBREV_TOFFEE                                               :{TINYFONT}TFay
+STR_ABBREV_BATTERIES                                            :{TINYFONT}BAay
+STR_ABBREV_PLASTIC                                              :{TINYFONT}PLay
+STR_ABBREV_FIZZY_DRINKS                                         :{TINYFONT}FZay
+STR_ABBREV_NONE                                                 :{TINYFONT}ONay
+STR_ABBREV_ALL                                                  :{TINYFONT}ALLWAY
+STR_00AE                                                        :{WHITE}{DATE_SHORT}
+STR_00AF                                                        :{WHITE}{DATE_LONG}
+STR_00B0_MAP                                                    :{WHITE}Apmay - {STRING}
+STR_00B1_GAME_OPTIONS                                           :{WHITE}Amegay Optionsway
+STR_00B2_MESSAGE                                                :{YELLOW}Essagemay
+STR_00B3_MESSAGE_FROM                                           :{YELLOW}Essagemay omfray {STRING}
+STR_POPUP_CAUTION_CAPTION                                       :{WHITE}Autioncay!
+STR_00B4_CAN_T_DO_THIS                                          :{WHITE}An'tcay oday isthay....
+STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}An'tcay earclay isthay areaway....
+STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Originalway opyrightcay {COPYRIGHT} 1995 Ischray Awyersay, Allway ightsray eservedray
+STR_00B7_VERSION                                                :{BLACK}OpenTTDWAY ersionvay {REV}
+STR_00BA_COPYRIGHT_OPENTTD                                      :{BLACK}OpenTTDWAY {COPYRIGHT}2002-2008 Ethay OpenTTDWAY eamtay
+STR_TRANSLATED_BY                                               :{BLACK}  Anslatortray(say) -
+
+STR_00C5                                                        :{BLACK}{CROSS}
+STR_00C6                                                        :{SILVER}{CROSS}
+STR_00C7_QUIT                                                   :{WHITE}Itquay
+STR_00C8_YES                                                    :{BLACK}Esyay
+STR_00C9_NO                                                     :{BLACK}Onay
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Areway ouyay uresay ouyay antway otay abandonway isthay amegay andway eturnray otay {STRING}?
+STR_00CB_1                                                      :{BLACK}1
+STR_00CC_2                                                      :{BLACK}2
+STR_00CD_3                                                      :{BLACK}3
+STR_00CE_4                                                      :{BLACK}4
+STR_00CF_5                                                      :{BLACK}5
+STR_00D0_NOTHING                                                :Othingnay
+STR_00D1_DARK_BLUE                                              :Arkday Ueblay
+STR_00D2_PALE_GREEN                                             :Alepay Eengray
+STR_00D3_PINK                                                   :Inkpay
+STR_00D4_YELLOW                                                 :Ellowyay
+STR_00D5_RED                                                    :Edray
+STR_00D6_LIGHT_BLUE                                             :Ightlay Ueblay
+STR_00D7_GREEN                                                  :Eengray
+STR_00D8_DARK_GREEN                                             :Arkday Eengray
+STR_00D9_BLUE                                                   :Ueblay
+STR_00DA_CREAM                                                  :Eamcray
+STR_00DB_MAUVE                                                  :Auvemay
+STR_00DC_PURPLE                                                 :Urplepay
+STR_00DD_ORANGE                                                 :Orangeway
+STR_00DE_BROWN                                                  :Ownbray
+STR_00DF_GREY                                                   :Eygray
+STR_00E0_WHITE                                                  :Itewhay
+STR_00E1_TOO_MANY_VEHICLES_IN_GAME                              :{WHITE}Ootay anymay ehiclesvay inway amegay
+STR_00E2                                                        :{BLACK}{COMMA}
+STR_00E3                                                        :{RED}{COMMA}
+STR_00E4_LOCATION                                               :{BLACK}Ocationlay
+STR_00E5_CONTOURS                                               :Ontourscay
+STR_00E6_VEHICLES                                               :Ehiclesvay
+STR_00E7_INDUSTRIES                                             :Industriesway
+STR_00E8_ROUTES                                                 :Outesray
+STR_00E9_VEGETATION                                             :Egetationvay
+STR_00EA_OWNERS                                                 :Ownersway
+STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Oadsray
+STR_00EC_RAILROADS                                              :{BLACK}{TINYFONT}Ailwaysray
+STR_00ED_STATIONS_AIRPORTS_DOCKS                                :{BLACK}{TINYFONT}Ationsstay/Airportsway/Ocksday
+STR_00EE_BUILDINGS_INDUSTRIES                                   :{BLACK}{TINYFONT}Uildingsbay/Industriesway
+STR_00EF_VEHICLES                                               :{BLACK}{TINYFONT}Ehiclesvay
+STR_00F0_100M                                                   :{BLACK}{TINYFONT}100may
+STR_00F1_200M                                                   :{BLACK}{TINYFONT}200may
+STR_00F2_300M                                                   :{BLACK}{TINYFONT}300may
+STR_00F3_400M                                                   :{BLACK}{TINYFONT}400may
+STR_00F4_500M                                                   :{BLACK}{TINYFONT}500may
+STR_00F5_TRAINS                                                 :{BLACK}{TINYFONT}Ainstray
+STR_00F6_ROAD_VEHICLES                                          :{BLACK}{TINYFONT}Oadray Ehiclesvay
+STR_00F7_SHIPS                                                  :{BLACK}{TINYFONT}Ipsshay
+STR_00F8_AIRCRAFT                                               :{BLACK}{TINYFONT}Aircraftway
+STR_00F9_TRANSPORT_ROUTES                                       :{BLACK}{TINYFONT}Ansporttray Outesray
+STR_00FA_COAL_MINE                                              :{BLACK}{TINYFONT}Oalcay Inemay
+STR_00FB_POWER_STATION                                          :{BLACK}{TINYFONT}Owerpay Ationstay
+STR_00FC_FOREST                                                 :{BLACK}{TINYFONT}Orestfay
+STR_00FD_SAWMILL                                                :{BLACK}{TINYFONT}Awmillsay
+STR_00FE_OIL_REFINERY                                           :{BLACK}{TINYFONT}Oilway Efineryray
+STR_00FF_FARM                                                   :{BLACK}{TINYFONT}Armfay
+STR_0100_FACTORY                                                :{BLACK}{TINYFONT}Actoryfay
+STR_0101_PRINTING_WORKS                                         :{BLACK}{TINYFONT}Intingpray Orksway
+STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Oilway Ellsway
+STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Ironway Oreway Inemay
+STR_0104_STEEL_MILL                                             :{BLACK}{TINYFONT}Eelstay Illmay
+STR_0105_BANK                                                   :{BLACK}{TINYFONT}Ankbay
+STR_0106_PAPER_MILL                                             :{BLACK}{TINYFONT}Aperpay Illmay
+STR_0107_GOLD_MINE                                              :{BLACK}{TINYFONT}Oldgay Inemay
+STR_0108_FOOD_PROCESSING_PLANT                                  :{BLACK}{TINYFONT}Oodfay Ocessingpray Antplay
+STR_0109_DIAMOND_MINE                                           :{BLACK}{TINYFONT}Iamondday Inemay
+STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Oppercay Oreway Inemay
+STR_010B_FRUIT_PLANTATION                                       :{BLACK}{TINYFONT}Uitfray Antationplay
+STR_010C_RUBBER_PLANTATION                                      :{BLACK}{TINYFONT}Ubberray Antationplay
+STR_010D_WATER_SUPPLY                                           :{BLACK}{TINYFONT}Aterway Upplysay
+STR_010E_WATER_TOWER                                            :{BLACK}{TINYFONT}Aterway Owertay
+STR_010F_LUMBER_MILL                                            :{BLACK}{TINYFONT}Umberlay Illmay
+STR_0110_COTTON_CANDY_FOREST                                    :{BLACK}{TINYFONT}Andyflosscay Orestfay
+STR_0111_CANDY_FACTORY                                          :{BLACK}{TINYFONT}Eetsway Actoryfay
+STR_0112_BATTERY_FARM                                           :{BLACK}{TINYFONT}Atterybay Armfay
+STR_0113_COLA_WELLS                                             :{BLACK}{TINYFONT}Olacay Ellsway
+STR_0114_TOY_SHOP                                               :{BLACK}{TINYFONT}Oytay Opshay
+STR_0115_TOY_FACTORY                                            :{BLACK}{TINYFONT}Oytay Actoryfay
+STR_0116_PLASTIC_FOUNTAINS                                      :{BLACK}{TINYFONT}Asticplay Ountainsfay
+STR_0117_FIZZY_DRINK_FACTORY                                    :{BLACK}{TINYFONT}Izzyfay Inkdray Actoryfay
+STR_0118_BUBBLE_GENERATOR                                       :{BLACK}{TINYFONT}Ubblebay Eneratorgay
+STR_0119_TOFFEE_QUARRY                                          :{BLACK}{TINYFONT}Offeetay Arryquay
+STR_011A_SUGAR_MINE                                             :{BLACK}{TINYFONT}Ugarsay Inemay
+STR_011B_RAILROAD_STATION                                       :{BLACK}{TINYFONT}Ailwayray Ationstay
+STR_011C_TRUCK_LOADING_BAY                                      :{BLACK}{TINYFONT}Orrylay Oadinglay Aybay
+STR_011D_BUS_STATION                                            :{BLACK}{TINYFONT}Usbay Ationstay
+STR_011E_AIRPORT_HELIPORT                                       :{BLACK}{TINYFONT}Airportway/Eliporthay
+STR_011F_DOCK                                                   :{BLACK}{TINYFONT}Ockday
+STR_0120_ROUGH_LAND                                             :{BLACK}{TINYFONT}Oughray Andlay
+STR_0121_GRASS_LAND                                             :{BLACK}{TINYFONT}Assgray Andlay
+STR_0122_BARE_LAND                                              :{BLACK}{TINYFONT}Arebay Andlay
+STR_0123_FIELDS                                                 :{BLACK}{TINYFONT}Ieldsfay
+STR_0124_TREES                                                  :{BLACK}{TINYFONT}Eestray
+STR_0125_ROCKS                                                  :{BLACK}{TINYFONT}Ocksray
+STR_0126_WATER                                                  :{BLACK}{TINYFONT}Aterway
+STR_0127_NO_OWNER                                               :{BLACK}{TINYFONT}Onay Ownerway
+STR_0128_TOWNS                                                  :{BLACK}{TINYFONT}Ownstay
+STR_0129_INDUSTRIES                                             :{BLACK}{TINYFONT}Industriesway
+STR_012A_DESERT                                                 :{BLACK}{TINYFONT}Esertday
+STR_012B_SNOW                                                   :{BLACK}{TINYFONT}Owsnay
+STR_012C_MESSAGE                                                :{WHITE}Essagemay
+STR_012D                                                        :{WHITE}{STRING}
+STR_012E_CANCEL                                                 :{BLACK}Ancelcay
+STR_012F_OK                                                     :{BLACK}OKWAY
+STR_0130_RENAME                                                 :{BLACK}Enameray
+STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Ootay anymay amesnay efinedday
+STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Osenchay amenay alreadyway inway useway
+
+STR_OSNAME_WINDOWS                                              :Indowsway
+STR_OSNAME_UNIX                                                 :Unixway
+STR_OSNAME_OSX                                                  :OSWAY Xay
+STR_OSNAME_BEOS                                                 :EOSbay
+STR_OSNAME_MORPHOS                                              :OrphOSmay
+STR_OSNAME_AMIGAOS                                              :AmigaOSWAY
+STR_OSNAME_OS2                                                  :OSWAY/2
+STR_OSNAME_SUNOS                                                :UnOSsay
+
+STR_013B_OWNED_BY                                               :{WHITE}...ownedway ybay {STRING}
+STR_013C_CARGO                                                  :{BLACK}Argocay
+STR_013D_INFORMATION                                            :{BLACK}Informationway
+STR_013E_CAPACITIES                                             :{BLACK}Apacitiescay
+STR_TOTAL_CARGO                                                 :{BLACK}Otaltay Argocay
+STR_013F_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
+STR_CAPACITY_MULT                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO} (xay{NUM})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Otaltay argocay apacitycay ofway isthay aintray:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (xay{NUM})
+STR_0140_NEW_GAME                                               :{BLACK}Ewnay Amegay
+STR_0141_LOAD_GAME                                              :{BLACK}Oadlay Amegay
+STR_SINGLE_PLAYER                                               :{BLACK}Inglesay ayerplay
+STR_MULTIPLAYER                                                 :{BLACK}Ultiplayermay
+STR_SCENARIO_EDITOR                                             :{BLACK}Enarioscay Editorway
+
+STR_MAPSIZE                                                     :{BLACK}Apmay izesay:
+STR_BY                                                          :{BLACK}*
+STR_0148_GAME_OPTIONS                                           :{BLACK}Amegay Optionsway
+
+STR_0150_SOMEONE                                                :omeonesay{SKIP}{SKIP}
+STR_0151_MAP_OF_WORLD                                           :Apmay ofway orldway
+STR_0152_TOWN_DIRECTORY                                         :Owntay irectoryday
+STR_0153_SUBSIDIES                                              :Ubsidiessay
+
+STR_UNITS_IMPERIAL                                              :Imperialway
+STR_UNITS_METRIC                                                :Etricmay
+STR_UNITS_SI                                                    :ISay
+
+STR_UNITS_VELOCITY_IMPERIAL                                     :{COMMA} mphay
+STR_UNITS_VELOCITY_METRIC                                       :{COMMA} kmay/hay
+STR_UNITS_VELOCITY_SI                                           :{COMMA} may/say
+
+STR_UNITS_POWER_IMPERIAL                                        :{COMMA}hpay
+STR_UNITS_POWER_METRIC                                          :{COMMA}hpay
+STR_UNITS_POWER_SI                                              :{COMMA}kWay
+
+STR_UNITS_WEIGHT_SHORT_IMPERIAL                                 :{COMMA}tay
+STR_UNITS_WEIGHT_SHORT_METRIC                                   :{COMMA}tay
+STR_UNITS_WEIGHT_SHORT_SI                                       :{COMMA}kgay
+
+STR_UNITS_WEIGHT_LONG_IMPERIAL                                  :{COMMA} on{P "" s}tay
+STR_UNITS_WEIGHT_LONG_METRIC                                    :{COMMA} onne{P "" s}tay
+STR_UNITS_WEIGHT_LONG_SI                                        :{COMMA} kgay
+
+STR_UNITS_VOLUME_SHORT_IMPERIAL                                 :{COMMA}algay
+STR_UNITS_VOLUME_SHORT_METRIC                                   :{COMMA}lay
+STR_UNITS_VOLUME_SHORT_SI                                       :{COMMA}may³
+
+STR_UNITS_VOLUME_LONG_IMPERIAL                                  :{COMMA} allon{P "" s}gay
+STR_UNITS_VOLUME_LONG_METRIC                                    :{COMMA} itre{P "" s}lay
+STR_UNITS_VOLUME_LONG_SI                                        :{COMMA} may³
+
+STR_UNITS_FORCE_IMPERIAL                                        :{COMMA}xay10³ lbfay
+STR_UNITS_FORCE_METRIC                                          :{COMMA} ontay orcefay
+STR_UNITS_FORCE_SI                                              :{COMMA} kNay
+
+############ range for menu starts
+STR_0154_OPERATING_PROFIT_GRAPH                                 :Operatingway ofitpray aphgray
+STR_0155_INCOME_GRAPH                                           :Incomeway aphgray
+STR_0156_DELIVERED_CARGO_GRAPH                                  :Eliveredday argocay aphgray
+STR_0157_PERFORMANCE_HISTORY_GRAPH                              :Erformancepay istoryhay aphgray
+STR_0158_COMPANY_VALUE_GRAPH                                    :Ompanycay aluevay aphgray
+STR_0159_CARGO_PAYMENT_RATES                                    :Argocay aymentpay atesray
+STR_015A_COMPANY_LEAGUE_TABLE                                   :Ompanycay eaguelay abletay
+STR_PERFORMANCE_DETAIL_MENU                                     :Etailedday erformancepay atingray
+############ range for menu ends
+
+STR_015B_OPENTTD                                                :{WHITE}Aboutway OpenTTDWAY
+STR_015C_SAVE_GAME                                              :Avesay amegay
+STR_015D_LOAD_GAME                                              :Oadlay amegay
+STR_015E_QUIT_GAME                                              :Abandonway amegay
+STR_015F_QUIT                                                   :Exitway
+STR_ABANDON_GAME_QUERY                                          :{YELLOW}Areway ouyay uresay ouyay antway otay abandonway isthay amegay?
+STR_0161_QUIT_GAME                                              :{WHITE}Abandonway Amegay
+STR_SORT_ORDER_TIP                                              :{BLACK}Electsay ortingsay orderway (escendingday/ascendingway)
+STR_SORT_CRITERIA_TIP                                           :{BLACK}Electsay ortingsay iteriacray
+STR_SORT_BY                                                     :{BLACK}Ortsay ybay
+
+STR_SORT_BY_POPULATION                                          :{BLACK}Opulationpay
+STR_SORT_BY_PRODUCTION                                          :{BLACK}Oductionpray
+STR_SORT_BY_TYPE                                                :{BLACK}Ypetay
+STR_SORT_BY_TRANSPORTED                                         :{BLACK}Ansportedtray
+STR_SORT_BY_NAME                                                :{BLACK}Amenay
+STR_SORT_BY_DROPDOWN_NAME                                       :Amenay
+STR_SORT_BY_DATE                                                :{BLACK}Ateday
+STR_SORT_BY_NUMBER                                              :Umbernay
+STR_SORT_BY_PROFIT_LAST_YEAR                                    :Ofitpray astlay earyay
+STR_SORT_BY_PROFIT_THIS_YEAR                                    :Ofitpray isthay earyay
+STR_SORT_BY_AGE                                                 :Ageway
+STR_SORT_BY_RELIABILITY                                         :Eliabilityray
+STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Otaltay apacitycay erpay argocay ypetay
+STR_SORT_BY_MAX_SPEED                                           :Aximummay eedspay
+STR_SORT_BY_MODEL                                               :Odelmay
+STR_SORT_BY_VALUE                                               :Aluevay
+STR_SORT_BY_FACILITY                                            :Ationstay ypetay
+STR_SORT_BY_WAITING                                             :Aitingway argocay aluevay
+STR_SORT_BY_RATING_MAX                                          :Argocay atingray
+STR_ENGINE_SORT_ENGINE_ID                                       :EngineIDWAY (assicclay ortsay)
+STR_ENGINE_SORT_COST                                            :Ostcay
+STR_ENGINE_SORT_POWER                                           :Owerpay
+STR_ENGINE_SORT_INTRO_DATE                                      :Introductionway Ateday
+STR_ENGINE_SORT_RUNNING_COST                                    :Unningray Ostcay
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Owerpay/Unningray Ostcay
+STR_ENGINE_SORT_CARGO_CAPACITY                                  :Argocay Apacitycay
+STR_NO_WAITING_CARGO                                            :{BLACK}Onay argocay ofway anyway ypetay isway aitingway
+STR_SELECT_ALL_FACILITIES                                       :{BLACK}Electsay allway acilitiesfay
+STR_SELECT_ALL_TYPES                                            :{BLACK}Electsay allway argocay ypestay (includingway onay aitingway argocay)
+STR_AVAILABLE_TRAINS                                            :{BLACK}Availableway Ainstray
+STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Availableway Ehiclesvay
+STR_AVAILABLE_SHIPS                                             :{BLACK}Availableway Ipsshay
+STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Availableway Aircraftway
+STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Eesay away istlay ofway availableway engineway esignsday orfay isthay ehiclevay ypetay.
+STR_MANAGE_LIST                                                 :{BLACK}Anagemay istlay
+STR_MANAGE_LIST_TIP                                             :{BLACK}Endsay instructionsway otay allway ehiclesvay inway isthay istlay
+STR_REPLACE_VEHICLES                                            :Eplaceray ehiclesvay
+STR_SEND_TRAIN_TO_DEPOT                                         :Endsay otay Epotday
+STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Endsay otay Epotday
+STR_SEND_SHIP_TO_DEPOT                                          :Endsay otay Epotday
+STR_SEND_AIRCRAFT_TO_HANGAR                                     :Endsay otay Angarhay
+STR_SEND_FOR_SERVICING                                          :Endsay orfay Ervicingsay
+
+############ range for months starts
+STR_0162_JAN                                                    :Anjay
+STR_0163_FEB                                                    :Ebfay
+STR_0164_MAR                                                    :Armay
+STR_0165_APR                                                    :Aprway
+STR_0166_MAY                                                    :Aymay
+STR_0167_JUN                                                    :Unjay
+STR_0168_JUL                                                    :Uljay
+STR_0169_AUG                                                    :Augway
+STR_016A_SEP                                                    :Epsay
+STR_016B_OCT                                                    :Octway
+STR_016C_NOV                                                    :Ovnay
+STR_016D_DEC                                                    :Ecday
+############ range for months ends
+
+STR_016E                                                        :{TINYFONT}{STRING}{} {STRING}
+STR_016F                                                        :{TINYFONT}{STRING}{} {STRING}{}{NUM}
+STR_0170                                                        :{TINYFONT}{STRING}-
+STR_0171_PAUSE_GAME                                             :{BLACK}Ausepay amegay
+STR_0172_SAVE_GAME_ABANDON_GAME                                 :{BLACK}Avesay amegay, abandonway amegay, itquay
+STR_0173_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ationsstay
+STR_0174_DISPLAY_MAP                                            :{BLACK}Isplayday apmay
+STR_0175_DISPLAY_MAP_TOWN_DIRECTORY                             :{BLACK}Isplayday apmay, owntay irectoryday
+STR_0176_DISPLAY_TOWN_DIRECTORY                                 :{BLACK}Isplayday owntay irectoryday
+STR_0177_DISPLAY_COMPANY_FINANCES                               :{BLACK}Isplayday ompanycay inancesfay informationway
+STR_0178_DISPLAY_COMPANY_GENERAL                                :{BLACK}Isplayday eneralgay ompanycay informationway
+STR_0179_DISPLAY_GRAPHS                                         :{BLACK}Isplayday aphsgray
+STR_017A_DISPLAY_COMPANY_LEAGUE                                 :{BLACK}Isplayday ompanycay eaguelay abletay
+STR_017B_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ainstray
+STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay oadray ehiclesvay
+STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay ipsshay
+STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Isplayday istlay ofway ompany'scay aircraftway
+STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Oomzay ethay iewvay inway
+STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Oomzay ethay iewvay outway
+STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Uildbay ailwayray acktray
+STR_0182_BUILD_ROADS                                            :{BLACK}Uildbay oadsray
+STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}Uildbay ipshay ocksday
+STR_0184_BUILD_AIRPORTS                                         :{BLACK}Uildbay airportsway
+STR_0185_PLANT_TREES_PLACE_SIGNS                                :{BLACK}Antplay eestray, aceplay ignssay etcway.
+STR_0186_LAND_BLOCK_INFORMATION                                 :{BLACK}Andlay areaway informationway
+STR_0187_OPTIONS                                                :{BLACK}Optionsway
+STR_0188                                                        :{BLACK}{SMALLUPARROW}
+STR_0189                                                        :{BLACK}{SMALLDOWNARROW}
+STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}An'tcay angechay ervicingsay intervalway...
+STR_018B_CLOSE_WINDOW                                           :{BLACK}Oseclay indowway
+STR_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}Indowway itletay - agdray isthay otay ovemay indowway
+STR_STICKY_BUTTON                                               :{BLACK}Arkmay isthay indowway asway uncloseableway ybay ethay 'Oseclay Allway Indows'way eykay
+STR_RESIZE_BUTTON                                               :{BLACK}Ickclay andway agdray otay esizeray isthay indowway
+STR_SAVELOAD_HOME_BUTTON                                        :{BLACK}Ickclay erehay otay umpjay otay ethay urrentcay efaultday avesay/oadlay irectoryday
+STR_018D_DEMOLISH_BUILDINGS_ETC                                 :{BLACK}Emolishday uildingsbay etcway. onway away aresquay ofway andlay
+STR_018E_LOWER_A_CORNER_OF_LAND                                 :{BLACK}Owerlay away ornercay ofway andlay
+STR_018F_RAISE_A_CORNER_OF_LAND                                 :{BLACK}Aiseray away ornercay ofway andlay
+STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Ollscray arbay - ollsscray istlay upway/ownday
+STR_HSCROLL_BAR_SCROLLS_LIST                                    :{BLACK}Ollscray arbay - ollsscray istlay eftlay/ightray
+STR_0191_SHOW_LAND_CONTOURS_ON_MAP                              :{BLACK}Owshay andlay ontourscay onway apmay
+STR_0192_SHOW_VEHICLES_ON_MAP                                   :{BLACK}Owshay ehiclesvay onway apmay
+STR_0193_SHOW_INDUSTRIES_ON_MAP                                 :{BLACK}Owshay industriesway onway apmay
+STR_0194_SHOW_TRANSPORT_ROUTES_ON                               :{BLACK}Owshay ansporttray outesray onway apmay
+STR_0195_SHOW_VEGETATION_ON_MAP                                 :{BLACK}Owshay egetationvay onway apmay
+STR_0196_SHOW_LAND_OWNERS_ON_MAP                                :{BLACK}Owshay andlay ownersway onway apmay
+STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Oggletay owntay amesnay onway/offway onway apmay
+STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}Ofitpray isthay earyay: {CURRENCY} (astlay earyay: {CURRENCY})
+
+############ range for service numbers starts
+STR_AGE                                                         :{COMMA} ear{P "" s}yay ({COMMA})
+STR_AGE_RED                                                     :{RED}{COMMA} ear{P "" s}yay ({COMMA})
+############ range for service numbers ends
+
+STR_019C_ROAD_VEHICLE                                           :Oadray ehiclevay
+STR_019D_AIRCRAFT                                               :Aircraftway
+STR_019E_SHIP                                                   :Ipshay
+STR_019F_TRAIN                                                  :Aintray
+STR_01A0_IS_GETTING_OLD                                         :{WHITE}{STRING} {COMMA} isway ettinggay oldway
+STR_01A1_IS_GETTING_VERY_OLD                                    :{WHITE}{STRING} {COMMA} isway ettinggay eryvay oldway
+STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} isway ettinggay eryvay oldway andway urgentlyway eedsnay eplacingray
+STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Andlay Areaway Informationway
+STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Ostcay otay earclay: {LTBLUE}Nay/Away
+STR_01A5_COST_TO_CLEAR                                          :{BLACK}Ostcay otay earclay: {LTBLUE}{CURRENCY}
+STR_01A6_N_A                                                    :Nay/Away
+STR_01A7_OWNER                                                  :{BLACK}Ownerway: {LTBLUE}{STRING}
+STR_01A8_LOCAL_AUTHORITY                                        :{BLACK}Ocallay authorityway: {LTBLUE}{STRING}
+STR_01A9_NONE                                                   :Onenay
+STR_01AA_NAME                                                   :{BLACK}Amenay
+STR_01AB                                                        :{BLACK}{TINYFONT}{VEHICLE}
+
+############ range for days starts
+STR_01AC_1ST                                                    :1stay
+STR_01AD_2ND                                                    :2nday
+STR_01AE_3RD                                                    :3rday
+STR_01AF_4TH                                                    :4thay
+STR_01B0_5TH                                                    :5thay
+STR_01B1_6TH                                                    :6thay
+STR_01B2_7TH                                                    :7thay
+STR_01B3_8TH                                                    :8thay
+STR_01B4_9TH                                                    :9thay
+STR_01B5_10TH                                                   :10thay
+STR_01B6_11TH                                                   :11thay
+STR_01B7_12TH                                                   :12thay
+STR_01B8_13TH                                                   :13thay
+STR_01B9_14TH                                                   :14thay
+STR_01BA_15TH                                                   :15thay
+STR_01BB_16TH                                                   :16thay
+STR_01BC_17TH                                                   :17thay
+STR_01BD_18TH                                                   :18thay
+STR_01BE_19TH                                                   :19thay
+STR_01BF_20TH                                                   :20thay
+STR_01C0_21ST                                                   :21stay
+STR_01C1_22ND                                                   :22nday
+STR_01C2_23RD                                                   :23rday
+STR_01C3_24TH                                                   :24thay
+STR_01C4_25TH                                                   :25thay
+STR_01C5_26TH                                                   :26thay
+STR_01C6_27TH                                                   :27thay
+STR_01C7_28TH                                                   :28thay
+STR_01C8_29TH                                                   :29thay
+STR_01C9_30TH                                                   :30thay
+STR_01CA_31ST                                                   :31stay
+############ range for days ends
+
+STR_01CB                                                        :{TINYFONT}{COMMA}
+
+STR_01CE_CARGO_ACCEPTED                                         :{BLACK}Argocay acceptedway: {LTBLUE}
+
+STR_01D1_8                                                      :({COMMA}/8 {STRING})
+STR_01D2_JAZZ_JUKEBOX                                           :{WHITE}Azzjay Ukeboxjay
+STR_01D3_SOUND_MUSIC                                            :Oundsay/usicmay
+STR_01D4_SHOW_SOUND_MUSIC_WINDOW                                :{BLACK}Owshay oundsay/usicmay indowway
+STR_01D5_ALL                                                    :{TINYFONT}Allway
+STR_01D6_OLD_STYLE                                              :{TINYFONT}Oldway Ylestay
+STR_01D7_NEW_STYLE                                              :{TINYFONT}Ewnay Ylestay
+STR_01D8_EZY_STREET                                             :{TINYFONT}Ezyway Eetstray
+STR_01D9_CUSTOM_1                                               :{TINYFONT}Ustomcay 1
+STR_01DA_CUSTOM_2                                               :{TINYFONT}Ustomcay 2
+STR_01DB_MUSIC_VOLUME                                           :{BLACK}{TINYFONT}Usicmay Olumevay
+STR_01DC_EFFECTS_VOLUME                                         :{BLACK}{TINYFONT}Effectsway Olumevay
+STR_01DD_MIN_MAX                                                :{BLACK}{TINYFONT}INMay  '  '  ' '  '  '  MAXay
+STR_01DE_SKIP_TO_PREVIOUS_TRACK                                 :{BLACK}Ipskay otay eviouspray acktray inway electionsay
+STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION                        :{BLACK}Ipskay otay extnay acktray inway electionsay
+STR_01E0_STOP_PLAYING_MUSIC                                     :{BLACK}Opstay ayingplay usicmay
+STR_01E1_START_PLAYING_MUSIC                                    :{BLACK}Artstay ayingplay usicmay
+STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC                              :{BLACK}Agdray idersslay otay etsay usicmay andway oundsay effectway olumesvay
+STR_01E3                                                        :{DKGREEN}{TINYFONT}--
+STR_01E4_0                                                      :{DKGREEN}{TINYFONT}0{COMMA}
+STR_01E5                                                        :{DKGREEN}{TINYFONT}{COMMA}
+STR_01E6                                                        :{DKGREEN}{TINYFONT}------
+STR_01E7                                                        :{DKGREEN}{TINYFONT}"{STRING}"
+STR_01E8_TRACK_XTITLE                                           :{BLACK}{TINYFONT}Acktray{SETX 88}Itletay
+STR_01E9_SHUFFLE                                                :{TINYFONT}Uffleshay
+STR_01EA_PROGRAM                                                :{TINYFONT}{BLACK}Ogrammepray
+STR_01EB_MUSIC_PROGRAM_SELECTION                                :{WHITE}Usicmay Ogrammepray Electionsay
+STR_01EC_0                                                      :{TINYFONT}{LTBLUE}0{COMMA} "{STRING}"
+STR_01ED                                                        :{TINYFONT}{LTBLUE}{COMMA} "{STRING}"
+STR_01EE_TRACK_INDEX                                            :{TINYFONT}{BLACK}Acktray Indexway
+STR_01EF_PROGRAM                                                :{TINYFONT}{BLACK}Ogrammepray - '{STRING}'
+STR_01F0_CLEAR                                                  :{TINYFONT}{BLACK}Earclay
+STR_01F1_SAVE                                                   :{TINYFONT}{BLACK}Avesay
+STR_01F2_CURRENT_PROGRAM_OF_MUSIC                               :{BLACK}Urrentcay ogrammepray ofway usicmay ackstray
+STR_01F3_SELECT_ALL_TRACKS_PROGRAM                              :{BLACK}Electsay 'allway acks'tray ogrammepray
+STR_01F4_SELECT_OLD_STYLE_MUSIC                                 :{BLACK}Electsay 'oldway ylestay usic'may ogrammepray
+STR_01F5_SELECT_NEW_STYLE_MUSIC                                 :{BLACK}Electsay 'ewnay ylestay usic'may ogrammepray
+STR_01F6_SELECT_CUSTOM_1_USER_DEFINED                           :{BLACK}Electsay 'Ustomcay 1' (userway-efinedday) ogrammepray
+STR_01F7_SELECT_CUSTOM_2_USER_DEFINED                           :{BLACK}Electsay 'Ustomcay 2' (userway-efinedday) ogrammepray
+STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Earclay urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
+STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Avesay usicmay ettingssay
+STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Ickclay onway usicmay acktray otay addway otay urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
+STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Ickclay onway usicmay acktray otay emoveray itway omfray urrentcay ogrammepray (Ustomcay1 orway Ustomcay2 onlyway)
+STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Oggletay ogrammepray uffleshay onway/offway
+STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Owshay usicmay acktray electionsay indowway
+STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Ickclay onway ervicesay otay entrecay iewvay onway industryway/owntay
+STR_01FE_DIFFICULTY                                             :{BLACK}Ifficultyday ({STRING})
+STR_01FF                                                        :{TINYFONT}{BLACK}{DATE_LONG}
+STR_0200_LAST_MESSAGE_NEWS_REPORT                               :Astlay essagemay/ewsnay eportray
+STR_0201_MESSAGE_SETTINGS                                       :Essagemay ettingssay
+STR_MESSAGE_HISTORY_MENU                                        :Essagemay Istoryhay
+STR_0203_SHOW_LAST_MESSAGE_NEWS                                 :{BLACK}Owshay astlay essagemay/ewsnay eportray, owshay essagemay optionsway
+STR_0204_MESSAGE_OPTIONS                                        :{WHITE}Essagemay Optionsway
+STR_0205_MESSAGE_TYPES                                          :{BLACK}Essagemay ypestay:
+STR_0206_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Arrivalway ofway irstfay ehiclevay atway ayer'splay ationstay
+STR_0207_ARRIVAL_OF_FIRST_VEHICLE                               :{YELLOW}Arrivalway ofway irstfay ehiclevay atway ompetitor'scay ationstay
+STR_0208_ACCIDENTS_DISASTERS                                    :{YELLOW}Accidentsway / isastersday
+STR_0209_COMPANY_INFORMATION                                    :{YELLOW}Ompanycay informationway
+STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Openway / oseclay ofway industriesway
+STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Economyway angeschay
+STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Adviceway / informationway onway ayer'splay ehiclesvay
+STR_020C_NEW_VEHICLES                                           :{YELLOW}Ewnay ehiclesvay
+STR_020D_CHANGES_OF_CARGO_ACCEPTANCE                            :{YELLOW}Angeschay otay argocay acceptanceway
+STR_020E_SUBSIDIES                                              :{YELLOW}Ubsidiessay
+STR_020F_GENERAL_INFORMATION                                    :{YELLOW}Eneralgay informationway
+STR_MESSAGES_ALL                                                :{YELLOW}Etsay allway essagemay ypestay otay: Offway / Ummarysay/ Ullfay
+STR_MESSAGE_SOUND                                               :{YELLOW}Ayplay oundsay orfay ummarisedsay ewsnay essagesmay
+STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO                       :{WHITE}...ootay arfay omfray eviouspray estinationday
+STR_0211_TOP_COMPANIES_WHO_REACHED                              :{BIGFONT}{BLACK}Optay ompaniescay owhay eachedray {NUM}{}({STRING} Evellay)
+STR_TOP_COMPANIES_NETWORK_GAME                                  :{BIGFONT}{BLACK}Ompanycay Eaguelay Abletay inway {NUM}
+STR_0212                                                        :{BIGFONT}{COMMA}.
+STR_0213_BUSINESSMAN                                            :Usinessmanbay
+STR_0214_ENTREPRENEUR                                           :Entrepreneurway
+STR_0215_INDUSTRIALIST                                          :Industrialistway
+STR_0216_CAPITALIST                                             :Apitalistcay
+STR_0217_MAGNATE                                                :Agnatemay
+STR_0218_MOGUL                                                  :Ogulmay
+STR_0219_TYCOON_OF_THE_CENTURY                                  :Ycoontay ofway ethay Enturycay
+STR_HIGHSCORE_NAME                                              :{BIGFONT}{PLAYERNAME}, {COMPANY}
+STR_HIGHSCORE_STATS                                             :{BIGFONT}'{STRING}'   ({COMMA})
+STR_021B_ACHIEVES_STATUS                                        :{BLACK}{BIGFONT}{COMPANY} achievesway '{STRING}' atusstay!
+STR_021C_OF_ACHIEVES_STATUS                                     :{WHITE}{BIGFONT}{PLAYERNAME} ofway {COMPANY} achievesway '{STRING}' atusstay!
+STR_021F                                                        :{BLUE}{COMMA}
+STR_0221_OPENTTD                                                :{YELLOW}OpenTTDWAY
+STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Enarioscay Editorway
+STR_0223_LAND_GENERATION                                        :{WHITE}Andlay Enerationgay
+STR_0224                                                        :{BLACK}{UPARROW}
+STR_0225                                                        :{BLACK}{DOWNARROW}
+STR_0228_INCREASE_SIZE_OF_LAND_AREA                             :{BLACK}Increaseway areaway ofway andlay otay owerlay/aiseray
+STR_0229_DECREASE_SIZE_OF_LAND_AREA                             :{BLACK}Ecreaseday areaway ofway andlay otay owerlay/aiseray
+STR_022A_GENERATE_RANDOM_LAND                                   :{BLACK}Enerategay andomray andlay
+STR_022B_RESET_LANDSCAPE                                        :{BLACK}Esetray andscapelay
+STR_022C_RESET_LANDSCAPE                                        :{WHITE}Esetray Andscapelay
+STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Emoveray allway ayerplay-ownedway opertypray omfray ethay apmay
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Areway ouyay uresay ouyay antway otay emoveray allway ayerplay-ownedway opertypray?
+STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Andscapelay enerationgay
+STR_022F_TOWN_GENERATION                                        :{BLACK}Owntay enerationgay
+STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Industryway enerationgay
+STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Oadray onstructioncay
+STR_0233_TOWN_GENERATION                                        :{WHITE}Owntay Enerationgay
+STR_0234_NEW_TOWN                                               :{BLACK}Ewnay Owntay
+STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Onstructcay ewnay owntay
+STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}An'tcay uildbay owntay erehay...
+STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...ootay oseclay otay edgeway ofway apmay
+STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...ootay oseclay otay anotherway owntay
+STR_0239_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
+STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...ootay anymay ownstay
+STR_CANNOT_GENERATE_TOWN                                        :{WHITE}An'tcay uildbay anyway ownstay
+STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...erethay isway onay oremay acespay onway ethay apmay
+STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Increaseway izesay ofway owntay
+STR_023C_EXPAND                                                 :{BLACK}Expandway
+STR_023D_RANDOM_TOWN                                            :{BLACK}Andomray Owntay
+STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION                          :{BLACK}Uildbay owntay inway andomray ocationlay
+STR_023F_INDUSTRY_GENERATION                                    :{WHITE}Industryway Enerationgay
+STR_0240_COAL_MINE                                              :{BLACK}Oalcay Inemay
+STR_0241_POWER_STATION                                          :{BLACK}Owerpay Ationstay
+STR_0242_SAWMILL                                                :{BLACK}Awmillsay
+STR_0243_FOREST                                                 :{BLACK}Orestfay
+STR_0244_OIL_REFINERY                                           :{BLACK}Oilway Efineryray
+STR_0245_OIL_RIG                                                :{BLACK}Oilway Igray
+STR_0246_FACTORY                                                :{BLACK}Actoryfay
+STR_0247_STEEL_MILL                                             :{BLACK}Eelstay Illmay
+STR_0248_FARM                                                   :{BLACK}Armfay
+STR_0249_IRON_ORE_MINE                                          :{BLACK}Ironway Oreway Inemay
+STR_024A_OIL_WELLS                                              :{BLACK}Oilway Ellsway
+STR_024B_BANK                                                   :{BLACK}Ankbay
+STR_024C_PAPER_MILL                                             :{BLACK}Aperpay Illmay
+STR_024D_FOOD_PROCESSING_PLANT                                  :{BLACK}Oodfay Ocessingpray Antplay
+STR_024E_PRINTING_WORKS                                         :{BLACK}Intingpray Orksway
+STR_024F_GOLD_MINE                                              :{BLACK}Oldgay Inemay
+STR_0250_LUMBER_MILL                                            :{BLACK}Umberlay Illmay
+STR_0251_FRUIT_PLANTATION                                       :{BLACK}Uitfray Antationplay
+STR_0252_RUBBER_PLANTATION                                      :{BLACK}Ubberray Antationplay
+STR_0253_WATER_SUPPLY                                           :{BLACK}Aterway Upplysay
+STR_0254_WATER_TOWER                                            :{BLACK}Aterway Owertay
+STR_0255_DIAMOND_MINE                                           :{BLACK}Iamondday Inemay
+STR_0256_COPPER_ORE_MINE                                        :{BLACK}Oppercay Oreway Inemay
+STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Andyflosscay Orestfay
+STR_0258_CANDY_FACTORY                                          :{BLACK}Eetsway Actoryfay
+STR_0259_BATTERY_FARM                                           :{BLACK}Atterybay Armfay
+STR_025A_COLA_WELLS                                             :{BLACK}Olacay Ellsway
+STR_025B_TOY_SHOP                                               :{BLACK}Oytay Opshay
+STR_025C_TOY_FACTORY                                            :{BLACK}Oytay Actoryfay
+STR_025D_PLASTIC_FOUNTAINS                                      :{BLACK}Asticplay Ountainsfay
+STR_025E_FIZZY_DRINK_FACTORY                                    :{BLACK}Izzyfay Inkdray Actoryfay
+STR_025F_BUBBLE_GENERATOR                                       :{BLACK}Ubblebay Eneratorgay
+STR_0260_TOFFEE_QUARRY                                          :{BLACK}Offeetay Arryquay
+STR_0261_SUGAR_MINE                                             :{BLACK}Ugarsay Inemay
+STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}Onstructcay Oalcay Inemay
+STR_0263_CONSTRUCT_POWER_STATION                                :{BLACK}Onstructcay Owerpay Ationstay
+STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Onstructcay Awmillsay
+STR_0265_PLANT_FOREST                                           :{BLACK}Antplay Orestfay
+STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Onstructcay Oilway Efineryray
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Onstructcay Oilway Igray (Ancay onlyway ebay uiltbay earnay ethay edgesway ofway ethay apmay)
+STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Onstructcay Actoryfay
+STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Onstructcay Eelstay Illmay
+STR_026A_CONSTRUCT_FARM                                         :{BLACK}Onstructcay Armfay
+STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Onstructcay Ironway Oreway Inemay
+STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Onstructcay Oilway Ellsway
+STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Onstructcay Ankbay (Ancay onlyway ebay uiltbay inway ownstay ithway away opulationpay eatergray anthay 1200)
+STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Onstructcay Aperpay Illmay
+STR_026F_CONSTRUCT_FOOD_PROCESSING                              :{BLACK}Onstructcay Oodfay Ocessingpray Antplay
+STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Onstructcay Intingpray Orksway
+STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Onstructcay Oldgay Inemay
+STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Onstructcay Ankbay (Ancay onlyway ebay uiltbay inway ownstay)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Onstructcay Umberlay Illmay (otay earclay ainforestray andway oducepray Oodway)
+STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Antplay Uitfray Antationplay
+STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Antplay Ubberray Antationplay
+STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Onstructcay Aterway Upplysay
+STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Onstructcay Aterway Owertay (Ancay onlyway ebay uiltbay inway ownstay)
+STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Onstructcay Iamondday Inemay
+STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Onstructcay Oppercay Oreway Inemay
+STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Antplay Andyflosscay Orestfay
+STR_027B_CONSTRUCT_CANDY_FACTORY                                :{BLACK}Onstructcay Eetsway Actoryfay
+STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Onstructcay Atterybay Armfay
+STR_027D_CONSTRUCT_COLA_WELLS                                   :{BLACK}Onstructcay Olacay Ellsway
+STR_027E_CONSTRUCT_TOY_SHOP                                     :{BLACK}Onstructcay Oytay Opshay
+STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}Onstructcay Oytay Actoryfay
+STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS                            :{BLACK}Onstructcay Asticplay Ountainsfay
+STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY                          :{BLACK}Onstructcay Izzyfay Inkdray Actoryfay
+STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}Onstructcay Ubblebay Eneratorgay
+STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Onstructcay Offeetay Arryquay
+STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Onstructcay Ugarsay Inemay
+STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}An'tcay uildbay {STRING} erehay...
+STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...ustmay uildbay owntay irstfay
+STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...onlyway oneway allowedway erpay owntay
+STR_0288_PLANT_TREES                                            :{BLACK}Antplay eestray
+STR_0289_PLACE_SIGN                                             :{BLACK}Aceplay ignsay
+STR_028A_RANDOM_TREES                                           :{BLACK}Andomray Eestray
+STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Antplay eestray andomlyray overway andscapelay
+STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Aceplay ockyray areasway onway andscapelay
+STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Aceplay ighthouselay
+STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Aceplay ansmittertray
+STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Efineday esertday areaway.{}Esspray andway oldhay CTRLay otay emoveray itway
+STR_CREATE_LAKE                                                 :{BLACK}Efineday aterway areaway.{}Akemay away analcay, unlessway CTRLay isway eldhay ownday atway easay evellay, enwhay itway illway oodflay ethay urroundingssay insteadway
+STR_0290_DELETE                                                 :{BLACK}Eleteday
+STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Eleteday isthay owntay ompletelycay
+STR_0292_SAVE_SCENARIO                                          :Avesay enarioscay
+STR_0293_LOAD_SCENARIO                                          :Oadlay enarioscay
+STR_MENU_LOAD_HEIGHTMAP                                         :Oadlay eightmaphay
+STR_0294_QUIT_EDITOR                                            :Itquay editorway
+STR_0295                                                        :
+STR_0296_QUIT                                                   :Itquay
+STR_0297_SAVE_SCENARIO_LOAD_SCENARIO                            :{BLACK}Avesay enarioscay, oadlay enarioscay, abandonway enarioscay editorway, itquay
+STR_0298_LOAD_SCENARIO                                          :{WHITE}Oadlay Enarioscay
+STR_0299_SAVE_SCENARIO                                          :{WHITE}Avesay Enarioscay
+STR_029A_PLAY_SCENARIO                                          :{BLACK}Ayplay Enarioscay
+STR_PLAY_HEIGHTMAP                                              :{BLACK}Ayplay Eightmaphay
+STR_PLAY_HEIGHTMAP_HINT                                         :{BLACK}Artstay away ewnay amegay, usingway away eightmaphay asway andscapelay
+STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Areway ouyay uresay ouyay antway otay itquay isthay enarioscay ?
+STR_029C_QUIT_EDITOR                                            :{WHITE}Itquay Editorway
+STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay ithway away opulationpay ofway atway eastlay 1200
+STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Ovemay ethay artingstay ateday ackwardbay 1 earyay
+STR_029F_MOVE_THE_STARTING_DATE                                 :{BLACK}Ovemay ethay artingstay ateday orwardfay 1 earyay
+STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...endsway ofway idgebray ustmay othbay ebay onway andlay
+STR_02A1_SMALL                                                  :{BLACK}Allsmay
+STR_02A2_MEDIUM                                                 :{BLACK}Ediummay
+STR_02A3_LARGE                                                  :{BLACK}Argelay
+STR_SCENARIO_EDITOR_CITY                                        :{BLACK}Itycay
+STR_02A4_SELECT_TOWN_SIZE                                       :{BLACK}Electsay owntay izesay
+STR_02A5_TOWN_SIZE                                              :{YELLOW}Owntay izesay:
+
+STR_02B6                                                        :{STRING}  -  {STRING}
+STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS                              :{BLACK}Owshay astlay essagemay orway ewsnay eportray
+STR_OFF                                                         :Offway
+STR_SUMMARY                                                     :Ummarysay
+STR_FULL                                                        :Ullfay
+STR_02BA                                                        :{SILVER}- -  {COMPANY}  - -
+STR_02BB_TOWN_DIRECTORY                                         :Owntay irectoryday
+STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Ehiclevay esignday amesnay
+STR_02BD                                                        :{BLACK}{STRING}
+STR_02BE_DEFAULT                                                :Efaultday
+STR_02BF_CUSTOM                                                 :Ustomcay
+STR_02C0_SAVE_CUSTOM_NAMES                                      :{BLACK}Avesay ustomcay amesnay
+STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION                         :{BLACK}Ehiclevay esignday amesnay electionsay
+STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Avesay ustomisedcay ehiclevay esignday amesnay
+
+STR_CHECKMARK                                                   :{CHECKMARK}
+############ range for menu starts
+STR_02C4_GAME_OPTIONS                                           :Amegay optionsway
+STR_02C6_DIFFICULTY_SETTINGS                                    :Ifficultyday ettingssay
+STR_MENU_CONFIG_PATCHES                                         :Onfigurecay atchespay
+STR_NEWGRF_SETTINGS                                             :EwGRFnay ettingssay
+STR_TRANSPARENCY_OPTIONS                                        :Ansparencytray optionsway
+STR_GAMEOPTMENU_0A                                              :
+STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Owntay amesnay isplayedday
+STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Ationstay amesnay isplayedday
+STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Ignssay isplayedday
+STR_WAYPOINTS_DISPLAYED2                                        :{SETX 12}Aypointsway isplayedday
+STR_02D0_FULL_ANIMATION                                         :{SETX 12}Ullfay animationway
+STR_02D2_FULL_DETAIL                                            :{SETX 12}Ullfay etailday
+STR_02D4_TRANSPARENT_BUILDINGS                                  :{SETX 12}Ansparenttray uildingsbay
+STR_TRANSPARENT_SIGNS                                           :{SETX 12}Ansparenttray ationstay ignssay
+############ range ends here
+
+############ range for menu starts
+STR_02D5_LAND_BLOCK_INFO                                        :Andlay areaway informationway
+STR_02D6                                                        :
+STR_CONSOLE_SETTING                                             :Oggletay Onsolecay
+STR_02D7_SCREENSHOT_CTRL_S                                      :Eenshotscray (Ctrlay-Say)
+STR_02D8_GIANT_SCREENSHOT_CTRL_G                                :Iantgay Eenshotscray (Ctrlay-Gay)
+STR_02D9_ABOUT_OPENTTD                                          :Aboutway 'OpenTTD'WAY
+############ range ends here
+
+STR_02DB_OFF                                                    :{BLACK}Offway
+STR_02DA_ON                                                     :{BLACK}Onway
+STR_02DC_DISPLAY_SUBSIDIES                                      :{BLACK}Isplayday ubsidiessay
+STR_02DD_SUBSIDIES                                              :Ubsidiessay
+STR_02DE_MAP_OF_WORLD                                           :Apmay ofway orldway
+STR_EXTRA_VIEW_PORT                                             :Extraway iewportvay
+STR_SIGN_LIST                                                   :Ignsay istlay
+STR_02DF_TOWN_DIRECTORY                                         :Owntay irectoryday
+STR_TOWN_POPULATION                                             :{BLACK}Orldway opulationpay: {COMMA}
+STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Iewportvay {COMMA}
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}Opycay otay iewportvay
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}Opycay ethay ocationlay ofway ethay obalglay iewvay otay isthay iewportvay
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Astepay omfray iewportvay
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Astepay ethay ocationlay ofway isthay iewportvay otay ethay obalglay iewvay
+
+STR_02E0_CURRENCY_UNITS                                         :{BLACK}Urrencycay unitsway
+STR_02E1                                                        :{BLACK}{SKIP}{STRING}
+STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Urrencycay unitsway electionsay
+STR_MEASURING_UNITS                                             :{BLACK}Easuringmay unitsway
+STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
+STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Easuringmay unitsway electionsay
+STR_02E6_ROAD_VEHICLES                                          :{BLACK}Oadray ehiclesvay
+STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
+STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Electsay idesay ofway oadray orfay ehiclesvay otay ivedray onway
+STR_02E9_DRIVE_ON_LEFT                                          :Ivedray onway eftlay
+STR_02EA_DRIVE_ON_RIGHT                                         :Ivedray onway ightray
+STR_02EB_TOWN_NAMES                                             :{BLACK}Owntay amesnay
+STR_02EC                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}Electsay ylestay ofway owntay amesnay
+
+STR_02F4_AUTOSAVE                                               :{BLACK}Autosaveway
+STR_02F5                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Electsay intervalway etweenbay automaticway amegay avessay
+STR_02F7_OFF                                                    :Offway
+STR_02F8_EVERY_3_MONTHS                                         :Everyway 3 onthsmay
+STR_02F9_EVERY_6_MONTHS                                         :Everyway 6 onthsmay
+STR_02FA_EVERY_12_MONTHS                                        :Everyway 12 onthsmay
+STR_02FB_START_A_NEW_GAME                                       :{BLACK}Artstay away ewnay amegay
+STR_02FC_LOAD_A_SAVED_GAME                                      :{BLACK}Oadlay away avedsay amegay
+STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Eatecray away ustomisedcay amegay orldway/enarioscay
+STR_02FF_SELECT_SINGLE_PLAYER_GAME                              :{BLACK}Electsay inglesay-ayerplay amegay
+STR_0300_SELECT_MULTIPLAYER_GAME                                :{BLACK}Electsay ultiplayermay amegay ofway 2-8 ayersplay
+STR_0301_DISPLAY_GAME_OPTIONS                                   :{BLACK}Isplayday amegay optionsway
+STR_0302_DISPLAY_DIFFICULTY_OPTIONS                             :{BLACK}Isplayday ifficultyday optionsway
+STR_0303_START_A_NEW_GAME_USING                                 :{BLACK}Artstay away ewnay amegay, usingway away ustomisedcay enarioscay
+STR_0304_QUIT                                                   :{BLACK}Itquay
+STR_0305_QUIT_OPENTTD                                           :{BLACK}Itquay 'OpenTTD'WAY
+STR_0307_OPENTTD                                                :{WHITE}OpenTTDWAY {REV}
+STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay
+STR_030E_SELECT_TEMPERATE_LANDSCAPE                             :{BLACK}Electsay 'emperate'tay andscapelay ylestay
+STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Electsay 'ubsay-arctic'WAY andscapelay ylestay
+STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Electsay 'ubsay-opical'tray andscapelay ylestay
+STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Electsay 'oyland'tay andscapelay ylestay
+STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Undfay onstructioncay ofway ewnay industryway
+
+############ range for menu starts
+STR_INDUSTRY_DIR                                                :Industryway Irectoryday
+STR_0313_FUND_NEW_INDUSTRY                                      :Undfay ewnay industryway
+############ range ends here
+
+STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Undfay ewnay industryway
+STR_JUST_STRING                                                 :{STRING}
+STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...ancay onlyway ebay uiltbay inway ownstay
+STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST                        :{WHITE}...ancay onlyway ebay uiltbay inway ainforestray areasway
+STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT                            :{WHITE}...ancay onlyway ebay uiltbay inway esertday areasway
+STR_0319_PAUSED                                                 :{YELLOW}* *  USEDPAay  *  *
+
+STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Eenshotscray uccessfullysay avedsay asway '{STRING}'
+STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Eenshotscray ailedfay!
+
+STR_0329_PURCHASE_LAND_FOR_FUTURE                               :{BLACK}Urchasepay andlay orfay uturefay useway
+STR_032F_AUTOSAVE                                               :{RED}AUTOSAVEWAY
+STR_SAVING_GAME                                                 :{RED}*  *  INGSAVay EGAMay  *  *
+STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Avingsay illstay inway ogresspray,{}easeplay aitway untilway itway isway inishedfay!
+STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Electsay 'Ezyway Eetstray ylestay usic'may ogrammepray
+
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
+
+############ start of townname region
+STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Englishway (Originalway)
+STR_TOWNNAME_FRENCH                                             :Enchfray
+STR_TOWNNAME_GERMAN                                             :Ermangay
+STR_TOWNNAME_ADDITIONAL_ENGLISH                                 :Englishway (Additionalway)
+STR_TOWNNAME_LATIN_AMERICAN                                     :Atinlay-Americanway
+STR_TOWNNAME_SILLY                                              :Illysay
+STR_TOWNNAME_SWEDISH                                            :Edishsway
+STR_TOWNNAME_DUTCH                                              :Utchday
+STR_TOWNNAME_FINNISH                                            :Innishfay
+STR_TOWNNAME_POLISH                                             :Olishpay
+STR_TOWNNAME_SLOVAKISH                                          :Ovakishslay
+STR_TOWNNAME_NORWEGIAN                                          :Orwegiannay
+STR_TOWNNAME_HUNGARIAN                                          :Ungarianhay
+STR_TOWNNAME_AUSTRIAN                                           :Austrianway
+STR_TOWNNAME_ROMANIAN                                           :Omanianray
+STR_TOWNNAME_CZECH                                              :Echczay
+STR_TOWNNAME_SWISS                                              :Isssway
+STR_TOWNNAME_DANISH                                             :Anishday
+STR_TOWNNAME_TURKISH                                            :Urkishtay
+STR_TOWNNAME_ITALIAN                                            :Italianway
+STR_TOWNNAME_CATALAN                                            :Atalancay
+############ end of townname region
+
+STR_CURR_GBP                                                    :Oundspay (£)
+STR_CURR_USD                                                    :Ollarsday ($)
+STR_CURR_EUR                                                    :Euroway (€)
+STR_CURR_YEN                                                    :Enyay (¥)
+STR_CURR_ATS                                                    :Austrianway Illingshay (ATSWAY)
+STR_CURR_BEF                                                    :Elgianbay Ancfray (EFBay)
+STR_CURR_CHF                                                    :Isssway Ancfray (CHFay)
+STR_CURR_CZK                                                    :Echczay Orunakay (CZKay)
+STR_CURR_DEM                                                    :Eutschmarkday (EMDay)
+STR_CURR_DKK                                                    :Anishday Onekray (DKKay)
+STR_CURR_ESP                                                    :Esetapay (ESPWAY)
+STR_CURR_FIM                                                    :Innishfay Arkkamay (IMFay)
+STR_CURR_FRF                                                    :Ancfray (FRFay)
+STR_CURR_GRD                                                    :Eekgray Achmadray (GRDay)
+STR_CURR_HUF                                                    :Ungarianhay Orintfay (UFHay)
+STR_CURR_ISK                                                    :Icelandicway Onakray (ISKWAY)
+STR_CURR_ITL                                                    :Italianway Iralay (ITLWAY)
+STR_CURR_NLG                                                    :Utchday Uildergay (NLGay)
+STR_CURR_NOK                                                    :Orwegiannay Onekray (OKNay)
+STR_CURR_PLN                                                    :Olishpay Otyzlay (PLNay)
+STR_CURR_ROL                                                    :Omanianray Eulay (OLRay)
+STR_CURR_RUR                                                    :Ussianray Ublesray (URRay)
+STR_CURR_SIT                                                    :Ovenianslay Olartay (ITSay)
+STR_CURR_SEK                                                    :Edishsway Onakray (EKSay)
+STR_CURR_YTL                                                    :Urkishtay Iralay (YTLay)
+STR_CURR_SKK                                                    :Ovakslay Orunakay (SKKay)
+STR_CURR_BRR                                                    :Azilianbray Ealray (BRLay)
+
+STR_CURR_CUSTOM                                                 :Ustomcay...
+
+STR_OPTIONS_LANG                                                :{BLACK}Anguagelay
+STR_OPTIONS_LANG_CBO                                            :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_LANG_TIP                                            :{BLACK}Electsay ethay interfaceway anguagelay otay useway
+
+STR_OPTIONS_FULLSCREEN                                          :{BLACK}Ullscreenfay
+STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Eckchay isthay oxbay otay ayplay OpenTTDWAY ullscreenfay odemay
+
+STR_OPTIONS_RES                                                 :{BLACK}Eenscray esolutionray
+STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_RES_TIP                                             :{BLACK}Electsay ethay eenscray esolutionray otay useway
+
+STR_OPTIONS_SCREENSHOT_FORMAT                                   :{BLACK}Eenshotscray ormatfay
+STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Electsay ethay eenshotscray ormatfay otay useway
+
+STR_AUTOSAVE_1_MONTH                                            :Everyway onthmay
+STR_AUTOSAVE_FAILED                                             :{WHITE}Autosaveway ailedfay
+
+STR_MONTH_JAN                                                   :Anuaryjay
+STR_MONTH_FEB                                                   :Ebruaryfay
+STR_MONTH_MAR                                                   :Archmay
+STR_MONTH_APR                                                   :Aprilway
+STR_MONTH_MAY                                                   :Aymay
+STR_MONTH_JUN                                                   :Unejay
+STR_MONTH_JUL                                                   :Ulyjay
+STR_MONTH_AUG                                                   :Augustway
+STR_MONTH_SEP                                                   :Eptembersay
+STR_MONTH_OCT                                                   :Octoberway
+STR_MONTH_NOV                                                   :Ovembernay
+STR_MONTH_DEC                                                   :Ecemberday
+
+STR_HEADING_FOR_STATION                                         :{LTBLUE}Eadinghay orfay {STATION}
+STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Eadinghay orfay {STATION}, {VELOCITY}
+STR_NO_ORDERS                                                   :{LTBLUE}Onay ordersway
+STR_NO_ORDERS_VEL                                               :{LTBLUE}Onay ordersway, {VELOCITY}
+
+STR_PASSENGERS                                                  :assengerspay
+STR_BAGS                                                        :agsbay
+STR_TONS                                                        :onnestay
+STR_LITERS                                                      :itreslay
+STR_ITEMS                                                       :itemsway
+STR_CRATES                                                      :atescray
+STR_RES_OTHER                                                   :otherway
+STR_NOTHING                                                     :
+
+STR_SMALL_RIGHT_ARROW                                           :{TINYFONT}{RIGHTARROW}
+
+STR_CANT_SHARE_ORDER_LIST                                       :{WHITE}An'tcay areshay orderway istlay...
+STR_CANT_COPY_ORDER_LIST                                        :{WHITE}An'tcay opycay orderway istlay...
+STR_END_OF_SHARED_ORDERS                                        :{SETX 10}- - Endway ofway Aredshay Ordersway - -
+
+STR_TRAIN_IS_LOST                                               :{WHITE}Aintray {COMMA} isway ostlay.
+STR_TRAIN_IS_UNPROFITABLE                                       :{WHITE}Aintray {COMMA}'say ofitpray astlay earyay asway {CURRENCY}
+STR_EURO_INTRODUCE                                              :{BLACK}{BIGFONT}Europeanway Onetarymay Unionway!{}{}Ethay Euroway isway introducedway asway ethay olesay urrencycay orfay everydayway ansactionstray inway ouryay ountrycay!
+
+# Start of order review system.
+# DON'T ADD OR REMOVE LINES HERE
+STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Aintray {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
+STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Aintray {COMMA} ashay away oidvay orderway
+STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Aintray {COMMA} ashay uplicateday ordersway
+STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Aintray {COMMA} ashay anway invalidway ationstay inway itsway ordersway
+STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Oadray Ehiclevay {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
+STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Oadray Ehiclevay {COMMA} ashay away oidvay orderway
+STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Oadray Ehiclevay {COMMA} ashay uplicateday ordersway
+STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Oadray Ehiclevay {COMMA} ashay anway invalidway ationstay inway itsway ordersway
+STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Ipshay {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
+STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Ipshay {COMMA} ashay away oidvay orderway
+STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Ipshay {COMMA} ashay uplicateday ordersway
+STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Ipshay {COMMA} ashay anway invalidway ationstay inway itsway ordersway
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Aircraftway {COMMA} ashay ootay ewfay ordersway inway ethay eduleschay
+STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Aircraftway {COMMA} ashay away oidvay orderway
+STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Aircraftway {COMMA} ashay uplicateday ordersway
+STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Aircraftway {COMMA} ashay anway invalidway ationstay inway itsway ordersway
+# end of order system
+
+STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Autorenewway ailedfay onway aintray {COMMA} (oneymay imitlay)
+STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Autorenewway ailedfay onway oadray ehiclevay {COMMA} (oneymay imitlay)
+STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Autorenewway ailedfay onway ipshay {COMMA} (oneymay imitlay)
+STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Autorenewway ailedfay onway aircraftway {COMMA} (oneymay imitlay)
+STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}Aintray {COMMA} isway ootay onglay afterway eplacementray
+
+STR_CONFIG_PATCHES                                              :{BLACK}Onfigurecay Atchespay
+STR_CONFIG_PATCHES_TIP                                          :{BLACK}Onfigurecay ethay atchespay
+STR_CONFIG_PATCHES_CAPTION                                      :{WHITE}Onfigurecay Atchespay
+
+STR_CONFIG_PATCHES_OFF                                          :Offway
+STR_CONFIG_PATCHES_ON                                           :Onway
+STR_CONFIG_PATCHES_VEHICLESPEED                                 :{LTBLUE}Owshay ehiclevay eedspay inway atusstay arbay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BUILDONSLOPES                                :{LTBLUE}Allowway uildingbay onway opesslay andway oastscay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_CATCHMENT                                    :{LTBLUE}Allowway oremay ealisticallyray izedsay atchmentcay areasway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_EXTRADYNAMITE                                :{LTBLUE}Allowway emovalray ofway oremay owntay-ownedway oadsray, idgesbray, etcway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAMMOTHTRAINS                                :{LTBLUE}Enableway uildingbay eryvay onglay ainstray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REALISTICACCEL                               :{LTBLUE}Enableway ealisticray accelerationway orfay ainstray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_FORBID_90_DEG                                :{LTBLUE}Orbidfay ainstray andway ipsshay otay akemay 90 egday urnstay: {ORANGE}{STRING} {LTBLUE} (equiresray NPFay)
+STR_CONFIG_PATCHES_JOINSTATIONS                                 :{LTBLUE}Oinjay aintray ationsstay uiltbay extnay otay eachway otherway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_FULLLOADANY                                  :{LTBLUE}Eavelay ationstay enwhay anyway argocay isway ullfay, ifway 'ullfay oad'lay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_IMPROVEDLOAD                                 :{LTBLUE}Useway improvedway oadinglay algorithmway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_GRADUAL_LOADING                              :{LTBLUE}Oadlay ehiclesvay aduallygray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_INFLATION                                    :{LTBLUE}Inflationway: {ORANGE}{STRING}
+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}
+STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Owshay ignalssay onway ethay ivedray idesay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Owshay inancesfay indowway atway ethay endway ofway ethay earyay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}AtchtTDPay ompatiblecay onstopnay andlinghay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Oadray ehiclevay eueingquay (ithway antumquay effectsway): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Anpay indowway enwhay ousemay isway atway ethay edgeway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Allowway ibingbray ofway ethay ocallay authorityway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Onuniformnay ationsstay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ewnay obalglay athfindingpay (NPFay, overridesway NTPay): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Eightway ultipliermay orfay eightfray otay imulatesay eavyhay ainstray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Allowway ivedray-oughthray oadray opsstay onway owntay ownedway oadsray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Allowway uildingbay adjacentway ationsstay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Alwaysway allowway allsmay airportsway: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Arnway ifway aintray isway ostlay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ORDER_REVIEW                                 :{LTBLUE}Eviewray ehicles'vay ordersway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ORDER_REVIEW_OFF                             :onay
+STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT                         :esyay, utbay excludeway oppedstay ehiclesvay
+STR_CONFIG_PATCHES_ORDER_REVIEW_ON                              :ofway allway ehiclesvay
+STR_CONFIG_PATCHES_WARN_INCOME_LESS                             :{LTBLUE}Arnway ifway away ain'stray incomeway isway egativenay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES                        :{LTBLUE}Ehiclesvay evernay expireway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTORENEW_VEHICLE                            :{LTBLUE}Autorenewway ehiclevay enwhay itway etsgay oldway
+STR_CONFIG_PATCHES_AUTORENEW_MONTHS                             :{LTBLUE}Autorenewway enwhay ehicevay isway {ORANGE}{STRING}{LTBLUE} onthsmay eforebay/afterway axmay ageway
+STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Autorenewway inimummay eedednay oneymay orfay enewray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Urationday ofway errorway essagemay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Owshay owntay opulationpay inway ethay owntay amenay abellay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Invisibleway eestray (ithway ansparenttray uildingsbay): {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_LAND_GENERATOR                               :{LTBLUE}Andlay eneratorgay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Originalway
+STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :ErraGenesistay
+STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Axmay istanceday omfray edgeway orfay Oilway Efineriesray {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SNOWLINE_HEIGHT                              :{LTBLUE}Owsnay inelay eighthay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Oughnessray ofway erraintay (ErraGenesistay onlyway) : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH             :Eryvay Oothsmay
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Oothsmay
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Oughray
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Eryvay Oughray
+STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Eetray acerplay algorithmway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Onenay
+STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Originalway
+STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Improvedway
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION                           :{LTBLUE}Eightmaphay otationray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE         :Ountercay ockwiseclay
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :Ockwiseclay
+STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Ethay eighthay evellay away atflay enarioscay apmay etsgay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Axmay ationstay eadspray: {ORANGE}{STRING} {RED}Arningway: Ighhay ettingsay owsslay amegay
+STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Ervicesay elicoptershay atway elipadshay automaticallyway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Inklay andscapelay oolbartay otay ailray/oadray/aterway/airportway oolbarstay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Everseray ollscray irectionday: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Oothsmay iewportvay ollingscray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Owshay away easurementmay ooltiptay enwhay usingway ariousvay uildbay-oolstay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Owshay ompanycay iverieslay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES_NONE                                :Onenay
+STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Ownway ompanycay
+STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Allway ompaniescay
+STR_CONFIG_PATCHES_PREFER_TEAMCHAT                              :{LTBLUE}Eferpray eamtay atchay ithway <ENTERWAY>: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING                        :{LTBLUE}Unctionfay ofway ollwheelscray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Oomzay apmay
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Ollscray apmay
+STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Offway
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Apmay ollwheelscray eedspay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU                          :{LTBLUE}Ightray-ickclay emulationway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND                  :Ommandcay-ickclay
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL                  :Ontrolcay-ickclay
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF                      :Offway
+
+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_ADVANCED_VEHICLE_LISTS_OFF                   :Offway
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN                   :Ownway ompanycay
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL                   :Allway ompaniescay
+STR_CONFIG_PATCHES_LOADING_INDICATORS                           :{LTBLUE}Useway oadinglay indicatorsway:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF                       :Offway
+STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN                       :Ownway ompanycay
+STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL                       :Allway ompaniescay
+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}
+STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Axmay ipsshay erpay ayerplay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_AI_BUILDS_TRAINS                             :{LTBLUE}Isableday ainstray orfay omputercay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH                            :{LTBLUE}Isableday oadray ehiclesvay orfay omputercay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT                           :{LTBLUE}Isableday aircraftway orfay omputercay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_SHIPS                              :{LTBLUE}Isableday ipsshay orfay omputercay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_AINEW_ACTIVE                                 :{LTBLUE}Enableway ewnay AIWAY (alphaway): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER                            :{LTBLUE}Allowway AIsway inway ultiplayermay (experimentalway): {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_SERVINT_TRAINS                               :{LTBLUE}Efaultday ervicesay intervalway orfay ainstray: {ORANGE}{STRING} aysday/%
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Efaultday ervicesay intervalway orfay ainstray: {ORANGE}isabledday
+STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Efaultday ervicesay intervalway orfay oadray ehiclesvay: {ORANGE}{STRING} aysday/%
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Efaultday ervicesay intervalway orfay oadray ehiclesvay: {ORANGE}isabledday
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Efaultday ervicesay intervalway orfay aircraftway: {ORANGE}{STRING} aysday/%
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Efaultday ervicesay intervalway orfay aircraftway: {ORANGE}isabledday
+STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Efaultday ervicesay intervalway orfay ipsshay: {ORANGE}{STRING} aysday/%
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Efaultday ervicesay intervalway orfay ipsshay: {ORANGE}isabledday
+STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Isableday ervicingsay enwhay eakdownsbray etsay otay onenay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Enableway agonway eedspay imitslay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Isableday electricway ailsray: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Olouredcay ewsnay appearsway inway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STARTING_YEAR                                :{LTBLUE}Artingstay earyay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ENDING_YEAR                                  :{LTBLUE}Endway amegay inway: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Enableway oothsmay economyway (oremay, allersmay angeschay)
+STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Allowway uyingbay aresshay omfray otherway ompaniescay
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Enwhay aggingdray, aceplay ignalssay everyway: {ORANGE}{STRING} iletay(say)
+STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automaticallyway uildbay emaphoressay eforebay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Ethay owntay ayoutlay "onay oremay oadsray" isn'tway alidvay inway ethay enarioscay editorway
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Electsay owntay-oadray ayoutlay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :onay oremay oadsray
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :efaultday
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :etterbay oadsray
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2xay2 idgray
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3xay3 idgray
+
+STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Ositionpay ofway ainmay oolbartay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Eftlay
+STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Entrecay
+STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Ightray
+STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Indowway apsnay adiusray: {ORANGE}{STRING} pxay
+STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Indowway apsnay adiusray: {ORANGE}isabledday
+STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Owntay owthgray eedspay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :Onenay
+STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Owslay
+STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Ormalnay
+STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Astfay
+STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Eryvay astfay
+STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Oportionpray ofway ownstay atthay illway ecomebay itiescay: {ORANGE}1 inway {STRING}
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Oportionpray ofway ownstay atthay illway ecomebay itiescay: {ORANGE}Onenay
+STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Initialway itycay izesay ultipliermay: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_GUI                                          :{BLACK}Interfaceway
+STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Onstructioncay
+STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Ehiclesvay
+STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Ationsstay
+STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Economyway
+STR_CONFIG_PATCHES_AI                                           :{BLACK}Ompetitorscay
+
+STR_CONFIG_PATCHES_DISABLED                                     :isabledday
+STR_CONFIG_PATCHES_INT32                                        :{NUM}
+STR_CONFIG_PATCHES_CURRENCY                                     :{CURRENCY}
+
+STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Angechay ettingsay aluevay
+STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Omesay orway allway ofway ethay efaultday ervicesay intervalway(say) elowbay areway incompatibleway ithway ethay osenchay ettingsay! 5-90% andway 30-800 aysday areway alidvay
+STR_CONFIG_PATCHES_YAPF_SHIPS                                   :{LTBLUE}Useway YAPFay orfay ipsshay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_ROAD                                    :{LTBLUE}Useway YAPFay orfay oadvehsray: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_YAPF_RAIL                                    :{LTBLUE}Useway YAPFay orfay ainstray: {ORANGE}{STRING}
+
+STR_TEMPERATE_LANDSCAPE                                         :Emperatetay andscapelay
+STR_SUB_ARCTIC_LANDSCAPE                                        :Ubsay-arcticway andscapelay
+STR_SUB_TROPICAL_LANDSCAPE                                      :Ubsay-opicaltray andscapelay
+STR_TOYLAND_LANDSCAPE                                           :Oylandtay andscapelay
+
+STR_CHEATS                                                      :{WHITE}Eatschay
+STR_CHEATS_TIP                                                  :{BLACK}Eckboxeschay indicateway ifway ouyay avehay usedway isthay eatchay eforebay
+STR_CHEATS_WARNING                                              :{BLACK}Arningway! Ouyay areway aboutway otay etraybay ouryay ellowfay ompetitorscay. Eepkay inway indmay atthay uchsay away isgraceday illway ebay ememberedray orfay eternityway.
+STR_CHEAT_MONEY                                                 :{LTBLUE}Increaseway oneymay ybay {CURRENCY}
+STR_CHEAT_CHANGE_PLAYER                                         :{LTBLUE}Ayingplay asway ayerplay: {ORANGE}{COMMA}
+STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Agicmay ulldozerbay (emoveray industriesway, unmovablesway): {ORANGE}{STRING}
+STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Unnelstay aymay osscray eachway otherway: {ORANGE}{STRING}
+STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Uildbay ilewhay inway ausepay odemay: {ORANGE}{STRING}
+STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Etplanesjay illway otnay ashcray (equentlyfray) onway allsmay airportsway: {ORANGE} {STRING}
+STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Itchsway imateclay: {ORANGE} {STRING}
+STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Angechay ateday: {ORANGE} {DATE_SHORT}
+STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Enableway odifyingmay oductionpray aluesvay: {ORANGE}{STRING}
+
+STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Eadinghay orfay {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Eadinghay orfay {WAYPOINT}, {VELOCITY}
+
+STR_GO_TO_WAYPOINT                                              :Ogay iavay {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Ogay onnay-opstay iavay {WAYPOINT}
+
+STR_WAYPOINTNAME_CITY                                           :Aypointway {TOWN}
+STR_WAYPOINTNAME_CITY_SERIAL                                    :Aypointway {TOWN} #{COMMA}
+STR_LANDINFO_WAYPOINT                                           :Aypointway
+
+STR_WAYPOINT                                                    :{WHITE}Aypointway
+STR_WAYPOINT_GRAPHICS_TIP                                       :{BLACK}Electsay aypointway ypetay
+
+STR_WAYPOINT_VIEWPORT                                           :{WHITE}{WAYPOINT}
+STR_WAYPOINT_VIEWPORT_TINY                                      :{TINYFONT}{WHITE}{WAYPOINT}
+STR_WAYPOINT_RAW                                                :{WAYPOINT}
+STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Editway aypointway amenay
+
+STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}An'tcay angechay aypointway amenay...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Onvertcay ailray otay aypointway
+STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}An'tcay uildbay aintray aypointway erehay...
+STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}An'tcay emoveray aintray aypointway erehay...
+
+STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Uildbay ailwayray acktray usingway ethay Autorailway odemay
+
+STR_NO_TOWN_IN_SCENARIO                                         :{WHITE}...erethay isway onay owntay inway isthay enarioscay
+
+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                                      :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...
+
+STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Openway ethay andscapinglay oolbartay otay aiseray/owerlay andlay, antplay eestray, etcway.
+STR_LANDSCAPING_TOOLBAR                                         :{WHITE}Andscapinglay
+STR_LEVEL_LAND_TOOLTIP                                          :{BLACK}Evellay andlay
+
+
+STR_TREES_RANDOM_TYPE                                           :{BLACK}Eestray ofway andomray ypetay
+STR_TREES_RANDOM_TYPE_TIP                                       :{BLACK}Aceplay eestray ofway andomray ypetay
+
+STR_CANT_BUILD_CANALS                                           :{WHITE}An'tcay uildbay analscay erehay...
+STR_BUILD_CANALS_TIP                                            :{BLACK}Uildbay analscay.
+STR_LANDINFO_CANAL                                              :Analcay
+
+STR_CANT_BUILD_LOCKS                                            :{WHITE}An'tcay uildbay ockslay erehay...
+STR_BUILD_LOCKS_TIP                                             :{BLACK}Uildbay ockslay
+STR_LANDINFO_LOCK                                               :Ocklay
+
+STR_BUOY_IS_IN_USE                                              :{WHITE}...uoybay isway inway useway!
+
+STR_LANDINFO_COORDS                                             :{BLACK}Oordinatescay: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
+
+STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}An'tcay emoveray artpay ofway ationstay...
+STR_CANT_CONVERT_RAIL                                           :{WHITE}An'tcay onvertcay ailtyperay erehay...
+STR_CONVERT_RAIL_TIP                                            :{BLACK}Onvertcay/Upgradeway ethay ypetay ofway ailray
+
+STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP                                :{BLACK}Agdray aintray engineway erehay otay ellsay ethay olewhay aintray
+
+STR_DRAG_DROP                                                   :{BLACK}Agdray & Opdray
+STR_STATION_DRAG_DROP                                           :{BLACK}Uildbay away ationstay usingway agdray & opdray
+STR_SELECT_STATION_CLASS_TIP                                    :{BLACK}Electsay away ationstay assclay otay isplayday
+STR_SELECT_STATION_TYPE_TIP                                     :{BLACK}Electsay ethay ationstay ypetay otay uildbay
+
+STR_FAST_FORWARD                                                :{BLACK}Astfay orwardfay ethay amegay
+STR_MESSAGE_HISTORY                                             :{WHITE}Essagemay Istoryhay
+STR_MESSAGE_HISTORY_TIP                                         :{BLACK}Away istlay ofway ethay ecentray ewsnay essagesmay
+STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Isableday allway
+STR_MESSAGES_ENABLE_ALL                                         :{BLACK}Enableway allway
+
+STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Onstructcay Oalcay Inemay
+STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Antplay Orestfay
+STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Onstructcay Oilway Igray
+STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Undfay Armfay
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Onstructcay Oppercay Oreway Inemay
+STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Illdray orfay Oilway
+STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Onstructcay Oldgay Inemay
+STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Onstructcay Iamondday Inemay
+STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Onstructcay Ironway Oreway Inemay
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Undfay Uitfray Antationplay
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Undfay Ubberray Antationplay
+STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Undfay Aterway Upplysay
+STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Antplay Andyflosscay Orestfay
+STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Undfay Atterybay Armfay
+STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}Illdray orfay Olacay
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Undfay Asticplay Ountainsfay
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}Onstructcay Ubblebay Eneratorgay
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Undfay Offeetay Arryquay
+STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Onstructcay Ugarsay Inemay
+
+STR_INDUSTRYDIR_CAPTION                                         :{WHITE}Industriesway
+STR_INDUSTRYDIR_ITEM                                            :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% ansportedtray)
+STR_INDUSTRYDIR_ITEM_TWO                                        :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}/{CARGO}){YELLOW} ({COMMA}%/{COMMA}% ansportedtray)
+STR_INDUSTRYDIR_ITEM_NOPROD                                     :{ORANGE}{INDUSTRY}
+
+STR_INDUSTRY_TOO_CLOSE                                          :{WHITE}...ootay oseclay otay anotherway industryway
+
+STR_RAIL_REFIT_VEHICLE_TO_CARRY                                 :{BLACK}Efitray aintray otay arrycay away ifferentday argocay ypetay
+STR_RAIL_REFIT_VEHICLE                                          :{BLACK}Efitray aintray
+STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay aintray otay arrycay
+STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Efitray aintray otay arrycay ighlightedhay argocay ypetay
+STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}An'tcay efitray aintray...
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Ervicesay intervalsway areway inway ercentspay: {ORANGE}{STRING}
+STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Angechay oductionpray
+
+TEMP_AI_IN_PROGRESS                                             :{WHITE}Elcomeway otay ethay ewnay AIWAY underway evelopmentday. Ifway ouyay encounterway oblemspray, aketay away eenshotscray andway ostpay itway inway ethay orumfay.
+TEMP_AI_ACTIVATED                                               :{WHITE}Arningway: isthay ewnay AIWAY isway illstay alphaway! Urrentlycay, onlyway uckstray andway ussesbay orkway!
+TEMP_AI_MULTIPLAYER                                             :{WHITE}Arningway: implementationway isway illstay experimentalway (usingway ewnay AIWAY). Easeplay eportray anyway oblemspray otay uelighttray@openttdway.orgway.
+
+############ network gui strings
+
+STR_NETWORK_MULTIPLAYER                                         :{WHITE}Ultiplayermay
+
+STR_NETWORK_PLAYER_NAME                                         :{BLACK}Ayerplay amenay:
+STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Isthay isway ethay amenay otherway ayersplay illway identifyway ouyay ybay
+STR_NETWORK_CONNECTION                                          :{BLACK}Onnectioncay:
+STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Oosechay etweenbay anway internetway amegay orway away Ocallay Areaway Etworknay (LANay) amegay
+
+STR_NETWORK_START_SERVER                                        :{BLACK}Artstay erversay
+STR_NETWORK_START_SERVER_TIP                                    :{BLACK}Artstay ouryay ownway erversay
+
+STR_NETWORK_GAME_NAME                                           :{BLACK}Amenay
+STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Amenay ofway ethay amegay
+STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Anguagelay, erversay ersionvay, etcway.
+STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Ickclay away amegay omfray ethay istlay otay electsay itway
+
+STR_NETWORK_FIND_SERVER                                         :{BLACK}Indfay erversay
+STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Earchsay etworknay orfay away erversay
+STR_NETWORK_ADD_SERVER                                          :{BLACK}Addway erversay
+STR_NETWORK_ADD_SERVER_TIP                                      :{BLACK}Addsway away erversay otay ethay istlay ichwhay illway alwaysway ebay eckedchay orfay unningray amesgay.
+STR_NETWORK_ENTER_IP                                            :{BLACK}Enterway ethay addressway ofway ethay osthay
+
+STR_NETWORK_GENERAL_ONLINE                                      :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
+STR_NETWORK_CLIENTS_CAPTION                                     :{BLACK}Ientsclay
+STR_NETWORK_CLIENTS_CAPTION_TIP                                 :{BLACK}Ientsclay onlineway / ientsclay axmay{}Ompaniescay onlineway / ompaniescay axmay
+STR_NETWORK_GAME_INFO                                           :{SILVER}EGAMay INFOWAY
+STR_ORANGE                                                      :{ORANGE}{STRING}
+STR_NETWORK_CLIENTS                                             :{SILVER}Ientsclay:  {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
+STR_NETWORK_LANGUAGE                                            :{SILVER}Anguagelay:  {WHITE}{STRING}
+STR_NETWORK_TILESET                                             :{SILVER}Ilesettay:  {WHITE}{STRING}
+STR_NETWORK_MAP_SIZE                                            :{SILVER}Apmay izesay:  {WHITE}{COMMA}xay{COMMA}
+STR_NETWORK_SERVER_VERSION                                      :{SILVER}Erversay ersionvay:  {WHITE}{STRING}
+STR_NETWORK_SERVER_ADDRESS                                      :{SILVER}Erversay addressway:  {WHITE}{STRING} : {NUM}
+STR_NETWORK_START_DATE                                          :{SILVER}Artstay ateday:  {WHITE}{DATE_SHORT}
+STR_NETWORK_CURRENT_DATE                                        :{SILVER}Urrentcay ateday:  {WHITE}{DATE_SHORT}
+STR_NETWORK_PASSWORD                                            :{SILVER}Asswordpay otectedpray!
+STR_NETWORK_SERVER_OFFLINE                                      :{SILVER}ERVERSay OFFLINEWAY
+STR_NETWORK_SERVER_FULL                                         :{SILVER}ERVERSay ULLFay
+STR_NETWORK_VERSION_MISMATCH                                    :{SILVER}ERSIONVay ISMATCHMay
+STR_NETWORK_GRF_MISMATCH                                        :{SILVER}EWGRFNay ISMATCHMay
+
+STR_NETWORK_JOIN_GAME                                           :{BLACK}Oinjay amegay
+
+
+STR_NETWORK_START_GAME_WINDOW                                   :{WHITE}Artstay ewnay ultiplayermay amegay
+
+STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Amegay amenay:
+STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Ethay amegay amenay illway ebay isplayedday otay otherway ayersplay inway ethay ultiplayermay amegay electionsay enumay
+STR_NETWORK_SET_PASSWORD                                        :{BLACK}Etsay asswordpay
+STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Otectpray ouryay amegay ithway away asswordpay ifway ouyay on'tday antway itway otay ebay ubliclypay accessibleway
+STR_NETWORK_SELECT_MAP                                          :{BLACK}Electsay away apmay:
+STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Ichwhay apmay oday ouyay antway otay ayplay?
+STR_NETWORK_LAN_INTERNET_COMBO                                  :{BLACK}{SKIP}{STRING}
+STR_NETWORK_LAN                                                 :LANay
+STR_NETWORK_INTERNET                                            :Internetway
+STR_NETWORK_LAN_INTERNET                                        :LANay / Internetway
+STR_NETWORK_INTERNET_ADVERTISE                                  :Internetway (advertiseway)
+STR_NETWORK_CLIENTS_SELECT                                      :{BLACK}{SKIP}{SKIP}{NUM} ient{P "" s}clay
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Axmay ientsclay:
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Oosechay ethay aximummay umbernay ofway ientsclay. Otnay allway otsslay eednay otay ebay illedfay
+STR_NETWORK_COMPANIES_SELECT                                    :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} ompan{P y ies}cay
+STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Axmay ompaniescay:
+STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ompaniescay
+STR_NETWORK_SPECTATORS_SELECT                                   :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} ectator{P "" s}spay
+STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Axmay ectatorsspay:
+STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Imitlay ethay erversay otay away ertaincay amountway ofway ectatorsspay
+STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Anguagelay okenspay:
+STR_NETWORK_LANGUAGE_TIP                                        :{BLACK}Otherway ayersplay illway owknay ichwhay anguagelay isway okenspay onway ethay erversay
+STR_NETWORK_LANGUAGE_COMBO                                      :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_NETWORK_START_GAME                                          :{BLACK}Artstay Amegay
+STR_NETWORK_START_GAME_TIP                                      :{BLACK}Artstay away ewnay etworknay amegay omfray away andomray apmay, orway enarioscay
+STR_NETWORK_LOAD_GAME                                           :{BLACK}Oadlay Amegay
+STR_NETWORK_LOAD_GAME_TIP                                       :{BLACK}Esumeray anway earlierway avedsay ultiplayermay amegay (ebay uresay otay onnectcay asway ethay orrectcay ayerplay)
+
+############ Leave those lines in this order!!
+STR_NETWORK_LANG_ANY                                            :Anyway
+STR_NETWORK_LANG_ENGLISH                                        :Englishway
+STR_NETWORK_LANG_GERMAN                                         :Ermangay
+STR_NETWORK_LANG_FRENCH                                         :Enchfray
+STR_NETWORK_LANG_BRAZILIAN                                      :Azilianbray
+STR_NETWORK_LANG_BULGARIAN                                      :Ulgarianbay
+STR_NETWORK_LANG_CHINESE                                        :Inesechay
+STR_NETWORK_LANG_CZECH                                          :Echczay
+STR_NETWORK_LANG_DANISH                                         :Anishday
+STR_NETWORK_LANG_DUTCH                                          :Utchday
+STR_NETWORK_LANG_ESPERANTO                                      :Esperantoway
+STR_NETWORK_LANG_FINNISH                                        :Innishfay
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungarianhay
+STR_NETWORK_LANG_ICELANDIC                                      :Icelandicway
+STR_NETWORK_LANG_ITALIAN                                        :Italianway
+STR_NETWORK_LANG_JAPANESE                                       :Apanesejay
+STR_NETWORK_LANG_KOREAN                                         :Oreankay
+STR_NETWORK_LANG_LITHUANIAN                                     :Ithuanianlay
+STR_NETWORK_LANG_NORWEGIAN                                      :Orwegiannay
+STR_NETWORK_LANG_POLISH                                         :Olishpay
+STR_NETWORK_LANG_PORTUGUESE                                     :Ortuguesepay
+STR_NETWORK_LANG_ROMANIAN                                       :Omanianray
+STR_NETWORK_LANG_RUSSIAN                                        :Ussianray
+STR_NETWORK_LANG_SLOVAK                                         :Ovakslay
+STR_NETWORK_LANG_SLOVENIAN                                      :Ovenianslay
+STR_NETWORK_LANG_SPANISH                                        :Anishspay
+STR_NETWORK_LANG_SWEDISH                                        :Edishsway
+STR_NETWORK_LANG_TURKISH                                        :Urkishtay
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainianway
+############ End of leave-in-this-order
+
+STR_NETWORK_GAME_LOBBY                                          :{WHITE}Ultiplayermay amegay obbylay
+
+STR_NETWORK_PREPARE_TO_JOIN                                     :{BLACK}Eparingpray otay oinjay:   {ORANGE}{STRING}
+STR_NETWORK_COMPANY_LIST_TIP                                    :{BLACK}Away istlay ofway allway ompaniescay urrentlycay inway isthay amegay. Ouyay ancay eitherway oinjay oneway orway artstay away ewnay oneway ifway erethay isway away eefray ompanycay otslay
+STR_NETWORK_NEW_COMPANY                                         :{BLACK}Ewnay ompanycay
+STR_NETWORK_NEW_COMPANY_TIP                                     :{BLACK}Eatecray away ewnay ompanycay
+STR_NETWORK_SPECTATE_GAME                                       :{BLACK}Ectatespay amegay
+STR_NETWORK_SPECTATE_GAME_TIP                                   :{BLACK}Atchway ethay amegay asway away ectatorspay
+STR_NETWORK_JOIN_COMPANY                                        :{BLACK}Oinjay ompanycay
+STR_NETWORK_JOIN_COMPANY_TIP                                    :{BLACK}Elphay anagemay isthay ompanycay
+STR_NETWORK_REFRESH                                             :{BLACK}Efreshray erversay
+STR_NETWORK_REFRESH_TIP                                         :{BLACK}Efreshray ethay erversay infoway
+
+STR_NETWORK_COMPANY_INFO                                        :{SILVER}OMPANYCay INFOWAY
+
+STR_NETWORK_COMPANY_NAME                                        :{SILVER}Ompanycay amenay:  {WHITE}{STRING}
+STR_NETWORK_INAUGURATION_YEAR                                   :{SILVER}Inaugurationway:  {WHITE}{NUM}
+STR_NETWORK_VALUE                                               :{SILVER}Ompanycay aluevay:  {WHITE}{CURRENCY}
+STR_NETWORK_CURRENT_BALANCE                                     :{SILVER}Urrentcay alancebay:  {WHITE}{CURRENCY}
+STR_NETWORK_LAST_YEARS_INCOME                                   :{SILVER}Astlay ear'syay incomeway:  {WHITE}{CURRENCY}
+STR_NETWORK_PERFORMANCE                                         :{SILVER}Erformancepay:  {WHITE}{NUM}
+
+STR_NETWORK_VEHICLES                                            :{SILVER}Ehiclesvay:  {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
+STR_NETWORK_STATIONS                                            :{SILVER}Ationsstay:  {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
+STR_NETWORK_PLAYERS                                             :{SILVER}Ayersplay:  {WHITE}{STRING}
+
+STR_NETWORK_CONNECTING                                          :{WHITE}Onnectingcay...
+
+############ Leave those lines in this order!!
+STR_NETWORK_CONNECTING_1                                        :{BLACK}(1/6) Onnectingcay..
+STR_NETWORK_CONNECTING_2                                        :{BLACK}(2/6) Authorisingway..
+STR_NETWORK_CONNECTING_3                                        :{BLACK}(3/6) Aitingway..
+STR_NETWORK_CONNECTING_4                                        :{BLACK}(4/6) Ownloadingday apmay..
+STR_NETWORK_CONNECTING_5                                        :{BLACK}(5/6) Ocessingpray ataday..
+STR_NETWORK_CONNECTING_6                                        :{BLACK}(6/6) Egisteringray..
+
+STR_NETWORK_CONNECTING_SPECIAL_1                                :{BLACK}Etchingfay amegay infoway..
+STR_NETWORK_CONNECTING_SPECIAL_2                                :{BLACK}Etchingfay ompanycay infoway..
+############ End of leave-in-this-order
+STR_NETWORK_CONNECTING_WAITING                                  :{BLACK}{NUM} ient{P "" s}clay inway ontfray ofway ouyay
+STR_NETWORK_CONNECTING_DOWNLOADING                              :{BLACK}{NUM} / {NUM} yteskbay ownloadedday osay arfay
+
+STR_NETWORK_DISCONNECT                                          :{BLACK}Isconnectday
+
+STR_NETWORK_GIVE_MONEY_CAPTION                                  :{WHITE}Enterway ethay amountway ofway oneymay ouyay antway otay ivegay
+STR_NETWORK_NEED_GAME_PASSWORD_CAPTION                          :{WHITE}Erversay isway otectedpray. Enterway asswordpay
+STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION                       :{WHITE}Ompanycay isway otectedpray. Enterway asswordpay
+STR_NETWORK_CLIENT_LIST                                         :{WHITE}Ientclay Istlay
+
+STR_NETWORK_ERR_NOTAVAILABLE                                    :{WHITE} Onay etworknay evicesday oundfay orway ompiledcay ithoutway ENABLEWAY_ETWORKNay
+STR_NETWORK_ERR_NOSERVER                                        :{WHITE} Ouldcay otnay indfay anyway etworknay amesgay
+STR_NETWORK_ERR_NOCONNECTION                                    :{WHITE} Ethay erversay idn'tday answerway ethay equestray
+STR_NETWORK_ERR_NEWGRF_MISMATCH                                 :{WHITE} Ouldcay otnay onnectcay ueday otay EwGRFnay ismatchmay
+STR_NETWORK_ERR_DESYNC                                          :{WHITE} Etworknay-Amegay ynchronisationsay ailedfay
+STR_NETWORK_ERR_LOSTCONNECTION                                  :{WHITE} Etworknay-Amegay onnectioncay ostlay
+STR_NETWORK_ERR_SAVEGAMEERROR                                   :{WHITE} Ouldcay otnay oadlay avegamesay
+STR_NETWORK_ERR_SERVER_START                                    :{WHITE} Ouldcay otnay artstay ethay erversay
+STR_NETWORK_ERR_CLIENT_START                                    :{WHITE} Ouldcay otnay onnectcay
+STR_NETWORK_ERR_TIMEOUT                                         :{WHITE} Onnectioncay #{NUM} imedtay outway
+STR_NETWORK_ERR_SERVER_ERROR                                    :{WHITE} Away otocolpray-errorway asway ademay andway ethay onnectioncay asway osedclay
+STR_NETWORK_ERR_WRONG_REVISION                                  :{WHITE} Ethay evisionray ofway isthay ientclay oesday otnay atchmay ethay erver'ssay evisionray
+STR_NETWORK_ERR_WRONG_PASSWORD                                  :{WHITE} Ongwray asswordpay
+STR_NETWORK_ERR_SERVER_FULL                                     :{WHITE} Ethay erversay isway ullfay
+STR_NETWORK_ERR_SERVER_BANNED                                   :{WHITE} Ouyay areway annedbay omfray isthay erversay
+STR_NETWORK_ERR_KICKED                                          :{WHITE} Ouyay ereway ickedkay outway ofway ethay amegay
+STR_NETWORK_ERR_CHEATER                                         :{WHITE} Eatingchay isway otnay allowedway onway isthay erversay
+
+STR_NETWORK_ERR_LEFT                                            :ashay eftlay ethay amegay
+############ Leave those lines in this order!!
+STR_NETWORK_ERR_CLIENT_GENERAL                                  :eneralgay errorway
+STR_NETWORK_ERR_CLIENT_DESYNC                                   :esyncday errorway
+STR_NETWORK_ERR_CLIENT_SAVEGAME                                 :ouldcay otnay oadlay apmay
+STR_NETWORK_ERR_CLIENT_CONNECTION_LOST                          :onnectioncay ostlay
+STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR                           :otocolpray errorway
+STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH                          :EwGRFnay ismatchmay
+STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED                           :otnay authorizedway
+STR_NETWORK_ERR_CLIENT_NOT_EXPECTED                             :eceivedray angestray acketpay
+STR_NETWORK_ERR_CLIENT_WRONG_REVISION                           :ongwray evisionray
+STR_NETWORK_ERR_CLIENT_NAME_IN_USE                              :amenay alreadyway inway useway
+STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD                           :ongwray asswordpay
+STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH                          :ongwray ayerplay-idway inway OCommandday
+STR_NETWORK_ERR_CLIENT_KICKED                                   :ickedkay ybay erversay
+STR_NETWORK_ERR_CLIENT_CHEATER                                  :asway yingtray otay useway away eatchay
+STR_NETWORK_ERR_CLIENT_SERVER_FULL                              :erversay ullfay
+############ End of leave-in-this-order
+STR_NETWORK_CLIENT_JOINED                                       :ashay oinedjay ethay amegay
+STR_NETWORK_GIVE_MONEY                                          :avegay ouryay ompanycay omesay oneymay ({CURRENCY})
+STR_NETWORK_GAVE_MONEY_AWAY                                     :ouyay avegay {STRING} omesay oneymay ({CURRENCY})
+STR_NETWORK_CHAT_COMPANY_CAPTION                                :[Eamtay] :
+STR_NETWORK_CHAT_COMPANY                                        :[Eamtay] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_TO_COMPANY                                     :[Eamtay] Otay {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_CLIENT_CAPTION                                 :[Ivatepray] :
+STR_NETWORK_CHAT_CLIENT                                         :[Ivatepray] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_TO_CLIENT                                      :[Ivatepray] Otay {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_ALL_CAPTION                                    :[Allway] :
+STR_NETWORK_CHAT_ALL                                            :[Allway] {STRING}: {GRAY}{STRING}
+STR_NETWORK_NAME_CHANGE                                         :ashay angedchay ishay/erhay amenay otay
+STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} Ethay erversay osedclay ethay essionsay
+STR_NETWORK_SERVER_REBOOT                                       :{WHITE} Ethay erversay isway estartingray...{}Easeplay aitway...
+
+STR_NETWORK_SERVER                                              :Erversay
+STR_NETWORK_CLIENT                                              :Ientclay
+STR_NETWORK_SPECTATORS                                          :Ectatorsspay
+
+STR_NETWORK_CLIENTLIST_NONE                                     :(onenay)
+STR_NETWORK_CLIENTLIST_KICK                                     :Ickkay
+STR_NETWORK_CLIENTLIST_GIVE_MONEY                               :Ivegay oneymay
+STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL                             :Eakspay otay allway
+STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY                         :Eakspay otay ompanycay
+STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT                          :Ivatepray essagemay
+
+
+STR_NETWORK_SEND                                                :{BLACK}Endsay
+
+############ end network gui strings
+
+
+STR_CONFIG_PATCHES_MAP_X                                        :{LTBLUE}Xay-izesay ofway apmay: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAP_Y                                        :{LTBLUE}Yay-izesay ofway apmay: {ORANGE}{STRING}
+
+
+##### PNG-MAP-Loader
+
+STR_PNGMAP_ERROR                                                :{WHITE}Annotcay oadlay andscapelay omfray PNGay...
+STR_PNGMAP_ERR_FILE_NOT_FOUND                                   :{WHITE}...ilefay otnay oundfay.
+STR_PNGMAP_ERR_IMAGE_TYPE                                       :{WHITE}...ouldcay otnay onvertcay imageway ypetay. 8 orway 24-itbay PNGay imageway eedednay.
+STR_PNGMAP_ERR_MISC                                             :{WHITE}...omethingsay ustjay entway ongwray. Orrysay. (obablypray orruptedcay ilefay)
+
+STR_BMPMAP_ERROR                                                :{WHITE}Annotcay oadlay andscapelay omfray BMPay...
+STR_BMPMAP_ERR_IMAGE_TYPE                                       :{WHITE}...ouldcay otnay onvertcay imageway ypetay.
+
+##id 0x0800
+STR_0800_COST                                                   :{TINYFONT}{RED}Ostcay: {CURRENCY}
+STR_0801_COST                                                   :{RED}Ostcay: {CURRENCY}
+STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Incomeway: {CURRENCY}
+STR_0803_INCOME                                                 :{GREEN}Incomeway: {CURRENCY}
+STR_FEEDER_TINY                                                 :{TINYFONT}{YELLOW}Ansfertray: {CURRENCY}
+STR_FEEDER                                                      :{YELLOW}Ansfertray: {CURRENCY}
+STR_0805_ESTIMATED_COST                                         :{WHITE}Estimatedway Ostcay: {CURRENCY}
+STR_0807_ESTIMATED_INCOME                                       :{WHITE}Estimatedway Incomeway: {CURRENCY}
+STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}An'tcay aiseray andlay erehay...
+STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}An'tcay owerlay andlay erehay...
+STR_080A_ROCKS                                                  :Ocksray
+STR_080B_ROUGH_LAND                                             :Oughray andlay
+STR_080C_BARE_LAND                                              :Arebay andlay
+STR_080D_GRASS                                                  :Assgray
+STR_080E_FIELDS                                                 :Ieldsfay
+STR_080F_SNOW_COVERED_LAND                                      :Owsnay-overedcay andlay
+STR_0810_DESERT                                                 :Esertday
+
+##id 0x1000
+STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION                         :{WHITE}Andlay opedslay inway ongwray irectionday
+STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Impossibleway acktray ombinationcay
+STR_1002_EXCAVATION_WOULD_DAMAGE                                :{WHITE}Excavationway ouldway amageday unneltay
+STR_1003_ALREADY_AT_SEA_LEVEL                                   :{WHITE}Alreadyway atway easay-evellay
+STR_1004_TOO_HIGH                                               :{WHITE}Ootay ighhay
+STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Onay uitablesay ailwayray acktray
+STR_1007_ALREADY_BUILT                                          :{WHITE}...alreadyway uiltbay
+STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Ustmay emoveray ailwayray acktray irstfay
+STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Ailwayray Onstructioncay
+STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Electrifiedway Ailwayray Onstructioncay
+STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Onorailmay Onstructioncay
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}AgLevmay Onstructioncay
+STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Electsay Ailray Idgebray
+STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}An'tcay uildbay aintray epotday erehay...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}An'tcay uildbay ailwayray ationstay erehay...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}An'tcay uildbay ignalssay erehay...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}An'tcay uildbay ailwayray acktray erehay...
+STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}An'tcay emoveray ailwayray acktray omfray erehay...
+STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}An'tcay emoveray ignalssay omfray erehay...
+STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Aintray Epotday Orientationway
+STR_1015_RAILROAD_CONSTRUCTION                                  :Ailwayray onstructioncay
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Electrifiedway Ailwayray onstructioncay
+STR_1016_MONORAIL_CONSTRUCTION                                  :Onorailmay onstructioncay
+STR_1017_MAGLEV_CONSTRUCTION                                    :AgLevmay onstructioncay
+STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Uildbay ailwayray acktray
+STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Uildbay aintray epotday (orfay uildingbay andway ervicingsay ainstray)
+STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Uildbay ailwayray ationstay
+STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Uildbay ailwayray ignalssay
+STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Uildbay ailwayray idgebray
+STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}Uildbay ailwayray unneltay
+STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Oggletay uildbay/emoveray orfay ailwayray acktray andway ignalssay
+STR_101F_BRIDGE_SELECTION_CLICK                                 :{BLACK}Idgebray electionsay - ickclay onway ouryay eferedpray idgebray otay uildbay itway
+STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO                       :{BLACK}Electsay ailwayray epotday orientationway
+STR_1021_RAILROAD_TRACK                                         :Ailwayray acktray
+STR_1023_RAILROAD_TRAIN_DEPOT                                   :Ailwayray aintray epotday
+STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...areaway isway ownedway ybay anotherway ompanycay
+STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Ailwayray acktray ithway ormalnay ignalssay
+STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ailwayray acktray ithway epray-ignalssay
+STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ailwayray acktray ithway exitway-ignalssay
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ailwayray acktray ithway ombocay-ignalssay
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Ailwayray acktray ithway ormalnay andway epray-ignalssay
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Ailwayray acktray ithway ormalnay andway exitway-ignalssay
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Ailwayray acktray ithway ormalnay andway ombocay-ignalssay
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Ailwayray acktray ithway epray- andway exitway-ignalssay
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ailwayray acktray ithway epray- andway ombocay-ignalssay
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ailwayray acktray ithway exitway- andway ombocay-ignalssay
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Ustmay emoveray ailwayray ationstay irstfay
+
+
+
+##id 0x1800
+STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Ustmay emoveray oadray irstfay
+STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Oadray orksway inway ogresspray
+STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Oadray Onstructioncay
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Amwaytray Onstructioncay
+STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Electsay Oadray Idgebray
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... oneway ayway oadsray an'tcay avehay unctionsjay
+STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}An'tcay uildbay oadray erehay...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}An'tcay uildbay amwaytray erehay...
+STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}An'tcay emoveray oadray omfray erehay...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}An'tcay emoveray amwaytray omfray erehay...
+STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Oadray Epotday Orientationway
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Amtray Epotday Orientationway
+STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}An'tcay uildbay oadray ehiclevay epotday erehay...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}An'tcay uildbay amtray ehiclevay epotday erehay...
+STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}An'tcay uildbay usbay ationstay...
+STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}An'tcay uildbay orrylay ationstay...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}An'tcay uildbay assengerpay amtray ationstay...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}An'tcay uildbay eightfray amtray ationstay...
+STR_180A_ROAD_CONSTRUCTION                                      :Oadray onstructioncay
+STR_TRAMWAY_CONSTRUCTION                                        :Amwaytray onstructioncay
+STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Uildbay oadray ectionsay
+STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Uildbay oadray ectionsay usingway ethay Autoroadway odemay
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Uildbay amwaytray ectionsay
+STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Uildbay amwaytray ectionsay usingway ethay Autotramway odemay
+STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Uildbay oadray ehiclevay epotday (orfay uildingbay andway ervicingsay ehiclesvay)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Uildbay amtray ehiclevay epotday (orfay uildingbay andway ervicingsay ehiclesvay)
+STR_180D_BUILD_BUS_STATION                                      :{BLACK}Uildbay usbay ationstay
+STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Uildbay orrylay oadinglay aybay
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Uildbay assengerpay amtray ationstay
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Uildbay eightfray amtray ationstay
+STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Uildbay oadray idgebray
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Uildbay amwaytray idgebray
+STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Uildbay oadray unneltay
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Uildbay amwaytray unneltay
+STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activateway/Eactivateday oneway ayway oadsray
+STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Oggletay uildbay/emoveray orfay oadray onstructioncay
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Oggletay uildbay/emoveray orfay amwaytray onstructioncay
+STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Electsay oadray ehiclevay epotday orientationway
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Electsay amtray ehiclevay epotday orientationway
+STR_1814_ROAD                                                   :Oadray
+STR_1815_ROAD_WITH_STREETLIGHTS                                 :Oadray ithway eetlightsstray
+STR_1816_TREE_LINED_ROAD                                        :Eetray-inedlay oadray
+STR_1817_ROAD_VEHICLE_DEPOT                                     :Oadray ehiclevay epotday
+STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Oadray/ailray evellay ossingcray
+STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}An'tcay emoveray usbay ationstay...
+STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}An'tcay emoveray orrylay ationstay...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}An'tcay emoveray assengerpay amtray ationstay...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}An'tcay emoveray eightfray amtray ationstay...
+
+##id 0x2000
+STR_2000_TOWNS                                                  :{WHITE}Ownstay
+STR_TOWN_LABEL_POP                                              :{WHITE}{TOWN} ({COMMA})
+STR_TOWN_LABEL                                                  :{WHITE}{TOWN}
+STR_TOWN_LABEL_TINY_BLACK                                       :{TINYFONT}{BLACK}{TOWN}
+STR_TOWN_LABEL_TINY_WHITE                                       :{TINYFONT}{WHITE}{TOWN}
+STR_2002                                                        :{TINYFONT}{BLACK}{SIGN}
+STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
+STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Uildingbay ustmay ebay emolishedday irstfay
+STR_2005                                                        :{WHITE}{TOWN}
+STR_2006_POPULATION                                             :{BLACK}Opulationpay: {ORANGE}{COMMA}{BLACK}  Ouseshay: {ORANGE}{COMMA}
+STR_2007_RENAME_TOWN                                            :Enameray Owntay
+STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}An'tcay enameray owntay...
+STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} ocallay authorityway efusesray otay allowway isthay
+STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Owntay amesnay - ickclay onway amenay otay entrecay iewvay onway owntay
+STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Entrecay ethay ainmay iewvay onway owntay ocationlay
+STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Angechay owntay amenay
+STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Assengerspay astlay onthmay: {ORANGE}{COMMA}{BLACK}  axmay: {ORANGE}{COMMA}
+STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Ailmay astlay onthmay: {ORANGE}{COMMA}{BLACK}  axmay: {ORANGE}{COMMA}
+STR_200F_TALL_OFFICE_BLOCK                                      :Alltay officeway ockblay
+STR_2010_OFFICE_BLOCK                                           :Officeway ockblay
+STR_2011_SMALL_BLOCK_OF_FLATS                                   :Allsmay ockblay ofway atsflay
+STR_2012_CHURCH                                                 :Urchchay
+STR_2013_LARGE_OFFICE_BLOCK                                     :Argelay officeway ockblay
+STR_2014_TOWN_HOUSES                                            :Owntay ouseshay
+STR_2015_HOTEL                                                  :Otelhay
+STR_2016_STATUE                                                 :Atuestay
+STR_2017_FOUNTAIN                                               :Ountainfay
+STR_2018_PARK                                                   :Arkpay
+STR_2019_OFFICE_BLOCK                                           :Officeway ockblay
+STR_201A_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
+STR_201B_MODERN_OFFICE_BUILDING                                 :Odernmay officeway uildingbay
+STR_201C_WAREHOUSE                                              :Arehouseway
+STR_201D_OFFICE_BLOCK                                           :Officeway ockblay
+STR_201E_STADIUM                                                :Adiumstay
+STR_201F_OLD_HOUSES                                             :Oldway ouseshay
+STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Ocallay authorityway
+STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Owshay informationway onway ocallay authorityway
+STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} ocallay authorityway
+STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Ansporttray ompanycay atingsray:
+STR_2024                                                        :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
+STR_2025_SUBSIDIES                                              :{WHITE}Ubsidiessay
+STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Ubsidiessay onway offerway orfay ervicessay akingtay:
+STR_2027_FROM_TO                                                :{ORANGE}{STRING} omfray {STRING} otay {STRING}
+STR_2028_BY                                                     :{YELLOW} (ybay {DATE_SHORT})
+STR_202A_NONE                                                   :{ORANGE}Onenay
+STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Ervicessay alreadyway ubsidisedsay:
+STR_202C_FROM_TO                                                :{ORANGE}{STRING} omfray {STATION} otay {STATION}{YELLOW} ({COMPANY}
+STR_202D_UNTIL                                                  :{YELLOW}, untilway {DATE_SHORT})
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Offerway ofway ubsidysay expiredway:{}{}{STRING} omfray {STRING} otay {STRING} illway ownay otnay attractway away ubsidysay.
+STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Ubsidysay ithdrawnway:{}{}{STRING} ervicesay omfray {STATION} otay {STATION} isway onay ongerlay ubsidisedsay.
+STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay offeredway:{}{}Irstfay {STRING} ervicesay omfray {STRING} otay {STRING} illway attractway away ear'syay ubsidysay omfray ethay ocallay authorityway!
+STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay 50% extraway orfay ethay extnay earyay!
+STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay oubleday atesray orfay ethay extnay earyay!
+STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay ipletray atesray orfay ethay extnay earyay!
+STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Ervicesay ubsidysay awardedway otay {COMPANY}!{}{}{STRING} ervicesay omfray {STATION} otay {STATION} illway aypay adruplequay atesray orfay ethay extnay earyay!
+STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} ocallay authorityway efusesray otay allowway anotherway airportway otay ebay uiltbay inway isthay owntay
+STR_2036_COTTAGES                                               :Ottagescay
+STR_2037_HOUSES                                                 :Ouseshay
+STR_2038_FLATS                                                  :Atsflay
+STR_2039_TALL_OFFICE_BLOCK                                      :Alltay officeway ockblay
+STR_203A_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
+STR_203B_SHOPS_AND_OFFICES                                      :Opsshay andway officesway
+STR_203C_THEATER                                                :Eatrethay
+STR_203D_STADIUM                                                :Adiumstay
+STR_203E_OFFICES                                                :Officesway
+STR_203F_HOUSES                                                 :Ouseshay
+STR_2040_CINEMA                                                 :Inemacay
+STR_2041_SHOPPING_MALL                                          :Oppingshay allmay
+STR_2042_DO_IT                                                  :{BLACK}Oday itway
+STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Istlay ofway ingsthay otay oday atway isthay owntay - ickclay onway itemway orfay oremay etailsday
+STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Arrycay outway ethay ighlightedhay actionway inway ethay istlay aboveway
+STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Actionsway availableway:
+STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Allsmay advertisingway ampaigncay
+STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Ediummay advertisingway ampaigncay
+STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Argelay advertisingway ampaigncay
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Undfay ocallay oadray econstructionray
+STR_204A_BUILD_STATUE_OF_COMPANY                                :Uildbay atuestay ofway ompanycay ownerway
+STR_204B_FUND_NEW_BUILDINGS                                     :Undfay ewnay uildingsbay
+STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Uybay exclusiveway ansporttray ightsray
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Ibebray ethay ocallay authorityway
+STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiateway away allsmay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
+STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Initiateway away ediummay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
+STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiateway away argelay ocallay advertisingway ampaigncay, otay attractway oremay assengerspay andway argocay otay ouryay ansporttray ervicessay.{}  Ostcay: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Undfay ethay econstructionray ofway ethay urbanway oadray etworknay. Ausescay onsiderablecay isruptionday otay oadray affictray orfay upway otay 6 onthsmay.{}  Ostcay: {CURRENCY}
+STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Uildbay away atuestay inway onourhay ofway ouryay ompanycay.{} Ostcay: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Undfay ethay onstructioncay ofway ewnay ommercialcay uildingsbay inway ethay owntay.{}  Ostcay: {CURRENCY}
+STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Uybay 1 ear'syay exclusiveway ansporttray ightsray inway owntay. Owntay authorityway illway onlyway allowway assengerspay andway argocay otay useway ouryay ompany'scay ationsstay.{} Ostcay: {CURRENCY}
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Ibebray ethay ocallay authorityway otay increaseway ouryay atingray, atway ethay iskray ofway away everesay enaltypay ifway aughtcay.{}  Ostcay: {CURRENCY}
+STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Affictray aoschay inway {TOWN}!{}{}Oadray ebuildingray ogrammepray undedfay ybay {COMPANY} ingsbray 6 onthsmay ofway iserymay otay otoristsmay!
+STR_2056                                                        :{TINYFONT}{WHITE}{TOWN}
+STR_2057                                                        :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_2058_UNDER_CONSTRUCTION                                     :{STRING} (underway onstructioncay)
+STR_2059_IGLOO                                                  :Iglooway
+STR_205A_TEPEES                                                 :Epeestay
+STR_205B_TEAPOT_HOUSE                                           :Eapottay-Ousehay
+STR_205C_PIGGY_BANK                                             :Iggypay-Ankbay
+
+STR_INDUSTRY                                                    :{INDUSTRY}
+STR_TOWN                                                        :{TOWN}
+STR_INDUSTRY_FORMAT                                             :{TOWN} {STRING}
+STR_STATION                                                     :{STATION}
+
+##id 0x2800
+STR_LANDSCAPING                                                 :Andscapinglay
+STR_2800_PLANT_TREES                                            :Antplay eestray
+STR_2801_PLACE_SIGN                                             :Aceplay ignsay
+STR_2802_TREES                                                  :{WHITE}Eestray
+STR_2803_TREE_ALREADY_HERE                                      :{WHITE}...eetray alreadyway erehay
+STR_2804_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
+STR_2805_CAN_T_PLANT_TREE_HERE                                  :{WHITE}An'tcay antplay eetray erehay...
+STR_2806                                                        :{WHITE}{SIGN}
+STR_2808_TOO_MANY_SIGNS                                         :{WHITE}...ootay anymay ignssay
+STR_2809_CAN_T_PLACE_SIGN_HERE                                  :{WHITE}An'tcay aceplay ignsay erehay...
+STR_280A_SIGN                                                   :Ignsay
+STR_280B_EDIT_SIGN_TEXT                                         :{WHITE}Editway ignsay exttay
+STR_280C_CAN_T_CHANGE_SIGN_NAME                                 :{WHITE}An'tcay angechay ignsay amenay...
+STR_280D_SELECT_TREE_TYPE_TO_PLANT                              :{BLACK}Electsay eetray ypetay otay antplay
+STR_280E_TREES                                                  :Eestray
+STR_280F_RAINFOREST                                             :Ainforestray
+STR_2810_CACTUS_PLANTS                                          :Actuscay Antsplay
+
+##id 0x3000
+STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Ailray Ationstay Electionsay
+STR_3001_AIRPORT_SELECTION                                      :{WHITE}Airportway Electionsay
+STR_3002_ORIENTATION                                            :{BLACK}Orientationway
+STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Umbernay ofway ackstray
+STR_3004_PLATFORM_LENGTH                                        :{BLACK}Atformplay engthlay
+STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Ootay oseclay otay anotherway ailwayray ationstay
+STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Adjoinsway oremay anthay oneway existingway ationstay/oadinglay areaway
+STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Ootay anymay ationsstay/oadinglay areasway inway isthay owntay
+STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Ootay anymay ationsstay/oadinglay areasway
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Ootay anymay usbay opsstay
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Ootay anymay orrylay ationsstay
+STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Ootay oseclay otay anotherway ationstay/oadinglay areaway
+STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
+STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Ustmay emolishday ailwayray ationstay irstfay
+STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Ootay oseclay otay anotherway airportway
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Ustmay emolishday airportway irstfay
+
+STR_3030_RENAME_STATION_LOADING                                 :Enameray ationstay/oadinglay areaway
+STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}An'tcay enameray ationstay...
+STR_3032_RATINGS                                                :{BLACK}Atingsray
+STR_3033_ACCEPTS                                                :{BLACK}Acceptsway
+STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Ocallay atingray ofway ansporttray ervicesay:
+
+############ range for rating starts
+STR_3035_APPALLING                                              :Appallingway
+STR_3036_VERY_POOR                                              :Eryvay Oorpay
+STR_3037_POOR                                                   :Oorpay
+STR_3038_MEDIOCRE                                               :Ediocremay
+STR_3039_GOOD                                                   :Oodgay
+STR_303A_VERY_GOOD                                              :Eryvay Oodgay
+STR_303B_EXCELLENT                                              :Excellentway
+STR_303C_OUTSTANDING                                            :Outstandingway
+############ range for rating ends
+
+STR_303D                                                        :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
+STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} onay ongerlay acceptsway {STRING}
+STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} onay ongerlay acceptsway {STRING} orway {STRING}
+STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} ownay acceptsway {STRING}
+STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} ownay acceptsway {STRING} andway {STRING}
+STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Usbay Ationstay Orientationway
+STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orrylay Ationstay Orientationway
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Assengerpay Amtray Orientationway
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Eightfray Amtray Orientationway
+STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Ustmay emolishday usbay ationstay irstfay
+STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Ustmay emolishday orrylay ationstay irstfay
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Ustmay emolishday assengerpay amtray ationstay irstfay
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Ustmay emolishday eightfray amtray ationstay irstfay
+STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Ation{P "" s}stay
+STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
+STR_304A_NONE                                                   :{YELLOW}- Onenay -
+STR_304B_SITE_UNSUITABLE                                        :{WHITE}...itesay unsuitableway
+STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Ootay oseclay otay anotherway ockday
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Ustmay emolishday ockday irstfay
+STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Electsay ailwayray ationstay orientationway
+STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Electsay umbernay ofway atformsplay orfay ailwayray ationstay
+STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Electsay engthlay ofway ailwayray ationstay
+STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Electsay usbay ationstay orientationway
+STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Electsay orrylay oadinglay aybay orientationway
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Electsay assengerpay amtray ationstay orientationway
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Electsay eightfray amtray ationstay orientationway
+STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Entrecay ainmay iewvay onway ationstay ocationlay
+STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Owshay ationstay atingsray
+STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Angechay amenay ofway ationstay
+STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Owshay istlay ofway acceptedway argocay
+STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Ationstay amesnay - ickclay onway amenay otay entrecay ainmay iewvay onway ationstay
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Electsay izesay/ypetay ofway airportway
+STR_305C_0                                                      :{STATION} {STATIONFEATURES}
+STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
+STR_305E_RAILROAD_STATION                                       :Ailwayray ationstay
+STR_305F_AIRCRAFT_HANGAR                                        :Aircraftway angarhay
+STR_3060_AIRPORT                                                :Airportway
+STR_3061_TRUCK_LOADING_AREA                                     :Orrylay oadinglay areaway
+STR_3062_BUS_STATION                                            :Usbay ationstay
+STR_3063_SHIP_DOCK                                              :Ipshay ockday
+STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Ighlighthay overagecay areaway ofway oposedpray itesay
+STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}On'tday ighlighthay overagecay areaway ofway oposedpray itesay
+STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Overagecay areaway ighlighthay
+STR_3068_DOCK                                                   :{WHITE}Ockday
+STR_3069_BUOY                                                   :Uoybay
+STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...uoybay inway ethay ayway
+STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...ationstay ootay eadspray outway
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...onuniformnay ationsstay isabledday
+STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Oldhay ownday CTRLay otay electsay oremay anthay oneway itemway
+
+STR_UNDEFINED                                                   :(undefinedway ingstray)
+STR_STAT_CLASS_DFLT                                             :Efaultday ationstay
+STR_STAT_CLASS_WAYP                                             :Aypointsway
+
+##id 0x3800
+STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Ipshay Epotday Orientationway
+STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...ustmay ebay uiltbay onway aterway
+STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}An'tcay uildbay ipshay epotday erehay...
+STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Electsay ipshay epotday orientationway
+STR_3804_WATER                                                  :Aterway
+STR_3805_COAST_OR_RIVERBANK                                     :Oastcay orway iverbankray
+STR_3806_SHIP_DEPOT                                             :Ipshay epotday
+STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...An'tcay uildbay onway aterway
+STR_MUST_DEMOLISH_CANAL_FIRST                                   :{WHITE}Ustmay emolishday analcay irstfay
+
+##id 0x4000
+STR_4000_SAVE_GAME                                              :{WHITE}Avesay Amegay
+STR_4001_LOAD_GAME                                              :{WHITE}Oadlay Amegay
+STR_4002_SAVE                                                   :{BLACK}Avesay
+STR_4003_DELETE                                                 :{BLACK}Eleteday
+STR_4004                                                        :{COMPANY}, {DATE_LONG}
+STR_4005_BYTES_FREE                                             :{BLACK}{COMMA} egabyte{P "" s}may eefray
+STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Unableway otay eadray ivedray
+STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Amegay Avesay Ailedfay{}{STRING}
+STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Unableway otay eleteday ilefay
+STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Amegay Oadlay Ailedfay{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR                   :Internalway errorway: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME                         :Okenbray avegamesay - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME                        :Avegamesay isway ademay ithway ewernay ersionvay
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE                       :Ilefay otnay eadableray
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE                      :Ilefay otnay iteablewray
+STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Istlay ofway ivesdray, irectoriesday andway avedsay-amegay ilesfay
+STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Urrentlycay electedsay amenay orfay avedsay-amegay
+STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Eleteday ethay urrentlycay electedsay avedsay-amegay
+STR_400D_SAVE_THE_CURRENT_GAME_USING                            :{BLACK}Avesay ethay urrentcay amegay, usingway ethay electedsay amenay
+STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Electsay Ewnay Amegay Ypetay
+STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Electsay enarioscay (eengray), epray-etsay amegay (ueblay), orway andomray ewnay amegay
+STR_4010_GENERATE_RANDOM_NEW_GAME                               :Enerategay andomray ewnay amegay
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Oadlay Eightmaphay
+
+##id 0x4800
+STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} inway ethay ayway
+STR_4801                                                        :{WHITE}{INDUSTRY}
+STR_4802_COAL_MINE                                              :Oalcay Inemay
+STR_4803_POWER_STATION                                          :Owerpay Ationstay
+STR_4804_SAWMILL                                                :Awmillsay
+STR_4805_FOREST                                                 :Orestfay
+STR_4806_OIL_REFINERY                                           :Oilway Efineryray
+STR_4807_OIL_RIG                                                :Oilway Igray
+STR_4808_FACTORY                                                :Actoryfay
+STR_4809_PRINTING_WORKS                                         :Intingpray Orksway
+STR_480A_STEEL_MILL                                             :Eelstay Illmay
+STR_480B_FARM                                                   :Armfay
+STR_480C_COPPER_ORE_MINE                                        :Oppercay Oreway Inemay
+STR_480D_OIL_WELLS                                              :Oilway Ellsway
+STR_480E_BANK                                                   :Ankbay
+STR_480F_FOOD_PROCESSING_PLANT                                  :Oodfay Ocessingpray Antplay
+STR_4810_PAPER_MILL                                             :Aperpay Illmay
+STR_4811_GOLD_MINE                                              :Oldgay Inemay
+STR_4812_BANK                                                   :Ankbay
+STR_4813_DIAMOND_MINE                                           :Iamondday Inemay
+STR_4814_IRON_ORE_MINE                                          :Ironway Oreway Inemay
+STR_4815_FRUIT_PLANTATION                                       :Uitfray Antationplay
+STR_4816_RUBBER_PLANTATION                                      :Ubberray Antationplay
+STR_4817_WATER_SUPPLY                                           :Aterway Upplysay
+STR_4818_WATER_TOWER                                            :Aterway Owertay
+STR_4819_FACTORY                                                :Actoryfay
+STR_481A_FARM                                                   :Armfay
+STR_481B_LUMBER_MILL                                            :Umberlay Illmay
+STR_481C_COTTON_CANDY_FOREST                                    :Andyflosscay Orestfay
+STR_481D_CANDY_FACTORY                                          :Eetsway Actoryfay
+STR_481E_BATTERY_FARM                                           :Atterybay Armfay
+STR_481F_COLA_WELLS                                             :Olacay Ellsway
+STR_4820_TOY_SHOP                                               :Oytay Opshay
+STR_4821_TOY_FACTORY                                            :Oytay Actoryfay
+STR_4822_PLASTIC_FOUNTAINS                                      :Asticplay Ountainsfay
+STR_4823_FIZZY_DRINK_FACTORY                                    :Izzyfay Inkdray Actoryfay
+STR_4824_BUBBLE_GENERATOR                                       :Ubblebay Eneratorgay
+STR_4825_TOFFEE_QUARRY                                          :Offeetay Arryquay
+STR_4826_SUGAR_MINE                                             :Ugarsay Inemay
+
+############ range for requires starts
+STR_4827_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}
+STR_4828_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}, {STRING}
+STR_4829_REQUIRES                                               :{BLACK}Equiresray: {YELLOW}{STRING}, {STRING}, {STRING}
+############ range for requires ends
+
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Argocay aitingway otay ebay ocessedpray:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Oducespray: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
+STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Oductionpray astlay onthmay:
+STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% ansportedtray)
+STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Entrecay ethay ainmay iewvay onway industryway ocationlay
+STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Ewnay {STRING} underway onstructioncay earnay {TOWN}!
+STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Ewnay {STRING} eingbay antedplay earnay {TOWN}!
+STR_482F_COST                                                   :{BLACK}Ostcay: {YELLOW}{CURRENCY}
+STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}An'tcay onstructcay isthay industryway ypetay erehay...
+STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...orestfay ancay onlyway ebay antedplay aboveway owsnay-inelay
+STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{STRING} announcesway imminentway osureclay!
+STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Upplysay oblemspray ausecay {STRING} otay announceway imminentway osureclay!
+STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Acklay ofway earbynay eestray ausescay {STRING} otay announceway imminentway osureclay!
+STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} increasesway oductionpray!
+STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Ewnay oalcay eamsay oundfay atway {INDUSTRY}!{}Oductionpray isway expectedway otay oubleday!
+STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Ewnay oilway eservesray oundfay atway {INDUSTRY}!{}Oductionpray isway expectedway otay oubleday!
+STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Improvedway armingfay ethodsmay atway {INDUSTRY} areway expectedway otay oubleday oductionpray!
+STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}{INDUSTRY} oductionpray ownday ybay 50%
+STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Insectway infestationway ausescay avochay atway {INDUSTRY}!{}Oductionpray ownday ybay 50%
+STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...ancay onlyway ebay ositionedpay earnay edgesway ofway apmay
+STR_INDUSTRY_PROD_GOUP                                          :{BLACK}{BIGFONT}{STRING} oductionpray atway {INDUSTRY} increasesway {COMMA}%!
+STR_INDUSTRY_PROD_GODOWN                                        :{BLACK}{BIGFONT}{STRING} oductionpray atway {INDUSTRY} ecreasesday {COMMA}%!
+
+##id 0x5000
+STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}Aintray inway unneltay
+STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Oadray ehiclevay inway unneltay
+STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Anotherway unneltay inway ethay ayway
+STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Unableway otay excavateway andlay orfay otherway endway ofway unneltay
+STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Ustmay emolishday unneltay irstfay
+STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Ustmay emolishday idgebray irstfay
+STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Annotcay artstay andway endway inway ethay amesay otspay
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT                                 :{WHITE}Idgebray eadshay otnay atway ethay amesay evellay
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN                                  :{WHITE}Idgebray isway ootay owlay orfay ethay erraintay
+STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Artstay andway endway ustmay ebay inway inelay
+STR_500B_SITE_UNSUITABLE_FOR_TUNNEL                             :{WHITE}Itesay unsuitableway orfay unneltay entranceway
+STR_500D                                                        :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
+STR_500E_SUSPENSION_STEEL                                       :Uspensionsay, Eelstay
+STR_500F_GIRDER_STEEL                                           :Irdergay, Eelstay
+STR_5010_CANTILEVER_STEEL                                       :Antilevercay, Eelstay
+STR_5011_SUSPENSION_CONCRETE                                    :Uspensionsay, Oncretecay
+STR_5012_WOODEN                                                 :Oodenway
+STR_5013_CONCRETE                                               :Oncretecay
+STR_5014_TUBULAR_STEEL                                          :Ubulartay, Eelstay
+STR_BRIDGE_TUBULAR_SILICON                                      :Ubulartay, Iliconsay
+STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}An'tcay uildbay idgebray erehay...
+STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}An'tcay uildbay unneltay erehay...
+STR_5017_RAILROAD_TUNNEL                                        :Ailwayray unneltay
+STR_5018_ROAD_TUNNEL                                            :Oadray unneltay
+STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Eelstay uspensionsay ailray idgebray
+STR_501C_STEEL_GIRDER_RAIL_BRIDGE                               :Eelstay irdergay ailray idgebray
+STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE                           :Eelstay antilevercay ailray idgebray
+STR_501E_REINFORCED_CONCRETE_SUSPENSION                         :Einforcedray oncretecay uspensionsay ailray idgebray
+STR_501F_WOODEN_RAIL_BRIDGE                                     :Oodenway ailray idgebray
+STR_5020_CONCRETE_RAIL_BRIDGE                                   :Oncretecay ailray idgebray
+STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Eelstay uspensionsay oadray idgebray
+STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Eelstay irdergay oadray idgebray
+STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Eelstay antilevercay oadray idgebray
+STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Einforcedray oncretecay uspensionsay oadray idgebray
+STR_5025_WOODEN_ROAD_BRIDGE                                     :Oodenway oadray idgebray
+STR_5026_CONCRETE_ROAD_BRIDGE                                   :Oncretecay oadray idgebray
+STR_5027_TUBULAR_RAIL_BRIDGE                                    :Ubulartay ailray idgebray
+STR_5028_TUBULAR_ROAD_BRIDGE                                    :Ubulartay oadray idgebray
+
+##id 0x5800
+STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Objectway inway ethay ayway
+STR_5801_TRANSMITTER                                            :Ansmittertray
+STR_5802_LIGHTHOUSE                                             :Ighthouselay
+STR_5803_COMPANY_HEADQUARTERS                                   :Ompanycay Eadquartershay
+STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...ompanycay eadquartershay inway ethay ayway
+STR_5805_COMPANY_OWNED_LAND                                     :Ompanycay-ownedway andlay
+STR_5806_CAN_T_PURCHASE_THIS_LAND                               :{WHITE}An'tcay urchasepay isthay andlay areaway...
+STR_5807_YOU_ALREADY_OWN_IT                                     :{WHITE}...ouyay alreadyway ownway itway!
+
+
+############ WARNING, using range 0x6000 for strings that are stored in the savegame
+############ These strings may never get a new id, or savegames will break!
+##id 0x6000
+STR_SV_EMPTY                                                    :
+STR_SV_UNNAMED                                                  :Unnamedway
+STR_SV_TRAIN_NAME                                               :Aintray {COMMA}
+STR_SV_ROADVEH_NAME                                             :Oadray Ehiclevay {COMMA}
+STR_SV_SHIP_NAME                                                :Ipshay {COMMA}
+STR_SV_AIRCRAFT_NAME                                            :Aircraftway {COMMA}
+
+STR_SV_STNAME                                                   :{STRING}
+STR_SV_STNAME_NORTH                                             :{STRING} Orthnay
+STR_SV_STNAME_SOUTH                                             :{STRING} Outhsay
+STR_SV_STNAME_EAST                                              :{STRING} Eastway
+STR_SV_STNAME_WEST                                              :{STRING} Estway
+STR_SV_STNAME_CENTRAL                                           :{STRING} Entralcay
+STR_SV_STNAME_TRANSFER                                          :{STRING} Ansfertray
+STR_SV_STNAME_HALT                                              :{STRING} Althay
+STR_SV_STNAME_VALLEY                                            :{STRING} Alleyvay
+STR_SV_STNAME_HEIGHTS                                           :{STRING} Eightshay
+STR_SV_STNAME_WOODS                                             :{STRING} Oodsway
+STR_SV_STNAME_LAKESIDE                                          :{STRING} Akesidelay
+STR_SV_STNAME_EXCHANGE                                          :{STRING} Exchangeway
+STR_SV_STNAME_AIRPORT                                           :{STRING} Airportway
+STR_SV_STNAME_OILFIELD                                          :{STRING} Oilfieldway
+STR_SV_STNAME_MINES                                             :{STRING} Inesmay
+STR_SV_STNAME_DOCKS                                             :{STRING} Ocksday
+STR_SV_STNAME_BUOY_1                                            :{STRING} Uoybay 1
+STR_SV_STNAME_BUOY_2                                            :{STRING} Uoybay 2
+STR_SV_STNAME_BUOY_3                                            :{STRING} Uoybay 3
+STR_SV_STNAME_BUOY_4                                            :{STRING} Uoybay 4
+STR_SV_STNAME_BUOY_5                                            :{STRING} Uoybay 5
+STR_SV_STNAME_BUOY_6                                            :{STRING} Uoybay 6
+STR_SV_STNAME_BUOY_7                                            :{STRING} Uoybay 7
+STR_SV_STNAME_BUOY_8                                            :{STRING} Uoybay 8
+STR_SV_STNAME_BUOY_9                                            :{STRING} Uoybay 9
+STR_SV_STNAME_ANNEXE                                            :{STRING} Annexeway
+STR_SV_STNAME_SIDINGS                                           :{STRING} Idingssay
+STR_SV_STNAME_BRANCH                                            :{STRING} Anchbray
+STR_SV_STNAME_UPPER                                             :Upperway {STRING}
+STR_SV_STNAME_LOWER                                             :Owerlay {STRING}
+STR_SV_STNAME_HELIPORT                                          :{STRING} Eliporthay
+STR_SV_STNAME_FOREST                                            :{STRING} Orestfay
+STR_SV_STNAME_FALLBACK                                          :{STRING} Ationstay #{NUM}
+
+############ end of savegame specific region!
+
+##id 0x6800
+STR_6800_DIFFICULTY_LEVEL                                       :{WHITE}Ifficultyday Evellay
+STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Avesay
+
+############ range for difficulty levels starts
+STR_6801_EASY                                                   :{BLACK}Easyway
+STR_6802_MEDIUM                                                 :{BLACK}Ediummay
+STR_6803_HARD                                                   :{BLACK}Ardhay
+STR_6804_CUSTOM                                                 :{BLACK}Ustomcay
+############ range for difficulty levels ends
+
+############ range for difficulty settings starts
+STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Aximummay onay. ompetitorscay: {ORANGE}{COMMA}
+STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Ompetitorcay artstay imetay: {ORANGE}{STRING}
+STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Onay. ofway ownstay: {ORANGE}{STRING}
+STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Onay. ofway industriesway: {ORANGE}{STRING}
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Aximummay initialway oanlay: {ORANGE}{CURRENCY}
+STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Initialway interestway ateray: {ORANGE}{COMMA}%
+STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Ehiclevay unningray ostscay: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Onstructioncay eedspay ofway ompetitorscay: {ORANGE}{STRING}
+STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Intelligenceway ofway ompetitorscay: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Ehiclevay eakdownsbray: {ORANGE}{STRING}
+STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Ubsidysay ultipliermay: {ORANGE}{STRING}
+STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Ostcay ofway onstructioncay: {ORANGE}{STRING}
+STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Erraintay ypetay: {ORANGE}{STRING}
+STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Antityquay ofway easay/akeslay: {ORANGE}{STRING}
+STR_6813_ECONOMY                                                :{LTBLUE}Economyway: {ORANGE}{STRING}
+STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Aintray eversingray: {ORANGE}{STRING}
+STR_6815_DISASTERS                                              :{LTBLUE}Isastersday: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Itycay ouncil'scay attitudeway owardstay areaway estructuringray: {ORANGE}{STRING}
+############ range for difficulty settings ends
+
+STR_NONE                                                        :Onenay
+STR_NUM_VERY_LOW                                                :Eryvay owlay
+STR_6816_LOW                                                    :Owlay
+STR_6817_NORMAL                                                 :Ormalnay
+STR_6818_HIGH                                                   :Ighhay
+STR_6819                                                        :{BLACK}{SMALLLEFTARROW}
+STR_681A                                                        :{BLACK}{SMALLRIGHTARROW}
+STR_681B_VERY_SLOW                                              :Eryvay Owslay
+STR_681C_SLOW                                                   :Owslay
+STR_681D_MEDIUM                                                 :Ediummay
+STR_681E_FAST                                                   :Astfay
+STR_681F_VERY_FAST                                              :Eryvay Astfay
+STR_VERY_LOW                                                    :Eryvay Owlay
+STR_6820_LOW                                                    :Owlay
+STR_6821_MEDIUM                                                 :Ediummay
+STR_6822_HIGH                                                   :Ighhay
+STR_6823_NONE                                                   :Onenay
+STR_6824_REDUCED                                                :Educedray
+STR_6825_NORMAL                                                 :Ormalnay
+STR_6826_X1_5                                                   :xay1.5
+STR_6827_X2                                                     :xay2
+STR_6828_X3                                                     :xay3
+STR_6829_X4                                                     :xay4
+STR_682A_VERY_FLAT                                              :Eryvay Atflay
+STR_682B_FLAT                                                   :Atflay
+STR_682C_HILLY                                                  :Illyhay
+STR_682D_MOUNTAINOUS                                            :Ountainousmay
+STR_682E_STEADY                                                 :Eadystay
+STR_682F_FLUCTUATING                                            :Uctuatingflay
+STR_6830_IMMEDIATE                                              :Immediateway
+STR_6831_3_MONTHS_AFTER_PLAYER                                  :3 onthsmay afterway ayerplay
+STR_6832_6_MONTHS_AFTER_PLAYER                                  :6 onthsmay afterway ayerplay
+STR_6833_9_MONTHS_AFTER_PLAYER                                  :9 onthsmay afterway ayerplay
+STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :Atway endway ofway inelay, andway atway ationsstay
+STR_6835_AT_END_OF_LINE_ONLY                                    :Atway endway ofway inelay onlyway
+STR_6836_OFF                                                    :Offway
+STR_6837_ON                                                     :Onway
+STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Owshay ihay-orescay artchay
+STR_PERMISSIVE                                                  :Ermissivepay
+STR_TOLERANT                                                    :Oleranttay
+STR_HOSTILE                                                     :Ostilehay
+
+##id 0x7000
+STR_7000                                                        :
+STR_7001                                                        :{WHITE}{COMPANY} {BLACK}{COMPANYNUM}
+STR_7002_PLAYER                                                 :(Ayerplay {COMMA})
+STR_7004_NEW_FACE                                               :{BLACK}Ewnay Acefay
+STR_7005_COLOR_SCHEME                                           :{BLACK}Olourcay Emeschay
+STR_7006_COLOR_SCHEME                                           :{GOLD}Olourcay Emeschay:
+STR_7007_NEW_COLOR_SCHEME                                       :{WHITE}Ewnay Olourcay Emeschay
+STR_7008_COMPANY_NAME                                           :{BLACK}Ompanycay Amenay
+STR_7009_PRESIDENT_NAME                                         :{BLACK}Anagermay Amenay
+STR_700A_COMPANY_NAME                                           :Ompanycay Amenay
+STR_700B_PRESIDENT_S_NAME                                       :Anager'smay Amenay
+STR_700C_CAN_T_CHANGE_COMPANY_NAME                              :{WHITE}An'tcay angechay ompanycay amenay...
+STR_700D_CAN_T_CHANGE_PRESIDENT                                 :{WHITE}An'tcay angechay anager'smay amenay...
+STR_700E_FINANCES                                               :{WHITE}{COMPANY} Inancesfay {BLACK}{COMPANYNUM}
+STR_700F_EXPENDITURE_INCOME                                     :{WHITE}Expenditureway/Incomeway
+STR_7010                                                        :{WHITE}{NUM}
+STR_7011_CONSTRUCTION                                           :{GOLD}Onstructioncay
+STR_7012_NEW_VEHICLES                                           :{GOLD}Ewnay Ehiclesvay
+STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Aintray Unningray Ostscay
+STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Oadray Ehvay. Unningray Ostscay
+STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Aircraftway Unningray Ostscay
+STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Ipshay Unningray Ostscay
+STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Opertypray Aintenancemay
+STR_7018_TRAIN_INCOME                                           :{GOLD}Aintray Incomeway
+STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Oadray Ehiclevay Incomeway
+STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Aircraftway Incomeway
+STR_701B_SHIP_INCOME                                            :{GOLD}Ipshay Incomeway
+STR_701C_LOAN_INTEREST                                          :{GOLD}Oanlay Interestway
+STR_701D_OTHER                                                  :{GOLD}Otherway
+STR_701E                                                        :{BLACK}-{CURRENCY}
+STR_701F                                                        :{BLACK}+{CURRENCY}
+STR_7020_TOTAL                                                  :{WHITE}Otaltay:
+STR_7021                                                        :{COMPANY} {COMPANYNUM}
+STR_7022_INCOME_GRAPH                                           :{WHITE}Incomeway Aphgray
+STR_CURRCOMPACT                                                 :{CURRCOMPACT}
+STR_7024                                                        :{COMMA}
+STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Operatingway Ofitpray Aphgray
+STR_7026_BANK_BALANCE                                           :{WHITE}Ankbay Alancebay
+STR_7027_LOAN                                                   :{WHITE}Oanlay
+STR_MAX_LOAN                                                    :{WHITE}Axmay Oanlay:  {BLACK}{CURRENCY}
+STR_7028                                                        :{BLACK}{CURRENCY}
+STR_7029_BORROW                                                 :{BLACK}Orrowbay {SKIP}{SKIP}{CURRENCY}
+STR_702A_REPAY                                                  :{BLACK}Epayray {SKIP}{SKIP}{CURRENCY}
+STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...aximummay ermittedpay oanlay izesay isway {CURRENCY}
+STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}An'tcay orrowbay anyway oremay oneymay...
+STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...onay oanlay otay epayray
+STR_702E_REQUIRED                                               :{WHITE}...{CURRENCY} equiredray
+STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}An'tcay epayray oanlay...
+STR_INSUFFICIENT_FUNDS                                          :{WHITE}An'tcay ivegay awayway oneymay atthay isway oanedlay omfray ethay ankbay...
+STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Electsay ewnay acefay orfay anagermay
+STR_7031_CHANGE_THE_COMPANY_VEHICLE                             :{BLACK}Angechay ethay ompanycay ehiclevay iverylay
+STR_7032_CHANGE_THE_PRESIDENT_S                                 :{BLACK}Angechay ethay anager'smay amenay
+STR_7033_CHANGE_THE_COMPANY_NAME                                :{BLACK}Angechay ethay ompanycay amenay
+STR_7034_CLICK_ON_SELECTED_NEW_COLOR                            :{BLACK}Ickclay onway esiredday olourcay emeschay
+STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Increaseway izesay ofway oanlay
+STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Epayray artpay ofway oanlay
+STR_7037_PRESIDENT                                              :{WHITE}{PLAYERNAME}{}{GOLD}(Anagermay)
+STR_7038_INAUGURATED                                            :{GOLD}Inauguratedway: {WHITE}{NUM}
+STR_7039_VEHICLES                                               :{GOLD}Ehiclesvay:
+STR_TRAINS                                                      :{WHITE}{COMMA} ain{P "" s}tray
+STR_ROAD_VEHICLES                                               :{WHITE}{COMMA} oadray ehicle{P "" s}vay
+STR_AIRCRAFT                                                    :{WHITE}{COMMA} aircraftway
+STR_SHIPS                                                       :{WHITE}{COMMA} ip{P "" s}shay
+STR_7042_NONE                                                   :{WHITE}Onenay
+STR_7043_FACE_SELECTION                                         :{WHITE}Acefay Electionsay
+STR_7044_MALE                                                   :{BLACK}Alemay
+STR_7045_FEMALE                                                 :{BLACK}Emalefay
+STR_7046_NEW_FACE                                               :{BLACK}Ewnay Acefay
+STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Ancelcay ewnay acefay electionsay
+STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Acceptway ewnay acefay electionsay
+STR_7049_SELECT_MALE_FACES                                      :{BLACK}Electsay alemay acesfay
+STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Electsay emalefay acesfay
+STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Enerategay andomray ewnay acefay
+STR_704C_KEY                                                    :{BLACK}Eykay
+STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Owshay eykay otay aphsgray
+STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Eykay otay ompanycay aphsgray
+STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Ickclay erehay otay oggletay ompany'scay entryway onway aphgray onway/offway
+STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Unitsway ofway argocay eliveredday
+STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Ompanycay erformancepay atingsray (aximummay atingray=1000)
+STR_7052_COMPANY_VALUES                                         :{WHITE}Ompanycay aluesvay
+STR_7053_COMPANY_LEAGUE_TABLE                                   :{WHITE}Ompanycay Eaguelay Abletay
+STR_7054                                                        :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
+STR_7055                                                        :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM}  '{STRING}'
+STR_7056_TRANSPORT_COMPANY_IN_TROUBLE                           :{BLACK}{BIGFONT}Ansporttray ompanycay inway oubletray!
+STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} illway ebay oldsay offway orway eclaredday ankruptbay unlessway erformancepay increasesway oonsay!
+STR_7058_PRESIDENT                                              :{BLACK}{PLAYERNAME}{}(Anagermay)
+STR_7059_TRANSPORT_COMPANY_MERGER                               :{BLACK}{BIGFONT}Ansporttray ompanycay ergermay!
+STR_705A_HAS_BEEN_SOLD_TO_FOR                                   :{BLACK}{BIGFONT}{COMPANY} ashay eenbay oldsay otay {COMPANY} orfay {CURRENCY}!
+STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT                         :{WHITE}Eway areway ookinglay orfay away ansporttray ompanycay otay aketay-overway ourway ompanycay.{}{}Oday ouyay antway otay urchasepay {COMPANY} orfay {CURRENCY}?
+STR_705C_BANKRUPT                                               :{BLACK}{BIGFONT}Ankruptbay!
+STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}{COMPANY} ashay eenbay osedclay ownday ybay editorscray andway allway assetsway oldsay offway!
+STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}Ewnay ansporttray ompanycay aunchedlay!
+STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} artsstay onstructioncay earnay {TOWN}!
+STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}An'tcay uybay ompanycay...
+STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Argocay Aymentpay Atesray
+STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Aysday inway ansittray
+STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Aymentpay orfay eliveringday 10 unitsway (orway 10,000 itreslay) ofway argocay away istanceday ofway 20 aressquay
+STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Oggletay aphgray orfay argocay ypetay onway/offway
+STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
+STR_7066_ENGINEER                                               :Engineerway
+STR_7067_TRAFFIC_MANAGER                                        :Affictray Anagermay
+STR_7068_TRANSPORT_COORDINATOR                                  :Ansporttray Oordinatorcay
+STR_7069_ROUTE_SUPERVISOR                                       :Outeray Upervisorsay
+STR_706A_DIRECTOR                                               :Irectorday
+STR_706B_CHIEF_EXECUTIVE                                        :Iefchay Executiveway
+STR_706C_CHAIRMAN                                               :Airmanchay
+STR_706D_PRESIDENT                                              :Esidentpray
+STR_706E_TYCOON                                                 :Ycoontay
+STR_706F_BUILD_HQ                                               :{BLACK}Uildbay HQay
+STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Uildbay ompanycay eadquartershay / iewvay ompanycay eadquartershay
+STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Ebuildray ompanycay eadquartershay elsewhereway orfay 1% ostcay ofway ompanycay aluevay
+STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}An'tcay uildbay ompanycay eadquartershay...
+STR_7072_VIEW_HQ                                                :{BLACK}Iewvay HQay
+STR_RELOCATE_HQ                                                 :{BLACK}Elocateray HQay
+STR_COMPANY_PASSWORD                                            :{BLACK}Asswordpay
+STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Asswordpay-otectpray ouryay ompanycay otay eventpray unauthorisedway usersway omfray oiningjay.
+STR_SET_COMPANY_PASSWORD                                        :{BLACK}Etsay ompanycay asswordpay
+STR_COMPANY_PASSWORD_CANCEL                                     :{BLACK}Oday otnay avesay ethay enteredway asswordpay
+STR_COMPANY_PASSWORD_OK                                         :{BLACK}Ivegay ethay ompanycay ethay ewnay asswordpay
+STR_COMPANY_PASSWORD_CAPTION                                    :{WHITE}Ompanycay asswordpay
+STR_MAKE_DEFAULT_COMPANY_PASSWORD                               :{BLACK}Efaultday ompanycay asswordpay
+STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP                           :{BLACK}Useway isthay ompanycay asswordpay asway efaultday orfay ewnay ompaniescay
+STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Orldway Ecessionray!{}{}Inancialfay expertsway earfay orstway asway economyway umpsslay!
+STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Ecessionray Overway!{}{}Upturnway inway adetray ivesgay onfidencecay otay industriesway asway economyway engthensstray!
+STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Oggletay argelay/allsmay indowway izesay
+STR_7076_COMPANY_VALUE                                          :{GOLD}Ompanycay aluevay: {WHITE}{CURRENCY}
+STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Uybay 25% areshay inway ompanycay
+STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Ellsay 25% areshay inway ompanycay
+STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Uybay 25% areshay inway isthay ompanycay
+STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}Ellsay 25% areshay inway isthay ompanycay
+STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}An'tcay uybay 25% areshay inway isthay ompanycay...
+STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}An'tcay ellsay 25% areshay inway isthay ompanycay...
+STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% ownedway ybay {COMPANY})
+STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} ashay eenbay akentay overway ybay {COMPANY}!
+STR_PROTECTED                                                   :{WHITE}Isthay ompanycay isway otnay oldway enoughway otay adetray aresshay etyay...
+
+STR_LIVERY_DEFAULT                                              :Andardstay Iverylay
+STR_LIVERY_STEAM                                                :Eamstay Engineway
+STR_LIVERY_DIESEL                                               :Ieselday Engineway
+STR_LIVERY_ELECTRIC                                             :Electricway Engineway
+STR_LIVERY_MONORAIL                                             :Onorailmay Engineway
+STR_LIVERY_MAGLEV                                               :Aglevmay Engineway
+STR_LIVERY_DMU                                                  :UDMay
+STR_LIVERY_EMU                                                  :EMUWAY
+STR_LIVERY_PASSENGER_WAGON_STEAM                                :Assengerpay Oachcay (Eamstay)
+STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Assengerpay Oachcay (Ieselday)
+STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Assengerpay Oachcay (Electricway)
+STR_LIVERY_FREIGHT_WAGON                                        :Eightfray Agonway
+STR_LIVERY_BUS                                                  :Usbay
+STR_LIVERY_TRUCK                                                :Orrylay
+STR_LIVERY_PASSENGER_SHIP                                       :Assengerpay Erryfay
+STR_LIVERY_FREIGHT_SHIP                                         :Eightfray Ipshay
+STR_LIVERY_HELICOPTER                                           :Elicopterhay
+STR_LIVERY_SMALL_PLANE                                          :Allsmay Aeroplaneway
+STR_LIVERY_LARGE_PLANE                                          :Argelay Aeroplaneway
+STR_LIVERY_PASSENGER_TRAM                                       :Assengerpay Amtray
+STR_LIVERY_FREIGHT_TRAM                                         :Eightfray Amtray
+
+STR_LIVERY_GENERAL_TIP                                          :{BLACK}Owshay eneralgay olourcay emesschay
+STR_LIVERY_TRAIN_TIP                                            :{BLACK}Owshay aintray olourcay emesschay
+STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Owshay oadray ehiclevay olourcay emesschay
+STR_LIVERY_SHIP_TIP                                             :{BLACK}Owshay ipshay olourcay emesschay
+STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Owshay aircraftway olourcay emesschay
+STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Oosechay ethay imarypray olourcay orfay ethay electedsay emeschay
+STR_LIVERY_SECONDARY_TIP                                        :{BLACK}Oosechay ethay econdarysay olourcay orfay ethay electedsay emeschay
+STR_LIVERY_PANEL_TIP                                            :{BLACK}Electsay away olourcay emeschay otay angechay, orway ultiplemay emesschay ithway CTRLay+ickclay. Ickclay onway ethay oxbay otay oggletay useway ofway ethay emeschay
+
+##id 0x8000
+STR_8000_KIRBY_PAUL_TANK_STEAM                                  :Irbykay Aulpay Anktay (Eamstay)
+STR_8001_MJS_250_DIESEL                                         :MJSay 250 (Ieselday)
+STR_8002_PLODDYPHUT_CHOO_CHOO                                   :Oddyphutplay Oochay-Oochay
+STR_8003_POWERNAUT_CHOO_CHOO                                    :Owernautpay Oochay-Oochay
+STR_8004_MIGHTYMOVER_CHOO_CHOO                                  :Ightymovermay Oochay-Oochay
+STR_8005_PLODDYPHUT_DIESEL                                      :Oddyphutplay Ieselday
+STR_8006_POWERNAUT_DIESEL                                       :Owernautpay Ieselday
+STR_8007_WILLS_2_8_0_STEAM                                      :Illsway 2-8-0 (Eamstay)
+STR_8008_CHANEY_JUBILEE_STEAM                                   :Aneychay 'Ubilee'jay (Eamstay)
+STR_8009_GINZU_A4_STEAM                                         :Inzugay 'Away4' (Eamstay)
+STR_800A_SH_8P_STEAM                                            :SHay '8P'ay (Eamstay)
+STR_800B_MANLEY_MOREL_DMU_DIESEL                                :Anleymay-Orelmay UDMay (Ieselday)
+STR_800C_DASH_DIESEL                                            :'Ash'day (Ieselday)
+STR_800D_SH_HENDRY_25_DIESEL                                    :SHay/Endryhay '25' (Ieselday)
+STR_800E_UU_37_DIESEL                                           :UUWAY '37' (Ieselday)
+STR_800F_FLOSS_47_DIESEL                                        :Ossflay '47' (Ieselday)
+STR_8010_CS_4000_DIESEL                                         :CSay 4000 (Ieselday)
+STR_8011_CS_2400_DIESEL                                         :CSay 2400 (Ieselday)
+STR_8012_CENTENNIAL_DIESEL                                      :Entennialcay (Ieselday)
+STR_8013_KELLING_3100_DIESEL                                    :Ellingkay 3100 (Ieselday)
+STR_8014_TURNER_TURBO_DIESEL                                    :Urnertay Urbotay (Ieselday)
+STR_8015_MJS_1000_DIESEL                                        :MJSay 1000 (Ieselday)
+STR_8016_SH_125_DIESEL                                          :SHay '125' (Ieselday)
+STR_8017_SH_30_ELECTRIC                                         :SHay '30' (Electricway)
+STR_8018_SH_40_ELECTRIC                                         :SHay '40' (Electricway)
+STR_8019_T_I_M_ELECTRIC                                         :'Tay.Iway.May.' (Electricway)
+STR_801A_ASIASTAR_ELECTRIC                                      :'AsiaStar'WAY (Electricway)
+STR_801B_PASSENGER_CAR                                          :Assengerpay Arriagecay
+STR_801C_MAIL_VAN                                               :Ailmay Anvay
+STR_801D_COAL_CAR                                               :Oalcay Ucktray
+STR_801E_OIL_TANKER                                             :Oilway Ankertay
+STR_801F_LIVESTOCK_VAN                                          :Ivestocklay Anvay
+STR_8020_GOODS_VAN                                              :Oodsgay Anvay
+STR_8021_GRAIN_HOPPER                                           :Aingray Opperhay
+STR_8022_WOOD_TRUCK                                             :Oodway Ucktray
+STR_8023_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
+STR_8024_STEEL_TRUCK                                            :Eelstay Ucktray
+STR_8025_ARMORED_VAN                                            :Armouredway Anvay
+STR_8026_FOOD_VAN                                               :Oodfay Anvay
+STR_8027_PAPER_TRUCK                                            :Aperpay Ucktray
+STR_8028_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
+STR_8029_WATER_TANKER                                           :Aterway Ankertay
+STR_802A_FRUIT_TRUCK                                            :Uitfray Ucktray
+STR_802B_RUBBER_TRUCK                                           :Ubberray Ucktray
+STR_802C_SUGAR_TRUCK                                            :Ugarsay Ucktray
+STR_802D_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
+STR_802E_TOFFEE_HOPPER                                          :Offeetay Opperhay
+STR_802F_BUBBLE_VAN                                             :Ubblebay Anvay
+STR_8030_COLA_TANKER                                            :Olacay Ankertay
+STR_8031_CANDY_VAN                                              :Eetsway Anvay
+STR_8032_TOY_VAN                                                :Oytay Anvay
+STR_8033_BATTERY_TRUCK                                          :Atterybay Ucktray
+STR_8034_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
+STR_8035_PLASTIC_TRUCK                                          :Asticplay Ucktray
+STR_8036_X2001_ELECTRIC                                         :'Xay2001' (Electricway)
+STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Illenniummay Zay1' (Electricway)
+STR_8038_WIZZOWOW_Z99                                           :Izzowowway Zay99
+STR_8039_PASSENGER_CAR                                          :Assengerpay Arriagecay
+STR_803A_MAIL_VAN                                               :Ailmay Anvay
+STR_803B_COAL_CAR                                               :Oalcay Ucktray
+STR_803C_OIL_TANKER                                             :Oilway Ankertay
+STR_803D_LIVESTOCK_VAN                                          :Ivestocklay Anvay
+STR_803E_GOODS_VAN                                              :Oodsgay Anvay
+STR_803F_GRAIN_HOPPER                                           :Aingray Opperhay
+STR_8040_WOOD_TRUCK                                             :Oodway Ucktray
+STR_8041_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
+STR_8042_STEEL_TRUCK                                            :Eelstay Ucktray
+STR_8043_ARMORED_VAN                                            :Armouredway Anvay
+STR_8044_FOOD_VAN                                               :Oodfay Anvay
+STR_8045_PAPER_TRUCK                                            :Aperpay Ucktray
+STR_8046_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
+STR_8047_WATER_TANKER                                           :Aterway Ankertay
+STR_8048_FRUIT_TRUCK                                            :Uitfray Ucktray
+STR_8049_RUBBER_TRUCK                                           :Ubberray Ucktray
+STR_804A_SUGAR_TRUCK                                            :Ugarsay Ucktray
+STR_804B_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
+STR_804C_TOFFEE_HOPPER                                          :Offeetay Opperhay
+STR_804D_BUBBLE_VAN                                             :Ubblebay Anvay
+STR_804E_COLA_TANKER                                            :Olacay Ankertay
+STR_804F_CANDY_VAN                                              :Eetsway Anvay
+STR_8050_TOY_VAN                                                :Oytay Anvay
+STR_8051_BATTERY_TRUCK                                          :Atterybay Ucktray
+STR_8052_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
+STR_8053_PLASTIC_TRUCK                                          :Asticplay Ucktray
+STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Evlay1 'Eviathan'lay (Electricway)
+STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Evlay2 'Yclops'cay (Electricway)
+STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Evlay3 'Egasus'pay (Electricway)
+STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Evlay4 'Imaera'chay (Electricway)
+STR_8058_WIZZOWOW_ROCKETEER                                     :Izzowowway Ocketeerray
+STR_8059_PASSENGER_CAR                                          :Assengerpay Arriagecay
+STR_805A_MAIL_VAN                                               :Ailmay Anvay
+STR_805B_COAL_CAR                                               :Oalcay Ucktray
+STR_805C_OIL_TANKER                                             :Oilway Ankertay
+STR_805D_LIVESTOCK_VAN                                          :Ivestocklay Anvay
+STR_805E_GOODS_VAN                                              :Oodsgay Anvay
+STR_805F_GRAIN_HOPPER                                           :Aingray Opperhay
+STR_8060_WOOD_TRUCK                                             :Oodway Ucktray
+STR_8061_IRON_ORE_HOPPER                                        :Ironway Oreway Opperhay
+STR_8062_STEEL_TRUCK                                            :Eelstay Ucktray
+STR_8063_ARMORED_VAN                                            :Armouredway Anvay
+STR_8064_FOOD_VAN                                               :Oodfay Anvay
+STR_8065_PAPER_TRUCK                                            :Aperpay Ucktray
+STR_8066_COPPER_ORE_HOPPER                                      :Oppercay Oreway Opperhay
+STR_8067_WATER_TANKER                                           :Aterway Ankertay
+STR_8068_FRUIT_TRUCK                                            :Uitfray Ucktray
+STR_8069_RUBBER_TRUCK                                           :Ubberray Ucktray
+STR_806A_SUGAR_TRUCK                                            :Ugarsay Ucktray
+STR_806B_COTTON_CANDY_HOPPER                                    :Andyflosscay Opperhay
+STR_806C_TOFFEE_HOPPER                                          :Offeetay Opperhay
+STR_806D_BUBBLE_VAN                                             :Ubblebay Anvay
+STR_806E_COLA_TANKER                                            :Olacay Ankertay
+STR_806F_CANDY_VAN                                              :Eetsway Anvay
+STR_8070_TOY_VAN                                                :Oytay Anvay
+STR_8071_BATTERY_TRUCK                                          :Atterybay Ucktray
+STR_8072_FIZZY_DRINK_TRUCK                                      :Izzyfay Inkdray Ucktray
+STR_8073_PLASTIC_TRUCK                                          :Asticplay Ucktray
+STR_8074_MPS_REGAL_BUS                                          :MPSay Egalray Usbay
+STR_8075_HEREFORD_LEOPARD_BUS                                   :Erefordhay Eopardlay Usbay
+STR_8076_FOSTER_BUS                                             :Osterfay Usbay
+STR_8077_FOSTER_MKII_SUPERBUS                                   :Osterfay IImkay Uperbussay
+STR_8078_PLODDYPHUT_MKI_BUS                                     :Oddyphutplay Imkay Usbay
+STR_8079_PLODDYPHUT_MKII_BUS                                    :Oddyphutplay IImkay Usbay
+STR_807A_PLODDYPHUT_MKIII_BUS                                   :Oddyphutplay IIImkay Usbay
+STR_807B_BALOGH_COAL_TRUCK                                      :Aloghbay Oalcay Ucktray
+STR_807C_UHL_COAL_TRUCK                                         :Uhlway Oalcay Ucktray
+STR_807D_DW_COAL_TRUCK                                          :DWay Oalcay Ucktray
+STR_807E_MPS_MAIL_TRUCK                                         :MPSay Ailmay Ucktray
+STR_807F_REYNARD_MAIL_TRUCK                                     :Eynardray Ailmay Ucktray
+STR_8080_PERRY_MAIL_TRUCK                                       :Errypay Ailmay Ucktray
+STR_8081_MIGHTYMOVER_MAIL_TRUCK                                 :IghtyMovermay Ailmay Ucktray
+STR_8082_POWERNAUGHT_MAIL_TRUCK                                 :Owernaughtpay Ailmay Ucktray
+STR_8083_WIZZOWOW_MAIL_TRUCK                                    :Izzowowway Ailmay Ucktray
+STR_8084_WITCOMBE_OIL_TANKER                                    :Itcombeway Oilway Ankertay
+STR_8085_FOSTER_OIL_TANKER                                      :Osterfay Oilway Ankertay
+STR_8086_PERRY_OIL_TANKER                                       :Errypay Oilway Ankertay
+STR_8087_TALBOTT_LIVESTOCK_VAN                                  :Albotttay Ivestocklay Anvay
+STR_8088_UHL_LIVESTOCK_VAN                                      :Uhlway Ivestocklay Anvay
+STR_8089_FOSTER_LIVESTOCK_VAN                                   :Osterfay Ivestocklay Anvay
+STR_808A_BALOGH_GOODS_TRUCK                                     :Aloghbay Oodsgay Ucktray
+STR_808B_CRAIGHEAD_GOODS_TRUCK                                  :Aigheadcray Oodsgay Ucktray
+STR_808C_GOSS_GOODS_TRUCK                                       :Ossgay Oodsgay Ucktray
+STR_808D_HEREFORD_GRAIN_TRUCK                                   :Erefordhay Aingray Ucktray
+STR_808E_THOMAS_GRAIN_TRUCK                                     :Omasthay Aingray Ucktray
+STR_808F_GOSS_GRAIN_TRUCK                                       :Ossgay Aingray Ucktray
+STR_8090_WITCOMBE_WOOD_TRUCK                                    :Itcombeway Oodway Ucktray
+STR_8091_FOSTER_WOOD_TRUCK                                      :Osterfay Oodway Ucktray
+STR_8092_MORELAND_WOOD_TRUCK                                    :Orelandmay Oodway Ucktray
+STR_8093_MPS_IRON_ORE_TRUCK                                     :MPSay Ironway Oreway Ucktray
+STR_8094_UHL_IRON_ORE_TRUCK                                     :Uhlway Ironway Oreway Ucktray
+STR_8095_CHIPPY_IRON_ORE_TRUCK                                  :Ippychay Ironway Oreway Ucktray
+STR_8096_BALOGH_STEEL_TRUCK                                     :Aloghbay Eelstay Ucktray
+STR_8097_UHL_STEEL_TRUCK                                        :Uhlway Eelstay Ucktray
+STR_8098_KELLING_STEEL_TRUCK                                    :Ellingkay Eelstay Ucktray
+STR_8099_BALOGH_ARMORED_TRUCK                                   :Aloghbay Armouredway Ucktray
+STR_809A_UHL_ARMORED_TRUCK                                      :Uhlway Armouredway Ucktray
+STR_809B_FOSTER_ARMORED_TRUCK                                   :Osterfay Armouredway Ucktray
+STR_809C_FOSTER_FOOD_VAN                                        :Osterfay Oodfay Anvay
+STR_809D_PERRY_FOOD_VAN                                         :Errypay Oodfay Anvay
+STR_809E_CHIPPY_FOOD_VAN                                        :Ippychay Oodfay Anvay
+STR_809F_UHL_PAPER_TRUCK                                        :Uhlway Aperpay Ucktray
+STR_80A0_BALOGH_PAPER_TRUCK                                     :Aloghbay Aperpay Ucktray
+STR_80A1_MPS_PAPER_TRUCK                                        :MPSay Aperpay Ucktray
+STR_80A2_MPS_COPPER_ORE_TRUCK                                   :MPSay Oppercay Oreway Ucktray
+STR_80A3_UHL_COPPER_ORE_TRUCK                                   :Uhlway Oppercay Oreway Ucktray
+STR_80A4_GOSS_COPPER_ORE_TRUCK                                  :Ossgay Oppercay Oreway Ucktray
+STR_80A5_UHL_WATER_TANKER                                       :Uhlway Aterway Ankertay
+STR_80A6_BALOGH_WATER_TANKER                                    :Aloghbay Aterway Ankertay
+STR_80A7_MPS_WATER_TANKER                                       :MPSay Aterway Ankertay
+STR_80A8_BALOGH_FRUIT_TRUCK                                     :Aloghbay Uitfray Ucktray
+STR_80A9_UHL_FRUIT_TRUCK                                        :Uhlway Uitfray Ucktray
+STR_80AA_KELLING_FRUIT_TRUCK                                    :Ellingkay Uitfray Ucktray
+STR_80AB_BALOGH_RUBBER_TRUCK                                    :Aloghbay Ubberray Ucktray
+STR_80AC_UHL_RUBBER_TRUCK                                       :Uhlway Ubberray Ucktray
+STR_80AD_RMT_RUBBER_TRUCK                                       :RMTay Ubberray Ucktray
+STR_80AE_MIGHTYMOVER_SUGAR_TRUCK                                :IghtyMovermay Ugarsay Ucktray
+STR_80AF_POWERNAUGHT_SUGAR_TRUCK                                :Owernaughtpay Ugarsay Ucktray
+STR_80B0_WIZZOWOW_SUGAR_TRUCK                                   :Izzowowway Ugarsay Ucktray
+STR_80B1_MIGHTYMOVER_COLA_TRUCK                                 :IghtyMovermay Olacay Ucktray
+STR_80B2_POWERNAUGHT_COLA_TRUCK                                 :Owernaughtpay Olacay Ucktray
+STR_80B3_WIZZOWOW_COLA_TRUCK                                    :Izzowowway Olacay Ucktray
+STR_80B4_MIGHTYMOVER_COTTON_CANDY                               :IghtyMovermay Andyflosscay Ucktray
+STR_80B5_POWERNAUGHT_COTTON_CANDY                               :Owernaughtpay Andyflosscay Ucktray
+STR_80B6_WIZZOWOW_COTTON_CANDY_TRUCK                            :Izzowowway Andyflosscay Ucktray
+STR_80B7_MIGHTYMOVER_TOFFEE_TRUCK                               :IghtyMovermay Offeetay Ucktray
+STR_80B8_POWERNAUGHT_TOFFEE_TRUCK                               :Owernaughtpay Offeetay Ucktray
+STR_80B9_WIZZOWOW_TOFFEE_TRUCK                                  :Izzowowway Offeetay Ucktray
+STR_80BA_MIGHTYMOVER_TOY_VAN                                    :IghtyMovermay Oytay Anvay
+STR_80BB_POWERNAUGHT_TOY_VAN                                    :Owernaughtpay Oytay Anvay
+STR_80BC_WIZZOWOW_TOY_VAN                                       :Izzowowway Oytay Anvay
+STR_80BD_MIGHTYMOVER_CANDY_TRUCK                                :IghtyMovermay Eetsway Ucktray
+STR_80BE_POWERNAUGHT_CANDY_TRUCK                                :Owernaughtpay Eetsway Ucktray
+STR_80BF_WIZZOWOW_CANDY_TRUCK                                   :Izzowowway Eetsway Ucktray
+STR_80C0_MIGHTYMOVER_BATTERY_TRUCK                              :IghtyMovermay Atterybay Ucktray
+STR_80C1_POWERNAUGHT_BATTERY_TRUCK                              :Owernaughtpay Atterybay Ucktray
+STR_80C2_WIZZOWOW_BATTERY_TRUCK                                 :Izzowowway Atterybay Ucktray
+STR_80C3_MIGHTYMOVER_FIZZY_DRINK                                :IghtyMovermay Izzyfay Inkdray Ucktray
+STR_80C4_POWERNAUGHT_FIZZY_DRINK                                :Owernaughtpay Izzyfay Inkdray Ucktray
+STR_80C5_WIZZOWOW_FIZZY_DRINK_TRUCK                             :Izzowowway Izzyfay Inkdray Ucktray
+STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :IghtyMovermay Asticplay Ucktray
+STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Owernaughtpay Asticplay Ucktray
+STR_80C8_WIZZOWOW_PLASTIC_TRUCK                                 :Izzowowway Asticplay Ucktray
+STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :IghtyMovermay Ubblebay Ucktray
+STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Owernaughtpay Ubblebay Ucktray
+STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Izzowowway Ubblebay Ucktray
+STR_80CC_MPS_OIL_TANKER                                         :MPSay Oilway Ankertay
+STR_80CD_CS_INC_OIL_TANKER                                      :CSay-Incway. Oilway Ankertay
+STR_80CE_MPS_PASSENGER_FERRY                                    :MPSay Assengerpay Erryfay
+STR_80CF_FFP_PASSENGER_FERRY                                    :FFPay Assengerpay Erryfay
+STR_80D0_BAKEWELL_300_HOVERCRAFT                                :Akewellbay 300 Overcrafthay
+STR_80D1_CHUGGER_CHUG_PASSENGER                                 :Uggerchay-Ugchay Assengerpay Erryfay
+STR_80D2_SHIVERSHAKE_PASSENGER_FERRY                            :Ivershakeshay Assengerpay Erryfay
+STR_80D3_YATE_CARGO_SHIP                                        :Ateyay Argocay ipshay
+STR_80D4_BAKEWELL_CARGO_SHIP                                    :Akewellbay Argocay ipshay
+STR_80D5_MIGHTYMOVER_CARGO_SHIP                                 :Ightymovermay Argocay ipshay
+STR_80D6_POWERNAUT_CARGO_SHIP                                   :Owernautpay Argocay ipshay
+STR_80D7_SAMPSON_U52                                            :Ampsonsay Uway52
+STR_80D8_COLEMAN_COUNT                                          :Olemancay Ountcay
+STR_80D9_FFP_DART                                               :FFPay Artday
+STR_80DA_YATE_HAUGAN                                            :Ateyay Auganhay
+STR_80DB_BAKEWELL_COTSWALD_LB_3                                 :Akewellbay Otswaldcay LBay-3
+STR_80DC_BAKEWELL_LUCKETT_LB_8                                  :Akewellbay Uckettlay LBay-8
+STR_80DD_BAKEWELL_LUCKETT_LB_9                                  :Akewellbay Uckettlay LBay-9
+STR_80DE_BAKEWELL_LUCKETT_LB80                                  :Akewellbay Uckettlay LBay80
+STR_80DF_BAKEWELL_LUCKETT_LB_10                                 :Akewellbay Uckettlay LBay-10
+STR_80E0_BAKEWELL_LUCKETT_LB_11                                 :Akewellbay Uckettlay LBay-11
+STR_80E1_YATE_AEROSPACE_YAC_1_11                                :Ateyay Aerospaceway YACay 1-11
+STR_80E2_DARWIN_100                                             :Arwinday 100
+STR_80E3_DARWIN_200                                             :Arwinday 200
+STR_80E4_DARWIN_300                                             :Arwinday 300
+STR_80E5_DARWIN_400                                             :Arwinday 400
+STR_80E6_DARWIN_500                                             :Arwinday 500
+STR_80E7_DARWIN_600                                             :Arwinday 600
+STR_80E8_GURU_GALAXY                                            :Urugay Alaxygay
+STR_80E9_AIRTAXI_A21                                            :Airtaxiway Away21
+STR_80EA_AIRTAXI_A31                                            :Airtaxiway Away31
+STR_80EB_AIRTAXI_A32                                            :Airtaxiway Away32
+STR_80EC_AIRTAXI_A33                                            :Airtaxiway Away33
+STR_80ED_YATE_AEROSPACE_YAE46                                   :Ateyay Aerospaceway EyAay46
+STR_80EE_DINGER_100                                             :Ingerday 100
+STR_80EF_AIRTAXI_A34_1000                                       :AirTaxiway Away34-1000
+STR_80F0_YATE_Z_SHUTTLE                                         :Ateyay Zay-Uttleshay
+STR_80F1_KELLING_K1                                             :Ellingkay Kay1
+STR_80F2_KELLING_K6                                             :Ellingkay Kay6
+STR_80F3_KELLING_K7                                             :Ellingkay Kay7
+STR_80F4_DARWIN_700                                             :Arwinday 700
+STR_80F5_FFP_HYPERDART_2                                        :FFPay Yperdarthay 2
+STR_80F6_DINGER_200                                             :Ingerday 200
+STR_80F7_DINGER_1000                                            :Ingerday 1000
+STR_80F8_PLODDYPHUT_100                                         :Oddyphutplay 100
+STR_80F9_PLODDYPHUT_500                                         :Oddyphutplay 500
+STR_80FA_FLASHBANG_X1                                           :Ashbangflay Xay1
+STR_80FB_JUGGERPLANE_M1                                         :Uggerplanejay May1
+STR_80FC_FLASHBANG_WIZZER                                       :Ashbangflay Izzerway
+STR_80FD_TRICARIO_HELICOPTER                                    :Icariotray Elicopterhay
+STR_80FE_GURU_X2_HELICOPTER                                     :Urugay Xay2 Elicopterhay
+STR_80FF_POWERNAUT_HELICOPTER                                   :Owernautpay Elicopterhay
+STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Essagemay omfray ehiclevay anufacturermay
+STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Eway avehay ustjay esignedday away ewnay {STRING} - ouldway ouyay ebay interestedway inway away ear'syay exclusiveway useway ofway isthay ehiclevay, osay eway ancay eesay owhay itway erformspay eforebay akingmay itway universallyway availableway?
+STR_8102_RAILROAD_LOCOMOTIVE                                    :ailwayray ocomotivelay
+STR_8103_ROAD_VEHICLE                                           :oadray ehiclevay
+STR_8104_AIRCRAFT                                               :aircraftway
+STR_8105_SHIP                                                   :ipshay
+STR_8106_MONORAIL_LOCOMOTIVE                                    :onorailmay ocomotivelay
+STR_8107_MAGLEV_LOCOMOTIVE                                      :aglevmay ocomotivelay
+
+##id 0x8800
+STR_8800_TRAIN_DEPOT                                            :{WHITE}{TOWN} Aintray Epotday
+STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay aintray arrivesway atway {STATION}!
+STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
+STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Aintray inway ethay ayway
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8806_GO_TO                                                  :Ogay otay {STATION}
+STR_GO_TO_TRANSFER                                              :Ogay otay {STATION} (Ansfertray andway aketay argocay)
+STR_8807_GO_TO_UNLOAD                                           :Ogay otay {STATION} (Unloadway)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ogay otay {STATION} (Ansfertray andway eavelay emptyway)
+STR_8808_GO_TO_LOAD                                             :Ogay otay {STATION} (Oadlay)
+STR_GO_TO_TRANSFER_LOAD                                         :Ogay otay {STATION} (Ansfertray andway aitway orfay ullfay oadlay)
+STR_880A_GO_NON_STOP_TO                                         :Ogay onnay-opstay otay {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ogay onnay-opstay otay {STATION} (Ansfertray andway aketay argocay)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ogay onnay-opstay otay {STATION} (Unloadway)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ogay onnay-opstay otay {STATION} (Ansfertray andway eavelay emptyway)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ogay onnay-opstay otay {STATION} (Oadlay)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ogay onnay-opstay otay {STATION} (Ansfertray andway aitway orfay ullfay oadlay)
+STR_GO_TO_TRAIN_DEPOT                                           :Ogay otay {TOWN} Aintray Epotday
+STR_SERVICE_AT_TRAIN_DEPOT                                      :Ervicesay atway {TOWN} Aintray Epotday
+STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ogay onnay-opstay otay {TOWN} Aintray Epotday
+STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Ervicesay onnay-opstay atway {TOWN} Aintray Epotday
+
+STR_TIMETABLE_GO_TO                                             :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Aveltray (otnay imetabledtay)
+STR_TIMETABLE_TRAVEL_FOR                                        :Aveltray orfay {STRING}
+STR_TIMETABLE_STAY_FOR                                          :andway aystay orfay {STRING}
+STR_TIMETABLE_DAYS                                              :{COMMA} ay{P "" s}day
+STR_TIMETABLE_TICKS                                             :{COMMA} ick{P "" s}tay
+
+STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Eadinghay orfay {TOWN} Aintray Epotday
+STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Eadinghay orfay {TOWN} Aintray Epotday, {VELOCITY}
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Ervicesay atway {TOWN} Aintray Epotday
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL                         :{LTBLUE}Ervicesay atway {TOWN} Aintray Epotday, {VELOCITY}
+
+STR_INVALID_ORDER                                               :{RED} (Invalidway Orderway)
+
+STR_UNKNOWN_DESTINATION                                         :unknownway estinationday
+STR_8812_EMPTY                                                  :{LTBLUE}Emptyway
+STR_8813_FROM                                                   :{LTBLUE}{CARGO} omfray {STATION}
+STR_FROM_MULT                                                   :{LTBLUE}{CARGO} omfray {STATION} (xay{NUM})
+STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Aintray {COMMA} isway aitingway inway epotday
+STR_8815_NEW_VEHICLES                                           :{BLACK}Ewnay Ehiclesvay
+STR_8816                                                        :{BLACK}-
+STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Aintray ootay onglay
+STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Ainstray ancay onlyway ebay alteredway enwhay oppedstay insideway away epotday
+STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Ain{P "" s}tray
+
+STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Ewnay Ailray Ehiclesvay
+STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Ewnay Electricway Ailray Ehiclesvay
+STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Ewnay Onorailmay Ehiclesvay
+STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Ewnay Aglevmay Ehiclesvay
+STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Ailray Ehiclesvay
+
+STR_881F_BUILD_VEHICLE                                          :{BLACK}Uildbay Ehiclevay
+STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Oneclay Ehiclevay
+STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}Isthay illway uildbay away opycay ofway ethay oadray ehiclevay. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}Isthay illway uildbay away opycay ofway away oadray ehiclevay. Ickclay isthay uttonbay andway enthay onway away oadray ehiclevay insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_CLONE_TRAIN                                                 :{BLACK}Oneclay Aintray
+STR_CLONE_TRAIN_INFO                                            :{BLACK}Isthay illway uildbay away opycay ofway ethay aintray includingway allway arscay. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Isthay illway uildbay away opycay ofway away aintray includingway allway arscay. Ickclay isthay uttonbay andway enthay onway away aintray insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_8820_RENAME                                                 :{BLACK}Enameray
+STR_8823_SKIP                                                   :{BLACK}Ipskay
+STR_8824_DELETE                                                 :{BLACK}Eleteday
+STR_8825_NON_STOP                                               :{BLACK}Onnay-Opstay
+STR_8826_GO_TO                                                  :{BLACK}Ogay Otay
+STR_8827_FULL_LOAD                                              :{BLACK}Ullfay Oadlay
+STR_8828_UNLOAD                                                 :{BLACK}Unloadway
+STR_REFIT                                                       :{BLACK}Efitray
+STR_REFIT_TIP                                                   :{BLACK}Electsay atwhay argocay ypetay otay efitray otay inway isthay orderway. Ontrolcay ickclay otay emoveray efitray instructionway
+STR_REFIT_ORDER                                                 :(Efitray otay {STRING})
+STR_TIMETABLE_VIEW                                              :{BLACK}Imetabletay
+STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Itchsway otay ethay imetabletay iewvay
+STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Ordersway)
+STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Endway ofway Ordersway - -
+STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
+STR_SERVICE                                                     :{BLACK}Ervicesay
+STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}An'tcay uildbay ailwayray ehiclevay...
+STR_882C_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
+STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Aluevay: {LTBLUE}{CURRENCY}
+STR_882E                                                        :{WHITE}{VEHICLE}
+STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Oadinglay / Unloadingway
+STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Aintray ustmay ebay oppedstay insideway away epotday
+STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}An'tcay endsay aintray otay epotday...
+STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Onay oremay acespay orfay ordersway
+STR_8832_TOO_MANY_ORDERS                                        :{WHITE}Ootay anymay ordersway
+STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}An'tcay insertway ewnay orderway...
+STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}An'tcay eleteday isthay orderway...
+STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}An'tcay odifymay isthay orderway...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}An'tcay ovemay isthay orderway...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}An'tcay ipskay urrentcay orderway...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}An'tcay ipskay otay electedsay orderway...
+STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}An'tcay ovemay ehiclevay...
+STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Ethay earray engineway illway alwaysway ollowfay itsway ontfray ounterpartcay
+STR_8838_N_A                                                    :Nay/Away{SKIP}
+STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}An'tcay ellsay ailwayray ehiclevay...
+STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Unableway otay indfay outeray otay ocallay epotday
+STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}An'tcay opstay/artstay aintray...
+STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Ervicingsay intervalway: {LTBLUE}{COMMA}aysday{BLACK}   Astlay ervicesay: {LTBLUE}{DATE_LONG}
+STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Ervicingsay intervalway: {LTBLUE}{COMMA}%{BLACK}   Astlay ervicesay: {LTBLUE}{DATE_LONG}
+STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Ainstray - ickclay onway aintray orfay informationway
+STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Uildbay ewnay ainstray (equiresray aintray epotday)
+STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Ainstray - ickclay onway aintray orfay infoway., agdray ehiclevay otay addway/emoveray omfray aintray
+STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Uildbay ewnay aintray ehiclevay
+STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Agdray aintray ehiclevay otay erehay otay ellsay itway
+STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Entrecay ainmay iewvay onway aintray epotday ocationlay
+STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Aintray ehiclevay electionsay istlay - ickclay onway ehiclevay orfay informationway
+STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Uildbay ethay ighlightedhay aintray ehiclevay
+STR_8845_RENAME_TRAIN_VEHICLE_TYPE                              :{BLACK}Enameray aintray ehiclevay ypetay
+STR_8846_CURRENT_TRAIN_ACTION_CLICK                             :{BLACK}Urrentcay aintray actionway - ickclay erehay otay opstay/artstay aintray
+STR_8847_SHOW_TRAIN_S_ORDERS                                    :{BLACK}Owshay ain'stray ordersway
+STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Entrecay ainmay iewvay onway ain'stray ocationlay
+STR_8849_SEND_TRAIN_TO_DEPOT                                    :{BLACK}Endsay aintray otay epotday. CTRLay+ickclay illway onlyway ervicesay
+STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Orcefay aintray otay oceedpray ithoutway aitingway orfay ignalsay otay earclay itway
+STR_884B_REVERSE_DIRECTION_OF_TRAIN                             :{BLACK}Everseray irectionday ofway aintray
+STR_884C_SHOW_TRAIN_DETAILS                                     :{BLACK}Owshay aintray etailsday
+STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Increaseway ervicingsay intervalway
+STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Ecreaseday ervicingsay intervalway
+STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Owshay etailsday ofway argocay arriedcay
+STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Owshay etailsday ofway aintray ehiclesvay
+STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Owshay apacitiescay ofway eachway ehiclevay
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Owshay otaltay apacitycay ofway aintray, itsplay ybay argocay ypetay
+STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordersway istlay - ickclay onway anway orderway otay ighlighthay itway. CTRLay + ickclay ollsscray otay ethay ationstay
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Ipskay ethay urrentcay orderway, andway artstay ethay extnay. CTRLay + ickclay ipsskay otay ethay electedsay orderway
+STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eleteday ethay ighlightedhay orderway
+STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway onnay-opstay
+STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insertway away ewnay orderway eforebay ethay ighlightedhay orderway, orway addway otay endway ofway istlay
+STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay aitway orfay away ullfay oadlay
+STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay unloadway
+STR_TIMETABLE_TOOLTIP                                           :{BLACK}Imetabletay - ickclay onway anway orderway otay ighlighthay itway.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP                                 :{BLACK}Angechay ethay amountway ofway imetay atthay ethay ighlightedhay orderway ouldshay aketay
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP                                :{BLACK}Earclay ethay amountway ofway imetay orfay ethay ighlightedhay orderway
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP                            :{BLACK}Esetray ethay atenesslay ountercay, osay ethay ehiclevay illway ebay onway imetay
+STR_SERVICE_HINT                                                :{BLACK}Ipskay isthay orderway unlessway away ervicesay isway eedednay
+STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Ostcay: {CURRENCY} Eightway: {WEIGHT_S}{}Eedspay: {VELOCITY}  Owerpay: {POWER}{}Unningray Ostcay: {CURRENCY}/yray{}Apacitycay: {CARGO}
+STR_885C_BROKEN_DOWN                                            :{RED}Okenbray ownday
+STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Eightway: {LTBLUE}{WEIGHT_S}  {BLACK}Owerpay: {LTBLUE}{POWER}{BLACK} Axmay. eedspay: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Eightway: {LTBLUE}{WEIGHT_S} {BLACK}Owerpay: {LTBLUE}{POWER}{BLACK} Axmay. eedspay: {LTBLUE}{VELOCITY} {BLACK}Axmay. Tay.Eway.: {LTBLUE}{FORCE}
+STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
+STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
+STR_8861_STOPPED                                                :{RED}Oppedstay
+STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}An'tcay akemay aintray asspay ignalsay atway angerday...
+STR_8863_CRASHED                                                :{RED}Ashedcray!
+
+STR_8865_NAME_TRAIN                                             :{WHITE}Amenay aintray
+STR_8866_CAN_T_NAME_TRAIN                                       :{WHITE}An'tcay amenay aintray...
+STR_8867_NAME_TRAIN                                             :{BLACK}Amenay aintray
+STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Aintray Ashcray!{}{COMMA} ieday inway ireballfay afterway ollisioncay
+STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}An'tcay everseray irectionday ofway aintray...
+STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Enameray aintray ehiclevay ypetay
+STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}An'tcay enameray aintray ehiclevay ypetay...
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Akemay ethay ighlightedhay orderway orcefay ethay ehiclevay otay umpday argocay
+STR_TRANSFER                                                    :{BLACK}Ansfertray
+STR_CLEAR_TIME                                                  :{BLACK}Angechay Imetay
+STR_RESET_LATENESS                                              :{BLACK}Esetray Atelay Ountercay
+
+STR_TRAIN_STOPPING                                              :{RED}Oppingstay
+STR_TRAIN_STOPPING_VEL                                          :{RED}Oppingstay, {VELOCITY}
+STR_INCOMPATIBLE_RAIL_TYPES                                     :Incompatibleway ailray ypestay
+STR_TRAIN_NO_POWER                                              :{RED}Onay owerpay
+STR_TRAIN_START_NO_CATENARY                                     :Isthay acktray ackslay atenarycay, osay ethay aintray an'tcay artstay
+
+STR_NEW_VEHICLE_NOW_AVAILABLE                                   :{BLACK}{BIGFONT}Ewnay {STRING} ownay availableway!
+STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{ENGINE}
+STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Ewnay {STRING} ownay availableway!  -  {ENGINE}
+
+STR_CAN_T_SELL_DESTROYED_VEHICLE                                :{WHITE}An'tcay ellsay estroyedday ehiclevay...
+STR_CAN_T_REFIT_DESTROYED_VEHICLE                               :{WHITE}An'tcay efitray estroyedday ehiclevay...
+
+STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Ancay otnay imetabletay ehiclevay...
+STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Ehiclesvay ancay onlyway aitway atway ationsstay.
+STR_TIMETABLE_NOT_STOPPING_HERE                                 :{WHITE}Isthay ehiclevay isway otnay oppingstay atway isthay ationstay.
+STR_TIMETABLE_CHANGE_TIME                                       :{BLACK}Angechay Imetay
+STR_TIMETABLE_STATUS_ON_TIME                                    :Isthay ehiclevay isway urrentlycay unningray onway imetay
+STR_TIMETABLE_STATUS_LATE                                       :Isthay ehiclevay isway urrentlycay unningray {STRING} atelay
+STR_TIMETABLE_STATUS_EARLY                                      :Isthay ehiclevay isway urrentlycay unningray {STRING} earlyway
+STR_TIMETABLE_TOTAL_TIME                                        :Isthay imetabletay illway aketay {STRING} otay ompletecay
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE                             :Isthay imetabletay illway aketay atway eastlay {STRING} otay ompletecay (otnay allway imetabledtay)
+STR_TIMETABLE_AUTOFILL                                          :{BLACK}Autofillway
+STR_TIMETABLE_AUTOFILL_TOOLTIP                                  :{BLACK}Fill thIllfay ethay imetabletay automaticallyway ithway ethay aluesvay omfray ethay irstfay ourneyjay
+
+##id 0x9000
+STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Oadray ehiclevay inway ethay ayway
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} Oadray Ehicle{P "" s}vay
+STR_9002                                                        :{WHITE}{VEHICLE}
+STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Oadray Ehiclevay Epotday
+STR_9004_NEW_VEHICLES                                           :{BLACK}Ewnay Ehiclesvay
+STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Ewnay Oadray Ehiclesvay
+STR_9007_BUILD_VEHICLE                                          :{BLACK}Uildbay Ehiclevay
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}An'tcay uildbay oadray ehiclevay...
+STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
+STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
+STR_900E_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
+STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
+STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
+STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
+STR_9012_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
+STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...ustmay ebay oppedstay insideway away oadray ehiclevay epotday
+STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}An'tcay ellsay oadray ehiclevay...
+STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}An'tcay opstay/artstay oadray ehiclevay...
+STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Oadray ehiclevay {COMMA} isway aitingway inway epotday
+STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Eadinghay orfay {TOWN} Oadray Epotday
+STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Eadinghay orfay {TOWN} Oadray Epotday, {VELOCITY}
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Ervicesay atway {TOWN} Oadray Epotday
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Ervicesay atway {TOWN} Oadray Epotday, {VELOCITY}
+STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}An'tcay endsay ehiclevay otay epotday...
+STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Unableway otay indfay ocallay epotday
+STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}Oadray ehiclesvay - ickclay onway ehiclevay orfay informationway
+STR_901B_BUILD_NEW_ROAD_VEHICLES                                :{BLACK}Uildbay ewnay oadray ehiclesvay (equiresray oadray ehiclevay epotday)
+STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Urrentcay ehiclevay actionway - ickclay erehay otay opstay/artstay ehiclevay
+STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Owshay ehicle'svay ordersway
+STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Entrecay ainmay iewvay onway ehicle'svay ocationlay
+STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Endsay ehiclevay otay epotday. CTRLay+ickclay illway onlyway ervicesay
+STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}Orcefay ehiclevay otay urntay aroundway
+STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Owshay oadray ehiclevay etailsday
+STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}Ehiclesvay - ickclay onway ehiclevay orfay informationway
+STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Uildbay ewnay oadray ehiclevay
+STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Agdray oadray ehiclevay otay erehay otay ellsay itway
+STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Entrecay ainmay iewvay onway oadray ehiclevay epotday ocationlay
+STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Oadray ehiclevay electionsay istlay - ickclay onway ehiclevay orfay informationway
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Uildbay ethay ighlightedhay oadray ehiclevay
+STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Ostcay: {CURRENCY}{}Eedspay: {VELOCITY}{}Unningray Ostcay: {CURRENCY}/yray{}Apacitycay: {CARGO}
+STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Apacitycay: {LTBLUE}
+STR_BARE_CARGO                                                  :{CARGO}
+
+STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Amenay oadray ehiclevay
+STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}An'tcay amenay oadray ehiclevay...
+STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Amenay oadray ehiclevay
+STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay usbay arrivesway atway {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay ucktray arrivesway atway {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay assengerpay amtray arrivesway atway {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay eightfray amtray arrivesway atway {STATION}!
+STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Oadray Ehiclevay Ashcray!{}Iverdray iesday inway ireballfay afterway ollisioncay ithway aintray
+STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Oadray Ehiclevay Ashcray!{}{COMMA} ieday inway ireballfay afterway ollisioncay ithway aintray
+STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}An'tcay akemay ehiclevay urntay aroundway...
+STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}An'tcay urntay ehiclesvay onsistingcay ofway ultiplemay unitsway
+STR_9034_RENAME                                                 :{BLACK}Enameray
+STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Enameray oadray ehiclevay ypetay
+STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Enameray oadray ehiclevay ypetay
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}An'tcay enameray oadray ehiclevay ypetay...
+STR_GO_TO_ROADVEH_DEPOT                                         :Ogay otay {TOWN} Oadray Ehiclevay Epotday
+STR_SERVICE_AT_ROADVEH_DEPOT                                    :Ervicesay atway {TOWN} Oadray Ehiclevay Epotday
+
+STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Efitray oadray ehiclevay otay arrycay away ifferentday argocay ypetay
+STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Efitray oadray ehiclevay
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Efitray oadray ehiclevay otay arrycay ighlightedhay argocay ypetay
+STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}An'tcay efitray oadray ehiclevay...
+STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay oadray ehiclevay otay arrycay
+
+##id 0x9800
+STR_9800_DOCK_CONSTRUCTION                                      :Ockday onstructioncay
+STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Ockday onstructioncay
+STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}An'tcay uildbay ockday erehay...
+STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN} Ipshay Epotday
+STR_9804_NEW_SHIPS                                              :{BLACK}Ewnay Ipsshay
+STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} Ip{P "" s}shay
+STR_9808_NEW_SHIPS                                              :{WHITE}Ewnay Ipsshay
+STR_9809_BUILD_SHIP                                             :{BLACK}Uildbay Ipshay
+STR_CLONE_SHIP                                                  :{BLACK}Oneclay Ipshay
+STR_CLONE_SHIP_INFO                                             :{BLACK}Isthay illway uildbay away opycay ofway ethay ipshay. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Isthay illway uildbay away opycay ofway away ipshay. Ickclay isthay uttonbay andway enthay onway away ipshay insideway orway outsideway ethay epotday. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Ipshay ustmay ebay oppedstay inway epotday
+STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}An'tcay ellsay ipshay...
+STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}An'tcay uildbay ipshay...
+STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Ipshay inway ethay ayway
+STR_980F                                                        :{WHITE}{VEHICLE}
+STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
+STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
+STR_9813_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
+STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
+STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
+STR_9816_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
+STR_9817_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
+STR_9818_CAN_T_STOP_START_SHIP                                  :{WHITE}An'tcay opstay/artstay ipshay...
+STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}An'tcay endsay ipshay otay epotday...
+STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Unableway otay indfay ocallay epotday
+STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Eadinghay orfay {TOWN} Ipshay Epotday
+STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Eadinghay orfay {TOWN} Ipshay Epotday, {VELOCITY}
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Ervicesay atway {TOWN} Ipshay Epotday
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Ervicesay atway {TOWN} Ipshay Epotday, {VELOCITY}
+STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}Ipshay {COMMA} isway aitingway inway epotday
+STR_981D_BUILD_SHIP_DOCK                                        :{BLACK}Uildbay ipshay ockday
+STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING                          :{BLACK}Uildbay ipshay epotday (orfay uildingbay andway ervicingsay ipsshay)
+STR_981F_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Ipsshay - ickclay onway ipshay orfay informationway
+STR_9820_BUILD_NEW_SHIP                                         :{BLACK}Uildbay ewnay ipshay
+STR_9821_DRAG_SHIP_TO_HERE_TO_SELL                              :{BLACK}Agdray ipshay otay erehay otay ellsay itway
+STR_9822_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Entrecay ainmay iewvay onway ipshay epotday ocationlay
+STR_9823_SHIPS_CLICK_ON_SHIP_FOR                                :{BLACK}Ipsshay - ickclay onway ipshay orfay informationway
+STR_9824_BUILD_NEW_SHIPS_REQUIRES                               :{BLACK}Uildbay ewnay ipsshay (equiresray ipshay epotday)
+STR_9825_SHIP_SELECTION_LIST_CLICK                              :{BLACK}Ipshay electionsay istlay - ickclay onway ipshay orfay informationway
+STR_9826_BUILD_THE_HIGHLIGHTED_SHIP                             :{BLACK}Uildbay ethay ighlightedhay ipshay
+STR_9827_CURRENT_SHIP_ACTION_CLICK                              :{BLACK}Urrentcay ipshay actionway - ickclay erehay otay opstay/artstay ipshay
+STR_9828_SHOW_SHIP_S_ORDERS                                     :{BLACK}Owshay ip'sshay ordersway
+STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Entrecay ainmay iewvay onway ip'sshay ocationlay
+STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Endsay ipshay otay epotday. CTRLay+ickclay illway onlyway ervicesay
+STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Owshay ipshay etailsday
+STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Ostcay: {CURRENCY} Axmay. Eedspay: {VELOCITY}{}Apacitycay: {CARGO}{}Unningray Ostcay: {CURRENCY}/yray
+STR_982F_NAME_SHIP                                              :{BLACK}Amenay ipshay
+
+STR_9831_NAME_SHIP                                              :{WHITE}Amenay ipshay
+STR_9832_CAN_T_NAME_SHIP                                        :{WHITE}An'tcay amenay ipshay...
+STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay ipshay arrivesway atway {STATION}!
+STR_9834_POSITION_BUOY_WHICH_CAN                                :{BLACK}Aceplay away uoybay ichwhay ancay ebay usedway asway away aypointway
+STR_9835_CAN_T_POSITION_BUOY_HERE                               :{WHITE}An'tcay aceplay uoybay erehay...
+STR_9836_RENAME                                                 :{BLACK}Enameray
+STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Enameray ipshay ypetay
+STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Enameray ipshay ypetay
+STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}An'tcay enameray ipshay ypetay...
+STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Efitray argocay ipshay otay arrycay away ifferentday argocay ypetay
+STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Efitray)
+STR_983C_REFIT_SHIP                                             :{BLACK}Efitray ipshay
+STR_983D_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay ipshay otay arrycay
+STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Efitray ipshay otay arrycay ighlightedhay argocay ypetay
+STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Electsay argocay ypetay otay arrycay:
+STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Ewnay apacitycay: {GOLD}{CARGO}{}{BLACK}Ostcay ofway efitray: {GOLD}{CURRENCY}
+STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}An'tcay efitray ipshay...
+STR_9842_REFITTABLE                                             :(efittableray)
+STR_GO_TO_SHIP_DEPOT                                            :Ogay otay {TOWN} Ipshay Epotday
+SERVICE_AT_SHIP_DEPOT                                           :Ervicesay atway {TOWN} Ipshay Epotday
+
+##id 0xA000
+STR_A000_AIRPORTS                                               :{WHITE}Airportsway
+STR_A001_CAN_T_BUILD_AIRPORT_HERE                               :{WHITE}An'tcay uildbay airportway erehay...
+STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Aircraftway Angarhay
+STR_A003_NEW_AIRCRAFT                                           :{BLACK}Ewnay Aircraftway
+STR_CLONE_AIRCRAFT                                              :{BLACK}Oneclay Aircraftway
+STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}Isthay illway uildbay away opycay ofway ethay aircraftway. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}Isthay illway uildbay away opycay ofway anway aircraftway. Ickclay isthay uttonbay andway enthay onway anway aircraftway insideway orway outsideway ethay angarhay. Ontrolcay-ickclay illway areshay ethay ordersway
+STR_A005_NEW_AIRCRAFT                                           :{WHITE}Ewnay Aircraftway
+STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Uildbay Aircraftway
+STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}An'tcay uildbay aircraftway...
+STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} Aircraftway
+STR_A00A                                                        :{WHITE}{VEHICLE}
+STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Ordersway)
+STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Etailsday)
+STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Ageway: {LTBLUE}{STRING}{BLACK}   Unningray Ostcay: {LTBLUE}{CURRENCY}/yray
+STR_A00E_MAX_SPEED                                              :{BLACK}Axmay. eedspay: {LTBLUE}{VELOCITY}
+STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Ofitpray isthay earyay: {LTBLUE}{CURRENCY}  (astlay earyay: {CURRENCY})
+STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Eliabilityray: {LTBLUE}{COMMA}%  {BLACK}Eakdownsbray incesay astlay ervicesay: {LTBLUE}{COMMA}
+STR_A011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Uiltbay: {LTBLUE}{NUM}{BLACK} Aluevay: {LTBLUE}{CURRENCY}
+STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}An'tcay endsay aircraftway otay angarhay...
+STR_HEADING_FOR_HANGAR                                          :{ORANGE}Eadinghay orfay {STATION} Angarhay
+STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Eadinghay orfay {STATION} Angarhay, {VELOCITY}
+STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Ervicesay atway {STATION} Angarhay
+STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Ervicesay atway {STATION} Angarhay, {VELOCITY}
+STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Aircraftway {COMMA} isway aitingway inway ethay aircraftway angarhay
+STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Aircraftway inway ethay ayway
+STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}An'tcay opstay/artstay aircraftway...
+STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Aircraftway isway inway ightflay
+STR_A019_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}, {CARGO}
+STR_A01A_CAPACITY                                               :{BLACK}Apacitycay: {LTBLUE}{CARGO}
+STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Aircraftway ustmay ebay oppedstay inway angarhay
+STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}An'tcay ellsay aircraftway...
+STR_A01D_AIRPORT_CONSTRUCTION                                   :Airportway onstructioncay
+STR_A01E_BUILD_AIRPORT                                          :{BLACK}Uildbay airportway
+STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aircraftway - ickclay onway aircraftway orfay informationway
+STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Uildbay ewnay aircraftway (equiresray airportway ithway angarhay)
+STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aircraftway - ickclay onway aircraftway orfay informationway
+STR_A022_BUILD_NEW_AIRCRAFT                                     :{BLACK}Uildbay ewnay aircraftway
+STR_A023_DRAG_AIRCRAFT_TO_HERE_TO                               :{BLACK}Agdray aircraftway otay erehay otay ellsay itway
+STR_A024_CENTER_MAIN_VIEW_ON_HANGAR                             :{BLACK}Entrecay ainmay iewvay onway angarhay ocationlay
+STR_A025_AIRCRAFT_SELECTION_LIST                                :{BLACK}Aircraftway electionsay istlay - ickclay onway aircraftway orfay informationway
+STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT                         :{BLACK}Uildbay ethay ighlightedhay aircraftway
+STR_A027_CURRENT_AIRCRAFT_ACTION                                :{BLACK}Urrentcay aircraftway actionway - ickclay erehay otay opstay/artstay aircraftway
+STR_A028_SHOW_AIRCRAFT_S_ORDERS                                 :{BLACK}Owshay aircraft'sway ordersway
+STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Entrecay ainmay iewvay onway aircraft'sway ocationlay
+STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Endsay aircraftway otay angarhay. CTRLay+ickclay illway onlyway ervicesay
+STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Owshay aircraftway etailsday
+STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Ostcay: {CURRENCY} Axmay. Eedspay: {VELOCITY}{}Apacitycay: {COMMA} assengerspay, {COMMA} agsbay ofway ailmay{}Unningray Ostcay: {CURRENCY}/yray
+
+STR_A030_NAME_AIRCRAFT                                          :{WHITE}Amenay aircraftway
+STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}An'tcay amenay aircraftway...
+STR_A032_NAME_AIRCRAFT                                          :{BLACK}Amenay aircraftway
+STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Itizenscay elebratecay . . .{}Irstfay aircraftway arrivesway atway {STATION}!
+STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Aneplay Ashcray!{}{COMMA} ieday inway ireballfay atway {STATION}
+STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Aneplay Ashcray!{}Aircraftway anray outway ofway uelfay, {COMMA} ieday inway ireballfay!
+STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
+STR_A037_RENAME                                                 :{BLACK}Enameray
+STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Enameray aircraftway ypetay
+STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Enameray aircraftway ypetay
+STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}An'tcay enameray aircraftway ypetay...
+STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Efitray aircraftway otay arrycay away ifferentday argocay ypetay
+STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Efitray)
+STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Efitray aircraftway
+STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Electsay ypetay ofway argocay orfay aircraftway otay arrycay
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Efitray aircraftway otay arrycay ighlightedhay argocay ypetay
+STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Electsay argocay ypetay otay arrycay:
+STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Ewnay apacitycay: {GOLD}{STRING}{}{BLACK}Ostcay ofway efitray: {GOLD}{CURRENCY}
+STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}An'tcay efitray aircraftway...
+STR_GO_TO_AIRPORT_HANGAR                                        :Ogay otay {STATION} Angarhay
+SERVICE_AT_AIRPORT_HANGAR                                       :Ervicesay atway {STATION} Angarhay
+
+STR_TIMETABLE_TITLE                                             :{WHITE}{VEHICLE} (Imetabletay)
+
+##id 0xB000
+STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Eppelinzay isasterday atway {STATION}!
+STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Oadray ehiclevay estroyedday inway 'UFO'WAY ollisioncay!
+STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Oilway efineryray explosionway earnay {TOWN}!
+STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}Actoryfay estroyedday inway uspicioussay ircumstancescay earnay {TOWN}!
+STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}'UFO'WAY andslay earnay {TOWN}!
+STR_B005_COAL_MINE_SUBSIDENCE_LEAVES                            :{BLACK}{BIGFONT}Oalcay inemay ubsidencesay eaveslay ailtray ofway estructionday earnay {TOWN}!
+STR_B006_FLOOD_VEHICLE_DESTROYED                                :{BLACK}{BIGFONT}Oodsflay!{}Atway eastlay {COMMA} issingmay, esumedpray eadday afterway ignificantsay oodingflay!
+
+STR_BRIBE_FAILED                                                :{WHITE}Ouryay attemptedway ibebray ashay eenbay
+STR_BRIBE_FAILED_2                                              :{WHITE}iscoveredday ybay away egionalray investigatorway
+STR_BUILD_DATE                                                  :{BLACK}Uiltbay: {LTBLUE}{DATE_LONG}
+
+STR_PERFORMANCE_DETAIL                                          :{WHITE}Etailedday erformancepay atingray
+STR_PERFORMANCE_DETAIL_KEY                                      :{BLACK}Etailday
+STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY                          :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
+STR_PERFORMANCE_DETAIL_AMOUNT_INT                               :{BLACK}({COMMA}/{COMMA})
+STR_PERFORMANCE_DETAIL_PERCENT                                  :{WHITE}{NUM}%
+SET_PERFORMANCE_DETAIL_INT                                      :{BLACK}{NUM}
+############ Those following lines need to be in this order!!
+STR_PERFORMANCE_DETAIL_VEHICLES                                 :{BLACK}Ehiclesvay:
+STR_PERFORMANCE_DETAIL_STATIONS                                 :{BLACK}Ationsstay:
+STR_PERFORMANCE_DETAIL_MIN_PROFIT                               :{BLACK}Inmay. ofitpray:
+STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Inmay. incomeway:
+STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Axmay. incomeway:
+STR_PERFORMANCE_DETAIL_DELIVERED                                :{BLACK}Eliveredday:
+STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Argocay:
+STR_PERFORMANCE_DETAIL_MONEY                                    :{BLACK}Oneymay:
+STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Oanlay:
+STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Otaltay:
+############ End of order list
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Umbernay ofway ehiclesvay; isthay includesway oadray ehiclesvay, ainstray, ipsshay andway aircraftway
+STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Umbernay ofway ationstay artspay. Everyway artpay ofway away ationstay (eway.gay. aintray ationstay, usbay opstay, airportway) isway ountedcay, evenway ifway eythay areway onnectedcay asway oneway ationstay
+STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Ethay ofitpray ofway ethay ehiclevay ithway ethay owestlay incomeway (ofway allway ehiclesvay olderway anthay 2 earsyay)
+STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Amountway ofway ashcay ademay inway ethay onthmay ithway ethay owestlay ofitpray ofway ethay astlay 12 artersquay
+STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Amountway ofway ashcay ademay inway ethay onthmay ithway ethay ighesthay ofitpray ofway ethay astlay 12 artersquay
+STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Unitsway ofway argocay eliveredday inway ethay astlay ourfay artersquay
+STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Umbernay ofway ypestay ofway argocay eliveredday inway ethay astlay arterquay
+STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Amountway ofway oneymay isthay ompanycay ashay inway ethay ankbay
+STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Ethay amountway ofway oneymay isthay ompanycay ashay akentay onway oanlay
+STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Otaltay ointspay outway ofway ossiblepay ointspay
+
+STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}EwGRFnay Ettingssay
+STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}EwGRFnay ettingssay
+STR_NEWGRF_APPLY_CHANGES                                        :{BLACK}Applyway angeschay
+STR_NEWGRF_SET_PARAMETERS                                       :{BLACK}Etsay arameterspay
+STR_NEWGRF_TIP                                                  :{BLACK}Away istlay ofway allway ethay Ewgrfnay etssay atthay ouyay avehay installedway. Ickclay away etsay otay angechay ethay ettingssay
+STR_NEWGRF_NO_FILES_INSTALLED                                   :{BLACK}Erethay areway urrentlycay onay ewgrfnay ilesfay installedway! Easeplay eferray otay ethay anualmay orfay instructionsway onway installingway ewnay aphicsgray
+STR_NEWGRF_FILENAME                                             :{BLACK}Ilenamefay: {SILVER}{STRING}
+STR_NEWGRF_GRF_ID                                               :{BLACK}GRFay IDWAY: {SILVER}{STRING}
+STR_NEWGRF_MD5SUM                                               :{BLACK}MDay5umsay: {SILVER}{STRING}
+STR_NEWGRF_CONFIRMATION_TEXT                                    :{YELLOW}Ouyay areway aboutway otay akemay angeschay otay away unningray amegay; isthay ancay ashcray OpenTTDWAY.{}Areway ouyay absolutelyway uresay aboutway isthay?
+
+STR_NEWGRF_ERROR_MSG_INFO                                       :{SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_WARNING                                    :{RED}Arningway: {SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_ERROR                                      :{RED}Errorway: {SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_FATAL                                      :{RED}Atalfay: {SILVER}{STRING}
+STR_NEWGRF_ERROR_VERSION_NUMBER                                 :{STRING} illway otnay orkway ithway ethay AtchtTDPay ersionvay eportedray ybay OpenTTDWAY.
+STR_NEWGRF_ERROR_DOS_OR_WINDOWS                                 :{STRING} isway orfay ethay {STRING} ersionvay ofway TTDay.
+STR_NEWGRF_ERROR_UNSET_SWITCH                                   :{STRING} isway esignedday otay ebay usedway ithway {STRING}
+STR_NEWGRF_ERROR_INVALID_PARAMETER                              :Invalidway arameterpay orfay {STRING}: arameterpay {STRING} ({NUM})
+STR_NEWGRF_ERROR_LOAD_BEFORE                                    :{STRING} ustmay ebay oadedlay eforebay {STRING}.
+STR_NEWGRF_ERROR_LOAD_AFTER                                     :{STRING} ustmay ebay oadedlay afterway {STRING}.
+STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER                            :{STRING} equiresray OpenTTDWAY ersionvay {STRING} orway etterbay.
+STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE                          :ethay GRFay ilefay itway asway esignedday otay anslatetray
+STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED                        :Ootay anymay NewGRFs areway oadedlay.
+
+STR_NEWGRF_ADD                                                  :{BLACK}Addway
+STR_NEWGRF_ADD_TIP                                              :{BLACK}Addway away EwGRFnay ilefay otay ethay istlay
+STR_NEWGRF_REMOVE                                               :{BLACK}Emoveray
+STR_NEWGRF_REMOVE_TIP                                           :{BLACK}Emoveray ethay electedsay EwGRFnay ilefay omfray ethay istlay
+STR_NEWGRF_MOVEUP                                               :{BLACK}Ovemay Upway
+STR_NEWGRF_MOVEUP_TIP                                           :{BLACK}Ovemay ethay electedsay EwGRFnay ilefay upway ethay istlay
+STR_NEWGRF_MOVEDOWN                                             :{BLACK}Ovemay Ownday
+STR_NEWGRF_MOVEDOWN_TIP                                         :{BLACK}Ovemay ethay electedsay EwGRFnay ilefay ownday ethay istlay
+STR_NEWGRF_FILE_TIP                                             :{BLACK}Away istlay ofway ethay EwGRFnay ilesfay atthay areway installedway. Ickclay away ilefay otay angechay itsway arameterspay
+STR_NEWGRF_PARAMETER                                            :{BLACK}Arameterspay: {SILVER}{STRING}
+STR_NEWGRF_PARAMETER_QUERY                                      :{BLACK}Enterway EwGRFnay arameterspay
+STR_NEWGRF_NO_INFO                                              :{BLACK}Onay informationway availableway
+
+STR_NEWGRF_ADD_CAPTION                                          :{WHITE}Availableway EwGRFnay ilesfay
+STR_NEWGRF_ADD_FILE                                             :{BLACK}Addway otay electionsay
+STR_NEWGRF_ADD_FILE_TIP                                         :{BLACK}Addway ethay electedsay EwGRFnay ilefay otay ouryay onfigurationcay
+STR_NEWGRF_RESCAN_FILES                                         :{BLACK}Escanray ilesfay
+STR_NEWGRF_RESCAN_FILES_TIP                                     :{BLACK}Updateway ethay istlay ofway availableway EwGRFnay ilesfay
+STR_NEWGRF_DUPLICATE_GRFID                                      :{WHITE}Annotcay addway ilefay: uplicateday GRFay IDWAY
+
+STR_NEWGRF_NOT_FOUND                                            :{RED}Atchingmay ilefay otnay oundfay
+STR_NEWGRF_DISABLED                                             :{RED}Isabledday
+STR_NEWGRF_COMPATIBLE_LOADED                                    :{ORANGE}Atchingmay ilefay otnay oundfay (ompatiblecay GRFay oadedlay)
+
+STR_NEWGRF_COMPATIBLE_LOAD_WARNING                              :{WHITE}Ompatiblecay GRFay(say) oadedlay orfay issingmay ilesfay
+STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Issingmay GRFay ilefay(say) avehay eenbay isabledday
+STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}Issingmay GRFay ilefay(say) otay ebay ableway otay oadlay amegay
+STR_NEWGRF_UNPAUSE_WARNING_TITLE                                :{YELLOW}Issingmay GRF filesay
+STR_NEWGRF_UNPAUSE_WARNING                                      :{WHITE}Unpausingway ancay ashcray OpenTTD. Oday otnay ilefay ugbay eportsray orfay ubsequentsay ashescray.{}Oday ouyay eallyray antway otay unpauseway?
+
+STR_CURRENCY_WINDOW                                             :{WHITE}Ustomcay urrencycay
+STR_CURRENCY_EXCHANGE_RATE                                      :{LTBLUE}Exchangeway ateray: {ORANGE}{CURRENCY} = £ {COMMA}
+STR_CURRENCY_SEPARATOR                                          :{LTBLUE}Eparatorsay:
+STR_CURRENCY_PREFIX                                             :{LTBLUE}Efixpray:
+STR_CURRENCY_SUFFIX                                             :{LTBLUE}Uffixsay:
+STR_CURRENCY_SWITCH_TO_EURO                                     :{LTBLUE}Itchsway otay Euroway: {ORANGE}{NUM}
+STR_CURRENCY_SWITCH_TO_EURO_NEVER                               :{LTBLUE}Itchsway otay Euroway: {ORANGE}evernay
+STR_CURRENCY_PREVIEW                                            :{LTBLUE}Eviewpray: {ORANGE}{CURRENCY}
+STR_CURRENCY_CHANGE_PARAMETER                                   :{BLACK}Angechay ustomcay urrencycay arameterpay
+
+STR_TRAIN                                                       :{BLACK}{TRAIN}
+STR_BUS                                                         :{BLACK}{BUS}
+STR_LORRY                                                       :{BLACK}{LORRY}
+STR_PLANE                                                       :{BLACK}{PLANE}
+STR_SHIP                                                        :{BLACK}{SHIP}
+
+STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} Ain{P "" s}tray
+STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} Oadray Ehicle{P "" s}vay
+STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Aircraftway
+STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Ip{P "" s}shay
+
+STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Owshay allway ainstray ichwhay avehay isthay ationstay onway eirthay eduleschay
+STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Owshay allway oadray ehiclesvay ichwhay avehay isthay ationstay onway eirthay eduleschay
+STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Owshay allway aircraftway ichwhay avehay isthay ationstay onway eirthay eduleschay
+STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Owshay allway ipsshay ichwhay avehay isthay ationstay onway eirthay eduleschay
+
+STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Aredshay ordersway ofway {COMMA} Ehicle{P "" s}vay
+STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Owshay allway ehiclesvay atthay areshay isthay eduleschay
+
+### depot strings
+STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Ouyay areway aboutway otay ellsay allway ethay ehiclesvay inway ethay epotday. Areway ouyay uresay?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Ongwray epotday ypetay
+
+STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Ellsay allway ainstray inway ethay epotday
+STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Ellsay allway oadray ehiclesvay inway ethay epotday
+STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Ellsay allway ipsshay inway ethay epotday
+STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP                          :{BLACK}Ellsay allway aircraftway inway ethay angarhay
+
+STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Etgay away istlay ofway allway ainstray ithway ethay urrentcay epotday inway eirthay ordersway
+STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Etgay away istlay ofway allway oadray ehiclesvay ithway ethay urrentcay epotday inway eirthay ordersway
+STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Etgay away istlay ofway allway ipsshay ithway ethay urrentcay epotday inway eirthay ordersway
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Etgay away istlay ofway allway aircraftway ithway anyway angarhay atway isthay airportway inway eirthay ordersway
+
+STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Autoreplaceway allway ainstray inway ethay epotday
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Autoreplaceway allway oadray ehiclesvay inway ethay epotday
+STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Autoreplaceway allway ipsshay inway ethay epotday
+STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Autoreplaceway allway aircraftway inway ethay angarhay
+
+STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} Ain{P "" s}tray
+STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} Oadray Ehicle{P "" s}vay
+STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA} Ip{P "" s}shay
+STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA} Aircraftway
+
+STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Eplaceray {STRING}
+STR_REPLACE_VEHICLES_START                                      :{BLACK}Artstay Eplacingray Ehiclesvay
+STR_REPLACE_VEHICLES_STOP                                       :{BLACK}Opstay Eplacingray Ehiclesvay
+STR_NOT_REPLACING                                               :{BLACK}Otnay eplacingray
+STR_NOT_REPLACING_VEHICLE_SELECTED                              :{BLACK}Onay ehiclevay electedsay
+STR_REPLACE_HELP_LEFT_ARRAY                                     :{BLACK}Electsay ethay engineway ypetay otay eplaceray
+STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Electsay ethay ewnay engineway ypetay ouyay ouldway ikelay otay useway inway aceplay ofway ethay eftlay electedsay engineway ypetay
+STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Esspray otay opstay ethay eplacementray ofway ethay engineway ypetay electedsay onway ethay eftlay
+STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Esspray otay eginbay eplacementray ofway ethay eftlay electedsay engineway ypetay ithway ethay ightray electedsay engineway ypetay
+STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Oosechay ethay ailtyperay ouyay antway otay eplaceray enginesway orfay
+STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Isplaysday ichwhay engineway ethay eftlay electedsay engineway isway eingbay eplacedray ithway, ifway anyway
+STR_REPLACE_HELP                                                :{BLACK}Isthay allowsway ouyay otay eplaceray oneway engineway ypetay ithway anotherway ypetay, enwhay ainstray ofway ethay originalway ypetay enterway away epotday
+STR_REPLACE_REMOVE_WAGON                                        :{BLACK}Agonway emovalray: {ORANGE}{SKIP}{STRING}
+STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Akemay autoreplaceway eepkay ethay engthlay ofway away aintray ethay amesay ybay emovingray agonsway (artingstay atway ethay ontfray), ifway eplacingray ethay engineway ouldway akemay ethay aintray ongerlay.
+STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Eplacingray: {ORANGE}{SKIP}{SKIP}{STRING}
+STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} EXPERIMENTALWAY EATUREFay {}Itchsway etweenbay engineway andway agonway eplacementray indowsway.{}Agonway eplacementray illway onlyway ebay oneday ifway ethay ewnay agonway ancay ebay efittedray intoway arryingcay ethay amesay ypetay ofway argocay asway ethay oldway oneway. Isthay isway eckedchay orfay eachway agonway enwhay ethay actualway eplacementray akestay aceplay.
+STR_RAIL_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Ehiclevay isway otnay availableway
+STR_ROAD_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Ehiclevay isway otnay availableway
+STR_SHIP_NOT_AVAILABLE                                          :{WHITE}Ipshay isway otnay availableway
+STR_AIRCRAFT_NOT_AVAILABLE                                      :{WHITE}Aircraftway isway otnay availableway
+
+STR_ENGINES                                                     :Enginesway
+STR_WAGONS                                                      :Agonsway
+
+STR_MASS_STOP_DEPOT_TRAIN_TIP                                   :{BLACK}Ickclay otay opstay allway ethay ainstray insideway ethay epotday
+STR_MASS_STOP_DEPOT_ROADVEH_TIP                                 :{BLACK}Ickclay otay opstay allway ethay oadray ehiclesvay insideway ethay epotday
+STR_MASS_STOP_DEPOT_SHIP_TIP                                    :{BLACK}Ickclay otay opstay allway ethay ipsshay insideway ethay epotday
+STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Ickclay otay opstay allway ethay aircraftway insideway ethay angarhay
+
+STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Ickclay otay artstay allway ethay ainstray insideway ethay epotday
+STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Ickclay otay artstay allway ethay oadray ehiclesvay insideway ethay epotday
+STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Ickclay otay artstay allway ethay ipsshay insideway ethay epotday
+STR_MASS_START_HANGAR_TIP                                       :{BLACK}Ickclay otay artstay allway ethay aircraftway insideway ethay angarhay
+
+STR_MASS_STOP_LIST_TIP                                          :{BLACK}Ickclay otay opstay allway ethay ehiclesvay inway ethay istlay
+STR_MASS_START_LIST_TIP                                         :{BLACK}Ickclay otay artstay allway ethay ehiclesvay inway ethay istlay
+
+STR_SHORT_DATE                                                  :{WHITE}{DATE_TINY}
+STR_SIGN_LIST_CAPTION                                           :{WHITE}Ignsay Istlay - {COMMA} Ign{P "" s}say
+
+STR_ORDER_REFIT_FAILED                                          :{WHITE}Orderway efitray ailurefay oppedstay {STRING} {COMMA}
+
+############ Lists rail types
+
+STR_RAIL_VEHICLES                                               :Ailray Ehiclesvay
+STR_ELRAIL_VEHICLES                                             :Electrifiedway Ailray Ehiclesvay
+STR_MONORAIL_VEHICLES                                           :Onorailmay Ehiclesvay
+STR_MAGLEV_VEHICLES                                             :Aglevmay Ehiclesvay
+
+############ End of list of rail types
+
+STR_TINY_BLACK                                                  :{BLACK}{TINYFONT}{COMMA}
+
+STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Ostcay: {GOLD}{CURRENCY}{BLACK} Eightway: {GOLD}{WEIGHT_S}
+STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Eedspay: {GOLD}{VELOCITY}{BLACK}   Owerpay: {GOLD}{POWER}
+STR_PURCHASE_INFO_SPEED                                         :{BLACK}Eedspay: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Unningray Ostcay: {GOLD}{CURRENCY}/yray
+STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Apacitycay: {GOLD}{CARGO} {STRING}
+STR_PURCHASE_INFO_DESIGNED_LIFE                                 :{BLACK}Esignedday: {GOLD}{NUM}{BLACK} Ifelay: {GOLD}{COMMA} earsyay
+STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Axmay. Eliabilityray: {GOLD}{COMMA}%
+STR_PURCHASE_INFO_COST                                          :{BLACK}Ostcay: {GOLD}{CURRENCY}
+STR_PURCHASE_INFO_WEIGHT_CWEIGHT                                :{BLACK}Eightway: {GOLD}{WEIGHT_S}  ({WEIGHT_S})
+STR_PURCHASE_INFO_COST_SPEED                                    :{BLACK}Ostcay: {GOLD}{CURRENCY}{BLACK} Eedspay: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Apacitycay: {GOLD}{COMMA} assengerspay, {COMMA} agsbay ofway ailmay
+STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Oweredpay Agonsway: {GOLD}+{POWER}{BLACK} Eightway: {GOLD}+{WEIGHT_S}
+STR_PURCHASE_INFO_REFITTABLE_TO                                 :{BLACK}Efittableray otay: {GOLD}
+STR_PURCHASE_INFO_ALL_TYPES                                     :Allway argocay ypestay
+STR_PURCHASE_INFO_ALL_BUT                                       :Allway utbay {GOLD}
+STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Axmay. Activetray Effortway: {GOLD}{FORCE}
+
+########### String for New Landscape Generator
+
+STR_GENERATE                                                    :{WHITE}Enerategay
+STR_RANDOM                                                      :{BLACK}Andomiseray
+STR_RANDOM_HELP                                                 :{BLACK}Angechay ethay andomray eedsay usedway orfay Erraintay Enerationgay
+STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Orldway enerationgay
+STR_RANDOM_SEED                                                 :{BLACK}Andomray Eedsay:
+STR_RANDOM_SEED_HELP                                            :{BLACK}Ickclay otay enterway away andomray eedsay
+STR_LAND_GENERATOR                                              :{BLACK}Andlay eneratorgay:
+STR_TREE_PLACER                                                 :{BLACK}Eetray algorithmway:
+STR_HEIGHTMAP_ROTATION                                          :{BLACK}Eightmaphay otationray:
+STR_TERRAIN_TYPE                                                :{BLACK}Erraintay ypetay:
+STR_QUANTITY_OF_SEA_LAKES                                       :{BLACK}Easay evellay:
+STR_SMOOTHNESS                                                  :{BLACK}Oothnesssmay:
+STR_SNOW_LINE_HEIGHT                                            :{BLACK}Owsnay inelay eighthay:
+STR_DATE                                                        :{BLACK}Ateday:
+STR_NUMBER_OF_TOWNS                                             :{BLACK}Onay. ofway ownstay:
+STR_NUMBER_OF_INDUSTRIES                                        :{BLACK}Onay. ofway industriesway:
+STR_GENERATE_DATE                                               :{BLACK}{DATE_LONG}
+STR_SNOW_LINE_UP                                                :{BLACK}Ovemay ethay owsnay inelay eighthay oneway upway
+STR_SNOW_LINE_DOWN                                              :{BLACK}Ovemay ethay owsnay inelay eighthay oneway ownday
+STR_SNOW_LINE_QUERY_CAPT                                        :{WHITE}Angechay owsnay inelay eighthay
+STR_START_DATE_QUERY_CAPT                                       :{WHITE}Angechay artingstay earyay
+STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Alescay arningway
+STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Esizingray ourcesay apmay ootay uchmay isway otnay ecommendedray. Ontinuecay ithway ethay enerationgay?
+STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Owntay ayoutlay arningway
+STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Ethay owntay ayoutlay "onay oremay oadsray" isway otnay ecommendedray. Ontinuecay ithway ethay enerationgay?
+STR_HEIGHTMAP_NAME                                              :{BLACK}Eightmaphay amenay:
+STR_HEIGHTMAP_SIZE                                              :{BLACK}Izesay: {ORANGE}{NUM} xay {NUM}
+STR_GENERATION_WORLD                                            :{WHITE}Eneratinggay orldway...
+STR_GENERATION_ABORT                                            :{BLACK}Abortway
+STR_GENERATION_ABORT_CAPTION                                    :{WHITE}Abortway Orldway Enerationgay
+STR_GENERATION_ABORT_MESSAGE                                    :{YELLOW}Oday ouyay eallyray antway otay abortway ethay enerationgay?
+STR_PROGRESS                                                    :{WHITE}{NUM}% ompletecay
+STR_GENERATION_PROGRESS                                         :{BLACK}{NUM} / {NUM}
+STR_WORLD_GENERATION                                            :{BLACK}Orldway enerationgay
+STR_TREE_GENERATION                                             :{BLACK}Eetray enerationgay
+STR_UNMOVABLE_GENERATION                                        :{BLACK}Unmovableway enerationgay
+STR_CLEARING_TILES                                              :{BLACK}Oughray andway ockyray areaway enerationgay
+STR_SETTINGUP_GAME                                              :{BLACK}Ettingsay upway amegay
+STR_PREPARING_TILELOOP                                          :{BLACK}Unningray iletay-ooplay
+STR_PREPARING_GAME                                              :{BLACK}Eparingpray amegay
+STR_DIFFICULTY_TO_CUSTOM                                        :{WHITE}Isthay actionway angedchay ethay ifficultyday evellay otay ustomcay
+STR_SE_FLAT_WORLD                                               :{WHITE}Atflay andlay
+STR_SE_FLAT_WORLD_TIP                                           :{BLACK}Enerategay away atflay andlay
+STR_SE_RANDOM_LAND                                              :{WHITE}Andomray andlay
+STR_SE_NEW_WORLD                                                :{BLACK}Eatecray ewnay enarioscay
+STR_SE_CAPTION                                                  :{WHITE}Enarioscay ypetay
+STR_FLAT_WORLD_HEIGHT_DOWN                                      :{BLACK}Ovemay ethay eighthay ofway atflay andlay oneway ownday
+STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Ovemay ethay eighthay ofway atflay andlay oneway upway
+STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Angechay eighthay ofway atflay andlay
+STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Eighthay ofway atflay andlay:
+
+STR_SMALLMAP_CENTER                                             :{BLACK}Entercay ethay allmapsmay onway ethay urrentcay ositionpay
+STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
+
+########### String for new airports
+STR_SMALL_AIRPORT                                               :{BLACK}Allsmay
+STR_CITY_AIRPORT                                                :{BLACK}Itycay
+STR_METRO_AIRPORT                                               :{BLACK}Etropolitanmay airportway
+STR_INTERNATIONAL_AIRPORT                                       :{BLACK}Internationalway airportway
+STR_COMMUTER_AIRPORT                                            :{BLACK}Ommutercay
+STR_INTERCONTINENTAL_AIRPORT                                    :{BLACK}Intercontinentalway
+STR_HELIPORT                                                    :{BLACK}Eliporthay
+STR_HELIDEPOT                                                   :{BLACK}Elidepothay
+STR_HELISTATION                                                 :{BLACK}Elistationhay
+
+STR_SMALL_AIRPORTS                                              :{BLACK}Allsmay airportsway
+STR_LARGE_AIRPORTS                                              :{BLACK}Argelay airportsway
+STR_HUB_AIRPORTS                                                :{BLACK}Ubhay airportsway
+STR_HELIPORTS                                                   :{BLACK}Elicopterhay airportsway
+
+############ Tooltip measurment
+
+STR_MEASURE_LENGTH                                              :{BLACK}Engthlay: {NUM}
+STR_MEASURE_AREA                                                :{BLACK}Areaway: {NUM} xay {NUM}
+STR_MEASURE_LENGTH_HEIGHTDIFF                                   :{BLACK}Engthlay: {NUM}{}Eighthay ifferenceday: {NUM} may
+STR_MEASURE_AREA_HEIGHTDIFF                                     :{BLACK}Areaway: {NUM} xay {NUM}{}Eighthay ifferenceday: {NUM} may
+
+############ Date formatting
+STR_DATE_TINY                                                   :{STRING}-{STRING}-{NUM}
+STR_DATE_SHORT                                                  :{STRING} {NUM}
+STR_DATE_LONG                                                   :{STRING} {STRING} {NUM}
+
+########
+
+STR_FEEDER_CARGO_VALUE                                          :{BLACK}Ansfertray Editscray: {LTBLUE}{CURRENCY}
+STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD                            :{WHITE}...isthay isway away owntay ownedway oadray
+STR_DRIVE_THROUGH_ERROR_DIRECTION                               :{WHITE}...oadray acingfay inway ethay ongwray irectionday
+
+STR_TRANSPARENCY_TOOLB                                          :{WHITE}Ansparencytray Optionsway
+STR_TRANSPARENT_SIGNS_DESC                                      :{BLACK}Oggletay ansparencytray orfay ationstay ignssay
+STR_TRANSPARENT_TREES_DESC                                      :{BLACK}Oggletay ansparencytray orfay eestray
+STR_TRANSPARENT_HOUSES_DESC                                     :{BLACK}Oggletay ansparencytray orfay ouseshay
+STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Oggletay ansparencytray orfay industriesway
+STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Oggletay ansparencytray orfay uildablesbay ikelay ationsstay, epotsday, aypointsway andway atenarycay
+STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Oggletay ansparencytray orfay idgesbray
+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}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Allway ainstray
+STR_GROUP_ALL_ROADS                                             :Allway oadray ehiclesvay
+STR_GROUP_ALL_SHIPS                                             :Allway ipsshay
+STR_GROUP_ALL_AIRCRAFTS                                         :Allway aircraftway
+STR_GROUP_DEFAULT_TRAINS                                        :Ungroupedway ainstray
+STR_GROUP_DEFAULT_ROADS                                         :Ungroupedway oadray ehiclesvay
+STR_GROUP_DEFAULT_SHIPS                                         :Ungroupedway ipsshay
+STR_GROUP_DEFAULT_AIRCRAFTS                                     :Ungroupedway aircraftway
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Addway aredshay ehiclesvay
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Emoveray allway ehiclesvay
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Ain{P "" s}tray
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Oadray Ehicle{P "" s}vay
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Ip{P "" s}shay
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aircraftway
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Enameray away oupgray
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Eplaceray Ehiclesvay ofway "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}An'tcay eatecray oupgray...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}An'tcay eleteday isthay oupgray...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}An'tcay enameray oupgray...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}An'tcay emoveray allway ehiclesvay omfray isthay oupgray...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}An'tcay addway ethay ehiclevay otay isthay oupgray...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}An'tcay addway aredshay ehiclesvay otay oupgray...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Oupsgray - Ickclay onway away oupgray otay istlay allway ehiclesvay ofway isthay oupgray
+STR_GROUP_CREATE_TIP                                            :{BLACK}Ickclay otay eatecray away oupgray
+STR_GROUP_DELETE_TIP                                            :{BLACK}Eleteday ethay electedsay oupgray
+STR_GROUP_RENAME_TIP                                            :{BLACK}Enameray ethay electedsay oupgray
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Ickclay otay otectpray isthay oupgray omfray obalglay autoreplaceway
+
+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
+
+########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Undfay
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Ospectpray
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Uildbay
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Oosechay ethay appropriateway industryway omfray isthay istlay
+
+############ Face formatting
+STR_FACE_ADVANCED                                               :{BLACK}Advancedway
+STR_FACE_ADVANCED_TIP                                           :{BLACK}Advancedway acefay electionsay.
+########
+
+############ signal GUI
+########
--- a/src/lang/polish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/polish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Wymagany płaski teren
 STR_0008_WAITING                                                :{BLACK}Czeka: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (w drodze z
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Akceptuje: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Akceptuje: {GOLD}
 STR_000E                                                        :
@@ -327,9 +325,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Za dużo zdefiniowanych nazw
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Nazwa jest już używana
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -340,11 +338,11 @@
 STR_013C_CARGO                                                  :{BLACK}Ładunek
 STR_013D_INFORMATION                                            :{BLACK}Informacja
 STR_013E_CAPACITIES                                             :{BLACK}Pojemność
-STR_013E_TOTAL_CARGO                                            :{BLACK}Całkowity ładunek
+STR_TOTAL_CARGO                                                 :{BLACK}Całkowity ładunek
 STR_013F_CAPACITY                                               :{BLACK}Pojemność: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Pojemność: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Calkowita pojemność tego pociągu:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Calkowita pojemność tego pociągu:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nowa Gra
 STR_0141_LOAD_GAME                                              :{BLACK}Wczytaj Grę
@@ -352,12 +350,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Gra Wieloosobowa
 STR_SCENARIO_EDITOR                                             :{BLACK}Edytor Scenariuszy
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Rozmiar Mapy:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opcje Gry
@@ -823,7 +815,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Skasuj to miasto
 STR_0292_SAVE_SCENARIO                                          :Zapisz scenariusz
 STR_0293_LOAD_SCENARIO                                          :Wczytaj scenariusz
-STR_LOAD_HEIGHTMAP                                              :Wczytaj mapę wysokości
+STR_MENU_LOAD_HEIGHTMAP                                         :Wczytaj mapę wysokości
 STR_0294_QUIT_EDITOR                                            :Wyjdź z edytora
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Wyjście
@@ -863,9 +855,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opcje gry
-STR_02C5_DIFFICULTY_SETTINGS                                    :Ustawienia trudności
-STR_02C7_CONFIG_PATCHES                                         :Konfiguracja wtyczek
+STR_02C4_GAME_OPTIONS                                           :Opcje gry
+STR_02C6_DIFFICULTY_SETTINGS                                    :Ustawienia trudności
+STR_MENU_CONFIG_PATCHES                                         :Konfiguracja wtyczek
 STR_NEWGRF_SETTINGS                                             :Ustawienia newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Opcje przeźroczystości
 STR_GAMEOPTMENU_0A                                              :
@@ -965,8 +957,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Zapisywanie trwa,{}proszę zaczekać do zakończenia!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Wybierz program 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Angielskie (Oryginalne)
@@ -1740,42 +1732,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Należy najpierw usunąć drogę
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Trwają roboty drogowe
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Tworzenie dróg
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Budowa torowiska tramwajowego
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Budowa torowiska tramwajowego
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Wybierz most drogowy
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... drogi jednokierunkowe nie mogą mieć skrzyżowań
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Nie można tutaj zbudować drogi...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Nie można tutaj zbudować torowiska...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Nie można tutaj zbudować torowiska...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nie można usunąć drogi z tego miejsca...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nie można torowiska z tego miejsca...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nie można torowiska z tego miejsca...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Ukierunkowanie zajezdni samochodowej
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientacja zajezdni
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientacja zajezdni
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nie można tutaj zbudować zajezdni...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Nie można tutaj zbudować zajezdni...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Nie można tutaj zbudować zajezdni...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nie można zbudować przystanku...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nie można zbudować stacji ciężarówek...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nie można zbudować przystanku tramwajowego...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nie można zbudować tramwajowej stacji załadunkowej...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nie można zbudować przystanku tramwajowego...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nie można zbudować tramwajowej stacji załadunkowej...
 STR_180A_ROAD_CONSTRUCTION                                      :Budowa drogi
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Budowa torowiska tramwajowego
+STR_TRAMWAY_CONSTRUCTION                                        :Budowa torowiska tramwajowego
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Budowa dróg
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Budowa drogi używając trybu Autoroad
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Zbuduj fragment torowiska tramwajowego
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Zbuduj fragment torowiska tramwajowego
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Budowa torów tramwajowych używając trybu Autotram
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Zbuduj zajezdnię samochodową (do budowania i serwisowania pojazdów)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Zbuduj zajezdnię tramwajową (do budowania i serwisowania pojazdów)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Zbuduj zajezdnię tramwajową (do budowania i serwisowania pojazdów)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Budowa przystanku
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Zbuduj stację załadunku ciężarówek
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Zbuduj przystanek tramwajowy
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Zbuduj tramwajową stację załadunkową
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Zbuduj przystanek tramwajowy
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Zbuduj tramwajową stację załadunkową
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Budowa mostu drogowego
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Zbuduj most tramwajowy
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Zbuduj most tramwajowy
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Budowa tunelu drogowego
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Zbuduj tunel tramwajowy
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Zbuduj tunel tramwajowy
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Włącz/Wyłącz drogi jednokierunkowe
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Przełącz buduj/usuń dla konstrukcji dróg
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Przełącz buduj/usuń dla konstrukcji torowiska tramwajowego
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Przełącz buduj/usuń dla konstrukcji torowiska tramwajowego
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Wybierz umiejscowienie zajezdni samochodowej
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Wybierz ukierunkowanie zajezdni tramwajowej
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Wybierz ukierunkowanie zajezdni tramwajowej
 STR_1814_ROAD                                                   :Droga
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Droga z oświetleniem ulicznym
 STR_1816_TREE_LINED_ROAD                                        :Droga z drzewami
@@ -1918,8 +1910,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Przylega do więcej niż jednej stacji
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Za dużo stacji w tym mieście
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Za duzo stacji
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Za dużo przystankow autobusowych
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Za dużo  wiele stacji załadunku ciężarówek
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Za dużo przystankow autobusowych
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Za dużo  wiele stacji załadunku ciężarówek
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Zbyt  blisko innej stacji
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Należy najpierw usunąc stację
@@ -1950,12 +1942,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} już akceptuje {STRING} i {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Ukierunkowanie przystanku
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Ukierunkowanie st. załadunku
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Ukierunkowanie przystanku tramwajowego
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Ukierunkowanie tramwajowej stacji załadunkowej
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Ukierunkowanie przystanku tramwajowego
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Ukierunkowanie tramwajowej stacji załadunkowej
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Należy najpierw usunąć przystanek
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Należy najpierw usunąć stację załadunku ciężarówek
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Najpierw musisz zniszczyć przystanek tramwajowy
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Najpierw musisz zniszczyć tramwajową stację załadunkową
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Najpierw musisz zniszczyć przystanek tramwajowy
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Najpierw musisz zniszczyć tramwajową stację załadunkową
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nic -
@@ -1967,8 +1959,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Wybierz długość stacji
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Wybierz ukierunkowanie przystanku
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Ukierunkowanie stacji załadunku ciężarówek
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Wybierz ukierunkowanie przystanku tramwajowego
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Wybierz ukierunkowanie tramwajowej stacji załadunkowej
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Wybierz ukierunkowanie przystanku tramwajowego
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Wybierz ukierunkowanie tramwajowej stacji załadunkowej
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centruj główny widok na stacji
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Pokaż ocenę stacji
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Zmień nazwę stacji
@@ -1990,7 +1982,7 @@
 STR_3069_BUOY                                                   :Boja
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boja na drodze
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...stacja zbyt rozległa
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...niejednorodne  są niedostępne
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...niejednorodne  są niedostępne
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Przytrzymaj CTRL aby zaznaczyć więcej niż jedną opcję
 
 STR_UNDEFINED                                                   :(nieokreślony tekst)
@@ -2031,7 +2023,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Wybierz nowy typ gry
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Wybierz scenariusz (zielony), ustawioną grę (niebieski), lub losową nową grę
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Tworzenie losowej nowej gry
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Wczytaj mapę wysokości
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Wczytaj mapę wysokości
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} na drodze
@@ -2271,10 +2263,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomia: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Zawracanie pociągów: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofy: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Nastawienie władz do zmian okolicznych terenów: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Nastawienie władz do zmian okolicznych terenów: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Brak
+STR_NONE                                                        :Brak
 STR_NUM_VERY_LOW                                                :Bardzo mało
 STR_6816_LOW                                                    :Mało
 STR_6817_NORMAL                                                 :Średnio
@@ -2312,9 +2304,9 @@
 STR_6836_OFF                                                    :Wyłączone
 STR_6837_ON                                                     :Włączone
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Pokaż Najlepsze Wyniki
-STR_6839_PERMISSIVE                                             :Przyjazne
-STR_683A_TOLERANT                                               :Tolerancyjne
-STR_683B_HOSTILE                                                :Wrogie
+STR_PERMISSIVE                                                  :Przyjazne
+STR_TOLERANT                                                    :Tolerancyjne
+STR_HOSTILE                                                     :Wrogie
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2451,7 +2443,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}nie można sprzedać 25% udziałów tej firmy...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% w posiadaniu przez {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} zostało przejęte przez {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Ta firma jeszcze nie sprzedaje akcji...
+STR_PROTECTED                                                   :{WHITE}Ta firma jeszcze nie sprzedaje akcji...
 
 STR_LIVERY_DEFAULT                                              :Standardowy wygląd
 STR_LIVERY_STEAM                                                :Parowóz
@@ -2764,17 +2756,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Idź do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Idź do {STATION} (Przewieź i weź ładunek)
-STR_8808_GO_TO_UNLOAD                                           :Idź do {STATION} (Wyładunek)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Idź do {STATION} (Przewieź i nie bierz ładunku)
-STR_880A_GO_TO_LOAD                                             :Idź do {STATION} (Załadunek)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Idź do {STATION} (Przewieź i czekaj na pełen załadunek)
-STR_880C_GO_NON_STOP_TO                                         :Idź bez zatrzymywania do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Idź bez zatrzymywania do {STATION} (Przewieź i weź ładunek)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Idź bez zatrzymywania do {STATION} (Wyładunek)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Idź bez zatrzymywania do {STATION} (Przewieź i nie bierz ładunku)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Idź bez zatrzymywania do {STATION} (Załadunek)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Idź bez zatrzymywania do {STATION} (Przewieź i czekaj na pełen załadunek)
+STR_GO_TO_TRANSFER                                              :Idź do {STATION} (Przewieź i weź ładunek)
+STR_8807_GO_TO_UNLOAD                                           :Idź do {STATION} (Wyładunek)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Idź do {STATION} (Przewieź i nie bierz ładunku)
+STR_8808_GO_TO_LOAD                                             :Idź do {STATION} (Załadunek)
+STR_GO_TO_TRANSFER_LOAD                                         :Idź do {STATION} (Przewieź i czekaj na pełen załadunek)
+STR_880A_GO_NON_STOP_TO                                         :Idź bez zatrzymywania do {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Idź bez zatrzymywania do {STATION} (Przewieź i weź ładunek)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Idź bez zatrzymywania do {STATION} (Wyładunek)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Idź bez zatrzymywania do {STATION} (Przewieź i nie bierz ładunku)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Idź bez zatrzymywania do {STATION} (Załadunek)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Idź bez zatrzymywania do {STATION} (Przewieź i czekaj na pełen załadunek)
 STR_GO_TO_TRAIN_DEPOT                                           :Idź do zajezdni w {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Serwisuj w zajezdni w {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Idź bez zatrzymywania do zajezdni w {TOWN}
@@ -2878,7 +2870,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaż szczegóły przewożonych ładunków
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Pokaż szczegóły pociągu
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Pokaż pojemność każdego wagonu
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Pokaż całkowitą pojemność pociągu, według typu ładunku
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Pokaż całkowitą pojemność pociągu, według typu ładunku
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista poleceń - klik na poleceniu aby zaznaczyć. CTRL + klik przenosi do stacji
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Pomiń obecne zadanie, i rozpocznij kolejne. CTRL + klik pomija aż do zaznaczonego zadania
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Usuń podświetlone polecenie
@@ -2909,8 +2901,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nie można odwrócić kierunku jazdy pociągu...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Zmiana nazwy typu pociągu
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nie można zmienić nazwy typu pojazdu...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Spraw by w zaznaczonym poleceniu pojazd był zmuszony do pozostawienia ładunku dla kolejnego pojazdu
-STR_886F_TRANSFER                                               :{BLACK}Przewieź
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Spraw by w zaznaczonym poleceniu pojazd był zmuszony do pozostawienia ładunku dla kolejnego pojazdu
+STR_TRANSFER                                                    :{BLACK}Przewieź
 STR_CLEAR_TIME                                                  :{BLACK}Usuń czas
 STR_RESET_LATENESS                                              :{BLACK}Wyzeruj spóźnienia
 
@@ -2988,8 +2980,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Nazwij samochód
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwszy autobus przybył do {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwsza ciężarówka przybyła do {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwszy tramwaj pasażerski przybył do {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwszy tramwaj towarowy przybył do {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwszy tramwaj pasażerski przybył do {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Mieszkańcy świętują . . .{}Pierwszy tramwaj towarowy przybył do {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Wypadek samochodowy!{}Kierowca zginął w zderzeniu z pociągiem
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Wypadek samochodowy!{}{COMMA} ofiar{P a y ""} zderzenia z pociągiem
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nie można zawrócić samochodu...
@@ -2998,7 +2990,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Zmień nazwę typu samochodu
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Zmień nazwę typu samochodu
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nie można zmienić nazwy typu samochodu...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Idź do zajezdni sam. w {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Idź do zajezdni sam. w {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Serwisuj w zajezdni sam. w {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Przebudowa samochodu do przewozu innego typu ładunku
@@ -3399,7 +3391,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Nie zaleca się zbyt dużej zmiany wielkości mapy źrodłowej. Kontynuować tworzenie?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Ostrzeżenie o planie miasta
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Model rozwoju miasta "bez nowych dróg" nie jest polecany. Kontynuować tworzenie?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nazwa mapy wysokosci:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Rozmiar: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Tworzenie świata...
@@ -3425,7 +3416,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Podnieś wysokość terenu o jeden w górę
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Zmień wysokość płaskiego świata
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Wysokość płaskiego świata:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Wyśrodkuj mapę na aktualnej lokalizacji
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/portuguese.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/portuguese.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}É necessário terreno plano
 STR_0008_WAITING                                                :{BLACK}Em espera: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (em rota de
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Aceita: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Aceita: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Demasiados nomes definidos
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}O nome escolhido já está a ser usado
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Carga
 STR_013D_INFORMATION                                            :{BLACK}Informação
 STR_013E_CAPACITIES                                             :{BLACK}Capacidades
-STR_013E_TOTAL_CARGO                                            :{BLACK}Carga Total
+STR_TOTAL_CARGO                                                 :{BLACK}Carga Total
 STR_013F_CAPACITY                                               :{BLACK}Capacidade: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacidade: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Carga total (capacidade) deste comboio:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Carga total (capacidade) deste comboio:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Novo Jogo
 STR_0141_LOAD_GAME                                              :{BLACK}Abrir Jogo
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multi-jogador
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor de Cenário
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Dim. do mapa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opções do Jogo
@@ -736,7 +728,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Apagar completamente esta cidade
 STR_0292_SAVE_SCENARIO                                          :Guardar cenário
 STR_0293_LOAD_SCENARIO                                          :Abrir cenário
-STR_LOAD_HEIGHTMAP                                              :Carregar mapa de alturas
+STR_MENU_LOAD_HEIGHTMAP                                         :Carregar mapa de alturas
 STR_0294_QUIT_EDITOR                                            :Sair do editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Sair
@@ -776,9 +768,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opções do Jogo
-STR_02C5_DIFFICULTY_SETTINGS                                    :Configurações de dificuldade
-STR_02C7_CONFIG_PATCHES                                         :Configurar correcções
+STR_02C4_GAME_OPTIONS                                           :Opções do Jogo
+STR_02C6_DIFFICULTY_SETTINGS                                    :Configurações de dificuldade
+STR_MENU_CONFIG_PATCHES                                         :Configurar correcções
 STR_NEWGRF_SETTINGS                                             :Definições Newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Opções de Transparência
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +870,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Gravação ainda em curso,{}por favor aguarde!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Seleccionar programa 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglês
@@ -941,6 +933,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Ecrã Inteiro
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Seleccione esta opção para jogar o OpenTTD em modo de ecrã inteiro
+STR_FULLSCREEN_FAILED                                           :{WHITE}Modo de ecrã inteiro falhou
 
 STR_OPTIONS_RES                                                 :{BLACK}Resolução do ecrã
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1608,7 +1601,7 @@
 STR_1007_ALREADY_BUILT                                          :{WHITE}...já construído
 STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Deverá remover a linha férrea primeiro
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Construir caminhos-de-ferro
-STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Construir Via Férrea Electrificada
+STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Construir caminhos-de-ferro electrificados
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Construir monocarril
 STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Construir MagLev
 STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Seleccione Ponte Ferroviária
@@ -1620,7 +1613,7 @@
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Não é possível remover sinais daqui...
 STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Orientação do Depósito
 STR_1015_RAILROAD_CONSTRUCTION                                  :Construir caminhos-de-ferro
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Construir Via Férrea Electrificada
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Construir caminhos-de-ferro electrificados
 STR_1016_MONORAIL_CONSTRUCTION                                  :Construir monocarril
 STR_1017_MAGLEV_CONSTRUCTION                                    :Construir MagLev
 STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Construir linha férrea
@@ -1653,42 +1646,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Deverá remover a estrada primeiro
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Trabalhos na estrada em curso
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construir Estradas
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construção de eléctricos
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construção de eléctricos
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Seleccionar Ponte de Estrada
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... estradas de um sentido não podem ter junções
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Não é possível construir estrada aqui...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Não é possível construir carris para eléctricos neste local...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Não é possível construir carris para eléctricos neste local...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Não é possível remover estrada daqui...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Não é possível remover carris para eléctricos deste local...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Não é possível remover carris para eléctricos deste local...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientação do Depósito
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientação do depósito para eléctricos
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientação do depósito para eléctricos
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Não é possível construir depósito de veículos de estrada aqui...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Não é possível construir depósito para eléctricos neste local...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Não é possível construir depósito para eléctricos neste local...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Não é possível construir estação de autocarros...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Não é possível construir estação de carregamento de camiões...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Não é possível construir estação de passageiros para eléctricos...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Não é possível construir estação de carga para eléctricos...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Não é possível construir estação de passageiros para eléctricos...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Não é possível construir estação de carga para eléctricos...
 STR_180A_ROAD_CONSTRUCTION                                      :Construir estradas
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construção de carris para eléctricos
+STR_TRAMWAY_CONSTRUCTION                                        :Construção de carris para eléctricos
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construir estradas
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construir estradas usando o modo automático
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construir secção de carris para eléctricos
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construir secção de carris para eléctricos
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construir carris para eléctricos usando o modo automático
 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_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
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Construir paragem de eléctricos para carga
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Construir paragem de eléctricos para passageiros
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Construir paragem de eléctricos para carga
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construir ponte de estrada
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construir ponte para eléctricos
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construir ponte para eléctricos
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construir túnel de estrada
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construir túnel para eléctricos
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construir túnel para eléctricos
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activar/Desactivar estradas de sentido único
 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_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_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
@@ -1831,8 +1824,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Muito junto de uma estação/local de carga já existente
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Demasiadas estações/locais de carga nesta cidade
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Demasiadas estações/locais de carga
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Demasiadas paragens de autocarro
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Demasiadas estações de carga
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Demasiadas paragens de autocarro
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Demasiadas estações de carga
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Muito junto de uma estação/local de carga
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Precisa de demolir a estação primeiro
@@ -1863,12 +1856,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_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientação da Estação de Eléctricos
+STR_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_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Precisa demolir estação de eléctricos primeiro
+STR_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 -
@@ -1880,8 +1873,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_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Selecionar orientação da estação de eléctricos
+STR_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
@@ -1903,7 +1896,7 @@
 STR_3069_BUOY                                                   :Bóia
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...bóia no caminho
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...estação muito extensa
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...estações não-uniformes desactivadas
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...estações não-uniformes desactivadas
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Manter CTRL premido para seleccionar mais do que um item
 
 STR_UNDEFINED                                                   :(frase indefinida)
@@ -1944,7 +1937,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Seleccionar Novo Tipo de Jogo
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Seleccionar cenário (verde), jogo pré-programado (azul), ou novo jogo aleatório
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Gerar novo jogo aleatório
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Carregar mapa de alturas
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Carregar mapa de alturas
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} no caminho
@@ -2148,10 +2141,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economia: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Inverter comboio: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Desastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Nenhum
+STR_NONE                                                        :Nenhum
 STR_NUM_VERY_LOW                                                :Muito baixo
 STR_6816_LOW                                                    :Baixo
 STR_6817_NORMAL                                                 :Normal
@@ -2189,9 +2182,9 @@
 STR_6836_OFF                                                    :Off
 STR_6837_ON                                                     :On
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Mostrar melhores pontuações
-STR_6839_PERMISSIVE                                             :Permissivo
-STR_683A_TOLERANT                                               :Tolerante
-STR_683B_HOSTILE                                                :Hostil
+STR_PERMISSIVE                                                  :Permissivo
+STR_TOLERANT                                                    :Tolerante
+STR_HOSTILE                                                     :Hostil
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2328,7 +2321,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Não é possível vender 25% de acções nesta empresa...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% propriedade de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} foi comprada por {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Esta empresa ainda não troca acções...
+STR_PROTECTED                                                   :{WHITE}Esta empresa ainda não troca acções...
 
 STR_LIVERY_DEFAULT                                              :Estampagem Padrão
 STR_LIVERY_STEAM                                                :Motor a Vapor
@@ -2341,6 +2334,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Carruagem de Passageiros (Vapor)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Carruagem de Passageiros (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Carruagem de Passageiros (Eléctrica)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Carruagem de Passageiros (Monocarril)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Carruagem de Passageiros (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagão de Carga
 STR_LIVERY_BUS                                                  :Autocarro
 STR_LIVERY_TRUCK                                                :Veículo de Mercadorias
@@ -2635,17 +2630,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ir para {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ir para {STATION} (Transferir e levar carga)
-STR_8808_GO_TO_UNLOAD                                           :Ir para {STATION} (Descarregar)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ir para {STATION} (Transferir e deixar vazio)
-STR_880A_GO_TO_LOAD                                             :Ir para {STATION} (Carregar)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ir para {STATION} (Transferir e aguardar carga completa)
-STR_880C_GO_NON_STOP_TO                                         :Ir sem parar para {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ir sem parar para {STATION} (Transfer ir e levar carga)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ir sem parar para {STATION} (Descarregar)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ir sem parar para {STATION} (Transferir e deixar vazio)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ir sem parar para {STATION} (Carregar)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ir sem parar para {STATION} (Transferir e aguardar carga completa)
+STR_GO_TO_TRANSFER                                              :Ir para {STATION} (Transferir e levar carga)
+STR_8807_GO_TO_UNLOAD                                           :Ir para {STATION} (Descarregar)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ir para {STATION} (Transferir e deixar vazio)
+STR_8808_GO_TO_LOAD                                             :Ir para {STATION} (Carregar)
+STR_GO_TO_TRANSFER_LOAD                                         :Ir para {STATION} (Transferir e aguardar carga completa)
+STR_880A_GO_NON_STOP_TO                                         :Ir sem parar para {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ir sem parar para {STATION} (Transfer ir e levar carga)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ir sem parar para {STATION} (Descarregar)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ir sem parar para {STATION} (Transferir e deixar vazio)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ir sem parar para {STATION} (Carregar)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ir sem parar para {STATION} (Transferir e aguardar carga completa)
 STR_GO_TO_TRAIN_DEPOT                                           :Ir para o depósito de {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Manutenção no depósito de {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ir sem parar para o depósito de {TOWN}
@@ -2749,7 +2744,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Mostrar detalhes da carga transportada
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Mostrar detalhes dos veículos
 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_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
@@ -2780,8 +2775,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Não é possível inverter a direcção do comboio...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renomear tipo de veículo ferroviário
 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_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}A ordem seleccionada forçará o veículo a largar a carga
+STR_TRANSFER                                                    :{BLACK}Transferir
 STR_CLEAR_TIME                                                  :{BLACK}Apagar Tempo
 STR_RESET_LATENESS                                              :{BLACK}Apagar Contad. Atraso
 
@@ -2859,8 +2854,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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro eléctrico de passageiros chega a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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...
@@ -2869,7 +2864,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renomear tipo de veículo de estrada
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renomear tipo de veículo de estrada
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Não é possível renomear tipo de veículo de estrada...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ir para o depósito de {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Ir para o depósito de {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Manutenção no depósito de {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Reconverter veículo para transportar outro tipo de carga
@@ -3243,6 +3238,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Todas menos {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Máx. Força de Tracção: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Criar
@@ -3270,7 +3271,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Redimensionar muito o mapa não é recomendado. Continuar com a criação?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Aviso de disposição da cidade
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}A disposição de cidade "sem mais estradas" não é recomendado. Continuar a geração?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nome mapa de alt.:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Tamanho: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}A gerar mundo...
@@ -3296,7 +3296,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Mover altura da terra plana um nível acima
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Mudar altura da terra plana
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altura da terra plana:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrar o mapa na posição actual
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/romanian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/romanian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesită teren plat
 STR_0008_WAITING                                                :{BLACK}În aşteptare: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (plecat de la
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Acceptă: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Acceptă: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Prea multe nume definite
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Numele ales este deja folosit
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Încãrcãturã
 STR_013D_INFORMATION                                            :{BLACK}Informatii
 STR_013E_CAPACITIES                                             :{BLACK}Capacitãti
-STR_013E_TOTAL_CARGO                                            :{BLACK}Încãrcãturi
+STR_TOTAL_CARGO                                                 :{BLACK}Încãrcãturi
 STR_013F_CAPACITY                                               :{BLACK}Capacitate: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacitate: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Încãrcãtura totalã (capacitatea) acestui tren:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Încãrcãtura totalã (capacitatea) acestui tren:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Joc nou
 STR_0141_LOAD_GAME                                              :{BLACK}Încarcã joc
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multiplayer
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor harta
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Marime harta:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Optiuni
@@ -736,7 +728,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Şterge acest oraş
 STR_0292_SAVE_SCENARIO                                          :Salvează scenariul
 STR_0293_LOAD_SCENARIO                                          :Încarcă scenariu
-STR_LOAD_HEIGHTMAP                                              :Incarca harta de inaltimi
+STR_MENU_LOAD_HEIGHTMAP                                         :Incarca harta de inaltimi
 STR_0294_QUIT_EDITOR                                            :Ieşire din editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Ieşire din joc
@@ -776,9 +768,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opţiunile jocului (F2)
-STR_02C5_DIFFICULTY_SETTINGS                                    :Setări dificultate
-STR_02C7_CONFIG_PATCHES                                         :Configurare patch
+STR_02C4_GAME_OPTIONS                                           :Opţiunile jocului (F2)
+STR_02C6_DIFFICULTY_SETTINGS                                    :Setări dificultate
+STR_MENU_CONFIG_PATCHES                                         :Configurare patch
 STR_NEWGRF_SETTINGS                                             :Setari Newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Optiuni transparenta
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +870,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Salvarea se efectueaza încã,{}vã rugãm asteptati pânã se încheie!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selectează programul muzical 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engleza (Original)
@@ -1654,42 +1646,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Mai întâi trebuie înlăturată şoseaua
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Lucrari la drum in curs de desfasurare
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construcţii rutiere
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construcţie Tramvai
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construcţie Tramvai
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Alege pod rutier
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... drumurile cu sens unic nu pot avea bifurcatii
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Nu pot construi şosea aici...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Nu pot construi şină de tramvai aici...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Nu pot construi şină de tramvai aici...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nu pot înlătura şoseaua...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nu pot înlătura şina de tramvai de aici...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nu pot înlătura şina de tramvai de aici...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientarea autobazei
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientarea Depoului de Tramvaie
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientarea Depoului de Tramvaie
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nu pot construi autobază aici...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Nu pot construi depou de tramvaie aici...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Nu pot construi depou de tramvaie aici...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nu pot construi staţie de autobuz...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nu pot construi platformă pentru camioane...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nu pot construi staţie de tramvai aici...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nu pot construi staţie de tramvai aici...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nu pot construi staţie de tramvai aici...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nu pot construi staţie de tramvai aici...
 STR_180A_ROAD_CONSTRUCTION                                      :Construcţii rutiere
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construcţie tramvai
+STR_TRAMWAY_CONSTRUCTION                                        :Construcţie tramvai
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construieşte secţiune de şosea
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construieste sectiune de sosea folosind modul Auto-sosea
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construcieşte şină de tramvai
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construcieşte şină de tramvai
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construieste sectiune de sina de tramvai folosind modul Auto-tramvai
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construieşte o autobază (pentru construire şi întreţinere de autovehicule)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construieste depou tramvaie (pentru constructii si reparatii vehicule)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Construieste depou tramvaie (pentru constructii si reparatii vehicule)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Plasează staţie de autobuz
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construieşte platformă pentru camioane
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Construieste statie de tramvai pentru calatori
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Construieste statie de transport marfar
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Construieste statie de tramvai pentru calatori
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Construieste statie de transport marfar
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construieşte pod rutier
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construieşte pod pentru tramvaie
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construieşte pod pentru tramvaie
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construieşte tunel rutier
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construieşte tunel pentru tramvaie
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construieşte tunel pentru tramvaie
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activare/Dezactivare sensuri unice
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Comutator pentru construcţie/înlăturare şosele
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Comuta constructie/stergere pentru constructia de linii de tramvaie
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Comuta constructie/stergere pentru constructia de linii de tramvaie
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Alege orientarea autobazei
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Alege orientarea depoului de tramvaie
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Alege orientarea depoului de tramvaie
 STR_1814_ROAD                                                   :Şosea
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Stradă iluminată
 STR_1816_TREE_LINED_ROAD                                        :Stradă cu copaci pe margine
@@ -1832,8 +1824,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Este adiacentă mai multor staţii
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prea multe staţii în acest oraş
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prea multe staţii
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Prea multe staţii de autobuz
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Prea multe staţii de camion
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Prea multe staţii de autobuz
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Prea multe staţii de camion
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Prea aproape de altă staţie
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Mai întâi trebuie demolată gara
@@ -1864,12 +1856,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} acceptă acum {STRING} si {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientarea staţiei
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientarea platformei de camioane
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientarea staţiei de tramvai pentru călători
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientarea staţiei de tramvai pentru marfă
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientarea staţiei de tramvai pentru călători
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientarea staţiei de tramvai pentru marfă
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Mai întâi trebuie demolată staţia de autobuz
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Mai întâi trebuie demolată platforma pentru camioane
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Mai întâi trebuie demolată staţia de tramvai
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Mai întâi trebuie demolată staţia de tramvai
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Mai întâi trebuie demolată staţia de tramvai
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Mai întâi trebuie demolată staţia de tramvai
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Staţi{P e i}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nici una -
@@ -1881,8 +1873,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Alege lungimea liniilor gării
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Alege orientarea staţiei de autobuz
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Alege orientarea platformei pentru camioane
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Alege orientarea staţiei de tramvai
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Alege orientarea staţiei de tramvai
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Alege orientarea staţiei de tramvai
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Alege orientarea staţiei de tramvai
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrează imaginea pe locaţia staţiei
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Afişează evaluările staţiei
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Schimbă numele staţiei
@@ -1904,7 +1896,7 @@
 STR_3069_BUOY                                                   :Baliză
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...baliză în cale
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...staţie prea mare
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...staţiile neuniforme nu sunt permise
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...staţiile neuniforme nu sunt permise
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Tine apãsat CTRL pentru a alege mai mult decât un obiect
 
 STR_UNDEFINED                                                   :(sir nedefinit)
@@ -1945,7 +1937,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Alege tipul noului joc
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Alege un scenariu (verde), un joc predefinit (albastru) sau o hartă aleatoare
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generează o hartă aleatoare
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Încarcă harta înălţimilor
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Încarcă harta înălţimilor
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} în cale
@@ -2149,10 +2141,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economie: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Trenurile întorc: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Dezastre: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Reacţia autorităţilor la modificarea mediului: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Reacţia autorităţilor la modificarea mediului: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :zero
+STR_NONE                                                        :zero
 STR_NUM_VERY_LOW                                                :Foarte putine
 STR_6816_LOW                                                    :scăzut
 STR_6817_NORMAL                                                 :normal
@@ -2190,9 +2182,9 @@
 STR_6836_OFF                                                    :inactiv
 STR_6837_ON                                                     :activ
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Afişează clasamentul celor mai bune punctaje
-STR_6839_PERMISSIVE                                             :permisivă
-STR_683A_TOLERANT                                               :tolerantă
-STR_683B_HOSTILE                                                :ostilă
+STR_PERMISSIVE                                                  :permisivă
+STR_TOLERANT                                                    :tolerantă
+STR_HOSTILE                                                     :ostilă
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2321,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Nu pot vinde 25% din acţiunile acestei companii...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% deţinute de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} a fost preluată de {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Această companie încă nu vinde acţiuni...
+STR_PROTECTED                                                   :{WHITE}Această companie încă nu vinde acţiuni...
 
 STR_LIVERY_DEFAULT                                              :Uniforma standard
 STR_LIVERY_STEAM                                                :Motor cu abur
@@ -2636,17 +2628,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Mergi la {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Mergi la {STATION} (Preia încărcătura pentru transfer)
-STR_8808_GO_TO_UNLOAD                                           :Mergi la {STATION} (Descarcă)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Mergi la {STATION} (Descarcă încărcătura pentru transfer)
-STR_880A_GO_TO_LOAD                                             :Mergi la {STATION} (Încarcă)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Mergi la {STATION} (Aşteaptă 100% încărcătură pentru transfer)
-STR_880C_GO_NON_STOP_TO                                         :Mergi fără oprire la {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Mergi fără oprire la {STATION} (Preia încărcătura pentru transfer)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Mergi fără oprire la {STATION} (Descarcă)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Mergi fără oprire la {STATION} (Descarcă încărcătura pentru transfer)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Mergi fără oprire la {STATION} (Încarcă)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Mergi fără oprire la {STATION} (Aşteaptă 100% încărcătură pentru transfer)
+STR_GO_TO_TRANSFER                                              :Mergi la {STATION} (Preia încărcătura pentru transfer)
+STR_8807_GO_TO_UNLOAD                                           :Mergi la {STATION} (Descarcă)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Mergi la {STATION} (Descarcă încărcătura pentru transfer)
+STR_8808_GO_TO_LOAD                                             :Mergi la {STATION} (Încarcă)
+STR_GO_TO_TRANSFER_LOAD                                         :Mergi la {STATION} (Aşteaptă 100% încărcătură pentru transfer)
+STR_880A_GO_NON_STOP_TO                                         :Mergi fără oprire la {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Mergi fără oprire la {STATION} (Preia încărcătura pentru transfer)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Mergi fără oprire la {STATION} (Descarcă)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Mergi fără oprire la {STATION} (Descarcă încărcătura pentru transfer)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Mergi fără oprire la {STATION} (Încarcă)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Mergi fără oprire la {STATION} (Aşteaptă 100% încărcătură pentru transfer)
 STR_GO_TO_TRAIN_DEPOT                                           :Mergi la depoul {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Service la Depoul {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Mergi fără oprire la Depoul {TOWN}
@@ -2750,7 +2742,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Afiseazã detalii despre încãrcãtura transportatã
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Afiseazã detalii despre componentele trenului
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Afiseazã capacitãtile componentelor trenului
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Afiseazã capacitãtile totale ale trenului, diferentiate pe tip de încãrcãturã
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Afiseazã capacitãtile totale ale trenului, diferentiate pe tip de încãrcãturã
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de comenzi - clic pe comandã pentru a o selecta
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Renunta la comanta acruala si preia-o pe urmatoarea. CTRL + click face salt la comanda selectata
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Sterge comanda selectatã
@@ -2781,8 +2773,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nu pot schimba sensul de mers al trenului...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Redenumeste modelul vehiculului feroviar
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Nu pot redenumi modelul acestui vehicul...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Comanda selectatã forteazã vehiculul sã arunce încãrcãtura
-STR_886F_TRANSFER                                               :{BLACK}Transferă
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Comanda selectatã forteazã vehiculul sã arunce încãrcãtura
+STR_TRANSFER                                                    :{BLACK}Transferă
 STR_CLEAR_TIME                                                  :{BLACK}Curata timp
 STR_RESET_LATENESS                                              :{BLACK}Reinitializeaza contorul de intarziere
 
@@ -2860,8 +2852,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Numele autovehiculului
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cetãtenii sãrbãtoresc{}sosirea primului autobuz la {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cetãtenii sãrbãtoresc{}sosirea primului camion la {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cetăţenii sărbătoresc . . .{}sosirea primului primul tramvai pentru călători la {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Cetăţenii sărbătoresc . . .{}sosirea primului primul tramvai pentru marfă la {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Cetăţenii sărbătoresc . . .{}sosirea primului primul tramvai pentru călători la {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Cetăţenii sărbătoresc . . .{}sosirea primului primul tramvai pentru marfă la {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Accident rutier!{}Soferul decedat in urma coliziunii cu un tren
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Accident rutier!{}{COMMA} victime in urma coliziunii cu un tren
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nu pot schimba întoarce autvehiculul...
@@ -2870,7 +2862,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Redenumeste modelul de autovehicul
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Redenumeste modelul autovehiculului
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nu pot redenumi modelul acestui autovehicul...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Mergi la Autobaza {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Mergi la Autobaza {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Service la Autobaza {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Adapteaza autovehiculul pentru o incarcatura diferita
@@ -3271,7 +3263,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Redimensionarea excesiva a hartii nu este recomandata. Continui cu generarea?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Avertisment aspect oras
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Aspectul de oras "fara alte drumuri" nu este recomanat. Continui generarea?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nume harta inaltimi:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Dimensiune: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generez lumea...
@@ -3297,7 +3288,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Muta in sus, cu o unitate, inaltimea terenului plan
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Modifica inaltimea terenului plan
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Inaltimea terenului plat:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centreaza harta mica la pozitia actuala
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/russian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/russian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Необходимо ровное место
 STR_0008_WAITING                                                :{BLACK}Ожидает: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (привезено из
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} транзитом из {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Принимаются: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Принимаются: {GOLD}
 STR_000E                                                        :
@@ -276,9 +275,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Слишком много имен определено
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Выбранное имя уже используется
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix/Linux
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix/Linux
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +288,11 @@
 STR_013C_CARGO                                                  :{BLACK}Груз
 STR_013D_INFORMATION                                            :{BLACK}Информация
 STR_013E_CAPACITIES                                             :{BLACK}Вместимость
-STR_013E_TOTAL_CARGO                                            :{BLACK}Общий груз
+STR_TOTAL_CARGO                                                 :{BLACK}Общий груз
 STR_013F_CAPACITY                                               :{BLACK}Вместимость: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Емкость: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Общая загруженность этого транспорта:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} (Всего: {SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Общая загруженность этого транспорта:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} (Всего: {SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Новая игра
 STR_0141_LOAD_GAME                                              :{BLACK}Загрузить игру
@@ -301,12 +300,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Сетевая игра
 STR_SCENARIO_EDITOR                                             :{BLACK}Редактор сценариев
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Размер карты:
 STR_BY                                                          :{BLACK}×
 STR_0148_GAME_OPTIONS                                           :{BLACK}Настройки игры
@@ -734,11 +727,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Поставить передатчик
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Задать площадь пустыни.{}Нажмите и держите CTRL для удаления
 STR_CREATE_LAKE                                                 :{BLACK}Создать воду:{}При отжатом CTRL создаётся канал.{}При зажатом CTRL клетка на уровне моря наполняется водой.
+STR_CREATE_RIVER                                                :{BLACK}Разместить реки.
 STR_0290_DELETE                                                 :{BLACK}Уничтожить
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Полностью уничтожить этот город
 STR_0292_SAVE_SCENARIO                                          :Сохранить сценарий
 STR_0293_LOAD_SCENARIO                                          :Загрузить сценарий
-STR_LOAD_HEIGHTMAP                                              :Загрузить карту высот
+STR_MENU_LOAD_HEIGHTMAP                                         :Загрузить карту высот
 STR_0294_QUIT_EDITOR                                            :Выйти из редактора
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Выход
@@ -778,9 +772,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Настройки игры
-STR_02C5_DIFFICULTY_SETTINGS                                    :Настройки сложности
-STR_02C7_CONFIG_PATCHES                                         :Настройки патчей
+STR_02C4_GAME_OPTIONS                                           :Настройки игры
+STR_02C6_DIFFICULTY_SETTINGS                                    :Настройки сложности
+STR_MENU_CONFIG_PATCHES                                         :Настройки патчей
 STR_NEWGRF_SETTINGS                                             :Настройки NewGRF
 STR_TRANSPARENCY_OPTIONS                                        :Настройки прозрачности
 STR_GAMEOPTMENU_0A                                              :
@@ -880,8 +874,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Сохранение все еще идет,{}пожалуйста, дождитесь завершения!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Выбрать музыкальную программу
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Английские
@@ -943,6 +937,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Полноэкранный режим
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Включить/выключить полноэкранный режим
+STR_FULLSCREEN_FAILED                                           :{WHITE}Сбой полноэкранного режима
 
 STR_OPTIONS_RES                                                 :{BLACK}Разрешение экрана
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1655,42 +1650,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Сначала удалите дорогу
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Идут дорожные работы...
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Строительство дорог
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Трамваи
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Трамваи
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Выберите тип моста
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... односторонние дороги не могут иметь такое пересечение
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Не могу проложить дорогу здесь...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Нельзя построить здесь трамвай...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Нельзя построить здесь трамвай...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Не могу удалить дорогу...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Не могу удалить этот трамвай...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Не могу удалить этот трамвай...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Направление гаража
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Ориентация трамвайного депо
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Ориентация трамвайного депо
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Не могу построить гараж здесь...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Не могу построить здесь трамвайное депо...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}Не могу построить пассажирскую трамвайную остановку...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Не могу построить грузовую трамвайную остановку...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Не могу построить пассажирскую трамвайную остановку...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Не могу построить грузовую трамвайную остановку...
 STR_180A_ROAD_CONSTRUCTION                                      :Строительство дорог
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Трамваи
+STR_TRAMWAY_CONSTRUCTION                                        :Трамваи
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Проложить дорогу
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Строить автотрассу, используя авто-режим
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Проложить трамвайные пути
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Проложить трамвайные пути
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Строить трамвайный путь, используя авто-режим
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Построить гараж (для закупки и обслуживания машин)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Построить трамвайное депо (для закупки и обслуживания трамваев)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Построить трамвайное депо (для закупки и обслуживания трамваев)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Построить автобусную остановку
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Построить погрузочную станцию
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Построить пассажирскую трамвайную остановку
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Построить грузовую трамвайную остановку
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Построить пассажирскую трамвайную остановку
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Построить грузовую трамвайную остановку
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Построить мост (авто)
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Построить трамвайный мост
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Построить трамвайный мост
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Построить туннель (авто)
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Построить трамвайный туннель
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Построить трамвайный туннель
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Включить/Отключить односторонние дороги
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Переключение строительства/удаления автомобильной инфраструктуры
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Переключение строительства/удаления трамвайной инфраструктуры
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Переключение строительства/удаления трамвайной инфраструктуры
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Выбор ориентации гаража
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Выбор ориентации трамвайного депо
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Выбор ориентации трамвайного депо
 STR_1814_ROAD                                                   :Дорога
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Дорога с уличным освещением
 STR_1816_TREE_LINED_ROAD                                        :Шоссе
@@ -1833,8 +1828,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Присоединяется более чем к одной существующей станции
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Слишком много станций и остановок в этом городе. Переименуйте существующие.
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Слишком много станций и остановок
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Слишком много автобусных остановок
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Слишком много погрузочных станций
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Слишком много автобусных остановок
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Слишком много погрузочных станций
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Слишком близко к другой станции
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Сначала нужно удалить ж/д станцию
@@ -1865,12 +1860,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} теперь принимает {STRING} и {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Направление остановки
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Ориентация станции
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Направление пассажирской трамвайной остановки
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Направление грузовой трамвайной остановки
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Направление пассажирской трамвайной остановки
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Направление грузовой трамвайной остановки
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Сначала удалите автобусную остановку
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Сначала удалите грузовой терминал
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Сначала надо уничтожить пассажирскую трамвайную остановку
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Сначала надо уничтожить грузовую трамвайную остановку
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Сначала надо уничтожить пассажирскую трамвайную остановку
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Сначала надо уничтожить грузовую трамвайную остановку
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Станц{P 2 ия ии ий}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Нет -
@@ -1882,8 +1877,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Выберите длину ж/д станции
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Выберите направление автобусной остановки
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Выберите направление погрузочной станции
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Выберите направление пассажирской трамвайной остановки
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Выберите направление грузовой трамвайной остановки
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Выберите направление пассажирской трамвайной остановки
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Выберите направление грузовой трамвайной остановки
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Показать станцию в основном окне
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Показать рейтинг станции
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Переименовать станцию
@@ -1905,7 +1900,7 @@
 STR_3069_BUOY                                                   :Буй
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...буй на пути
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...станция слишком большая
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...использование непрямоугольных станций запрещено
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...использование непрямоугольных станций запрещено
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Нажмите и держите CTRL для выбора более одного варианта
 
 STR_UNDEFINED                                                   :(неопределено)
@@ -1946,7 +1941,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Выбрать тип новой игры
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Выбрать сценарий(зеленый), предустановленную новую игру (синий) или случайную новую игру
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Сгенерировать случайную карту
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Загруз. ЛАНДШАФТ
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Загруз. ЛАНДШАФТ
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} на пути
@@ -2117,7 +2112,7 @@
 STR_SV_STNAME_LOWER                                             :Нижняя {STRING}
 STR_SV_STNAME_HELIPORT                                          :Площадка {STRING}
 STR_SV_STNAME_FOREST                                            :Лес {STRING}
-STR_SV_STNAME_FALLBACK                                          :{STRING}-{NUM}
+STR_SV_STNAME_FALLBACK                                          :{STRING} Станция #{NUM}
 
 ############ end of savegame specific region!
 
@@ -2154,10 +2149,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Экономика: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Разворот поездов: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Катастрофы: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Отношение властей к изменению территорий: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Отношение властей к изменению территорий: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Нет
+STR_NONE                                                        :Нет
 STR_NUM_VERY_LOW                                                :Очень низкое
 STR_6816_LOW                                                    :Низкое
 STR_6817_NORMAL                                                 :Среднее
@@ -2202,9 +2197,9 @@
 STR_6836_OFF                                                    :Выключены
 STR_6837_ON                                                     :Включены
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Показать таблицу рекордов
-STR_6839_PERMISSIVE                                             :Дозволяющее
-STR_683A_TOLERANT                                               :Терпимое
-STR_683B_HOSTILE                                                :Враждебное
+STR_PERMISSIVE                                                  :Дозволяющее
+STR_TOLERANT                                                    :Терпимое
+STR_HOSTILE                                                     :Враждебное
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2341,7 +2336,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Не могу продать 25% акций этой компании...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% владеет {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} выкуплена {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Эта компания еще не может торговать акциями...
+STR_PROTECTED                                                   :{WHITE}Эта компания еще не может торговать акциями...
 
 STR_LIVERY_DEFAULT                                              :Стандарт. раскраска
 STR_LIVERY_STEAM                                                :Паровоз
@@ -2354,6 +2349,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Пассаж. вагон (паровоз)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Пассаж. вагон (дизель)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Пассаж. вагон (электро)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Пассажирский вагон (монорельс)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Пассажирский вагон (Маглев)
 STR_LIVERY_FREIGHT_WAGON                                        :Грузовой вагон
 STR_LIVERY_BUS                                                  :Автобус
 STR_LIVERY_TRUCK                                                :Грузовое авто
@@ -2648,17 +2645,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Ехать к ст. {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ехать к ст. {STATION} (Трансфер)
-STR_8808_GO_TO_UNLOAD                                           :Ехать к ст. {STATION} (Не грузиться)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ехать к ст. {STATION} (Трансфер и не грузиться)
-STR_880A_GO_TO_LOAD                                             :Ехать к ст. {STATION} (Полная загрузка)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ехать к ст. {STATION} (Трансфер и полная загрузка)
-STR_880C_GO_NON_STOP_TO                                         :Ехать к ст. {STATION} без остановки
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ехать к ст. {STATION} без остановки (Трансфер)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ехать к ст. {STATION} без остановки (Не грузиться)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ехать к ст. {STATION} без остановки (Трансфер и не грузиться)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ехать к ст. {STATION} без остановки (Полная загрузка)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ехать к ст. {STATION} без остановки (Трансфер и полная загрузка)
+STR_GO_TO_TRANSFER                                              :Ехать к ст. {STATION} (Трансфер)
+STR_8807_GO_TO_UNLOAD                                           :Ехать к ст. {STATION} (Не грузиться)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ехать к ст. {STATION} (Трансфер и не грузиться)
+STR_8808_GO_TO_LOAD                                             :Ехать к ст. {STATION} (Полная загрузка)
+STR_GO_TO_TRANSFER_LOAD                                         :Ехать к ст. {STATION} (Трансфер и полная загрузка)
+STR_880A_GO_NON_STOP_TO                                         :Ехать к ст. {STATION} без остановки
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ехать к ст. {STATION} без остановки (Трансфер)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ехать к ст. {STATION} без остановки (Не грузиться)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ехать к ст. {STATION} без остановки (Трансфер и не грузиться)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ехать к ст. {STATION} без остановки (Полная загрузка)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ехать к ст. {STATION} без остановки (Трансфер и полная загрузка)
 STR_GO_TO_TRAIN_DEPOT                                           :Ехать в депо {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Обслужиться в депо {TOWN}
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ехать в депо {TOWN} без остановки
@@ -2762,7 +2759,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Показать сведения о перевозимых грузах
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Показать сведения о вагонах
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Показать вместимость вагонов
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Показать общую вместимость поезда по типам грузов
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Показать общую вместимость поезда по типам грузов
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Показ списка заданий - щелкните для выделения. Если зажать CTRL - обзор станции.
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Пропустить данное задание и начать следующее. CTRL + клик пропускает выделенное задание.
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Удалить выделенное задание
@@ -2793,8 +2790,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Невозможно развернуть поезд...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Переименовать тип вагона
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Невозможно переименовать тип вагона ...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}По выделенному приказу произойдет принудительная разгрузка транспортного средства
-STR_886F_TRANSFER                                               :{BLACK}Трансфер
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}По выделенному приказу произойдет принудительная разгрузка транспортного средства
+STR_TRANSFER                                                    :{BLACK}Трансфер
 STR_CLEAR_TIME                                                  :{BLACK}Сбросить Время
 STR_RESET_LATENESS                                              :{BLACK}Сброс счетчика
 
@@ -2809,6 +2806,7 @@
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Появился новый {STRING}!  -  {ENGINE}
 
 STR_CAN_T_SELL_DESTROYED_VEHICLE                                :{WHITE}Не могу продать разбитый транспорт ...
+STR_CAN_T_REFIT_DESTROYED_VEHICLE                               :{WHITE}Не могу сменить тип груза для удаленного транспорта...
 
 STR_CAN_T_TIMETABLE_VEHICLE                                     :{WHITE}Не могу составить расписание для этого транспорта...
 STR_TIMETABLE_ONLY_WAIT_AT_STATIONS                             :{WHITE}Транспорт может только ждать на станции.
@@ -2871,8 +2869,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Жители празднуют . . .{}Первый трамвай прибыл на {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Жители празднуют . . .{}Первый грузовой трамвай прибыл на {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}АВАРИЯ!{}Водитель погиб при столкновении с поездом
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}АВАРИЯ!{}{COMMA} человек{P "" а ""} погиб{P "" ло ли} в столкновении с поездом!
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Невозможно развернуть автомобиль...
@@ -2881,7 +2879,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :Ехать в гараж {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Обслуж. в гараже {TOWN}
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Переоборуд. авто для доставки разных видов грузов.
@@ -3255,6 +3253,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Все, кроме {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Макс. тяговое усилие: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Создать
@@ -3282,7 +3286,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Увеличение карты до таких размеров не рекомендуется. Продолжить?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Предупреждение о расположении дорог
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Расположение дорог "не строить дороги" не рекомендуется. Продолжить создание карты?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Имя РЕЛЬЕФА:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Размер: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Создание мира...
@@ -3308,7 +3311,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Опустить уровень ровной земли на 1
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Изменить высоту ровной земли
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Высота над уровнем моря:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Центрировать миникарту по этой позиции
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/simplified_chinese.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/simplified_chinese.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}需要平坦的地面
 STR_0008_WAITING                                                :{BLACK}等待:{WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (运自
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}接受:{WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}接受:{GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}自定义的名字过多
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}选定的名字已经被用了
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}货物
 STR_013D_INFORMATION                                            :{BLACK}信息
 STR_013E_CAPACITIES                                             :{BLACK}装载能力
-STR_013E_TOTAL_CARGO                                            :{BLACK}全部货物
+STR_TOTAL_CARGO                                                 :{BLACK}全部货物
 STR_013F_CAPACITY                                               :{BLACK}装载能力:{LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}装载能力:{LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}全车的装载能力为:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}全车的装载能力为:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}新游戏
 STR_0141_LOAD_GAME                                              :{BLACK}读取存档
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}多用户
 STR_SCENARIO_EDITOR                                             :{BLACK}场景编辑器
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}地图规模:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}游戏选项
@@ -733,7 +725,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}完全删除这座城镇
 STR_0292_SAVE_SCENARIO                                          :保存场景
 STR_0293_LOAD_SCENARIO                                          :读取场景
-STR_LOAD_HEIGHTMAP                                              :读取高度图
+STR_MENU_LOAD_HEIGHTMAP                                         :读取高度图
 STR_0294_QUIT_EDITOR                                            :退出编辑器
 STR_0295                                                        :
 STR_0296_QUIT                                                   :退出
@@ -773,9 +765,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :游戏选项
-STR_02C5_DIFFICULTY_SETTINGS                                    :难度设定
-STR_02C7_CONFIG_PATCHES                                         :配置补丁
+STR_02C4_GAME_OPTIONS                                           :游戏选项
+STR_02C6_DIFFICULTY_SETTINGS                                    :难度设定
+STR_MENU_CONFIG_PATCHES                                         :配置补丁
 STR_NEWGRF_SETTINGS                                             :NewGRF 设置
 STR_TRANSPARENCY_OPTIONS                                        :透明选项
 STR_GAMEOPTMENU_0A                                              :
@@ -874,8 +866,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}保存仍在继续,{}请耐心等待……
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}选择 'Ezy 大街' 风格的音乐
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :英国 (原始的)
@@ -1721,8 +1713,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}与另一车站相连
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}这个城镇中的车站过多
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}车站过多
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}公共汽车站过多
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}汽车货场过多
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}公共汽车站过多
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}汽车货场过多
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}距离另一车站过近
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}必须先拆除火车站
@@ -1787,7 +1779,7 @@
 STR_3069_BUOY                                                   :浮标
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}指定的位置有浮标……
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}站区太大了……
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}已禁用了异形站台……
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}已禁用了异形站台……
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}摁住 CTRL 可以选择多个项目
 
 STR_UNDEFINED                                                   :(未定义字符串)
@@ -1822,7 +1814,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}选择新游戏类型
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}选择场景(绿色),预设游戏(蓝色)或随机开始新游戏
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :随机生成新游戏
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}读取地形图
+STR_LOAD_HEIGHTMAP                                              :{WHITE}读取地形图
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}目标位置有 {STRING}
@@ -2016,10 +2008,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}经济:{ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}列车调头:{ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}灾难:{ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}市政厅对辖区内建设的态度:{ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}市政厅对辖区内建设的态度:{ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :没有
+STR_NONE                                                        :没有
 STR_6816_LOW                                                    :低
 STR_6817_NORMAL                                                 :一般
 STR_6818_HIGH                                                   :高
@@ -2056,9 +2048,9 @@
 STR_6836_OFF                                                    :关闭
 STR_6837_ON                                                     :开启
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}查看高分榜
-STR_6839_PERMISSIVE                                             :宽容
-STR_683A_TOLERANT                                               :隐忍
-STR_683B_HOSTILE                                                :对立
+STR_PERMISSIVE                                                  :宽容
+STR_TOLERANT                                                    :隐忍
+STR_HOSTILE                                                     :对立
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2190,7 +2182,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}不能出售此公司的股份……
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% 由 {COMPANY} 所有)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} 被 {COMPANY} 收购!
-STR_7080_PROTECTED                                              :{WHITE}这个公司刚刚开业,还不能进行股权交易……
+STR_PROTECTED                                                   :{WHITE}这个公司刚刚开业,还不能进行股权交易……
 
 STR_LIVERY_DEFAULT                                              :标准外观
 STR_LIVERY_STEAM                                                :蒸汽引擎
@@ -2495,17 +2487,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :前往 {STATION}
-STR_8807_GO_TO_TRANSFER                                         :前往 {STATION} (转运并装货)
-STR_8808_GO_TO_UNLOAD                                           :前往 {STATION} (全部卸货)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :前往 {STATION} (转运且不装货)
-STR_880A_GO_TO_LOAD                                             :前往 {STATION} (等待装满)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :前往 {STATION} (转运并等待装满)
-STR_880C_GO_NON_STOP_TO                                         :前往(不停) {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :前往(不停) {STATION} (转运并装货)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :前往(不停) {STATION} (全部卸货)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :前往(不停) {STATION} (转运且不装货)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :前往(不停) {STATION} (等待装满)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :前往(不停) {STATION} (转运并等待装满)
+STR_GO_TO_TRANSFER                                              :前往 {STATION} (转运并装货)
+STR_8807_GO_TO_UNLOAD                                           :前往 {STATION} (全部卸货)
+STR_GO_TO_TRANSFER_UNLOAD                                       :前往 {STATION} (转运且不装货)
+STR_8808_GO_TO_LOAD                                             :前往 {STATION} (等待装满)
+STR_GO_TO_TRANSFER_LOAD                                         :前往 {STATION} (转运并等待装满)
+STR_880A_GO_NON_STOP_TO                                         :前往(不停) {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :前往(不停) {STATION} (转运并装货)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :前往(不停) {STATION} (全部卸货)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :前往(不停) {STATION} (转运且不装货)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :前往(不停) {STATION} (等待装满)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :前往(不停) {STATION} (转运并等待装满)
 STR_GO_TO_TRAIN_DEPOT                                           :前往 {TOWN} 车库
 STR_SERVICE_AT_TRAIN_DEPOT                                      :在 {TOWN} 车库保养
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :前往(不停) {TOWN} 车库
@@ -2609,7 +2601,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}显示运载货物的详情
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}显示列车的性能参数
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}显示列车的运载能力
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}根据不同的挂车种类显示相应的总运力
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}根据不同的挂车种类显示相应的总运力
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}调度列表 - 单击一个调度指令可以使之高亮化. CTRL + 单击可以将视点移动到相应的车站
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}跳过当前命令并执行下一条命令。CTRL并单击可以跳过选定的命令
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}删除高亮的调度命令
@@ -2640,8 +2632,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}不能命令列车调头...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}重命名车辆的类型
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}不能重命名车辆的类型...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}命令列车在高亮指令对应的车站寄存货物
-STR_886F_TRANSFER                                               :{BLACK}联运
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}命令列车在高亮指令对应的车站寄存货物
+STR_TRANSFER                                                    :{BLACK}联运
 STR_CLEAR_TIME                                                  :{BLACK}清除时间
 STR_RESET_LATENESS                                              :{BLACK}清除晚点计数器
 
@@ -2723,7 +2715,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :前往 {TOWN} 车库
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :在 {TOWN} 车库进行保养
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}改装汽车以装载其他货物
@@ -3116,7 +3108,6 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}改变游戏开始的日期
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}缩放警告
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}不推荐将源图片过度放缩,是否继续生成?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}高度图名称:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}大小: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}正在生成地图……
@@ -3142,7 +3133,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}降低地面高度
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}改变地面的高度
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}地面高度:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}设置小地图的中心位置
 
--- a/src/lang/slovak.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/slovak.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebný rovný terén
 STR_0008_WAITING                                                :{BLACK}Caka: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (na ceste z
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} na ceste z {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Prijíma: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Prijíma: {GOLD}
 STR_000E                                                        :
@@ -338,9 +337,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Použitých príliš vela mien
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Vybrané meno je už použité
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -351,11 +350,11 @@
 STR_013C_CARGO                                                  :{BLACK}Náklad
 STR_013D_INFORMATION                                            :{BLACK}Informácie
 STR_013E_CAPACITIES                                             :{BLACK}Kapacita
-STR_013E_TOTAL_CARGO                                            :{BLACK}Celkový náklad
+STR_TOTAL_CARGO                                                 :{BLACK}Celkový náklad
 STR_013F_CAPACITY                                               :{BLACK}Kapacita: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapacita: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Celkový náklad (kapacita) tohto vlaku:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Celkový náklad (kapacita) tohto vlaku:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nová hra
 STR_0141_LOAD_GAME                                              :{BLACK}Nahrat hru
@@ -363,12 +362,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Viacero hrácov
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor scenárov
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Velkost mapy:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Nastavenia hry
@@ -796,11 +789,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Umiestnit vysielac
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Vytvorit oblast puste.{}Drzanim CTRL ju odstranite
 STR_CREATE_LAKE                                                 :{BLACK}Definovat oblast vody.{}Vytvorí kanál, pri stlacení CTRL na úrovni mora zaplaví okolie
+STR_CREATE_RIVER                                                :{BLACK}Vytvorit rieky.
 STR_0290_DELETE                                                 :{BLACK}Vymazat
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Kompletne vymazat toto mesto
 STR_0292_SAVE_SCENARIO                                          :Ulozit scenár
 STR_0293_LOAD_SCENARIO                                          :Nahrat scenár
-STR_LOAD_HEIGHTMAP                                              :Nahrat výškovú mapu
+STR_MENU_LOAD_HEIGHTMAP                                         :Nahrat výškovú mapu
 STR_0294_QUIT_EDITOR                                            :Ukoncit editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Ukoncit OpenTTD
@@ -840,9 +834,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Nastavenia hry
-STR_02C5_DIFFICULTY_SETTINGS                                    :Nastavenia obtiaznosti
-STR_02C7_CONFIG_PATCHES                                         :Nastavenia patchov
+STR_02C4_GAME_OPTIONS                                           :Nastavenia hry
+STR_02C6_DIFFICULTY_SETTINGS                                    :Nastavenia obtiaznosti
+STR_MENU_CONFIG_PATCHES                                         :Nastavenia patchov
 STR_NEWGRF_SETTINGS                                             :Nastavenie newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Nastavenia priehladnosti
 STR_GAMEOPTMENU_0A                                              :
@@ -942,8 +936,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Ukladanie hry este bezi,{}pockajte prosim na dokoncenie!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Vyber 'Ezy Street style music' program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglicke
@@ -1718,42 +1712,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Cesta musi byt najskor odstranena
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Prebiehaju cestne prace
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Výstavba cesty
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Výstavba elektrickovej trate
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Výstavba elektrickovej trate
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Vyber cestny most
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... na jednosmerných cestách nie sú dovolené križovatky
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Tu sa neda postavit cesta ...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Nie je možné postavit elektrickovú trat ...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Nie je možné postavit elektrickovú trat ...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Tu sa neda odstranit cesta ...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nie je možné odstránit elektrickovú trat ...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nie je možné odstránit elektrickovú trat ...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientacia garaze
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientácia elektrickového depa
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientácia elektrickového depa
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Tu sa neda postavit garaz ...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Nie je možné postavit elektrickové depo ...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Nie je možné postavit elektrickové depo ...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nemozno postavit autobusovu zastavku ...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nemozno postavit vykladku ...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nie je možné postavit elektrickovú osobnú stanicu ...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nie je možné postavit elektrickovú nákladnú stanicu ...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nie je možné postavit elektrickovú osobnú stanicu ...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nie je možné postavit elektrickovú nákladnú stanicu ...
 STR_180A_ROAD_CONSTRUCTION                                      :Výstavba cesty
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Výstavba elektrickovej dráhy
+STR_TRAMWAY_CONSTRUCTION                                        :Výstavba elektrickovej dráhy
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Postavit cast cesty
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Stavat casti ciest použitím automatického módu
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Postavit cast elektrickovej dráhy
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Postavit cast elektrickovej dráhy
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Stavat casti elektrickovej trate použitím automatického módu
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Postavit garaz (na vyroby a opravy automobilov)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Postavit elektrickové depo
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Postavit elektrickové depo
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Postavit autobusovu zastavku
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Postavit vykladku
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Postavit osobnú elektrickovú stanicu
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Postavit nákladnú elektrickovú stanicu
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Postavit osobnú elektrickovú stanicu
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Postavit nákladnú elektrickovú stanicu
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Postavit cestny most
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Postavit most s elektrickovou dráhou
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Postavit most s elektrickovou dráhou
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Postavit cestny tunel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Postavit tunel s elektrickovou dráhou
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Postavit tunel s elektrickovou dráhou
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Prepnút stavbu jednosmerných ciest
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Prepnut stavbu/odstranovanie cesty
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Prepnút stavbu/odstranovanie elektrickovej dráhy
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Prepnút stavbu/odstranovanie elektrickovej dráhy
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vybrat orientaciu garaze
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Vybrat orientáciu elektrickového depa
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Vybrat orientáciu elektrickového depa
 STR_1814_ROAD                                                   :Cesta
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Cesta s lampami
 STR_1816_TREE_LINED_ROAD                                        :Cesta v aleji
@@ -1896,8 +1890,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Susedi z viacerymi stanicami/vykladkami
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prilis vela stanic/vykladok v tomto meste
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prilis vela stanic/vykladok
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Prilis vela autobusovych zastavok
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Prilis vela zastavok nakladnych automobilov
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Prilis vela autobusovych zastavok
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Prilis vela zastavok nakladnych automobilov
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Prilis blizko inej stanice/vykladky
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Zeleznicna stanica sa musi naskor zburat
@@ -1928,12 +1922,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} teraz prijima {STRING} a {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientacia stanice
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientacia vykladky
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientácia osobnej elektricky
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientácia nákladnej elektricky
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientácia osobnej elektricky
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientácia nákladnej elektricky
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Stanica musi byt najskor zburana
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Vykladka musi byt najskor zburana
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Najprv sa musí zbúrat osobná elektricková stanica
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Najprv sa musí zbúrat nákladná elektricková stanica
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Najprv sa musí zbúrat osobná elektricková stanica
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Najprv sa musí zbúrat nákladná elektricková stanica
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stanic{P a e ""}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ziadne -
@@ -1945,8 +1939,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Dlzka zeleznicnej stanice
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Vybrat orientaciu stanice
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Vybrat orientaciu vykladky
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Vyberte orientáciu osobnej elektrickovej stanice
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Vyberte orientáciu nákladnej elektrickovej stanice
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Vyberte orientáciu osobnej elektrickovej stanice
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Vyberte orientáciu nákladnej elektrickovej stanice
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Vycentrovat pohlad na poziciu stanice
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Zobrazit hodnotenie stanice
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Zmenit nazov stanice
@@ -1968,7 +1962,7 @@
 STR_3069_BUOY                                                   :Boja
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}... boja v ceste
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}... stanica je prilis velka
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}... roznorode stanice nie su povolene
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}... roznorode stanice nie su povolene
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Podrzte CTRL pre vyber viacerych poloziek
 
 STR_UNDEFINED                                                   :(nedefinovaný retezec)
@@ -2009,7 +2003,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Vyber typ novej hry
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Vyber scenar (zeleny), prednastavenu hra (modra), alebo nahodnu hru
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Vygenerovat nahodnu novu hru
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Nahrat výškovú mapu
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Nahrat výškovú mapu
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} v ceste
@@ -2213,10 +2207,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomika: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Otacanie vlakov: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Havarie: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Postoj miestnej spravy k stavebnym upravam mesta: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Postoj miestnej spravy k stavebnym upravam mesta: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ziadny
+STR_NONE                                                        :Ziadny
 STR_NUM_VERY_LOW                                                :Velmi nízky
 STR_6816_LOW                                                    :Nízky
 STR_6817_NORMAL                                                 :Normálny
@@ -2254,9 +2248,9 @@
 STR_6836_OFF                                                    :Vyp.
 STR_6837_ON                                                     :Zap.
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Zobrazit tabulku najlepsich
-STR_6839_PERMISSIVE                                             :Pozitivny
-STR_683A_TOLERANT                                               :Tolerantny
-STR_683B_HOSTILE                                                :Odmietavy
+STR_PERMISSIVE                                                  :Pozitivny
+STR_TOLERANT                                                    :Tolerantny
+STR_HOSTILE                                                     :Odmietavy
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2393,7 +2387,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}25% podiel v tejto spolocnosti sa neda predat ...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% vlastnene {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} bola kupena spolocnostou {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}S akciami tejto spolocnosti nie je zatial mozne obchodovat ...
+STR_PROTECTED                                                   :{WHITE}S akciami tejto spolocnosti nie je zatial mozne obchodovat ...
 
 STR_LIVERY_DEFAULT                                              :Standardna schema
 STR_LIVERY_STEAM                                                :Parny rusen
@@ -2406,6 +2400,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Osobny vozen (Parny)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Osobny vozen (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Osobny vozen (Elektricky)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Vagón pre cestujúcich (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Vagón pre cestujúcich (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Nakladny vagon
 STR_LIVERY_BUS                                                  :Autobus
 STR_LIVERY_TRUCK                                                :Nakladny automobil
@@ -2700,17 +2696,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Chod do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Chod do {STATION} (prelozit a nalozit iny naklad)
-STR_8808_GO_TO_UNLOAD                                           :Chod do {STATION} (vylozit)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Chod do {STATION} (prelozit a nechat prazdne)
-STR_880A_GO_TO_LOAD                                             :Chod do {STATION} (nalozit)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Chod do {STATION} (prelozit a plne nalozit)
-STR_880C_GO_NON_STOP_TO                                         :Chod bez zastavenia do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Chod bez zastavenia do {STATION} (prelozit a nalozit iny naklad)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Chod bez zastavenia do {STATION} (vylozit)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Chod bez zastavenia do {STATION} (prelozit a nechat prazdne)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Chod bez zastavenia do {STATION} (nalozit)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Chod bez zastavenia do {STATION} (prelozit a plne nalozit)
+STR_GO_TO_TRANSFER                                              :Chod do {STATION} (prelozit a nalozit iny naklad)
+STR_8807_GO_TO_UNLOAD                                           :Chod do {STATION} (vylozit)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Chod do {STATION} (prelozit a nechat prazdne)
+STR_8808_GO_TO_LOAD                                             :Chod do {STATION} (nalozit)
+STR_GO_TO_TRANSFER_LOAD                                         :Chod do {STATION} (prelozit a plne nalozit)
+STR_880A_GO_NON_STOP_TO                                         :Chod bez zastavenia do {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Chod bez zastavenia do {STATION} (prelozit a nalozit iny naklad)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Chod bez zastavenia do {STATION} (vylozit)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Chod bez zastavenia do {STATION} (prelozit a nechat prazdne)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Chod bez zastavenia do {STATION} (nalozit)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Chod bez zastavenia do {STATION} (prelozit a plne nalozit)
 STR_GO_TO_TRAIN_DEPOT                                           :Chod do depa {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Opravit v {TOWN} Vlakovom Depe
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Chod bez zastavenia do depa {TOWN}
@@ -2814,7 +2810,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Zobrazit detaily o prevezenom naklade
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Zobrazit detaily o vlaku
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Zobrazit kapacitu kazdeho vozidla
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Zobrazit celkovu kapacitu vlaku, rozdelenu podla typu nakladu
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Zobrazit celkovu kapacitu vlaku, rozdelenu podla typu nakladu
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Zoznam prikazov - kliknut na prikaz pre oznacenie
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Preskocit aktuálny príkaz a zacat další. Podržte CTRL pre skok na oznacený príkaz
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Vymazat oznaceny prikaz
@@ -2845,8 +2841,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Nemozno zmenit smer vlaku ...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Premenovat typ vlaku
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Typ vlaku nemoze byt premenovany ...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}U vyznaceneho prikazu musi vozidlo vylozit naklad
-STR_886F_TRANSFER                                               :{BLACK}Prekladka
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}U vyznaceneho prikazu musi vozidlo vylozit naklad
+STR_TRANSFER                                                    :{BLACK}Prekladka
 STR_CLEAR_TIME                                                  :{BLACK}Vymazat cas
 STR_RESET_LATENESS                                              :{BLACK}Reset meskania
 
@@ -2924,8 +2920,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Pomenovat automobil
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvy autobus dorazil do {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvy automobil dorazil do {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvá elektricka dorazila do stanice {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvá nákladná elektricka dorazila do stanice {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvá elektricka dorazila do stanice {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prvá nákladná elektricka dorazila do stanice {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Dopravna nehoda!{}Vodic zahynul po kolizii s vlakom
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Dopravna nehoda!{}{COMMA} mrtvych po kolizii s vlakom
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Nemozno otocit vozidlo ...
@@ -2934,7 +2930,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Premenovat typ automobilu
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Premenovat typ automobilu
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Nemozno premenovat typ automobilu ...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Chod do {TOWN} garaze
+STR_GO_TO_ROADVEH_DEPOT                                         :Chod do {TOWN} garaze
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Opravit v {TOWN} garazi
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Prestavat vozidlo na prepravu ineho druhu nakladu
@@ -3308,6 +3304,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Všetko okrem {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. trakcna sila: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Vytvorit
@@ -3335,7 +3337,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Prilis velka zmena velkosti zdrojovej mapy sa neodporuca. Pokracovat s generovanim?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Upozornenie na štruktúra mesta
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Štruktúra mesta  "žiadne cesty naviac" sa neodporúca. Pokracovat s generovaním?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nazov vyskovej mapy:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Velkost: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generujem  krajinu ...
@@ -3361,7 +3362,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Zvysit vysku rovnej krajiny o jedno
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Zmenit vysku rovnej krajiny
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Vyska rovnej krajiny:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Vycentrovat malu mapu na aktualnu poziciu
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/slovenian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/slovenian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Potrebno je ravno zemljišče
 STR_0008_WAITING                                                :{BLACK}Čaka: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (na poti iz
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Sprejema: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Sprejema: {GOLD}
 STR_000E                                                        :
@@ -316,9 +314,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Preveč definiranih imen
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Izbrano ime je že v uporabi
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -329,11 +327,11 @@
 STR_013C_CARGO                                                  :{BLACK}Tovor
 STR_013D_INFORMATION                                            :{BLACK}Informacije
 STR_013E_CAPACITIES                                             :{BLACK}Zmogljivosti
-STR_013E_TOTAL_CARGO                                            :{BLACK}Skupni tovor
+STR_TOTAL_CARGO                                                 :{BLACK}Skupni tovor
 STR_013F_CAPACITY                                               :{BLACK}Zmogljivost: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Zmogljivost: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Skupna tovorna zmogljivost tega vlaka:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Skupna tovorna zmogljivost tega vlaka:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nova igra
 STR_0141_LOAD_GAME                                              :{BLACK}Naloži igro
@@ -341,12 +339,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Več igralcev
 STR_SCENARIO_EDITOR                                             :{BLACK}Urejevalnik ozemlja
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Velikost ozemlja:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Možnosti
@@ -774,11 +766,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Postavi oddajnik
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Določi območja puščave.{}Pritisni in drži CTRL za odstranitev
 STR_CREATE_LAKE                                                 :{BLACK}Določi področje vode.{}Naredi kanal, razen če je pritisnjen CTRL na morski gladini, ko bo poplavilo okolico.
+STR_CREATE_RIVER                                                :{BLACK}Položi reke.
 STR_0290_DELETE                                                 :{BLACK}Izbriši
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Popolnoma izbriši mesto
 STR_0292_SAVE_SCENARIO                                          :Shrani scenarij
 STR_0293_LOAD_SCENARIO                                          :Naloži scenarij
-STR_LOAD_HEIGHTMAP                                              :Naloži višinsko karto
+STR_MENU_LOAD_HEIGHTMAP                                         :Naloži višinsko karto
 STR_0294_QUIT_EDITOR                                            :Izhod iz urejevalnika
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Izhod
@@ -818,9 +811,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Možnosti igre
-STR_02C5_DIFFICULTY_SETTINGS                                    :Nastavitve težavnosti
-STR_02C7_CONFIG_PATCHES                                         :Urejanje popravkov
+STR_02C4_GAME_OPTIONS                                           :Možnosti igre
+STR_02C6_DIFFICULTY_SETTINGS                                    :Nastavitve težavnosti
+STR_MENU_CONFIG_PATCHES                                         :Urejanje popravkov
 STR_NEWGRF_SETTINGS                                             :NewGRF nastavitve
 STR_TRANSPARENCY_OPTIONS                                        :Nastavitve prozornega pogleda
 STR_GAMEOPTMENU_0A                                              :
@@ -920,8 +913,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Shranjevanje poteka,{}Prosim počakaj, da se zaključi!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Izberi 'Poulični' glasbeni program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Angleška (Originalna)
@@ -983,6 +976,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Cel zaslon
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Označi to okno za igro v celozaslonskem načinu
+STR_FULLSCREEN_FAILED                                           :{WHITE}Celozaslonski način spodletel
 
 STR_OPTIONS_RES                                                 :{BLACK}Ločljivost
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1695,42 +1689,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Najprej odstrani cesto
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Cestna dela napredujejo
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Cestne gradnje
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Gradnja tramvaj proge
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Gradnja tramvaj proge
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Izberi cestni most
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... enosmerne poti ne morejo imeti odcepov
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Nemogoča gradnja ceste ...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Nemogoča gradnja tramvaja tukaj...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Nemogoča gradnja tramvaja tukaj...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nemogoča odstranitev ceste ...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Nemogoče odstraniti tramvaja od tukaj...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Nemogoče odstraniti tramvaja od tukaj...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Smer garaže
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orijentacija tramvaj garaže
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orijentacija tramvaj garaže
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nemogoča gradnja garaže tukaj ...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Nemogoča gradnja tramvaj garaže tukaj...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Nemogoča gradnja tramvaj garaže tukaj...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nemogoča gradnja avtobusne postaje ...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nemogoča gradnja tovorne postaje tukaj ...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Nemogoča gradnja potniške tramvaj postaje...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Nemogoča gradnja tovorne tramvaj postaje...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Nemogoča gradnja potniške tramvaj postaje...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Nemogoča gradnja tovorne tramvaj postaje...
 STR_180A_ROAD_CONSTRUCTION                                      :Gradnja ceste
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Gradnja tramvaj proge
+STR_TRAMWAY_CONSTRUCTION                                        :Gradnja tramvaj proge
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Zgradi cestni odsek
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Gradnja cestnega odseka v avtomatskem načinu
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Zgradi odsek proge
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Zgradi odsek proge
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Gradnja tramvaj proge v avtomatskem načinu
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Zgradi garažo (za izdelavo in servis vozil)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Zgradi tramvaj garažo (za izdelavo in servisiranje vozil)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Zgradi tramvaj garažo (za izdelavo in servisiranje vozil)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Zgradi avtobusno postajo
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Zgradi tovorno postajo
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Zgradi potniško tramvaj postajo
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Zgradi tovorno tramvaj postajo
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Zgradi potniško tramvaj postajo
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Zgradi tovorno tramvaj postajo
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Zgradi cestni most
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Zgradi most za tramvaj
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Zgradi most za tramvaj
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Zgradi cestni predor
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Zgradi predor za tramvaj
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Zgradi predor za tramvaj
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Omogoči/onemogoči enosmerne ceste
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Preklopi gradnja/rušenje cestnih konstrukcij
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Preklop gradi/odstrani za tramvaj progo
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Preklop gradi/odstrani za tramvaj progo
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Izberi smer garaže
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Izberi orijentacijo tramvaj garaže
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Izberi orijentacijo tramvaj garaže
 STR_1814_ROAD                                                   :Cesta
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Cesta z razsvetljavo
 STR_1816_TREE_LINED_ROAD                                        :Drevored
@@ -1874,8 +1868,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Združi dve ali več postaj
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Preveč postaj v tem mestu
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Preveč postaj na zemljevidu
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Preveč avtobusnih postaj
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Preveč tovornih postaj
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Preveč avtobusnih postaj
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Preveč tovornih postaj
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Preblizu druge postaje
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Najprej je potrebno porušiti postajo
@@ -1906,12 +1900,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} sedaj sprejema {STRING.t} in {STRING.t}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientacija avtobusne postaje
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientacija tovorne postaje
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orijentacija potniške postaje
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orijentacija tovorne postaje
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orijentacija potniške postaje
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orijentacija tovorne postaje
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Najprej moraš porušiti avtobusno postajo
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Najprej moraš porušiti tovorno postajo
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Najprej poruši potniško tramvaj postajo
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Najprej poruši tovorno tramvaj postajo
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Najprej poruši potniško tramvaj postajo
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Najprej poruši tovorno tramvaj postajo
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Postaj{P a i e ""}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Brez -
@@ -1923,8 +1917,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Izberi dolžino železniške postaje
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Izberi orientacijo železniške postaje
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Izberi orientacijo tovorne postaje
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Izbor orijentacije potniške tramvaj postaje
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Izbor orijentacije tovorne tramvaj postaje
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Izbor orijentacije potniške tramvaj postaje
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Izbor orijentacije tovorne tramvaj postaje
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Pogled na postajo
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Prikaz ocen postaje
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Spremeni ime postaje
@@ -1946,7 +1940,7 @@
 STR_3069_BUOY                                                   :Boja
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE} ... boja na poti
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE} ... postaja preveč razširjena
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE} ... nehomogene postaje izklopljene
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE} ... nehomogene postaje izklopljene
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Drži CTRL za izbor več stvari
 
 STR_UNDEFINED                                                   :(nedefinirana vrstica)
@@ -1987,7 +1981,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Izberi tip nove igre
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Izberi scenarij (zeleno), prednastavljeno igro (modro) ali naključno novo igro
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Ustvari naključno novo igro
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Naloži višinsko karto
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Naloži višinsko karto
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} na poti
@@ -2228,10 +2222,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomija: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Obračanje vlakov: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofe: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Odnos mestnega sveta do prestrukturiranja območja: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Odnos mestnega sveta do prestrukturiranja območja: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Brez
+STR_NONE                                                        :Brez
 STR_NUM_VERY_LOW                                                :Zelo malo
 STR_6816_LOW                                                    :Malo
 STR_6817_NORMAL                                                 :Normalno
@@ -2269,9 +2263,9 @@
 STR_6836_OFF                                                    :Izklopljeno
 STR_6837_ON                                                     :Vklopljeno
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Pokaži tabelo najboljših
-STR_6839_PERMISSIVE                                             :Dopustno
-STR_683A_TOLERANT                                               :Tolerantno
-STR_683B_HOSTILE                                                :Sovražno
+STR_PERMISSIVE                                                  :Dopustno
+STR_TOLERANT                                                    :Tolerantno
+STR_HOSTILE                                                     :Sovražno
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2408,7 +2402,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Ni mogoče prodati 25% delnic tega podjetja ...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% v lasti podjetja {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :Podjetje {BLACK}{BIGFONT}{COMPANY} je bilo prevzeto s strani podjetja {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Podjetje še ni dovolj staro, da bi lahko trgovalo z lastnimi delnicami ...
+STR_PROTECTED                                                   :{WHITE}Podjetje še ni dovolj staro, da bi lahko trgovalo z lastnimi delnicami ...
 
 STR_LIVERY_DEFAULT                                              :Standardni pogon
 STR_LIVERY_STEAM                                                :Parna lokomotiva
@@ -2421,6 +2415,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Potniški vagon (za parne vlake)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Potniški vagon (za diesel vlake)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Potniški vagon (za električne vlake)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :potniški vagon (enotirni)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :potniški vagon (maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Tovorni vagon
 STR_LIVERY_BUS                                                  :Avtobus
 STR_LIVERY_TRUCK                                                :Tovornjak
@@ -2715,17 +2711,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8806_GO_TO                                                  :Pojdi do {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Pojdi do {STATION} (Pretovori in vzemi tovor)
-STR_8808_GO_TO_UNLOAD                                           :Pojdi do {STATION} (Raztovori)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Pojdi do {STATION} (Pretovori in pusti prazno)
-STR_880A_GO_TO_LOAD                                             :Pojdi do  {STATION} (Naloži)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Pojdi do {STATION} (Prenesi in počakaj na polno breme)
-STR_880C_GO_NON_STOP_TO                                         :Pojdi brez postanka do {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Pojdi brez postanka do {STATION} (Prenesi in vzemi tovor)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Pojdi brez postanka do {STATION} (Raztovori)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Pojdi brez postanka do {STATION} (Pretovori in pusti prazno)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Pojdi brez postanka do {STATION} (Naloži)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Pojdi brez postanka do {STATION} (Prenesi in počakaj na polno breme)
+STR_GO_TO_TRANSFER                                              :Pojdi do {STATION} (Pretovori in vzemi tovor)
+STR_8807_GO_TO_UNLOAD                                           :Pojdi do {STATION} (Raztovori)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Pojdi do {STATION} (Pretovori in pusti prazno)
+STR_8808_GO_TO_LOAD                                             :Pojdi do  {STATION} (Naloži)
+STR_GO_TO_TRANSFER_LOAD                                         :Pojdi do {STATION} (Prenesi in počakaj na polno breme)
+STR_880A_GO_NON_STOP_TO                                         :Pojdi brez postanka do {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Pojdi brez postanka do {STATION} (Prenesi in vzemi tovor)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Pojdi brez postanka do {STATION} (Raztovori)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Pojdi brez postanka do {STATION} (Pretovori in pusti prazno)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Pojdi brez postanka do {STATION} (Naloži)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Pojdi brez postanka do {STATION} (Prenesi in počakaj na polno breme)
 STR_GO_TO_TRAIN_DEPOT                                           :Pojdi v {TOWN} železniško garažo
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Na servis v {TOWN} železniško garažo
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Pojdi brez postanka do garaže {TOWN}
@@ -2829,7 +2825,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaži podrobnosti tovora na vlaku
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Pokaži podrobnosti o vagonih
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Prikaži zmogljivosti vsakega vagona
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Prikaži polno zmogljivost vlaka, razdeli glede na tip tovora
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Prikaži polno zmogljivost vlaka, razdeli glede na tip tovora
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Seznam navodil - klikni na ukaz, da ga izbereš. CTRL+klik prikaže postajo
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Preskoči trenutni ukaz in začni naslednjega. CTRL + klik preskoči na izbran ukaz
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Zbriši izbran ukaz
@@ -2860,8 +2856,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Ni mogoče spremeniti smeri vlaka ...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Preimenuj železniško vozilo
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Ni mogoče preimenovati železniškega vozila ...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Nastavi označen ukaz, naj prisili vozilo, da se raztovori
-STR_886F_TRANSFER                                               :{BLACK}Pretovori
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Nastavi označen ukaz, naj prisili vozilo, da se raztovori
+STR_TRANSFER                                                    :{BLACK}Pretovori
 STR_CLEAR_TIME                                                  :{BLACK}Počisti čas
 STR_RESET_LATENESS                                              :{BLACK}Resetiraj  Late Counter
 
@@ -2939,8 +2935,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Poimenuj cestno vozilo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Prebivalci praznujejo . . .{}Prihod prvega avtobusa na postajo {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Prebivalci praznujejo . . .{}Prihod prvega tovornjaka na postajo {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Meščani proslavljajo . . .{}Prvi potniški tramvaj je prispel na postajo {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Proslava meščanov . . .{}Prvi tovorni tramvaj je pripeljal na postajo {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Meščani proslavljajo . . .{}Prvi potniški tramvaj je prispel na postajo {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Proslava meščanov . . .{}Prvi tovorni tramvaj je pripeljal na postajo {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Prometna nesreča!{}Voznik umrl v plamenih po trku z vlakom.
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Prometna nesreča!{}{COMMA} mrt{P ev va vi vih} v plamenih ob trku z vlakom.
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Ni mogoče obrniti smeri vozila ...
@@ -2949,7 +2945,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Preimenuj cestno vozilo
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Preimenuj cestno vozilo
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Ni mogoče preimenovati cestnega vozila ...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Pojdi v garažo v mestu {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Pojdi v garažo v mestu {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Na servis v {TOWN} cestno garažo
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Predelaj vozilo za prevoz druge vrste tovora
@@ -3323,6 +3319,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Vse, razen {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Največja vlečna moč: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Ustvari
@@ -3350,7 +3352,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Prevelika sprememba velikosti ozemlja ni priporočena. Nadaljujem?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Opozorilo mestne  razporeditve
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Mestna razporeditev "nič več cest" ni priporočena. Nadaljuješ z ustvarjanjem?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Ime višinskega zemljevida:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Velikost: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Ustvarjanje sveta...
@@ -3376,7 +3377,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Premik višine ravnega terena eno enoto višje
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Spremeni višino ravnega terena
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Višina ravnega terena:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrira majhen zemljevid na trenutno točko
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/spanish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/spanish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -16,8 +16,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Se requiere terreno llano
 STR_0008_WAITING                                                :{BLACK}Esperando: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (en ruta desde
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} en ruta desde {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Acepta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Acepta: {GOLD}
 STR_000E                                                        :
@@ -275,9 +274,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Demasiados nombres definidos
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}El nombre elegido está en uso
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -288,11 +287,11 @@
 STR_013C_CARGO                                                  :{BLACK}Carga
 STR_013D_INFORMATION                                            :{BLACK}Información
 STR_013E_CAPACITIES                                             :{BLACK}Capacidades
-STR_013E_TOTAL_CARGO                                            :{BLACK}Carga total
+STR_TOTAL_CARGO                                                 :{BLACK}Carga total
 STR_013F_CAPACITY                                               :{BLACK}Capacidad: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Capacidad: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Carga total (capacidad) de este tren:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Carga total (capacidad) de este tren:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nuevo Juego
 STR_0141_LOAD_GAME                                              :{BLACK}Cargar Juego
@@ -300,12 +299,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Multijugador
 STR_SCENARIO_EDITOR                                             :{BLACK}Editor de Escenario
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Tamaño del mapa:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Opciones de Juego
@@ -733,11 +726,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Colocar transmisor
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Define área desertica.{}Pulsa y mantén CTRL para quitarla
 STR_CREATE_LAKE                                                 :{BLACK}Define el area de agua.{}Haz un canal, a menos que mantengas pulsado CTRL a nivel del mar, entonces se inundarán los alrededores del lugar
+STR_CREATE_RIVER                                                :{BLACK}Colocar rios.
 STR_0290_DELETE                                                 :{BLACK}Borrar
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Borrar esta población completamente
 STR_0292_SAVE_SCENARIO                                          :Guardar escenario
 STR_0293_LOAD_SCENARIO                                          :Cargar escenario
-STR_LOAD_HEIGHTMAP                                              :Cargar mapa de alturas
+STR_MENU_LOAD_HEIGHTMAP                                         :Cargar mapa de alturas
 STR_0294_QUIT_EDITOR                                            :Salir del editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Salir
@@ -777,9 +771,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Opciones de juego
-STR_02C5_DIFFICULTY_SETTINGS                                    :Configuración de dificultad
-STR_02C7_CONFIG_PATCHES                                         :Configurar parches
+STR_02C4_GAME_OPTIONS                                           :Opciones de juego
+STR_02C6_DIFFICULTY_SETTINGS                                    :Configuración de dificultad
+STR_MENU_CONFIG_PATCHES                                         :Configurar parches
 STR_NEWGRF_SETTINGS                                             :Configuración Newgrf
 STR_TRANSPARENCY_OPTIONS                                        :Opciones de transparencia
 STR_GAMEOPTMENU_0A                                              :
@@ -879,8 +873,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}El grabado está en progreso,{}por favor espere hasta que termine!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Elegir el programa musical de estilo 'Ezy Street'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Inglés
@@ -942,6 +936,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}Pantalla completa
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}Marca esta opción para jugar OpenTTD a pantalla completa
+STR_FULLSCREEN_FAILED                                           :{WHITE}El modo de pantalla completa ha fallado
 
 STR_OPTIONS_RES                                                 :{BLACK}Resolución de pantalla
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1654,42 +1649,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Ha de retirar carretera primero
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Trabajos en la carretera en progreso
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construcción de carretera
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construcción de tranvía
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Construcción de tranvía
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Elige puente de carretera
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... carreteras de un sentido no pueden tener intersecciones
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}No se puede construir carretera aquí...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}No se puede construir un tranvía aquí...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}No se puede construir un tranvía aquí...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}No se puede retirar carretera de aquí...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}No se puede quitar el tranvía de aquí...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}No se puede quitar el tranvía de aquí...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientación del depósito
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Orientación del depósito de tranvía
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Orientación del depósito de tranvía
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}No se puede construir depósito de carretera aquí...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}No se puede construir depósito de tranvía aquí...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}No se puede construir depósito de tranvía aquí...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}No se puede construir estación de autobuses...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}No se puede construir estación de camiones...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}No se puede construir estación de tranvía de pasajeros...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}No puede construir estación de tranvía de carga...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}No se puede construir estación de tranvía de pasajeros...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}No puede construir estación de tranvía de carga...
 STR_180A_ROAD_CONSTRUCTION                                      :Construcción de carretera
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Construcción de tranvía
+STR_TRAMWAY_CONSTRUCTION                                        :Construcción de tranvía
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construir sección de carretera
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Construir carretera usando el modo de Autocarretera
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construir sección de tranvía
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Construir sección de tranvía
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Construir metro usando el modo de Autometro
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construir depósito de carretera (para construir y despachar vehículos)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Construir depósito de tranvías (para vehículos de contrucción y servicio)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Construir depósito de tranvías (para vehículos de contrucción y servicio)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Construir estación de autobús
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construir estación de carga para camiones
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Construir estación de tranvía de pasajeros
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Construir estación de tranvía de carga
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Construir estación de tranvía de pasajeros
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Construir estación de tranvía de carga
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construir puente de carretera
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Construir puente de tranvía
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Construir puente de tranvía
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construir túnel de carretera
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Construir tunel de tranvía
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Construir tunel de tranvía
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Activar/Desactivar carreteras de un sentido
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Cambiar entre construir/retirar carretera
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Activar construir/quitar para construcciones de tranvía
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Activar construir/quitar para construcciones de tranvía
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Elegir orientación del depósito de carretera
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Seleccione orientación del depósito de tranvías
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Seleccione orientación del depósito de tranvías
 STR_1814_ROAD                                                   :Road
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Carretera con farolas
 STR_1816_TREE_LINED_ROAD                                        :Carretera arbolada
@@ -1832,8 +1827,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}djunta más de una estación/zona de carga existente
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Demasiadas estaciones/zonas de carga en esta población
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Demasiadas estaciones/zonas de carga
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Demasiadas paradas de Autobús
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Demasiadas zonas de carga
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Demasiadas paradas de Autobús
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Demasiadas zonas de carga
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Demasiado cerca de otra estación/zona de carga
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Primero debe demolerse estación de tren
@@ -1864,12 +1859,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} acepta ahora {STRING} y {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Or. estación de autobús
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Or. estación de camiones
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Orientación Tranvía Pasajeros
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Orientación Tranvía de Carga
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Orientación Tranvía Pasajeros
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Orientación Tranvía de Carga
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Primero debe demolerse estación de autobús
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Primero debe demolerse estación de camiones
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Debe demoler la estación del tranvía de pasajeros primero
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Debe demoler la estación del tranvía de carga primero
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Debe demoler la estación del tranvía de pasajeros primero
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Debe demoler la estación del tranvía de carga primero
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estaciones
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ninguna -
@@ -1881,8 +1876,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Elige longitud de la estación de tren
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Elige la orientación de la estación de autobús
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Elige la orientación de la estación de camiones
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Seleccione la orientación de la estación del tranvía de pasajeros
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Seleccione la orientación de la estación del tranvía de carga
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Seleccione la orientación de la estación del tranvía de pasajeros
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Seleccione la orientación de la estación del tranvía de carga
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrar vista en la posición de la estación
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Ver calificación de la estación
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Cambiar nombre de la estación
@@ -1904,7 +1899,7 @@
 STR_3069_BUOY                                                   :Boya
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boya en medio
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...estación demasiado extendida
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...desactivada estaciones no uniformes
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...desactivada estaciones no uniformes
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Manten pulsado CTRL para seleccionar varios elementos
 
 STR_UNDEFINED                                                   :(cadena sin determinar)
@@ -1945,7 +1940,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Seleccione Nuevo Tipo de Juego
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Seleccione escenario (verde), juegos preestablecidos-set (azul), o juego al azar
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generar juego nuevo al azar
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Cargar Mapas de altura
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Cargar Mapas de altura
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} en medio
@@ -2149,10 +2144,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Economía: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Marcha atrás trenes: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Desastres: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Actitud de la autoridades sobre reestructuraciones: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Actitud de la autoridades sobre reestructuraciones: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ninguno
+STR_NONE                                                        :Ninguno
 STR_NUM_VERY_LOW                                                :Muy bajo
 STR_6816_LOW                                                    :Baja
 STR_6817_NORMAL                                                 :Normal
@@ -2190,9 +2185,9 @@
 STR_6836_OFF                                                    :No
 STR_6837_ON                                                     :Si
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Ver gráfica de altas puntuaciones
-STR_6839_PERMISSIVE                                             :Permisiva
-STR_683A_TOLERANT                                               :Tolerante
-STR_683B_HOSTILE                                                :Hostil
+STR_PERMISSIVE                                                  :Permisiva
+STR_TOLERANT                                                    :Tolerante
+STR_HOSTILE                                                     :Hostil
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2324,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}No se puede vender el 25% de acciones...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% propiedad de {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} ha sido comprada por {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Esta empresa todavía no dispone acciones a la venta...
+STR_PROTECTED                                                   :{WHITE}Esta empresa todavía no dispone acciones a la venta...
 
 STR_LIVERY_DEFAULT                                              :Estación normal
 STR_LIVERY_STEAM                                                :Locomotora a Vapor
@@ -2342,6 +2337,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Vagón Pasajeros (Vapor)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Vagón Pasajeros (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Vagón Pasajeros (Electrico)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Vagón Pasajeros (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Vagón Pasajeros (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagón de Carga
 STR_LIVERY_BUS                                                  :Bus
 STR_LIVERY_TRUCK                                                :Camión
@@ -2636,17 +2633,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8806_GO_TO                                                  :Ir a {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Ir a {STATION} (Transferir y cargar)
-STR_8808_GO_TO_UNLOAD                                           :Ir a {STATION} (Descargar)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Ir a {STATION} (Transferir y dejar vacío)
-STR_880A_GO_TO_LOAD                                             :Ir a {STATION} (Cargar)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Ir a {STATION} (Transferir y esperar a carga completa)
-STR_880C_GO_NON_STOP_TO                                         :Ir sin paradas a {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Ir sin paradas a {STATION} (Transferir y cargar)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Ir sin paradas a {STATION} (Descargar)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Ir sin paradas a {STATION} (Transferir y dejar vacío)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Ir sin paradas a  {STATION} (Cargar)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Ir sin paradas a {STATION} (Transferir y esperar a carga completa)
+STR_GO_TO_TRANSFER                                              :Ir a {STATION} (Transferir y cargar)
+STR_8807_GO_TO_UNLOAD                                           :Ir a {STATION} (Descargar)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Ir a {STATION} (Transferir y dejar vacío)
+STR_8808_GO_TO_LOAD                                             :Ir a {STATION} (Cargar)
+STR_GO_TO_TRANSFER_LOAD                                         :Ir a {STATION} (Transferir y esperar a carga completa)
+STR_880A_GO_NON_STOP_TO                                         :Ir sin paradas a {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Ir sin paradas a {STATION} (Transferir y cargar)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Ir sin paradas a {STATION} (Descargar)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Ir sin paradas a {STATION} (Transferir y dejar vacío)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Ir sin paradas a  {STATION} (Cargar)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Ir sin paradas a {STATION} (Transferir y esperar a carga completa)
 STR_GO_TO_TRAIN_DEPOT                                           :Ir al depósito del tren de {TOWN}
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Ir al depósito de {TOWN} para mantenimiento
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Ir sin parar al depósito de {TOWN}
@@ -2750,7 +2747,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Mostrar detalles de mercancía transportada
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Mostrar detalles de los vehículos
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostrar capacidades de cada vehículo
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostrar capacidad total del tren, dividida por tipo de carga
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Mostrar capacidad total del tren, dividida por tipo de carga
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de órdenes - click en orden para resaltarla
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Saltar orden actual y comenzar la siguiente
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Borrar orden resaltada
@@ -2781,8 +2778,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}No se puede revertir la dirección...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Renombrar tipo de vehículo
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}No se puede renombrar tipo de vehículo...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Hacer que la orden marcada fuerce al vehículo a descargar
-STR_886F_TRANSFER                                               :{BLACK}Transferir
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Hacer que la orden marcada fuerce al vehículo a descargar
+STR_TRANSFER                                                    :{BLACK}Transferir
 STR_CLEAR_TIME                                                  :{BLACK}Limpiar Horario
 STR_RESET_LATENESS                                              :{BLACK}Resetear Retrasos
 
@@ -2860,8 +2857,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Nombrar vehículo
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Los ciudadanos celebran . . .{}¡Primer autobús llega a {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Los ciudadanos celebran . . .{}¡Primer camión llega a {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Ciudadanos celebran . . .{}Llega primer tranvía de pasajeros a {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Ciudadanos celebran . . .{}Llega primer tranvía de carga a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Ciudadanos celebran . . .{}Llega primer tranvía de pasajeros a {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Ciudadanos celebran . . .{}Llega primer tranvía de carga a {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}¡Accidente de tráfico!{}El conductor fallece en la explosión tras la colisión con el tren
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Accidente de tráfico!{}{COMMA} fallecidos en la explosión tras la colisión con el tren
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}No se puede hacer girar al vehículo...
@@ -2870,7 +2867,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Renombrar tipo de vehículo
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Renombrar tipo de vehículo
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}No se puede renombrar tipo de vehículo....
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Ir al depósito de {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Ir al depósito de {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Ir al depósito de {TOWN} para mantenimiento
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Reparar vehículo de carretera para transportar otro tipo de cargas
@@ -3244,6 +3241,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Todo excepto {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Max. Esfuerzo de Tracción {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generar
@@ -3271,7 +3274,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Cambiar demasiado el tamaño del mapa de origen no está recomendado. ¿Desea continuar con la generación?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Aviso de trazado de ciudad
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}El trazado de ciudad "no más carreteras" no es recomendable. ¿Continuar con la generación?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Nombre del mapa de alturas:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Tamaño: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Generando mundo...
@@ -3297,7 +3299,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Mueve la altura de la tierra llana uno arriba
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Cambia la altura de la tierra llana
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Altura tierra llana:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrar el mapa pequeño a la posición actual
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/swedish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/swedish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Platt mark krävs
 STR_0008_WAITING                                                :{BLACK}Väntar: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (på väg från
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepterar: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepterar: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}För många namn definerade
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Namnet används redan
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Gods
 STR_013D_INFORMATION                                            :{BLACK}Information
 STR_013E_CAPACITIES                                             :{BLACK}Kapaciteter
-STR_013E_TOTAL_CARGO                                            :{BLACK}Gods Totalt
+STR_TOTAL_CARGO                                                 :{BLACK}Gods Totalt
 STR_013F_CAPACITY                                               :{BLACK}Kapacitet: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapacitet: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Tågets totala kapacitet:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}{CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Tågets totala kapacitet:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}{CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Nytt spel
 STR_0141_LOAD_GAME                                              :{BLACK}Ladda spel
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Flera spelare
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenario editor
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kartstorlek:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spelinställningar
@@ -732,11 +724,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Placera radiosändare
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Definiera ökenområde.{}Tryck och håll CTRL för att ta bort
 STR_CREATE_LAKE                                                 :{BLACK}Definiera vattenyta.{}Skapa en kanal, om inte CTRL är nedhållen vid havsnivå, då den kommer att översvämma närliggande områden istället
+STR_CREATE_RIVER                                                :{BLACK}Placera flod.
 STR_0290_DELETE                                                 :{BLACK}Ta bort
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Ta bort staden helt och hållet
 STR_0292_SAVE_SCENARIO                                          :Spara scenario
 STR_0293_LOAD_SCENARIO                                          :Öppna scenario
-STR_LOAD_HEIGHTMAP                                              :Ladda höjdkarta
+STR_MENU_LOAD_HEIGHTMAP                                         :Ladda höjdkarta
 STR_0294_QUIT_EDITOR                                            :Avsluta editor
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Avsluta
@@ -776,9 +769,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spelinställningar
-STR_02C5_DIFFICULTY_SETTINGS                                    :Svårighetsgrad
-STR_02C7_CONFIG_PATCHES                                         :Ändra Patchar
+STR_02C4_GAME_OPTIONS                                           :Spelinställningar
+STR_02C6_DIFFICULTY_SETTINGS                                    :Svårighetsgrad
+STR_MENU_CONFIG_PATCHES                                         :Ändra Patchar
 STR_NEWGRF_SETTINGS                                             :NewGRF inställningar
 STR_TRANSPARENCY_OPTIONS                                        :Genomskinlighetsinställningar
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +871,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Sparar fortfarande,{}vänta tills det är slutfört!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Välj 'Ezy Street style music'-program
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Engelska
@@ -1654,42 +1647,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Måste ta bort väg först
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Vägarbete pågår
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Bygg väg
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Byggnation av spårvagn
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Byggnation av spårvagn
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Välj vägbro
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... enkelriktade vägar kan inte ha korsningar
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan inte bygga väg här...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan inte bygga spårvagnsräls här...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Kan inte bygga spårvagnsräls här...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan inte ta bort väg här...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kan inte ta bort spårvagnsrälsen härifrån...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Kan inte ta bort spårvagnsrälsen härifrån...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Riktning för bussgarage
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Spårvagnsdepåns orientering
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Spårvagnsdepåns orientering
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kan inte bygga bussgarage här...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kan inte bygga spårvagnsdepå här...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Kan inte bygga spårvagnsdepå här...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kan inte bygga busshållplats...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kan inte bygga lastbilsstation...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kan inte bygga passagerar-spårvagnsstation...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kan inte bygga frakt-spårvagnsstation...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Kan inte bygga passagerar-spårvagnsstation...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Kan inte bygga frakt-spårvagnsstation...
 STR_180A_ROAD_CONSTRUCTION                                      :Bygg väg
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Spårvagnskonstruktion
+STR_TRAMWAY_CONSTRUCTION                                        :Spårvagnskonstruktion
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bygg väg
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Använd Automatvägläge för att bygga vägsektion
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bygg spårvagnssektion
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Bygg spårvagnssektion
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Använd Automatspårläge för att bygga spårväg
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Bygg bussgarage (för att bygga eller reparera vägfordon)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Bygg spårvagnsdepå (för att konstruera och serva fordon)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Bygg spårvagnsdepå (för att konstruera och serva fordon)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Bygg busshållplats
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Bygg lastbilsstation
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Bygg passagerar-spårvagnsstation
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Bygg frakt-spårvagnsstation
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Bygg passagerar-spårvagnsstation
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Bygg frakt-spårvagnsstation
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bygg vägbro
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Bygg spårvagnsbro
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Bygg spårvagnsbro
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Bygg vägtunnel
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Bygg spårvagnstunnel
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Bygg spårvagnstunnel
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Aktivera/Deaktivera enkelriktade vägar
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Växla mellan att bygga/ta bort väg
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Växla byggande/rivande av spårvagnskonstruktion
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Växla byggande/rivande av spårvagnskonstruktion
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Välj riktning för bussgarage
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Välj spårvagnsdepåns orientering
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Välj spårvagnsdepåns orientering
 STR_1814_ROAD                                                   :Väg
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Väg med gatubelysning
 STR_1816_TREE_LINED_ROAD                                        :Väg med träd
@@ -1832,8 +1825,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Angränsar till mer än en station/hållplats
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}För många stationer/hållplatser i staden
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}För många stationer/hållplatser
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}För många busshållplatser
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}För många lastbilsstationer
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}För många busshållplatser
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}För många lastbilsstationer
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}För nära en annan stationer/hållplatser
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Måste riva järnvägsstation först
@@ -1864,12 +1857,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} tar nu emot {STRING} och {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Busshållplatsriktning
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lastbilsbryggsriktning
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Passagerar-spårvagns riktning
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Frakt-spårvagns riktning
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Passagerar-spårvagns riktning
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Frakt-spårvagns riktning
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Måste riva busshållplats först
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Måste riva lastbilsbrygga först
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Måste ta bort passagerar-spårvagnsstation först
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Måste ta bort frakt-spårvagnsstation först
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Måste ta bort passagerar-spårvagnsstation först
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Måste ta bort frakt-spårvagnsstation först
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" er}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Inga -
@@ -1881,8 +1874,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Välj längden på järnvägsstation
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Välj riktning för busshållplats
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Välj riktning för lastbilsbrygga
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Välj passagerar-spårvagnsstationens orientering
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Välj frakt-spårvagnsstationens orientering
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Välj passagerar-spårvagnsstationens orientering
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Välj frakt-spårvagnsstationens orientering
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centrera vyn på stationen
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Visa stationens klassificering
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Byt namn på stationen
@@ -1904,7 +1897,7 @@
 STR_3069_BUOY                                                   :Boj
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...boj i vägen
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...station för utspridd
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ej enhetliga stationer inaktiverade
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ej enhetliga stationer inaktiverade
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Håll nere CTRL för att markera mer än en sak
 
 STR_UNDEFINED                                                   :(oidentifierad sträng)
@@ -1945,7 +1938,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Välj typ av nytt spel
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Välj scenario (grön), förbestämt spel (blå), eller slumpmässigt nytt spel
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Skapa slumpmässigt nytt spel
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Läs höjdkarta
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Läs höjdkarta
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} i vägen
@@ -2149,10 +2142,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomi: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Tåg kan vända: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Katastrofer: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Stadens attityd mot områdesombyggnad: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Stadens attityd mot områdesombyggnad: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Ingen
+STR_NONE                                                        :Ingen
 STR_NUM_VERY_LOW                                                :Väldigt låg
 STR_6816_LOW                                                    :Låg
 STR_6817_NORMAL                                                 :Normal
@@ -2190,9 +2183,9 @@
 STR_6836_OFF                                                    :Av
 STR_6837_ON                                                     :På
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Visa highscore-lista
-STR_6839_PERMISSIVE                                             :Eftergiven
-STR_683A_TOLERANT                                               :Tolerant
-STR_683B_HOSTILE                                                :Fientlig
+STR_PERMISSIVE                                                  :Eftergiven
+STR_TOLERANT                                                    :Tolerant
+STR_HOSTILE                                                     :Fientlig
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2329,7 +2322,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Kan inte sälja 25% andelar i detta företag...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% ägs av {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} har tagits över av {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Det här företaget bedriver inte aktiehandel ännu....
+STR_PROTECTED                                                   :{WHITE}Det här företaget bedriver inte aktiehandel ännu....
 
 STR_LIVERY_DEFAULT                                              :Normalt Färgschema
 STR_LIVERY_STEAM                                                :Ånglok
@@ -2342,6 +2335,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Passagerarvagn (Ånga)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Passagervagn (Diesel)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Passagerarvagn (Elektricitet)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Passagerarvagn (Monorail)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Passagerarvagn (Maglev)
 STR_LIVERY_FREIGHT_WAGON                                        :Fraktvagn
 STR_LIVERY_BUS                                                  :Buss
 STR_LIVERY_TRUCK                                                :Lastbil
@@ -2636,17 +2631,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Åk till {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Åk till {STATION} (Lasta om och på)
-STR_8808_GO_TO_UNLOAD                                           :Åk till {STATION} (Lasta av)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Åk till {STATION} (Lasta om men inte på)
-STR_880A_GO_TO_LOAD                                             :Åk till {STATION} (Lasta på)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Åk till {STATION} (Lasta om och vänta på full last)
-STR_880C_GO_NON_STOP_TO                                         :Åk nonstop till {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Åk nonstop till {STATION} (Lasta om och på)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Åk nonstop till {STATION} (Lasta av)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Åk nonstop till {STATION} (Lasta om men inte på)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Åk nonstop till {STATION} (Lasta på)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Åk nonstop till {STATION} (Lasta om och vänta på full last)
+STR_GO_TO_TRANSFER                                              :Åk till {STATION} (Lasta om och på)
+STR_8807_GO_TO_UNLOAD                                           :Åk till {STATION} (Lasta av)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Åk till {STATION} (Lasta om men inte på)
+STR_8808_GO_TO_LOAD                                             :Åk till {STATION} (Lasta på)
+STR_GO_TO_TRANSFER_LOAD                                         :Åk till {STATION} (Lasta om och vänta på full last)
+STR_880A_GO_NON_STOP_TO                                         :Åk nonstop till {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Åk nonstop till {STATION} (Lasta om och på)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Åk nonstop till {STATION} (Lasta av)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Åk nonstop till {STATION} (Lasta om men inte på)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Åk nonstop till {STATION} (Lasta på)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Åk nonstop till {STATION} (Lasta om och vänta på full last)
 STR_GO_TO_TRAIN_DEPOT                                           :Åk till {TOWN}s tågdepå
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Servning vid {TOWN} tågdepå
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Åk non-stop till {TOWN}s tågdepå
@@ -2750,7 +2745,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Visa detaljer för lastat gods
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Visa detaljer för tågfordon
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Visa kapaciteter för varje fordon
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Visa tågets totala kapacitet, separera för typ av gods
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Visa tågets totala kapacitet, separera för typ av gods
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orderlista - klicka på order för att markera det
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Hoppa över nuvarande order och starta nästa. CTRL + klick hoppar över till vald order
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Ta bort markerad order
@@ -2781,8 +2776,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Kan inte byta tågets riktning...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Byt namn på tågets fordonstyp
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Kan inte byta namn på tågets fordonstyp...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gör så att den markerade ordern tvingar fordonet att lasta av
-STR_886F_TRANSFER                                               :{BLACK}Lasta om
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Gör så att den markerade ordern tvingar fordonet att lasta av
+STR_TRANSFER                                                    :{BLACK}Lasta om
 STR_CLEAR_TIME                                                  :{BLACK}Rensa tid
 STR_RESET_LATENESS                                              :{BLACK}Rensa räknaren för sen ankomst
 
@@ -2860,8 +2855,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Byt namn på vägfordon
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Invånarna firar . . .{}Första bussen ankommer till {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Invånarna firar . . .{}Första lastbilen ankommer till {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Invånarna firar . . .{}Första passagerar-spårvagnen anländer på {STATION}!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Invånarna firar . . .{}Första frakt-spårvagnen anländer på {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Invånarna firar . . .{}Första passagerar-spårvagnen anländer på {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Invånarna firar . . .{}Första frakt-spårvagnen anländer på {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Vägfordonskrash!{}förare dör i eldklot efter kollision med tåg
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Vägfordonskrash!{}{COMMA} dör i eldklot efter kollision med tåg
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan inte tvinga fordonet att vända om...
@@ -2870,7 +2865,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Byt namn på vägfordon typ
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Byt namn på vägfordon typ
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Kan inte byta namn på vägfordon typ...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Gå till {TOWN} vägfordonsdepå
+STR_GO_TO_ROADVEH_DEPOT                                         :Gå till {TOWN} vägfordonsdepå
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Servning vid {TOWN} vägfordonsdepå Depot
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Anpassa vägfordon till att bära en annan sorts last
@@ -3244,6 +3239,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Allt utom {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Maximal Dragkraft: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Generera
@@ -3271,7 +3272,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}För stora storleksändringar av källkarta är inte rekomenderat. Fortsätt med generering?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Varning genererat från stadens väg-inställningar
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Det är ej rekommenderat att använda inställningen "inga fler vägar". Vill du fortsätta ändå?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Namn på höjdkarta:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Storlek: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Genererar värld...
@@ -3297,7 +3297,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Öka höjden av platt land ett upp
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Ändra höjd av platt land
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Höjd av platt land:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Centrera den lilla kartan på den nuvarande positionen
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/traditional_chinese.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/traditional_chinese.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}需要平地
 STR_0008_WAITING                                                :{BLACK}等候:{WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (轉運自
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}接受:{WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}接受:{GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}已定義過多名稱
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}所選名稱已被使用
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}貨物
 STR_013D_INFORMATION                                            :{BLACK}資訊
 STR_013E_CAPACITIES                                             :{BLACK}載量
-STR_013E_TOTAL_CARGO                                            :{BLACK}總貨物量
+STR_TOTAL_CARGO                                                 :{BLACK}總貨物量
 STR_013F_CAPACITY                                               :{BLACK}載量:{LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}載量:{LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}此列車的總載量:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}此列車的總載量:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}開新遊戲
 STR_0141_LOAD_GAME                                              :{BLACK}載入遊戲
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}多人遊戲
 STR_SCENARIO_EDITOR                                             :{BLACK}場景編輯器
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}版圖大小:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}遊戲選項
@@ -733,7 +725,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}完全移除這個市鎮
 STR_0292_SAVE_SCENARIO                                          :儲存場景
 STR_0293_LOAD_SCENARIO                                          :載入場景
-STR_LOAD_HEIGHTMAP                                              :載入高度圖
+STR_MENU_LOAD_HEIGHTMAP                                         :載入高度圖
 STR_0294_QUIT_EDITOR                                            :離開編輯器
 STR_0295                                                        :
 STR_0296_QUIT                                                   :離開
@@ -773,9 +765,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :遊戲選項
-STR_02C5_DIFFICULTY_SETTINGS                                    :難易設定
-STR_02C7_CONFIG_PATCHES                                         :設置修正
+STR_02C4_GAME_OPTIONS                                           :遊戲選項
+STR_02C6_DIFFICULTY_SETTINGS                                    :難易設定
+STR_MENU_CONFIG_PATCHES                                         :設置修正
 STR_NEWGRF_SETTINGS                                             :NewGRF 設定
 STR_TRANSPARENCY_OPTIONS                                        :透明度選項
 STR_GAMEOPTMENU_0A                                              :
@@ -875,8 +867,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}遊戲仍在儲存,{}請稍候!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}選擇「輕鬆街頭音樂」歌單
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :英國 (原版)
@@ -1650,42 +1642,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}必須先移除道路
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}道路施工中
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}鋪設道路
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}鋪設電車軌
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}鋪設電車軌
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}選擇道路橋樑
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... 單向的道路不能有交叉點
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}不能在此鋪設道路...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}不可以在這裏鋪設電車軌...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}不可以在這裏鋪設電車軌...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}不能從此移除道路...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}不可以移除這裏的電車軌...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}不可以移除這裏的電車軌...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}車庫方向
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}電車
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}電車
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}不能在此設置車庫...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}不可以在這裏興建電車維修廠...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}不可以興建電車站...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}不可興建載貨電車站...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}不可以興建電車站...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}不可興建載貨電車站...
 STR_180A_ROAD_CONSTRUCTION                                      :鋪設道路
-STR_180A_TRAMWAY_CONSTRUCTION                                   :鋪設電車軌
+STR_TRAMWAY_CONSTRUCTION                                        :鋪設電車軌
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}鋪設一段公路
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}鋪設道路區段時使用自動模式
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}興建電車站
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}興建電車站
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}鋪設輕軌區段時使用自動模式
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}設置車庫 (用來購置與維護公路車輛)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}興建電車維修廠 (供製造及維修用)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}興建電車維修廠 (供製造及維修用)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}設置公車站
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}設置貨運站
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}興建載客電車站
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}興建載貨電車站
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}興建載客電車站
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}興建載貨電車站
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}建築公路橋樑
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}架設電車橋
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}架設電車橋
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}挖掘公路隧道
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}開鐅電車隧道
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}開鐅電車隧道
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}切換單行道/雙向道
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}切換鋪設/移除公路
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}鋪設電車軌開關
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}鋪設電車軌開關
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}選擇車庫方向
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}選擇電車維修廠方向
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}選擇電車維修廠方向
 STR_1814_ROAD                                                   :公路
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :有路燈的公路
 STR_1816_TREE_LINED_ROAD                                        :有行道樹的公路
@@ -1828,8 +1820,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}鄰接超過一個現有車站/載貨區
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}這個城鎮已有太多車站/載貨區 (可先修改現有車站/載貨區的名稱再試看看)
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}太多車站/載貨區
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}太多工車站
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}太多貨運站
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}太多工車站
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}太多貨運站
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}太靠近另一個車站/載貨區
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}必須先摧毀鐵道車站
@@ -1860,12 +1852,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} 現在接受 {STRING} 與 {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}公車站方向
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}貨運站方向
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}載客電車方向
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}載貨電車方向
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}載客電車方向
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}載貨電車方向
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}必須先摧毀公車站
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}必須先摧毀貨運站
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}必須先移除載客電車車站
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}必須先移除載貨電車車站
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}必須先移除載客電車車站
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}必須先移除載貨電車車站
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} 座車站
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- 無 -
@@ -1877,8 +1869,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}選擇鐵道車站的長度
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}選擇公車站方向
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}選擇貨運站方向
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}選擇載客電車方向
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}選擇載貨電車方向
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}選擇載客電車方向
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}選擇載貨電車方向
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}將主視野帶到車站位置
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}顯示車站評價
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}變更車站名稱
@@ -1900,7 +1892,7 @@
 STR_3069_BUOY                                                   :浮標
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...被浮標擋住
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...車站範圍太大
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...未啟動不規則車站外型功能
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...未啟動不規則車站外型功能
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}按住 CTRL 選擇多重項目
 
 STR_UNDEFINED                                                   :(未定義字串)
@@ -1941,7 +1933,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}選擇新遊戲類型
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}選擇劇本 (綠色),預設遊戲 (藍),或隨機產生場景
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :隨機產生新場景
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}載入高度圖
+STR_LOAD_HEIGHTMAP                                              :{WHITE}載入高度圖
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}被 {STRING} 擋住
@@ -2145,10 +2137,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}經濟:{ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}列車倒轉:{ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}災難:{ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}市議會對區域重建的態度:{ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}市議會對區域重建的態度:{ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :無
+STR_NONE                                                        :無
 STR_NUM_VERY_LOW                                                :非常少
 STR_6816_LOW                                                    :低
 STR_6817_NORMAL                                                 :普通
@@ -2186,9 +2178,9 @@
 STR_6836_OFF                                                    :關
 STR_6837_ON                                                     :開
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}顯示排行榜
-STR_6839_PERMISSIVE                                             :寬容
-STR_683A_TOLERANT                                               :能忍受
-STR_683B_HOSTILE                                                :抱敵意
+STR_PERMISSIVE                                                  :寬容
+STR_TOLERANT                                                    :能忍受
+STR_HOSTILE                                                     :抱敵意
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2325,7 +2317,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}無法出售這間公司的股份...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% 由 {COMPANY} 擁有)
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} 被 {COMPANY} 收購!
-STR_7080_PROTECTED                                              :{WHITE}這間公司才剛成立,還不能交易股票...
+STR_PROTECTED                                                   :{WHITE}這間公司才剛成立,還不能交易股票...
 
 STR_LIVERY_DEFAULT                                              :標準配色
 STR_LIVERY_STEAM                                                :蒸汽機車
@@ -2632,17 +2624,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}:{STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}:{STRING} {STRING}
 STR_8806_GO_TO                                                  :前往 {STATION}
-STR_8807_GO_TO_TRANSFER                                         :前往 {STATION} (轉運,僅載不卸)
-STR_8808_GO_TO_UNLOAD                                           :前往 {STATION} (卸客貨)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :前往 {STATION} (轉運,卸客貨清空離站)
-STR_880A_GO_TO_LOAD                                             :前往 {STATION} (滿載)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :前往 {STATION} (轉運,等待滿載)
-STR_880C_GO_NON_STOP_TO                                         :前往 {STATION} 不停靠/中途不停
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :前往 {STATION} (轉運 [僅載不卸]) 中途不停
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :前往 {STATION} (卸載) 中途不停
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :前往 {STATION} (轉運 [卸載清空離站]) 中途不停
-STR_8810_GO_NON_STOP_TO_LOAD                                    :前往 {STATION} (滿載) 中途不停
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :前往 {STATION} (轉運 [等待滿載]) 中途不停
+STR_GO_TO_TRANSFER                                              :前往 {STATION} (轉運,僅載不卸)
+STR_8807_GO_TO_UNLOAD                                           :前往 {STATION} (卸客貨)
+STR_GO_TO_TRANSFER_UNLOAD                                       :前往 {STATION} (轉運,卸客貨清空離站)
+STR_8808_GO_TO_LOAD                                             :前往 {STATION} (滿載)
+STR_GO_TO_TRANSFER_LOAD                                         :前往 {STATION} (轉運,等待滿載)
+STR_880A_GO_NON_STOP_TO                                         :前往 {STATION} 不停靠/中途不停
+STR_GO_TO_NON_STOP_TRANSFER                                     :前往 {STATION} (轉運 [僅載不卸]) 中途不停
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :前往 {STATION} (卸載) 中途不停
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :前往 {STATION} (轉運 [卸載清空離站]) 中途不停
+STR_880C_GO_NON_STOP_TO_LOAD                                    :前往 {STATION} (滿載) 中途不停
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :前往 {STATION} (轉運 [等待滿載]) 中途不停
 STR_GO_TO_TRAIN_DEPOT                                           :前往 {TOWN} 機廠
 STR_SERVICE_AT_TRAIN_DEPOT                                      :在 {TOWN} 機廠維護
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :前往 {TOWN} 機廠 中途不停
@@ -2746,7 +2738,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}顯示載貨詳細資料
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}顯示車輛詳細資料
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}顯示車輛的容量
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}顯示列車的總容量,照貨物分類
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}顯示列車的總容量,照貨物分類
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}指令清單 - 點選指令可選擇。按住 CTRL 點選可跳到車站位置
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}跳過目前的命令,從下一個開始。CTRL + 左鍵 可直接跳至所選的命令
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}刪除選定指令
@@ -2777,8 +2769,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}無法到轉列車方向...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}重新命名鐵道車輛
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}無法修改鐵道車輛名稱...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}讓列車在選定的指令強制卸載
-STR_886F_TRANSFER                                               :{BLACK}轉運
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}讓列車在選定的指令強制卸載
+STR_TRANSFER                                                    :{BLACK}轉運
 STR_CLEAR_TIME                                                  :{BLACK}清除時刻
 STR_RESET_LATENESS                                              :{BLACK}歸零誤點/慢分
 
@@ -2855,8 +2847,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛客運輕軌抵達 {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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}無法使車輛掉頭...
@@ -2865,7 +2857,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :前往 {TOWN} 車庫
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :在 {TOWN} 車庫維護
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}改裝車輛以運送不同的酬載
@@ -3265,7 +3257,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}不建議過度縮放地圖。繼續產生?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}市鎮規劃警告
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW} "市鎮道路不再規劃" 是不建議的。要繼續產生嗎?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}高度圖名稱:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}大小:{ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}正在產生世界...
@@ -3291,7 +3282,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}將平地高度上移一格
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}修改平地高度
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}平地高度:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}將小地圖移到目前地點位置
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/turkish.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/turkish.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -15,8 +15,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Yerin düzleştirilmesi lazım
 STR_0008_WAITING                                                :{BLACK}Bekleyen: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (aktarma:
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}İstenen: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}İstenen: {GOLD}
 STR_000E                                                        :
@@ -274,9 +272,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Çok fazla adlandırma
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Seçilen isim kullanımda
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -287,11 +285,11 @@
 STR_013C_CARGO                                                  :{BLACK}Kargo
 STR_013D_INFORMATION                                            :{BLACK}Bilgi
 STR_013E_CAPACITIES                                             :{BLACK}Kapasite
-STR_013E_TOTAL_CARGO                                            :{BLACK}Toplam Kargo
+STR_TOTAL_CARGO                                                 :{BLACK}Toplam Kargo
 STR_013F_CAPACITY                                               :{BLACK}Kapasite: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Kapasite: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Bu trenin toplam kapasitesi:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Bu trenin toplam kapasitesi:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Yeni Oyun
 STR_0141_LOAD_GAME                                              :{BLACK}Oyun Yükle
@@ -299,12 +297,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Çok Oyunculu
 STR_SCENARIO_EDITOR                                             :{BLACK}Senaryo Düzenleyici
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Harita boyutu:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Seçenekler
@@ -736,7 +728,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Sehri tamamen sil
 STR_0292_SAVE_SCENARIO                                          :Kaydet
 STR_0293_LOAD_SCENARIO                                          :Yükle
-STR_LOAD_HEIGHTMAP                                              :Yükseklik haritası yükle
+STR_MENU_LOAD_HEIGHTMAP                                         :Yükseklik haritası yükle
 STR_0294_QUIT_EDITOR                                            :Editörden Çık
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Oyundan Çık
@@ -776,9 +768,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Seçenekler
-STR_02C5_DIFFICULTY_SETTINGS                                    :Zorluk Ayarları
-STR_02C7_CONFIG_PATCHES                                         :Yamaları Düzenle
+STR_02C4_GAME_OPTIONS                                           :Seçenekler
+STR_02C6_DIFFICULTY_SETTINGS                                    :Zorluk Ayarları
+STR_MENU_CONFIG_PATCHES                                         :Yamaları Düzenle
 STR_NEWGRF_SETTINGS                                             :Newgrf ayarları
 STR_TRANSPARENCY_OPTIONS                                        :Şeffaflık seçenekleri
 STR_GAMEOPTMENU_0A                                              :
@@ -878,8 +870,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Kayıt işlemi sürüyor,{}lütfen bitene kadar bekleyin!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}'Ezy Sokagi stili muzik' programını seç
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :İngilizce (Orjinal)
@@ -1652,42 +1644,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Önce yol silinmeli
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Yol çalışmaları
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Yol Yapımı
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Tramvay Yapımı
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Tramvay Yapımı
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Köprü Seç
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}...tek yönlü yollar kesişemez
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Yol yapılamıyor...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Buraya tramvay yapılamaz...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Buraya tramvay yapılamaz...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Yol kaldırılamıyor...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Tramvay kaldırılamaz...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Tramvay kaldırılamaz...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Garaj Yönü
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Tramvay Garı Yönü
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Tramvay Garı Yönü
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Buraya Garaj yapılamaz...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Buraya tramvay garı yapılamaz...
+STR_CAN_T_BUILD_TRAM_VEHICLE                                    :{WHITE}Buraya tramvay garı yapılamaz...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Otobüs durağı yapılamaz...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kamyon durağı yapılamaz...
-STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Yolcu tramvayı istasyonu yapılamaz...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Yük tramvayı istasyonu yapılamaz...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Yolcu tramvayı istasyonu yapılamaz...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Yük tramvayı istasyonu yapılamaz...
 STR_180A_ROAD_CONSTRUCTION                                      :Yol yapımı
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramvay yapımı
+STR_TRAMWAY_CONSTRUCTION                                        :Tramvay yapımı
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Yol bölmesi yap
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Otoyol modunu kullanarak yol yap
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Tramvay yolu yap
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Tramvay yolu yap
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Otoray modunu kullanarak tramvay yolu yap
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Garaj yap (araç alımı ve bakımlar için)
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Tramvay garı yap (araç alımı ve tamiri için)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Tramvay garı yap (araç alımı ve tamiri için)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Otobüs durağı yap
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Kamyon yükleme bölgesi yap
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Yolcu tramvayı istasyonu yap
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Yük tramvayı istasyonu yap
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Yolcu tramvayı istasyonu yap
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Yük tramvayı istasyonu yap
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Köprü yap
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Tramvay köprüsü yap
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Tramvay köprüsü yap
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Tünel Yap
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Tramvay tüneli yap
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Tramvay tüneli yap
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Tek yönlü yolları etkinleştir/kapat
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Yol yap/sil arasında geçiş yap
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Tramvay yapımı/yıkımı
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Tramvay yapımı/yıkımı
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Garaj yönünü seç
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Tramvay garı yönü
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Tramvay garı yönü
 STR_1814_ROAD                                                   :Yol
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Lambali yol
 STR_1816_TREE_LINED_ROAD                                        :Ağaçli yol
@@ -1830,8 +1822,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Birden fazla istasyona bitişik
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Bu şehirde çok fazla istasyon var
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Haritada çok fazla istasyon var
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Çok fazla durak var
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Çok fazla kamyon yükleme yeri var
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Çok fazla durak var
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Çok fazla kamyon yükleme yeri var
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Başka bir istasyona çok yakın
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Önce tren istasyonu yıkılmalı
@@ -1862,12 +1854,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} artık {STRING} ve {STRING} istiyor
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Otobüs Durağı Yönü
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Kamyon Durağı Yönü
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Yolcu Tramvayı Yönü
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Yük Tramvayı Yönü
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Yolcu Tramvayı Yönü
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Yük Tramvayı Yönü
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Önce otobüs durağı yıkılmalı
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Önce kamyon durağı yıkılmalı
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Önce yolcu tramvayı istasyonu yıkılmalı
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Önce yük tramvayı istasyonu kaldırılmalı
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Önce yolcu tramvayı istasyonu yıkılmalı
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Önce yük tramvayı istasyonu kaldırılmalı
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} istasyonları
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Yok -
@@ -1879,8 +1871,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Tren istasyonu uzunluğu seç
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Otobüs durağı yönünü seç
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Kamyon durağı yönünü seç
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Yolcu tramvayı istasyonu yönünü seçin
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Yük tramvayı istasyonu yönünü seçin
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Yolcu tramvayı istasyonu yönünü seçin
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Yük tramvayı istasyonu yönünü seçin
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Durağın oldugu yere git
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}İstasyonun reytinglerini göster
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}İstasyonun ismini değiştir
@@ -1902,7 +1894,7 @@
 STR_3069_BUOY                                                   :Şamandıra
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...yolda şamandıra var
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...istasyon çok yayılmış
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...özel istasyon ayarı kapalı
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...özel istasyon ayarı kapalı
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Birden fazla şey seçmek için CTRL'yi basılı tutun
 
 STR_UNDEFINED                                                   :(tanımlanmamış sözcük)
@@ -1943,7 +1935,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Yeni oyun türü seç
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Senaryo (yeşil), kurulu oyun (mavi) veya yeni oyun seç
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Rastgele haritada oyna
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Yükseklik haritası yükle
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Yükseklik haritası yükle
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}yolda {STRING} var
@@ -2147,10 +2139,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomi: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Tren ters dönüşü: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Felaketler: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Belediyenin töleransi: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Belediyenin töleransi: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Hiç
+STR_NONE                                                        :Hiç
 STR_NUM_VERY_LOW                                                :Çok az
 STR_6816_LOW                                                    :Düşük
 STR_6817_NORMAL                                                 :Normal
@@ -2188,9 +2180,9 @@
 STR_6836_OFF                                                    :Kapalı
 STR_6837_ON                                                     :Açik
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Punaları Göster
-STR_6839_PERMISSIVE                                             :İzin verici
-STR_683A_TOLERANT                                               :Töleransli
-STR_683B_HOSTILE                                                :Katı
+STR_PERMISSIVE                                                  :İzin verici
+STR_TOLERANT                                                    :Töleransli
+STR_HOSTILE                                                     :Katı
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2327,7 +2319,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Şirketin %25'i satılamıyor...
 STR_707D_OWNED_BY                                               :{WHITE}(%{COMMA} ortağı {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY}, {COMPANY} tarafından alındı!
-STR_7080_PROTECTED                                              :{WHITE}Bu şirket hisselerini satacak kadar eski değil...
+STR_PROTECTED                                                   :{WHITE}Bu şirket hisselerini satacak kadar eski değil...
 
 STR_LIVERY_DEFAULT                                              :Şirket Rengi
 STR_LIVERY_STEAM                                                :Buharlı Lokomotif
@@ -2634,17 +2626,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8806_GO_TO                                                  :Git: {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Aktar: {STATION} (Kargoyu al)
-STR_8808_GO_TO_UNLOAD                                           :Git: {STATION} (Boşalt)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Aktar: {STATION} (Boş dön)
-STR_880A_GO_TO_LOAD                                             :Git: {STATION} (Doldur)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Aktar: {STATION} (Tam doldur)
-STR_880C_GO_NON_STOP_TO                                         :Durmadan git: {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Durmadan aktar: {STATION} (Kargoyu al)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Durmadan git: {STATION} (Boşalt)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Durmadan aktar: {STATION} (Boş dön)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Durmadan git: {STATION} (Doldur)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Durmadan aktar: {STATION} (Tam doldur)
+STR_GO_TO_TRANSFER                                              :Aktar: {STATION} (Kargoyu al)
+STR_8807_GO_TO_UNLOAD                                           :Git: {STATION} (Boşalt)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Aktar: {STATION} (Boş dön)
+STR_8808_GO_TO_LOAD                                             :Git: {STATION} (Doldur)
+STR_GO_TO_TRANSFER_LOAD                                         :Aktar: {STATION} (Tam doldur)
+STR_880A_GO_NON_STOP_TO                                         :Durmadan git: {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Durmadan aktar: {STATION} (Kargoyu al)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Durmadan git: {STATION} (Boşalt)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Durmadan aktar: {STATION} (Boş dön)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Durmadan git: {STATION} (Doldur)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Durmadan aktar: {STATION} (Tam doldur)
 STR_GO_TO_TRAIN_DEPOT                                           :Git: {TOWN} Tren Garı
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Bakıma git: {TOWN} Tren Garı
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Durmadan git: {TOWN} Tren Garı
@@ -2748,7 +2740,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Taşınan kargonun ayrıntıları
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Trenin ayrıntıları
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Her aracın kapasitesi
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Trenin kargo türlerine ayrilmis toplam kapasitesini göster
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Trenin kargo türlerine ayrilmis toplam kapasitesini göster
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Talimat listesi - seçmek için komutu tıklayın. CTRL + tıklama istasyona kaydırir
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Şimdiki talimatı atla ve sonrakine geç. CTRL ile tıklanırsa seçili talimata geçilir
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Seçili talimatı sil
@@ -2779,8 +2771,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Tren çevrilemez...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Tren yeniden adlandırılamaz
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Tren yeniden adlandırılamaz...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Seçili talimatta aracı kargoyu boşaltmaya zorla
-STR_886F_TRANSFER                                               :{BLACK}Aktar
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Seçili talimatta aracı kargoyu boşaltmaya zorla
+STR_TRANSFER                                                    :{BLACK}Aktar
 STR_CLEAR_TIME                                                  :{BLACK}Zamanı Temizle
 STR_RESET_LATENESS                                              :{BLACK}Gecikme sayacını sıfırla
 
@@ -2857,8 +2849,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Arabayı adlandır
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}Şuraya ilk kez otobüs geldi: {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}Şuraya ilk kez kamyon geldi: {STATION}!
-STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}{STATION} istasyonuna ilk kez yolcu tramvayı geldi!
-STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}{STATION} istasyonuna ilk kez yük tramvayı geldi!
+STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}{STATION} istasyonuna ilk kez yolcu tramvayı geldi!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM                         :{BLACK}{BIGFONT}Kutlama yapıldı . . .{}{STATION} istasyonuna ilk kez yük tramvayı geldi!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Trafik kazasi!{}Trenle çarpisan aracın soförü feci şekilde can verdi
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Trafik kazasi!{}{COMMA} kişi patlamadan kurtulamadı
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Araç döndürülemiyor...
@@ -2867,7 +2859,7 @@
 STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Araç türünü yeniden adlandır
 STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Araç türünü yeniden adlandır
 STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Araç türü yeniden adlandırılamıyor...
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Garaja git: {TOWN}
+STR_GO_TO_ROADVEH_DEPOT                                         :Garaja git: {TOWN}
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Servise git: {TOWN} Garaji
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Kamyonu başka türde kargo taşıyabilmesi için modifiye et
@@ -3264,7 +3256,6 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Başlangıç yılını değiştir
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Ölcek uyarısı
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Kaynak haritanin boyutunu değiştirmek önerilmez. Harita oluşturmaya devam edilsin mi?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Yükseklik haritası adı:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Boyut: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Harita oluşturuluyor...
@@ -3290,7 +3281,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Düzlüğün yüksekliğini bir arttır
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Düzlüğün yüksekliğini değiştir
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Düzlüğün Yüksekliği:
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Küçük haritayı burada ortala
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/ukrainian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/ukrainian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,7 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Потрібна рівна ділянка
 STR_0008_WAITING                                                :{BLACK}Чекає: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW} (перевезено з
-STR_000B                                                        :{YELLOW}{STATION})
+STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} з {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Приймає: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Приймає: {GOLD}
 STR_000E                                                        :
@@ -400,9 +399,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Дуже багато імен
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Таке ім'я вже є
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -413,11 +412,11 @@
 STR_013C_CARGO                                                  :{BLACK}Вантаж
 STR_013D_INFORMATION                                            :{BLACK}Інформація
 STR_013E_CAPACITIES                                             :{BLACK}Місткість
-STR_013E_TOTAL_CARGO                                            :{BLACK}Повна місткість
+STR_TOTAL_CARGO                                                 :{BLACK}Повна місткість
 STR_013F_CAPACITY                                               :{BLACK}Місткість: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Місткість:{LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Повна місткість цього поїзду:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Повна місткість цього поїзду:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Нова гра
 STR_0141_LOAD_GAME                                              :{BLACK}Завантажити гру
@@ -425,12 +424,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Мережна гра
 STR_SCENARIO_EDITOR                                             :{BLACK}Редактор сценарію
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Розмір карти:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Налаштування гри
@@ -858,11 +851,12 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Поставити ретранслятор
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Позначити територію пустелі.{}Натисніть і утримуйте CTRL, щоб відмінити
 STR_CREATE_LAKE                                                 :{BLACK}Позначити, де буде вода.{}Make a canal, unless CTRL is held down at sea level, when it will flood the surroundings instead
+STR_CREATE_RIVER                                                :{BLACK}Прокласти річки.
 STR_0290_DELETE                                                 :{BLACK}Видалити
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Видалити місто повністю
 STR_0292_SAVE_SCENARIO                                          :Зберегти сценарій
 STR_0293_LOAD_SCENARIO                                          :Завантажити сценарій
-STR_LOAD_HEIGHTMAP                                              :Завантажити карту висот
+STR_MENU_LOAD_HEIGHTMAP                                         :Завантажити карту висот
 STR_0294_QUIT_EDITOR                                            :Вийти з редактору
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Вихід
@@ -902,9 +896,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Налаштування гри
-STR_02C5_DIFFICULTY_SETTINGS                                    :Налаштування складності
-STR_02C7_CONFIG_PATCHES                                         :Розширені налаштування
+STR_02C4_GAME_OPTIONS                                           :Налаштування гри
+STR_02C6_DIFFICULTY_SETTINGS                                    :Налаштування складності
+STR_MENU_CONFIG_PATCHES                                         :Розширені налаштування
 STR_NEWGRF_SETTINGS                                             :Нова графіка
 STR_TRANSPARENCY_OPTIONS                                        :Опції прозорості
 STR_GAMEOPTMENU_0A                                              :
@@ -1004,8 +998,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Збереження...,{}зачекайте поки завершиться!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Вибрати програму 'Дорожні теми'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Англійські(Оригінальні)
@@ -1780,42 +1774,42 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Спочатку зруйнуйте дорогу
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Дорога ремонтується
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Будівництво дороги
-STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Будівництво трамвайної колії
+STR_WHITE_TRAMWAY_CONSTRUCTION                                  :{WHITE}Будівництво трамвайної колії
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Виберіть дорожний міст
 STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... односторонні дороги не можуть перетинатись
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Неможливо тут побудувати дорогу ...
-STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Тут не можна побудувати трамвайну колію...
+STR_CAN_T_BUILD_TRAMWAY_HERE                                    :{WHITE}Тут не можна побудувати трамвайну колію...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Неможливо прибрати дорогу звідси...
-STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Не можна прибрати трамвайну колію звідси...
+STR_CAN_T_REMOVE_TRAMWAY_FROM                                   :{WHITE}Не можна прибрати трамвайну колію звідси...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Орієнтація депо
-STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Орієнтація трамвайного депо
+STR_TRAM_DEPOT_ORIENTATION                                      :{WHITE}Орієнтація трамвайного депо
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Неможливо будувати депо тут...
-STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Тут не можна побудувати трамвайне депо...
+STR_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_PASSENGER_TRAM_STATION                     :{WHITE}Не можна побудувати пасажирську трамвайну станцію...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Не можна побудувати вантажну трамвайну станцію...
+STR_CAN_T_BUILD_PASSENGER_TRAM_STATION                          :{WHITE}Не можна побудувати пасажирську трамвайну станцію...
+STR_CAN_T_BUILD_CARGO_TRAM_STATION                              :{WHITE}Не можна побудувати вантажну трамвайну станцію...
 STR_180A_ROAD_CONSTRUCTION                                      :Будувати дороги
-STR_180A_TRAMWAY_CONSTRUCTION                                   :Будівництво трамвайної колії
+STR_TRAMWAY_CONSTRUCTION                                        :Будівництво трамвайної колії
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Будувати дорогу
 STR_BUILD_AUTOROAD_TIP                                          :{BLACK}Будувати дорогу в режимі Автобудування
-STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Будувати трамвайну колію
+STR_BUILD_TRAMWAY_SECTION                                       :{BLACK}Будувати трамвайну колію
 STR_BUILD_AUTOTRAM_TIP                                          :{BLACK}Будувати трамвайну лінію в режимі Автобудування
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Будувати автомобільне депо
-STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Будувати трамвайне депо (для будівництва та обслуговування трамваїв)
+STR_BUILD_TRAM_VEHICLE_DEPOT                                    :{BLACK}Будувати трамвайне депо (для будівництва та обслуговування трамваїв)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Будувати зупинку
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Будувати вантажну станцію
-STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Побудувати пасажирську трамвайну станцію
-STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Побудувати вантажну трамвайну станцію
+STR_BUILD_PASSENGER_TRAM_STATION                                :{BLACK}Побудувати пасажирську трамвайну станцію
+STR_BUILD_CARGO_TRAM_STATION                                    :{BLACK}Побудувати вантажну трамвайну станцію
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Будувати міст
-STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Побудувати трамвайний міст
+STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Побудувати трамвайний міст
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Будувати тунель
-STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Побудувати трамвайний тунель
+STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Побудувати трамвайний тунель
 STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Вкл./відкл. односторонні дороги
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Будувати/зруйнувати дорогу
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Будувати/демонтувати колію
+STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Будувати/демонтувати колію
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Виберіть направлення депо
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Виберіть орієнтацію трамвайного депо
+STR_SELECT_TRAM_VEHICLE_DEPOT                                   :{BLACK}Виберіть орієнтацію трамвайного депо
 STR_1814_ROAD                                                   :Дорога
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Дорога з вуличними ліхтарями
 STR_1816_TREE_LINED_ROAD                                        :Дорога з насадженнями
@@ -1958,8 +1952,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Граничить з іншою станцією
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Дуже багато станцій в цьому місті
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Дуже багато станцій
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Дуже багато зупинок
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Дуже багато вантажних станцій
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Дуже багато зупинок
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Дуже багато вантажних станцій
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Дуже близько до іншої станції
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Спочатку зруйнуйте залізничну станцію
@@ -1990,12 +1984,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} тепер приймає {STRING} і {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Орієнтація зупинки
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Орієнтація станції
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Орієнтація пасажирської трамвайної станції
-STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Орієнтація вантажної трамвайної станції
+STR_PASSENGER_TRAM_STATION_ORIENTATION                          :{WHITE}Орієнтація пасажирської трамвайної станції
+STR_CARGO_TRAM_STATION_ORIENT                                   :{WHITE}Орієнтація вантажної трамвайної станції
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Спочатку зруйнуйте зупинку
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Спочатку зруйнуйте вантажну станцію
-STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Спочатку треба знести пасажирську трамвайну станцію
-STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Спочатку треба знести вантажну трамвайну станцію
+STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION                        :{WHITE}Спочатку треба знести пасажирську трамвайну станцію
+STR_MUST_DEMOLISH_CARGO_TRAM_STATION                            :{WHITE}Спочатку треба знести вантажну трамвайну станцію
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} станці{P я ї й}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- нема -
@@ -2007,8 +2001,8 @@
 STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Виберіть довжину залізничної станції
 STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Виберіть орієнтацію зупинки
 STR_3052_SELECT_TRUCK_LOADING_BAY                               :{BLACK}Виберіть орієнтацію вантажної станції
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION              :{BLACK}Виберіть орієнтацію пасажирської трамвайної станції
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Виберіть орієнтацію вантажної трамвайної станції
+STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION                   :{BLACK}Виберіть орієнтацію пасажирської трамвайної станції
+STR_SELECT_CARGO_TRAM_STATION_ORIENTATION                       :{BLACK}Виберіть орієнтацію вантажної трамвайної станції
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Показати станцію в центрі екрану
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Показати рейтинг станції
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Перейменувати станцію
@@ -2030,7 +2024,7 @@
 STR_3069_BUOY                                                   :Бакен
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...бакен на шляху
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...станція занадто велика
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...неоднорідні станції відключені
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...неоднорідні станції відключені
 STR_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Утримуйте CTRL для вибору більш ніж одного пункту
 
 STR_UNDEFINED                                                   :(невизначено)
@@ -2071,7 +2065,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Виберіть новий тип гри
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Виберіть сценарій (зелений), встановлена гра (синій), або випадкова нова гра
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Генерувати випадкову нову гру
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Завантажити ландшафт
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Завантажити ландшафт
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} на шляху
@@ -2312,10 +2306,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Економіка: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Поїзди розвертаються: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Стихійні лиха/катастрофи: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Відношення влади до перебудови території міста: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Відношення влади до перебудови території міста: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Нема
+STR_NONE                                                        :Нема
 STR_NUM_VERY_LOW                                                :дуже мало
 STR_6816_LOW                                                    :МалО
 STR_6817_NORMAL                                                 :Нормально
@@ -2353,9 +2347,9 @@
 STR_6836_OFF                                                    :ВиКл
 STR_6837_ON                                                     :Вкл
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Показати таблицю рекордів
-STR_6839_PERMISSIVE                                             :Допустиме
-STR_683A_TOLERANT                                               :Терпиме
-STR_683B_HOSTILE                                                :Вороже
+STR_PERMISSIVE                                                  :Допустиме
+STR_TOLERANT                                                    :Терпиме
+STR_HOSTILE                                                     :Вороже
 
 ##id 0x7000
 STR_7000                                                        :
@@ -2492,7 +2486,7 @@
 STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Неможливо продати 25% акцій цієї компанії...
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% у власності {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} викуплено {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Ця компанія поки ще не продається...
+STR_PROTECTED                                                   :{WHITE}Ця компанія поки ще не продається...
 
 STR_LIVERY_DEFAULT                                              :Стандартний колір
 STR_LIVERY_STEAM                                                :Паровози
@@ -2505,6 +2499,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :Пасажирський вагон (пар)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Пасажирський вагон (дизель)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Пасажирський вагон (електричка)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :Пасажирський вагон (монорельс)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :Пасажирський вагон (магнітна подушка)
 STR_LIVERY_FREIGHT_WAGON                                        :Товарний вагон
 STR_LIVERY_BUS                                                  :Автобус
 STR_LIVERY_TRUCK                                                :Вантажівка
@@ -2799,17 +2795,17 @@
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING}{STRING}
 STR_8806_GO_TO                                                  :Прямувати до {STATION}
-STR_8807_GO_TO_TRANSFER                                         :Прямувати до {STATION} (Пересадити і забрати вантаж)
-STR_8808_GO_TO_UNLOAD                                           :Прямувати до {STATION} (розвантажитися)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Прямувати до {STATION} (Пересадити і залишити вантаж)
-STR_880A_GO_TO_LOAD                                             :Прямувати до {STATION} (Завантажитися)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Прямувати до {STATION} (Пересадити і завантажити повністю)
-STR_880C_GO_NON_STOP_TO                                         :Прямувати без зупинок до {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Прямувати без зупинок до {STATION} (Пересадити і забрати вантаж)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Прямувати без зупинок до {STATION} (розвантажитися)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Прямувати без зупинок до {STATION} (Пересадити і залишити вантаж)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Прямувати без зупинок до {STATION} (Завантажити)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Прямувати без зупинок до {STATION} (Пересадити і завантажити повністю)
+STR_GO_TO_TRANSFER                                              :Прямувати до {STATION} (Пересадити і забрати вантаж)
+STR_8807_GO_TO_UNLOAD                                           :Прямувати до {STATION} (розвантажитися)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Прямувати до {STATION} (Пересадити і залишити вантаж)
+STR_8808_GO_TO_LOAD                                             :Прямувати до {STATION} (Завантажитися)
+STR_GO_TO_TRANSFER_LOAD                                         :Прямувати до {STATION} (Пересадити і завантажити повністю)
+STR_880A_GO_NON_STOP_TO                                         :Прямувати без зупинок до {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Прямувати без зупинок до {STATION} (Пересадити і забрати вантаж)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Прямувати без зупинок до {STATION} (розвантажитися)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Прямувати без зупинок до {STATION} (Пересадити і залишити вантаж)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Прямувати без зупинок до {STATION} (Завантажити)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Прямувати без зупинок до {STATION} (Пересадити і завантажити повністю)
 STR_GO_TO_TRAIN_DEPOT                                           :Прямувати до {TOWN} депо
 STR_SERVICE_AT_TRAIN_DEPOT                                      :Ремонтуватись в {TOWN} депо
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Прямувати без зупинок до {TOWN} депо
@@ -2913,7 +2909,7 @@
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Показати інформацію про вантаж
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Показати інформацію про вагони
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Показати місткість кожного вагону
-STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Показати загальну місткість поїзда, розділену за типом вантажу
+STR_SHOW_TOTAL_CARGO                                            :{BLACK}Показати загальну місткість поїзда, розділену за типом вантажу
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Маршрутний лист - клікніть на завданні для його вибору. CTRL + клік показати станцію
 STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Пропустити поточний наказ, і виконувати наступний. CTRL + клік переходить до вибраного наказу
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Видалити виділене завдання
@@ -2944,8 +2940,8 @@
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Неможливо розвернути поїзд...
 STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Перейменувати тип поїзду
 STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Неможливо перейменувати тип поїзду...
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Наказати транспорту примусово відвантажити вантаж
-STR_886F_TRANSFER                                               :{BLACK}Пересадка
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Наказати транспорту примусово відвантажити вантаж
+STR_TRANSFER                                                    :{BLACK}Пересадка
 STR_CLEAR_TIME                                                  :{BLACK}Очистити час
 STR_RESET_LATENESS                                              :{BLACK}Очистити лічильник запізнення
 
@@ -3023,8 +3019,8 @@
 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_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM                     :{BLACK}{BIGFONT}Жителі святкують . . .{}Перший пасажирський трамвай прибув на {STATION}!
+STR_CITIZENS_CELEBRATE_FIRST_CARGO_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}Неможливо розвернути авто...
@@ -3033,7 +3029,7 @@
 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_GO_TO_ROADVEH_DEPOT                                         :Їхати в {TOWN} депо
 STR_SERVICE_AT_ROADVEH_DEPOT                                    :Ремонтуватись в {TOWN} депо
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Переобладнати авто для перевезення інших вантажів
@@ -3407,6 +3403,12 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :Всі крім {GOLD}
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}Максимальна тяглова сила: {GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+STR_NUM_1                                                       :{BLACK}{SKIP}{NUM}
+STR_NUM_2                                                       :{BLACK}{SKIP}{SKIP}{NUM}
+STR_NUM_3                                                       :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}Генерувати
@@ -3434,7 +3436,6 @@
 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE                             :{YELLOW}Розміри дуже великі. Продовжити генерацію?
 STR_TOWN_LAYOUT_WARNING_CAPTION                                 :{WHITE}Попередження про схему міста
 STR_TOWN_LAYOUT_WARNING_MESSAGE                                 :{YELLOW}Схема міста "не треба більше доріг" небажана. Продовжити генерацію?
-STR_SNOW_LINE_HEIGHT_NUM                                        :{NUM}
 STR_HEIGHTMAP_NAME                                              :{BLACK}Ім'я рельєфа:
 STR_HEIGHTMAP_SIZE                                              :{BLACK}Розмір: {ORANGE}{NUM} x {NUM}
 STR_GENERATION_WORLD                                            :{WHITE}Генерація світу...
@@ -3460,7 +3461,6 @@
 STR_FLAT_WORLD_HEIGHT_UP                                        :{BLACK}Опустити рівень рівної землі на 1
 STR_FLAT_WORLD_HEIGHT_QUERY_CAPT                                :{WHITE}Змінити висоту рівня рівної землі
 STR_FLAT_WORLD_HEIGHT                                           :{BLACK}Висота рівня моря
-STR_FLAT_WORLD_HEIGHT_NUM                                       :{NUM}
 
 STR_SMALLMAP_CENTER                                             :{BLACK}Центрувати мінікарту сюди
 STR_SMALLMAP_INDUSTRY                                           :{TINYFONT}{STRING} ({NUM})
--- a/src/lang/unfinished/frisian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/unfinished/frisian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -12,7 +12,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Flak lân nedich
 STR_0008_WAITING                                                :{BLACK}Wachtsjend: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Aksepteart: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Aksepteart: {GOLD}
 STR_000E                                                        :
@@ -217,26 +216,20 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Te folle nammen definearre
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Dizze namme wurd al brûkt
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 
 STR_013B_OWNED_BY                                               :{WHITE}...is fan {STRING}
 STR_013C_CARGO                                                  :{BLACK}Fracht
 STR_013D_INFORMATION                                            :{BLACK}Ynformaasje
 STR_013E_CAPACITIES                                             :{BLACK}Kapasiteit
-STR_013E_TOTAL_CARGO                                            :{BLACK}Totale Fracht
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Totale kapasiteit fan dizze trein:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CARGO                                                 :{BLACK}Totale Fracht
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Totale kapasiteit fan dizze trein:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_0140_NEW_GAME                                               :{BLACK}Nei Spul
 STR_0141_LOAD_GAME                                              :{BLACK}Laad Spul
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spul Opsjes
 
 STR_0150_SOMEONE                                                :immen{SKIP}{SKIP}
@@ -604,9 +597,9 @@
 STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Sla eigen reau ûntwerp nammen op
 
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Spul Opsjes
-STR_02C5_DIFFICULTY_SETTINGS                                    :Swierrichheid ynstellings
-STR_02C7_CONFIG_PATCHES                                         :Patches Ynstellings
+STR_02C4_GAME_OPTIONS                                           :Spul Opsjes
+STR_02C6_DIFFICULTY_SETTINGS                                    :Swierrichheid ynstellings
+STR_MENU_CONFIG_PATCHES                                         :Patches Ynstellings
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Stêd nammen sjen litte
 STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Stasjon nammen sjen litte
 STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Buordsjes sjen litte
@@ -685,8 +678,8 @@
 STR_032F_AUTOSAVE                                               :{RED}AUTOSAVE
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selektear 'Ezy Street' musyk programma
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 ############ end of townname region
@@ -989,8 +982,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Ferbynt mear dan ien stasjon
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Te folle stasjons yn dizze stêd
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Te folle stasjons
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Te folle bushaltes
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Te folle frachtstasjons
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Te folle bushaltes
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Te folle frachtstasjons
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Te ticht by in oar stasjon
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Treinspoar moat earst fuorthelle wurde
@@ -1051,7 +1044,7 @@
 STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Kin triem net fuortsmite
 STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Laden Mislearre{}{STRING}
 STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}List fan skiven, mappen en triemen
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Laad Hichtemap
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Laad Hichtemap
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} yn it paad
@@ -1143,7 +1136,7 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Ekonomy: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Gjin
+STR_NONE                                                        :Gjin
 STR_6816_LOW                                                    :Leech
 STR_6817_NORMAL                                                 :Gewoan
 STR_6818_HIGH                                                   :Heech
--- a/src/lang/unfinished/greek.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/unfinished/greek.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -14,8 +14,6 @@
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Απαιτείται επίπεδο εδαφος
 STR_0008_WAITING                                                :{BLACK}Αναμονη: {WHITE}{STRING}
 STR_0009                                                        :{WHITE}{CARGO}
-STR_000A_EN_ROUTE_FROM                                          :{WHITE}{CARGO}{YELLOW}  (καθ'οδόν από
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Δέχεται: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Δέχεται: {GOLD}
 STR_000E                                                        :
@@ -273,9 +271,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Καθορίστηκαν πάρα πολλά ονόματα
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Το όνομα που διαλέξατε υπάρχει ήδη
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -286,11 +284,11 @@
 STR_013C_CARGO                                                  :{BLACK}Φορτίο
 STR_013D_INFORMATION                                            :{BLACK}Πληροφορίες
 STR_013E_CAPACITIES                                             :{BLACK}Χωρητικότητες
-STR_013E_TOTAL_CARGO                                            :{BLACK}Συνολικό Φορτίο
+STR_TOTAL_CARGO                                                 :{BLACK}Συνολικό Φορτίο
 STR_013F_CAPACITY                                               :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO}
 STR_CAPACITY_MULT                                               :{BLACK}Χωριτηκότητα: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Συνολική χωρητικότητα φορτίου του τραίνου:
-STR_013F_TOTAL_CAPACITY                                         :{LTBLUE}- {CARGO} ({SHORTCARGO})
+STR_TOTAL_CAPACITY_TEXT                                         :{BLACK}Συνολική χωρητικότητα φορτίου του τραίνου:
+STR_TOTAL_CAPACITY                                              :{LTBLUE}- {CARGO} ({SHORTCARGO})
 STR_TOTAL_CAPACITY_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Νέο Παιχνίδι
 STR_0141_LOAD_GAME                                              :{BLACK}Φόρτωση Παιχνιδιού
@@ -298,12 +296,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Πολοί παίκτες
 STR_SCENARIO_EDITOR                                             :{BLACK}Διαμόρφωση Σεναρίου
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Διάσταση χάρτη:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Επιλογές Παιχνιδιού
@@ -730,7 +722,7 @@
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Πλήρης διαγραφή πόλεως
 STR_0292_SAVE_SCENARIO                                          :Απποθήκευση σεναρίου
 STR_0293_LOAD_SCENARIO                                          :Φόρτωση σεναρίου
-STR_LOAD_HEIGHTMAP                                              :Φόρτωση heightmap
+STR_MENU_LOAD_HEIGHTMAP                                         :Φόρτωση heightmap
 STR_0294_QUIT_EDITOR                                            :Έξοδος από το πρόγραμμα επεξεργασίας
 STR_0295                                                        :
 STR_0296_QUIT                                                   :Έξοδος
@@ -769,9 +761,9 @@
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Επιλογές παιχνιδιού
-STR_02C5_DIFFICULTY_SETTINGS                                    :Ρυθμίσεις δυσκολίας
-STR_02C7_CONFIG_PATCHES                                         :Ρύθμιση διορθώσεων
+STR_02C4_GAME_OPTIONS                                           :Επιλογές παιχνιδιού
+STR_02C6_DIFFICULTY_SETTINGS                                    :Ρυθμίσεις δυσκολίας
+STR_MENU_CONFIG_PATCHES                                         :Ρύθμιση διορθώσεων
 STR_NEWGRF_SETTINGS                                             :Ρυθμίσεις NewGRF
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Ονόματα πόλεων που εμφανίζονται
@@ -869,8 +861,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Επιλογή προγράμματος 'Ezy Street στυλ μουσικής'
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Αγγλικά (Αυθεντικά)
@@ -1468,8 +1460,8 @@
 STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Γειτονεύει με περισσότερες από μια υπάρχουσες περιοχές σταθμών/φόρτωσης
 STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Πάρα πολλές περιοχές σταθμών/φόρτωσης σε αυτή την πόλη
 STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Πάρα πολλές περιοχές σταθμών/φόρτωσης
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Πάρα πολλές στάσεις λεωφορείου
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Πάρα πολλοί σταθμοί φορτηγών
+STR_TOO_MANY_BUS_STOPS                                          :{WHITE}Πάρα πολλές στάσεις λεωφορείου
+STR_TOO_MANY_TRUCK_STOPS                                        :{WHITE}Πάρα πολλοί σταθμοί φορτηγών
 STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Πολύ κοντά σε μιά άλλη περιοχή σταθμού/φόρτωσης
 STR_300A_0                                                      :{WHITE}{STATION} {STATIONFEATURES}
 STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Πρέπει να κατεδαφιστεί ο σιδηροδρομικός σταθμός πρώτα
@@ -1533,7 +1525,7 @@
 STR_3069_BUOY                                                   :Σημαδούρα
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...σημαδούρα στη μέση
 STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...ο σταθμός είναι υπερβολικά απλωμένος
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...ανομοιόμορφοι σταθμοί απενεργοποιημένοι
+STR_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...ανομοιόμορφοι σταθμοί απενεργοποιημένοι
 
 
 ##id 0x3800
@@ -1564,7 +1556,7 @@
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Επιλογή Τύπου Νέου Παιχνιδιού
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Επιλογή σεναρίου (πράσινο), προεπιλεγμένου παιχνιδιού (μπλε), ή τυχαίου νέου παιχνιδιού
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Δημιουργία τυχαίου νέου παιχνιδιού
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Φόρτωση Heightmap
+STR_LOAD_HEIGHTMAP                                              :{WHITE}Φόρτωση Heightmap
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} στη μέση
@@ -1715,10 +1707,10 @@
 STR_6813_ECONOMY                                                :{LTBLUE}Οικονομικά: {ORANGE}{STRING}
 STR_6814_TRAIN_REVERSING                                        :{LTBLUE}Περιστροφή τρένων: {ORANGE}{STRING}
 STR_6815_DISASTERS                                              :{LTBLUE}Καταστροφές: {ORANGE}{STRING}
-STR_16816_CITY_APPROVAL                                         :{LTBLUE}Θέση δημαρχιακού συμβουλίου σχετικά με την αναδόμηση της πόλης: {ORANGE}{STRING}
+STR_CITY_APPROVAL                                               :{LTBLUE}Θέση δημαρχιακού συμβουλίου σχετικά με την αναδόμηση της πόλης: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
-STR_26816_NONE                                                  :Κανένα
+STR_NONE                                                        :Κανένα
 STR_6816_LOW                                                    :Χαμηλό
 STR_6817_NORMAL                                                 :Κανονικό
 STR_6818_HIGH                                                   :Υψηλό
@@ -1754,9 +1746,9 @@
 STR_6836_OFF                                                    :Ανενεργό
 STR_6837_ON                                                     :Ενεργό
 STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Εμφάνιση γραφήματος καλύτεων βαθμολογιών
-STR_6839_PERMISSIVE                                             :Ανεκτικό
-STR_683A_TOLERANT                                               :Υπομονετικό
-STR_683B_HOSTILE                                                :Εχθρικό
+STR_PERMISSIVE                                                  :Ανεκτικό
+STR_TOLERANT                                                    :Υπομονετικό
+STR_HOSTILE                                                     :Εχθρικό
 
 ##id 0x7000
 STR_7000                                                        :
@@ -1877,7 +1869,7 @@
 STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% είναι ιδιοκτησία της {COMPANY})
 STR_707E_OWNED_BY_OWNED_BY                                      :{WHITE}({COMMA}% είναι ιδιοκτησία της εταιρείας {COMPANY}{}   {COMMA}% ιδιοκτησία της {COMPANY})
 STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}Η {COMPANY} εξαγοράστηκε από την {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Αυτή η εταιρεία δεν είναι αρκετά ώριμη για συναλλαγή μετοχών ακόμα...
+STR_PROTECTED                                                   :{WHITE}Αυτή η εταιρεία δεν είναι αρκετά ώριμη για συναλλαγή μετοχών ακόμα...
 
 
 
--- a/src/lang/unfinished/latvian.txt	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/lang/unfinished/latvian.txt	Sun Feb 03 20:17:54 2008 +0000
@@ -17,8 +17,6 @@
 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}  (ceļā no
-STR_000B                                                        :{YELLOW}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Pieņem: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Pieņem: {GOLD}
 STR_000E                                                        :
@@ -276,9 +274,9 @@
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Define'ti pa'ra'k daudz nosaukumi
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Izve'le'tais nosaukums jau tiek lietots
 
-STR_0133_WINDOWS                                                :Windows
-STR_0134_UNIX                                                   :Unix
-STR_0135_OSX                                                    :OS X
+STR_OSNAME_WINDOWS                                              :Windows
+STR_OSNAME_UNIX                                                 :Unix
+STR_OSNAME_OSX                                                  :OS X
 STR_OSNAME_BEOS                                                 :BeOS
 STR_OSNAME_MORPHOS                                              :MorphOS
 STR_OSNAME_AMIGAOS                                              :AmigaOS
@@ -289,11 +287,11 @@
 STR_013C_CARGO                                                  :{BLACK}Krava
 STR_013D_INFORMATION                                            :{BLACK}Informa'cija
 STR_013E_CAPACITIES                                             :{BLACK}Ietilpi'ba
-STR_013E_TOTAL_CARGO                                            :{BLACK}Krava kopa'
+STR_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_TEXT                                         :{BLACK}Kope'ja' vilciena kravas ietilpi'ba:
+STR_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
@@ -301,12 +299,6 @@
 STR_MULTIPLAYER                                                 :{BLACK}Daudz-spe'le'ta'ju
 STR_SCENARIO_EDITOR                                             :{BLACK}Scenāriju redaktors
 
-STR_64                                                          :64
-STR_128                                                         :128
-STR_256                                                         :256
-STR_512                                                         :512
-STR_1024                                                        :1024
-STR_2048                                                        :2048
 STR_MAPSIZE                                                     :{BLACK}Kartes izme'ri:
 STR_BY                                                          :{BLACK}*
 STR_0148_GAME_OPTIONS                                           :{BLACK}Spe'les rez'i'mi
@@ -766,9 +758,9 @@
 
 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
-STR_02C7_CONFIG_PATCHES                                         :Konfigure't labojumus (pac'us)
+STR_02C4_GAME_OPTIONS                                           :Spe'les rez'i'mi
+STR_02C6_DIFFICULTY_SETTINGS                                    :Gru'ti'bas paka'pes
+STR_MENU_CONFIG_PATCHES                                         :Konfigure't labojumus (pac'us)
 STR_NEWGRF_SETTINGS                                             :Newgrf rez'i'mi
 STR_GAMEOPTMENU_0A                                              :
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Ra'di't pilse'tu nosaukumus
@@ -866,8 +858,8 @@
 STR_SAVE_STILL_IN_PROGRESS                                      :{WHITE}Notiek saglabas'ana,{}lu'dzu uzgaidiet!
 STR_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}izve'lies 'Ez'u Ielas muzikas stila' programmu
 
-STR_0335_6                                                      :{BLACK}6
-STR_0336_7                                                      :{BLACK}7
+STR_6                                                           :{BLACK}6
+STR_7                                                           :{BLACK}7
 
 ############ start of townname region
 STR_TOWNNAME_ORIGINAL_ENGLISH                                   :Anglijas (orig'ina'lie)
@@ -1476,8 +1468,8 @@
 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_TOO_MANY_BUS_STOPS                                          :{WHITE}Pa'ra'k daudz autobusa pieturu
+STR_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
@@ -1531,7 +1523,7 @@
 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_NONUNIFORM_STATIONS_DISALLOWED                              :{WHITE}...neregula'ras stacijas nav atl'autas
 
 STR_UNDEFINED                                                   :(nedefinēta rinda)
 
@@ -1684,7 +1676,7 @@
 STR_705C_BANKRUPT                                               :{BLACK}{BIGFONT}Bankrots!
 STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
 STR_COMPANY_PASSWORD                                            :{BLACK}Parole
-STR_7080_PROTECTED                                              :{WHITE}S'i' kompa'nija ir pa'ra'k jauna lai tirgotu akcijas...
+STR_PROTECTED                                                   :{WHITE}S'i' kompa'nija ir pa'ra'k jauna lai tirgotu akcijas...
 
 
 
@@ -1788,17 +1780,17 @@
 ##id 0x8800
 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)
-STR_880A_GO_TO_LOAD                                             :Uz {STATION} (Piekraut)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Go to {STATION} (Pa'rvest un gaidi't pilnu kravu)
-STR_880C_GO_NON_STOP_TO                                         :Bez pieturam uz {STATION}
-STR_880D_GO_TO_NON_STOP_TRANSFER                                :Bez pieturam uz {STATION} (Pa'rvest un pan'emt kravu)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Bez pieturam uz {STATION} (Nokraut)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Bez pieturam uz {STATION} (Pa'rvest un atsta't tuks'u)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Bez pieturam uz {STATION} (Piekraut)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Bez pieturam uz {STATION} (Pa'rvest un gaidi't pilnu kravu)
+STR_GO_TO_TRANSFER                                              :Uz {STATION} (Pa'rvest un pan'emt kravu)
+STR_8807_GO_TO_UNLOAD                                           :Uz {STATION} (Nokraut)
+STR_GO_TO_TRANSFER_UNLOAD                                       :Uz {STATION} (Pa'rvest un atsta't tuks'u)
+STR_8808_GO_TO_LOAD                                             :Uz {STATION} (Piekraut)
+STR_GO_TO_TRANSFER_LOAD                                         :Go to {STATION} (Pa'rvest un gaidi't pilnu kravu)
+STR_880A_GO_NON_STOP_TO                                         :Bez pieturam uz {STATION}
+STR_GO_TO_NON_STOP_TRANSFER                                     :Bez pieturam uz {STATION} (Pa'rvest un pan'emt kravu)
+STR_880B_GO_NON_STOP_TO_UNLOAD                                  :Bez pieturam uz {STATION} (Nokraut)
+STR_GO_TO_NON_STOP_TRANSFER_UNLOAD                              :Bez pieturam uz {STATION} (Pa'rvest un atsta't tuks'u)
+STR_880C_GO_NON_STOP_TO_LOAD                                    :Bez pieturam uz {STATION} (Piekraut)
+STR_GO_TO_NON_STOP_TRANSFER_LOAD                                :Bez pieturam uz {STATION} (Pa'rvest un gaidi't pilnu kravu)
 STR_GO_TO_TRAIN_DEPOT                                           :Uz {TOWN} Vilcienu Depo
 
 
@@ -1816,8 +1808,8 @@
 
 STR_8865_NAME_TRAIN                                             :{WHITE}Nosaukt vilcienu
 STR_8867_NAME_TRAIN                                             :{BLACK}Nosaukt vilcienu
-STR_886D_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Uzsve'rtai pa'velei spiest tansportli'dzekl'im nomest kravu
-STR_886F_TRANSFER                                               :{BLACK}Tranzi'ts
+STR_MAKE_THE_HIGHLIGHTED_ORDER                                  :{BLACK}Uzsve'rtai pa'velei spiest tansportli'dzekl'im nomest kravu
+STR_TRANSFER                                                    :{BLACK}Tranzi'ts
 
 
 
@@ -1829,7 +1821,7 @@
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Cena: {CURRENCY}{}Atrums: {VELOCITY}{}Running Cost: {CURRENCY}/yr{}Capacity: {CARGO}
 
 STR_9034_RENAME                                                 :{BLACK}Pârsaukt
-STR_9038_GO_TO_ROADVEH_DEPOT                                    :Dodas uz {TOWN} ceļa mašīnu depo
+STR_GO_TO_ROADVEH_DEPOT                                         :Dodas uz {TOWN} ceļa mašīnu depo
 
 
 ##id 0x9800
--- a/src/livery.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/livery.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,7 @@
 #ifndef LIVERY_H
 #define LIVERY_H
 
+#include "player_type.h"
 
 /* List of different livery schemes. */
 enum LiveryScheme {
@@ -22,6 +23,8 @@
 	LS_PASSENGER_WAGON_STEAM,
 	LS_PASSENGER_WAGON_DIESEL,
 	LS_PASSENGER_WAGON_ELECTRIC,
+	LS_PASSENGER_WAGON_MONORAIL,
+	LS_PASSENGER_WAGON_MAGLEV,
 	LS_FREIGHT_WAGON,
 
 	/* Road vehicles */
@@ -63,4 +66,11 @@
 	byte colour2; ///< Second colour, for vehicles with 2CC support.
 };
 
+/**
+ * Reset the livery schemes to the player's primary colour.
+ * This is used on loading games without livery information and on new player start up.
+ * @param p Player to reset.
+ */
+void ResetPlayerLivery(Player *p);
+
 #endif /* LIVERY_H */
--- a/src/main_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/main_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,19 +7,15 @@
 #include "heightmap.h"
 #include "currency.h"
 #include "spritecache.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "window_func.h"
 #include "textbuf_gui.h"
 #include "viewport_func.h"
-#include "player.h"
 #include "command_func.h"
 #include "news.h"
 #include "town.h"
 #include "console.h"
-#include "network/network.h"
 #include "signs.h"
 #include "waypoint.h"
 #include "variables.h"
@@ -39,16 +35,24 @@
 #include "sound_func.h"
 #include "fios.h"
 #include "terraform_gui.h"
-
-#include "network/network_data.h"
-#include "network/network_client.h"
-#include "network/network_server.h"
-#include "network/network_gui.h"
 #include "industry.h"
 #include "transparency.h"
 #include "strings_func.h"
 #include "zoom_func.h"
 #include "string_func.h"
+#include "player_base.h"
+#include "player_func.h"
+#include "player_gui.h"
+#include "settings_type.h"
+
+#include "network/network.h"
+#include "network/network_data.h"
+#include "network/network_client.h"
+#include "network/network_server.h"
+#include "network/network_gui.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static int _rename_id = 1;
 static int _rename_what = -1;
@@ -172,10 +176,7 @@
 		case  9: ToggleBit(_display_opt, DO_WAYPOINTS);          break;
 		case 10: ToggleBit(_display_opt, DO_FULL_ANIMATION);     break;
 		case 11: ToggleBit(_display_opt, DO_FULL_DETAIL);        break;
-		case 12:
-			ToggleTransparency(TO_TREES);
-			ToggleTransparency(TO_HOUSES);
-			break;
+		case 12: ToggleTransparency(TO_HOUSES);                  break;
 		case 13: ToggleTransparency(TO_SIGNS);                   break;
 	}
 	MarkWholeScreenDirty();
@@ -968,7 +969,7 @@
 {
 	uint16 x = 0;
 
-	w = PopupMainToolbMenu(w, 2, STR_02C3_GAME_OPTIONS, 14, 0);
+	w = PopupMainToolbMenu(w, 2, STR_02C4_GAME_OPTIONS, 14, 0);
 
 	if (HasBit(_display_opt, DO_SHOW_TOWN_NAMES))    SetBit(x,  6);
 	if (HasBit(_display_opt, DO_SHOW_STATION_NAMES)) SetBit(x,  7);
--- a/src/map.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/map.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -16,6 +16,7 @@
 #endif
 
 uint _map_log_x;     ///< 2^_map_log_x == _map_size_x
+uint _map_log_y;     ///< 2^_map_log_y == _map_size_y
 uint _map_size_x;    ///< Size of the map along the X
 uint _map_size_y;    ///< Size of the map along the Y
 uint _map_size;      ///< The number of tiles on the map
@@ -43,6 +44,7 @@
 	DEBUG(map, 1, "Allocating map of size %dx%d", size_x, size_y);
 
 	_map_log_x = FindFirstBit(size_x);
+	_map_log_y = FindFirstBit(size_y);
 	_map_size_x = size_x;
 	_map_size_y = size_y;
 	_map_size = size_x * size_y;
@@ -139,7 +141,7 @@
  * @param addy the amount of tiles in the Y direction to add
  * @return translated tile, or INVALID_TILE when it would've wrapped.
  */
-uint TileAddWrap(TileIndex tile, int addx, int addy)
+TileIndex TileAddWrap(TileIndex tile, int addx, int addy)
 {
 	uint x = TileX(tile) + addx;
 	uint y = TileY(tile) + addy;
--- a/src/map_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/map_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file map.h */
+/** @file map_func.h */
 
 #ifndef MAP_FUNC_H
 #define MAP_FUNC_H
@@ -57,6 +57,17 @@
 }
 
 /**
+ * Logarithm of the map size along the y side.
+ * @note try to avoid using this one
+ * @return 2^"return value" == MapSizeY()
+ */
+static inline uint MapLogY()
+{
+	extern uint _map_log_y;
+	return _map_log_y;
+}
+
+/**
  * Get the size of the map along the X
  * @return the number of tiles along the X of the map
  */
@@ -227,7 +238,7 @@
 /**
  * Adds an offset to a tile and check if we are still on the map.
  */
-uint TileAddWrap(TileIndex tile, int addx, int addy);
+TileIndex TileAddWrap(TileIndex tile, int addx, int addy);
 
 /**
  * Returns the TileIndexDiffC offset from a DiagDirection.
@@ -244,6 +255,20 @@
 }
 
 /**
+ * Returns the TileIndexDiffC offset from a Direction.
+ *
+ * @param dir The given direction
+ * @return The offset as TileIndexDiffC value
+ */
+static inline TileIndexDiffC TileIndexDiffCByDir(Direction dir)
+{
+	extern const TileIndexDiffC _tileoffs_by_dir[DIR_END];
+
+	assert(IsValidDirection(dir));
+	return _tileoffs_by_dir[dir];
+}
+
+/**
  * Add a TileIndexDiffC to a TileIndex and returns the new one.
  *
  * Returns tile + the diff given in diff. If the result tile would end up
--- a/src/misc.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/misc.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,9 +7,6 @@
 #include "currency.h"
 #include "landscape.h"
 #include "news.h"
-#include "player.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "saveload.h"
 #include "engine.h"
 #include "vehicle_gui.h"
@@ -28,7 +25,11 @@
 #include "texteff.hpp"
 #include "string_func.h"
 #include "gfx_func.h"
+#include "core/alloc_func.hpp"
+#include "settings_type.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
 
 char _name_array[512][32];
 
@@ -117,18 +118,6 @@
 	return GB(id, 11, 5) == 15;
 }
 
-void DeleteName(StringID id)
-{
-	if (IsCustomName(id)) {
-		memset(_name_array[id & 0x1FF], 0, sizeof(_name_array[id & 0x1FF]));
-	}
-}
-
-char *GetName(char *buff, StringID id, const char* last)
-{
-	return strecpy(buff, _name_array[id & ~0x600], last);
-}
-
 
 static void InitializeCheats()
 {
@@ -141,40 +130,22 @@
 	memset(_name_array, 0, sizeof(_name_array));
 }
 
-StringID RealAllocateName(const char *name, byte skip, bool check_double)
+/* Copy and convert old custom names to UTF-8 */
+char *CopyFromOldName(StringID id)
 {
-	char (*free_item)[lengthof(*_name_array)] = NULL;
-	char (*i)[lengthof(*_name_array)];
-
-	for (i = _name_array; i != endof(_name_array); ++i) {
-		if ((*i)[0] == '\0') {
-			if (free_item == NULL) free_item = i;
-		} else if (check_double && strncmp(*i, name, lengthof(*i) - 1) == 0) {
-			_error_message = STR_0132_CHOSEN_NAME_IN_USE_ALREADY;
-			return 0;
-		}
-	}
+	if (!IsCustomName(id)) return NULL;
 
-	if (free_item != NULL) {
-		ttd_strlcpy(*free_item, name, lengthof(*free_item));
-		return (free_item - _name_array) | 0x7800 | (skip << 8);
-	} else {
-		_error_message = STR_0131_TOO_MANY_NAMES_DEFINED;
-		return 0;
-	}
-}
-
-void ConvertNameArray()
-{
-	uint i;
-
-	for (i = 0; i < lengthof(_name_array); i++) {
-		const char *strfrom = _name_array[i];
-		char tmp[sizeof(*_name_array)];
+	if (CheckSavegameVersion(37)) {
+		/* Old names were 32 characters long, so 128 characters should be
+		 * plenty to allow for expansion when converted to UTF-8. */
+		char tmp[128];
+		const char *strfrom = _name_array[GB(id, 0, 9)];
 		char *strto = tmp;
 
 		for (; *strfrom != '\0'; strfrom++) {
 			WChar c = (byte)*strfrom;
+
+			/* Map from non-ISO8859-15 characters to UTF-8. */
 			switch (c) {
 				case 0xA4: c = 0x20AC; break; // Euro
 				case 0xA6: c = 0x0160; break; // S with caron
@@ -186,13 +157,20 @@
 				case 0xBE: c = 0x0178; break; // Y with diaresis
 				default: break;
 			}
+
+			/* Check character will fit into our buffer. */
 			if (strto + Utf8CharLen(c) > lastof(tmp)) break;
+
 			strto += Utf8Encode(strto, c);
 		}
 
 		/* Terminate the new string and copy it back to the name array */
 		*strto = '\0';
-		memcpy(_name_array[i], tmp, sizeof(*_name_array));
+
+		return strdup(tmp);
+	} else {
+		/* Name will already be in UTF-8. */
+		return strdup(_name_array[GB(id, 0, 9)]);
 	}
 }
 
@@ -207,19 +185,6 @@
 	}
 }
 
-
-static void Save_NAME()
-{
-	int i;
-
-	for (i = 0; i != lengthof(_name_array); ++i) {
-		if (_name_array[i][0] != '\0') {
-			SlSetArrayIndex(i);
-			SlArray(_name_array[i], (uint)strlen(_name_array[i]), SLE_UINT8);
-		}
-	}
-}
-
 static void Load_NAME()
 {
 	int index;
@@ -241,8 +206,8 @@
 	SLEG_CONDVAR(_cur_tileloop_tile,      SLE_UINT32,                  6, SL_MAX_VERSION),
 	    SLEG_VAR(_disaster_delay,         SLE_UINT16),
 	    SLEG_VAR(_station_tick_ctr,       SLE_UINT16),
-	    SLEG_VAR(_random_seeds[0][0],     SLE_UINT32),
-	    SLEG_VAR(_random_seeds[0][1],     SLE_UINT32),
+	    SLEG_VAR(_random.state[0],        SLE_UINT32),
+	    SLEG_VAR(_random.state[1],        SLE_UINT32),
 	SLEG_CONDVAR(_cur_town_ctr,           SLE_FILE_U8  | SLE_VAR_U32,  0, 9),
 	SLEG_CONDVAR(_cur_town_ctr,           SLE_UINT32,                 10, SL_MAX_VERSION),
 	    SLEG_VAR(_cur_player_tick_index,  SLE_FILE_U8  | SLE_VAR_U32),
@@ -297,196 +262,161 @@
 	AllocateMap(_map_dim_x, _map_dim_y);
 }
 
+enum {
+	MAP_SL_BUF_SIZE = 4096
+};
+
 static void Load_MAPT()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].type_height = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].type_height = buf[j];
 	}
 }
 
 static void Save_MAPT()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].type_height;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].type_height;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP1()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].m1 = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m1 = buf[j];
 	}
 }
 
 static void Save_MAP1()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m1;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m1;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP2()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<uint16, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		uint16 buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf),
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE,
 			/* In those versions the m2 was 8 bits */
 			CheckSavegameVersion(5) ? SLE_FILE_U8 | SLE_VAR_U16 : SLE_UINT16
 		);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].m2 = buf[j];
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m2 = buf[j];
 	}
 }
 
 static void Save_MAP2()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<uint16, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	SlSetLength(size * sizeof(_m[0].m2));
-	for (i = 0; i != size;) {
-		uint16 buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m2;
-		SlArray(buf, lengthof(buf), SLE_UINT16);
+	SlSetLength(size * sizeof(uint16));
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m2;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT16);
 	}
 }
 
 static void Load_MAP3()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].m3 = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m3 = buf[j];
 	}
 }
 
 static void Save_MAP3()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m3;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m3;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP4()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].m4 = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m4 = buf[j];
 	}
 }
 
 static void Save_MAP4()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m4;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m4;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP5()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _m[i++].m5 = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m5 = buf[j];
 	}
 }
 
 static void Save_MAP5()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		byte buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m5;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m5;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP6()
 {
-	/* Still available for loading old games */
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	if (CheckSavegameVersion(42)) {
-		for (i = 0; i != size;) {
-			uint8 buf[1024];
-			uint j;
-
-			SlArray(buf, lengthof(buf), SLE_UINT8);
-			for (j = 0; j != lengthof(buf); j++) {
+		for (TileIndex i = 0; i != size;) {
+			/* 1024, otherwise we overflow on 64x64 maps! */
+			SlArray(buf, 1024, SLE_UINT8);
+			for (uint j = 0; j != 1024; j++) {
 				_m[i++].m6 = GB(buf[j], 0, 2);
 				_m[i++].m6 = GB(buf[j], 2, 2);
 				_m[i++].m6 = GB(buf[j], 4, 2);
@@ -494,57 +424,45 @@
 			}
 		}
 	} else {
-		for (i = 0; i != size;) {
-			byte buf[4096];
-			uint j;
-
-			SlArray(buf, lengthof(buf), SLE_UINT8);
-			for (j = 0; j != lengthof(buf); j++) _m[i++].m6 = buf[j];
+		for (TileIndex i = 0; i != size;) {
+			SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+			for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m6 = buf[j];
 		}
 	}
 }
 
 static void Save_MAP6()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		uint8 buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m6;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m6;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
 static void Load_MAP7()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
-	for (i = 0; i != size;) {
-		uint8 buf[4096];
-		uint j;
-
-		SlArray(buf, lengthof(buf), SLE_UINT8);
-		for (j = 0; j != lengthof(buf); j++) _me[i++].m7 = buf[j];
+	for (TileIndex i = 0; i != size;) {
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _me[i++].m7 = buf[j];
 	}
 }
 
 static void Save_MAP7()
 {
-	uint size = MapSize();
-	uint i;
+	SmallStackSafeStackAlloc<byte, MAP_SL_BUF_SIZE> buf;
+	TileIndex size = MapSize();
 
 	SlSetLength(size);
-	for (i = 0; i != size;) {
-		uint8 buf[4096];
-		uint j;
-
-		for (j = 0; j != lengthof(buf); j++) buf[j] = _me[i++].m7;
-		SlArray(buf, lengthof(buf), SLE_UINT8);
+	for (TileIndex i = 0; i != size;) {
+		for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _me[i++].m7;
+		SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
 	}
 }
 
@@ -585,7 +503,7 @@
 	{ 'MAPE', Save_MAP6,     Load_MAP6,     CH_RIFF },
 	{ 'MAP7', Save_MAP7,     Load_MAP7,     CH_RIFF },
 
-	{ 'NAME', Save_NAME,     Load_NAME,     CH_ARRAY},
+	{ 'NAME', NULL,          Load_NAME,     CH_ARRAY},
 	{ 'DATE', SaveLoad_DATE, SaveLoad_DATE, CH_RIFF},
 	{ 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, CH_RIFF},
 	{ 'CHTS', Save_CHTS,     Load_CHTS,     CH_RIFF | CH_LAST}
--- a/src/misc/countedptr.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/misc/countedptr.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,12 +1,10 @@
 /* $Id$ */
 
-/** @file countedptr.hpp */
+/** @file countedptr.hpp CCountedPtr - smart pointer implementation. */
 
 #ifndef COUNTEDPTR_HPP
 #define COUNTEDPTR_HPP
 
-/** @file CCountedPtr - smart pointer implementation */
-
 /** CCountedPtr - simple reference counting smart pointer.
  *
  *     One of the standard ways how to maintain object's lifetime.
--- a/src/misc_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/misc_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,10 +4,8 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "command_func.h"
 #include "economy_func.h"
-#include "player.h"
 #include "gui.h"
 #include "window_func.h"
 #include "textbuf_gui.h"
@@ -20,6 +18,12 @@
 #include "functions.h"
 #include "vehicle_func.h"
 #include "string_func.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "player_gui.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 /** Change the player's face.
  * @param tile unused
@@ -231,23 +235,17 @@
  */
 CommandCost CmdChangeCompanyName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	StringID str;
 	Player *p;
 
 	if (StrEmpty(_cmd_text)) return CMD_ERROR;
 
 	if (!IsUniqueCompanyName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	str = AllocateName(_cmd_text, 4);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
 		p = GetPlayer(_current_player);
-		DeleteName(p->name_1);
-		p->name_1 = str;
+		free(p->name);
+		p->name = strdup(_cmd_text);
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
@@ -276,20 +274,16 @@
  */
 CommandCost CmdChangePresidentName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	StringID str;
 	Player *p;
 
 	if (StrEmpty(_cmd_text)) return CMD_ERROR;
 
 	if (!IsUniquePresidentName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	str = AllocateName(_cmd_text, 4);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
 		p = GetPlayer(_current_player);
-		DeleteName(p->president_name_1);
-		p->president_name_1 = str;
+		free(p->president_name);
+		p->president_name = strdup(_cmd_text);
 
 		if (p->name_1 == STR_SV_UNNAMED) {
 			char buf[80];
@@ -299,8 +293,6 @@
 			DoCommand(0, 0, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME);
 		}
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
--- a/src/misc_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/misc_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,9 +10,6 @@
 #include "newgrf.h"
 #include "newgrf_text.h"
 #include "saveload.h"
-#include "table/sprites.h"
-#include "table/strings.h"
-#include "table/tree_land.h"
 #include "tile_map.h"
 #include "gui.h"
 #include "window_gui.h"
@@ -22,7 +19,8 @@
 #include "gfx_func.h"
 #include "station.h"
 #include "command_func.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "town.h"
 #include "network/network.h"
 #include "variables.h"
@@ -40,6 +38,12 @@
 #include "date_func.h"
 #include "sound_func.h"
 #include "string_func.h"
+#include "player_gui.h"
+#include "settings_type.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
+#include "table/tree_land.h"
 
 /* Variables to display file lists */
 FiosItem *_fios_list;
@@ -769,7 +773,7 @@
 }
 
 
-static void DrawStationCoverageText(const AcceptedCargo accepts,
+static int DrawStationCoverageText(const AcceptedCargo accepts,
 	int str_x, int str_y, StationCoverageType sct)
 {
 	char *b = _userstring;
@@ -805,17 +809,19 @@
 	/* Make sure we detect any buffer overflow */
 	assert(b < endof(_userstring));
 
-	DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
+	return DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
 }
 
-void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad)
+int 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, sct);
+		return sy + DrawStationCoverageText(accepts, sx, sy, sct);
 	}
+
+	return sy;
 }
 
 void CheckRedrawStationCoverage(const Window *w)
@@ -1501,11 +1507,7 @@
 		}
 
 		GfxFillRect(w->widget[7].left + 1, w->widget[7].top + 1, w->widget[7].right, w->widget[7].bottom, 0xD7);
-		DoDrawString(
-			_savegame_sort_order & SORT_DESCENDING ? DOWNARROW : UPARROW,
-			_savegame_sort_order & SORT_BY_NAME ? w->widget[2].right - 9 : w->widget[3].right - 9,
-			15, TC_BLACK
-		);
+		DrawSortButtonState(w, _savegame_sort_order & SORT_BY_NAME ? 2 : 3, _savegame_sort_order & SORT_DESCENDING ? SBS_DOWN : SBS_UP);
 
 		y = w->widget[7].top + 1;
 		for (pos = w->vscroll.pos; pos < _fios_num; pos++) {
@@ -1689,7 +1691,7 @@
 		STR_0298_LOAD_SCENARIO,
 		STR_4000_SAVE_GAME,
 		STR_0299_SAVE_SCENARIO,
-		STR_4011_LOAD_HEIGHTMAP,
+		STR_LOAD_HEIGHTMAP,
 	};
 
 	Window *w;
--- a/src/music/dmusic.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/music/dmusic.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -15,6 +15,7 @@
 #include <dmusicc.h>
 #include <dmusicf.h>
 
+static FMusicDriver_DMusic iFMusicDriver_DMusic;
 
 /** the performance object controls manipulation of the segments */
 static IDirectMusicPerformance* performance = NULL;
--- a/src/music/libtimidity.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/music/libtimidity.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -2,7 +2,7 @@
 
 #include "../stdafx.h"
 #include "../openttd.h"
-#include "../sound.h"
+#include "../sound_type.h"
 #include "../variables.h"
 #include "../debug.h"
 #include "libtimidity.h"
--- a/src/music/music_driver.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/music/music_driver.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -31,5 +31,6 @@
 };
 
 extern MusicDriver *_music_driver;
+extern char _ini_musicdriver[32];
 
 #endif /* MUSIC_MUSIC_DRIVER_HPP */
--- a/src/music_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/music_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "fileio.h"
 #include "variables.h"
 #include "music.h"
@@ -16,6 +14,10 @@
 #include "sound_func.h"
 #include "gfx_func.h"
 #include "core/math_func.hpp"
+#include "core/random_func.hpp"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 static byte _music_wnd_cursong;
 static bool _song_is_active;
--- a/src/namegen.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/namegen.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,8 +6,9 @@
 #include "openttd.h"
 #include "debug.h"
 #include "namegen.h"
+#include "string_func.h"
+
 #include "table/namegen.h"
-#include "string_func.h"
 
 static inline uint32 SeedChance(int shift_by, int max, uint32 seed)
 {
--- a/src/namegen.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/namegen.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file src/namegen.h Town name generator stuff */
+/** @file namegen.h Town name generator stuff. */
 
 #ifndef NAMEGEN_H
 #define NAMEGEN_H
--- a/src/network/core/tcp.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/core/tcp.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,12 +10,13 @@
 #include "../../debug.h"
 #include "../../openttd.h"
 #include "../../variables.h"
-#include "table/strings.h"
 
 #include "../network_data.h"
 #include "packet.h"
 #include "tcp.h"
 
+#include "table/strings.h"
+
 /** Very ugly temporary hack !!! */
 void NetworkTCPSocketHandler::Initialize()
 {
--- a/src/network/core/tcp.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/core/tcp.h	Sun Feb 03 20:17:54 2008 +0000
@@ -12,6 +12,7 @@
 #include "os_abstraction.h"
 #include "core.h"
 #include "packet.h"
+#include "../../tile_type.h"
 
 /**
  * Enum with all types of UDP packets.
--- a/src/network/network.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -3,8 +3,6 @@
 #include "../stdafx.h"
 #include "network_data.h"
 
-extern const char _openttd_revision[];
-
 #ifdef ENABLE_NETWORK
 
 #include "../openttd.h"
@@ -15,7 +13,6 @@
 #include "../variables.h"
 #include "../date_func.h"
 #include "../newgrf_config.h"
-#include "table/strings.h"
 #include "network_client.h"
 #include "network_server.h"
 #include "network_udp.h"
@@ -32,9 +29,19 @@
 #include "../core/random_func.hpp"
 #include "../window_func.h"
 #include "../string_func.h"
+#include "../player_func.h"
+#include "../settings_type.h"
 #ifdef DEBUG_DUMP_COMMANDS
 	#include "../core/alloc_func.hpp"
-#endif
+#endif /* DEBUG_DUMP_COMMANDS */
+
+#include "table/strings.h"
+
+bool _network_reload_cfg;
+bool _network_server;     ///< network-server is active
+bool _network_available;  ///< is network mode available?
+bool _network_dedicated;  ///< are we a dedicated server?
+bool _network_advertise;  ///< is the server advertising to the master server?
 
 /* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
 assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
@@ -193,9 +200,7 @@
 			break;
 	}
 
-#ifdef DEBUG_DUMP_COMMANDS
-	debug_dump_commands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message);
-#endif /* DUMP_COMMANDS */
+	DebugDumpCommands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message);
 	IConsolePrintF(color, "%s", message);
 	AddChatMessage(color, duration, "%s", message);
 }
@@ -399,6 +404,7 @@
 				inaddr.s_addr = htonl(ip | ~netmask);
 				_broadcast_list[i] = inaddr.s_addr;
 				i++;
+				if (i == MAX_INTERFACES) break;
 			}
 			if (read < 0) {
 				break;
@@ -426,6 +432,7 @@
 		if (ifa->ifa_broadaddr->sa_family != AF_INET) continue;
 		_broadcast_list[i] = ((struct sockaddr_in*)ifa->ifa_broadaddr)->sin_addr.s_addr;
 		i++;
+		if (i == MAX_INTERFACES) break;
 	}
 	freeifaddrs(ifap);
 
@@ -465,6 +472,7 @@
 		_broadcast_list[i++] =
 			 ifo[j].iiAddress.AddressIn.sin_addr.s_addr |
 			~ifo[j].iiNetmask.AddressIn.sin_addr.s_addr;
+		if (i == MAX_INTERFACES) break;
 	}
 #else
 	ifconf.ifc_len = sizeof(buf);
@@ -488,6 +496,7 @@
 					ioctl(sock, SIOCGIFBRDADDR, &r) != -1) {
 				_broadcast_list[i++] =
 					((struct sockaddr_in*)&r.ifr_broadaddr)->sin_addr.s_addr;
+				if (i == MAX_INTERFACES) break;
 			}
 		}
 
@@ -1199,8 +1208,7 @@
 		if (_frame_counter > cp->frame) {
 			// If we reach here, it means for whatever reason, we've already executed
 			// past the command we need to execute.
-			DEBUG(net, 0, "Trying to execute a packet in the past!");
-			assert(0);
+			error("[net] Trying to execute a packet in the past!");
 		}
 
 		// We can execute this command
@@ -1231,14 +1239,12 @@
 	if (_sync_frame != 0) {
 		if (_sync_frame == _frame_counter) {
 #ifdef NETWORK_SEND_DOUBLE_SEED
-			if (_sync_seed_1 != _random_seeds[0][0] || _sync_seed_2 != _random_seeds[0][1]) {
+			if (_sync_seed_1 != _random.state[0] || _sync_seed_2 != _random.state[1]) {
 #else
-			if (_sync_seed_1 != _random_seeds[0][0]) {
+			if (_sync_seed_1 != _random.state[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 */
+				DebugDumpCommands("ddc:serr:%d;%d\n", _date, _date_fract);
 				DEBUG(net, 0, "Sync error detected!");
 				NetworkClientError(NETWORK_RECV_STATUS_DESYNC, DEREF_CLIENT(0));
 				return false;
@@ -1313,7 +1319,7 @@
 			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 */
+#endif /* DEBUG_DUMP_COMMANDS */
 
 		bool send_frame = false;
 
@@ -1330,9 +1336,9 @@
 		// Then we make the frame
 		StateGameLoop();
 
-		_sync_seed_1 = _random_seeds[0][0];
+		_sync_seed_1 = _random.state[0];
 #ifdef NETWORK_SEND_DOUBLE_SEED
-		_sync_seed_2 = _random_seeds[0][1];
+		_sync_seed_2 = _random.state[1];
 #endif
 
 		NetworkServer_Tick(send_frame);
@@ -1467,18 +1473,7 @@
 	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", AUTOSAVE_DIR);
-	if (f == NULL) return;
+#endif /* ENABLE_NETWORK */
 
-	va_list va;
-	va_start(va, s);
-	vfprintf(f, s, va);
-	va_end(va);
-
-	fflush(f);
-}
-#endif /* DEBUG_DUMP_COMMANDS */
-#endif /* ENABLE_NETWORK */
+/* NOTE: this variable needs to be always available */
+PlayerID _network_playas;
--- a/src/network/network.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network.h	Sun Feb 03 20:17:54 2008 +0000
@@ -3,224 +3,19 @@
 #ifndef NETWORK_H
 #define NETWORK_H
 
+#include "../player_type.h"
+
 #ifdef ENABLE_NETWORK
 
-#include "../player.h"
-#include "core/config.h"
-#include "core/game.h"
-
-// If this line is enable, every frame will have a sync test
-//  this is not needed in normal games. Normal is like 1 sync in 100
-//  frames. You can enable this if you have a lot of desyncs on a certain
-//  game.
-// Remember: both client and server have to be compiled with this
-//  option enabled to make it to work. If one of the two has it disabled
-//  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
-
-// How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
-//  players that can really play.. so.. a max of 4 spectators.. gives us..
-//  MAX_PLAYERS + 3
-#define MAX_CLIENTS (MAX_PLAYERS + 3)
-
-
-// Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1
-#define MAX_CLIENT_INFO (MAX_CLIENTS + 1)
-
-#define MAX_INTERFACES 9
-
-
-// How many vehicle/station types we put over the network
-#define NETWORK_VEHICLE_TYPES 5
-#define NETWORK_STATION_TYPES 5
-
-struct NetworkPlayerInfo {
-	char company_name[NETWORK_NAME_LENGTH];         // Company name
-	char password[NETWORK_PASSWORD_LENGTH];         // The password for the player
-	Year inaugurated_year;                          // What year the company started in
-	Money company_value;                            // The company value
-	Money money;                                    // The amount of money the company has
-	Money income;                                   // How much did the company earned last year
-	uint16 performance;                             // What was his performance last month?
-	bool use_password;                              // Is there a password
-	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      // How many vehicles are there of this type?
-	uint16 num_station[NETWORK_STATION_TYPES];      // How many stations are there of this type?
-	char players[NETWORK_PLAYERS_LENGTH];           // The players that control this company (Name1, name2, ..)
-	uint16 months_empty;                            // How many months the company is empty
-};
-
-struct NetworkClientInfo {
-	uint16 client_index;                            // Index of the client (same as ClientState->index)
-	char client_name[NETWORK_CLIENT_NAME_LENGTH];   // Name of the client
-	byte client_lang;                               // The language of the client
-	PlayerID client_playas;                         // As which player is this client playing (PlayerID)
-	uint32 client_ip;                               // IP-address of the client (so he can be banned)
-	Date join_date;                                 // Gamedate the player has joined
-	char unique_id[NETWORK_UNIQUE_ID_LENGTH];       // Every play sends an unique id so we can indentify him
-};
-
-enum NetworkJoinStatus {
-	NETWORK_JOIN_STATUS_CONNECTING,
-	NETWORK_JOIN_STATUS_AUTHORIZING,
-	NETWORK_JOIN_STATUS_WAITING,
-	NETWORK_JOIN_STATUS_DOWNLOADING,
-	NETWORK_JOIN_STATUS_PROCESSING,
-	NETWORK_JOIN_STATUS_REGISTERING,
-
-	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
-};
-
-/* Language ids for server_lang and client_lang. Do NOT modify the order. */
-enum NetworkLanguage {
-	NETLANG_ANY = 0,
-	NETLANG_ENGLISH,
-	NETLANG_GERMAN,
-	NETLANG_FRENCH,
-	NETLANG_BRAZILIAN,
-	NETLANG_BULGARIAN,
-	NETLANG_CHINESE,
-	NETLANG_CZECH,
-	NETLANG_DANISH,
-	NETLANG_DUTCH,
-	NETLANG_ESPERANTO,
-	NETLANG_FINNISH,
-	NETLANG_HUNGARIAN,
-	NETLANG_ICELANDIC,
-	NETLANG_ITALIAN,
-	NETLANG_JAPANESE,
-	NETLANG_KOREAN,
-	NETLANG_LITHUANIAN,
-	NETLANG_NORWEGIAN,
-	NETLANG_POLISH,
-	NETLANG_PORTUGUESE,
-	NETLANG_ROMANIAN,
-	NETLANG_RUSSIAN,
-	NETLANG_SLOVAK,
-	NETLANG_SLOVENIAN,
-	NETLANG_SPANISH,
-	NETLANG_SWEDISH,
-	NETLANG_TURKISH,
-	NETLANG_UKRAINIAN,
-	NETLANG_COUNT
-};
-
-VARDEF NetworkGameInfo _network_game_info;
-VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
-VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
-
-VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
-VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
-
-VARDEF uint16 _network_own_client_index;
-VARDEF char _network_unique_id[NETWORK_UNIQUE_ID_LENGTH]; // Our own unique ID
-
-VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
-VARDEF uint32 _frame_counter_max; // To where we may go with our clients
-
-VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a sync packet was sent to clients.
-
-// networking settings
-VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1];
-
-VARDEF uint16 _network_server_port;
-/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
-    bind_ip_host, and bind_ip the numeric value, because we want a nice number
-    in the openttd.cfg, but we wants to use the uint32 internally.. */
-VARDEF uint32 _network_server_bind_ip;
-VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
-VARDEF bool _is_network_server; // Does this client wants to be a network-server?
-VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
-VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH];
-VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH];
-VARDEF char _network_default_company_pass[NETWORK_PASSWORD_LENGTH];
-
-VARDEF uint16 _network_max_join_time;             ///< Time a client can max take to join
-VARDEF bool _network_pause_on_join;               ///< Pause the game when a client tries to join (more chance of succeeding join)
-
-VARDEF uint16 _redirect_console_to_client;
-
-VARDEF uint16 _network_sync_freq;
-VARDEF uint8 _network_frame_freq;
-
-VARDEF uint32 _sync_seed_1, _sync_seed_2;
-VARDEF uint32 _sync_frame;
-VARDEF bool _network_first_time;
-// Vars needed for the join-GUI
-VARDEF NetworkJoinStatus _network_join_status;
-VARDEF uint8 _network_join_waiting;
-VARDEF uint16 _network_join_kbytes;
-VARDEF uint16 _network_join_kbytes_total;
-
-VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH];
-VARDEF short _network_last_port;
-VARDEF uint32 _network_last_host_ip;
-VARDEF uint8 _network_reconnect;
-
-VARDEF bool _network_udp_server;
-VARDEF uint16 _network_udp_broadcast;
-
-VARDEF byte _network_lan_internet;
-
-VARDEF bool _network_need_advertise;
-VARDEF uint32 _network_last_advertise_frame;
-VARDEF uint8 _network_advertise_retries;
-
-VARDEF bool _network_autoclean_companies;
-VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months
-VARDEF uint8 _network_autoclean_protected;   // Unprotect a company after X months
-
-VARDEF Year _network_restart_game_year;      // If this year is reached, the server automaticly restarts
-VARDEF uint8 _network_min_players;           // Minimum number of players for game to unpause
-
-void NetworkTCPQueryServer(const char* host, unsigned short port);
-
-byte NetworkSpectatorCount();
-
-VARDEF char *_network_host_list[10];
-VARDEF char *_network_ban_list[25];
-
-void ParseConnectionString(const char **player, const char **port, char *connection_string);
-void NetworkUpdateClientInfo(uint16 client_index);
-void NetworkAddServer(const char *b);
-void NetworkRebuildHostList();
-bool NetworkChangeCompanyPassword(byte argc, char *argv[]);
-void NetworkPopulateCompanyInfo();
-void UpdateNetworkGameWindow(bool unselect);
-void CheckMinPlayers();
-void NetworkStartDebugLog(const char *hostname, uint16 port);
-
 void NetworkStartUp();
-void NetworkUDPCloseAll();
 void NetworkShutDown();
-void NetworkGameLoop();
-void NetworkUDPGameLoop();
-bool NetworkServerStart();
-bool NetworkClientConnectGame(const char *host, uint16 port);
-void NetworkReboot();
-void NetworkDisconnect();
-
-bool IsNetworkCompatibleVersion(const char *version);
 
 extern bool _networking;         ///< are we in networking mode?
-VARDEF bool _network_server;     ///< network-server is active
-VARDEF bool _network_available;  ///< is network mode available?
-VARDEF bool _network_dedicated;  ///< are we a dedicated server?
-VARDEF bool _network_advertise;  ///< is the server advertising to the master server?
+extern bool _network_server;     ///< network-server is active
+extern bool _network_available;  ///< is network mode available?
+extern bool _network_dedicated;  ///< are we a dedicated server?
+extern bool _network_advertise;  ///< is the server advertising to the master server?
+extern bool _network_reload_cfg; ///< will we reload the entire config for the next game?
 
 #else /* ENABLE_NETWORK */
 /* Network function stubs when networking is disabled */
@@ -236,7 +31,10 @@
 
 #endif /* ENABLE_NETWORK */
 
-/* This variable must always be registered! */
-VARDEF PlayerID _network_playas; ///< an id to play as.. (see players.h:Players)
+/** What is the revision of OpenTTD. */
+extern const char _openttd_revision[];
+
+/** As which player do we play? */
+extern PlayerID _network_playas;
 
 #endif /* NETWORK_H */
--- a/src/network/network_client.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_client.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,7 +7,6 @@
 #include "../openttd.h"
 #include "network_data.h"
 #include "core/tcp.h"
-#include "table/strings.h"
 #include "network_client.h"
 #include "network_gamelist.h"
 #include "network_gui.h"
@@ -21,6 +20,12 @@
 #include "../strings_func.h"
 #include "../window_func.h"
 #include "../string_func.h"
+#include "../player_func.h"
+#include "../player_base.h"
+#include "../player_gui.h"
+#include "../settings_type.h"
+
+#include "table/strings.h"
 
 // This file handles all the client-commands
 
@@ -52,17 +57,18 @@
 	memset(salted_password, 0, sizeof(salted_password));
 	snprintf(salted_password, sizeof(salted_password), "%s", password);
 	/* Add the game seed and the server's unique ID as the salt. */
-	for (uint i = 0; i < NETWORK_UNIQUE_ID_LENGTH; i++) salted_password[i] ^= _password_server_unique_id[i] ^ (_password_game_seed >> i);
+	for (uint i = 0; i < NETWORK_UNIQUE_ID_LENGTH - 1; i++) salted_password[i] ^= _password_server_unique_id[i] ^ (_password_game_seed >> i);
 
 	Md5 checksum;
 	uint8 digest[16];
 	static char hashed_password[NETWORK_UNIQUE_ID_LENGTH];
 
 	/* Generate the MD5 hash */
-	checksum.Append((const uint8*)salted_password, sizeof(salted_password));
+	checksum.Append((const uint8*)salted_password, sizeof(salted_password) - 1);
 	checksum.Finish(digest);
 
 	for (int di = 0; di < 16; di++) sprintf(hashed_password + di * 2, "%02x", digest[di]);
+	hashed_password[lengthof(hashed_password) - 1] = '\0';
 
 	return hashed_password;
 }
--- a/src/network/network_data.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_data.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,6 +10,8 @@
 #include "../callback_table.h"
 #include "../core/alloc_func.hpp"
 #include "../string_func.h"
+#include "../date_func.h"
+#include "../player_func.h"
 
 // Add a command to the local command queue
 void NetworkAddCommandQueue(NetworkTCPSocketHandler *cs, CommandPacket *cp)
@@ -99,11 +101,7 @@
 		cp->callback = 0;
 	}
 
-#ifdef DEBUG_DUMP_COMMANDS
-	extern Date      _date;
-	extern DateFract _date_fract;
-	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 */
+	DebugDumpCommands("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);
 
 	DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND, cp->my_cmd);
 }
--- a/src/network/network_data.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_data.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,7 @@
 
 #include "../openttd.h"
 #include "network.h"
+#include "network_internal.h"
 
 // Is the network enabled?
 #ifdef ENABLE_NETWORK
--- a/src/network/network_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,9 @@
 #include "../stdafx.h"
 #include "../openttd.h"
 #include "../strings_func.h"
-#include "../table/sprites.h"
 #include "network.h"
 #include "../date_func.h"
-
 #include "../fios.h"
-#include "table/strings.h"
 #include "network_data.h"
 #include "network_client.h"
 #include "network_gui.h"
@@ -27,6 +24,12 @@
 #include "../core/alloc_func.hpp"
 #include "../string_func.h"
 #include "../gfx_func.h"
+#include "../player_func.h"
+#include "../settings_type.h"
+#include "../widgets/dropdown_func.h"
+
+#include "table/strings.h"
+#include "../table/sprites.h"
 
 #define BGC 5
 #define BTC 15
@@ -215,22 +218,21 @@
 /** Enum for NetworkGameWindow, referring to _network_game_window_widgets */
 enum NetworkGameWindowWidgets {
 	NGWW_CLOSE    = 0,  ///< Close 'X' button
-	NGWW_CONN_TXT = 4,  ///< 'Connection' droplist
-	NGWW_CONN_BTN = 5,  ///< 'Connection' droplist button
-	NGWW_PLAYER   = 6,  ///< Panel with editbox to set player name
+	NGWW_CONN_BTN = 4,  ///< 'Connection' droplist button
+	NGWW_PLAYER   = 5,  ///< Panel with editbox to set player name
 
-	NGWW_NAME     = 7,  ///< 'Name' button
+	NGWW_NAME     = 6,  ///< 'Name' button
 	NGWW_CLIENTS,       ///< 'Clients' button
 	NGWW_INFO,          ///< Third button in the game list panel
 
-	NGWW_MATRIX   = 10, ///< Panel with list of games
+	NGWW_MATRIX   = 9,  ///< Panel with list of games
 
-	NGWW_DETAILS  = 12, ///< Panel with game details
-	NGWW_JOIN     = 13, ///< 'Join game' button
-	NGWW_REFRESH  = 14, ///< 'Refresh server' button
-	NGWW_NEWGRF   = 15, ///< 'NewGRF Settings' button
+	NGWW_DETAILS  = 11, ///< Panel with game details
+	NGWW_JOIN     = 12, ///< 'Join game' button
+	NGWW_REFRESH  = 13, ///< 'Refresh server' button
+	NGWW_NEWGRF   = 14, ///< 'NewGRF Settings' button
 
-	NGWW_FIND     = 16, ///< 'Find server' button
+	NGWW_FIND     = 15, ///< 'Find server' button
 	NGWW_ADD,           ///< 'Add server' button
 	NGWW_START,         ///< 'Start server' button
 	NGWW_CANCEL,        ///< 'Cancel' button
@@ -266,7 +268,7 @@
 
 	case WE_PAINT: {
 		const NetworkGameList *sel = nd->server;
-		const char *arrow = (ld->flags & VL_DESC) ? DOWNARROW : UPARROW;
+		const SortButtonState arrow = (ld->flags & VL_DESC) ? SBS_DOWN : SBS_UP;
 
 		if (ld->flags & VL_REBUILD) {
 			BuildNetworkGameList(&WP(w, network_ql_d));
@@ -298,9 +300,9 @@
 
 		/* Sort based on widgets: name, clients, compatibility */
 		switch (ld->sort_type) {
-			case NGWW_NAME    - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_NAME].right    - 10, 42, TC_BLACK); break;
-			case NGWW_CLIENTS - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_CLIENTS].right - 10, 42, TC_BLACK); break;
-			case NGWW_INFO    - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_INFO].right    - 10, 42, TC_BLACK); break;
+			case NGWW_NAME    - NGWW_NAME: DrawSortButtonState(w, NGWW_NAME,    arrow); break;
+			case NGWW_CLIENTS - NGWW_NAME: DrawSortButtonState(w, NGWW_CLIENTS, arrow); break;
+			case NGWW_INFO    - NGWW_NAME: DrawSortButtonState(w, NGWW_INFO,    arrow); break;
 		}
 
 		{ // draw list of games
@@ -426,7 +428,7 @@
 		case NGWW_CANCEL: // Cancel button
 			DeleteWindowById(WC_NETWORK_WINDOW, 0);
 			break;
-		case NGWW_CONN_TXT: case NGWW_CONN_BTN: // 'Connection' droplist
+		case NGWW_CONN_BTN: // 'Connection' droplist
 			ShowDropDownMenu(w, _lan_internet_types_dropdown, _network_lan_internet, NGWW_CONN_BTN, 0, 0); // do it for widget NSSW_CONN_BTN
 			break;
 		case NGWW_NAME: // Sort by name
@@ -569,8 +571,7 @@
 {      WWT_PANEL,   RESIZE_RB,     BGC,     0,   449,    14,   263, 0x0,                            STR_NULL},
 
 {       WWT_TEXT,   RESIZE_NONE,   BGC,     9,    85,    23,    35, STR_NETWORK_CONNECTION,         STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,   BGC,    90,   181,    22,    33, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP},       // NGWW_CONN_TXT
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   170,   180,    23,    32, STR_0225,                       STR_NETWORK_CONNECTION_TIP},       // NGWW_CONN_BTN
+{ WWT_DROPDOWNIN,   RESIZE_NONE,   BGC,    90,   181,    22,    33, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP},       // NGWW_CONN_BTN
 
 {      WWT_PANEL,   RESIZE_LR,     BGC,   290,   440,    22,    33, 0x0,                            STR_NETWORK_ENTER_NAME_TIP},       // NGWW_PLAYER
 
@@ -652,22 +653,20 @@
 	NSSW_GAMENAME        =  4,   ///< Background for editbox to set game name
 	NSSW_SETPWD          =  5,   ///< 'Set password' button
 	NSSW_SELMAP          =  7,   ///< 'Select map' list
-	NSSW_CONNTYPE_TXT    = 10,   ///< 'Connection type' droplist
-	NSSW_CONNTYPE_BTN    = 11,   ///< 'Connection type' droplist button
-	NSSW_CLIENTS_BTND    = 13,   ///< 'Max clients' downarrow
-	NSSW_CLIENTS_TXT     = 14,   ///< 'Max clients' text
-	NSSW_CLIENTS_BTNU    = 15,   ///< 'Max clients' uparrow
-	NSSW_COMPANIES_BTND  = 17,   ///< 'Max companies' downarrow
-	NSSW_COMPANIES_TXT   = 18,   ///< 'Max companies' text
-	NSSW_COMPANIES_BTNU  = 19,   ///< 'Max companies' uparrow
-	NSSW_SPECTATORS_BTND = 21,   ///< 'Max spectators' downarrow
-	NSSW_SPECTATORS_TXT  = 22,   ///< 'Max spectators' text
-	NSSW_SPECTATORS_BTNU = 23,   ///< 'Max spectators' uparrow
-	NSSW_LANGUAGE_TXT    = 25,   ///< 'Language spoken' droplist
-	NSSW_LANGUAGE_BTN    = 26,   ///< 'Language spoken' droplist button
-	NSSW_START           = 27,   ///< 'Start' button
-	NSSW_LOAD            = 28,   ///< 'Load' button
-	NSSW_CANCEL          = 29,   ///< 'Cancel' button
+	NSSW_CONNTYPE_BTN    = 10,   ///< 'Connection type' droplist button
+	NSSW_CLIENTS_BTND    = 12,   ///< 'Max clients' downarrow
+	NSSW_CLIENTS_TXT     = 13,   ///< 'Max clients' text
+	NSSW_CLIENTS_BTNU    = 14,   ///< 'Max clients' uparrow
+	NSSW_COMPANIES_BTND  = 16,   ///< 'Max companies' downarrow
+	NSSW_COMPANIES_TXT   = 17,   ///< 'Max companies' text
+	NSSW_COMPANIES_BTNU  = 18,   ///< 'Max companies' uparrow
+	NSSW_SPECTATORS_BTND = 20,   ///< 'Max spectators' downarrow
+	NSSW_SPECTATORS_TXT  = 21,   ///< 'Max spectators' text
+	NSSW_SPECTATORS_BTNU = 22,   ///< 'Max spectators' uparrow
+	NSSW_LANGUAGE_BTN    = 24,   ///< 'Language spoken' droplist button
+	NSSW_START           = 25,   ///< 'Start' button
+	NSSW_LOAD            = 26,   ///< 'Load' button
+	NSSW_CANCEL          = 27,   ///< 'Cancel' button
 };
 
 /**
@@ -750,7 +749,7 @@
 			nd->map = (y == 0) ? NULL : _fios_list + y - 1;
 			SetWindowDirty(w);
 			} break;
-		case NSSW_CONNTYPE_TXT: case NSSW_CONNTYPE_BTN: // Connection type
+		case NSSW_CONNTYPE_BTN: // Connection type
 			ShowDropDownMenu(w, _connection_types_dropdown, _network_advertise, NSSW_CONNTYPE_BTN, 0, 0); // do it for widget NSSW_CONNTYPE_BTN
 			break;
 		case NSSW_CLIENTS_BTND:    case NSSW_CLIENTS_BTNU:    // Click on up/down button for number of clients
@@ -790,7 +789,7 @@
 			SetDParam(0, _network_game_info.spectators_max);
 			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_SPECTATORS, 3, 50, w, CS_NUMERAL);
 			break;
-		case NSSW_LANGUAGE_TXT: case NSSW_LANGUAGE_BTN: { // Language
+		case NSSW_LANGUAGE_BTN: { // Language
 			uint sel = 0;
 			for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) {
 				if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _network_game_info.server_lang) {
@@ -896,8 +895,7 @@
 
 /* Combo/selection boxes to control Connection Type / Max Clients / Max Companies / Max Observers / Language */
 {       WWT_TEXT,   RESIZE_NONE,   BGC,   280,   419,    63,    75, STR_NETWORK_CONNECTION,           STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,    77,    88, STR_NETWORK_LAN_INTERNET_COMBO,   STR_NETWORK_CONNECTION_TIP},           // NSSW_CONNTYPE_TXT
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,    78,    87, STR_0225,                         STR_NETWORK_CONNECTION_TIP},           // NSSW_CONNTYPE_BTN
+{ WWT_DROPDOWNIN,   RESIZE_NONE,   BGC,   280,   410,    77,    88, STR_NETWORK_LAN_INTERNET_COMBO,   STR_NETWORK_CONNECTION_TIP},           // NSSW_CONNTYPE_BTN
 
 {       WWT_TEXT,   RESIZE_NONE,   BGC,   280,   419,    95,   107, STR_NETWORK_NUMBER_OF_CLIENTS,    STR_NULL},
 {     WWT_IMGBTN,   RESIZE_NONE,   BGC,   280,   291,   109,   120, SPR_ARROW_DOWN,                   STR_NETWORK_NUMBER_OF_CLIENTS_TIP},    // NSSW_CLIENTS_BTND
@@ -915,8 +913,7 @@
 {     WWT_IMGBTN,   RESIZE_NONE,   BGC,   398,   410,   173,   184, SPR_ARROW_UP,                     STR_NETWORK_NUMBER_OF_SPECTATORS_TIP}, // NSSW_SPECTATORS_BTNU
 
 {       WWT_TEXT,   RESIZE_NONE,   BGC,   280,   419,   191,   203, STR_NETWORK_LANGUAGE_SPOKEN,      STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,   BGC,   280,   410,   205,   216, STR_NETWORK_LANGUAGE_COMBO,       STR_NETWORK_LANGUAGE_TIP},             // NSSW_LANGUAGE_TXT
-{    WWT_TEXTBTN,   RESIZE_NONE,   BGC,   399,   409,   206,   215, STR_0225,                         STR_NETWORK_LANGUAGE_TIP},             // NSSW_LANGUAGE_BTN
+{ WWT_DROPDOWNIN,   RESIZE_NONE,   BGC,   280,   410,   205,   216, STR_NETWORK_LANGUAGE_COMBO,       STR_NETWORK_LANGUAGE_TIP},             // NSSW_LANGUAGE_BTN
 
 /* Buttons Start / Load / Cancel */
 { WWT_PUSHTXTBTN,   RESIZE_NONE,   BTC,    40,   140,   224,   235, STR_NETWORK_START_GAME,           STR_NETWORK_START_GAME_TIP},           // NSSW_START
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/network/network_internal.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,208 @@
+/* $Id$ */
+
+#ifndef NETWORK_INTERNAL_H
+#define NETWORK_INTERNAL_H
+
+#ifdef ENABLE_NETWORK
+
+#include "../player_type.h"
+#include "../economy_type.h"
+#include "core/config.h"
+#include "core/game.h"
+
+// If this line is enable, every frame will have a sync test
+//  this is not needed in normal games. Normal is like 1 sync in 100
+//  frames. You can enable this if you have a lot of desyncs on a certain
+//  game.
+// Remember: both client and server have to be compiled with this
+//  option enabled to make it to work. If one of the two has it disabled
+//  nothing will happen.
+//#define ENABLE_NETWORK_SYNC_EVERY_FRAME
+
+// 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
+
+// How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
+//  players that can really play.. so.. a max of 4 spectators.. gives us..
+//  MAX_PLAYERS + 3
+#define MAX_CLIENTS (MAX_PLAYERS + 3)
+
+
+// Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1
+#define MAX_CLIENT_INFO (MAX_CLIENTS + 1)
+
+#define MAX_INTERFACES 9
+
+
+// How many vehicle/station types we put over the network
+#define NETWORK_VEHICLE_TYPES 5
+#define NETWORK_STATION_TYPES 5
+
+struct NetworkPlayerInfo {
+	char company_name[NETWORK_NAME_LENGTH];         // Company name
+	char password[NETWORK_PASSWORD_LENGTH];         // The password for the player
+	Year inaugurated_year;                          // What year the company started in
+	Money company_value;                            // The company value
+	Money money;                                    // The amount of money the company has
+	Money income;                                   // How much did the company earned last year
+	uint16 performance;                             // What was his performance last month?
+	bool use_password;                              // Is there a password
+	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      // How many vehicles are there of this type?
+	uint16 num_station[NETWORK_STATION_TYPES];      // How many stations are there of this type?
+	char players[NETWORK_PLAYERS_LENGTH];           // The players that control this company (Name1, name2, ..)
+	uint16 months_empty;                            // How many months the company is empty
+};
+
+struct NetworkClientInfo {
+	uint16 client_index;                            // Index of the client (same as ClientState->index)
+	char client_name[NETWORK_CLIENT_NAME_LENGTH];   // Name of the client
+	byte client_lang;                               // The language of the client
+	PlayerID client_playas;                         // As which player is this client playing (PlayerID)
+	uint32 client_ip;                               // IP-address of the client (so he can be banned)
+	Date join_date;                                 // Gamedate the player has joined
+	char unique_id[NETWORK_UNIQUE_ID_LENGTH];       // Every play sends an unique id so we can indentify him
+};
+
+enum NetworkJoinStatus {
+	NETWORK_JOIN_STATUS_CONNECTING,
+	NETWORK_JOIN_STATUS_AUTHORIZING,
+	NETWORK_JOIN_STATUS_WAITING,
+	NETWORK_JOIN_STATUS_DOWNLOADING,
+	NETWORK_JOIN_STATUS_PROCESSING,
+	NETWORK_JOIN_STATUS_REGISTERING,
+
+	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
+};
+
+/* Language ids for server_lang and client_lang. Do NOT modify the order. */
+enum NetworkLanguage {
+	NETLANG_ANY = 0,
+	NETLANG_ENGLISH,
+	NETLANG_GERMAN,
+	NETLANG_FRENCH,
+	NETLANG_BRAZILIAN,
+	NETLANG_BULGARIAN,
+	NETLANG_CHINESE,
+	NETLANG_CZECH,
+	NETLANG_DANISH,
+	NETLANG_DUTCH,
+	NETLANG_ESPERANTO,
+	NETLANG_FINNISH,
+	NETLANG_HUNGARIAN,
+	NETLANG_ICELANDIC,
+	NETLANG_ITALIAN,
+	NETLANG_JAPANESE,
+	NETLANG_KOREAN,
+	NETLANG_LITHUANIAN,
+	NETLANG_NORWEGIAN,
+	NETLANG_POLISH,
+	NETLANG_PORTUGUESE,
+	NETLANG_ROMANIAN,
+	NETLANG_RUSSIAN,
+	NETLANG_SLOVAK,
+	NETLANG_SLOVENIAN,
+	NETLANG_SPANISH,
+	NETLANG_SWEDISH,
+	NETLANG_TURKISH,
+	NETLANG_UKRAINIAN,
+	NETLANG_COUNT
+};
+
+VARDEF NetworkGameInfo _network_game_info;
+VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
+VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
+
+VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
+VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
+
+VARDEF uint16 _network_own_client_index;
+VARDEF char _network_unique_id[NETWORK_UNIQUE_ID_LENGTH]; // Our own unique ID
+
+VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
+VARDEF uint32 _frame_counter_max; // To where we may go with our clients
+
+VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a sync packet was sent to clients.
+
+// networking settings
+VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1];
+
+VARDEF uint16 _network_server_port;
+/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
+    bind_ip_host, and bind_ip the numeric value, because we want a nice number
+    in the openttd.cfg, but we wants to use the uint32 internally.. */
+VARDEF uint32 _network_server_bind_ip;
+VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
+VARDEF bool _is_network_server; // Does this client wants to be a network-server?
+VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
+VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH];
+VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH];
+VARDEF char _network_default_company_pass[NETWORK_PASSWORD_LENGTH];
+
+VARDEF uint16 _network_max_join_time;             ///< Time a client can max take to join
+VARDEF bool _network_pause_on_join;               ///< Pause the game when a client tries to join (more chance of succeeding join)
+
+VARDEF uint16 _redirect_console_to_client;
+
+VARDEF uint16 _network_sync_freq;
+VARDEF uint8 _network_frame_freq;
+
+VARDEF uint32 _sync_seed_1, _sync_seed_2;
+VARDEF uint32 _sync_frame;
+VARDEF bool _network_first_time;
+// Vars needed for the join-GUI
+VARDEF NetworkJoinStatus _network_join_status;
+VARDEF uint8 _network_join_waiting;
+VARDEF uint16 _network_join_kbytes;
+VARDEF uint16 _network_join_kbytes_total;
+
+VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH];
+VARDEF short _network_last_port;
+VARDEF uint32 _network_last_host_ip;
+VARDEF uint8 _network_reconnect;
+
+VARDEF bool _network_udp_server;
+VARDEF uint16 _network_udp_broadcast;
+
+VARDEF byte _network_lan_internet;
+
+VARDEF bool _network_need_advertise;
+VARDEF uint32 _network_last_advertise_frame;
+VARDEF uint8 _network_advertise_retries;
+
+VARDEF bool _network_autoclean_companies;
+VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months
+VARDEF uint8 _network_autoclean_protected;   // Unprotect a company after X months
+
+VARDEF Year _network_restart_game_year;      // If this year is reached, the server automaticly restarts
+VARDEF uint8 _network_min_players;           // Minimum number of players for game to unpause
+
+void NetworkTCPQueryServer(const char* host, unsigned short port);
+
+byte NetworkSpectatorCount();
+
+VARDEF char *_network_host_list[10];
+VARDEF char *_network_ban_list[25];
+
+void ParseConnectionString(const char **player, const char **port, char *connection_string);
+void NetworkUpdateClientInfo(uint16 client_index);
+void NetworkAddServer(const char *b);
+void NetworkRebuildHostList();
+bool NetworkChangeCompanyPassword(byte argc, char *argv[]);
+void NetworkPopulateCompanyInfo();
+void UpdateNetworkGameWindow(bool unselect);
+void CheckMinPlayers();
+void NetworkStartDebugLog(const char *hostname, uint16 port);
+
+void NetworkUDPCloseAll();
+void NetworkGameLoop();
+void NetworkUDPGameLoop();
+bool NetworkServerStart();
+bool NetworkClientConnectGame(const char *host, uint16 port);
+void NetworkReboot();
+void NetworkDisconnect();
+
+bool IsNetworkCompatibleVersion(const char *version);
+
+#endif /* ENABLE_NETWORK */
+#endif /* NETWORK_INTERNAL_H */
--- a/src/network/network_server.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_server.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,10 +8,9 @@
 #include "../strings_func.h"
 #include "network_data.h"
 #include "core/tcp.h"
-#include "../train.h"
-#include "../aircraft.h"
+#include "../vehicle_base.h"
+#include "../vehicle_func.h"
 #include "../date_func.h"
-#include "table/strings.h"
 #include "network_server.h"
 #include "network_udp.h"
 #include "../console.h"
@@ -23,6 +22,12 @@
 #include "../core/alloc_func.hpp"
 #include "../fileio.h"
 #include "../string_func.h"
+#include "../player_base.h"
+#include "../player_func.h"
+#include "../player_gui.h"
+#include "../settings_type.h"
+
+#include "table/strings.h"
 
 // This file handles all the server-commands
 
@@ -1296,31 +1301,16 @@
 
 	// Go through all vehicles and count the type of vehicles
 	FOR_ALL_VEHICLES(v) {
-		if (!IsValidPlayer(v->owner)) continue;
-
+		if (!IsValidPlayer(v->owner) || !v->IsPrimaryVehicle()) continue;
+		byte type = 0;
 		switch (v->type) {
-			case VEH_TRAIN:
-				if (IsFrontEngine(v)) _network_player_info[v->owner].num_vehicle[0]++;
-				break;
-
-			case VEH_ROAD:
-				if (v->cargo_type != CT_PASSENGERS) {
-					_network_player_info[v->owner].num_vehicle[1]++;
-				} else {
-					_network_player_info[v->owner].num_vehicle[2]++;
-				}
-				break;
-
-			case VEH_AIRCRAFT:
-				if (IsNormalAircraft(v)) _network_player_info[v->owner].num_vehicle[3]++;
-				break;
-
-			case VEH_SHIP:
-				_network_player_info[v->owner].num_vehicle[4]++;
-				break;
-
-			default: break;
+			case VEH_TRAIN: type = 0; break;
+			case VEH_ROAD: type = (v->cargo_type != CT_PASSENGERS) ? 1 : 2; break;
+			case VEH_AIRCRAFT: type = 3; break;
+			case VEH_SHIP: type = 4; break;
+			default: continue;
 		}
+		_network_player_info[v->owner].num_vehicle[type]++;
 	}
 
 	// Go through all stations and count the types of stations
--- a/src/network/network_udp.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/network/network_udp.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -20,6 +20,9 @@
 #include "../newgrf_config.h"
 #include "../core/endian_func.hpp"
 #include "../string_func.h"
+#include "../player_base.h"
+#include "../player_func.h"
+#include "../settings_type.h"
 
 #include "core/udp.h"
 
--- a/src/newgrf.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -15,12 +15,10 @@
 #include "sprite.h"
 #include "newgrf.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "bridge.h"
 #include "town.h"
 #include "newgrf_engine.h"
 #include "newgrf_text.h"
-#include "table/sprites.h"
 #include "fontcache.h"
 #include "currency.h"
 #include "landscape.h"
@@ -28,15 +26,12 @@
 #include "newgrf_house.h"
 #include "newgrf_sound.h"
 #include "newgrf_spritegroup.h"
-#include "table/town_land.h"
 #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"
-#include "table/landscape_sprite.h"
 #include "gfxinit.h"
 #include "fios.h"
 #include "rail.h"
@@ -46,6 +41,16 @@
 #include "vehicle_func.h"
 #include "sound_func.h"
 #include "string_func.h"
+#include "road_func.h"
+#include "player_base.h"
+#include "settings_type.h"
+#include "map_func.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/town_land.h"
+#include "table/build_industry.h"
+#include "table/landscape_sprite.h"
 
 /* TTDPatch extended GRF format codec
  * (c) Petr Baudis 2004 (GPL'd)
@@ -343,10 +348,9 @@
 			} break;
 
 			case 0x08: // AI passenger service
-				/** @todo Tells the AI that this engine is designed for
+				/* Tells the AI that this engine is designed for
 				 * passenger services and shouldn't be used for freight. */
-				grf_load_byte(&buf);
-				ret = true;
+				rvi->ai_passenger_only = grf_load_byte(&buf);
 				break;
 
 			case 0x09: { // Speed (1 unit is 1 kmh)
@@ -1130,6 +1134,38 @@
 	return ret;
 }
 
+static bool CanalChangeInfo(uint id, int numinfo, int prop, byte **bufp, int len)
+{
+	byte *buf = *bufp;
+	bool ret = false;
+
+	if (id + numinfo > CF_END) {
+		grfmsg(1, "CanalChangeInfo: Canal feature %u is invalid, max %u, ignoreing", id + numinfo, CF_END);
+		return false;
+	}
+
+	for (int i = 0; i < numinfo; i++) {
+		WaterFeature *wf = &_water_feature[id + i];
+
+		switch (prop) {
+			case 0x08:
+				wf->callbackmask = grf_load_byte(&buf);
+				break;
+
+			case 0x09:
+				wf->flags = grf_load_byte(&buf);
+				break;
+
+			default:
+				ret = true;
+				break;
+		}
+	}
+
+	*bufp = buf;
+	return ret;
+}
+
 static bool BridgeChangeInfo(uint brid, int numinfo, int prop, byte **bufp, int len)
 {
 	byte *buf = *bufp;
@@ -1339,7 +1375,7 @@
 				break;
 
 			case 0x12: // Building name ID
-				housespec->building_name = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				housespec->building_name = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x13: // Building availability mask
@@ -1592,25 +1628,25 @@
 				break;
 
 			case 0x09: /* String ID for cargo type name */
-				cs->name = grf_load_word(&buf);
+				cs->name = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0A: /* String for 1 unit of cargo */
-				cs->name_single = grf_load_word(&buf);
+				cs->name_single = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0B:
 				/* String for units of cargo. This is different in OpenTTD to TTDPatch
 				 * (e.g. 10 tonnes of coal) */
-				cs->units_volume = grf_load_word(&buf);
+				cs->units_volume = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0C: /* String for quantity of cargo (e.g. 10 tonnes of coal) */
-				cs->quantifier = grf_load_word(&buf);
+				cs->quantifier = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0D: /* String for two letter cargo abbreviation */
-				cs->abbrev = grf_load_word(&buf);
+				cs->abbrev = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0E: /* Sprite ID for cargo icon */
@@ -1994,15 +2030,15 @@
 				break;
 
 			case 0x0C: // Industry closure message
-				indsp->closure_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				indsp->closure_text = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0D: // Production increase message
-				indsp->production_up_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				indsp->production_up_text = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0E: // Production decrease message
-				indsp->production_down_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				indsp->production_down_text = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x0F: // Fund cost multiplier
@@ -2061,7 +2097,7 @@
 				break;
 
 			case 0x1B: // New industry text ID
-				indsp->new_industry_text = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				indsp->new_industry_text = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x1C: // Input cargo multipliers for the three input cargo types
@@ -2073,7 +2109,7 @@
 				} break;
 
 			case 0x1F: // Industry name
-				indsp->name = MapGRFStringID(_cur_grffile->grfid, grf_load_word(&buf));
+				indsp->name = GRFMappedStringID(grf_load_word(&buf), _cur_grffile->grfid);
 				break;
 
 			case 0x20: // Prospecting success chance
@@ -2090,6 +2126,10 @@
 				indsp->removal_cost_multiplier = grf_load_dword(&buf);
 				break;
 
+			case 0x24: // name for nearby station
+				indsp->station_name = GRFMappedStringID(grf_load_dword(&buf), _cur_grffile->grfid);
+				break;
+
 			default:
 				ret = true;
 				break;
@@ -2124,7 +2164,7 @@
 		/* GSF_SHIP */         ShipVehicleChangeInfo,
 		/* GSF_AIRCRAFT */     AircraftVehicleChangeInfo,
 		/* GSF_STATION */      StationChangeInfo,
-		/* GSF_CANAL */        NULL,
+		/* GSF_CANAL */        CanalChangeInfo,
 		/* GSF_BRIDGE */       BridgeChangeInfo,
 		/* GSF_TOWNHOUSE */    TownHouseChangeInfo,
 		/* GSF_GLOBALVAR */    NULL, /* Global variables are handled during reservation */
@@ -2344,7 +2384,7 @@
 		_cur_spriteid, feature, num_sets, num_ents, num_sets * num_ents
 	);
 
-	for (uint16 i = 0; i < num_sets * num_ents; i++) {
+	for (int i = 0; i < num_sets * num_ents; i++) {
 		_nfo_line++;
 		LoadNextSprite(_cur_spriteid++, _file_index, _nfo_line);
 	}
@@ -2842,14 +2882,7 @@
 			}
 
 			if (wagover) {
-				/* If the ID for this action 3 is the same as the vehicle ID,
- * this indicates we have a helicopter rotor override. */
-				if (feature == GSF_AIRCRAFT && engine == last_engines[i]) {
-					SetRotorOverrideSprites(engine, _cur_grffile->spritegroups[groupid]);
-				} else {
-					/* TODO: No multiple cargo types per vehicle yet. --pasky */
-					SetWagonOverrideSprites(engine, CT_DEFAULT, _cur_grffile->spritegroups[groupid], last_engines, last_engines_count);
-				}
+				SetWagonOverrideSprites(engine, CT_DEFAULT, _cur_grffile->spritegroups[groupid], last_engines, last_engines_count);
 			} else {
 				SetCustomEngineSprites(engine, CT_DEFAULT, _cur_grffile->spritegroups[groupid]);
 				SetEngineGRF(engine, _cur_grffile);
@@ -2879,7 +2912,7 @@
 			continue;
 		}
 
-		_canal_sg[cf] = _cur_grffile->spritegroups[groupid];
+		_water_feature[cf].group = _cur_grffile->spritegroups[groupid];
 	}
 }
 
@@ -3175,7 +3208,8 @@
 			case GSF_AIRCRAFT:
 				if (id < TOTAL_NUM_ENGINES) {
 					StringID string = AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, STR_8000_KIRBY_PAUL_TANK_STEAM + id);
-					SetCustomEngineName(id, string);
+					EngineInfo *ei = &_engine_info[id];
+					ei->string_id = string;
 				} else {
 					AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, id);
 				}
@@ -3210,7 +3244,7 @@
 						if (_cur_grffile->housespec == NULL || _cur_grffile->housespec[GB(id, 0, 8)] == NULL) {
 							grfmsg(1, "FeatureNewName: Attempt to name undefined house 0x%X, ignoring.", GB(id, 0, 8));
 						} else {
-							_cur_grffile->housespec[GB(id, 0, 8)]->building_name = AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, STR_UNDEFINED);
+							_cur_grffile->housespec[GB(id, 0, 8)]->building_name = GRFMappedStringID(AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, STR_UNDEFINED), 0);
 						}
 						break;
 
@@ -3272,25 +3306,6 @@
 	return 0;
 }
 
-/** Allows to reposition the loaded sprite to its correct placment.
- * @param load_index SpriteID of the sprite to be relocated */
-static inline void TranslateShoreSprites(SpriteID load_index)
-{
-	/** Contains the displacement required for the corresponding initial sprite*/
-	static const SpriteID shore_dup[8] = {
-		SPR_SHORE_BASE +  4,  ///< 4062
-		SPR_SHORE_BASE +  1,  ///< 4063
-		SPR_SHORE_BASE +  2,  ///< 4064
-		SPR_SHORE_BASE +  8,  ///< 4065
-		SPR_SHORE_BASE +  6,  ///< 4066
-		SPR_SHORE_BASE + 12,  ///< 4067
-		SPR_SHORE_BASE +  3,  ///< 4068
-		SPR_SHORE_BASE +  9,  ///< 4069
-	};
-
-	DupSprite(load_index, shore_dup[load_index - SPR_ORIGINALSHORE_START]);
-}
-
 /* Action 0x05 */
 static void GraphicsNew(byte *buf, int len)
 {
@@ -3301,179 +3316,107 @@
 	 * V other data    Graphics type specific data.  Currently unused. */
 	/* TODO */
 
-	SpriteID replace = 0;
+	enum Action5BlockType {
+		A5BLOCK_FIXED,                ///< Only allow replacing a whole block of sprites. (TTDP compatible)
+		A5BLOCK_ALLOW_OFFSET,         ///< Allow replacing any subset by specifiing an offset.
+		A5BLOCK_INVALID,              ///< unknown/not-implemented type
+	};
+	struct Action5Type {
+		Action5BlockType block_type;  ///< How is this Action5 type processed?
+		SpriteID sprite_base;         ///< Load the sprites starting from this sprite.
+		uint16 min_sprites;           ///< If the Action5 contains less sprites, the whole block will be ignored.
+		uint16 max_sprites;           ///< If the Action5 contains more sprites, only the first max_sprites sprites will be used.
+		const char *name;             ///< Name for error messages.
+	};
+
+	static const Action5Type action5_types[] = {
+		/* Note: min_sprites should not be changed. Therefore these constants are directly here and not in sprites.h */
+		/* 0x00 */ { A5BLOCK_INVALID,      0,                   0, 0,                                           "Type 0x00"             },
+		/* 0x01 */ { A5BLOCK_INVALID,      0,                   0, 0,                                           "Type 0x01"             },
+		/* 0x02 */ { A5BLOCK_INVALID,      0,                   0, 0,                                           "Type 0x02"             },
+		/* 0x03 */ { A5BLOCK_INVALID,      0,                   0, 0,                                           "Type 0x03"             },
+		/* 0x04 */ { A5BLOCK_FIXED,        SPR_SIGNALS_BASE,   48, PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT,    "Signal graphics"       },
+		/* 0x05 */ { A5BLOCK_FIXED,        SPR_ELRAIL_BASE,    48, ELRAIL_SPRITE_COUNT,                         "Catenary graphics"     },
+		/* 0x06 */ { A5BLOCK_FIXED,        SPR_SLOPES_BASE,    74, NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT, "Foundation graphics"   },
+		/* 0x07 */ { A5BLOCK_INVALID,      0,                  75, 0,                                           "TTDP GUI graphics"     }, // Not used by OTTD.
+		/* 0x08 */ { A5BLOCK_FIXED,        SPR_CANALS_BASE,    65, CANALS_SPRITE_COUNT,                         "Canal graphics"        },
+		/* 0x09 */ { A5BLOCK_FIXED,        SPR_ONEWAY_BASE,     6, ONEWAY_SPRITE_COUNT,                         "One way road graphics" },
+		/* 0x0A */ { A5BLOCK_FIXED,        SPR_2CCMAP_BASE,   256, TWOCCMAP_SPRITE_COUNT,                       "2CC colour maps"       },
+		/* 0x0B */ { A5BLOCK_FIXED,        SPR_TRAMWAY_BASE,  113, TRAMWAY_SPRITE_COUNT,                        "Tramway graphics"      },
+		/* 0x0C */ { A5BLOCK_INVALID,      0,                 133, 0,                                           "Snowy temperate tree"  }, // Not yet used by OTTD.
+		/* 0x0D */ { A5BLOCK_FIXED,        SPR_SHORE_BASE,     16, SPR_SHORE_SPRITE_COUNT,                      "Shore graphics"        },
+		/* 0x0E */ { A5BLOCK_INVALID,      0,                   0, 0,                                           "New Signals graphics"  }, // Not yet used by OTTD.
+		/* 0x0F */ { A5BLOCK_INVALID,      0,                  12, 0,                                           "Sloped rail track"     }, // Not yet used by OTTD.
+		/* 0x10 */ { A5BLOCK_FIXED,        SPR_AIRPORTX_BASE,  15, AIRPORTX_SPRITE_COUNT,                       "Airport graphics"      },
+		/* 0x11 */ { A5BLOCK_FIXED,        SPR_ROADSTOP_BASE,   8, ROADSTOP_SPRITE_COUNT,                       "Road stop graphics"    },
+		/* 0x12 */ { A5BLOCK_INVALID,      0,                   8, 0,                                           "Aqueduct graphics"     }, // Not yet used by OTTD.
+		/* 0x13 */ { A5BLOCK_FIXED,        SPR_AUTORAIL_BASE,  55, AUTORAIL_SPRITE_COUNT,                       "Autorail graphics"     },
+		/* 0x14 */ { A5BLOCK_ALLOW_OFFSET, SPR_FLAGS_BASE,      1, FLAGS_SPRITE_COUNT,                          "Flag graphics"         },
+		/* 0x15 */ { A5BLOCK_ALLOW_OFFSET, SPR_OPENTTD_BASE,    1, OPENTTD_SPRITE_COUNT,                        "OpenTTD GUI graphics"  },
+	};
 
 	if (!check_length(len, 2, "GraphicsNew")) return;
 	buf++;
 	uint8 type = grf_load_byte(&buf);
 	uint16 num = grf_load_extended(&buf);
-	uint16 skip_num = 0;
 	uint16 offset = HasBit(type, 7) ? grf_load_extended(&buf) : 0;
 	ClrBit(type, 7); // Clear the high bit as that only indicates whether there is an offset.
 
-	switch (type) {
-		case 0x04: // Signal graphics
-			if (num != PRESIGNAL_SPRITE_COUNT && num != PRESIGNAL_AND_SEMAPHORE_SPRITE_COUNT && num != PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Signal graphics sprite count must be 48, 112 or 240, skipping");
-				return;
-			}
-			replace = SPR_SIGNALS_BASE;
-			break;
-
-		case 0x05: // Catenary graphics
-			if (num != ELRAIL_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Catenary graphics sprite count must be 48, skipping");
-				return;
-			}
-			replace = SPR_ELRAIL_BASE;
-			break;
-
-		case 0x06: // Foundations
-			if (num != NORMAL_FOUNDATION_SPRITE_COUNT && num != NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Foundation graphics sprite count must be 74 or 90, skipping");
-				return;
-			}
-			replace = SPR_SLOPES_BASE; break;
-			break;
-
-		/* case 0x07: // TTDP GUI sprites. Not used by OTTD. */
-
-		case 0x08: // Canal graphics
-			if (num != CANALS_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Canal graphics sprite count must be 65, skipping");
-				return;
-			}
-			replace = SPR_CANALS_BASE;
-			break;
-
-		case 0x09: // One way graphics
-			if (num != ONEWAY_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: One way road graphics sprite count must be 6, skipping");
-				return;
-			}
-			replace = SPR_ONEWAY_BASE;
-			break;
-
-		case 0x0A: // 2CC colour maps
-			if (num != TWOCCMAP_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: 2CC colour maps sprite count must be 256, skipping");
-				return;
-			}
-			replace = SPR_2CCMAP_BASE;
-			break;
-
-		case 0x0B: // tramways
-			if (num != TRAMWAY_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Tramway graphics sprite count must be 113, skipping");
-				return;
-			}
-			replace = SPR_TRAMWAY_BASE;
-			break;
-
-		/* case 0x0C: // Snowy temperate trees. Not yet used by OTTD. */
-
-		case 0x0D: // Coast graphics
-			switch (num) {
-				case 10:
-					if (!_cur_grffile->is_ottdfile) {
-						grfmsg(2, "GraphicsNew: feature is reserved only for OpenTTD, skipping");
-						return;
-					}
-
-					/* openttd(d/w).grf missing shore sprites and initialisation of SPR_SHORE_BASE */
-					LoadNextSprite(      SPR_SHORE_BASE +  0, _file_index, _nfo_line++); // SLOPE_STEEP_S
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 1); // SLOPE_W
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 2); // SLOPE_S
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 6); // SLOPE_SW
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START); // SLOPE_E
-					LoadNextSprite(      SPR_SHORE_BASE +  5, _file_index, _nfo_line++); // SLOPE_STEEP_W
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 4); // SLOPE_SE
-					LoadNextSprite(      SPR_SHORE_BASE +  7, _file_index, _nfo_line++); // SLOPE_WSE
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 3); // SLOPE_N
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 7); // SLOPE_NW
-					LoadNextSprite(      SPR_SHORE_BASE + 10, _file_index, _nfo_line++); // SLOPE_STEEP_N
-					LoadNextSprite(      SPR_SHORE_BASE + 11, _file_index, _nfo_line++); // SLOPE_NWS
-					TranslateShoreSprites(SPR_ORIGINALSHORE_START + 5); // SLOPE_NE
-					LoadNextSprite(      SPR_SHORE_BASE + 13, _file_index, _nfo_line++); // SLOPE_ENW
-					LoadNextSprite(      SPR_SHORE_BASE + 14, _file_index, _nfo_line++); // SLOPE_SEN
-					LoadNextSprite(      SPR_SHORE_BASE + 15, _file_index, _nfo_line++); // SLOPE_STEEP_E
-					LoadNextSprite(      SPR_SHORE_BASE + 16, _file_index, _nfo_line++); // SLOPE_EW
-					LoadNextSprite(      SPR_SHORE_BASE + 17, _file_index, _nfo_line++); // SLOPE_NS
-
-					grfmsg(2, "GraphicsNew: Loading all standard shore sprites");
-					break;
-
-				case 16:
-				case 18:
-					/* 'normal' newWater newGRF */
-					replace = SPR_SHORE_BASE;
-					break;
-
-				default:
-					/* no valid shore sprite count */
-					grfmsg(1, "GraphicsNew: Shore graphics sprite count must be 10, 16 or 18, skipping");
-					return;
-			}
-			break;
-
-		/* case 0x0E: // New Signals. Not yet used by OTTD. */
-
-		/* case 0x0F: // Tracks for marking sloped rail. Not yet used by OTTD. */
-
-		case 0x10: // New airport sprites
-			if (num != AIRPORTX_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Airport graphics sprite count must be 15, skipping");
-				return;
-			}
-			replace = SPR_AIRPORTX_BASE;
-			break;
-
-		case 0x11: // Road stop sprites
-			if (num != ROADSTOP_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Road stop graphics sprite count must be 8, skipping");
-				return;
-			}
-			replace = SPR_ROADSTOP_BASE;
-			break;
-
-		/* case 0x12: // Aqueduct sprites. Not yet used by OTTD. */
-
-		case 0x13: // Autorail sprites
-			if (num != AUTORAIL_SPRITE_COUNT) {
-				grfmsg(1, "GraphicsNew: Autorail graphics sprite count must be 55, skipping");
-				return;
-			}
-			replace = SPR_AUTORAIL_BASE;
-			break;
-
-		case 0x14: // Flag sprites
-			skip_num = SanitizeSpriteOffset(num, offset, FLAGS_SPRITE_COUNT, "Flag graphics");
-			replace = SPR_FLAGS_BASE + offset;
-			break;
-
-		case 0x15: // OpenTTD GUI sprites
-			skip_num = SanitizeSpriteOffset(num, offset, OPENTTD_SPRITE_COUNT, "OpenTTD graphics");
-			replace = SPR_OPENTTD_BASE + offset;
-			break;
-
-		default:
-			grfmsg(2, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring)",
-					type, num);
-			_skip_sprites = num;
-			return;
+	if ((type == 0x0D) && (num == 10) && _cur_grffile->is_ottdfile) {
+		/* Special not-TTDP-compatible case used in openttd(d/w).grf
+		 * Missing shore sprites and initialisation of SPR_SHORE_BASE */
+		grfmsg(2, "GraphicsNew: Loading 10 missing shore sprites from openttd(d/w).grf.");
+		LoadNextSprite(       SPR_SHORE_BASE          +  0, _file_index, _nfo_line++); // SLOPE_STEEP_S
+		LoadNextSprite(       SPR_SHORE_BASE          +  5, _file_index, _nfo_line++); // SLOPE_STEEP_W
+		LoadNextSprite(       SPR_SHORE_BASE          +  7, _file_index, _nfo_line++); // SLOPE_WSE
+		LoadNextSprite(       SPR_SHORE_BASE          + 10, _file_index, _nfo_line++); // SLOPE_STEEP_N
+		LoadNextSprite(       SPR_SHORE_BASE          + 11, _file_index, _nfo_line++); // SLOPE_NWS
+		LoadNextSprite(       SPR_SHORE_BASE          + 13, _file_index, _nfo_line++); // SLOPE_ENW
+		LoadNextSprite(       SPR_SHORE_BASE          + 14, _file_index, _nfo_line++); // SLOPE_SEN
+		LoadNextSprite(       SPR_SHORE_BASE          + 15, _file_index, _nfo_line++); // SLOPE_STEEP_E
+		LoadNextSprite(       SPR_SHORE_BASE          + 16, _file_index, _nfo_line++); // SLOPE_EW
+		LoadNextSprite(       SPR_SHORE_BASE          + 17, _file_index, _nfo_line++); // SLOPE_NS
+		if (_loaded_newgrf_features.shore == SHORE_REPLACE_NONE) _loaded_newgrf_features.shore = SHORE_REPLACE_ONLY_NEW;
+		return;
 	}
 
-	if (replace == 0) {
-		grfmsg(2, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid);
-	} else {
-		grfmsg(2, "GraphicsNew: Replacing %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, replace);
+	/* Supported type? */
+	if ((type >= lengthof(action5_types)) || (action5_types[type].block_type == A5BLOCK_INVALID)) {
+		grfmsg(2, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring)", type, num);
+		_skip_sprites = num;
+		return;
 	}
 
+	const Action5Type *action5_type = &action5_types[type];
+
+	/* Ignore offset if not allowed */
+	if ((action5_type->block_type != A5BLOCK_ALLOW_OFFSET) && (offset != 0)) {
+		grfmsg(1, "GraphicsNew: %s (type 0x%02X) do not allow an <offset> field. Ignoring offset.", action5_type->name, type);
+		offset = 0;
+	}
+
+	/* Ignore action5 if too few sprites are specified. (for TTDP compatibility)
+	 * This does not make sense, if <offset> is allowed */
+	if ((action5_type->block_type == A5BLOCK_FIXED) && (num < action5_type->min_sprites)) {
+		grfmsg(1, "GraphicsNew: %s (type 0x%02X) count must be at least %d. Only %d were specified. Skipping.", action5_type->name, type, action5_type->min_sprites, num);
+		_skip_sprites = num;
+		return;
+	}
+
+	/* Load at most max_sprites sprites. Skip remaining sprites. (for compatibility with TTDP and future extentions) */
+	uint16 skip_num = SanitizeSpriteOffset(num, offset, action5_type->max_sprites, action5_type->name);
+	SpriteID replace = action5_type->sprite_base + offset;
+
+	/* Load <num> sprites starting from <replace>, then skip <skip_num> sprites. */
+	grfmsg(2, "GraphicsNew: Replacing sprites %d to %d of %s (type 0x%02X) at SpriteID 0x%04X", offset, offset + num - 1, action5_type->name, type, replace);
+
 	for (; num > 0; num--) {
 		_nfo_line++;
 		LoadNextSprite(replace == 0 ? _cur_spriteid++ : replace++, _file_index, _nfo_line);
 	}
 
+	if (type == 0x0D) _loaded_newgrf_features.shore = SHORE_REPLACE_ACTION_5;
+
 	_skip_sprites = skip_num;
 }
 
@@ -3888,9 +3831,11 @@
 			_nfo_line++;
 			LoadNextSprite(load_index, _file_index, _nfo_line); // XXX
 
-			/*  Shore sprites now located at different addresses.
-			 * So apply the required displacements */
-			if (IsInsideMM(load_index, SPR_ORIGINALSHORE_START, SPR_ORIGINALSHORE_END + 1)) TranslateShoreSprites(load_index);
+			/* Shore sprites now located at different addresses.
+			 * So detect when the old ones get replaced. */
+			if (IsInsideMM(load_index, SPR_ORIGINALSHORE_START, SPR_ORIGINALSHORE_END + 1)) {
+				if (_loaded_newgrf_features.shore != SHORE_REPLACE_ACTION_5) _loaded_newgrf_features.shore = SHORE_REPLACE_ACTION_A;
+			}
 		}
 	}
 }
@@ -4062,15 +4007,46 @@
 	switch (param) {
 		/* start year - 1920 */
 		case 0x0B: return max(_patches.starting_year, ORIGINAL_BASE_YEAR) - ORIGINAL_BASE_YEAR;
+
 		/* freight trains weight factor */
 		case 0x0E: return _patches.freight_trains;
+
 		/* empty wagon speed increase */
 		case 0x0F: return 0;
+
 		/* plane speed factor */
 		case 0x10: return 4;
+
 		/* 2CC colormap base sprite */
 		case 0x11: return SPR_2CCMAP_BASE;
 
+		/* map size: format = -MABXYSS
+		 * M  : the type of map
+		 *       bit 0 : set   : squared map. Bit 1 is now not relevant
+		 *               clear : rectangle map. Bit 1 will indicate the bigger edge of the map
+		 *       bit 1 : set   : Y is the bigger edge. Bit 0 is clear
+		 *               clear : X is the bigger edge.
+		 * A  : minimum edge(log2) of the map
+		 * B  : maximum edge(log2) of the map
+		 * XY : edges(log2) of each side of the map.
+		 * SS : combination of both X and Y, thus giving the size(log2) of the map
+		 */
+		case 0x13: {
+			byte map_bits = 0;
+			byte log_X = MapLogX() - 6; // substraction is required to make the minimal size (64) zero based
+			byte log_Y = MapLogY() - 6;
+			byte max_edge = max(log_X, log_Y);
+
+			if (log_X == log_Y) { // we have a squared map, since both edges are identical
+				SetBit(map_bits ,0);
+			} else {
+				if (max_edge == log_Y) SetBit(map_bits, 1); // edge Y been the biggest, mark it
+			}
+
+			return (map_bits << 24) | (min(log_X, log_Y) << 20) | (max_edge << 16) |
+				(log_X << 12) | (log_Y << 8) | (log_X + log_Y);
+		}
+
 		default:
 			grfmsg(2, "ParamSet: Unknown Patch variable 0x%02X.", param);
 			return 0;
@@ -4587,6 +4563,20 @@
 	if (_cur_grffile->sound_offset == 0) _cur_grffile->sound_offset = GetNumSounds();
 }
 
+/* Action 0x11 (SKIP) */
+static void SkipAct11(byte *buf, int len)
+{
+	/* <11> <num>
+	 *
+	 * W num      Number of sound files that follow */
+
+	if (!check_length(len, 1, "SkipAct11")) return;
+	buf++;
+	_skip_sprites = grf_load_word(&buf);
+
+	grfmsg(3, "SkipAct11: Skipping %d sprites", _skip_sprites);
+}
+
 static void ImportGRFSound(byte *buf, int len)
 {
 	const GRFFile *file;
@@ -4731,6 +4721,36 @@
 	}
 }
 
+/* Action 0x12 (SKIP) */
+static void SkipAct12(byte *buf, int len)
+{
+	/* <12> <num_def> <font_size> <num_char> <base_char>
+	 *
+	 * B num_def      Number of definitions
+	 * B font_size    Size of font (0 = normal, 1 = small, 2 = large)
+	 * B num_char     Number of consecutive glyphs
+	 * W base_char    First character index */
+
+	buf++; len--;
+	if (!check_length(len, 1, "SkipAct12")) return;
+	uint8 num_def = grf_load_byte(&buf);
+
+	if (!check_length(len, 1 + num_def * 4, "SkipAct12")) return;
+
+	for (uint i = 0; i < num_def; i++) {
+		/* Ignore 'size' byte */
+		grf_load_byte(&buf);
+
+		/* Sum up number of characters */
+		_skip_sprites += grf_load_byte(&buf);
+
+		/* Ignore 'base_char' word */
+		grf_load_word(&buf);
+	}
+
+	grfmsg(3, "SkipAct12: Skipping %d sprites", _skip_sprites);
+}
+
 /* Action 0x13 */
 static void TranslateGRFStrings(byte *buf, int len)
 {
@@ -5085,9 +5105,7 @@
 
 	/* Unload sprite group data */
 	UnloadWagonOverrides();
-	UnloadRotorOverrideSprites();
 	UnloadCustomEngineSprites();
-	UnloadCustomEngineNames();
 	ResetEngineListOrder();
 
 	/* Reset price base data */
@@ -5108,8 +5126,8 @@
 	ResetStationClasses();
 	ResetCustomStations();
 
-	/* Reset canal sprite groups */
-	memset(_canal_sg, 0, sizeof(_canal_sg));
+	/* Reset canal sprite groups and flags */
+	memset(_water_feature, 0, sizeof(_water_feature));
 
 	/* Reset the snowline table. */
 	ClearSnowLine();
@@ -5134,6 +5152,7 @@
 	_loaded_newgrf_features.has_2CC           = false;
 	_loaded_newgrf_features.has_newhouses     = false;
 	_loaded_newgrf_features.has_newindustries = false;
+	_loaded_newgrf_features.shore             = SHORE_REPLACE_NONE;
 
 	InitializeSoundPool();
 	InitializeSpriteGroupPool();
@@ -5355,6 +5374,7 @@
 		for (int i = 0; i < HOUSE_MAX; i++) {
 			HouseSpec *hs = file->housespec[i];
 			if (hs != NULL) {
+				hs->building_name.MapString();
 				_house_mngr.SetEntitySpec(hs);
 				if (hs->min_date < min_date) min_date = hs->min_date;
 			}
@@ -5385,21 +5405,34 @@
 					/* 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 */
+					indsp->name.MapString();
 					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->name);
 					if (strid != STR_UNDEFINED) indsp->name = strid;
 
+					indsp->closure_text.MapString();
 					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->closure_text);
 					if (strid != STR_UNDEFINED) indsp->closure_text = strid;
 
+					indsp->production_up_text.MapString();
 					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_up_text);
 					if (strid != STR_UNDEFINED) indsp->production_up_text = strid;
 
+					indsp->production_down_text.MapString();
 					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_down_text);
 					if (strid != STR_UNDEFINED) indsp->production_down_text = strid;
 
+					indsp->new_industry_text.MapString();
 					strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text);
 					if (strid != STR_UNDEFINED) indsp->new_industry_text = strid;
 
+					indsp->station_name.MapString();
+					if (indsp->station_name != STR_NULL) {
+						/* STR_NULL (0) can be set by grf.  It has a meaning regarding assignation of the
+						 * station's name. Don't wont to loose the value, therefor, do not process. */
+						strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->station_name);
+						if (strid != STR_UNDEFINED) indsp->station_name = strid;
+					}
+
 					_industry_mngr.SetEntitySpec(indsp);
 					_loaded_newgrf_features.has_newindustries = true;
 				}
@@ -5436,11 +5469,11 @@
 		/* Don't map if the cargo is unavailable or not from NewGRF */
 		if (cs->grfid == 0) continue;
 
-		cs->name         = MapGRFStringID(cs->grfid, cs->name);
-		cs->name_single  = MapGRFStringID(cs->grfid, cs->name_single);
-		cs->units_volume = MapGRFStringID(cs->grfid, cs->units_volume);
-		cs->quantifier   = MapGRFStringID(cs->grfid, cs->quantifier);
-		cs->abbrev       = MapGRFStringID(cs->grfid, cs->abbrev);
+		cs->name.MapString();
+		cs->name_single.MapString();
+		cs->units_volume.MapString();
+		cs->quantifier.MapString();
+		cs->abbrev.MapString();
 	}
 }
 
@@ -5483,8 +5516,8 @@
 		/* 0x0E */ { NULL,     SafeGRFInhibit, NULL,       GRFInhibit,     GRFInhibit,        GRFInhibit, },
 		/* 0x0F */ { NULL,     GRFUnsafe, NULL,            FeatureTownName, NULL,             NULL, },
 		/* 0x10 */ { NULL,     NULL,      DefineGotoLabel, NULL,           NULL,              NULL, },
-		/* 0x11 */ { NULL,     GRFUnsafe, NULL,            NULL,           NULL,              GRFSound, },
-		/* 0x12 */ { NULL,     NULL,      NULL,            NULL,           NULL,              LoadFontGlyph, },
+		/* 0x11 */ { SkipAct11,GRFUnsafe, SkipAct11,       SkipAct11,      SkipAct11,         GRFSound, },
+		/* 0x12 */ { SkipAct12, SkipAct12, SkipAct12,      SkipAct12,      SkipAct12,         LoadFontGlyph, },
 		/* 0x13 */ { NULL,     NULL,      NULL,            NULL,           NULL,              TranslateGRFStrings, },
 	};
 
@@ -5618,9 +5651,50 @@
 	}
 }
 
+/**
+ * Relocates the old shore sprites at new positions.
+ *
+ * 1. If shore sprites are neither loaded by Action5 nor ActionA, the extra sprites from openttd(w/d).grf are used. (SHORE_REPLACE_ONLY_NEW)
+ * 2. If a newgrf replaces some shore sprites by ActionA. The (maybe also replaced) grass tiles are used for corner shores. (SHORE_REPLACE_ACTION_A)
+ * 3. If a newgrf replaces shore sprites by Action5 any shore replacement by ActionA has no effect. (SHORE_REPLACE_ACTION_5)
+ */
+static void ActivateOldShore()
+{
+	/* Use default graphics, if no shore sprites were loaded.
+	 * Should not happen, as openttd(w/d).grf includes some. */
+	if (_loaded_newgrf_features.shore == SHORE_REPLACE_NONE) _loaded_newgrf_features.shore = SHORE_REPLACE_ACTION_A;
+
+	if (_loaded_newgrf_features.shore != SHORE_REPLACE_ACTION_5) {
+		DupSprite(SPR_ORIGINALSHORE_START +  1, SPR_SHORE_BASE +  1); // SLOPE_W
+		DupSprite(SPR_ORIGINALSHORE_START +  2, SPR_SHORE_BASE +  2); // SLOPE_S
+		DupSprite(SPR_ORIGINALSHORE_START +  6, SPR_SHORE_BASE +  3); // SLOPE_SW
+		DupSprite(SPR_ORIGINALSHORE_START     , SPR_SHORE_BASE +  4); // SLOPE_E
+		DupSprite(SPR_ORIGINALSHORE_START +  4, SPR_SHORE_BASE +  6); // SLOPE_SE
+		DupSprite(SPR_ORIGINALSHORE_START +  3, SPR_SHORE_BASE +  8); // SLOPE_N
+		DupSprite(SPR_ORIGINALSHORE_START +  7, SPR_SHORE_BASE +  9); // SLOPE_NW
+		DupSprite(SPR_ORIGINALSHORE_START +  5, SPR_SHORE_BASE + 12); // SLOPE_NE
+	}
+
+	if (_loaded_newgrf_features.shore == SHORE_REPLACE_ACTION_A) {
+		DupSprite(SPR_FLAT_GRASS_TILE + 16, SPR_SHORE_BASE +  0); // SLOPE_STEEP_S
+		DupSprite(SPR_FLAT_GRASS_TILE + 17, SPR_SHORE_BASE +  5); // SLOPE_STEEP_W
+		DupSprite(SPR_FLAT_GRASS_TILE +  7, SPR_SHORE_BASE +  7); // SLOPE_WSE
+		DupSprite(SPR_FLAT_GRASS_TILE + 15, SPR_SHORE_BASE + 10); // SLOPE_STEEP_N
+		DupSprite(SPR_FLAT_GRASS_TILE + 11, SPR_SHORE_BASE + 11); // SLOPE_NWS
+		DupSprite(SPR_FLAT_GRASS_TILE + 13, SPR_SHORE_BASE + 13); // SLOPE_ENW
+		DupSprite(SPR_FLAT_GRASS_TILE + 14, SPR_SHORE_BASE + 14); // SLOPE_SEN
+		DupSprite(SPR_FLAT_GRASS_TILE + 18, SPR_SHORE_BASE + 15); // SLOPE_STEEP_E
+
+		/* XXX - SLOPE_EW, SLOPE_NS are currently not used.
+		 *       If they would be used somewhen, then these grass tiles will most like not look as needed */
+		DupSprite(SPR_FLAT_GRASS_TILE +  5, SPR_SHORE_BASE + 16); // SLOPE_EW
+		DupSprite(SPR_FLAT_GRASS_TILE + 10, SPR_SHORE_BASE + 17); // SLOPE_NS
+	}
+}
+
 void InitDepotWindowBlockSizes();
 
-extern void SortTownGeneratorNames();
+extern void InitGRFTownGeneratorNames();
 
 static void AfterLoadGRFs()
 {
@@ -5651,7 +5725,10 @@
 	MapNewCargoStrings();
 
 	/* Update the townname generators list */
-	SortTownGeneratorNames();
+	InitGRFTownGeneratorNames();
+
+	/* Load old shore sprites in new position, if they were replaced by ActionA */
+	ActivateOldShore();
 }
 
 void LoadNewGRF(uint load_index, uint file_index)
@@ -5707,3 +5784,11 @@
 {
 	return HasBit(_misc_grf_features, bit);
 }
+
+void GRFMappedStringID::MapString()
+{
+	if (this->grfid == 0) return;
+
+	this->string = MapGRFStringID(this->grfid, this->string);
+	this->grfid = 0;
+}
--- a/src/newgrf.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf.h	Sun Feb 03 20:17:54 2008 +0000
@@ -85,10 +85,18 @@
 
 extern GRFFile *_first_grffile;
 
+enum ShoreReplacement {
+	SHORE_REPLACE_NONE,       ///< No shore sprites were replaced.
+	SHORE_REPLACE_ACTION_5,   ///< Shore sprites were replaced by Action5.
+	SHORE_REPLACE_ACTION_A,   ///< Shore sprites were replaced by ActionA (using grass tiles for the corner-shores).
+	SHORE_REPLACE_ONLY_NEW,   ///< Only corner-shores were loaded by Action5 (openttd(w/d).grf only).
+};
+
 struct GRFLoadedFeatures {
 	bool has_2CC;             ///< Set if any vehicle is loaded which uses 2cc (two company colours).
 	bool has_newhouses;       ///< Set if there are any newhouses loaded.
 	bool has_newindustries;   ///< Set if there are any newindustries loaded.
+	ShoreReplacement shore;   ///< It which way shore sprites were replaced.
 };
 
 /* Indicates which are the newgrf features currently loaded ingame */
--- a/src/newgrf_callbacks.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_callbacks.h	Sun Feb 03 20:17:54 2008 +0000
@@ -297,10 +297,11 @@
 };
 
 /**
- * Result of a failed callback.
+ * Different values for Callback result evaluations
  */
 enum {
-	CALLBACK_FAILED = 0xFFFF
+	CALLBACK_FAILED              = 0xFFFF,  ///< Result of a failed callback.
+	CALLBACK_HOUSEPRODCARGO_END  = 0x20FF,  ///< Sentinel indicating that the loop for CBID_HOUSE_PRODUCE_CARGO has ended
 };
 
 #endif /* NEWGRF_CALLBACKS_H */
--- a/src/newgrf_canal.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_canal.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,17 +11,19 @@
 #include "newgrf_spritegroup.h"
 #include "newgrf_canal.h"
 #include "tile_map.h"
+#include "water_map.h"
 
 
 /** Table of canal 'feature' sprite groups */
-const SpriteGroup *_canal_sg[CF_END];
+WaterFeature _water_feature[CF_END];
 
 
 /* Random bits and triggers are not supported for canals, so the following
  * three functions are stubs. */
 static uint32 CanalGetRandomBits(const ResolverObject *object)
 {
-	return 0;
+	/* Return random bits only for water tiles, not station tiles */
+	return IsTileType(object->u.canal.tile, MP_WATER) ? GetWaterTileRandomBits(object->u.canal.tile) : 0;
 }
 
 
@@ -47,6 +49,9 @@
 
 		case 0x81:
 			return GetTerrainType(tile);
+
+		case 0x83:
+			return GetWaterTileRandomBits(tile);
 	}
 
 	DEBUG(grf, 1, "Unhandled canal property 0x%02X", variable);
@@ -90,7 +95,7 @@
 
 	NewCanalResolver(&object, tile);
 
-	group = Resolve(_canal_sg[feature], &object);
+	group = Resolve(_water_feature[feature].group, &object);
 	if (group == NULL || group->type != SGT_RESULT) return 0;
 
 	return group->g.result.sprite;
--- a/src/newgrf_canal.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_canal.h	Sun Feb 03 20:17:54 2008 +0000
@@ -11,12 +11,21 @@
 	CF_DIKES,
 	CF_ICON,
 	CF_DOCKS,
+	CF_RIVER_SLOPE,
+	CF_RIVER_EDGE,
 	CF_END,
 };
 
 
+struct WaterFeature {
+	const SpriteGroup *group;
+	uint8 callbackmask;
+	uint8 flags;
+};
+
+
 /** Table of canal 'feature' sprite groups */
-extern const SpriteGroup *_canal_sg[CF_END];
+extern WaterFeature _water_feature[CF_END];
 
 
 /** Lookup the base sprite to use for a canal.
--- a/src/newgrf_cargo.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_cargo.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "newgrf_callbacks.h"
 #include "cargo_type.h"
+#include "gfx_type.h"
 
 enum {
 	CC_NOAVAILABLE  = 0,       ///< No cargo class has been specified
--- a/src/newgrf_commons.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_commons.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -14,6 +14,8 @@
 #include "newgrf_commons.h"
 #include "tile_map.h"
 #include "station_map.h"
+#include "settings_type.h"
+#include "tree_map.h"
 
 /** Constructor of generic class
  * @param offset end of original data for this entity. i.e: houses = 110
@@ -264,7 +266,7 @@
 uint32 GetTerrainType(TileIndex tile)
 {
 	switch (_opt.landscape) {
-		case LT_TROPIC: return GetTropicZone(tile) == TROPICZONE_DESERT ? 1 : 2;
+		case LT_TROPIC: return GetTropicZone(tile);
 		case LT_ARCTIC: return GetTileZ(tile) > GetSnowLine() ? 4 : 0;
 		default:        return 0;
 	}
@@ -284,3 +286,22 @@
 	/* Make sure we never roam outside of the map */
 	return TILE_MASK(tile + TileDiffXY(x, y));
 }
+
+/**
+ * Common part of station var 0x67 , house var 0x62, indtile var 0x60, industry var 0x62.
+ *
+ * @param tile the tile of interest.
+ * @return 0czzbbss: c = TileType; zz = TileZ; bb: 7-3 zero, 4-2 TerrainType, 1 water/shore, 0 zero; ss = TileSlope
+ */
+uint32 GetNearbyTileInformation(TileIndex tile)
+{
+	TileType tile_type = GetTileType(tile);
+
+	/* Fake tile type for trees on shore */
+	if (IsTileType(tile, MP_TREES) && GetTreeGround(tile) == TREE_GROUND_SHORE) tile_type = MP_WATER;
+
+	uint z;
+	Slope tileh = GetTileSlope(tile, &z);
+	byte terrain_type = GetTerrainType(tile) << 2 | (tile_type == MP_WATER ? 1 : 0) << 1;
+	return tile_type << 24 | z << 16 | terrain_type << 8 | tileh;
+}
--- a/src/newgrf_commons.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_commons.h	Sun Feb 03 20:17:54 2008 +0000
@@ -93,5 +93,6 @@
 
 uint32 GetTerrainType(TileIndex tile);
 TileIndex GetNearbyTile(byte parameter, TileIndex tile);
+uint32 GetNearbyTileInformation(TileIndex tile);
 
 #endif /* NEWGRF_COMMONS_H */
--- a/src/newgrf_engine.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_engine.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,7 +8,8 @@
 #include "debug.h"
 #include "engine.h"
 #include "train.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "station.h"
 #include "airport.h"
 #include "newgrf.h"
@@ -21,6 +22,7 @@
 #include "date_func.h"
 #include "vehicle_func.h"
 #include "core/random_func.hpp"
+#include "direction_func.h"
 
 
 int _traininfo_vehicle_pitch = 0;
@@ -125,33 +127,6 @@
 	memset(_engine_grf, 0, sizeof(_engine_grf));
 }
 
-static const SpriteGroup *heli_rotor_custom_sprites[NUM_AIRCRAFT_ENGINES];
-
-/** Load a rotor override sprite group for an aircraft */
-void SetRotorOverrideSprites(EngineID engine, const SpriteGroup *group)
-{
-	assert(engine >= AIRCRAFT_ENGINES_INDEX);
-	assert(engine < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES);
-
-	if (heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] != NULL) {
-		grfmsg(6, "SetRotorOverrideSprites: engine %d already has group -- replacing.", engine);
-	}
-	heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] = group;
-}
-
-/** Unload all rotor override sprite groups */
-void UnloadRotorOverrideSprites()
-{
-	EngineID engine;
-
-	/* Starting at AIRCRAFT_ENGINES_INDEX may seem pointless, but it means
-	 * the context of EngineID is correct */
-	for (engine = AIRCRAFT_ENGINES_INDEX; engine < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; engine++) {
-		heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] = NULL;
-	}
-}
-
-
 /**
  * Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters
  * etc during a game.
@@ -732,8 +707,6 @@
 		case 0x5D: return GB(ClampToI32(v->value),  8, 24);
 		case 0x5E: return GB(ClampToI32(v->value), 16, 16);
 		case 0x5F: return GB(ClampToI32(v->value), 24,  8);
-		case 0x60: return v->string_id;
-		case 0x61: return GB(v->string_id, 8, 8);
 		case 0x72: return v->cargo_subtype;
 		case 0x7A: return v->random_bits;
 		case 0x7B: return v->waiting_triggers;
@@ -898,7 +871,7 @@
 
 	object.info_view = info_view;
 
-	group = heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX];
+	group = GetWagonOverrideSpriteSet(engine, CT_DEFAULT, engine);
 	group = Resolve(group, &object);
 
 	if (group == NULL || group->type != SGT_RESULT) return 0;
@@ -1066,27 +1039,6 @@
 	DoTriggerVehicle(v, trigger, 0, true);
 }
 
-StringID _engine_custom_names[TOTAL_NUM_ENGINES];
-
-void SetCustomEngineName(EngineID engine, StringID name)
-{
-	assert(engine < lengthof(_engine_custom_names));
-	_engine_custom_names[engine] = name;
-}
-
-void UnloadCustomEngineNames()
-{
-	EngineID i;
-	for (i = 0; i < TOTAL_NUM_ENGINES; i++) {
-		_engine_custom_names[i] = 0;
-	}
-}
-
-StringID GetCustomEngineName(EngineID engine)
-{
-	return _engine_custom_names[engine] == 0 ? _engine_name_strings[engine] : _engine_custom_names[engine];
-}
-
 /* Functions for changing the order of vehicle purchase lists
  * This is currently only implemented for rail vehicles. */
 static EngineID _engine_list_order[NUM_TRAIN_ENGINES];
--- a/src/newgrf_engine.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_engine.h	Sun Feb 03 20:17:54 2008 +0000
@@ -16,7 +16,6 @@
 void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const struct SpriteGroup *group, EngineID *train_id, uint trains);
 const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, EngineID overriding_engine);
 void SetCustomEngineSprites(EngineID engine, byte cargo, const struct SpriteGroup *group);
-void SetRotorOverrideSprites(EngineID engine, const struct SpriteGroup *group);
 SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction);
 SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle* v, bool info_view);
 #define GetCustomRotorSprite(v, i) GetRotorOverrideSprite(v->engine_type, v, i)
@@ -54,13 +53,8 @@
 };
 void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger);
 
-void SetCustomEngineName(EngineID engine, StringID name);
-StringID GetCustomEngineName(EngineID engine);
-
 void UnloadWagonOverrides();
-void UnloadRotorOverrideSprites();
 void UnloadCustomEngineSprites();
-void UnloadCustomEngineNames();
 
 void ResetEngineListOrder();
 EngineID GetRailVehAtPosition(EngineID pos);
--- a/src/newgrf_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "newgrf.h"
 #include "newgrf_config.h"
 #include "strings_func.h"
@@ -18,6 +16,9 @@
 #include "string_func.h"
 #include "gfx_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+
 /** Parse an integerlist string and set each found value
  * @param p the string to be parsed. Each element in the list is seperated by a
  * comma or a space character
--- a/src/newgrf_house.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_house.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,9 +11,6 @@
 #include "town.h"
 #include "town_map.h"
 #include "sprite.h"
-#include "table/strings.h"
-#include "table/sprites.h"
-#include "table/town_land.h"
 #include "newgrf.h"
 #include "newgrf_house.h"
 #include "newgrf_spritegroup.h"
@@ -23,6 +20,11 @@
 #include "newgrf_commons.h"
 #include "transparency.h"
 #include "functions.h"
+#include "player_func.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/town_land.h"
 
 static BuildingCounts    _building_counts;
 static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX];
@@ -31,8 +33,12 @@
 
 void CheckHouseIDs()
 {
+	Town *town;
 	InitializeBuildingCounts();
 
+	/* Reset town population */
+	FOR_ALL_TOWNS(town) town->population = 0;
+
 	for (TileIndex t = 0; t < MapSize(); t++) {
 		HouseID house_id;
 
@@ -45,7 +51,9 @@
 			house_id = _house_mngr.GetSubstituteID(house_id);
 			SetHouseType(t, house_id);
 		}
-		IncreaseBuildingCount(GetTownByTile(t), house_id);
+		town = GetTownByTile(t);
+		IncreaseBuildingCount(town, house_id);
+		if (IsHouseCompleted(t)) town->population += GetHouseSpecs(house_id)->population;
 	}
 }
 
@@ -120,22 +128,6 @@
 	if (_building_counts.class_count[class_id] > 0)   _building_counts.class_count[class_id]--;
 }
 
-/**
- * AfterLoadCountBuildings()
- *
- * After a savegame has been loaded, count the number of buildings on the map.
- */
-void AfterLoadCountBuildings()
-{
-	if (!_loaded_newgrf_features.has_newhouses) return;
-
-	for (TileIndex t = 0; t < MapSize(); t++) {
-		if (!IsTileType(t, MP_HOUSE)) continue;
-		IncreaseBuildingCount(GetTownByTile(t), GetHouseType(t));
-	}
-}
-
-
 static uint32 HouseGetRandomBits(const ResolverObject *object)
 {
 	const TileIndex tile = object->u.house.tile;
@@ -178,14 +170,8 @@
 
 uint32 GetNearbyTileInformation(byte parameter, TileIndex tile)
 {
-	uint32 tile_type;
-
 	tile = GetNearbyTile(parameter, tile);
-	tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
-
-	uint z;
-	Slope tileh = GetTileSlope(tile, &z);
-	return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | tileh;
+	return GetNearbyTileInformation(tile);
 }
 
 /**
--- a/src/newgrf_house.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_house.h	Sun Feb 03 20:17:54 2008 +0000
@@ -33,7 +33,6 @@
 void InitializeBuildingCounts();
 void IncreaseBuildingCount(Town *t, HouseID house_id);
 void DecreaseBuildingCount(Town *t, HouseID house_id);
-void AfterLoadCountBuildings();
 
 void DrawNewHouseTile(TileInfo *ti, HouseID house_id);
 void AnimateNewHouseTile(TileIndex tile);
--- a/src/newgrf_industries.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_industries.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,7 +7,6 @@
 #include "debug.h"
 #include "variables.h"
 #include "landscape.h"
-#include "table/strings.h"
 #include "industry.h"
 #include "industry_map.h"
 #include "newgrf.h"
@@ -20,6 +19,13 @@
 #include "newgrf_town.h"
 #include "window_func.h"
 #include "town.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "command_func.h"
+
+#include "table/strings.h"
+
+static Randomizer _industry_creation_randomizer;
 
 /* Since the industry IDs defined by the GRF file don't necessarily correlate
  * to those used by the game, the IDs used for overriding old industries must be
@@ -201,7 +207,23 @@
 {
 	const Industry *industry = object->u.industry.ind;
 	TileIndex tile = object->u.industry.tile;
-	const IndustrySpec *indspec = GetIndustrySpec(industry->type);
+	IndustryType type = object->u.industry.type;
+	const IndustrySpec *indspec = GetIndustrySpec(type);
+
+	if (industry == NULL) {
+		/* industry does not exist, only use those variables that are "safe" */
+		switch (variable) {
+			/* Read GRF parameter */
+			case 0x7F: return GetGRFParameter(type, parameter);
+			/* Manhattan distance of closes dry/water tile */
+			case 0x43: return GetClosestWaterDistance(tile, (indspec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0);
+		}
+
+		DEBUG(grf, 1, "Unhandled property 0x%X (no available industry) in callback 0x%x", variable, object->callback);
+
+		*available = false;
+		return UINT_MAX;
+	}
 
 	switch (variable) {
 		case 0x40:
@@ -278,7 +300,7 @@
 		case 0x7C: return industry->psa.Get(parameter);
 
 		/* Read GRF parameter */
-		case 0x7F: return GetGRFParameter(industry->type, parameter);
+		case 0x7F: return GetGRFParameter(type, parameter);
 
 		/* Industry structure access*/
 		case 0x80: return industry->xy;
@@ -368,7 +390,7 @@
 	object->u.industry.ind->random_triggers = triggers;
 }
 
-static void NewIndustryResolver(ResolverObject *res, TileIndex tile, Industry *indus)
+static void NewIndustryResolver(ResolverObject *res, TileIndex tile, Industry *indus, IndustryType type)
 {
 	res->GetRandomBits = IndustryGetRandomBits;
 	res->GetTriggers   = IndustryGetTriggers;
@@ -380,6 +402,7 @@
 	res->u.industry.tile = tile;
 	res->u.industry.ind  = indus;
 	res->u.industry.gfx  = INVALID_INDUSTRYTILE;
+	res->u.industry.type = type;
 
 	res->callback        = CBID_NO_CALLBACK;
 	res->callback_param1 = 0;
@@ -394,7 +417,7 @@
 	ResolverObject object;
 	const SpriteGroup *group;
 
-	NewIndustryResolver(&object, tile, industry);
+	NewIndustryResolver(&object, tile, industry, type);
 	object.callback = callback;
 	object.callback_param1 = param1;
 	object.callback_param2 = param2;
@@ -444,13 +467,16 @@
 
 		/* Square of Euclidian distance from town */
 		case 0x8D: return min(DistanceSquare(industry->town->xy, tile), 65535);
+
+		/* 32 random bits */
+		case 0x8F: return _industry_creation_randomizer.Next();
 	}
 
 	/* None of the special ones, so try the general ones */
 	return IndustryGetVariable(object, variable, parameter, available);
 }
 
-bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index)
+bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index, uint32 seed)
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 
@@ -465,9 +491,10 @@
 	ind.selected_layout = itspec_index;
 	ind.town = ClosestTownFromTile(tile, (uint)-1);
 
-	NewIndustryResolver(&object, tile, &ind);
+	NewIndustryResolver(&object, tile, &ind, type);
 	object.GetVariable = IndustryLocationGetVariable;
 	object.callback = CBID_INDUSTRY_LOCATION;
+	_industry_creation_randomizer.SetSeed(seed);
 
 	group = Resolve(GetIndustrySpec(type)->grf_prop.spritegroup, &object);
 
@@ -518,7 +545,7 @@
 {
 	const IndustrySpec *spec = GetIndustrySpec(ind->type);
 	ResolverObject object;
-	NewIndustryResolver(&object, ind->xy, ind);
+	NewIndustryResolver(&object, ind->xy, ind, ind->type);
 	if ((spec->behaviour & INDUSTRYBEH_PRODCALLBACK_RANDOM) != 0) object.callback_param1 = Random();
 	int multiplier = 1;
 	if ((spec->behaviour & INDUSTRYBEH_PROD_MULTI_HNDLING) != 0) multiplier = ind->prod_level;
--- a/src/newgrf_industries.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_industries.h	Sun Feb 03 20:17:54 2008 +0000
@@ -30,7 +30,7 @@
 uint16 GetIndustryCallback(CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile);
 uint32 GetIndustryIDAtOffset(TileIndex new_tile, const Industry *i);
 void IndustryProductionCallback(Industry *ind, int reason);
-bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index);
+bool CheckIfCallBackAllowsCreation(TileIndex tile, IndustryType type, uint itspec_index, uint32 seed);
 bool CheckIfCallBackAllowsAvailability(IndustryType type, IndustryAvailabilityCallType creation_type);
 
 IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id);
--- a/src/newgrf_industrytiles.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_industrytiles.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -18,12 +18,14 @@
 #include "newgrf_text.h"
 #include "industry_map.h"
 #include "clear_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "sprite.h"
 #include "transparency.h"
 #include "functions.h"
 #include "town.h"
+#include "command_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static uint32 GetGRFParameter(IndustryGfx indtile_id, byte parameter)
 {
@@ -43,16 +45,10 @@
  */
 uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
 {
-	byte tile_type;
-	bool is_same_industry;
-
 	if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required
-	is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
-	tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1 | (is_same_industry ? 1 : 0);
+	bool is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
 
-	uint z;
-	Slope tileh = GetTileSlope(tile, &z);
-	return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | tileh;
+	return GetNearbyTileInformation(tile) | (is_same_industry ? 1 : 0) << 8;
 }
 
 /** This is the position of the tile relative to the northernmost tile of the industry.
@@ -166,6 +162,7 @@
 	res->u.industry.tile = tile;
 	res->u.industry.ind  = indus;
 	res->u.industry.gfx  = gfx;
+	res->u.industry.type = indus->type;
 
 	res->callback        = CBID_NO_CALLBACK;
 	res->callback_param1 = 0;
--- a/src/newgrf_spritegroup.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_spritegroup.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,6 +11,7 @@
 #include "newgrf_spritegroup.h"
 #include "sprite.h"
 #include "date_func.h"
+#include "settings_type.h"
 
 static void SpriteGroupPoolCleanBlock(uint start_item, uint end_item);
 
@@ -91,6 +92,7 @@
 		case 0x0C: return object->callback;
 		case 0x10: return object->callback_param1;
 		case 0x11: return 0;
+		case 0x12: return _game_mode;
 		case 0x18: return object->callback_param2;
 		case 0x1A: return UINT_MAX;
 		case 0x1B: return GB(_display_opt, 0, 6);
--- a/src/newgrf_spritegroup.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_spritegroup.h	Sun Feb 03 20:17:54 2008 +0000
@@ -231,6 +231,7 @@
 			TileIndex tile;
 			Industry *ind;
 			IndustryGfx gfx;
+			IndustryType type;
 		} industry;
 		struct {
 			const struct CargoSpec *cs;
--- a/src/newgrf_station.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_station.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,8 +9,6 @@
 #include "landscape.h"
 #include "debug.h"
 #include "sprite.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "station.h"
 #include "station_map.h"
 #include "newgrf.h"
@@ -23,8 +21,12 @@
 #include "newgrf_town.h"
 #include "gfx_func.h"
 #include "date_func.h"
+#include "player_func.h"
 
-static StationClass station_classes[STAT_CLASS_MAX];
+#include "table/sprites.h"
+#include "table/strings.h"
+
+static StationClass _station_classes[STAT_CLASS_MAX];
 
 enum {
 	MAX_SPECLIST = 255,
@@ -38,42 +40,42 @@
 void ResetStationClasses()
 {
 	for (StationClassID i = STAT_CLASS_BEGIN; i < STAT_CLASS_MAX; i++) {
-		station_classes[i].id = 0;
-		station_classes[i].name = STR_EMPTY;
-		station_classes[i].stations = 0;
+		_station_classes[i].id = 0;
+		_station_classes[i].name = STR_EMPTY;
+		_station_classes[i].stations = 0;
 
-		free(station_classes[i].spec);
-		station_classes[i].spec = NULL;
+		free(_station_classes[i].spec);
+		_station_classes[i].spec = NULL;
 	}
 
 	/* Set up initial data */
-	station_classes[0].id = 'DFLT';
-	station_classes[0].name = STR_STAT_CLASS_DFLT;
-	station_classes[0].stations = 1;
-	station_classes[0].spec = MallocT<StationSpec*>(1);
-	station_classes[0].spec[0] = NULL;
+	_station_classes[0].id = 'DFLT';
+	_station_classes[0].name = STR_STAT_CLASS_DFLT;
+	_station_classes[0].stations = 1;
+	_station_classes[0].spec = MallocT<StationSpec*>(1);
+	_station_classes[0].spec[0] = NULL;
 
-	station_classes[1].id = 'WAYP';
-	station_classes[1].name = STR_STAT_CLASS_WAYP;
-	station_classes[1].stations = 1;
-	station_classes[1].spec = MallocT<StationSpec*>(1);
-	station_classes[1].spec[0] = NULL;
+	_station_classes[1].id = 'WAYP';
+	_station_classes[1].name = STR_STAT_CLASS_WAYP;
+	_station_classes[1].stations = 1;
+	_station_classes[1].spec = MallocT<StationSpec*>(1);
+	_station_classes[1].spec[0] = NULL;
 }
 
 /**
  * Allocate a station class for the given class id.
  * @param cls A 32 bit value identifying the class.
- * @return Index into station_classes of allocated class.
+ * @return Index into _station_classes of allocated class.
  */
 StationClassID AllocateStationClass(uint32 cls)
 {
 	for (StationClassID i = STAT_CLASS_BEGIN; i < STAT_CLASS_MAX; i++) {
-		if (station_classes[i].id == cls) {
+		if (_station_classes[i].id == cls) {
 			/* ClassID is already allocated, so reuse it. */
 			return i;
-		} else if (station_classes[i].id == 0) {
+		} else if (_station_classes[i].id == 0) {
 			/* This class is empty, so allocate it to the ClassID. */
-			station_classes[i].id = cls;
+			_station_classes[i].id = cls;
 			return i;
 		}
 	}
@@ -86,33 +88,14 @@
 void SetStationClassName(StationClassID sclass, StringID name)
 {
 	assert(sclass < STAT_CLASS_MAX);
-	station_classes[sclass].name = name;
+	_station_classes[sclass].name = name;
 }
 
 /** Retrieve the name of a custom station class */
 StringID GetStationClassName(StationClassID sclass)
 {
 	assert(sclass < STAT_CLASS_MAX);
-	return station_classes[sclass].name;
-}
-
-/** Build a list of station class name StringIDs to use in a dropdown list
- * @return Pointer to a (static) array of StringIDs
- */
-StringID *BuildStationClassDropdown()
-{
-	/* Allow room for all station classes, plus a terminator entry */
-	static StringID names[STAT_CLASS_MAX + 1];
-	uint i;
-
-	/* Add each name */
-	for (i = 0; i < STAT_CLASS_MAX && station_classes[i].id != 0; i++) {
-		names[i] = station_classes[i].name;
-	}
-	/* Terminate the list */
-	names[i] = INVALID_STRING_ID;
-
-	return names;
+	return _station_classes[sclass].name;
 }
 
 /**
@@ -122,7 +105,7 @@
 uint GetNumStationClasses()
 {
 	uint i;
-	for (i = 0; i < STAT_CLASS_MAX && station_classes[i].id != 0; i++);
+	for (i = 0; i < STAT_CLASS_MAX && _station_classes[i].id != 0; i++);
 	return i;
 }
 
@@ -134,7 +117,7 @@
 uint GetNumCustomStations(StationClassID sclass)
 {
 	assert(sclass < STAT_CLASS_MAX);
-	return station_classes[sclass].stations;
+	return _station_classes[sclass].stations;
 }
 
 /**
@@ -150,7 +133,7 @@
 	if (statspec->allocated) return;
 
 	assert(statspec->sclass < STAT_CLASS_MAX);
-	station_class = &station_classes[statspec->sclass];
+	station_class = &_station_classes[statspec->sclass];
 
 	i = station_class->stations++;
 	station_class->spec = ReallocT(station_class->spec, station_class->stations);
@@ -168,8 +151,8 @@
 const StationSpec *GetCustomStationSpec(StationClassID sclass, uint station)
 {
 	assert(sclass < STAT_CLASS_MAX);
-	if (station < station_classes[sclass].stations)
-		return station_classes[sclass].spec[station];
+	if (station < _station_classes[sclass].stations)
+		return _station_classes[sclass].spec[station];
 
 	/* If the custom station isn't defined any more, then the GRF file
 	 * probably was not loaded. */
@@ -182,8 +165,8 @@
 	uint j;
 
 	for (StationClassID i = STAT_CLASS_BEGIN; i < STAT_CLASS_MAX; i++) {
-		for (j = 0; j < station_classes[i].stations; j++) {
-			const StationSpec *statspec = station_classes[i].spec[j];
+		for (j = 0; j < _station_classes[i].stations; j++) {
+			const StationSpec *statspec = _station_classes[i].spec[j];
 			if (statspec == NULL) continue;
 			if (statspec->grffile->grfid == grfid && statspec->localidx == localidx) return statspec;
 		}
@@ -443,12 +426,11 @@
 			Axis axis = GetRailStationAxis(tile);
 
 			if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required
-			byte tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
 
-			uint z;
-			Slope tileh = GetTileSlope(tile, &z);
-			bool swap = (axis == AXIS_Y && HasBit(tileh, 0) != HasBit(tileh, 2));
-			return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | (tileh ^ (swap ? 5 : 0));
+			Slope tileh = GetTileSlope(tile, NULL);
+			bool swap = (axis == AXIS_Y && HasBit(tileh, SLOPE_W) != HasBit(tileh, SLOPE_E));
+
+			return GetNearbyTileInformation(tile) ^ (swap ? SLOPE_EW : 0);
 		}
 
 		case 0x68: { // Station info of nearby tiles
--- a/src/newgrf_station.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_station.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,8 @@
 #include "engine.h"
 #include "newgrf_callbacks.h"
 #include "newgrf_cargo.h"
+#include "tile_type.h"
+#include "strings_type.h"
 
 enum StationClassID {
 	STAT_CLASS_BEGIN = 0,    ///< the lowest valid value
@@ -100,7 +102,6 @@
 StationClassID AllocateStationClass(uint32 cls);
 void SetStationClassName(StationClassID sclass, StringID name);
 StringID GetStationClassName(StationClassID sclass);
-StringID *BuildStationClassDropdown();
 
 uint GetNumStationClasses();
 uint GetNumCustomStations(StationClassID sclass);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/newgrf_string_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,54 @@
+/* $Id$ */
+
+/** @file newgrf_string_type.h */
+
+#ifndef NEWGRF_STRING_TYPE_H
+#define NEWGRF_STRING_TYPE_H
+
+#include "strings_type.h"
+
+/**
+ * A string with the required information to perform a GRF string remapping.
+ */
+struct GRFMappedStringID
+{
+private:
+	/** The GRF ID associated to the to-be-remapped string */
+	uint32 grfid;
+	/** The string; when grfid != 0 it should be remapped */
+	StringID string;
+
+public:
+	/**
+	 * Create the struct.
+	 * @param str    the string to store (or remap)
+	 * @param grf_id the GRF to remap it with
+	 */
+	GRFMappedStringID(StringID str, uint32 grf_id) : grfid(grf_id), string(str) {}
+
+	/**
+	 * An empty string.
+	 */
+	GRFMappedStringID() {}
+
+	/** Cast operator, returns the string */
+	inline operator StringID() const
+	{
+		return string;
+	}
+
+	/** Assigns the string and resets the GRF ID. */
+	GRFMappedStringID& operator = (StringID str)
+	{
+		string = str;
+		grfid = 0;
+		return *this;
+	}
+
+	/**
+	 * Map the string.
+	 */
+	void MapString();
+};
+
+#endif /* NEWGRF_STRING_TYPE_H */
--- a/src/newgrf_text.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_text.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -13,15 +13,16 @@
 #include "debug.h"
 #include "openttd.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "newgrf.h"
 #include "newgrf_text.h"
-#include "table/control_codes.h"
 #include "strings_func.h"
 #include "core/alloc_func.hpp"
 #include "newgrf_storage.h"
 #include "string_func.h"
 
+#include "table/strings.h"
+#include "table/control_codes.h"
+
 #define GRFTAB  28
 #define TABSIZE 11
 
@@ -292,6 +293,9 @@
 			case 0xB6: d += Utf8Encode(d, SCC_BUS); break;
 			case 0xB7: d += Utf8Encode(d, SCC_PLANE); break;
 			case 0xB8: d += Utf8Encode(d, SCC_SHIP); break;
+			case 0xB9: d += Utf8Encode(d, SCC_SUPERSCRIPT_M1); break;
+			case 0xBC: d += Utf8Encode(d, SCC_SMALLUPARROW); break;
+			case 0xBD: d += Utf8Encode(d, SCC_SMALLDOWNARROW); break;
 			default:
 				/* Validate any unhandled character */
 				if (!IsValidChar(c, CS_ALPHANUMERAL)) c = '?';
@@ -401,7 +405,7 @@
 }
 
 
-char *GetGRFString(char *buff, uint16 stringid, const char* last)
+const char *GetGRFStringPtr(uint16 stringid)
 {
 	const GRFText *default_text = NULL;
 	const GRFText *search_text;
@@ -414,7 +418,7 @@
 	/*Search the list of lang-strings of this stringid for current lang */
 	for (search_text = _grf_text[stringid].textholder; search_text != NULL; search_text = search_text->next) {
 		if (search_text->langid == _currentLangID) {
-			return strecpy(buff, search_text->text, last);
+			return search_text->text;
 		}
 
 		/* If the current string is English or American, set it as the
@@ -425,10 +429,10 @@
 	}
 
 	/* If there is a fallback string, return that */
-	if (default_text != NULL) return strecpy(buff, default_text->text, last);
+	if (default_text != NULL) return default_text->text;
 
 	/* Use the default string ID if the fallback string isn't available */
-	return GetString(buff, _grf_text[stringid].def_string, last);
+	return GetStringPtr(_grf_text[stringid].def_string);
 }
 
 /**
--- a/src/newgrf_text.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_text.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,7 +8,7 @@
 
 StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid, bool new_scheme, const char *text_to_add, StringID def_string);
 StringID GetGRFStringID(uint32 grfid, uint16 stringid);
-char *GetGRFString(char *buff, uint16 stringid, const char* last);
+const char *GetGRFStringPtr(uint16 stringid);
 void CleanUpStrings();
 void SetCurrentGrfLangID(const char *iso_name);
 char *TranslateTTDPatchCodes(const char *str);
--- a/src/newgrf_town.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_town.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,7 +4,7 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "variables.h"
+#include "settings_type.h"
 #include "debug.h"
 #include "core/bitmath_func.hpp"
 #include "town.h"
--- a/src/newgrf_townname.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_townname.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,11 +8,12 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "newgrf_townname.h"
 #include "core/alloc_func.hpp"
 #include "string_func.h"
 
+#include "table/strings.h"
+
 static GRFTownName *_grf_townnames = NULL;
 
 GRFTownName *GetGRFTownName(uint32 grfid)
--- a/src/newgrf_townname.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/newgrf_townname.h	Sun Feb 03 20:17:54 2008 +0000
@@ -2,6 +2,8 @@
 #ifndef NEWGRF_TOWNNAME_H
 #define NEWGRF_TOWNNAME_H
 
+#include "strings_type.h"
+
 /** @file newgrf_townname.h
  * Header of Action 0F "universal holder" structure and functions
  */
--- a/src/news.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/news.h	Sun Feb 03 20:17:54 2008 +0000
@@ -9,6 +9,7 @@
 #include "vehicle_type.h"
 #include "tile_type.h"
 #include "date_type.h"
+#include "strings_type.h"
 
 struct NewsItem {
 	StringID string_id; ///< Message text (sometimes also used for storing other info)
@@ -48,7 +49,9 @@
 void DrawNewsBorder(const Window *w);
 void InitNewsItemStructs();
 
-VARDEF NewsItem _statusbar_news_item;
+extern NewsItem _statusbar_news_item;
+extern uint32 _news_display_opt;
+extern bool _news_ticker_sound;
 
 /** Type of news. */
 enum NewsType {
--- a/src/news_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/news_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -3,13 +3,11 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "viewport_func.h"
 #include "news.h"
-#include "variables.h"
+#include "settings_type.h"
 #include "transparency.h"
 #include "strings_func.h"
 #include "window_func.h"
@@ -17,6 +15,10 @@
 #include "vehicle_base.h"
 #include "sound_func.h"
 #include "string_func.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 /** @file news_gui.cpp
  *
@@ -50,6 +52,9 @@
 typedef byte NewsID;
 #define INVALID_NEWS 255
 
+NewsItem _statusbar_news_item;
+uint32 _news_display_opt;
+bool _news_ticker_sound;
 static NewsItem _news_items[MAX_NEWS];      ///< The news FIFO queue
 static NewsID _current_news = INVALID_NEWS; ///< points to news item that should be shown next
 static NewsID _oldest_news = 0;             ///< points to first item in fifo queue
@@ -781,10 +786,9 @@
 
 /** News settings window widget offset constants */
 enum {
-	WIDGET_NEWSOPT_BTN_SUMMARY  = 4,  ///< Button that adjusts at once the level for all settings
-	WIDGET_NEWSOPT_DROP_SUMMARY,      ///< Drop down button for same upper button
-	WIDGET_NEWSOPT_SOUNDTICKER  = 7,  ///< Button activating sound on events
-	WIDGET_NEWSOPT_START_OPTION = 9,  ///< First widget that is part of a group [<] .. [.]
+	WIDGET_NEWSOPT_DROP_SUMMARY = 4,  ///< Dropdown that adjusts at once the level for all settings
+	WIDGET_NEWSOPT_SOUNDTICKER  = 6,  ///< Button activating sound on events
+	WIDGET_NEWSOPT_START_OPTION = 8,  ///< First widget that is part of a group [<] .. [.]
 };
 
 /**
@@ -836,6 +840,8 @@
 			int i, y;
 
 			if (_news_ticker_sound) w->LowerWidget(WIDGET_NEWSOPT_SOUNDTICKER);
+
+			w->widget[WIDGET_NEWSOPT_DROP_SUMMARY].data = message_opt[WP(w, def_d).data_1];
 			DrawWindowWidgets(w);
 
 			/* Draw the string of each setting on each button. */
@@ -844,14 +850,10 @@
 				 * which will give centered position */
 				DrawStringCentered(51, y + 1, message_opt[val & 0x3], TC_BLACK);
 			}
-
-			/* Draw the general bottom button string as well */
-			DrawStringCentered(51, y + 10, message_opt[WP(w, def_d).data_1], TC_BLACK);
 		} break;
 
 		case WE_CLICK:
 			switch (e->we.click.widget) {
-				case WIDGET_NEWSOPT_BTN_SUMMARY:
 				case WIDGET_NEWSOPT_DROP_SUMMARY: // Dropdown menu for all settings
 					ShowDropDownMenu(w, message_opt, WP(w, def_d).data_1, WIDGET_NEWSOPT_DROP_SUMMARY, 0, 0);
 					break;
@@ -944,14 +946,10 @@
 	STR_0205_MESSAGE_TYPES,   STR_NULL},
 
 /* General drop down and sound button, widgets WIDGET_NEWSOPT_BTN_SUMMARY and WIDGET_NEWSOPT_DROP_SUMMARY */
-{     WWT_PANEL, RESIZE_NONE, COLOUR_YELLOW,
-	  4,  86,  34 + NT_END * NEWS_SETTING_BASELINE_SKIP,  45 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+{  WWT_DROPDOWN, RESIZE_NONE, COLOUR_YELLOW,
+	  4,  98,  34 + NT_END * NEWS_SETTING_BASELINE_SKIP,  45 + NT_END * NEWS_SETTING_BASELINE_SKIP,
 	0x0, STR_NULL},
 
-{   WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW,
-	 87,  98,  34 + NT_END * NEWS_SETTING_BASELINE_SKIP,  45 + NT_END * NEWS_SETTING_BASELINE_SKIP,
-	STR_0225, STR_NULL},
-
 {      WWT_TEXT, RESIZE_NONE, COLOUR_YELLOW,
 	103, 409,  35 + NT_END * NEWS_SETTING_BASELINE_SKIP,  47 + NT_END * NEWS_SETTING_BASELINE_SKIP,
 	STR_MESSAGES_ALL, STR_NULL},
--- a/src/npf.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/npf.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -22,6 +22,7 @@
 #include "functions.h"
 #include "vehicle_base.h"
 #include "settings_type.h"
+#include "tunnelbridge.h"
 
 static AyStar _npf_aystar;
 
@@ -176,9 +177,7 @@
 	if (GetTunnelBridgeDirection(tile) == ReverseDiagDir(exitdir)) {
 		/* We just popped out if this tunnel, since were
 		 * facing the tunnel exit */
-		FindLengthOfTunnelResult flotr;
-		flotr = FindLengthOfTunnel(tile, ReverseDiagDir(exitdir));
-		return flotr.length * NPF_TILE_LENGTH;
+		return NPF_TILE_LENGTH * (GetTunnelBridgeLength(current->tile, GetOtherTunnelEnd(current->tile)) + 1);
 		/* @todo: Penalty for tunnels? */
 	} else {
 		/* We are entering the tunnel, the enter tile is just a
@@ -189,7 +188,7 @@
 
 static inline uint NPFBridgeCost(AyStarNode *current)
 {
-	return NPF_TILE_LENGTH * GetBridgeLength(current->tile, GetOtherBridgeEnd(current->tile));
+	return NPF_TILE_LENGTH * GetTunnelBridgeLength(current->tile, GetOtherBridgeEnd(current->tile));
 }
 
 static uint NPFSlopeCost(AyStarNode* current)
@@ -668,7 +667,7 @@
  * multiple targets that are spread around, we should perform a breadth first
  * search by specifiying CalcZero as our heuristic.
  */
-static NPFFoundTargetData NPFRouteInternal(AyStarNode* start1, AyStarNode* start2, NPFFindStationOrTileData* target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes, uint reverse_penalty)
+static NPFFoundTargetData NPFRouteInternal(AyStarNode* start1, AyStarNode* start2, NPFFindStationOrTileData* target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, TransportType type, uint sub_type, Owner owner, RailTypes railtypes, uint reverse_penalty)
 {
 	int r;
 	NPFFoundTargetData result;
@@ -727,7 +726,7 @@
 	return result;
 }
 
-NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
 {
 	AyStarNode start1;
 	AyStarNode start2;
@@ -744,12 +743,12 @@
 	return NPFRouteInternal(&start1, (IsValidTile(tile2) ? &start2 : NULL), target, NPFFindStationOrTile, NPFCalcStationOrTileHeuristic, type, sub_type, owner, railtypes, 0);
 }
 
-NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
 {
 	return NPFRouteToStationOrTileTwoWay(tile, trackdir, INVALID_TILE, INVALID_TRACKDIR, target, type, sub_type, owner, railtypes);
 }
 
-NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes, uint reverse_penalty)
+NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypes railtypes, uint reverse_penalty)
 {
 	AyStarNode start1;
 	AyStarNode start2;
@@ -768,12 +767,12 @@
 	return NPFRouteInternal(&start1, (IsValidTile(tile2) ? &start2 : NULL), NULL, NPFFindDepot, NPFCalcZero, type, sub_type, owner, railtypes, reverse_penalty);
 }
 
-NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
 {
 	return NPFRouteToDepotBreadthFirstTwoWay(tile, trackdir, INVALID_TILE, INVALID_TRACKDIR, type, sub_type, owner, railtypes, 0);
 }
 
-NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
 {
 	/* Okay, what we're gonna do. First, we look at all depots, calculate
 	 * the manhatten distance to get to each depot. We then sort them by
--- a/src/npf.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/npf.h	Sun Feb 03 20:17:54 2008 +0000
@@ -10,6 +10,7 @@
 #include "vehicle_type.h"
 #include "tile_type.h"
 #include "track_type.h"
+#include "core/bitmath_func.hpp"
 
 /* mowing grass */
 enum {
@@ -77,28 +78,28 @@
 /* Will search from the given tile and direction, for a route to the given
  * station for the given transport type. See the declaration of
  * NPFFoundTargetData above for the meaning of the result. */
-NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes);
 
 /* Will search as above, but with two start nodes, the second being the
  * reverse. Look at the NPF_FLAG_REVERSE flag in the result node to see which
  * direction was taken (NPFGetBit(result.node, NPF_FLAG_REVERSE)) */
-NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes);
 
 /* Will search a route to the closest depot. */
 
 /* Search using breadth first. Good for little track choice and inaccurate
  * heuristic, such as railway/road.*/
-NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypes railtypes);
 /* Same as above but with two start nodes, the second being the reverse. Call
  * NPFGetBit(result.node, NPF_FLAG_REVERSE) to see from which node the path
  * orginated. All pathfs from the second node will have the given
  * reverse_penalty applied (NPF_TILE_LENGTH is the equivalent of one full
  * tile).
  */
-NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes, uint reverse_penalty);
+NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypes railtypes, uint reverse_penalty);
 /* Search by trying each depot in order of Manhattan Distance. Good for lots
  * of choices and accurate heuristics, such as water. */
-NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypes railtypes);
 
 void NPFFillWithOrderData(NPFFindStationOrTileData* fstd, Vehicle* v);
 
--- a/src/oldloader.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/oldloader.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,11 +5,11 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "station_map.h"
-#include "table/strings.h"
 #include "town.h"
 #include "industry.h"
 #include "station.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "engine.h"
 #include "aircraft.h"
 #include "roadveh.h"
@@ -25,6 +25,9 @@
 #include "date_func.h"
 #include "vehicle_func.h"
 #include "variables.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 enum {
 	HEADER_SIZE = 49,
@@ -1086,7 +1089,8 @@
 
 		if (_old_next_ptr != 0xFFFF) v->next = GetVehiclePoolSize() <= _old_next_ptr ? new (_old_next_ptr) InvalidVehicle() : GetVehicle(_old_next_ptr);
 
-		v->string_id = RemapOldStringID(_old_string_id);
+		_old_string_id = RemapOldStringID(_old_string_id);
+		v->name = CopyFromOldName(_old_string_id);
 
 		/* Vehicle-subtype is different in TTD(Patch) */
 		if (v->type == VEH_SPECIAL) v->subtype = v->subtype >> 1;
@@ -1102,7 +1106,7 @@
 }
 
 static const OldChunks sign_chunk[] = {
-	OCL_SVAR( OC_UINT16, Sign, str ),
+	OCL_VAR ( OC_UINT16, 1, &_old_string_id ),
 	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, x ),
 	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, y ),
 	OCL_SVAR( OC_FILE_U16 | OC_VAR_I8, Sign, z ),
@@ -1114,7 +1118,13 @@
 
 static bool LoadOldSign(LoadgameState *ls, int num)
 {
-	return LoadChunk(ls, new (num) Sign(), sign_chunk);
+	Sign *si = new (num) Sign();
+	if (!LoadChunk(ls, si, sign_chunk)) return false;
+
+	_old_string_id = RemapOldStringID(_old_string_id);
+	si->name = CopyFromOldName(_old_string_id);
+
+	return true;
 }
 
 static const OldChunks engine_chunk[] = {
@@ -1151,6 +1161,13 @@
 	return true;
 }
 
+static bool LoadOldEngineName(LoadgameState *ls, int num)
+{
+	Engine *e = GetEngine(num);
+	e->name = CopyFromOldName(RemapOldStringID(ReadUint16(ls)));
+	return true;
+}
+
 static const OldChunks subsidy_chunk[] = {
 	OCL_SVAR(  OC_UINT8, Subsidy, cargo_type ),
 	OCL_SVAR(  OC_UINT8, Subsidy, age ),
@@ -1292,7 +1309,7 @@
 	OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_date ),
 	OCL_VAR ( OC_UINT16,   1, &_date_fract ),
 	OCL_NULL( 600 ),            ///< TextEffects
-	OCL_VAR ( OC_UINT32,   2, &_random_seeds[0] ),
+	OCL_VAR ( OC_UINT32,   2, &_random.state ),
 
 	OCL_ASSERT( 0x264 ),
 	OCL_CHUNK(  70, LoadOldTown ),
@@ -1357,7 +1374,7 @@
 
 	OCL_NULL( 144 ),             ///< cargo-stuff, calculated in InitializeLandscapeVariables
 
-	OCL_VAR ( OC_UINT16,  256, &_engine_name_strings[0] ),
+	OCL_CHUNK(256, LoadOldEngineName ),
 
 	OCL_NULL( 144 ),             ///< AI cargo-stuff, calculated in InitializeLandscapeVariables
 	OCL_NULL( 2 ),               ///< Company indexes of players, no longer in use
@@ -1456,23 +1473,14 @@
 				 * clear it for ourselves and let OTTD's rebuild PBS itself */
 				_m[i].m4 &= 0xF; /* Only keep the lower four bits; upper four is PBS */
 				break;
-			case MP_WATER: {
-				/* TTDPatch has all tiles touching water as coast (water)-type, we don't.
-				 * This is only true from a certain TTDP version, but there is no harm
-				 * in checking all the time */
-				Slope s = GetTileSlope(i, NULL);
-				if (s == SLOPE_ENW || s == SLOPE_NWS || s == SLOPE_SEN || s == SLOPE_WSE || IsSteepSlope(s)) {
-					SetTileType(i, MP_CLEAR);
-					SetTileOwner(i, OWNER_NONE);
-				}
-			} break;
 			default: break;
 		}
 	}
 
 	/* Make sure the available engines are really available, otherwise
 	 * we will get a "new vehicle"-spree. */
-	for (Engine *e = _engines; e != endof(_engines); e++) {
+	Engine *e;
+	FOR_ALL_ENGINES(e) {
 		if (_date >= (e->intro_date + 365)) {
 			e->flags = (e->flags & ~ENGINE_EXCLUSIVE_PREVIEW) | ENGINE_AVAILABLE;
 			e->player_avail = (byte)-1;
--- a/src/openttd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/openttd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,7 +10,6 @@
 #include "ai/ai_factory.hpp"
 
 #include "openttd.h"
-#include "table/strings.h"
 #include "bridge_map.h"
 #include "mixer.h"
 #include "spritecache.h"
@@ -25,7 +24,8 @@
 #include "gfx_func.h"
 #include "window_func.h"
 #include "window_gui.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "command_func.h"
 #include "town.h"
 #include "industry.h"
@@ -38,6 +38,7 @@
 #include "console.h"
 #include "screenshot.h"
 #include "network/network.h"
+#include "network/network_internal.h"
 #include "signs.h"
 #include "depot.h"
 #include "waypoint.h"
@@ -65,6 +66,7 @@
 #include "vehicle_func.h"
 #include "sound_func.h"
 #include "variables.h"
+#include "road_func.h"
 
 #include "bridge_map.h"
 #include "clear_map.h"
@@ -76,9 +78,13 @@
 #include "tree_map.h"
 #include "tunnelbridge_map.h"
 #include "void_map.h"
+#include "water.h"
+#include "settings_type.h"
 
 #include <stdarg.h>
 
+#include "table/strings.h"
+
 void CallLandscapeTick();
 void IncreaseDate();
 void DoPaletteAnimations();
@@ -324,6 +330,8 @@
 	if (_music_driver->IsSongPlaying()) ResetMusic();
 }
 
+byte _no_scroll;
+byte _savegame_sort_order;
 #if defined(UNIX) && !defined(__MORPHOS__)
 extern void DedicatedFork();
 #endif
@@ -705,12 +713,14 @@
 	SettingsDisableElrail(_patches.disable_elrails);
 	SetDefaultRailGui();
 
+#ifdef ENABLE_NETWORK
 	/* We are the server, we start a new player (not dedicated),
 	 * so set the default password *if* needed. */
 	if (_network_server && !StrEmpty(_network_default_company_pass)) {
 		char *password = _network_default_company_pass;
 		NetworkChangeCompanyPassword(1, &password);
 	}
+#endif /* ENABLE_NETWORK */
 
 	MarkWholeScreenDirty();
 }
@@ -848,6 +858,13 @@
 		if (_is_network_server) {
 			/* But not if we are going to the menu */
 			if (new_mode != SM_MENU) {
+				/* check if we should reload the config */
+				if (_network_reload_cfg) {
+					LoadFromConfig();
+					_patches = _patches_newgame;
+					_opt = _opt_newgame;
+					ResetGRFConfig(false);
+				}
 				NetworkServerStart();
 			} else {
 				/* This client no longer wants to be a network-server */
@@ -969,8 +986,6 @@
  * That check is enforced in DoCommand. */
 void StateGameLoop()
 {
-	ClearStorageChanges(false);
-
 	/* dont execute the state loop during pause */
 	if (_pause_game) {
 		CallWindowTickEvent();
@@ -978,10 +993,14 @@
 	}
 	if (IsGeneratingWorld()) return;
 
+	ClearStorageChanges(false);
+
 	if (_game_mode == GM_EDITOR) {
 		RunTileLoop();
 		CallVehicleTicks();
 		CallLandscapeTick();
+		ClearStorageChanges(true);
+
 		CallWindowTickEvent();
 		NewsLoop();
 	} else {
@@ -995,6 +1014,7 @@
 		RunTileLoop();
 		CallVehicleTicks();
 		CallLandscapeTick();
+		ClearStorageChanges(true);
 
 		AI_RunGameLoop();
 
@@ -1349,6 +1369,34 @@
 		}
 	}
 
+	if (CheckSavegameVersion(84)) {
+		Player *p;
+		FOR_ALL_PLAYERS(p) {
+			p->name = CopyFromOldName(p->name_1);
+			if (p->name != NULL) p->name_1 = STR_SV_UNNAMED;
+			p->president_name = CopyFromOldName(p->president_name_1);
+			if (p->president_name != NULL) p->president_name_1 = SPECSTR_PRESIDENT_NAME;
+		}
+
+		Station *st;
+		FOR_ALL_STATIONS(st) {
+			st->name = CopyFromOldName(st->string_id);
+			if (st->name != NULL) st->string_id = STR_EMPTY;
+		}
+
+		Town *t;
+		FOR_ALL_TOWNS(t) {
+			t->name = CopyFromOldName(t->townnametype);
+			if (t->name != NULL) t->townnametype = SPECSTR_TOWNNAME_START + _opt.town_name;
+		}
+
+		Waypoint *wp;
+		FOR_ALL_WAYPOINTS(wp) {
+			wp->name = CopyFromOldName(wp->string);
+			wp->string = STR_EMPTY;
+		}
+	}
+
 	/* convert road side to my format. */
 	if (_opt.road_side) _opt.road_side = 1;
 
@@ -1630,8 +1678,8 @@
 
 				case MP_TUNNELBRIDGE:
 					/* Middle part of "old" bridges */
-					if (old_bridge && IsBridgeTile(t) && HasBit(_m[t].m5, 6)) break;
-					if ((IsTunnel(t) ? GetTunnelBridgeTransportType(t) : (old_bridge ? (TransportType)GB(_m[t].m5, 1, 2) : GetTunnelBridgeTransportType(t))) == TRANSPORT_ROAD) {
+					if (old_bridge && IsBridge(t) && HasBit(_m[t].m5, 6)) break;
+					if (((old_bridge && IsBridge(t)) ? (TransportType)GB(_m[t].m5, 1, 2) : GetTunnelBridgeTransportType(t)) == TRANSPORT_ROAD) {
 						SetRoadTypes(t, ROADTYPES_ROAD);
 					}
 					break;
@@ -1673,7 +1721,15 @@
 						if (GB(_m[t].m5, 3, 2) == 0) {
 							MakeClear(t, CLEAR_GRASS, 3);
 						} else {
-							MakeCanal(t, (GetTileOwner(t) == OWNER_WATER) ? OWNER_NONE : GetTileOwner(t));
+							if (GetTileSlope(t, NULL) != SLOPE_FLAT) {
+								MakeShore(t);
+							} else {
+								if (GetTileOwner(t) == OWNER_WATER) {
+									MakeWater(t);
+								} else {
+									MakeCanal(t, GetTileOwner(t), Random());
+								}
+							}
 						}
 					}
 					SetBridgeMiddle(t, axis);
@@ -1942,10 +1998,6 @@
 		}
 	}
 
-	if (CheckSavegameVersion(37)) {
-		ConvertNameArray();
-	}
-
 	/* from version 38 we have optional elrails, since we cannot know the
 	 * preference of a user, let elrails enabled; it can be disabled manually */
 	if (CheckSavegameVersion(38)) _patches.disable_elrails = false;
@@ -1989,8 +2041,8 @@
 		}
 	}
 
-	/* Count the buildings after updating the map array. */
-	AfterLoadCountBuildings();
+	/* Check that house ids are still valid. */
+	CheckHouseIDs();
 
 	if (CheckSavegameVersion(43)) {
 		for (TileIndex t = 0; t < map_size; t++) {
@@ -2281,6 +2333,35 @@
 		}
 	}
 
+	if (CheckSavegameVersion(86)) {
+		for (TileIndex t = 0; t < map_size; t++) {
+			/* Now all crossings should be in correct state */
+			if (IsLevelCrossingTile(t)) UpdateLevelCrossing(t, false);
+
+			/* Move river flag and update canals to use water class */
+			if (IsTileType(t, MP_WATER)) {
+				if (_m[t].m5 == 2) {
+					MakeRiver(t, Random());
+				} else {
+					Owner o = GetTileOwner(t);
+					if (IsWater(t) && o != OWNER_WATER) {
+						MakeCanal(t, o, Random());
+					}
+				}
+			}
+		}
+
+		/* Update locks, depots, docks and buoys to have a water class based
+		 * on its neighbouring tiles. Done after river and canal updates to
+		 * ensure neighbours are correct. */
+		for (TileIndex t = 0; t < map_size; t++) {
+			if (GetTileSlope(t, NULL) != SLOPE_FLAT) continue;
+
+			if (IsTileType(t, MP_WATER) && (GetWaterTileType(t) == WATER_TILE_LOCK || IsShipDepot(t))) SetWaterClassDependingOnSurroundings(t);
+			if (IsTileType(t, MP_STATION) && (IsDock(t) || IsBuoy(t))) SetWaterClassDependingOnSurroundings(t);
+		}
+	}
+
 	return InitializeWindowsAndCaches();
 }
 
--- a/src/openttd.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/openttd.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,9 +8,6 @@
 #define VARDEF extern
 #endif
 
-#include "core/enum_type.hpp"
-#include "strings_type.h"
-
 // Forward declarations of structs.
 struct Depot;
 struct Waypoint;
@@ -41,11 +38,9 @@
 /* DestinationID must be at least as large as every these below, because it can
  * be any of them
  */
-assert_compile(sizeof(DestinationID) == sizeof(DepotID));
-assert_compile(sizeof(DestinationID) == sizeof(WaypointID));
-assert_compile(sizeof(DestinationID) == sizeof(StationID));
-
-typedef uint32 PlayerFace; ///< player face bits, info see in player_face.h
+assert_compile(sizeof(DestinationID) >= sizeof(DepotID));
+assert_compile(sizeof(DestinationID) >= sizeof(WaypointID));
+assert_compile(sizeof(DestinationID) >= sizeof(StationID));
 
 enum GameModes {
 	GM_MENU,
@@ -82,33 +77,6 @@
 	IG_DATE_RESET = 1,  /* Reset the date when initializing a game */
 };
 
-enum Owner {
-	PLAYER_INACTIVE_CLIENT = 253,
-	PLAYER_NEW_COMPANY = 254,
-	PLAYER_SPECTATOR = 255,
-	OWNER_BEGIN     = 0x00,
-	PLAYER_FIRST    = 0x00,
-	MAX_PLAYERS     = 8,
-	OWNER_TOWN      = 0x0F, // a town owns the tile
-	OWNER_NONE      = 0x10, // nobody owns the tile
-	OWNER_WATER     = 0x11, // "water" owns the tile
-	OWNER_END       = 0x12,
-	INVALID_OWNER   = 0xFF,
-	INVALID_PLAYER  = 0xFF,
-	/* Player identifiers All players below MAX_PLAYERS are playable
-	* players, above, they are special, computer controlled players */
-};
-
-typedef Owner PlayerID;
-
-DECLARE_POSTFIX_INCREMENT(Owner);
-
-/** Define basic enum properties */
-template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};
-typedef TinyEnumT<Owner> OwnerByte;
-typedef OwnerByte PlayerByte;
-
-
 enum TransportType {
 	/* These constants are for now linked to the representation of bridges
 	 * and tunnels, so they can be used by GetTileTrackStatus_TunnelBridge.
@@ -124,11 +92,6 @@
 	INVALID_TRANSPORT = 0xff,
 };
 
-/** Define basic enum properties */
-template <> struct EnumPropsT<TransportType> : MakeEnumPropsT<TransportType, byte, TRANSPORT_BEGIN, TRANSPORT_END, INVALID_TRANSPORT> {};
-typedef TinyEnumT<TransportType> TransportTypeByte;
-
-
 /* Display Options */
 enum {
 	DO_SHOW_TOWN_NAMES    = 0,
@@ -149,31 +112,6 @@
 	NUM_LANDSCAPE = 4,
 };
 
-#define GAME_DIFFICULTY_NUM 18
-
-/** Specific type for Game Difficulty to ease changing the type */
-typedef uint16 GDType;
-struct GameDifficulty {
-	GDType max_no_competitors;
-	GDType competitor_start_time;
-	GDType number_towns;
-	GDType number_industries;
-	GDType max_loan;
-	GDType initial_interest;
-	GDType vehicle_costs;
-	GDType competitor_speed;
-	GDType competitor_intelligence; // no longer in use
-	GDType vehicle_breakdowns;
-	GDType subsidy_multiplier;
-	GDType construction_cost;
-	GDType terrain_type;
-	GDType quantity_sea_lakes;
-	GDType economy;
-	GDType line_reverse_mode;
-	GDType disasters;
-	GDType town_council_tolerance; // minimum required town ratings to be allowed to demolish stuff
-};
-
 struct ViewportSign {
 	int32 left;
 	int32 top;
@@ -187,7 +125,7 @@
 	SORT_BY_NAME    = 2
 };
 
-VARDEF byte _savegame_sort_order;
+extern byte _savegame_sort_order;
 
 enum {
 	MAX_SCREEN_WIDTH  = 2048,
@@ -203,7 +141,7 @@
 	SCROLL_SAVE = 2,
 	SCROLL_CHAT = 4,
 };
-VARDEF byte _no_scroll;
+extern byte _no_scroll;
 
 /** To have a concurrently running thread interface with the main program, use
  * the OTTD_SendThreadMessage() function. Actions to perform upon the message are handled
--- a/src/order.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/order.h	Sun Feb 03 20:17:54 2008 +0000
@@ -37,32 +37,32 @@
 typedef TinyEnumT<OrderType> OrderTypeByte;
 
 
-/* Order flags -- please use OFB instead OF and use HASBIT/SETBIT/CLEARBIT */
+/* Order flags -- please use OF instead OF and use HASBIT/SETBIT/CLEARBIT */
 
 /** Order flag masks - these are for direct bit operations */
 enum OrderFlagMasks {
 	//Flags for stations:
 	/** vehicle will transfer cargo (i. e. not deliver to nearby industry/town even if accepted there) */
-	OF_TRANSFER           = 0x1,
-	/** If OF_TRANSFER is not set, drop any cargo loaded. If accepted, deliver, otherwise cargo remains at the station.
+	OFB_TRANSFER           = 0x1,
+	/** If OFB_TRANSFER is not set, drop any cargo loaded. If accepted, deliver, otherwise cargo remains at the station.
       * No new cargo is loaded onto the vehicle whatsoever */
-	OF_UNLOAD             = 0x2,
+	OFB_UNLOAD             = 0x2,
 	/** Wait for full load of all vehicles, or of at least one cargo type, depending on patch setting
 	  * @todo make this two different flags */
-	OF_FULL_LOAD          = 0x4,
+	OFB_FULL_LOAD          = 0x4,
 
 	//Flags for depots:
 	/** The current depot-order was initiated because it was in the vehicle's order list */
-	OF_PART_OF_ORDERS     = 0x2,
-	/** if OF_PART_OF_ORDERS is not set, this will cause the vehicle to be stopped in the depot */
-	OF_HALT_IN_DEPOT      = 0x4,
-	/** if OF_PART_OF_ORDERS is set, this will cause the order only be come active if the vehicle needs servicing */
-	OF_SERVICE_IF_NEEDED  = 0x4, //used when OF_PART_OF_ORDERS is set.
+	OFB_PART_OF_ORDERS     = 0x2,
+	/** if OFB_PART_OF_ORDERS is not set, this will cause the vehicle to be stopped in the depot */
+	OFB_HALT_IN_DEPOT      = 0x4,
+	/** if OFB_PART_OF_ORDERS is set, this will cause the order only be come active if the vehicle needs servicing */
+	OFB_SERVICE_IF_NEEDED  = 0x4, //used when OFB_PART_OF_ORDERS is set.
 
 	//Common flags
 	/** This causes the vehicle not to stop at intermediate OR the destination station (depending on patch settings)
 	  * @todo make this two different flags */
-	OF_NON_STOP           = 0x8
+	OFB_NON_STOP           = 0x8
 };
 
 /** Order flags bits - these are for the *BIT macros
@@ -70,13 +70,13 @@
  * @see OrderFlagMasks
  */
 enum {
-	OFB_TRANSFER          = 0,
-	OFB_UNLOAD            = 1,
-	OFB_FULL_LOAD         = 2,
-	OFB_PART_OF_ORDERS    = 1,
-	OFB_HALT_IN_DEPOT     = 2,
-	OFB_SERVICE_IF_NEEDED = 2,
-	OFB_NON_STOP          = 3
+	OF_TRANSFER          = 0,
+	OF_UNLOAD            = 1,
+	OF_FULL_LOAD         = 2,
+	OF_PART_OF_ORDERS    = 1,
+	OF_HALT_IN_DEPOT     = 2,
+	OF_SERVICE_IF_NEEDED = 2,
+	OF_NON_STOP          = 3
 };
 
 
@@ -121,17 +121,18 @@
 };
 
 struct BackuppedOrders {
-	BackuppedOrders() : order(NULL) { }
+	BackuppedOrders() : order(NULL), name(NULL) { }
+	~BackuppedOrders() { free(order); free(name); }
 
 	VehicleID clone;
 	VehicleOrderID orderindex;
 	Order *order;
 	uint16 service_interval;
-	char name[32];
+	char *name;
 };
 
-VARDEF TileIndex _backup_orders_tile;
-VARDEF BackuppedOrders _backup_orders_data;
+extern TileIndex _backup_orders_tile;
+extern BackuppedOrders _backup_orders_data;
 
 static inline VehicleOrderID GetMaxOrderIndex()
 {
@@ -211,7 +212,6 @@
 bool VehicleHasDepotOrders(const Vehicle *v);
 void CheckOrders(const Vehicle*);
 void DeleteVehicleOrders(Vehicle *v);
-bool IsOrderListShared(const Vehicle *v);
 void AssignOrder(Order *order, Order data);
 bool CheckForValidOrders(const Vehicle* v);
 
--- a/src/order_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/order_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,11 +7,10 @@
 #include "order.h"
 #include "airport.h"
 #include "depot.h"
-#include "table/strings.h"
 #include "waypoint.h"
 #include "command_func.h"
 #include "station.h"
-#include "player.h"
+#include "player_func.h"
 #include "news.h"
 #include "saveload.h"
 #include "vehicle_gui.h"
@@ -24,6 +23,11 @@
 #include "settings_type.h"
 #include "string_func.h"
 
+#include "table/strings.h"
+
+TileIndex _backup_orders_tile;
+BackuppedOrders _backup_orders_data;
+
 DEFINE_OLD_POOL_GENERIC(Order, Order)
 
 /**
@@ -215,19 +219,19 @@
 			 * non-stop orders (if any) are only valid for trains */
 			switch (new_order.flags) {
 				case 0:
-				case OF_FULL_LOAD:
-				case OF_FULL_LOAD | OF_TRANSFER:
-				case OF_UNLOAD:
-				case OF_UNLOAD | OF_TRANSFER:
-				case OF_TRANSFER:
+				case OFB_FULL_LOAD:
+				case OFB_FULL_LOAD | OFB_TRANSFER:
+				case OFB_UNLOAD:
+				case OFB_UNLOAD | OFB_TRANSFER:
+				case OFB_TRANSFER:
 					break;
 
-				case OF_NON_STOP:
-				case OF_NON_STOP | OF_FULL_LOAD:
-				case OF_NON_STOP | OF_FULL_LOAD | OF_TRANSFER:
-				case OF_NON_STOP | OF_UNLOAD:
-				case OF_NON_STOP | OF_UNLOAD | OF_TRANSFER:
-				case OF_NON_STOP | OF_TRANSFER:
+				case OFB_NON_STOP:
+				case OFB_NON_STOP | OFB_FULL_LOAD:
+				case OFB_NON_STOP | OFB_FULL_LOAD | OFB_TRANSFER:
+				case OFB_NON_STOP | OFB_UNLOAD:
+				case OFB_NON_STOP | OFB_UNLOAD | OFB_TRANSFER:
+				case OFB_NON_STOP | OFB_TRANSFER:
 					if (v->type != VEH_TRAIN) return CMD_ERROR;
 					break;
 
@@ -278,12 +282,12 @@
 			 * order [+ halt] [+ non-stop]
 			 * non-stop orders (if any) are only valid for trains */
 			switch (new_order.flags) {
-				case OF_PART_OF_ORDERS:
-				case OF_PART_OF_ORDERS | OF_HALT_IN_DEPOT:
+				case OFB_PART_OF_ORDERS:
+				case OFB_PART_OF_ORDERS | OFB_HALT_IN_DEPOT:
 					break;
 
-				case OF_NON_STOP | OF_PART_OF_ORDERS:
-				case OF_NON_STOP | OF_PART_OF_ORDERS | OF_HALT_IN_DEPOT:
+				case OFB_NON_STOP | OFB_PART_OF_ORDERS:
+				case OFB_NON_STOP | OFB_PART_OF_ORDERS | OFB_HALT_IN_DEPOT:
 					if (v->type != VEH_TRAIN) return CMD_ERROR;
 					break;
 
@@ -308,7 +312,7 @@
 			switch (new_order.flags) {
 				case 0: break;
 
-				case OF_NON_STOP:
+				case OFB_NON_STOP:
 					if (v->type != VEH_TRAIN) return CMD_ERROR;
 					break;
 
@@ -510,7 +514,7 @@
 			/* NON-stop flag is misused to see if a train is in a station that is
 			 * on his order list or not */
 			if (sel_ord == u->cur_order_index && u->current_order.type == OT_LOADING &&
-					HasBit(u->current_order.flags, OFB_NON_STOP)) {
+					HasBit(u->current_order.flags, OF_NON_STOP)) {
 				u->current_order.flags = 0;
 			}
 
@@ -552,7 +556,7 @@
 			v->LeaveStation();
 			/* NON-stop flag is misused to see if a train is in a station that is
 			 * on his order list or not */
-			if (HasBit(v->current_order.flags, OFB_NON_STOP)) v->current_order.flags = 0;
+			if (HasBit(v->current_order.flags, OF_NON_STOP)) v->current_order.flags = 0;
 		}
 
 		InvalidateVehicleOrder(v);
@@ -669,7 +673,7 @@
 	VehicleID veh   = GB(p1,  0, 16);
 
 	if (!IsValidVehicleID(veh)) return CMD_ERROR;
-	if (p2 != OFB_FULL_LOAD && p2 != OFB_UNLOAD && p2 != OFB_NON_STOP && p2 != OFB_TRANSFER) return CMD_ERROR;
+	if (p2 != OF_FULL_LOAD && p2 != OF_UNLOAD && p2 != OF_NON_STOP && p2 != OF_TRANSFER) return CMD_ERROR;
 
 	v = GetVehicle(veh);
 
@@ -680,26 +684,26 @@
 
 	order = GetVehicleOrder(v, sel_ord);
 	if ((order->type != OT_GOTO_STATION  || GetStation(order->dest)->IsBuoy()) &&
-			(order->type != OT_GOTO_DEPOT    || p2 == OFB_UNLOAD) &&
-			(order->type != OT_GOTO_WAYPOINT || p2 != OFB_NON_STOP)) {
+			(order->type != OT_GOTO_DEPOT    || p2 == OF_UNLOAD) &&
+			(order->type != OT_GOTO_WAYPOINT || p2 != OF_NON_STOP)) {
 		return CMD_ERROR;
 	}
 
 	if (flags & DC_EXEC) {
 		switch (p2) {
-		case OFB_FULL_LOAD:
-			ToggleBit(order->flags, OFB_FULL_LOAD);
-			if (order->type != OT_GOTO_DEPOT) ClrBit(order->flags, OFB_UNLOAD);
+		case OF_FULL_LOAD:
+			ToggleBit(order->flags, OF_FULL_LOAD);
+			if (order->type != OT_GOTO_DEPOT) ClrBit(order->flags, OF_UNLOAD);
 			break;
-		case OFB_UNLOAD:
-			ToggleBit(order->flags, OFB_UNLOAD);
-			ClrBit(order->flags, OFB_FULL_LOAD);
+		case OF_UNLOAD:
+			ToggleBit(order->flags, OF_UNLOAD);
+			ClrBit(order->flags, OF_FULL_LOAD);
 			break;
-		case OFB_NON_STOP:
-			ToggleBit(order->flags, OFB_NON_STOP);
+		case OF_NON_STOP:
+			ToggleBit(order->flags, OF_NON_STOP);
 			break;
-		case OFB_TRANSFER:
-			ToggleBit(order->flags, OFB_TRANSFER);
+		case OF_TRANSFER:
+			ToggleBit(order->flags, OF_TRANSFER);
 			break;
 		default: NOT_REACHED();
 		}
@@ -722,8 +726,8 @@
 				 */
 				if (sel_ord == u->cur_order_index &&
 						u->current_order.type != OT_GOTO_DEPOT &&
-						HasBit(u->current_order.flags, OFB_FULL_LOAD) != HasBit(order->flags, OFB_FULL_LOAD)) {
-					ToggleBit(u->current_order.flags, OFB_FULL_LOAD);
+						HasBit(u->current_order.flags, OF_FULL_LOAD) != HasBit(order->flags, OF_FULL_LOAD)) {
+					ToggleBit(u->current_order.flags, OF_FULL_LOAD);
 				}
 				InvalidateVehicleOrder(u);
 			}
@@ -833,7 +837,7 @@
 			}
 
 			/* make sure there are orders available */
-			delta = IsOrderListShared(dst) ? src->num_orders + 1 : src->num_orders - dst->num_orders;
+			delta = dst->IsOrderListShared() ? src->num_orders + 1 : src->num_orders - dst->num_orders;
 			if (!HasOrderPoolFree(delta))
 				return_cmd_error(STR_8831_NO_MORE_SPACE_FOR_ORDERS);
 
@@ -905,7 +909,7 @@
 			InvalidateVehicleOrder(u);
 
 			/* If the vehicle already got the current depot set as current order, then update current order as well */
-			if (u->cur_order_index == order_number && HasBit(u->current_order.flags, OFB_PART_OF_ORDERS)) {
+			if (u->cur_order_index == order_number && HasBit(u->current_order.flags, OF_PART_OF_ORDERS)) {
 				u->current_order.refit_cargo = cargo;
 				u->current_order.refit_subtype = subtype;
 			}
@@ -926,21 +930,16 @@
 	/* Make sure we always have freed the stuff */
 	free(bak->order);
 	bak->order = NULL;
+	free(bak->name);
+	bak->name = NULL;
 
 	/* Save general info */
 	bak->orderindex       = v->cur_order_index;
 	bak->service_interval = v->service_interval;
-
-	/* Safe custom string, if any */
-	if (!IsCustomName(v->string_id)) {
-		bak->name[0] = '\0';
-	} else {
-		SetDParam(0, v->index);
-		GetString(bak->name, STR_VEHICLE_NAME, lastof(bak->name));
-	}
+	if (v->name != NULL) bak->name = strdup(v->name);
 
 	/* If we have shared orders, store it on a special way */
-	if (IsOrderListShared(v)) {
+	if (v->IsOrderListShared()) {
 		const Vehicle *u = (v->next_shared) ? v->next_shared : v->prev_shared;
 
 		bak->clone = u->index;
@@ -979,7 +978,7 @@
 void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *bak)
 {
 	/* If we have a custom name, process that */
-	if (!StrEmpty(bak->name)) {
+	if (bak->name != NULL) {
 		_cmd_text = bak->name;
 		DoCommandP(0, v->index, 0, NULL, CMD_NAME_VEHICLE);
 	}
@@ -1210,7 +1209,7 @@
 
 	/* If we have a shared order-list, don't delete the list, but just
 	    remove our pointer */
-	if (IsOrderListShared(v)) {
+	if (v->IsOrderListShared()) {
 		Vehicle *u = v;
 
 		v->orders = NULL;
@@ -1258,17 +1257,6 @@
 	return (_patches.servint_ispercent) ? Clamp(index, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(index, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS);
 }
 
-/**
- *
- * Check if we share our orders with an other vehicle
- *
- * @return Returns the vehicle who has the same order
- *
- */
-bool IsOrderListShared(const Vehicle *v)
-{
-	return v->next_shared != NULL || v->prev_shared != NULL;
-}
 
 /**
  *
@@ -1331,10 +1319,8 @@
 		if (CheckSavegameVersion(5)) {
 			/* Pre-version 5 had an other layout for orders
 			    (uint16 instead of uint32) */
-			uint16 orders[5000];
-
 			len /= sizeof(uint16);
-			assert (len <= lengthof(orders));
+			uint16 *orders = MallocT<uint16>(len + 1);
 
 			SlArray(orders, len, SLE_UINT16);
 
@@ -1342,11 +1328,11 @@
 				Order *order = new (i) Order();
 				AssignOrder(order, UnpackVersion4Order(orders[i]));
 			}
+
+			free(orders);
 		} else if (CheckSavegameVersionOldStyle(5, 2)) {
-			uint32 orders[5000];
-
-			len /= sizeof(uint32);
-			assert (len <= lengthof(orders));
+			len /= sizeof(uint16);
+			uint16 *orders = MallocT<uint16>(len + 1);
 
 			SlArray(orders, len, SLE_UINT32);
 
@@ -1354,6 +1340,8 @@
 				Order *order = new (i) Order();
 				AssignOrder(order, UnpackOrder(orders[i]));
 			}
+
+			free(orders);
 		}
 
 		/* Update all the next pointer */
--- a/src/order_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/order_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,8 +6,6 @@
 #include "openttd.h"
 #include "road_map.h"
 #include "station_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "station.h"
@@ -27,6 +25,10 @@
 #include "window_func.h"
 #include "vehicle_func.h"
 #include "settings_type.h"
+#include "player_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 enum OrderWindowWidgets {
 	ORDER_WIDGET_CLOSEBOX = 0,
@@ -91,19 +93,19 @@
 
 static StringID StationOrderStrings[] = {
 	STR_8806_GO_TO,
-	STR_8807_GO_TO_TRANSFER,
-	STR_8808_GO_TO_UNLOAD,
-	STR_8809_GO_TO_TRANSFER_UNLOAD,
-	STR_880A_GO_TO_LOAD,
-	STR_880B_GO_TO_TRANSFER_LOAD,
+	STR_GO_TO_TRANSFER,
+	STR_8807_GO_TO_UNLOAD,
+	STR_GO_TO_TRANSFER_UNLOAD,
+	STR_8808_GO_TO_LOAD,
+	STR_GO_TO_TRANSFER_LOAD,
 	STR_NULL,
 	STR_NULL,
-	STR_880C_GO_NON_STOP_TO,
-	STR_880D_GO_TO_NON_STOP_TRANSFER,
-	STR_880E_GO_NON_STOP_TO_UNLOAD,
-	STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD,
-	STR_8810_GO_NON_STOP_TO_LOAD,
-	STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD,
+	STR_880A_GO_NON_STOP_TO,
+	STR_GO_TO_NON_STOP_TRANSFER,
+	STR_880B_GO_NON_STOP_TO_UNLOAD,
+	STR_GO_TO_NON_STOP_TRANSFER_UNLOAD,
+	STR_880C_GO_NON_STOP_TO_LOAD,
+	STR_GO_TO_NON_STOP_TRANSFER_LOAD,
 	STR_NULL
 };
 
@@ -118,7 +120,7 @@
 
 	v = GetVehicle(w->window_number);
 
-	shared_orders = IsOrderListShared(v);
+	shared_orders = v->IsOrderListShared();
 
 	SetVScrollCount(w, v->num_orders + 1);
 
@@ -213,14 +215,14 @@
 						SetDParam(2, GetDepot(order->dest)->town_index);
 
 						switch (v->type) {
-							case VEH_TRAIN: s = (order->flags & OF_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
-							case VEH_ROAD:  s = STR_9038_GO_TO_ROADVEH_DEPOT; break;
+							case VEH_TRAIN: s = (order->flags & OFB_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
+							case VEH_ROAD:  s = STR_GO_TO_ROADVEH_DEPOT; break;
 							case VEH_SHIP:  s = STR_GO_TO_SHIP_DEPOT; break;
 							default: break;
 						}
 					}
 
-					if (order->flags & OF_FULL_LOAD) s++; /* service at */
+					if (order->flags & OFB_FULL_LOAD) s++; /* service at */
 
 					SetDParam(1, s);
 					if (order->refit_cargo < NUM_CARGO) {
@@ -233,7 +235,7 @@
 				}
 
 				case OT_GOTO_WAYPOINT:
-					SetDParam(1, (order->flags & OF_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
+					SetDParam(1, (order->flags & OFB_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
 					SetDParam(2, order->dest);
 					break;
 
@@ -271,7 +273,7 @@
 			if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_player)) {
 				if (IsRailDepot(tile)) {
 					order.type = OT_GOTO_DEPOT;
-					order.flags = OF_PART_OF_ORDERS;
+					order.flags = OFB_PART_OF_ORDERS;
 					order.dest = GetDepotByTile(tile)->index;
 					return order;
 				}
@@ -281,7 +283,7 @@
 		case MP_ROAD:
 			if (GetRoadTileType(tile) == ROAD_TILE_DEPOT && v->type == VEH_ROAD && IsTileOwner(tile, _local_player)) {
 				order.type = OT_GOTO_DEPOT;
-				order.flags = OF_PART_OF_ORDERS;
+				order.flags = OFB_PART_OF_ORDERS;
 				order.dest = GetDepotByTile(tile)->index;
 				return order;
 			}
@@ -291,7 +293,7 @@
 			if (v->type != VEH_AIRCRAFT) break;
 			if (IsHangar(tile) && IsTileOwner(tile, _local_player)) {
 				order.type = OT_GOTO_DEPOT;
-				order.flags = OF_PART_OF_ORDERS;
+				order.flags = OFB_PART_OF_ORDERS;
 				order.dest = GetStationIndex(tile);
 				return order;
 			}
@@ -304,7 +306,7 @@
 				TileIndex tile2 = GetOtherShipDepotTile(tile);
 
 				order.type = OT_GOTO_DEPOT;
-				order.flags = OF_PART_OF_ORDERS;
+				order.flags = OFB_PART_OF_ORDERS;
 				order.dest = GetDepotByTile(tile < tile2 ? tile : tile2)->index;
 				return order;
 			}
@@ -417,7 +419,7 @@
  */
 static void OrderClick_FullLoad(Window *w, const Vehicle *v)
 {
-	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
+	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 }
 
 /**
@@ -428,7 +430,7 @@
  */
 static void OrderClick_Unload(Window *w, const Vehicle *v)
 {
-	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_UNLOAD,    NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
+	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_UNLOAD,    NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 }
 
 /**
@@ -439,7 +441,7 @@
  */
 static void OrderClick_Nonstop(Window *w, const Vehicle *v)
 {
-	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_NON_STOP,  NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
+	DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_NON_STOP,  NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 }
 
 /**
@@ -450,7 +452,7 @@
  */
 static void OrderClick_Transfer(Window* w, const Vehicle* v)
 {
-	DoCommandP(v->tile, v->index + (OrderGetSel(w) <<  16), OFB_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
+	DoCommandP(v->tile, v->index + (OrderGetSel(w) <<  16), OF_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
 }
 
 /**
@@ -759,7 +761,7 @@
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   212,   264,    76,    87, STR_FULLLOAD_OR_SERVICE, STR_NULL},                            // ORDER_WIDGET_FULL_LOAD
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   265,   319,    76,    87, STR_8828_UNLOAD,         STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   265,   319,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
-	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   372,    76,    87, STR_886F_TRANSFER,       STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   372,    76,    87, STR_TRANSFER,            STR_MAKE_THE_HIGHLIGHTED_ORDER},      // ORDER_WIDGET_TRANSFER
 
 	{ WWT_PUSHIMGBTN,   RESIZE_TB,      14,   373,   386,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
 
@@ -796,7 +798,7 @@
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   193,   256,    76,    87, STR_FULLLOAD_OR_SERVICE, STR_NULL},                            // ORDER_WIDGET_FULL_LOAD
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   257,   319,    76,    87, STR_8828_UNLOAD,         STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD
 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   257,   319,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
-	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   383,    76,    87, STR_886F_TRANSFER,       STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   383,    76,    87, STR_TRANSFER,            STR_MAKE_THE_HIGHLIGHTED_ORDER},      // ORDER_WIDGET_TRANSFER
 
 	{ WWT_PUSHIMGBTN,   RESIZE_TB,      14,   384,   397,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
 
--- a/src/os2.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/os2.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,12 +5,15 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "fileio.h"
 #include "fios.h" // opendir/readdir/closedir
 #include "functions.h"
 #include "core/random_func.hpp"
+#include "string_func.h"
+#include "textbuf_gui.h"
+
+#include "table/strings.h"
 
 #include <dirent.h>
 #include <unistd.h>
--- a/src/pathfind.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/pathfind.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -13,10 +13,11 @@
 #include "rail_type.h"
 #include "debug.h"
 #include "tunnel_map.h"
-#include "variables.h"
+#include "settings_type.h"
 #include "depot.h"
 #include "tunnelbridge_map.h"
 #include "core/random_func.hpp"
+#include "tunnelbridge.h"
 
 /* remember which tiles we have already visited so we don't visit them again. */
 static bool TPFSetTileBit(TrackPathFinder *tpf, TileIndex tile, int dir)
@@ -192,69 +193,64 @@
 
 }
 
-
-/* Returns the end tile and the length of a tunnel. The length does not
- * include the starting tile (entry), it does include the end tile (exit).
+/**
+ * Checks if any vehicle can enter/leave tile in given diagdir
+ * Checks only for rail/road depots and road non-drivethrough stations
+ * @param tile tile to check
+ * @param side side of tile we are trying to leave/enter
+ * @param tracktype type of transport
+ * @pre tile has trackbit at that diagdir
+ * @return true iff vehicle can enter/leve the tile in given side
  */
-FindLengthOfTunnelResult FindLengthOfTunnel(TileIndex tile, DiagDirection dir)
+static inline bool CanAccessTileInDir(TileIndex tile, DiagDirection side, TransportType tracktype)
 {
-	TileIndexDiff delta = TileOffsByDiagDir(dir);
-	uint z = GetTileZ(tile);
-	FindLengthOfTunnelResult flotr;
-
-	flotr.length = 0;
+	if (tracktype == TRANSPORT_RAIL) {
+		/* depot from wrong side */
+		if (IsTileDepotType(tile, TRANSPORT_RAIL) && GetRailDepotDirection(tile) != side) return false;
+	} else if (tracktype == TRANSPORT_ROAD) {
+		/* depot from wrong side */
+		if (IsTileDepotType(tile, TRANSPORT_ROAD) && GetRoadDepotDirection(tile) != side) return false;
+		/* non-driverthrough road station from wrong side */
+		if (IsStandardRoadStopTile(tile) && GetRoadStopDir(tile) != side) return false;
+	}
 
-	dir = ReverseDiagDir(dir);
-	do {
-		flotr.length++;
-		tile += delta;
-	} while(
-		!IsTunnelTile(tile) ||
-		GetTunnelBridgeDirection(tile) != dir ||
-		GetTileZ(tile) != z
-	);
-
-	flotr.tile = tile;
-	return flotr;
+	return true;
 }
 
 static const uint16 _tpfmode1_and[4] = { 0x1009, 0x16, 0x520, 0x2A00 };
 
-static uint SkipToEndOfTunnel(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction)
+static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction)
 {
-	FindLengthOfTunnelResult flotr;
-	TPFSetTileBit(tpf, tile, 14);
-	flotr = FindLengthOfTunnel(tile, direction);
-	tpf->rd.cur_length += flotr.length;
-	TPFSetTileBit(tpf, flotr.tile, 14);
-	return flotr.tile;
-}
-
-static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction);
+	const TileIndex tile_org = tile;
 
-/** Most code of the "Normal" case of TPF Mode 1; for signals special tricks
- * have to be done, but those happen in TPFMode1; this is just to prevent
- * gotos ;). */
-static inline void TPFMode1_NormalCase(TrackPathFinder* tpf, TileIndex tile, TileIndex tile_org, DiagDirection direction)
-{
-	/* Check in case of rail if the owner is the same */
-	if (tpf->tracktype == TRANSPORT_RAIL) {
-		/* don't enter train depot from the back */
-		if (IsTileDepotType(tile, TRANSPORT_RAIL) && GetRailDepotDirection(tile) == direction) return;
+	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+		/* wrong track type */
+		if (GetTunnelBridgeTransportType(tile) != tpf->tracktype) return;
 
-		if (IsTileType(tile_org, MP_RAILWAY) || IsTileType(tile_org, MP_STATION) || IsTileType(tile_org, MP_TUNNELBRIDGE))
-			if (IsTileType(tile, MP_RAILWAY) || IsTileType(tile, MP_STATION) || IsTileType(tile, MP_TUNNELBRIDGE))
-				if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
+		DiagDirection dir = GetTunnelBridgeDirection(tile);
+		/* entering tunnel / bridge? */
+		if (dir == direction) {
+			TileIndex endtile = GetOtherTunnelBridgeEnd(tile);
+
+			tpf->rd.cur_length += GetTunnelBridgeLength(tile, endtile) + 1;
+
+			TPFSetTileBit(tpf, tile, 14);
+			TPFSetTileBit(tpf, endtile, 14);
+
+			tile = endtile;
+		} else {
+			/* leaving tunnel / bridge? */
+			if (ReverseDiagDir(dir) != direction) return;
+		}
+	} else {
+		/* can we leave tile in this dir? */
+		if (!CanAccessTileInDir(tile, direction, tpf->tracktype)) return;
 	}
 
-	/* check if the new tile can be entered from that direction */
-	if (tpf->tracktype == TRANSPORT_ROAD) {
-		/* road stops and depots now have a track (r4419)
-		 * don't enter road stop from the back */
-		if (IsStandardRoadStopTile(tile) && ReverseDiagDir(GetRoadStopDir(tile)) != direction) return;
-		/* don't enter road depot from the back */
-		if (IsTileDepotType(tile, TRANSPORT_ROAD) && ReverseDiagDir(GetRoadDepotDirection(tile)) != direction) return;
-	}
+	tile += TileOffsByDiagDir(direction);
+
+	/* can we enter tile in this dir? */
+	if (!CanAccessTileInDir(tile, ReverseDiagDir(direction), tpf->tracktype)) return;
 
 	/* Check if the new tile is a tunnel or bridge head and that the direction
 	 * and transport type match */
@@ -265,10 +261,17 @@
 		}
 	}
 
+	uint32 bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
+
+	/* Check in case of rail if the owner is the same */
+	if (tpf->tracktype == TRANSPORT_RAIL) {
+		if (bits != 0 && GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0) != 0) {
+			if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
+		}
+	}
+
 	tpf->rd.cur_length++;
 
-	uint bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
-
 	if ((byte)bits != tpf->var2) {
 		bits &= _tpfmode1_and[direction];
 		bits |= bits >> 8;
@@ -294,84 +297,6 @@
 	}
 }
 
-static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction)
-{
-	TileIndex tile_org = tile;
-
-	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
-		if (IsTunnel(tile)) {
-			if (GetTunnelBridgeTransportType(tile) != tpf->tracktype) {
-				return;
-			}
-			/* Only skip through the tunnel if heading inwards. We can
-			 * be headed outwards if our starting position was in a
-			 * tunnel and we're pathfinding backwards */
-			if (GetTunnelBridgeDirection(tile) == direction) {
-				tile = SkipToEndOfTunnel(tpf, tile, direction);
-			} else if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) {
-				/* We don't support moving through the sides of a tunnel
-				 * entrance :-) */
-				return;
-			}
-		} else {
-			TileIndex tile_end;
-			if (GetTunnelBridgeDirection(tile) != direction ||
-					GetTunnelBridgeTransportType(tile) != tpf->tracktype) {
-				return;
-			}
-			//fprintf(stderr, "%s: Planning over bridge\n", __func__);
-			// TODO doesn't work - WHAT doesn't work?
-			TPFSetTileBit(tpf, tile, 14);
-			tile_end = GetOtherBridgeEnd(tile);
-			tpf->rd.cur_length += DistanceManhattan(tile, tile_end);
-			tile = tile_end;
-			TPFSetTileBit(tpf, tile, 14);
-		}
-	}
-	tile += TileOffsByDiagDir(direction);
-
-	TPFMode1_NormalCase(tpf, tile, tile_org, direction);
-
-	/* the next is only used when signals are checked.
-	 * seems to go in 2 directions simultaneously */
-
-	/* if i can get rid of this, tail end recursion can be used to minimize
-	 * stack space dramatically. */
-
-	/* If we are doing signal setting, we must reverse at evere tile, so we
-	 * iterate all the tracks in a signal block, even when a normal train would
-	 * not reach it (for example, when two lines merge */
-	if (tpf->hasbit_13)
-		return;
-
-	direction = ReverseDiagDir(direction);
-	tile += TileOffsByDiagDir(direction);
-
-	uint bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
-	bits |= (bits >> 8);
-
-	if ( (byte)bits != tpf->var2) {
-		bits &= _bits_mask[direction];
-	}
-
-	bits &= 0xBF;
-	if (bits == 0)
-		return;
-
-	do {
-		uint i = FIND_FIRST_BIT(bits);
-		bits = KillFirstBit(bits);
-
-		tpf->the_dir = (Trackdir)((_otherdir_mask[direction] & (byte)(1 << i)) ? (i + 8) : i);
-		RememberData rd = tpf->rd;
-		if (TPFSetTileBit(tpf, tile, tpf->the_dir) &&
-				!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length, &tpf->rd.pft_var6) ) {
-			TPFMode1(tpf, tile, _tpf_new_direction[tpf->the_dir]);
-		}
-		tpf->rd = rd;
-	} while (bits != 0);
-}
-
 void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection direction, TPFEnumProc *enum_proc, TPFAfterProc *after_proc, void *data)
 {
 	TrackPathFinder tpf;
@@ -391,7 +316,6 @@
 	tpf.var2 = HasBit(flags, 15) ? 0x43 : 0xFF; // 0x8000
 
 	tpf.disable_tile_hash = HasBit(flags, 12);  // 0x1000
-	tpf.hasbit_13         = HasBit(flags, 13);  // 0x2000
 
 
 	tpf.tracktype = (TransportType)(flags & 0xFF);
@@ -442,7 +366,7 @@
 	TileIndex dest;
 
 	TransportType tracktype;
-	RailTypeMask railtypes;
+	RailTypes railtypes;
 	uint maxlength;
 
 	HashLink *new_link;
@@ -716,8 +640,6 @@
 		if (IsTileType(tile, MP_TUNNELBRIDGE)) {
 			if (IsTunnel(tile)) {
 				if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) {
-					FindLengthOfTunnelResult flotr;
-
 					/* We are not just driving out of the tunnel */
 					if (GetTunnelBridgeDirection(tile) != direction ||
 							GetTunnelBridgeTransportType(tile) != tpf->tracktype) {
@@ -728,12 +650,13 @@
 						bits = TRACK_BIT_NONE;
 						break;
 					}
-					flotr = FindLengthOfTunnel(tile, direction);
-					si.cur_length += flotr.length * DIAG_FACTOR;
-					tile = flotr.tile;
+
+					TileIndex endtile = GetOtherTunnelEnd(tile);
+					si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, endtile) + 1);
+					tile = endtile;
 					/* tile now points to the exit tile of the tunnel */
 				}
-			} else {
+			} else { // IsBridge(tile)
 				TileIndex tile_end;
 				if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) {
 					/* We are not just leaving the bridge */
@@ -744,7 +667,7 @@
 					}
 				}
 				tile_end = GetOtherBridgeEnd(tile);
-				si.cur_length += DistanceManhattan(tile, tile_end) * DIAG_FACTOR;
+				si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, tile_end) + 1);
 				tile = tile_end;
 			}
 		}
@@ -938,7 +861,7 @@
 
 
 /** new pathfinder for trains. better and faster. */
-void NewTrainPathfind(TileIndex tile, TileIndex dest, RailTypeMask railtypes, DiagDirection direction, NTPEnumProc* enum_proc, void* data)
+void NewTrainPathfind(TileIndex tile, TileIndex dest, RailTypes railtypes, DiagDirection direction, NTPEnumProc* enum_proc, void* data)
 {
 	NewTrackPathFinder tpf;
 
--- a/src/pathfind.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/pathfind.h	Sun Feb 03 20:17:54 2008 +0000
@@ -55,12 +55,11 @@
 
 	TrackdirByte the_dir;
 
-	TransportTypeByte tracktype;
+	TransportType tracktype;
 	uint sub_type;
 
 	byte var2;
 	bool disable_tile_hash;
-	bool hasbit_13;
 
 	uint16 hash_head[0x400];
 	TileIndex hash_tile[0x400];       ///< stores the link index when multi link.
@@ -69,13 +68,6 @@
 };
 
 void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection direction, TPFEnumProc* enum_proc, TPFAfterProc* after_proc, void* data);
-
-struct FindLengthOfTunnelResult {
-	TileIndex tile;
-	int length;
-};
-FindLengthOfTunnelResult FindLengthOfTunnel(TileIndex tile, DiagDirection direction);
-
-void NewTrainPathfind(TileIndex tile, TileIndex dest, RailTypeMask railtypes, DiagDirection direction, NTPEnumProc* enum_proc, void* data);
+void NewTrainPathfind(TileIndex tile, TileIndex dest, RailTypes railtypes, DiagDirection direction, NTPEnumProc* enum_proc, void* data);
 
 #endif /* PATHFIND_H */
--- a/src/player.h	Wed Jan 09 18:11:12 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/* $Id$ */
-
-/** @file player.h */
-
-#ifndef PLAYER_H
-#define PLAYER_H
-
-#include "road_func.h"
-#include "date_type.h"
-#include "engine.h"
-#include "livery.h"
-#include "genworld.h"
-#include "autoreplace_type.h"
-
-struct PlayerEconomyEntry {
-	Money income;
-	Money expenses;
-	int32 delivered_cargo;
-	int32 performance_history; ///< player score (scale 0-1000)
-	Money company_value;
-};
-
-/* The "steps" in loan size, in British Pounds! */
-enum {
-	LOAN_INTERVAL        = 10000,
-};
-
-struct Player {
-	uint32 name_2;
-	uint16 name_1;
-
-	uint16 president_name_1;
-	uint32 president_name_2;
-
-	PlayerFace face;
-
-	Money player_money;
-	Money current_loan;
-
-	byte player_color;
-	Livery livery[LS_END];
-	byte player_money_fraction;
-	byte avail_railtypes;
-	byte avail_roadtypes;
-	byte block_preview;
-	PlayerByte index;
-
-	uint16 cargo_types; ///< which cargo types were transported the last year
-
-	TileIndex location_of_house;
-	TileIndex last_build_coordinate;
-
-	PlayerByte share_owners[4];
-
-	Year inaugurated_year;
-	byte num_valid_stat_ent;
-
-	byte quarters_of_bankrupcy;
-	byte bankrupt_asked; ///< which players were asked about buying it?
-	int16 bankrupt_timeout;
-	Money bankrupt_value;
-
-	bool is_active;
-	bool is_ai;
-	bool is_noai; ///< This is a NoAI player (for loading old savegames properly). Part of the NoAI 'hack' to retain savegame compatability with trunk.
-
-	Money yearly_expenses[3][13];
-	PlayerEconomyEntry cur_economy;
-	PlayerEconomyEntry old_economy[24];
-	EngineRenewList engine_renew_list; ///< Defined later
-	bool engine_renew;
-	bool renew_keep_length;
-	int16 engine_renew_months;
-	uint32 engine_renew_money;
-	uint16 num_engines[TOTAL_NUM_ENGINES]; ///< caches the number of engines of each type the player owns (no need to save this)
-};
-
-uint16 GetDrawStringPlayerColor(PlayerID player);
-
-void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player);
-void GetNameOfOwner(Owner owner, TileIndex tile);
-Money CalculateCompanyValue(const Player *p);
-void InvalidatePlayerWindows(const Player *p);
-void SetLocalPlayer(PlayerID new_player);
-#define FOR_ALL_PLAYERS(p) for (p = _players; p != endof(_players); p++)
-
-VARDEF PlayerByte _local_player;
-VARDEF PlayerByte _current_player;
-
-VARDEF Player _players[MAX_PLAYERS];
-/* NOSAVE: can be determined from player structs */
-VARDEF byte _player_colors[MAX_PLAYERS];
-
-static inline byte ActivePlayerCount()
-{
-	const Player *p;
-	byte count = 0;
-
-	FOR_ALL_PLAYERS(p) {
-		if (p->is_active) count++;
-	}
-
-	return count;
-}
-
-static inline Player *GetPlayer(PlayerID i)
-{
-	assert(IsInsideBS(i, PLAYER_FIRST, lengthof(_players)));
-	return &_players[i];
-}
-
-static inline bool IsLocalPlayer()
-{
-	return _local_player == _current_player;
-}
-
-static inline bool IsValidPlayer(PlayerID pi)
-{
-	return IsInsideBS(pi, PLAYER_FIRST, MAX_PLAYERS);
-}
-
-byte GetPlayerRailtypes(PlayerID p);
-byte GetPlayerRoadtypes(PlayerID p);
-
-/** Finds out if a Player has a certain railtype available
- * @param p Player in question
- * @param Railtype requested RailType
- * @return true if player has requested RailType available
- */
-static inline bool HasRailtypeAvail(const Player *p, const RailType Railtype)
-{
-	return HasBit(p->avail_railtypes, Railtype);
-}
-
-/** Finds out, whether given player has all given RoadTypes available
- * @param PlayerID ID of player
- * @param rts RoadTypes to test
- * @return true if player has all requested RoadTypes available
- */
-static inline bool HasRoadTypesAvail(const PlayerID p, const RoadTypes rts)
-{
-	RoadTypes avail_roadtypes;
-
-	if (p == OWNER_TOWN || _game_mode == GM_EDITOR || IsGeneratingWorld()) {
-		avail_roadtypes = ROADTYPES_ROAD;
-	} else {
-		if (!IsValidPlayer(p)) return false;
-		avail_roadtypes = (RoadTypes)GetPlayer(p)->avail_roadtypes | ROADTYPES_ROAD; // road is available for always for everybody
-	}
-	return (rts & ~avail_roadtypes) == 0;
-}
-
-static inline bool IsHumanPlayer(PlayerID pi)
-{
-	return !GetPlayer(pi)->is_ai;
-}
-
-static inline bool IsInteractivePlayer(PlayerID pi)
-{
-	return pi == _local_player;
-}
-
-void DrawPlayerIcon(PlayerID p, int x, int y);
-
-/* Validate functions for rail building */
-static inline bool ValParamRailtype(const uint32 rail) { return HasBit(GetPlayer(_current_player)->avail_railtypes, rail);}
-
-/* Validate functions for road building */
-static inline bool ValParamRoadType(const RoadType rt) { return HasRoadTypesAvail(_current_player, RoadTypeToRoadTypes(rt));}
-
-/** Returns the "best" railtype a player can build.
- * As the AI doesn't know what the BEST one is, we have our own priority list
- * here. When adding new railtypes, modify this function
- * @param p the player "in action"
- * @return The "best" railtype a player has available
- */
-static inline RailType GetBestRailtype(const Player *p)
-{
-	if (HasRailtypeAvail(p, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV;
-	if (HasRailtypeAvail(p, RAILTYPE_MONO)) return RAILTYPE_MONO;
-	if (HasRailtypeAvail(p, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC;
-	return RAILTYPE_RAIL;
-}
-
-struct HighScore {
-	char company[100];
-	StringID title; ///< NO_SAVE, has troubles with changing string-numbers.
-	uint16 score;   ///< do NOT change type, will break hs.dat
-};
-
-VARDEF HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
-void SaveToHighScore();
-void LoadFromHighScore();
-int8 SaveHighScoreValue(const Player *p);
-int8 SaveHighScoreValueNetwork();
-
-/**
- * Reset the livery schemes to the player's primary colour.
- * This is used on loading games without livery information and on new player start up.
- * @param p Player to reset.
- */
-void ResetPlayerLivery(Player *p);
-
-#endif /* PLAYER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/player_base.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,100 @@
+/* $Id$ */
+
+/** @file player_base.h Definition of stuff that is very close to a player, like the player struct itself. */
+
+#ifndef PLAYER_BASE_H
+#define PLAYER_BASE_H
+
+#include "road_type.h"
+#include "rail_type.h"
+#include "date_type.h"
+#include "engine.h"
+#include "livery.h"
+#include "autoreplace_type.h"
+#include "economy_type.h"
+#include "tile_type.h"
+
+struct PlayerEconomyEntry {
+	Money income;
+	Money expenses;
+	int32 delivered_cargo;
+	int32 performance_history; ///< player score (scale 0-1000)
+	Money company_value;
+};
+
+struct Player {
+	uint32 name_2;
+	uint16 name_1;
+	char *name;
+
+	uint16 president_name_1;
+	uint32 president_name_2;
+	char *president_name;
+
+	PlayerFace face;
+
+	Money player_money;
+	Money current_loan;
+
+	byte player_color;
+	Livery livery[LS_END];
+	byte player_money_fraction;
+	RailTypes avail_railtypes;
+	RoadTypes avail_roadtypes;
+	byte block_preview;
+	PlayerByte index;
+
+	uint16 cargo_types; ///< which cargo types were transported the last year
+
+	TileIndex location_of_house;
+	TileIndex last_build_coordinate;
+
+	PlayerByte share_owners[4];
+
+	Year inaugurated_year;
+	byte num_valid_stat_ent;
+
+	byte quarters_of_bankrupcy;
+	byte bankrupt_asked; ///< which players were asked about buying it?
+	int16 bankrupt_timeout;
+	Money bankrupt_value;
+
+	bool is_active;
+	bool is_ai;
+	bool is_noai; ///< This is a NoAI player (for loading old savegames properly). Part of the NoAI 'hack' to retain savegame compatability with trunk
+
+	Money yearly_expenses[3][13];
+	PlayerEconomyEntry cur_economy;
+	PlayerEconomyEntry old_economy[24];
+	EngineRenewList engine_renew_list; ///< Defined later
+	bool engine_renew;
+	bool renew_keep_length;
+	int16 engine_renew_months;
+	uint32 engine_renew_money;
+	uint16 num_engines[TOTAL_NUM_ENGINES]; ///< caches the number of engines of each type the player owns (no need to save this)
+};
+
+extern Player _players[MAX_PLAYERS];
+#define FOR_ALL_PLAYERS(p) for (p = _players; p != endof(_players); p++)
+
+static inline byte ActivePlayerCount()
+{
+	const Player *p;
+	byte count = 0;
+
+	FOR_ALL_PLAYERS(p) {
+		if (p->is_active) count++;
+	}
+
+	return count;
+}
+
+static inline Player *GetPlayer(PlayerID i)
+{
+	assert(IsInsideBS(i, PLAYER_FIRST, lengthof(_players)));
+	return &_players[i];
+}
+
+Money CalculateCompanyValue(const Player *p);
+
+#endif /* PLAYER_BASE_H */
--- a/src/player_face.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/player_face.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,7 @@
 #define PLAYER_FACE_H
 
 #include "core/random_func.hpp"
+#include "core/bitmath_func.hpp"
 
 /** The gender/race combinations that we have faces for */
 enum GenderEthnicity {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/player_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,54 @@
+/* $Id$ */
+
+/** @file player_func.h Functions related to players. */
+
+#ifndef PLAYER_FUNC_H
+#define PLAYER_FUNC_H
+
+#include "core/math_func.hpp"
+#include "player_type.h"
+#include "tile_type.h"
+#include "strings_type.h"
+
+void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player);
+void GetNameOfOwner(Owner owner, TileIndex tile);
+void SetLocalPlayer(PlayerID new_player);
+
+extern PlayerByte _local_player;
+extern PlayerByte _current_player;
+/* NOSAVE: can be determined from player structs */
+extern byte _player_colors[MAX_PLAYERS];
+extern PlayerFace _player_face; ///< for player face storage in openttd.cfg
+
+bool IsHumanPlayer(PlayerID pi);
+
+static inline bool IsLocalPlayer()
+{
+	return _local_player == _current_player;
+}
+
+static inline bool IsValidPlayer(PlayerID pi)
+{
+	return IsInsideBS(pi, PLAYER_FIRST, MAX_PLAYERS);
+}
+
+static inline bool IsInteractivePlayer(PlayerID pi)
+{
+	return pi == _local_player;
+}
+
+
+
+struct HighScore {
+	char company[100];
+	StringID title; ///< NO_SAVE, has troubles with changing string-numbers.
+	uint16 score;   ///< do NOT change type, will break hs.dat
+};
+
+extern HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
+void SaveToHighScore();
+void LoadFromHighScore();
+int8 SaveHighScoreValue(const Player *p);
+int8 SaveHighScoreValueNetwork();
+
+#endif /* PLAYER_FUNC_H */
--- a/src/player_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/player_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,14 +4,13 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "command_func.h"
 #include "network/network.h"
 #include "variables.h"
@@ -28,6 +27,18 @@
 #include "window_func.h"
 #include "date_func.h"
 #include "string_func.h"
+#include "settings_type.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
+
+/* player face selection window */
+struct facesel_d {
+	PlayerFace face; // player face bits
+	bool advanced;   // advance player face selection window
+};
+assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(facesel_d));
 
 static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied);
 static void DoSelectPlayerFace(PlayerID player, bool show_big);
@@ -108,6 +119,12 @@
 	DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING);
 }
 
+enum PlayerFinancesWindowWidgets {
+	PFW_WIDGET_TOGGLE_SIZE   = 2,
+	PFW_WIDGET_INCREASE_LOAN = 6,
+	PFW_WIDGET_REPAY_LOAN    = 7,
+};
+
 static const Widget _player_finances_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,   RESIZE_NONE,    14,    11,   379,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
@@ -148,15 +165,15 @@
 			w->height = new_height;
 			SetWindowDirty(w);
 
-			w->SetWidgetHiddenState(6, player != _local_player);
-			w->SetWidgetHiddenState(7, player != _local_player);
+			w->SetWidgetHiddenState(PFW_WIDGET_INCREASE_LOAN, player != _local_player);
+			w->SetWidgetHiddenState(PFW_WIDGET_REPAY_LOAN,    player != _local_player);
 		}
 
 		/* Borrow button only shows when there is any more money to loan */
-		w->SetWidgetDisabledState(6, p->current_loan == _economy.max_loan);
+		w->SetWidgetDisabledState(PFW_WIDGET_INCREASE_LOAN, p->current_loan == _economy.max_loan);
 
 		/* Repay button only shows when there is any more money to repay */
-		w->SetWidgetDisabledState(7, player != _local_player || p->current_loan == 0);
+		w->SetWidgetDisabledState(PFW_WIDGET_REPAY_LOAN, player != _local_player || p->current_loan == 0);
 
 		SetDParam(0, p->index);
 		SetDParam(1, p->index);
@@ -168,7 +185,7 @@
 
 	case WE_CLICK:
 		switch (e->we.click.widget) {
-		case 2: {/* toggle size */
+		case PFW_WIDGET_TOGGLE_SIZE: {/* toggle size */
 			byte mode = (byte)WP(w, def_d).data_1;
 			bool stickied = !!(w->flags4 & WF_STICKY);
 			PlayerID player = (PlayerID)w->window_number;
@@ -176,11 +193,11 @@
 			DoShowPlayerFinances(player, !HasBit(mode, 0), stickied);
 		} break;
 
-		case 6: /* increase loan */
+		case PFW_WIDGET_INCREASE_LOAN: /* increase loan */
 			DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_INCREASE_LOAN | CMD_MSG(STR_702C_CAN_T_BORROW_ANY_MORE_MONEY));
 			break;
 
-		case 7: /* repay loan */
+		case PFW_WIDGET_REPAY_LOAN: /* repay loan */
 			DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_DECREASE_LOAN | CMD_MSG(STR_702F_CAN_T_REPAY_LOAN));
 			break;
 		}
@@ -245,7 +262,7 @@
 /* Association of liveries to livery classes */
 static const LiveryClass livery_class[LS_END] = {
 	LC_OTHER,
-	LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL,
+	LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL,
 	LC_ROAD, LC_ROAD,
 	LC_SHIP, LC_SHIP,
 	LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT,
@@ -255,7 +272,7 @@
 /* Number of liveries in each class, used to determine the height of the livery window */
 static const byte livery_height[] = {
 	1,
-	11,
+	13,
 	4,
 	2,
 	3,
@@ -267,6 +284,19 @@
 };
 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(livery_d));
 
+
+enum PlayerLiveryWindowWidgets {
+	PLW_WIDGET_CLASS_GENERAL = 2,
+	PLW_WIDGET_CLASS_RAIL,
+	PLW_WIDGET_CLASS_ROAD,
+	PLW_WIDGET_CLASS_SHIP,
+	PLW_WIDGET_CLASS_AIRCRAFT,
+
+	PLW_WIDGET_PRI_COL_DROPDOWN = 9,
+	PLW_WIDGET_SEC_COL_DROPDOWN,
+	PLW_WIDGET_MATRIX,
+};
+
 static void ShowColourDropDownMenu(Window *w, uint32 widget)
 {
 	uint32 used_colours = 0;
@@ -274,7 +304,7 @@
 	LiveryScheme scheme;
 
 	/* Disallow other player colours for the primary colour */
-	if (HasBit(WP(w, livery_d).sel, LS_DEFAULT) && widget == 10) {
+	if (HasBit(WP(w, livery_d).sel, LS_DEFAULT) && widget == PLW_WIDGET_PRI_COL_DROPDOWN) {
 		const Player *p;
 		FOR_ALL_PLAYERS(p) {
 			if (p->is_active && p->index != _local_player) SetBit(used_colours, p->player_color);
@@ -288,17 +318,16 @@
 	if (scheme == LS_END) scheme = LS_DEFAULT;
 	livery = &GetPlayer((PlayerID)w->window_number)->livery[scheme];
 
-	ShowDropDownMenu(w, _colour_dropdown, widget == 10 ? livery->colour1 : livery->colour2, widget, used_colours, 0);
+	ShowDropDownMenu(w, _colour_dropdown, widget == PLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget, used_colours, 0);
 }
 
 static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
 		case WE_CREATE:
-			w->LowerWidget(WP(w, livery_d).livery_class + 2);
+			w->LowerWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL);
 			if (!_loaded_newgrf_features.has_2CC) {
-				w->HideWidget(11);
-				w->HideWidget(12);
+				w->HideWidget(PLW_WIDGET_SEC_COL_DROPDOWN);
 			}
 			break;
 
@@ -308,10 +337,8 @@
 			int y = 51;
 
 			/* Disable dropdown controls if no scheme is selected */
-			w->SetWidgetDisabledState( 9, (WP(w, livery_d).sel == 0));
-			w->SetWidgetDisabledState(10, (WP(w, livery_d).sel == 0));
-			w->SetWidgetDisabledState(11, (WP(w, livery_d).sel == 0));
-			w->SetWidgetDisabledState(12, (WP(w, livery_d).sel == 0));
+			w->SetWidgetDisabledState(PLW_WIDGET_PRI_COL_DROPDOWN, (WP(w, livery_d).sel == 0));
+			w->SetWidgetDisabledState(PLW_WIDGET_SEC_COL_DROPDOWN, (WP(w, livery_d).sel == 0));
 
 			if (!(WP(w, livery_d).sel == 0)) {
 				for (scheme = LS_BEGIN; scheme < LS_END; scheme++) {
@@ -352,17 +379,17 @@
 		case WE_CLICK: {
 			switch (e->we.click.widget) {
 				/* Livery Class buttons */
-				case 2:
-				case 3:
-				case 4:
-				case 5:
-				case 6: {
+				case PLW_WIDGET_CLASS_GENERAL:
+				case PLW_WIDGET_CLASS_RAIL:
+				case PLW_WIDGET_CLASS_ROAD:
+				case PLW_WIDGET_CLASS_SHIP:
+				case PLW_WIDGET_CLASS_AIRCRAFT: {
 					LiveryScheme scheme;
 
-					w->RaiseWidget(WP(w, livery_d).livery_class + 2);
-					WP(w, livery_d).livery_class = (LiveryClass)(e->we.click.widget - 2);
+					w->RaiseWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL);
+					WP(w, livery_d).livery_class = (LiveryClass)(e->we.click.widget - PLW_WIDGET_CLASS_GENERAL);
 					WP(w, livery_d).sel = 0;
-					w->LowerWidget(WP(w, livery_d).livery_class + 2);
+					w->LowerWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL);
 
 					/* Select the first item in the list */
 					for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
@@ -372,23 +399,21 @@
 						}
 					}
 					w->height = 49 + livery_height[WP(w, livery_d).livery_class] * 14;
-					w->widget[13].bottom = w->height - 1;
-					w->widget[13].data = livery_height[WP(w, livery_d).livery_class] << 8 | 1;
+					w->widget[PLW_WIDGET_MATRIX].bottom = w->height - 1;
+					w->widget[PLW_WIDGET_MATRIX].data = livery_height[WP(w, livery_d).livery_class] << 8 | 1;
 					MarkWholeScreenDirty();
 					break;
 				}
 
-				case 9:
-				case 10: /* First colour dropdown */
-					ShowColourDropDownMenu(w, 10);
+				case PLW_WIDGET_PRI_COL_DROPDOWN: /* First colour dropdown */
+					ShowColourDropDownMenu(w, PLW_WIDGET_PRI_COL_DROPDOWN);
 					break;
 
-				case 11:
-				case 12: /* Second colour dropdown */
-					ShowColourDropDownMenu(w, 12);
+				case PLW_WIDGET_SEC_COL_DROPDOWN: /* Second colour dropdown */
+					ShowColourDropDownMenu(w, PLW_WIDGET_SEC_COL_DROPDOWN);
 					break;
 
-				case 13: {
+				case PLW_WIDGET_MATRIX: {
 					LiveryScheme scheme;
 					LiveryScheme j = (LiveryScheme)((e->we.click.pt.y - 48) / 14);
 
@@ -420,7 +445,7 @@
 
 			for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
 				if (HasBit(WP(w, livery_d).sel, scheme)) {
-					DoCommandP(0, scheme | (e->we.dropdown.button == 10 ? 0 : 256), e->we.dropdown.index, NULL, CMD_SET_PLAYER_COLOR);
+					DoCommandP(0, scheme | (e->we.dropdown.button == PLW_WIDGET_PRI_COL_DROPDOWN ? 0 : 256), e->we.dropdown.index, NULL, CMD_SET_PLAYER_COLOR);
 				}
 			}
 			break;
@@ -438,10 +463,8 @@
 {   WWT_IMGBTN, RESIZE_NONE, 14,  88, 109,  14,  35, SPR_IMG_AIRPLANESLIST,     STR_LIVERY_AIRCRAFT_TIP },
 {    WWT_PANEL, RESIZE_NONE, 14, 110, 399,  14,  35, 0x0,                       STR_NULL },
 {    WWT_PANEL, RESIZE_NONE, 14,   0, 149,  36,  47, 0x0,                       STR_NULL },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 150, 262,  36,  47, STR_02BD,                  STR_LIVERY_PRIMARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 263, 274,  36,  47, STR_0225,                  STR_LIVERY_PRIMARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 275, 387,  36,  47, STR_02E1,                  STR_LIVERY_SECONDARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 388, 399,  36,  47, STR_0225,                  STR_LIVERY_SECONDARY_TIP },
+{ WWT_DROPDOWN, RESIZE_NONE, 14, 150, 274,  36,  47, STR_02BD,                  STR_LIVERY_PRIMARY_TIP },
+{ WWT_DROPDOWN, RESIZE_NONE, 14, 275, 399,  36,  47, STR_02E1,                  STR_LIVERY_SECONDARY_TIP },
 {   WWT_MATRIX, RESIZE_NONE, 14,   0, 399,  48,  48 + 1 * 14, (1 << 8) | 1,     STR_LIVERY_PANEL_TIP },
 { WIDGETS_END },
 };
@@ -465,10 +488,8 @@
 {   WWT_IMGBTN, RESIZE_NONE, 14,  88, 109,  14,  35, SPR_IMG_AIRPLANESLIST,     STR_LIVERY_AIRCRAFT_TIP },
 {    WWT_PANEL, RESIZE_NONE, 14, 110, 274,  14,  35, 0x0,                       STR_NULL },
 {    WWT_PANEL, RESIZE_NONE, 14,   0, 149,  36,  47, 0x0,                       STR_NULL },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 150, 262,  36,  47, STR_02BD,                  STR_LIVERY_PRIMARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 263, 274,  36,  47, STR_0225,                  STR_LIVERY_PRIMARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 275, 275,  36,  47, STR_02E1,                  STR_LIVERY_SECONDARY_TIP },
-{  WWT_TEXTBTN, RESIZE_NONE, 14, 275, 275,  36,  47, STR_0225,                  STR_LIVERY_SECONDARY_TIP },
+{ WWT_DROPDOWN, RESIZE_NONE, 14, 150, 274,  36,  47, STR_02BD,                  STR_LIVERY_PRIMARY_TIP },
+{ WWT_DROPDOWN, RESIZE_NONE, 14, 275, 275,  36,  47, STR_02E1,                  STR_LIVERY_SECONDARY_TIP },
 {   WWT_MATRIX, RESIZE_NONE, 14,   0, 274,  48,  48 + 1 * 14, (1 << 8) | 1,     STR_LIVERY_PANEL_TIP },
 { WIDGETS_END },
 };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/player_gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,20 @@
+/* $Id$ */
+
+/** @file player_gui.h GUI Functions related to players. */
+
+#ifndef PLAYER_GUI_H
+#define PLAYER_GUI_H
+
+#include "player_type.h"
+
+uint16 GetDrawStringPlayerColor(PlayerID player);
+void DrawPlayerIcon(PlayerID p, int x, int y);
+
+void ShowPlayerStations(PlayerID player);
+void ShowPlayerFinances(PlayerID player);
+void ShowPlayerCompany(PlayerID player);
+
+void InvalidatePlayerWindows(const Player *p);
+void DeletePlayerWindows(PlayerID pi);
+
+#endif /* PLAYER_GUI_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/player_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,43 @@
+/* $Id$ */
+
+/** @file player_type.h Types related to players. */
+
+#ifndef PLAYER_TYPE_H
+#define PLAYER_TYPE_H
+
+#include "core/enum_type.hpp"
+
+/**
+ * Enum for all players/owners.
+ */
+enum Owner {
+	/* Player identifiers All players below MAX_PLAYERS are playable
+	 * players, above, they are special, computer controlled players */
+	OWNER_BEGIN     = 0x00, ///< First Owner
+	PLAYER_FIRST    = 0x00, ///< First Player, same as owner
+	MAX_PLAYERS     = 0x08, ///< Maximum numbe rof players
+	OWNER_TOWN      = 0x0F, ///< A town owns the tile, or a town is expanding
+	OWNER_NONE      = 0x10, ///< The tile has no ownership
+	OWNER_WATER     = 0x11, ///< The tile/execution is done by "water"
+	OWNER_END,              ///< Last + 1 owner
+	INVALID_OWNER   = 0xFF, ///< An invalid owner
+	INVALID_PLAYER  = 0xFF, ///< And a valid owner
+
+	/* 'Fake' Players used for networks */
+	PLAYER_INACTIVE_CLIENT = 253, ///< The client is joining
+	PLAYER_NEW_COMPANY     = 254, ///< The client wants a new company
+	PLAYER_SPECTATOR       = 255, ///< The client is spectating
+};
+DECLARE_POSTFIX_INCREMENT(Owner);
+
+/** Define basic enum properties */
+template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};
+typedef TinyEnumT<Owner> OwnerByte;
+
+typedef Owner PlayerID;
+typedef OwnerByte PlayerByte;
+
+struct Player;
+typedef uint32 PlayerFace; ///< player face bits, info see in player_face.h
+
+#endif /* PLAYER_TYPE_H */
--- a/src/players.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/players.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,15 +5,15 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "engine.h"
-#include "table/strings.h"
-#include "table/sprites.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_gui.h"
 #include "town.h"
 #include "station.h"
 #include "news.h"
 #include "saveload.h"
 #include "command_func.h"
 #include "network/network.h"
+#include "network/network_internal.h"
 #include "variables.h"
 #include "engine.h"
 #include "ai/ai.h"
@@ -30,6 +30,20 @@
 #include "autoreplace_func.h"
 #include "autoreplace_gui.h"
 #include "string_func.h"
+#include "road_func.h"
+#include "rail.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
+
+Player _players[MAX_PLAYERS];
+PlayerByte _local_player;
+PlayerByte _current_player;
+/* NOSAVE: can be determined from player structs */
+byte _player_colors[MAX_PLAYERS];
+PlayerFace _player_face; ///< for player face storage in openttd.cfg
+HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
 
 /**
  * Sets the local player and updates the patch settings that are set on a
@@ -54,6 +68,11 @@
 	}
 }
 
+bool IsHumanPlayer(PlayerID pi)
+{
+	return !GetPlayer(pi)->is_ai;
+}
+
 
 uint16 GetDrawStringPlayerColor(PlayerID player)
 {
@@ -200,14 +219,14 @@
 	           1 << EXPENSES_ROADVEH_INC  |
 	           1 << EXPENSES_AIRCRAFT_INC |
 	           1 << EXPENSES_SHIP_INC, cost.GetExpensesType())) {
-		p->cur_economy.income += cost.GetCost();
+		p->cur_economy.income -= cost.GetCost();
 	} else if (HasBit(1 << EXPENSES_TRAIN_RUN    |
 	                  1 << EXPENSES_ROADVEH_RUN  |
 	                  1 << EXPENSES_AIRCRAFT_RUN |
 	                  1 << EXPENSES_SHIP_RUN     |
 	                  1 << EXPENSES_PROPERTY     |
 	                  1 << EXPENSES_LOAN_INT, cost.GetExpensesType())) {
-		p->cur_economy.expenses += cost.GetCost();
+		p->cur_economy.expenses -= cost.GetCost();
 	}
 
 	InvalidatePlayerWindows(p);
@@ -585,57 +604,18 @@
 	}
 }
 
-byte GetPlayerRailtypes(PlayerID p)
-{
-	byte rt = 0;
-	EngineID i;
-
-	for (i = 0; i != TOTAL_NUM_ENGINES; i++) {
-		const Engine* e = GetEngine(i);
-		const EngineInfo *ei = EngInfo(i);
-
-		if (e->type == VEH_TRAIN && HasBit(ei->climates, _opt.landscape) &&
-				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
-			const RailVehicleInfo *rvi = RailVehInfo(i);
-
-			if (rvi->railveh_type != RAILVEH_WAGON) {
-				assert(rvi->railtype < RAILTYPE_END);
-				SetBit(rt, rvi->railtype);
-			}
-		}
-	}
-
-	return rt;
-}
-
-byte GetPlayerRoadtypes(PlayerID p)
-{
-	byte rt = 0;
-	EngineID i;
-
-	for (i = 0; i != TOTAL_NUM_ENGINES; i++) {
-		const Engine* e = GetEngine(i);
-		const EngineInfo *ei = EngInfo(i);
-
-		if (e->type == VEH_ROAD && HasBit(ei->climates, _opt.landscape) &&
-				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
-			SetBit(rt, HasBit(ei->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
-		}
-	}
-
-	return rt;
-}
-
 static void DeletePlayerStuff(PlayerID pi)
 {
 	Player *p;
 
 	DeletePlayerWindows(pi);
 	p = GetPlayer(pi);
-	DeleteName(p->name_1);
-	DeleteName(p->president_name_1);
-	p->name_1 = 0;
-	p->president_name_1 = 0;
+	p->name_1 = STR_NULL;
+	p->president_name_1 = STR_NULL;
+	free(p->name);
+	free(p->president_name);
+	p->name = NULL;
+	p->president_name = NULL;
 }
 
 /** Change engine renewal parameters
@@ -845,10 +825,12 @@
 		if (_local_player != _network_playas && _network_playas == p->index) {
 			assert(_local_player == PLAYER_SPECTATOR);
 			SetLocalPlayer(p->index);
+#ifdef ENABLE_NETWORK
 			if (!StrEmpty(_network_default_company_pass)) {
 				char *password = _network_default_company_pass;
 				NetworkChangeCompanyPassword(1, &password);
 			}
+#endif /* ENABLE_NETWORK */
 			MarkWholeScreenDirty();
 		}
 
@@ -923,7 +905,7 @@
 			p->is_active = false;
 		}
 		RemoveAllEngineReplacementForPlayer(p);
-		RemoveAllGroupsForPlayer(p);
+		RemoveAllGroupsForPlayer(p->index);
 
 	} break;
 
@@ -1114,9 +1096,11 @@
 static const SaveLoad _player_desc[] = {
 	    SLE_VAR(Player, name_2,          SLE_UINT32),
 	    SLE_VAR(Player, name_1,          SLE_STRINGID),
+	SLE_CONDSTR(Player, name,            SLE_STR, 0,                       84, SL_MAX_VERSION),
 
 	    SLE_VAR(Player, president_name_1,SLE_UINT16),
 	    SLE_VAR(Player, president_name_2,SLE_UINT32),
+	SLE_CONDSTR(Player, president_name,  SLE_STR, 0,                       84, SL_MAX_VERSION),
 
 	    SLE_VAR(Player, face,            SLE_UINT32),
 
@@ -1266,12 +1250,19 @@
 	}
 
 	/* Write each livery entry. */
-	int num_liveries = CheckSavegameVersion(63) ? LS_END - 2 : LS_END;
+	int num_liveries = CheckSavegameVersion(63) ? LS_END - 4 : (CheckSavegameVersion(85) ? LS_END - 2: LS_END);
 	for (i = 0; i < num_liveries; i++) {
 		SlObject(&p->livery[i], _player_livery_desc);
 	}
 
-	if (num_liveries == LS_END - 2) {
+	if (num_liveries < LS_END) {
+		/* We want to insert some liveries somewhere in between. This means some have to be moved. */
+		memmove(&p->livery[LS_FREIGHT_WAGON], &p->livery[LS_PASSENGER_WAGON_MONORAIL], (LS_END - LS_FREIGHT_WAGON) * sizeof(p->livery[0]));
+		p->livery[LS_PASSENGER_WAGON_MONORAIL] = p->livery[LS_MONORAIL];
+		p->livery[LS_PASSENGER_WAGON_MAGLEV]   = p->livery[LS_MAGLEV];
+	}
+
+	if (num_liveries == LS_END - 4) {
 		/* Copy bus/truck liveries over to trams */
 		p->livery[LS_PASSENGER_TRAM] = p->livery[LS_BUS];
 		p->livery[LS_FREIGHT_TRAM]   = p->livery[LS_TRUCK];
--- a/src/rail.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,6 +9,10 @@
 #include "station_map.h"
 #include "tunnel_map.h"
 #include "tunnelbridge_map.h"
+#include "settings_type.h"
+#include "date_func.h"
+#include "player_func.h"
+#include "player_base.h"
 
 
 /* XXX: Below 3 tables store duplicate data. Maybe remove some? */
@@ -140,3 +144,44 @@
 	}
 	return INVALID_RAILTYPE;
 }
+
+bool HasRailtypeAvail(const PlayerID p, const RailType railtype)
+{
+	return HasBit(GetPlayer(p)->avail_railtypes, railtype);
+}
+
+bool ValParamRailtype(const RailType rail)
+{
+	return HasRailtypeAvail(_current_player, rail);
+}
+
+RailType GetBestRailtype(const PlayerID p)
+{
+	if (HasRailtypeAvail(p, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV;
+	if (HasRailtypeAvail(p, RAILTYPE_MONO)) return RAILTYPE_MONO;
+	if (HasRailtypeAvail(p, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC;
+	return RAILTYPE_RAIL;
+}
+
+RailTypes GetPlayerRailtypes(PlayerID p)
+{
+	RailTypes rt = RAILTYPES_NONE;
+
+	EngineID i;
+	FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_TRAIN) {
+		const Engine* e = GetEngine(i);
+		const EngineInfo *ei = EngInfo(i);
+
+		if (HasBit(ei->climates, _opt.landscape) &&
+				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
+			const RailVehicleInfo *rvi = RailVehInfo(i);
+
+			if (rvi->railveh_type != RAILVEH_WAGON) {
+				assert(rvi->railtype < RAILTYPE_END);
+				SetBit(rt, rvi->railtype);
+			}
+		}
+	}
+
+	return rt;
+}
--- a/src/rail.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail.h	Sun Feb 03 20:17:54 2008 +0000
@@ -64,10 +64,10 @@
 	SpriteID snow_offset;
 
 	/** bitmask to the OTHER railtypes on which an engine of THIS railtype generates power */
-	RailTypeMask powered_railtypes;
+	RailTypes powered_railtypes;
 
 	/** bitmask to the OTHER railtypes on which an engine of THIS railtype can physically travel */
-	RailTypeMask compatible_railtypes;
+	RailTypes compatible_railtypes;
 
 	/**
 	 * Offset between the current railtype and normal rail. This means that:<p>
@@ -96,14 +96,6 @@
 };
 
 
-/** these are the maximums used for updating signal blocks, and checking if a depot is in a pbs block */
-enum {
-	NUM_SSD_ENTRY = 256, ///< max amount of blocks
-	NUM_SSD_STACK =  32, ///< max amount of blocks to check recursively
-};
-
-
-
 /**
  * Returns a pointer to the Railtype information for a given railtype
  * @param railtype the rail type which the information is requested for
@@ -188,6 +180,7 @@
 void *UpdateTrainPowerProc(Vehicle *v, void *data);
 void DrawTrainDepotSprite(int x, int y, int image, RailType railtype);
 void DrawDefaultWaypointSprite(int x, int y, RailType railtype);
+void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data);
 
 /**
  * Draws overhead wires and pylons for electric railways.
@@ -201,4 +194,35 @@
 
 int32 SettingsDisableElrail(int32 p1); ///< _patches.disable_elrail callback
 
+/**
+ * Finds out if a Player has a certain railtype available
+ * @param p Player in question
+ * @param railtype requested RailType
+ * @return true if player has requested RailType available
+ */
+bool HasRailtypeAvail(const PlayerID p, const RailType railtype);
+
+/**
+ * Validate functions for rail building.
+ * @param rail the railtype to check.
+ * @return true if the current player may build the rail.
+ */
+bool ValParamRailtype(const RailType rail);
+
+/**
+ * Returns the "best" railtype a player can build.
+ * As the AI doesn't know what the BEST one is, we have our own priority list
+ * here. When adding new railtypes, modify this function
+ * @param p the player "in action"
+ * @return The "best" railtype a player has available
+ */
+RailType GetBestRailtype(const PlayerID p);
+
+/**
+ * Get the rail types the given player can build.
+ * @param p the player to get the rail types for.
+ * @return the rail types.
+ */
+RailTypes GetPlayerRailtypes(const PlayerID p);
+
 #endif /* RAIL_H */
--- a/src/rail_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,8 +11,6 @@
 #include "tile_cmd.h"
 #include "rail_map.h"
 #include "road_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "landscape.h"
 #include "town_map.h"
 #include "tunnel_map.h"
@@ -26,7 +24,6 @@
 #include "depot.h"
 #include "waypoint.h"
 #include "rail.h"
-#include "table/railtypes.h" // include table for railtypes
 #include "newgrf.h"
 #include "yapf/yapf.h"
 #include "newgrf_engine.h"
@@ -42,7 +39,12 @@
 #include "window_func.h"
 #include "vehicle_func.h"
 #include "sound_func.h"
+#include "signal_func.h"
+#include "tunnelbridge.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+#include "table/railtypes.h"
 
 const byte _track_sloped_sprites[14] = {
 	14, 15, 22, 13,
@@ -84,7 +86,7 @@
  */
 
 
-static void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data)
+void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data)
 {
 	TrackBits rail_bits = *(TrackBits *)data;
 
@@ -237,11 +239,11 @@
 				return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
 
 			case TRACK_BIT_X:
-				if (HasSlopeHighestCorner(tileh)) return FOUNDATION_INCLINED_X;
+				if (IsSlopeWithOneCornerRaised(tileh)) return FOUNDATION_INCLINED_X;
 				return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
 
 			case TRACK_BIT_Y:
-				if (HasSlopeHighestCorner(tileh)) return FOUNDATION_INCLINED_Y;
+				if (IsSlopeWithOneCornerRaised(tileh)) return FOUNDATION_INCLINED_Y;
 				return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
 
 			default:
@@ -253,7 +255,7 @@
 		if (!valid_on_leveled) return FOUNDATION_INVALID;
 
 		/* If slope has three raised corners, build leveled foundation */
-		if (HasSlopeHighestCorner(ComplementSlope(tileh))) return FOUNDATION_LEVELED;
+		if (IsSlopeWithThreeCornersRaised(tileh)) return FOUNDATION_LEVELED;
 
 		/* If neighboured corners of track_corner are lowered, build halftile foundation */
 		if ((tileh & SlopeWithThreeCornersRaised(OppositeCorner(track_corner))) == SlopeWithOneCornerRaised(track_corner)) return HalftileFoundation(track_corner);
@@ -303,15 +305,13 @@
 CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	Slope tileh;
-	RailType railtype;
-	Track track;
+	RailType railtype = (RailType)p1;
+	Track track = (Track)p2;
 	TrackBits trackbit;
 	CommandCost cost(EXPENSES_CONSTRUCTION);
 	CommandCost ret;
 
-	if (!ValParamRailtype(p1) || !ValParamTrackOrientation((Track)p2)) return CMD_ERROR;
-	railtype = (RailType)p1;
-	track = (Track)p2;
+	if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR;
 
 	tileh = GetTileSlope(tile, NULL);
 	trackbit = TrackToTrackBits(track);
@@ -384,6 +384,7 @@
 						(track == TRACK_Y && road == ROAD_X)) {
 					if (flags & DC_EXEC) {
 						MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY), _current_player, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile));
+						UpdateLevelCrossing(tile, false);
 					}
 					break;
 				}
@@ -395,7 +396,8 @@
 			/* FALLTHROUGH */
 
 		default:
-			bool water_ground = IsTileType(tile, MP_WATER) && !IsSteepSlope(tileh) && HasSlopeHighestCorner(tileh);
+			/* Will there be flat water on the lower halftile? */
+			bool water_ground = IsTileType(tile, MP_WATER) && IsSlopeWithOneCornerRaised(tileh);
 
 			ret = CheckRailSlope(tileh, trackbit, TRACK_BIT_NONE, tile);
 			if (CmdFailed(ret)) return ret;
@@ -419,7 +421,7 @@
 
 	if (flags & DC_EXEC) {
 		MarkTileDirtyByTile(tile);
-		SetSignalsOnBothDir(tile, track);
+		AddTrackToSignalBuffer(tile, track, _current_player);
 		YapfNotifyTrackLayoutChange(tile, track);
 	}
 
@@ -442,6 +444,12 @@
 	if (!ValParamTrackOrientation((Track)p2)) return CMD_ERROR;
 	trackbit = TrackToTrackBits(track);
 
+	/* Need to read tile owner now because it may change when the rail is removed
+	 * Also, in case of floods, _current_player != owner
+	 * There may be invalid tiletype even in exec run (when removing long track),
+	 * so do not call GetTileOwner(tile) in any case here */
+	Owner owner = INVALID_OWNER;
+
 	switch (GetTileType(tile)) {
 		case MP_ROAD: {
 			if (!IsLevelCrossing(tile) ||
@@ -452,6 +460,7 @@
 			}
 
 			if (flags & DC_EXEC) {
+				owner = GetTileOwner(tile);
 				MakeRoadNormal(tile, GetCrossingRoadBits(tile), GetRoadTypes(tile), GetTownIndex(tile), GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY));
 			}
 			break;
@@ -475,9 +484,12 @@
 				cost.AddCost(DoCommand(tile, track, 0, flags, CMD_REMOVE_SIGNALS));
 
 			if (flags & DC_EXEC) {
+				owner = GetTileOwner(tile);
 				present ^= trackbit;
 				if (present == 0) {
-					if (GetRailGroundType(tile) == RAIL_GROUND_WATER) {
+					Slope tileh = GetTileSlope(tile, NULL);
+					/* If there is flat water on the lower halftile, convert the tile to shore so the water remains */
+					if (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh)) {
 						MakeShore(tile);
 					} else {
 						DoClearSquare(tile);
@@ -493,18 +505,21 @@
 	}
 
 	if (flags & DC_EXEC) {
+		/* if we got that far, 'owner' variable is set correctly */
+		assert(IsValidPlayer(owner));
+
 		MarkTileDirtyByTile(tile);
 		if (crossing) {
 			/* crossing is set when only TRACK_BIT_X and TRACK_BIT_Y are set. As we
 			 * are removing one of these pieces, we'll need to update signals for
 			 * both directions explicitly, as after the track is removed it won't
 			 * 'connect' with the other piece. */
-			SetSignalsOnBothDir(tile, TRACK_X);
-			SetSignalsOnBothDir(tile, TRACK_Y);
+			AddTrackToSignalBuffer(tile, TRACK_X, owner);
+			AddTrackToSignalBuffer(tile, TRACK_Y, owner);
 			YapfNotifyTrackLayoutChange(tile, TRACK_X);
 			YapfNotifyTrackLayoutChange(tile, TRACK_Y);
 		} else {
-			SetSignalsOnBothDir(tile, track);
+			AddTrackToSignalBuffer(tile, track, owner);
 			YapfNotifyTrackLayoutChange(tile, track);
 		}
 	}
@@ -518,34 +533,48 @@
  * The function floods the lower halftile, if the tile has a halftile foundation.
  *
  * @param t The tile to flood.
+ * @return true if something was flooded.
  */
-void FloodHalftile(TileIndex t)
+bool FloodHalftile(TileIndex t)
 {
-	if (GetRailGroundType(t) == RAIL_GROUND_WATER) return;
+	bool flooded = false;
+	if (GetRailGroundType(t) == RAIL_GROUND_WATER) return flooded;
 
 	Slope tileh = GetTileSlope(t, NULL);
 	TrackBits rail_bits = GetTrackBits(t);
 
-	if (!IsSteepSlope(tileh) && HasSlopeHighestCorner(tileh)) {
+	if (IsSlopeWithOneCornerRaised(tileh)) {
 		TrackBits lower_track = CornerToTrackBits(OppositeCorner(GetHighestSlopeCorner(tileh)));
 
 		TrackBits to_remove = lower_track & rail_bits;
 		if (to_remove != 0) {
 			_current_player = OWNER_WATER;
-			if (CmdFailed(DoCommand(t, 0, FIND_FIRST_BIT(to_remove), DC_EXEC, CMD_REMOVE_SINGLE_RAIL))) return; // not yet floodable
+			if (CmdFailed(DoCommand(t, 0, FIND_FIRST_BIT(to_remove), DC_EXEC, CMD_REMOVE_SINGLE_RAIL))) return flooded; // not yet floodable
+			flooded = true;
 			rail_bits = rail_bits & ~to_remove;
 			if (rail_bits == 0) {
 				MakeShore(t);
 				MarkTileDirtyByTile(t);
-				return;
+				return flooded;
 			}
 		}
 
 		if (IsNonContinuousFoundation(GetRailFoundation(tileh, rail_bits))) {
+			flooded = true;
 			SetRailGroundType(t, RAIL_GROUND_WATER);
 			MarkTileDirtyByTile(t);
 		}
+	} else {
+		/* Make shore on steep slopes and 'three-corners-raised'-slopes. */
+		if (ApplyFoundationToSlope(GetRailFoundation(tileh, rail_bits), &tileh) == 0) {
+			if (IsSteepSlope(tileh) || IsSlopeWithThreeCornersRaised(tileh)) {
+				flooded = true;
+				SetRailGroundType(t, RAIL_GROUND_WATER);
+				MarkTileDirtyByTile(t);
+			}
+		}
 	}
+	return flooded;
 }
 
 static const TileIndexDiffC _trackdelta[] = {
@@ -703,7 +732,7 @@
 	Slope tileh;
 
 	/* check railtype and valid direction for depot (0 through 3), 4 in total */
-	if (!ValParamRailtype(p1)) return CMD_ERROR;
+	if (!ValParamRailtype((RailType)p1)) return CMD_ERROR;
 
 	tileh = GetTileSlope(tile, NULL);
 
@@ -741,7 +770,7 @@
 
 		d->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
-		UpdateSignalsOnSegment(tile, dir);
+		AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_player);
 		YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir)));
 		d_auto_delete.Detach();
 	}
@@ -867,7 +896,7 @@
 		}
 
 		MarkTileDirtyByTile(tile);
-		SetSignalsOnBothDir(tile, track);
+		AddTrackToSignalBuffer(tile, track, _current_player);
 		YapfNotifyTrackLayoutChange(tile, track);
 	}
 
@@ -922,7 +951,7 @@
 			 * note that tile is a parameter by reference, so it must be updated */
 			tile = GetOtherTunnelBridgeEnd(tile);
 
-			signal_ctr += 2 + DistanceMax(orig_tile, tile) * 2;
+			signal_ctr += (GetTunnelBridgeLength(orig_tile, tile) + 2) * 2;
 			return true;
 		}
 
@@ -1098,7 +1127,7 @@
 			SetSignalVariant(tile, INVALID_TRACK, SIG_ELECTRIC); // remove any possible semaphores
 		}
 
-		SetSignalsOnBothDir(tile, track);
+		AddTrackToSignalBuffer(tile, track, GetTileOwner(tile));
 		YapfNotifyTrackLayoutChange(tile, track);
 
 		MarkTileDirtyByTile(tile);
@@ -1149,12 +1178,11 @@
 CommandCost CmdConvertRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	CommandCost cost(EXPENSES_CONSTRUCTION);
+	RailType totype = (RailType)p2;
 
-	if (!ValParamRailtype(p2)) return CMD_ERROR;
+	if (!ValParamRailtype(totype)) return CMD_ERROR;
 	if (p1 >= MapSize()) return CMD_ERROR;
 
-	RailType totype = (RailType)p2;
-
 	uint ex = TileX(tile);
 	uint ey = TileY(tile);
 	uint sx = TileX(p1);
@@ -1278,7 +1306,7 @@
 						}
 					}
 
-					cost.AddCost((DistanceManhattan(tile, endtile) + 1) * RailConvertCost(type, totype));
+					cost.AddCost((GetTunnelBridgeLength(tile, endtile) + 2) * RailConvertCost(type, totype));
 				} break;
 
 				default: // MP_STATION, MP_ROAD
@@ -1305,11 +1333,13 @@
 		return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		/* read variables before the depot is removed */
 		DiagDirection dir = GetRailDepotDirection(tile);
+		Owner owner = GetTileOwner(tile);
 
 		DoClearSquare(tile);
 		delete GetDepotByTile(tile);
-		UpdateSignalsOnSegment(tile, dir);
+		AddSideToSignalBuffer(tile, dir, owner);
 		YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir)));
 	}
 
@@ -1335,7 +1365,9 @@
 	switch (GetRailTileType(tile)) {
 		case RAIL_TILE_SIGNALS:
 		case RAIL_TILE_NORMAL: {
-			bool water_ground = (GetRailGroundType(tile) == RAIL_GROUND_WATER);
+			Slope tileh = GetTileSlope(tile, NULL);
+			/* Is there flat water on the lower halftile, that gets cleared expensively? */
+			bool water_ground = (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh));
 
 			TrackBits tracks = GetTrackBits(tile);
 			while (tracks != TRACK_BIT_NONE) {
@@ -1478,9 +1510,7 @@
  */
 static void DrawTrackFence_NS_1(const TileInfo *ti)
 {
-	int z = ti->z;
-	if (ti->tileh & SLOPE_W) z += TILE_HEIGHT;
-	if (IsSteepSlope(ti->tileh)) z += TILE_HEIGHT;
+	uint z = ti->z + GetSlopeZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_W);
 	AddSortableSpriteToDraw(SPR_TRACK_FENCE_FLAT_VERT, _drawtile_track_palette,
 		ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z);
 }
@@ -1490,9 +1520,7 @@
  */
 static void DrawTrackFence_NS_2(const TileInfo *ti)
 {
-	int z = ti->z;
-	if (ti->tileh & SLOPE_E) z += TILE_HEIGHT;
-	if (IsSteepSlope(ti->tileh)) z += TILE_HEIGHT;
+	uint z = ti->z + GetSlopeZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_E);
 	AddSortableSpriteToDraw(SPR_TRACK_FENCE_FLAT_VERT, _drawtile_track_palette,
 		ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z);
 }
@@ -1502,9 +1530,7 @@
  */
 static void DrawTrackFence_WE_1(const TileInfo *ti)
 {
-	int z = ti->z;
-	if (ti->tileh & SLOPE_N) z += TILE_HEIGHT;
-	if (IsSteepSlope(ti->tileh)) z += TILE_HEIGHT;
+	uint z = ti->z + GetSlopeZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_N);
 	AddSortableSpriteToDraw(SPR_TRACK_FENCE_FLAT_HORZ, _drawtile_track_palette,
 		ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z);
 }
@@ -1514,9 +1540,7 @@
  */
 static void DrawTrackFence_WE_2(const TileInfo *ti)
 {
-	int z = ti->z;
-	if (ti->tileh & SLOPE_S) z += TILE_HEIGHT;
-	if (IsSteepSlope(ti->tileh)) z += TILE_HEIGHT;
+	uint z = ti->z + GetSlopeZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_S);
 	AddSortableSpriteToDraw(SPR_TRACK_FENCE_FLAT_HORZ, _drawtile_track_palette,
 		ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z);
 }
@@ -1535,8 +1559,16 @@
 		case RAIL_GROUND_FENCE_VERT2:  DrawTrackFence_NS_2(ti);  break;
 		case RAIL_GROUND_FENCE_HORIZ1: DrawTrackFence_WE_1(ti);  break;
 		case RAIL_GROUND_FENCE_HORIZ2: DrawTrackFence_WE_2(ti);  break;
-		case RAIL_GROUND_WATER:
-			switch (GetHalftileSlopeCorner(ti->tileh)) {
+		case RAIL_GROUND_WATER: {
+			Corner track_corner;
+			if (IsHalftileSlope(ti->tileh)) {
+				/* Steep slope or one-corner-raised slope with halftile foundation */
+				track_corner = GetHalftileSlopeCorner(ti->tileh);
+			} else {
+				/* Three-corner-raised slope */
+				track_corner = OppositeCorner(GetHighestSlopeCorner(ComplementSlope(ti->tileh)));
+			}
+			switch (track_corner) {
 				case CORNER_W: DrawTrackFence_NS_1(ti); break;
 				case CORNER_S: DrawTrackFence_WE_2(ti); break;
 				case CORNER_E: DrawTrackFence_NS_2(ti); break;
@@ -1544,6 +1576,7 @@
 				default: NOT_REACHED();
 			}
 			break;
+		}
 		default: break;
 	}
 }
@@ -1556,6 +1589,15 @@
  */
 static void DrawTrackBits(TileInfo* ti, TrackBits track)
 {
+	/* SubSprite for drawing the track halftile of 'three-corners-raised'-sloped rail sprites. */
+	static const int INF = 1000; // big number compared to tilesprite size
+	static const SubSprite _halftile_sub_sprite[4] = {
+		{ -INF    , -INF  , 32 - 33, INF     }, // CORNER_W, clip 33 pixels from right
+		{ -INF    ,  0 + 7, INF    , INF     }, // CORNER_S, clip 7 pixels from top
+		{ -31 + 33, -INF  , INF    , INF     }, // CORNER_E, clip 33 pixels from left
+		{ -INF    , -INF  , INF    , 30 - 23 }  // CORNER_N, clip 23 pixels from bottom
+	};
+
 	const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
 	RailGroundType rgt = GetRailGroundType(ti->tile);
 	Foundation f = GetRailFoundation(ti->tileh, track);
@@ -1574,13 +1616,19 @@
 
 	SpriteID image;
 	SpriteID pal = PAL_NONE;
+	const SubSprite *sub = NULL;
 	bool junction = false;
 
 	/* Select the sprite to use. */
 	if (track == 0) {
 		/* Clear ground (only track on halftile foundation) */
 		if (rgt == RAIL_GROUND_WATER) {
-			image = SPR_FLAT_WATER_TILE;
+			if (IsSteepSlope(ti->tileh)) {
+				DrawShoreTile(ti->tileh);
+				image = 0;
+			} else {
+				image = SPR_FLAT_WATER_TILE;
+			}
 		} else {
 			switch (rgt) {
 				case RAIL_GROUND_BARREN:     image = SPR_FLAT_BARE_LAND;  break;
@@ -1617,12 +1665,18 @@
 		switch (rgt) {
 			case RAIL_GROUND_BARREN:     pal = PALETTE_TO_BARE_LAND; break;
 			case RAIL_GROUND_ICE_DESERT: image += rti->snow_offset;  break;
-			case RAIL_GROUND_WATER:      NOT_REACHED();
+			case RAIL_GROUND_WATER: {
+				/* three-corner-raised slope */
+				DrawShoreTile(ti->tileh);
+				Corner track_corner = OppositeCorner(GetHighestSlopeCorner(ComplementSlope(ti->tileh)));
+				sub = &(_halftile_sub_sprite[track_corner]);
+				break;
+			}
 			default: break;
 		}
 	}
 
-	DrawGroundSprite(image, pal);
+	if (image != 0) DrawGroundSprite(image, pal, sub);
 
 	/* Draw track pieces individually for junction tiles */
 	if (junction) {
@@ -1646,15 +1700,6 @@
 			case RAIL_GROUND_ICE_DESERT: image += rti->snow_offset;  break;
 			default: break;
 		}
-
-		static const int INF = 1000; // big number compared to tilesprite size
-		static const SubSprite _halftile_sub_sprite[4] = {
-			{ -INF    , -INF  , 32 - 33, INF     }, // CORNER_W, clip 33 pixels from right
-			{ -INF    ,  0 + 7, INF    , INF     }, // CORNER_S, clip 7 pixels from top
-			{ -31 + 33, -INF  , INF    , INF     }, // CORNER_E, clip 33 pixels from left
-			{ -INF    , -INF  , INF    , 30 - 23 }  // CORNER_N, clip 23 pixels from bottom
-		};
-
 		DrawGroundSprite(image, pal, &(_halftile_sub_sprite[halftile_corner]));
 	}
 }
@@ -1848,227 +1893,6 @@
 	DrawTileSequence(x, y, dts->ground_sprite + offset, dts->seq, 0);
 }
 
-struct SetSignalsData {
-	int cur;
-	int cur_stack;
-	bool stop;
-	bool has_presignal;
-
-	/* presignal info */
-	int presignal_exits;
-	int presignal_exits_free;
-
-	/* these are used to keep track of the signals that change. */
-	TrackdirByte bit[NUM_SSD_ENTRY];
-	TileIndex tile[NUM_SSD_ENTRY];
-
-	/* these are used to keep track of the stack that modifies presignals recursively */
-	TileIndex next_tile[NUM_SSD_STACK];
-	DiagDirectionByte next_dir[NUM_SSD_STACK];
-
-};
-
-static bool SetSignalsEnumProc(TileIndex tile, void* data, Trackdir trackdir, uint length, byte* state)
-{
-	SetSignalsData* ssd = (SetSignalsData*)data;
-	Track track = TrackdirToTrack(trackdir);
-
-	if (!IsTileType(tile, MP_RAILWAY)) return false;
-
-	/* the tile has signals? */
-	if (HasSignalOnTrack(tile, track)) {
-		if (HasSignalOnTrackdir(tile, ReverseTrackdir(trackdir))) {
-			/* yes, add the signal to the list of signals */
-			if (ssd->cur != NUM_SSD_ENTRY) {
-				ssd->tile[ssd->cur] = tile; // remember the tile index
-				ssd->bit[ssd->cur] = trackdir; // and the controlling bit number
-				ssd->cur++;
-			}
-
-			/* remember if this block has a presignal. */
-			ssd->has_presignal |= IsPresignalEntry(tile, track);
-		}
-
-		if (HasSignalOnTrackdir(tile, trackdir) && IsPresignalExit(tile, track)) {
-			/* this is an exit signal that points out from the segment */
-			ssd->presignal_exits++;
-			if (GetSignalStateByTrackdir(tile, trackdir) != SIGNAL_STATE_RED)
-				ssd->presignal_exits_free++;
-		}
-
-		return true;
-	} else if (IsTileDepotType(tile, TRANSPORT_RAIL)) {
-		return true; // don't look further if the tile is a depot
-	}
-
-	return false;
-}
-
-static void *SignalVehicleCheckProc(Vehicle *v, void *data)
-{
-	uint track = *(uint*)data;
-
-	if (v->type != VEH_TRAIN) return NULL;
-
-	/* Are we on the same piece of track? */
-	if (track & v->u.rail.track * 0x101) return v;
-
-	return NULL;
-}
-
-/* Special check for SetSignalsAfterProc, to see if there is a vehicle on this tile */
-static bool SignalVehicleCheck(TileIndex tile, uint track)
-{
-	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
-		/* Locate vehicles in tunnels or on bridges */
-		return GetVehicleTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile)) != NULL;
-	} else {
-		return VehicleFromPos(tile, &track, &SignalVehicleCheckProc) != NULL;
-	}
-}
-
-static void SetSignalsAfterProc(TrackPathFinder *tpf)
-{
-	SetSignalsData *ssd = (SetSignalsData*)tpf->userdata;
-	const TrackPathFinderLink* link;
-	uint offs;
-	uint i;
-
-	ssd->stop = false;
-
-	/* Go through all the PF tiles */
-	for (i = 0; i < lengthof(tpf->hash_head); i++) {
-		/* Empty hash item */
-		if (tpf->hash_head[i] == 0) continue;
-
-		/* If 0x8000 is not set, there is only 1 item */
-		if (!(tpf->hash_head[i] & 0x8000)) {
-			/* Check if there is a vehicle on this tile */
-			if (SignalVehicleCheck(tpf->hash_tile[i], tpf->hash_head[i])) {
-				ssd->stop = true;
-				return;
-			}
-		} else {
-			/* There are multiple items, where hash_tile points to the first item in the list */
-			offs = tpf->hash_tile[i];
-			do {
-				/* Find the next item */
-				link = PATHFIND_GET_LINK_PTR(tpf, offs);
-				/* Check if there is a vehicle on this tile */
-				if (SignalVehicleCheck(link->tile, link->flags)) {
-					ssd->stop = true;
-					return;
-				}
-				/* Goto the next item */
-			} while ((offs = link->next) != 0xFFFF);
-		}
-	}
-}
-
-static void ChangeSignalStates(SetSignalsData *ssd)
-{
-	int i;
-
-	/* thinking about presignals...
-	 * the presignal is green if,
-	 *   if no train is in the segment AND
-	 *   there is at least one green exit signal OR
-	 *   there are no exit signals in the segment */
-
-	/* then mark the signals in the segment accordingly */
-	for (i = 0; i != ssd->cur; i++) {
-		TileIndex tile = ssd->tile[i];
-		byte bit = SignalAgainstTrackdir(ssd->bit[i]);
-		uint signals = GetSignalStates(tile);
-		Track track = TrackdirToTrack(ssd->bit[i]);
-
-		/* presignals don't turn green if there is at least one presignal exit and none are free */
-		if (IsPresignalEntry(tile, track)) {
-			int ex = ssd->presignal_exits, exfree = ssd->presignal_exits_free;
-
-			/* subtract for dual combo signals so they don't count themselves */
-			if (IsPresignalExit(tile, track) && HasSignalOnTrackdir(tile, ssd->bit[i])) {
-				ex--;
-				if (GetSignalStateByTrackdir(tile, ssd->bit[i]) != SIGNAL_STATE_RED) exfree--;
-			}
-
-			/* if we have exits and none are free, make red. */
-			if (ex && !exfree) goto make_red;
-		}
-
-		/* check if the signal is unaffected. */
-		if (ssd->stop) {
-make_red:
-			/* turn red */
-			if ((bit & signals) == 0) continue;
-		} else {
-			/* turn green */
-			if ((bit & signals) != 0) continue;
-		}
-
-		/* Update signals on the other side of this exit-combo signal; it changed. */
-		if (IsPresignalExit(tile, track)) {
-			if (ssd->cur_stack != NUM_SSD_STACK) {
-				ssd->next_tile[ssd->cur_stack] = tile;
-				ssd->next_dir[ssd->cur_stack] = TrackdirToExitdir(ssd->bit[i]);
-				ssd->cur_stack++;
-			} else {
-				DEBUG(misc, 0, "NUM_SSD_STACK too small"); /// @todo WTF is this???
-			}
-		}
-
-		/* it changed, so toggle it */
-		SetSignalStates(tile, signals ^ bit);
-		MarkTileDirtyByTile(tile);
-	}
-}
-
-
-bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection direction)
-{
-	SetSignalsData ssd;
-	int result = -1;
-
-	ssd.cur_stack = 0;
-
-	for (;;) {
-		/* go through one segment and update all signals pointing into that segment. */
-		ssd.cur = ssd.presignal_exits = ssd.presignal_exits_free = 0;
-		ssd.has_presignal = false;
-
-		FollowTrack(tile, 0xC000 | TRANSPORT_RAIL, 0, direction, SetSignalsEnumProc, SetSignalsAfterProc, &ssd);
-		ChangeSignalStates(&ssd);
-
-		/* remember the result only for the first iteration. */
-		if (result < 0) {
-			/* stay in depot while segment is occupied or while all presignal exits are blocked */
-			result = ssd.stop || (ssd.presignal_exits > 0 && ssd.presignal_exits_free == 0);
-		}
-
-		/* if any exit signals were changed, we need to keep going to modify the stuff behind those. */
-		if (ssd.cur_stack == 0) break;
-
-		/* one or more exit signals were changed, so we need to update another segment too. */
-		tile = ssd.next_tile[--ssd.cur_stack];
-		direction = ssd.next_dir[ssd.cur_stack];
-	}
-
-	return result != 0;
-}
-
-void SetSignalsOnBothDir(TileIndex tile, byte track)
-{
-	static const DiagDirection _search_dir_1[] = {
-		DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_SW, DIAGDIR_SE
-	};
-	static const DiagDirection _search_dir_2[] = {
-		DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE
-	};
-
-	UpdateSignalsOnSegment(tile, _search_dir_1[track]);
-	UpdateSignalsOnSegment(tile, _search_dir_2[track]);
-}
-
 static uint GetSlopeZ_Track(TileIndex tile, uint x, uint y)
 {
 	uint z;
@@ -2419,14 +2243,15 @@
 	}
 
 	/* The height of the track_corner must not be changed. The rest ensures GetRailFoundation() already. */
-	z_old += GetSlopeZInCorner((Slope)(tileh_old & ~SLOPE_HALFTILE_MASK), track_corner);
-	z_new += GetSlopeZInCorner((Slope)(tileh_new & ~SLOPE_HALFTILE_MASK), track_corner);
+	z_old += GetSlopeZInCorner(RemoveHalftileSlope(tileh_old), track_corner);
+	z_new += GetSlopeZInCorner(RemoveHalftileSlope(tileh_new), track_corner);
 	if (z_old != z_new) return CMD_ERROR;
 
 	CommandCost cost = CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 	/* Make the ground dirty, if surface slope has changed */
 	if (tileh_old != tileh_new) {
-		if (GetRailGroundType(tile) == RAIL_GROUND_WATER) cost.AddCost(_price.clear_water);
+		/* If there is flat water on the lower halftile add the cost for clearing it */
+		if (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh_old)) cost.AddCost(_price.clear_water);
 		if ((flags & DC_EXEC) != 0) SetRailGroundType(tile, RAIL_GROUND_BARREN);
 	}
 	return  cost;
@@ -2438,7 +2263,8 @@
 	Slope tileh_old = GetTileSlope(tile, &z_old);
 	if (IsPlainRailTile(tile)) {
 		TrackBits rail_bits = GetTrackBits(tile);
-		bool was_water = GetRailGroundType(tile) == RAIL_GROUND_WATER;
+		/* Is there flat water on the lower halftile, that must be cleared expensively? */
+		bool was_water = (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh_old));
 
 		_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
 
--- a/src/rail_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "gui.h"
@@ -27,6 +25,10 @@
 #include "window_func.h"
 #include "date_func.h"
 #include "sound_func.h"
+#include "player_func.h"
+#include "settings_type.h"
+#include "widgets/dropdown_type.h"
+#include "widgets/dropdown_func.h"
 
 #include "bridge_map.h"
 #include "rail_map.h"
@@ -35,6 +37,8 @@
 #include "tunnel_map.h"
 #include "tunnelbridge_map.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static RailType _cur_railtype;
 static bool _remove_button_clicked;
@@ -719,7 +723,6 @@
 	BRSW_HIGHLIGHT_ON,
 
 	BRSW_NEWST_DROPDOWN,
-	BRSW_NEWST_DROPDOWN_TEXT,
 	BRSW_NEWST_LIST,
 	BRSW_NEWST_SCROLL
 };
@@ -771,6 +774,18 @@
 	}
 }
 
+static DropDownList *BuildStationClassDropDown()
+{
+	DropDownList *list = new DropDownList();
+
+	for (uint i = 0; i < GetNumStationClasses(); i++) {
+		if (i == STAT_CLASS_WAYP) continue;
+		list->push_back(new DropDownListStringItem(GetStationClassName((StationClassID)i), i, false));
+	}
+
+	return list;
+}
+
 static void StationBuildWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
@@ -849,7 +864,12 @@
 		DrawStringCentered(74, 101 + y_offset, STR_3004_PLATFORM_LENGTH, TC_FROMSTRING);
 		DrawStringCentered(74, 141 + y_offset, STR_3066_COVERAGE_AREA_HIGHLIGHT, TC_FROMSTRING);
 
-		DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad);
+		int text_end = DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad) + 4;
+		if (text_end > w->widget[BRSW_BACKGROUND].bottom) {
+			SetWindowDirty(w);
+			ResizeWindowForWidget(w, BRSW_BACKGROUND, 0, text_end - w->widget[BRSW_BACKGROUND].bottom);
+			SetWindowDirty(w);
+		}
 
 		if (newstations) {
 			uint y = 35;
@@ -988,8 +1008,7 @@
 			break;
 
 		case BRSW_NEWST_DROPDOWN:
-		case BRSW_NEWST_DROPDOWN_TEXT:
-			ShowDropDownMenu(w, BuildStationClassDropdown(), _railstation.station_class, 23, 0, 1 << STAT_CLASS_WAYP);
+			ShowDropDownList(w, BuildStationClassDropDown(), _railstation.station_class, BRSW_NEWST_DROPDOWN);
 			break;
 
 		case BRSW_NEWST_LIST: {
@@ -1060,16 +1079,16 @@
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    52,    66,    87,    98, STR_00CD_3,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_3
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    67,    81,    87,    98, STR_00CE_4,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_4
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    82,    96,    87,    98, STR_00CF_5,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_5
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,    87,    98, STR_0335_6,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,    87,    98, STR_0336_7,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,    87,    98, STR_6,                           STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,    87,    98, STR_7,                           STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
 
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    22,    36,   112,   123, STR_00CB_1,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_1
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    37,    51,   112,   123, STR_00CC_2,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_2
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    52,    66,   112,   123, STR_00CD_3,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_3
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    67,    81,   112,   123, STR_00CE_4,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_4
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    82,    96,   112,   123, STR_00CF_5,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_5
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   112,   123, STR_0335_6,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_6
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   112,   123, STR_0336_7,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_7
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   112,   123, STR_6,                           STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_6
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   112,   123, STR_7,                           STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_7
 
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    37,   111,   126,   137, STR_DRAG_DROP,                   STR_STATION_DRAG_DROP},               // BRSW_PLATFORM_DRAG_N_DROP
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    14,    73,   152,   163, STR_02DB_OFF,                    STR_3065_DON_T_HIGHLIGHT_COVERAGE},   // BRSW_HIGHLIGHT_OFF
@@ -1090,24 +1109,23 @@
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    52,    66,   177,   188, STR_00CD_3,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_3
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    67,    81,   177,   188, STR_00CE_4,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_4
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    82,    96,   177,   188, STR_00CF_5,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_5
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   177,   188, STR_0335_6,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   177,   188, STR_0336_7,                      STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   177,   188, STR_6,                           STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   177,   188, STR_7,                           STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
 
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    22,    36,   202,   213, STR_00CB_1,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_1
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    37,    51,   202,   213, STR_00CC_2,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_2
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    52,    66,   202,   213, STR_00CD_3,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_3
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    67,    81,   202,   213, STR_00CE_4,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_4
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    82,    96,   202,   213, STR_00CF_5,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_5
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   202,   213, STR_0335_6,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_6
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   202,   213, STR_0336_7,                      STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_7
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,    97,   111,   202,   213, STR_6,                           STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_6
+{    WWT_TEXTBTN,   RESIZE_NONE,    14,   112,   126,   202,   213, STR_7,                           STR_3050_SELECT_LENGTH_OF_RAILROAD},  // BRSW_PLATFORM_LEN_7
 
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    37,   111,   216,   227, STR_DRAG_DROP,                   STR_STATION_DRAG_DROP},               // BRSW_PLATFORM_DRAG_N_DROP
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    14,    73,   242,   253, STR_02DB_OFF,                    STR_3065_DON_T_HIGHLIGHT_COVERAGE},   // BRSW_HIGHLIGHT_OFF
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    74,   133,   242,   253, STR_02DA_ON,                     STR_3064_HIGHLIGHT_COVERAGE_AREA},    // BRSW_HIGHLIGHT_ON
 
 /* newstations gui additions */
-{      WWT_INSET,   RESIZE_NONE,    14,     7,   140,    17,    28, STR_02BD,                        STR_SELECT_STATION_CLASS_TIP},        // BRSW_NEWST_DROPDOWN
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   129,   139,    18,    27, STR_0225,                        STR_SELECT_STATION_CLASS_TIP},        // BRSW_NEWST_DROPDOWN_TEXT
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,     7,   140,    17,    28, STR_02BD,                        STR_SELECT_STATION_CLASS_TIP},        // BRSW_NEWST_DROPDOWN
 {     WWT_MATRIX,   RESIZE_NONE,    14,     7,   128,    32,   102, 0x501,                           STR_SELECT_STATION_TYPE_TIP},         // BRSW_NEWST_LIST
 {  WWT_SCROLLBAR,   RESIZE_NONE,    14,   129,   140,    32,   102, 0x0,                             STR_0190_SCROLL_BAR_SCROLLS_LIST},    // BRSW_NEWST_SCROLL
 {   WIDGETS_END},
@@ -1540,11 +1558,11 @@
 		switch (rt) {
 			case RAILTYPE_END + 0:
 				rt = RAILTYPE_RAIL;
-				while (rt < RAILTYPE_END && !HasRailtypeAvail(GetPlayer(_local_player), rt)) rt++;
+				while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_player, rt)) rt++;
 				break;
 
 			case RAILTYPE_END + 1:
-				rt = GetBestRailtype(GetPlayer(_local_player));
+				rt = GetBestRailtype(_local_player);
 				break;
 
 			default:
--- a/src/rail_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -375,6 +375,18 @@
 		SIGNAL_STATE_GREEN : SIGNAL_STATE_RED;
 }
 
+/**
+ * Sets the state of the signal along the given trackdir.
+ */
+static inline void SetSignalStateByTrackdir(TileIndex tile, Trackdir trackdir, SignalState state)
+{
+	if (state == SIGNAL_STATE_GREEN) { // set 1
+		SetSignalStates(tile, GetSignalStates(tile) | SignalAlongTrackdir(trackdir));
+	} else {
+		SetSignalStates(tile, GetSignalStates(tile) & ~SignalAlongTrackdir(trackdir));
+	}
+}
+
 
 /**
  * Return the rail type of tile, or INVALID_RAILTYPE if this is no rail tile.
@@ -396,7 +408,7 @@
 	RAIL_GROUND_FENCE_HORIZ1 = 10, ///< Grass with a fence at the southern side
 	RAIL_GROUND_FENCE_HORIZ2 = 11, ///< Grass with a fence at the northern side
 	RAIL_GROUND_ICE_DESERT   = 12, ///< Icy or sandy
-	RAIL_GROUND_WATER        = 13, ///< Grass with a fence and water on the lower halftile
+	RAIL_GROUND_WATER        = 13, ///< Grass with a fence and shore or water on the free halftile
 };
 
 static inline void SetRailGroundType(TileIndex t, RailGroundType rgt)
--- a/src/rail_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/rail_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,8 @@
 #ifndef RAIL_TYPE_H
 #define RAIL_TYPE_H
 
+#include "core/enum_type.hpp"
+
 /**
  * Enumeration for all possible railtypes.
  *
@@ -20,12 +22,27 @@
 	INVALID_RAILTYPE  = 0xFF        ///< Flag for invalid railtype
 };
 
-typedef byte RailTypeMask;
-
 /** Allow incrementing of Track variables */
 DECLARE_POSTFIX_INCREMENT(RailType);
 /** Define basic enum properties */
 template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE> {};
 typedef TinyEnumT<RailType> RailTypeByte;
 
+/**
+ * The different roadtypes we support, but then a bitmask of them
+ */
+enum RailTypes {
+	RAILTYPES_NONE     = 0,                      ///< No rail types
+	RAILTYPES_RAIL     = 1 << RAILTYPE_RAIL,     ///< Non-electrified rails
+	RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails
+	RAILTYPES_MONO     = 1 << RAILTYPE_MONO,     ///< Monorail!
+	RAILTYPES_MAGLEV   = 1 << RAILTYPE_MAGLEV,   ///< Ever fast maglev
+	RAILTYPES_ALL      = RAILTYPES_RAIL | RAILTYPES_ELECTRIC | RAILTYPES_MONO | RAILTYPES_MAGLEV, ///< All of them
+	RAILTYPES_END,                               ///< Used for iterations?
+	INVALID_RAILTYPES  = 0xFF                    ///< Invalid railtypes
+};
+DECLARE_ENUM_AS_BIT_SET(RailTypes);
+template <> struct EnumPropsT<RailTypes> : MakeEnumPropsT<RailTypes, byte, RAILTYPES_NONE, RAILTYPES_END, INVALID_RAILTYPES> {};
+typedef TinyEnumT<RailTypes> RailTypesByte;
+
 #endif /* RAIL_TYPE_H */
--- a/src/road.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,12 @@
 #include "road_map.h"
 #include "road_internal.h"
 #include "water_map.h"
+#include "genworld.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "engine.h"
+#include "settings_type.h"
+#include "date_func.h"
 
 bool IsPossibleCrossing(const TileIndex tile, Axis ax)
 {
@@ -67,3 +73,39 @@
 
 	return org_rb;
 }
+
+bool HasRoadTypesAvail(const PlayerID p, const RoadTypes rts)
+{
+	RoadTypes avail_roadtypes;
+
+	if (p == OWNER_TOWN || _game_mode == GM_EDITOR || IsGeneratingWorld()) {
+		avail_roadtypes = ROADTYPES_ROAD;
+	} else {
+		if (!IsValidPlayer(p)) return false;
+		avail_roadtypes = (RoadTypes)GetPlayer(p)->avail_roadtypes | ROADTYPES_ROAD; // road is available for always for everybody
+	}
+	return (rts & ~avail_roadtypes) == 0;
+}
+
+bool ValParamRoadType(const RoadType rt)
+{
+	return HasRoadTypesAvail(_current_player, RoadTypeToRoadTypes(rt));
+}
+
+RoadTypes GetPlayerRoadtypes(PlayerID p)
+{
+	RoadTypes rt = ROADTYPES_NONE;
+
+	EngineID i;
+	FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_ROAD) {
+		const Engine* e = GetEngine(i);
+		const EngineInfo *ei = EngInfo(i);
+
+		if (HasBit(ei->climates, _opt.landscape) &&
+				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
+			SetBit(rt, HasBit(ei->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
+		}
+	}
+
+	return rt;
+}
--- a/src/road_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,14 +11,11 @@
 #include "road_map.h"
 #include "road_internal.h"
 #include "sprite.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "town_map.h"
 #include "viewport_func.h"
 #include "command_func.h"
-#include "player.h"
 #include "town.h"
 #include "yapf/yapf.h"
 #include "depot.h"
@@ -35,13 +32,19 @@
 #include "vehicle_func.h"
 #include "vehicle_base.h"
 #include "sound_func.h"
+#include "road_func.h"
+#include "tunnelbridge.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
 
 #define M(x) (1 << (x))
 /* Level crossings may only be built on these slopes */
 static const uint32 VALID_LEVEL_CROSSING_SLOPES = (M(SLOPE_SEN) | M(SLOPE_ENW) | M(SLOPE_NWS) | M(SLOPE_NS) | M(SLOPE_WSE) | M(SLOPE_EW) | M(SLOPE_FLAT));
 #undef M
 
+Foundation GetRoadFoundation(Slope tileh, RoadBits bits);
+
 bool CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, Owner owner, bool *edge_road, RoadType rt)
 {
 	RoadBits present;
@@ -93,19 +96,15 @@
 	return CheckAllowRemoveRoad(tile, remove, GetRoadOwner(tile, rt), edge_road, rt);
 }
 
+
 /** Delete a piece of road.
  * @param tile tile where to remove road from
  * @param flags operation to perform
- * @param p1 bit 0..3 road pieces to remove (RoadBits)
- *           bit 4..5 road type
- *           bit    6 ignore the fact that the tram track has not been removed
- *                    yet when removing the road bits when not actually doing
- *                    it. Makes it possible to test whether the road bits can
- *                    be removed from a level crossing without physically
- *                    removing the tram bits before the test.
- * @param p2 unused
+ * @param pieces roadbits to remove
+ * @param rt roadtype to remove
+ * @param crossing_check should we check if there is a tram track when we are removing road from crossing?
  */
-CommandCost CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, RoadType rt, bool crossing_check)
 {
 	/* cost for removing inner/edge -roads */
 	static const uint16 road_remove_cost[2] = {50, 18};
@@ -114,9 +113,6 @@
 	 * false if it was a center piece. Affects town ratings drop */
 	bool edge_road;
 
-	RoadType rt = (RoadType)GB(p1, 4, 2);
-	if (!IsValidRoadType(rt)) return CMD_ERROR;
-
 	Town *t = NULL;
 	switch (GetTileType(tile)) {
 		case MP_ROAD:
@@ -130,16 +126,14 @@
 			break;
 
 		case MP_TUNNELBRIDGE:
-			{
-				if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR;
-				if (GetVehicleTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile)) != NULL) return CMD_ERROR;
-			} break;
+			if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR;
+			if (GetVehicleTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile)) != NULL) return CMD_ERROR;
+			break;
 
 		default:
 			return CMD_ERROR;
 	}
 
-	RoadBits pieces = Extract<RoadBits, 0>(p1);
 	RoadTypes rts = GetRoadTypes(tile);
 	/* The tile doesn't have the given road type */
 	if (!HasBit(rts, rt)) return CMD_ERROR;
@@ -158,7 +152,7 @@
 		if (IsTileType(tile, MP_TUNNELBRIDGE)) {
 			TileIndex other_end = GetOtherTunnelBridgeEnd(tile);
 			/* Pay for *every* tile of the bridge or tunnel */
-			cost.AddCost((DistanceManhattan(other_end, tile) + 1) * _price.remove_road);
+			cost.AddCost((GetTunnelBridgeLength(other_end, tile) + 2) * _price.remove_road);
 			if (flags & DC_EXEC) {
 				SetRoadTypes(other_end, GetRoadTypes(other_end) & ~RoadTypeToRoadTypes(rt));
 				SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt));
@@ -231,7 +225,7 @@
 
 			/* Don't allow road to be removed from the crossing when there is tram;
 			 * we can't draw the crossing without trambits ;) */
-			if (rt == ROADTYPE_ROAD && HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) && ((flags & DC_EXEC) || !HasBit(p1, 6))) return CMD_ERROR;
+			if (rt == ROADTYPE_ROAD && HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR;
 
 			if (rt == ROADTYPE_ROAD) {
 				ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
@@ -257,6 +251,24 @@
 }
 
 
+/** Delete a piece of road.
+ * @param tile tile where to remove road from
+ * @param flags operation to perform
+ * @param p1 bit 0..3 road pieces to remove (RoadBits)
+ *           bit 4..5 road type
+ * @param p2 unused
+ */
+CommandCost CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+{
+	RoadType rt = (RoadType)GB(p1, 4, 2);
+	if (!IsValidRoadType(rt)) return CMD_ERROR;
+
+	RoadBits pieces = Extract<RoadBits, 0>(p1);
+
+	return RemoveRoad(tile, flags, pieces, rt, true);
+}
+
+
 static const RoadBits _valid_tileh_slopes_road[][15] = {
 	/* set of normal ones */
 	{
@@ -374,7 +386,7 @@
 	*pieces |= MirrorRoadBits(*pieces);
 
 	/* partly leveled up tile, only if there's no road on that tile */
-	if ((existing == ROAD_NONE || existing == *pieces) && (tileh == SLOPE_W || tileh == SLOPE_S || tileh == SLOPE_E || tileh == SLOPE_N)) {
+	if ((existing == ROAD_NONE || existing == *pieces) && IsSlopeWithOneCornerRaised(tileh)) {
 		if (*pieces == ROAD_X || *pieces == ROAD_Y) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 	}
 	return CMD_ERROR;
@@ -487,6 +499,7 @@
 				YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile)));
 				/* Always add road to the roadtypes (can't draw without it) */
 				MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2);
+				UpdateLevelCrossing(tile, false);
 				MarkTileDirtyByTile(tile);
 			}
 			return CommandCost(EXPENSES_CONSTRUCTION, _price.build_road * (rt == ROADTYPE_ROAD ? 2 : 4));
@@ -495,18 +508,16 @@
 		case MP_STATION:
 			if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
 			if (HasBit(GetRoadTypes(tile), rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
-			/* Don't allow "upgrading" the roadstop when vehicles are already driving on it */
+			/* Don't allow adding roadtype to the roadstop when vehicles are already driving on it */
 			if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 			break;
 
 		case MP_TUNNELBRIDGE:
-			{
-				if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR;
-				if (HasBit(GetRoadTypes(tile), rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
-
-				/* Don't allow "upgrading" the bridge/tunnel when vehicles are already driving on it */
-				if (GetVehicleTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile)) != NULL) return CMD_ERROR;
-			} break;
+			if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR;
+			if (HasBit(GetRoadTypes(tile), rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
+			/* Don't allow adding roadtype to the bridge/tunnel when vehicles are already driving on it */
+			if (GetVehicleTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile)) != NULL) return CMD_ERROR;
+			break;
 
 		default:
 do_clear:;
@@ -529,12 +540,29 @@
 	if (IsTileType(tile, MP_ROAD)) {
 		/* Don't put the pieces that already exist */
 		pieces &= ComplementRoadBits(existing);
+
+		/* Check if new road bits will have the same foundation as other existing road types */
+		if (GetRoadTileType(tile) == ROAD_TILE_NORMAL) {
+			Slope slope = GetTileSlope(tile, NULL);
+			Foundation found_new = GetRoadFoundation(slope, pieces | existing);
+
+			/* Test if all other roadtypes can be built at that foundation */
+			for (RoadType rtest = ROADTYPE_ROAD; rtest < ROADTYPE_END; rtest++) {
+				if (rtest != rt) { // check only other road types
+					RoadBits bits = GetRoadBits(tile, rtest);
+					/* do not check if there are not road bits of given type */
+					if (bits != ROAD_NONE && GetRoadFoundation(slope, bits) != found_new) {
+						return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
+					}
+				}
+			}
+		}
 	}
 
 	cost.AddCost(CountBits(pieces) * _price.build_road);
 	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
 		/* Pay for *every* tile of the bridge or tunnel */
-		cost.MultiplyCost(DistanceManhattan(GetOtherTunnelBridgeEnd(tile), tile) + 1);
+		cost.MultiplyCost(GetTunnelBridgeLength(GetOtherTunnelBridgeEnd(tile), tile) + 2);
 	}
 
 	if (flags & DC_EXEC) {
@@ -652,7 +680,7 @@
 						cost.AddCost(ret);
 					}
 					had_bridge = true;
-				} else {
+				} else { // IsTunnel(tile)
 					if ((!had_tunnel || GetTunnelBridgeDirection(tile) == DIAGDIR_SE || GetTunnelBridgeDirection(tile) == DIAGDIR_SW)) {
 						cost.AddCost(ret);
 					}
@@ -716,7 +744,7 @@
 
 		/* try to remove the halves. */
 		if (bits != 0) {
-			ret = DoCommand(tile, rt << 4 | bits, 0, flags & ~DC_EXEC, CMD_REMOVE_ROAD);
+			ret = RemoveRoad(tile, flags & ~DC_EXEC, bits, rt, true);
 			if (CmdSucceeded(ret)) {
 				if (flags & DC_EXEC) {
 					money -= ret.GetCost();
@@ -724,7 +752,7 @@
 						_additional_cash_required = DoCommand(end_tile, start_tile, p2, flags & ~DC_EXEC, CMD_REMOVE_LONG_ROAD).GetCost();
 						return cost;
 					}
-					DoCommand(tile, rt << 4 | bits, 0, flags, CMD_REMOVE_ROAD);
+					RemoveRoad(tile, flags, bits, rt, true);
 				}
 				cost.AddCost(ret);
 			}
@@ -816,7 +844,7 @@
 				CommandCost ret(EXPENSES_CONSTRUCTION);
 				for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
 					if (HasBit(rts, rt)) {
-						CommandCost tmp_ret = DoCommand(tile, rt << 4 | GetRoadBits(tile, rt), 0, flags, CMD_REMOVE_ROAD);
+						CommandCost tmp_ret = RemoveRoad(tile, flags, GetRoadBits(tile, rt), rt, true);
 						if (CmdFailed(tmp_ret)) return tmp_ret;
 						ret.AddCost(tmp_ret);
 					}
@@ -836,7 +864,7 @@
 			 * tram tracks must be removed before the road bits. */
 			for (RoadType rt = ROADTYPE_HWAY; rt >= ROADTYPE_ROAD; rt--) {
 				if (HasBit(rts, rt)) {
-					CommandCost tmp_ret = DoCommand(tile, 1 << 6 | rt << 4 | GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
+					CommandCost tmp_ret = RemoveRoad(tile, flags, GetCrossingRoadBits(tile), rt, false);
 					if (CmdFailed(tmp_ret)) return tmp_ret;
 					ret.AddCost(tmp_ret);
 				}
@@ -1203,14 +1231,14 @@
 
 	const Town* t = ClosestTownFromTile(tile, (uint)-1);
 	if (!HasRoadWorks(tile)) {
-		int grp = 0;
+		HouseZonesBits grp = HZB_TOWN_EDGE;
 
 		if (t != NULL) {
 			grp = GetTownRadiusGroup(t, tile);
 
 			/* Show an animation to indicate road work */
 			if (t->road_build_months != 0 &&
-					(DistanceManhattan(t->xy, tile) < 8 || grp != 0) &&
+					(DistanceManhattan(t->xy, tile) < 8 || grp != HZB_TOWN_EDGE) &&
 					GetRoadTileType(tile) == ROAD_TILE_NORMAL && CountBits(GetAllRoadBits(tile)) > 1 ) {
 				if (GetTileSlope(tile, NULL) == SLOPE_FLAT && EnsureNoVehicleOnGround(tile) && Chance16(1, 40)) {
 					StartRoadWorks(tile);
@@ -1257,7 +1285,7 @@
 			const RoadBits new_rb = CleanUpRoadBits(tile, old_rb);
 
 			if (old_rb != new_rb) {
-				DoCommand(tile, (old_rb ^ new_rb), t->index, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_REMOVE_ROAD);
+				RemoveRoad(tile, DC_EXEC | DC_AUTO | DC_NO_WATER, (old_rb ^ new_rb), ROADTYPE_ROAD, true);
 			}
 		}
 
@@ -1343,11 +1371,9 @@
 {
 	switch (GetRoadTileType(tile)) {
 		case ROAD_TILE_CROSSING:
-			if (v->type == VEH_TRAIN && !IsCrossingBarred(tile)) {
-				/* train crossing a road */
-				SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v);
-				BarCrossing(tile);
-				MarkTileDirtyByTile(tile);
+			if (v->type == VEH_TRAIN) {
+				/* it should be barred */
+				assert(IsCrossingBarred(tile));
 			}
 			break;
 
--- a/src/road_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,7 @@
 #include "core/bitmath_func.hpp"
 #include "road_type.h"
 #include "direction_func.h"
+#include "player_type.h"
 
 /**
  * Whether the given roadtype is valid.
@@ -113,4 +114,28 @@
 	return (RoadBits)(ROAD_NW << (3 ^ d));
 }
 
+/**
+ * Finds out, whether given player has all given RoadTypes available
+ * @param PlayerID ID of player
+ * @param rts RoadTypes to test
+ * @return true if player has all requested RoadTypes available
+ */
+bool HasRoadTypesAvail(const PlayerID p, const RoadTypes rts);
+
+/**
+ * Validate functions for rail building.
+ * @param rt road type to check.
+ * @return true if the current player may build the road.
+ */
+bool ValParamRoadType(const RoadType rt);
+
+/**
+ * Get the road types the given player can build.
+ * @param p the player to get the roadtypes for.
+ * @return the road types.
+ */
+RoadTypes GetPlayerRoadtypes(const PlayerID p);
+
+void UpdateLevelCrossing(TileIndex tile, bool sound = true);
+
 #endif /* ROAD_FUNC_H */
--- a/src/road_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,8 +4,6 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "station_gui.h"
@@ -23,7 +21,11 @@
 #include "window_func.h"
 #include "vehicle_func.h"
 #include "sound_func.h"
+#include "player_func.h"
+#include "settings_type.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static void ShowRVStationPicker(RoadStop::Type rs);
 static void ShowRoadDepotPicker();
@@ -152,13 +154,13 @@
 		SPR_CURSOR_AUTOROAD,
 	},
 	{
-		STR_1804_CAN_T_BUILD_TRAMWAY_HERE,
-		STR_1805_CAN_T_REMOVE_TRAMWAY_FROM,
-		STR_1807_CAN_T_BUILD_TRAM_VEHICLE,
-		{ STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION,        STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION        },
-		{ STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION,            STR_CAN_T_REMOVE_CARGO_TRAM_STATION            },
-		{ STR_3042_PASSENGER_TRAM_STATION_ORIENTATION,        STR_3043_CARGO_TRAM_STATION_ORIENT             },
-		{ STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION, STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION },
+		STR_CAN_T_BUILD_TRAMWAY_HERE,
+		STR_CAN_T_REMOVE_TRAMWAY_FROM,
+		STR_CAN_T_BUILD_TRAM_VEHICLE,
+		{ STR_CAN_T_BUILD_PASSENGER_TRAM_STATION,        STR_CAN_T_BUILD_CARGO_TRAM_STATION        },
+		{ STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION,       STR_CAN_T_REMOVE_CARGO_TRAM_STATION       },
+		{ STR_PASSENGER_TRAM_STATION_ORIENTATION,        STR_CARGO_TRAM_STATION_ORIENT             },
+		{ STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION, STR_SELECT_CARGO_TRAM_STATION_ORIENTATION },
 
 		SPR_CURSOR_TRAMWAY_NESW,
 		SPR_CURSOR_TRAMWAY_NWSE,
@@ -600,21 +602,21 @@
 
 /** Widget definition of the build tram toolbar */
 static const Widget _build_tramway_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},                     // RTW_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   228,     0,    13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},        // RTW_CAPTION
-{  WWT_STICKYBOX,   RESIZE_NONE,     7,   229,   240,     0,    13, 0x0,                        STR_STICKY_BUTTON},                         // RTW_STICKY
+{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},                // RTW_CLOSEBOX
+{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   228,     0,    13, STR_WHITE_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},      // RTW_CAPTION
+{  WWT_STICKYBOX,   RESIZE_NONE,     7,   229,   240,     0,    13, 0x0,                            STR_STICKY_BUTTON},                    // RTW_STICKY
 
-{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_TRAMWAY_X_DIR,      STR_180B_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_X
-{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_TRAMWAY_Y_DIR,      STR_180B_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_Y
-{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_AUTOTRAM,           STR_BUILD_AUTOTRAM_TIP},                    // RTW_AUTOROAD
-{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},           // RTW_DEMOLISH
-{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_ROAD_DEPOT,         STR_180C_BUILD_TRAM_VEHICLE_DEPOT},         // RTW_DEPOT
-{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   131,    14,    35, SPR_IMG_BUS_STATION,        STR_180D_BUILD_PASSENGER_TRAM_STATION},     // RTW_BUS_STATION
-{     WWT_IMGBTN,   RESIZE_NONE,     7,   132,   153,    14,    35, SPR_IMG_TRUCK_BAY,          STR_180E_BUILD_CARGO_TRAM_STATION},         // RTW_TRUCK_STATION
-{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                        STR_NULL},                                  // RTW_ONE_WAY
-{     WWT_IMGBTN,   RESIZE_NONE,     7,   154,   196,    14,    35, SPR_IMG_BRIDGE,             STR_180F_BUILD_TRAMWAY_BRIDGE},             // RTW_BUILD_BRIDGE
-{     WWT_IMGBTN,   RESIZE_NONE,     7,   197,   218,    14,    35, SPR_IMG_ROAD_TUNNEL,        STR_1810_BUILD_TRAMWAY_TUNNEL},             // RTW_BUILD_TUNNEL
-{     WWT_IMGBTN,   RESIZE_NONE,     7,   219,   240,    14,    35, SPR_IMG_REMOVE,             STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE
+{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_TRAMWAY_X_DIR,          STR_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_X
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_TRAMWAY_Y_DIR,          STR_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_Y
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_AUTOTRAM,               STR_BUILD_AUTOTRAM_TIP},               // RTW_AUTOROAD
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_DYNAMITE,               STR_018D_DEMOLISH_BUILDINGS_ETC},      // RTW_DEMOLISH
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_ROAD_DEPOT,             STR_BUILD_TRAM_VEHICLE_DEPOT},         // RTW_DEPOT
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   131,    14,    35, SPR_IMG_BUS_STATION,            STR_BUILD_PASSENGER_TRAM_STATION},     // RTW_BUS_STATION
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   132,   153,    14,    35, SPR_IMG_TRUCK_BAY,              STR_BUILD_CARGO_TRAM_STATION},         // RTW_TRUCK_STATION
+{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                            STR_NULL},                             // RTW_ONE_WAY
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   154,   196,    14,    35, SPR_IMG_BRIDGE,                 STR_BUILD_TRAMWAY_BRIDGE},             // RTW_BUILD_BRIDGE
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   197,   218,    14,    35, SPR_IMG_ROAD_TUNNEL,            STR_BUILD_TRAMWAY_TUNNEL},             // RTW_BUILD_TUNNEL
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   219,   240,    14,    35, SPR_IMG_REMOVE,                 STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE
 
 {   WIDGETS_END},
 };
@@ -736,12 +738,12 @@
 /** Widget definition of the build tram depot window */
 static const Widget _build_tram_depot_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},              // BRDW_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   139,     0,    13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // BRDW_CAPTION
+{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   139,     0,    13, STR_TRAM_DEPOT_ORIENTATION,      STR_018C_WINDOW_TITLE_DRAG_THIS},    // BRDW_CAPTION
 {      WWT_PANEL,   RESIZE_NONE,     7,     0,   139,    14,   121, 0x0,                             STR_NULL},                           // BRDW_BACKGROUND
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NW
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_NE
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_SE
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_SW
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_NW
 {   WIDGETS_END},
 };
 
@@ -823,9 +825,14 @@
 		StationPickerDrawSprite(171, 35, st, INVALID_RAILTYPE, _cur_roadtype, 4);
 		StationPickerDrawSprite(171, 85, st, INVALID_RAILTYPE, _cur_roadtype, 5);
 
-		DrawStationCoverageAreaText(2, 146,
+		int text_end = DrawStationCoverageAreaText(2, 146,
 			(w->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY,
-			3);
+			3) + 4;
+		if (text_end > w->widget[BRSW_BACKGROUND].bottom) {
+			SetWindowDirty(w);
+			ResizeWindowForWidget(w, BRSW_BACKGROUND, 0, text_end - w->widget[BRSW_BACKGROUND].bottom);
+			SetWindowDirty(w);
+		}
 
 	} break;
 
--- a/src/road_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -191,23 +191,26 @@
 	return AxisToTrackBits(OtherAxis(GetCrossingRoadAxis(tile)));
 }
 
+static inline bool IsCrossingBarred(TileIndex t)
+{
+	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
+	return HasBit(_m[t].m4, 5);
+}
+
+static inline void SetCrossingBarred(TileIndex t, bool barred)
+{
+	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
+	SB(_m[t].m4, 5, 1, barred);
+}
 
 static inline void UnbarCrossing(TileIndex t)
 {
-	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
-	ClrBit(_m[t].m4, 5);
+	SetCrossingBarred(t, false);
 }
 
 static inline void BarCrossing(TileIndex t)
 {
-	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
-	SetBit(_m[t].m4, 5);
-}
-
-static inline bool IsCrossingBarred(TileIndex t)
-{
-	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
-	return HasBit(_m[t].m4, 5);
+	SetCrossingBarred(t, true);
 }
 
 #define IsOnDesert IsOnSnow
--- a/src/road_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/road_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file road.h Enums and other types related to roads. */
+/** @file road_type.h Enums and other types related to roads. */
 
 #ifndef ROAD_TYPE_H
 #define ROAD_TYPE_H
@@ -34,8 +34,12 @@
 	ROADTYPES_ROADHWAY = ROADTYPES_ROAD | ROADTYPES_HWAY,                   ///< Road + highway (or whatever substitute)
 	ROADTYPES_TRAMHWAY = ROADTYPES_TRAM | ROADTYPES_HWAY,                   ///< Trams + highway (or whatever substitute)
 	ROADTYPES_ALL      = ROADTYPES_ROAD | ROADTYPES_TRAM | ROADTYPES_HWAY,  ///< Road + trams + highway (or whatever substitute)
+	ROADTYPES_END,                                                          ///< Used for iterations?
+	INVALID_ROADTYPES  = 0xFF                                               ///< Invalid roadtypes
 };
 DECLARE_ENUM_AS_BIT_SET(RoadTypes);
+template <> struct EnumPropsT<RoadTypes> : MakeEnumPropsT<RoadTypes, byte, ROADTYPES_NONE, ROADTYPES_END, INVALID_ROADTYPES> {};
+typedef TinyEnumT<RoadTypes> RoadTypesByte;
 
 
 /**
--- a/src/roadveh.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/roadveh.h	Sun Feb 03 20:17:54 2008 +0000
@@ -75,6 +75,7 @@
 	Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running; }
 	bool IsInDepot() const { return this->u.road.state == RVSB_IN_DEPOT; }
 	void Tick();
+	void OnNewDay();
 };
 
 byte GetRoadVehLength(const Vehicle *v);
--- a/src/roadveh_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/roadveh_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,7 +10,6 @@
 #include "road_map.h"
 #include "roadveh.h"
 #include "station_map.h"
-#include "table/strings.h"
 #include "timetable.h"
 #include "engine.h"
 #include "command_func.h"
@@ -18,7 +17,8 @@
 #include "news.h"
 #include "pathfind.h"
 #include "npf.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "depot.h"
 #include "bridge.h"
 #include "tunnel_map.h"
@@ -42,7 +42,9 @@
 #include "autoreplace_gui.h"
 #include "gfx_func.h"
 #include "ai/ai.h"
+#include "settings_type.h"
 
+#include "table/strings.h"
 
 static const uint16 _roadveh_images[63] = {
 	0xCD4, 0xCDC, 0xCE4, 0xCEC, 0xCF4, 0xCFC, 0xD0C, 0xD14,
@@ -245,7 +247,7 @@
 		v->max_age = e->lifelength * 366;
 		_new_vehicle_id = v->index;
 
-		v->string_id = STR_SV_ROADVEH_NAME;
+		v->name = NULL;
 
 		v->service_interval = _patches.servint_roadveh;
 
@@ -313,7 +315,7 @@
 
 		v->vehstatus ^= VS_STOPPED;
 		v->cur_speed = 0;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 	}
 
@@ -423,7 +425,7 @@
 		/* See where we are now */
 		Trackdir trackdir = GetVehicleTrackdir(v);
 
-		ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, v->tile, ReverseTrackdir(trackdir), TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE, 0);
+		ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, v->tile, ReverseTrackdir(trackdir), TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPES, 0);
 		if (ftd.best_bird_dist == 0) {
 			return GetDepotByTile(ftd.node.tile); /* Target found */
 		} else {
@@ -438,7 +440,7 @@
 
 		/* search in all directions */
 		for (DiagDirection i = DIAGDIR_BEGIN; i != DIAGDIR_END; i++) {
-			FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, v->u.road.compatible_roadtypes, i, EnumRoadSignalFindDepot, NULL, &rfdd);
+			FollowTrack(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, i, EnumRoadSignalFindDepot, NULL, &rfdd);
 		}
 
 		if (rfdd.best_length == (uint)-1) return NULL;
@@ -478,14 +480,14 @@
 
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
-		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
+		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OF_HALT_IN_DEPOT)) {
 			/* We called with a different DEPOT_SERVICE setting.
 			 * Now we change the setting to apply the new one and let the vehicle head for the same depot.
 			 * Note: the if is (true for requesting service == true for ordered to stop in depot) */
 			if (flags & DC_EXEC) {
-				ClrBit(v->current_order.flags, OFB_PART_OF_ORDERS);
-				ToggleBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+				ClrBit(v->current_order.flags, OF_PART_OF_ORDERS);
+				ToggleBit(v->current_order.flags, OF_HALT_IN_DEPOT);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			}
 			return CommandCost();
 		}
@@ -494,12 +496,12 @@
 		if (flags & DC_EXEC) {
 			/* If the orders to 'goto depot' are in the orders list (forced servicing),
 			 * then skip to the next order; effectively cancelling this forced service */
-			if (HasBit(v->current_order.flags, OFB_PART_OF_ORDERS))
+			if (HasBit(v->current_order.flags, OF_PART_OF_ORDERS))
 				v->cur_order_index++;
 
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return CommandCost();
 	}
@@ -512,12 +514,12 @@
 
 		ClearSlot(v);
 		v->current_order.type = OT_GOTO_DEPOT;
-		v->current_order.flags = OF_NON_STOP;
-		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
+		v->current_order.flags = OFB_NON_STOP;
+		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OF_HALT_IN_DEPOT);
 		v->current_order.refit_cargo = CT_INVALID;
 		v->current_order.dest = dep->index;
 		v->dest_tile = dep->xy;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 
 	return CommandCost();
@@ -563,7 +565,7 @@
 {
 	for (Vehicle *v = this; v != NULL; v = v->Next()) {
 		v->cur_image = v->GetImage(v->direction);
-		MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
+		MarkSingleVehicleDirty(v);
 	}
 }
 
@@ -614,8 +616,7 @@
 
 	if (IsTileType(v->tile, MP_STATION)) ClearCrashedStation(v);
 
-	BeginVehicleMove(v);
-	EndVehicleMove(v);
+	MarkSingleVehicleDirty(v);
 
 	delete v;
 }
@@ -689,12 +690,12 @@
 
 		u->vehstatus |= VS_CRASHED;
 
-		MarkAllViewportsDirty(u->left_coord, u->top_coord, u->right_coord + 1, u->bottom_coord + 1);
+		MarkSingleVehicleDirty(u);
 	}
 
 	ClearSlot(v);
 
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 
 	AI_Event(v->owner, new AIEventVehicleCrash(v->index, v->tile));
 
@@ -765,8 +766,8 @@
 	switch (v->current_order.type) {
 		case OT_GOTO_DEPOT:
 			/* Let a depot order in the orderlist interrupt. */
-			if (!(v->current_order.flags & OF_PART_OF_ORDERS)) return;
-			if (v->current_order.flags & OF_SERVICE_IF_NEEDED &&
+			if (!(v->current_order.flags & OFB_PART_OF_ORDERS)) return;
+			if (v->current_order.flags & OFB_SERVICE_IF_NEEDED &&
 					!VehicleNeedsService(v)) {
 				UpdateVehicleTimetable(v, true);
 				v->cur_order_index++;
@@ -897,6 +898,7 @@
 	rvf.veh = v;
 	if (front->u.road.state == RVSB_WORMHOLE) {
 		u = (Vehicle*)VehicleFromPos(v->tile, &rvf, EnumCheckRoadVehClose);
+		if (u == NULL) u = (Vehicle*)VehicleFromPos(GetOtherTunnelBridgeEnd(v->tile), &rvf, EnumCheckRoadVehClose);
 	} else {
 		u = (Vehicle*)VehicleFromPosXY(x, y, &rvf, EnumCheckRoadVehClose);
 	}
@@ -926,7 +928,7 @@
 			SetDParam(0, st->index);
 			flags = (v->owner == _local_player) ? NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_PLAYER, 0) : NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_OTHER, 0);
 			AddNewsItem(
-				v->u.road.roadtype == ROADTYPE_ROAD ? STR_902F_CITIZENS_CELEBRATE_FIRST : STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM,
+				v->u.road.roadtype == ROADTYPE_ROAD ? STR_902F_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM,
 				flags,
 				v->index,
 				0);
@@ -940,7 +942,7 @@
 			SetDParam(0, st->index);
 			flags = (v->owner == _local_player) ? NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_PLAYER, 0) : NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_OTHER, 0);
 			AddNewsItem(
-				v->u.road.roadtype == ROADTYPE_ROAD ? STR_9030_CITIZENS_CELEBRATE_FIRST : STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM,
+				v->u.road.roadtype == ROADTYPE_ROAD ? STR_9030_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM,
 				flags,
 				v->index,
 				0
@@ -964,7 +966,7 @@
 	if (spd != v->cur_speed) {
 		v->cur_speed = spd;
 		if (_patches.vehicle_speed) {
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 	}
 
@@ -1129,7 +1131,7 @@
 	return false;
 }
 
-static inline NPFFoundTargetData PerfNPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
+static inline NPFFoundTargetData PerfNPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
 {
 
 	void* perf = NpfBeginInterval();
@@ -1231,7 +1233,7 @@
 		trackdir = DiagdirToDiagTrackdir(enterdir);
 		//debug("Finding path. Enterdir: %d, Trackdir: %d", enterdir, trackdir);
 
-		ftd = PerfNPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE);
+		ftd = PerfNPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPES);
 		if (ftd.best_trackdir == INVALID_TRACKDIR) {
 			/* We are already at our target. Just do something
 			 * @todo: maybe display error?
@@ -1281,7 +1283,7 @@
 			if (best_track == INVALID_TRACKDIR) best_track = (Trackdir)i; // in case we don't find the path, just pick a track
 			frd.maxtracklen = (uint)-1;
 			frd.mindist = (uint)-1;
-			FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, v->u.road.compatible_roadtypes, _road_pf_directions[i], EnumRoadTrackFindDist, NULL, &frd);
+			FollowTrack(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, _road_pf_directions[i], EnumRoadTrackFindDist, NULL, &frd);
 
 			if (frd.mindist < best_dist || (frd.mindist == best_dist && frd.maxtracklen < best_maxlen)) {
 				best_dist = frd.mindist;
@@ -1313,7 +1315,7 @@
 		fstd.dest_coords = tile;
 		fstd.station_index = INVALID_STATION; // indicates that the destination is a tile, not a station
 
-		dist = NPFRouteToStationOrTile(v->tile, trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE).best_path_dist;
+		dist = NPFRouteToStationOrTile(v->tile, trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPES).best_path_dist;
 		/* change units from NPF_TILE_LENGTH to # of tiles */
 		if (dist != UINT_MAX)
 			dist = (dist + NPF_TILE_LENGTH - 1) / NPF_TILE_LENGTH;
@@ -1416,9 +1418,7 @@
 
 		if (diag_dir == INVALID_DIAGDIR) return INVALID_TRACKDIR;
 		dir = DiagdirToDiagTrackdir(diag_dir);
-	} else if (HasBit(prev_state, RVS_IN_DT_ROAD_STOP)) {
-		dir = (Trackdir)(prev_state & RVSB_ROAD_STOP_TRACKDIR_MASK);
-	} else if (prev_state < TRACKDIR_END) {
+	} else {
 		if (already_reversed && prev->tile != tile) {
 			/*
 			 * The vehicle has reversed, but did not go straight back.
@@ -1439,11 +1439,13 @@
 				{ TRACKDIR_UPPER_W, TRACKDIR_RIGHT_N, TRACKDIR_LEFT_N,  TRACKDIR_UPPER_E },
 				{ TRACKDIR_RIGHT_S, TRACKDIR_LOWER_W, TRACKDIR_LOWER_E, TRACKDIR_LEFT_S  }};
 			dir = reversed_turn_lookup[prev->tile < tile ? 0 : 1][ReverseDiagDir(entry_dir)];
-		} else {
+		} else if (HasBit(prev_state, RVS_IN_DT_ROAD_STOP)) {
+			dir = (Trackdir)(prev_state & RVSB_ROAD_STOP_TRACKDIR_MASK);
+		} else if (prev_state < TRACKDIR_END) {
 			dir = (Trackdir)prev_state;
+		} else {
+			return INVALID_TRACKDIR;
 		}
-	} else {
-		return INVALID_TRACKDIR;
 	}
 
 	/* Do some sanity checking. */
@@ -1513,13 +1515,15 @@
 		/* Vehicle is entering a depot or is on a bridge or in a tunnel */
 		GetNewVehiclePosResult gp = GetNewVehiclePos(v);
 
-		const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
-		if (u != NULL && u->First()->cur_speed < v->cur_speed) {
-			v->cur_speed = u->First()->cur_speed;
-			return false;
+		if (IsRoadVehFront(v)) {
+			const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
+			if (u != NULL) {
+				v->cur_speed = u->First()->cur_speed;
+				return false;
+			}
 		}
 
-		if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
+		if (IsTileType(gp.new_tile, MP_TUNNELBRIDGE) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
 			/* Vehicle has just entered a bridge or tunnel */
 			v->cur_image = v->GetImage(v->direction);
 			v->UpdateDeltaXY(v->direction);
@@ -1891,7 +1895,7 @@
 		}
 
 		StartRoadVehSound(v);
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 
 	/* Check tile position conditions - i.e. stop position in depot,
@@ -1982,13 +1986,13 @@
 		if (v->current_order.type == OT_GOTO_DEPOT) {
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return;
 	}
 
 	if (v->current_order.type == OT_GOTO_DEPOT &&
-			v->current_order.flags & OF_NON_STOP &&
+			v->current_order.flags & OFB_NON_STOP &&
 			!Chance16(1, 20)) {
 		return;
 	}
@@ -1997,39 +2001,39 @@
 	ClearSlot(v);
 
 	v->current_order.type = OT_GOTO_DEPOT;
-	v->current_order.flags = OF_NON_STOP;
+	v->current_order.flags = OFB_NON_STOP;
 	v->current_order.dest = depot->index;
 	v->dest_tile = depot->xy;
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 }
 
-void OnNewDay_RoadVeh(Vehicle *v)
+void RoadVehicle::OnNewDay()
 {
 	CommandCost cost(EXPENSES_ROADVEH_RUN);
 
-	if (!IsRoadVehFront(v)) return;
+	if (!IsRoadVehFront(this)) return;
 
-	if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
-	if (v->u.road.blocked_ctr == 0) CheckVehicleBreakdown(v);
+	if ((++this->day_counter & 7) == 0) DecreaseVehicleValue(this);
+	if (this->u.road.blocked_ctr == 0) CheckVehicleBreakdown(this);
 
-	AgeVehicle(v);
-	CheckIfRoadVehNeedsService(v);
+	AgeVehicle(this);
+	CheckIfRoadVehNeedsService(this);
 
-	CheckOrders(v);
+	CheckOrders(this);
 
 	/* Current slot has expired */
-	if (v->current_order.type == OT_GOTO_STATION && v->u.road.slot != NULL && v->u.road.slot_age-- == 0) {
+	if (this->current_order.type == OT_GOTO_STATION && this->u.road.slot != NULL && this->u.road.slot_age-- == 0) {
 		DEBUG(ms, 3, "Slot expired for vehicle %d (index %d) at stop 0x%X",
-			v->unitnumber, v->index, v->u.road.slot->xy);
-		ClearSlot(v);
+			this->unitnumber, this->index, this->u.road.slot->xy);
+		ClearSlot(this);
 	}
 
-	if (v->vehstatus & VS_STOPPED) return;
+	if (this->vehstatus & VS_STOPPED) return;
 
 	/* update destination */
-	if (v->current_order.type == OT_GOTO_STATION && v->u.road.slot == NULL && !(v->vehstatus & VS_CRASHED)) {
-		Station *st = GetStation(v->current_order.dest);
-		RoadStop *rs = st->GetPrimaryRoadStop(v);
+	if (this->current_order.type == OT_GOTO_STATION && this->u.road.slot == NULL && !(this->vehstatus & VS_CRASHED)) {
+		Station *st = GetStation(this->current_order.dest);
+		RoadStop *rs = st->GetPrimaryRoadStop(this);
 		RoadStop *best = NULL;
 
 		if (rs != NULL) {
@@ -2039,16 +2043,16 @@
 			 * 2) we're somewhere close to the station rectangle (to make sure we do assign
 			 *    slots even if the station and its road stops are incredibly spread out)
 			 */
-			if (DistanceManhattan(v->tile, rs->xy) < 16 || st->rect.PtInExtendedRect(TileX(v->tile), TileY(v->tile), 2)) {
+			if (DistanceManhattan(this->tile, rs->xy) < 16 || st->rect.PtInExtendedRect(TileX(this->tile), TileY(this->tile), 2)) {
 				uint dist, badness;
 				uint minbadness = UINT_MAX;
 
 				DEBUG(ms, 2, "Attempting to obtain a slot for vehicle %d (index %d) at station %d (0x%X)",
-					v->unitnumber, v->index, st->index, st->xy
+					this->unitnumber, this->index, st->index, st->xy
 				);
 				/* Now we find the nearest road stop that has a free slot */
-				for (; rs != NULL; rs = rs->GetNextRoadStop(v)) {
-					dist = RoadFindPathToStop(v, rs->xy);
+				for (; rs != NULL; rs = rs->GetNextRoadStop(this)) {
+					dist = RoadFindPathToStop(this, rs->xy);
 					if (dist == UINT_MAX) {
 						DEBUG(ms, 4, " stop 0x%X is unreachable, not treating further", rs->xy);
 						continue;
@@ -2069,29 +2073,29 @@
 					best->num_vehicles++;
 					DEBUG(ms, 3, "Assigned to stop 0x%X", best->xy);
 
-					v->u.road.slot = best;
-					v->dest_tile = best->xy;
-					v->u.road.slot_age = 14;
+					this->u.road.slot = best;
+					this->dest_tile = best->xy;
+					this->u.road.slot_age = 14;
 				} else {
 					DEBUG(ms, 3, "Could not find a suitable stop");
 				}
 			} else {
 				DEBUG(ms, 5, "Distance from station too far. Postponing slotting for vehicle %d (index %d) at station %d, (0x%X)",
-						v->unitnumber, v->index, st->index, st->xy);
+						this->unitnumber, this->index, st->index, st->xy);
 			}
 		} else {
 			DEBUG(ms, 4, "No road stop for vehicle %d (index %d) at station %d (0x%X)",
-					v->unitnumber, v->index, st->index, st->xy);
+					this->unitnumber, this->index, st->index, st->xy);
 		}
 	}
 
-	cost = CommandCost(EXPENSES_ROADVEH_RUN, RoadVehInfo(v->engine_type)->running_cost * _price.roadveh_running / 364);
+	cost = CommandCost(EXPENSES_ROADVEH_RUN, RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running / 364);
 
-	v->profit_this_year -= cost.GetCost() >> 8;
+	this->profit_this_year -= cost.GetCost() >> 8;
 
-	SubtractMoneyFromPlayerFract(v->owner, cost);
+	SubtractMoneyFromPlayerFract(this->owner, cost);
 
-	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindowClasses(WC_ROADVEH_LIST);
 }
 
--- a/src/roadveh_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/roadveh_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,8 +6,6 @@
 #include "openttd.h"
 #include "debug.h"
 #include "roadveh.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "viewport_func.h"
@@ -20,6 +18,8 @@
 #include "vehicle_func.h"
 #include "string_func.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
 
 void DrawRoadVehDetails(const Vehicle *v, int x, int y)
 {
--- a/src/saveload.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/saveload.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -19,11 +19,9 @@
 #include "station.h"
 #include "thread.h"
 #include "town.h"
-#include "player.h"
 #include "saveload.h"
 #include "network/network.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "window_func.h"
 #include "strings_func.h"
 #include "gfx_func.h"
@@ -34,7 +32,9 @@
 #include "autoreplace_base.h"
 #include <list>
 
-extern const uint16 SAVEGAME_VERSION = 83;
+#include "table/strings.h"
+
+extern const uint16 SAVEGAME_VERSION = 86;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
@@ -435,6 +435,7 @@
 	case SLE_VAR_U32: *(uint32*)ptr = val; break;
 	case SLE_VAR_I64: *(int64 *)ptr = val; break;
 	case SLE_VAR_U64: *(uint64*)ptr = val; break;
+	case SLE_VAR_NAME: *(char**)ptr = CopyFromOldName(val); break;
 	case SLE_VAR_NULL: break;
 	default: NOT_REACHED();
 	}
@@ -923,6 +924,9 @@
 {
 	ChunkSaveLoadProc *proc = ch->save_proc;
 
+	/* Don't save any chunk information if there is no save handler. */
+	if (proc == NULL) return;
+
 	SlWriteUint32(ch->id);
 	DEBUG(sl, 2, "Saving chunk %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id);
 
@@ -1655,9 +1659,7 @@
 			}
 		} else { /* LOAD game */
 			assert(mode == SL_LOAD);
-	#ifdef DEBUG_DUMP_COMMANDS
-			debug_dump_commands("ddc:load:%s\n", filename);
-	#endif /* DUMP_COMMANDS */
+			DebugDumpCommands("ddc:load:%s\n", filename);
 
 			if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE);
 
--- a/src/saveload.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/saveload.h	Sun Feb 03 20:17:54 2008 +0000
@@ -118,6 +118,7 @@
 	SLE_VAR_STRBQ = 11 << 4, ///< string enclosed in quotes (with pre-allocated buffer)
 	SLE_VAR_STR   = 12 << 4, ///< string pointer
 	SLE_VAR_STRQ  = 13 << 4, ///< string pointer enclosed in quotes
+	SLE_VAR_NAME  = 14 << 4, ///< old custom name to be converted to a char pointer
 	/* 2 more possible memory-primitives */
 
 	/* Shortcut values */
@@ -141,6 +142,7 @@
 	SLE_STRINGBQUOTE = SLE_FILE_STRING   | SLE_VAR_STRBQ,
 	SLE_STRING       = SLE_FILE_STRING   | SLE_VAR_STR,
 	SLE_STRINGQUOTE  = SLE_FILE_STRING   | SLE_VAR_STRQ,
+	SLE_NAME         = SLE_FILE_STRINGID | SLE_VAR_NAME,
 
 	/* Shortcut values */
 	SLE_UINT  = SLE_UINT32,
--- a/src/screenshot.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/screenshot.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -3,11 +3,10 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/strings.h"
 #include "fileio.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
-#include "player.h"
+#include "core/math_func.hpp"
 #include "screenshot.h"
 #include "variables.h"
 #include "blitter/factory.hpp"
@@ -18,6 +17,9 @@
 #include "core/endian_func.hpp"
 #include "map_func.h"
 #include "date_func.h"
+#include "player_func.h"
+
+#include "table/strings.h"
 
 char _screenshot_format_name[8];
 uint _num_screenshot_formats;
@@ -488,13 +490,29 @@
 	blitter->CopyImageToBuffer(src, buf, _screen.width, n, pitch);
 }
 
-/* generate a large piece of the world */
+/** generate a large piece of the world
+ * @param userdata Viewport area to draw
+ * @param buf Videobuffer with same bitdepth as current blitter
+ * @param y First line to render
+ * @param pitch Pitch of the videobuffer
+ * @param n Number of lines to render
+ */
 static void LargeWorldCallback(void *userdata, void *buf, uint y, uint pitch, uint n)
 {
 	ViewPort *vp = (ViewPort *)userdata;
 	DrawPixelInfo dpi, *old_dpi;
 	int wx, left;
 
+	/* We are no longer rendering to the screen */
+	DrawPixelInfo old_screen = _screen;
+	bool old_disable_anim = _screen_disable_anim;
+
+	_screen.dst_ptr = buf;
+	_screen.width = pitch;
+	_screen.height = n;
+	_screen.pitch = pitch;
+	_screen_disable_anim = true;
+
 	old_dpi = _cur_dpi;
 	_cur_dpi = &dpi;
 
@@ -506,6 +524,7 @@
 	dpi.left = 0;
 	dpi.top = y;
 
+	/* Render viewport in blocks of 1600 pixels width */
 	left = 0;
 	while (vp->width - left != 0) {
 		wx = min(vp->width - left, 1600);
@@ -520,6 +539,10 @@
 	}
 
 	_cur_dpi = old_dpi;
+
+	/* Switch back to rendering to the screen */
+	_screen = old_screen;
+	_screen_disable_anim = old_disable_anim;
 }
 
 static char *MakeScreenshotName(const char *ext)
--- a/src/settings.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/settings.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -25,6 +25,7 @@
 #include "screenshot.h"
 #include "variables.h"
 #include "network/network.h"
+#include "network/network_internal.h"
 #include "settings_internal.h"
 #include "command_func.h"
 #include "console.h"
@@ -42,12 +43,21 @@
 #include "vehicle_func.h"
 #include "sound_func.h"
 #include "core/alloc_func.hpp"
+#include "player_func.h"
 #ifdef WITH_FREETYPE
 #include "fontcache.h"
 #endif
 #include "spritecache.h"
 #include "transparency.h"
 #include "string_func.h"
+#include "gui.h"
+#include "town.h"
+#include "video/video_driver.hpp"
+#include "sound/sound_driver.hpp"
+#include "music/music_driver.hpp"
+#include "blitter/factory.hpp"
+
+#include "table/strings.h"
 
 GameOptions _opt;
 GameOptions _opt_newgame;
@@ -1084,11 +1094,7 @@
 #define CR SGF_CURRENCY
 #define NN SGF_NO_NETWORK
 
-#include "table/strings.h"
-
 /* Begin - Callback Functions for the various settings */
-#include "gui.h"
-#include "town.h"
 /* virtual PositionMainToolbar function, calls the right one.*/
 static int32 v_PositionMainToolbar(int32 p1)
 {
@@ -1300,6 +1306,7 @@
 	  SDTG_VAR("restart_game_year",    SLE_INT32, S,D0, _network_restart_game_year,    0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
 	  SDTG_VAR("min_players",          SLE_UINT8, S, 0, _network_min_players,               0, 0, 10,   0, STR_NULL, NULL),
 	SDTG_OMANY("server_lang",          SLE_UINT8, S, 0, _network_game_info.server_lang,     0, 28, "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN", STR_NULL, NULL),
+	 SDTG_BOOL("reload_cfg",                      S, 0, _network_reload_cfg,           false,              STR_NULL, NULL),
 	  SDTG_END()
 };
 #endif /* ENABLE_NETWORK */
@@ -1311,8 +1318,10 @@
 	 * same-sized members
 	 * XXX - To save file-space and since values are never bigger than about 10? only
 	 * save the first 16 bits in the savegame. Question is why the values are still int32
-	 * and why not byte for example? */
-	SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, SLE_UINT16, 0, 0, GameOptions, diff, 17, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 0, 3),
+	 * and why not byte for example?
+	 * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack
+	 * for savegames version 0 - though it is an array, it has to go through the byteswap process */
+	SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, SLE_FILE_I16 | SLE_VAR_U16, 0, 0, GameOptions, diff, 17, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 0, 3),
 	SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, SLE_UINT16, 0, 0, GameOptions, diff, 18, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 4, SL_MAX_VERSION),
 	    SDT_VAR(GameOptions, diff_level, SLE_UINT8, 0, 0, 0, 0,  3, 0, STR_NULL, NULL),
 	  SDT_OMANY(GameOptions, currency,  SLE_UINT8, N, 0, 0, CUSTOM_CURRENCY_ID, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SIT|SEK|YTL|SKK|BRR|custom", STR_NULL, NULL, NULL),
--- a/src/settings_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/settings_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "currency.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
@@ -26,10 +24,11 @@
 #include "core/alloc_func.hpp"
 #include "string_func.h"
 #include "gfx_func.h"
+#include "widgets/dropdown_type.h"
+#include "widgets/dropdown_func.h"
 
-static uint32 _difficulty_click_a;
-static uint32 _difficulty_click_b;
-static byte _difficulty_timeout;
+#include "table/sprites.h"
+#include "table/strings.h"
 
 static const StringID _units_dropdown[] = {
 	STR_UNITS_IMPERIAL,
@@ -69,35 +68,15 @@
 }
 
 int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1;
-static StringID *_town_names = NULL;
 static StringID *_grf_names = NULL;
 static int _nb_grf_names = 0;
 
-void SortTownGeneratorNames()
+void InitGRFTownGeneratorNames()
 {
-	int n = 0;
-
-	/* Get Newgrf generators' names */
 	free(_grf_names);
 	_grf_names = GetGRFTownNameList();
 	_nb_grf_names = 0;
 	for (StringID *s = _grf_names; *s != INVALID_STRING_ID; s++) _nb_grf_names++;
-
-	/* Prepare the list */
-	free(_town_names);
-	_town_names = MallocT<StringID>(_nb_orig_names + _nb_grf_names + 1);
-
-	/* Put the original strings */
-	for (int i = 0; i < _nb_orig_names; i++) _town_names[n++] = STR_TOWNNAME_ORIGINAL_ENGLISH + i;
-
-	/* Put the grf strings */
-	for (int i = 0; i < _nb_grf_names; i++) _town_names[n++] = _grf_names[i];
-
-	/* Put the terminator */
-	_town_names[n] = INVALID_STRING_ID;
-
-	/* Sort the strings */
-	qsort(&_town_names[0], _nb_orig_names + _nb_grf_names, sizeof(StringID), &StringIDSorter);
 }
 
 static inline StringID TownName(int town_name)
@@ -133,28 +112,63 @@
 
 
 enum GameOptionsWidgets {
-	GAMEOPT_CURRENCY_TXT    =  4,
-	GAMEOPT_CURRENCY_BTN,
-	GAMEOPT_DISTANCE_TXT    =  7,
-	GAMEOPT_DISTANCE_BTN,
-	GAMEOPT_ROADSIDE_TXT    = 10,
-	GAMEOPT_ROADSIDE_BTN,
-	GAMEOPT_TOWNNAME_TXT    = 13,
-	GAMEOPT_TOWNNAME_BTN,
-	GAMEOPT_AUTOSAVE_TXT    = 16,
-	GAMEOPT_AUTOSAVE_BTN,
-	GAMEOPT_VEHICLENAME_TXT = 19,
-	GAMEOPT_VEHICLENAME_BTN,
+	GAMEOPT_CURRENCY_BTN    =  4,
+	GAMEOPT_DISTANCE_BTN    =  6,
+	GAMEOPT_ROADSIDE_BTN    =  8,
+	GAMEOPT_TOWNNAME_BTN    = 10,
+	GAMEOPT_AUTOSAVE_BTN    = 12,
+	GAMEOPT_VEHICLENAME_BTN = 14,
 	GAMEOPT_VEHICLENAME_SAVE,
-	GAMEOPT_LANG_TXT        = 23,
-	GAMEOPT_LANG_BTN,
-	GAMEOPT_RESOLUTION_TXT  = 26,
-	GAMEOPT_RESOLUTION_BTN,
+	GAMEOPT_LANG_BTN        = 17,
+	GAMEOPT_RESOLUTION_BTN  = 19,
 	GAMEOPT_FULLSCREEN,
-	GAMEOPT_SCREENSHOT_TXT  = 30,
-	GAMEOPT_SCREENSHOT_BTN,
+	GAMEOPT_SCREENSHOT_BTN  = 22,
 };
 
+/**
+ * Update/redraw the townnames dropdown
+ * @param w   the window the dropdown belongs to
+ * @param sel the currently selected townname generator
+ */
+static void ShowTownnameDropdown(Window *w, int sel)
+{
+	typedef std::map<StringID, int, StringIDCompare> TownList;
+	TownList townnames;
+
+	/* Add and sort original townnames generators */
+	for (int i = 0; i < _nb_orig_names; i++) townnames[STR_TOWNNAME_ORIGINAL_ENGLISH + i] = i;
+
+	/* Add and sort newgrf townnames generators */
+	for (int i = 0; i < _nb_grf_names; i++) townnames[_grf_names[i]] = _nb_orig_names + i;
+
+	DropDownList *list = new DropDownList();
+	for (TownList::iterator it = townnames.begin(); it != townnames.end(); it++) {
+		list->push_back(new DropDownListStringItem((*it).first, (*it).second, !(_game_mode == GM_MENU || (*it).second == sel)));
+	}
+
+	ShowDropDownList(w, list, sel, GAMEOPT_TOWNNAME_BTN);
+}
+
+/**
+ * Update/redraw the languages dropdown
+ * @param w   the window the dropdown belongs to
+ */
+static void ShowLangDropdown(Window *w)
+{
+	typedef std::map<StringID, int, StringIDCompare> LangList;
+
+	/* Sort language names */
+	LangList langs;
+	for (int i = 0; i < _dynlang.num; i++) langs[SPECSTR_LANGUAGE_START + i] = i;
+
+	DropDownList *list = new DropDownList();
+	for (LangList::iterator it = langs.begin(); it != langs.end(); it++) {
+		list->push_back(new DropDownListStringItem((*it).first, (*it).second, false));
+	}
+
+	ShowDropDownList(w, list, _dynlang.curr, GAMEOPT_LANG_BTN);
+}
+
 static void ShowCustCurrency();
 
 static void GameOptionsWndProc(Window *w, WindowEvent *e)
@@ -164,8 +178,8 @@
 			int i;
 			StringID str = STR_02BE_DEFAULT;
 
-			w->SetWidgetDisabledState(21, !(_vehicle_design_names & 1));
-			if (!w->IsWidgetDisabled(21)) str = STR_02BF_CUSTOM;
+			w->SetWidgetDisabledState(GAMEOPT_VEHICLENAME_SAVE, !(_vehicle_design_names & 1));
+			if (!w->IsWidgetDisabled(GAMEOPT_VEHICLENAME_SAVE)) str = STR_02BF_CUSTOM;
 			SetDParam(0, str);
 			SetDParam(1, _currency_specs[_opt_ptr->currency].name);
 			SetDParam(2, STR_UNITS_IMPERIAL + _opt_ptr->units);
@@ -184,15 +198,15 @@
 
 		case WE_CLICK:
 			switch (e->we.click.widget) {
-				case GAMEOPT_CURRENCY_TXT: case GAMEOPT_CURRENCY_BTN: /* Setup currencies dropdown */
+				case GAMEOPT_CURRENCY_BTN: /* Setup currencies dropdown */
 					ShowDropDownMenu(w, BuildCurrencyDropdown(), _opt_ptr->currency, GAMEOPT_CURRENCY_BTN, _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(), 0);
 					break;
 
-				case GAMEOPT_DISTANCE_TXT: case GAMEOPT_DISTANCE_BTN: /* Setup distance unit dropdown */
+				case GAMEOPT_DISTANCE_BTN: /* Setup distance unit dropdown */
 					ShowDropDownMenu(w, _units_dropdown, _opt_ptr->units, GAMEOPT_DISTANCE_BTN, 0, 0);
 					break;
 
-				case GAMEOPT_ROADSIDE_TXT: case GAMEOPT_ROADSIDE_BTN: { /* Setup road-side dropdown */
+				case GAMEOPT_ROADSIDE_BTN: { /* Setup road-side dropdown */
 					int i = 0;
 
 					/* You can only change the drive side if you are in the menu or ingame with
@@ -203,33 +217,26 @@
 					ShowDropDownMenu(w, _driveside_dropdown, _opt_ptr->road_side, GAMEOPT_ROADSIDE_BTN, i, 0);
 				} break;
 
-				case GAMEOPT_TOWNNAME_TXT: case GAMEOPT_TOWNNAME_BTN: { /* Setup townname dropdown */
-					uint sel = 0;
-					for (uint i = 0; _town_names[i] != INVALID_STRING_ID; i++) {
-						if (_town_names[i] == TownName(_opt_ptr->town_name)) {
-							sel = i;
-							break;
-						}
-					}
-					ShowDropDownMenu(w, _town_names, sel, GAMEOPT_TOWNNAME_BTN, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << sel), 0);
-				} break;
+				case GAMEOPT_TOWNNAME_BTN: /* Setup townname dropdown */
+					ShowTownnameDropdown(w, _opt_ptr->town_name);
+					break;
 
-				case GAMEOPT_AUTOSAVE_TXT: case GAMEOPT_AUTOSAVE_BTN: /* Setup autosave dropdown */
+				case GAMEOPT_AUTOSAVE_BTN: /* Setup autosave dropdown */
 					ShowDropDownMenu(w, _autosave_dropdown, _opt_ptr->autosave, GAMEOPT_AUTOSAVE_BTN, 0, 0);
 					break;
 
-				case GAMEOPT_VEHICLENAME_TXT: case GAMEOPT_VEHICLENAME_BTN: /* Setup customized vehicle-names dropdown */
+				case GAMEOPT_VEHICLENAME_BTN: /* Setup customized vehicle-names dropdown */
 					ShowDropDownMenu(w, _designnames_dropdown, (_vehicle_design_names & 1) ? 1 : 0, GAMEOPT_VEHICLENAME_BTN, (_vehicle_design_names & 2) ? 0 : 2, 0);
 					break;
 
 				case GAMEOPT_VEHICLENAME_SAVE: /* Save customized vehicle-names to disk */
 					break;  // not implemented
 
-				case GAMEOPT_LANG_TXT: case GAMEOPT_LANG_BTN: /* Setup interface language dropdown */
-					ShowDropDownMenu(w, _dynlang.dropdown, _dynlang.curr, GAMEOPT_LANG_BTN, 0, 0);
+				case GAMEOPT_LANG_BTN: /* Setup interface language dropdown */
+					ShowLangDropdown(w);
 					break;
 
-				case GAMEOPT_RESOLUTION_TXT: case GAMEOPT_RESOLUTION_BTN: /* Setup resolution dropdown */
+				case GAMEOPT_RESOLUTION_BTN: /* Setup resolution dropdown */
 					ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_RESOLUTION_START, _num_resolutions), GetCurRes(), GAMEOPT_RESOLUTION_BTN, 0, 0);
 					break;
 
@@ -242,7 +249,7 @@
 					SetWindowDirty(w);
 					break;
 
-				case GAMEOPT_SCREENSHOT_TXT: case GAMEOPT_SCREENSHOT_BTN: /* Setup screenshot format dropdown */
+				case GAMEOPT_SCREENSHOT_BTN: /* Setup screenshot format dropdown */
 					ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_SCREENSHOT_START, _num_screenshot_formats), _cur_screenshot_format, GAMEOPT_SCREENSHOT_BTN, 0, 0);
 					break;
 			}
@@ -280,12 +287,7 @@
 
 				case GAMEOPT_TOWNNAME_BTN: /* Town names */
 					if (_game_mode == GM_MENU) {
-						for (uint i = 0; _town_names[i] != INVALID_STRING_ID; i++) {
-							if (_town_names[e->we.dropdown.index] == TownName(i)) {
-								_opt_ptr->town_name = i;
-								break;
-							}
-						}
+						_opt_ptr->town_name = e->we.dropdown.index;
 						InvalidateWindow(WC_GAME_OPTIONS, 0);
 					}
 					break;
@@ -345,38 +347,29 @@
 {    WWT_CAPTION,   RESIZE_NONE,    14,    11,   369,     0,    13, STR_00B1_GAME_OPTIONS,             STR_018C_WINDOW_TITLE_DRAG_THIS},
 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   369,    14,   238, 0x0,                               STR_NULL},
 {      WWT_FRAME,   RESIZE_NONE,    14,    10,   179,    20,    55, STR_02E0_CURRENCY_UNITS,           STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,    20,   169,    34,    45, STR_02E1,                          STR_02E2_CURRENCY_UNITS_SELECTION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   158,   168,    35,    44, STR_0225,                          STR_02E2_CURRENCY_UNITS_SELECTION},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,    20,   169,    34,    45, STR_02E1,                          STR_02E2_CURRENCY_UNITS_SELECTION},
 {      WWT_FRAME,   RESIZE_NONE,    14,   190,   359,    20,    55, STR_MEASURING_UNITS,               STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,   200,   349,    34,    45, STR_02E4,                          STR_MEASURING_UNITS_SELECTION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   338,   348,    35,    44, STR_0225,                          STR_MEASURING_UNITS_SELECTION},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,   200,   349,    34,    45, STR_02E4,                          STR_MEASURING_UNITS_SELECTION},
 {      WWT_FRAME,   RESIZE_NONE,    14,    10,   179,    62,    97, STR_02E6_ROAD_VEHICLES,            STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,    20,   169,    76,    87, STR_02E7,                          STR_02E8_SELECT_SIDE_OF_ROAD_FOR},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   158,   168,    77,    86, STR_0225,                          STR_02E8_SELECT_SIDE_OF_ROAD_FOR},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,    20,   169,    76,    87, STR_02E7,                          STR_02E8_SELECT_SIDE_OF_ROAD_FOR},
 {      WWT_FRAME,   RESIZE_NONE,    14,   190,   359,    62,    97, STR_02EB_TOWN_NAMES,               STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,   200,   349,    76,    87, STR_02EC,                          STR_02ED_SELECT_STYLE_OF_TOWN_NAMES},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   338,   348,    77,    86, STR_0225,                          STR_02ED_SELECT_STYLE_OF_TOWN_NAMES},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,   200,   349,    76,    87, STR_02EC,                          STR_02ED_SELECT_STYLE_OF_TOWN_NAMES},
 {      WWT_FRAME,   RESIZE_NONE,    14,    10,   179,   104,   139, STR_02F4_AUTOSAVE,                 STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,    20,   169,   118,   129, STR_02F5,                          STR_02F6_SELECT_INTERVAL_BETWEEN},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   158,   168,   119,   128, STR_0225,                          STR_02F6_SELECT_INTERVAL_BETWEEN},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,    20,   169,   118,   129, STR_02F5,                          STR_02F6_SELECT_INTERVAL_BETWEEN},
 
 {      WWT_FRAME,   RESIZE_NONE,    14,    10,   359,   194,   228, STR_02BC_VEHICLE_DESIGN_NAMES,     STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,    20,   119,   207,   218, STR_02BD,                          STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   108,   118,   208,   217, STR_0225,                          STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,    20,   119,   207,   218, STR_02BD,                          STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION},
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   130,   349,   207,   218, STR_02C0_SAVE_CUSTOM_NAMES,        STR_02C2_SAVE_CUSTOMIZED_VEHICLE},
 
 {      WWT_FRAME,   RESIZE_NONE,    14,   190,   359,   104,   139, STR_OPTIONS_LANG,                  STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,   200,   349,   118,   129, STR_OPTIONS_LANG_CBO,              STR_OPTIONS_LANG_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   338,   348,   119,   128, STR_0225,                          STR_OPTIONS_LANG_TIP},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,   200,   349,   118,   129, STR_OPTIONS_LANG_CBO,              STR_OPTIONS_LANG_TIP},
 
 {      WWT_FRAME,   RESIZE_NONE,    14,    10,   179,   146,   190, STR_OPTIONS_RES,                   STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,    20,   169,   160,   171, STR_OPTIONS_RES_CBO,               STR_OPTIONS_RES_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   158,   168,   161,   170, STR_0225,                          STR_OPTIONS_RES_TIP},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,    20,   169,   160,   171, STR_OPTIONS_RES_CBO,               STR_OPTIONS_RES_TIP},
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   149,   169,   176,   184, STR_EMPTY,                         STR_OPTIONS_FULLSCREEN_TIP},
 
 {      WWT_FRAME,   RESIZE_NONE,    14,   190,   359,   146,   190, STR_OPTIONS_SCREENSHOT_FORMAT,     STR_NULL},
-{      WWT_INSET,   RESIZE_NONE,    14,   200,   349,   160,   171, STR_OPTIONS_SCREENSHOT_FORMAT_CBO, STR_OPTIONS_SCREENSHOT_FORMAT_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   338,   348,   161,   170, STR_0225,                          STR_OPTIONS_SCREENSHOT_FORMAT_TIP},
+{ WWT_DROPDOWNIN,   RESIZE_NONE,    14,   200,   349,   160,   171, STR_OPTIONS_SCREENSHOT_FORMAT_CBO, STR_OPTIONS_SCREENSHOT_FORMAT_TIP},
 
 {   WIDGETS_END},
 };
@@ -407,7 +400,7 @@
 	{  0,   7,  1, STR_NULL},
 	{  0,   3,  1, STR_6830_IMMEDIATE},
 	{  0,   3,  1, STR_NUM_VERY_LOW},
-	{  0,   4,  1, STR_26816_NONE},
+	{  0,   4,  1, STR_NONE},
 	{100, 500, 50, STR_NULL},
 	{  2,   4,  1, STR_NULL},
 	{  0,   2,  1, STR_6820_LOW},
@@ -421,7 +414,7 @@
 	{  0,   1,  1, STR_682E_STEADY},
 	{  0,   1,  1, STR_6834_AT_END_OF_LINE_AND_AT_STATIONS},
 	{  0,   1,  1, STR_6836_OFF},
-	{  0,   2,  1, STR_6839_PERMISSIVE},
+	{  0,   2,  1, STR_PERMISSIVE},
 };
 
 /*
@@ -492,6 +485,16 @@
 // 0x383E = (1 << 13) | (1 << 12) | (1 << 11) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1)
 #define DIFF_INGAME_DISABLED_BUTTONS 0x383E
 
+#define NO_SETTINGS_BUTTON 0xFF
+
+/** Carriage for the game settings window data */
+struct difficulty_d {
+	bool clicked_increase;
+	uint8 clicked_button;
+	uint8 timeout;
+};
+assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(difficulty_d));
+
 /* Names of the game difficulty settings window */
 enum GameDifficultyWidgets {
 	GDW_CLOSEBOX = 0,
@@ -510,8 +513,12 @@
 
 static void GameDifficultyWndProc(Window *w, WindowEvent *e)
 {
+	difficulty_d *diffic_d = &WP(w, difficulty_d);
 	switch (e->event) {
 		case WE_CREATE:
+			diffic_d->clicked_increase = false;
+			diffic_d->clicked_button = NO_SETTINGS_BUTTON;
+			diffic_d->timeout = 0;
 			/* Hide the closebox to make sure that the user aborts or confirms his changes */
 			w->HideWidget(GDW_CLOSEBOX);
 			w->widget[GDW_CAPTION].left = 0;
@@ -548,7 +555,7 @@
 				value = ((GDType*)&_opt_mod_temp.diff)[i];
 
 				DrawArrowButtons(5, y, 3,
-						!!HasBit(_difficulty_click_a, i) | !!HasBit(_difficulty_click_b, i) << 1,
+						(diffic_d->clicked_button == i) ? 1 << diffic_d->clicked_increase : 0,
 						!(HasBit(disabled, i) || gsd->min == value),
 						!(HasBit(disabled, i) || gsd->max == value));
 
@@ -575,7 +582,7 @@
 					if (y < 0) return;
 
 					/* Get button from Y coord. */
-					const uint btn = y / (GAMEDIFF_WND_ROWSIZE + 2);
+					const uint8 btn = y / (GAMEDIFF_WND_ROWSIZE + 2);
 					if (btn >= GAME_DIFFICULTY_NUM || y % (GAMEDIFF_WND_ROWSIZE + 2) >= 9)
 						return;
 
@@ -583,7 +590,7 @@
 					if (_game_mode == GM_NORMAL && HasBit(DIFF_INGAME_DISABLED_BUTTONS, btn))
 						return;
 
-					_difficulty_timeout = 5;
+					diffic_d->timeout = 5;
 
 					int16 val = ((GDType*)&_opt_mod_temp.diff)[btn];
 
@@ -591,13 +598,14 @@
 					if (x >= 10) {
 						/* Increase button clicked */
 						val = min(val + info->step, info->max);
-						SetBit(_difficulty_click_b, btn);
+						diffic_d->clicked_increase = true;
 					} else {
 						/* Decrease button clicked */
 						val -= info->step;
 						val = max(val,  info->min);
-						SetBit(_difficulty_click_a, btn);
+						diffic_d->clicked_increase = false;
 					}
+					diffic_d->clicked_button = btn;
 
 					/* save value in temporary variable */
 					((GDType*)&_opt_mod_temp.diff)[btn] = val;
@@ -645,9 +653,9 @@
 			} break;
 
 		case WE_MOUSELOOP: /* Handle the visual 'clicking' of the buttons */
-			if (_difficulty_timeout != 0 && !--_difficulty_timeout) {
-				_difficulty_click_a = 0;
-				_difficulty_click_b = 0;
+			if (diffic_d->timeout != 0) {
+				diffic_d->timeout--;
+				if (diffic_d->timeout == 0) diffic_d->clicked_button = NO_SETTINGS_BUTTON;
 				SetWindowDirty(w);
 			}
 			break;
--- a/src/settings_internal.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/settings_internal.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,7 @@
 #define SETTINGS_INTERNAL_H
 
 #include "saveload.h"
+#include "settings_type.h"
 
 /** Convention/Type of settings. This is then further specified if necessary
  * with the SLE_ (SLE_VAR/SLE_FILE) enums in saveload.h
--- a/src/settings_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/settings_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -9,6 +9,31 @@
 #include "date_type.h"
 #include "town_type.h"
 
+#define GAME_DIFFICULTY_NUM 18
+
+/** Specific type for Game Difficulty to ease changing the type */
+typedef uint16 GDType;
+struct GameDifficulty {
+	GDType max_no_competitors;
+	GDType competitor_start_time;
+	GDType number_towns;
+	GDType number_industries;
+	GDType max_loan;
+	GDType initial_interest;
+	GDType vehicle_costs;
+	GDType competitor_speed;
+	GDType competitor_intelligence; ///< no longer in use
+	GDType vehicle_breakdowns;
+	GDType subsidy_multiplier;
+	GDType construction_cost;
+	GDType terrain_type;
+	GDType quantity_sea_lakes;
+	GDType economy;
+	GDType line_reverse_mode;
+	GDType disasters;
+	GDType town_council_tolerance; ///< minimum required town ratings to be allowed to demolish stuff
+};
+
 struct GameOptions {
 	GameDifficulty diff;
 	byte diff_level;
@@ -32,121 +57,121 @@
 extern GameOptions *_opt_ptr;
 
 struct Patches {
-	bool modified_catchment;            // different-size catchment areas
-	bool vehicle_speed;                 // show vehicle speed
-	bool build_on_slopes;               // allow building on slopes
-	bool mammoth_trains;                // allow very long trains
-	bool join_stations;                 // allow joining of train stations
-	bool full_load_any;                 // new full load calculation, any cargo must be full
-	bool improved_load;                 // improved loading algorithm
-	bool gradual_loading;               // load vehicles gradually
-	byte station_spread;                // amount a station may spread
-	bool inflation;                     // disable inflation
-	bool selectgoods;                   // only send the goods to station if a train has been there
-	bool longbridges;                   // allow 100 tile long bridges
-	bool gotodepot;                     // allow goto depot in orders
+	bool modified_catchment;            ///< different-size catchment areas
+	bool vehicle_speed;                 ///< show vehicle speed
+	bool build_on_slopes;               ///< allow building on slopes
+	bool mammoth_trains;                ///< allow very long trains
+	bool join_stations;                 ///< allow joining of train stations
+	bool full_load_any;                 ///< new full load calculation, any cargo must be full
+	bool improved_load;                 ///< improved loading algorithm
+	bool gradual_loading;               ///< load vehicles gradually
+	byte station_spread;                ///< amount a station may spread
+	bool inflation;                     ///< disable inflation
+	bool selectgoods;                   ///< only send the goods to station if a train has been there
+	bool longbridges;                   ///< allow 100 tile long bridges
+	bool gotodepot;                     ///< allow goto depot in orders
 	uint8 raw_industry_construction;    ///< Type of (raw) industry construction (none, "normal", prospecting)
-	bool multiple_industry_per_town;    // allow many industries of the same type per town
-	bool same_industry_close;           // allow same type industries to be built close to each other
-	bool lost_train_warn;               // if a train can't find its destination, show a warning
+	bool multiple_industry_per_town;    ///< allow many industries of the same type per town
+	bool same_industry_close;           ///< allow same type industries to be built close to each other
+	bool lost_train_warn;               ///< if a train can't find its destination, show a warning
 	uint8 order_review_system;
-	bool train_income_warn;             // if train is generating little income, show a warning
-	bool status_long_date;              // always show long date in status bar
-	bool signal_side;                   // show signals on right side
-	bool show_finances;                 // show finances at end of year
-	bool new_nonstop;                   // ttdpatch compatible nonstop handling
-	bool roadveh_queue;                 // buggy road vehicle queueing
-	bool autoscroll;                    // scroll when moving mouse to the edge.
-	byte errmsg_duration;               // duration of error message
-	byte land_generator;                // the landscape generator
-	byte oil_refinery_limit;            // distance oil refineries allowed from map edge
-	byte snow_line_height;              // a number 0-15 that configured snow line height
-	byte tgen_smoothness;               // how rough is the terrain from 0-3
-	uint32 generation_seed;             // noise seed for world generation
-	byte tree_placer;                   // the tree placer algorithm
-	byte heightmap_rotation;            // rotation director for the heightmap
-	byte se_flat_world_height;          // land height a flat world gets in SE
-	bool bribe;                         // enable bribing the local authority
-	bool nonuniform_stations;           // allow nonuniform train stations
-	bool adjacent_stations;             // allow stations to be built directly adjacent to other stations
-	bool always_small_airport;          // always allow small airports
-	bool realistic_acceleration;        // realistic acceleration for trains
-	bool wagon_speed_limits;            // enable wagon speed limits
-	bool forbid_90_deg;                 // forbid trains to make 90 deg turns
-	bool invisible_trees;               // don't show trees when buildings are transparent
-	bool no_servicing_if_no_breakdowns; // dont send vehicles to depot when breakdowns are disabled
-	bool link_terraform_toolbar;        // display terraform toolbar when displaying rail, road, water and airport toolbars
-	bool reverse_scroll;                // Right-Click-Scrolling scrolls in the opposite direction
+	bool train_income_warn;             ///< if train is generating little income, show a warning
+	bool status_long_date;              ///< always show long date in status bar
+	bool signal_side;                   ///< show signals on right side
+	bool show_finances;                 ///< show finances at end of year
+	bool new_nonstop;                   ///< ttdpatch compatible nonstop handling
+	bool roadveh_queue;                 ///< buggy road vehicle queueing
+	bool autoscroll;                    ///< scroll when moving mouse to the edge.
+	byte errmsg_duration;               ///< duration of error message
+	byte land_generator;                ///< the landscape generator
+	byte oil_refinery_limit;            ///< distance oil refineries allowed from map edge
+	byte snow_line_height;              ///< a number 0-15 that configured snow line height
+	byte tgen_smoothness;               ///< how rough is the terrain from 0-3
+	uint32 generation_seed;             ///< noise seed for world generation
+	byte tree_placer;                   ///< the tree placer algorithm
+	byte heightmap_rotation;            ///< rotation director for the heightmap
+	byte se_flat_world_height;          ///< land height a flat world gets in SE
+	bool bribe;                         ///< enable bribing the local authority
+	bool nonuniform_stations;           ///< allow nonuniform train stations
+	bool adjacent_stations;             ///< allow stations to be built directly adjacent to other stations
+	bool always_small_airport;          ///< always allow small airports
+	bool realistic_acceleration;        ///< realistic acceleration for trains
+	bool wagon_speed_limits;            ///< enable wagon speed limits
+	bool forbid_90_deg;                 ///< forbid trains to make 90 deg turns
+	bool invisible_trees;               ///< don't show trees when buildings are transparent
+	bool no_servicing_if_no_breakdowns; ///< dont send vehicles to depot when breakdowns are disabled
+	bool link_terraform_toolbar;        ///< display terraform toolbar when displaying rail, road, water and airport toolbars
+	bool reverse_scroll;                ///< Right-Click-Scrolling scrolls in the opposite direction
 	bool smooth_scroll;                 ///< Smooth scroll viewports
-	bool disable_elrails;               // when true, the elrails are disabled
-	bool measure_tooltip;               // Show a permanent tooltip when dragging tools
-	byte liveries;                      // Options for displaying company liveries, 0=none, 1=self, 2=all
-	bool prefer_teamchat;               // Choose the chat message target with <ENTER>, true=all players, false=your team
-	uint8 advanced_vehicle_list;        // Use the "advanced" vehicle list
-	uint8 loading_indicators;           // Show loading indicators
+	bool disable_elrails;               ///< when true, the elrails are disabled
+	bool measure_tooltip;               ///< Show a permanent tooltip when dragging tools
+	byte liveries;                      ///< Options for displaying company liveries, 0=none, 1=self, 2=all
+	bool prefer_teamchat;               ///< Choose the chat message target with <ENTER>, true=all players, false=your team
+	uint8 advanced_vehicle_list;        ///< Use the "advanced" vehicle list
+	uint8 loading_indicators;           ///< Show loading indicators
 	uint8 default_rail_type;            ///< The default rail type for the rail GUI
 
-	uint8 toolbar_pos;                  // position of toolbars, 0=left, 1=center, 2=right
-	uint8 window_snap_radius;           // Windows snap at each other if closer than this
+	uint8 toolbar_pos;                  ///< position of toolbars, 0=left, 1=center, 2=right
+	uint8 window_snap_radius;           ///< Windows snap at each other if closer than this
 
 	bool always_build_infrastructure;   ///< Always allow building of infrastructure, even when you do not have the vehicles for it
-	UnitID max_trains;                  // max trains in game per player (these are 16bit because the unitnumber field can't hold more)
-	UnitID max_roadveh;                 // max trucks in game per player
-	UnitID max_aircraft;                // max planes in game per player
-	UnitID max_ships;                   // max ships in game per player
+	UnitID max_trains;                  ///< max trains in game per player (these are 16bit because the unitnumber field can't hold more)
+	UnitID max_roadveh;                 ///< max trucks in game per player
+	UnitID max_aircraft;                ///< max planes in game per player
+	UnitID max_ships;                   ///< max ships in game per player
 
-	bool servint_ispercent;             // service intervals are in percents
-	uint16 servint_trains;              // service interval for trains
-	uint16 servint_roadveh;             // service interval for road vehicles
-	uint16 servint_aircraft;            // service interval for aircraft
-	uint16 servint_ships;               // service interval for ships
+	bool servint_ispercent;             ///< service intervals are in percents
+	uint16 servint_trains;              ///< service interval for trains
+	uint16 servint_roadveh;             ///< service interval for road vehicles
+	uint16 servint_aircraft;            ///< service interval for aircraft
+	uint16 servint_ships;               ///< service interval for ships
 
 	bool autorenew;
 	int16 autorenew_months;
 	int32 autorenew_money;
 
-	byte pf_maxdepth;                   // maximum recursion depth when searching for a train route for new pathfinder
-	uint16 pf_maxlength;                // maximum length when searching for a train route for new pathfinder
-
-	bool bridge_pillars;                // show bridge pillars for high bridges
-
-	bool ai_disable_veh_train;          // disable types for AI
-	bool ai_disable_veh_roadveh;        // disable types for AI
-	bool ai_disable_veh_aircraft;       // disable types for AI
-	bool ai_disable_veh_ship;           // disable types for AI
-	Year starting_year;                 // starting date
-	Year ending_year;                   // end of the game (just show highscore)
-	Year colored_news_year;             // when does newspaper become colored?
+	byte pf_maxdepth;                      ///< maximum recursion depth when searching for a train route for new pathfinder
+	uint16 pf_maxlength;                   ///< maximum length when searching for a train route for new pathfinder
 
-	bool keep_all_autosave;             // name the autosave in a different way.
-	bool autosave_on_exit;              // save an autosave when you quit the game, but do not ask "Do you really want to quit?"
-	byte max_num_autosaves;             // controls how many autosavegames are made before the game starts to overwrite (names them 0 to max_num_autosaves - 1)
-	bool extra_dynamite;                // extra dynamite
-	bool road_stop_on_town_road;        // allow building of drive-through road stops on town owned roads
-
-	bool never_expire_vehicles;         // never expire vehicles
-	byte extend_vehicle_life;           // extend vehicle life by this many years
+	bool bridge_pillars;                   ///< show bridge pillars for high bridges
 
-	bool auto_euro;                     // automatically switch to euro in 2002
-	bool serviceathelipad;              // service helicopters at helipads automatically (no need to send to depot)
-	bool smooth_economy;                // smooth economy
-	bool allow_shares;                  // allow the buying/selling of shares
-	byte dist_local_authority;          // distance for town local authority, default 20
+	bool ai_disable_veh_train;             ///< disable types for AI
+	bool ai_disable_veh_roadveh;           ///< disable types for AI
+	bool ai_disable_veh_aircraft;          ///< disable types for AI
+	bool ai_disable_veh_ship;              ///< disable types for AI
+	Year starting_year;                    ///< starting date
+	Year ending_year;                      ///< end of the game (just show highscore)
+	Year colored_news_year;                ///< when does newspaper become colored?
 
-	byte wait_oneway_signal;            // waitingtime in days before a oneway signal
-	byte wait_twoway_signal;            // waitingtime in days before a twoway signal
+	bool keep_all_autosave;                ///< name the autosave in a different way.
+	bool autosave_on_exit;                 ///< save an autosave when you quit the game, but do not ask "Do you really want to quit?"
+	byte max_num_autosaves;                ///< controls how many autosavegames are made before the game starts to overwrite (names them 0 to max_num_autosaves - 1)
+	bool extra_dynamite;                   ///< extra dynamite
+	bool road_stop_on_town_road;           ///< allow building of drive-through road stops on town owned roads
 
-	uint8 map_x;                        // Size of map
+	bool never_expire_vehicles;            ///< never expire vehicles
+	byte extend_vehicle_life;              ///< extend vehicle life by this many years
+
+	bool auto_euro;                        ///< automatically switch to euro in 2002
+	bool serviceathelipad;                 ///< service helicopters at helipads automatically (no need to send to depot)
+	bool smooth_economy;                   ///< smooth economy
+	bool allow_shares;                     ///< allow the buying/selling of shares
+	byte dist_local_authority;             ///< distance for town local authority, default 20
+
+	byte wait_oneway_signal;               ///< waitingtime in days before a oneway signal
+	byte wait_twoway_signal;               ///< waitingtime in days before a twoway signal
+
+	uint8 map_x;                           ///< Size of map
 	uint8 map_y;
 
-	byte drag_signals_density;          // many signals density
-	Year semaphore_build_before;        // Build semaphore signals automatically before this year
-	bool ai_in_multiplayer;             // Do we allow AIs in multiplayer
+	byte drag_signals_density;             ///< many signals density
+	Year semaphore_build_before;           ///< Build semaphore signals automatically before this year
+	bool ai_in_multiplayer;                ///< Do we allow AIs in multiplayer
 
 	/*
 	 * New Path Finding
 	 */
-	bool new_pathfinding_all; /* Use the newest pathfinding algorithm for all */
+	bool new_pathfinding_all;              ///< Use the newest pathfinding algorithm for all
 
 	/**
 	 * The maximum amount of search nodes a single NPF run should take. This
@@ -156,22 +181,22 @@
 	 */
 	uint32 npf_max_search_nodes;
 
-	uint32 npf_rail_firstred_penalty;      // The penalty for when the first signal is red (and it is not an exit or combo signal)
-	uint32 npf_rail_firstred_exit_penalty; // The penalty for when the first signal is red (and it is an exit or combo signal)
-	uint32 npf_rail_lastred_penalty;       // The penalty for when the last signal is red
-	uint32 npf_rail_station_penalty;       // The penalty for station tiles
-	uint32 npf_rail_slope_penalty;         // The penalty for sloping upwards
-	uint32 npf_rail_curve_penalty;         // The penalty for curves
-	uint32 npf_rail_depot_reverse_penalty; // The penalty for reversing in depots
-	uint32 npf_buoy_penalty;               // The penalty for going over (through) a buoy
-	uint32 npf_water_curve_penalty;        // The penalty for curves
-	uint32 npf_road_curve_penalty;         // The penalty for curves
-	uint32 npf_crossing_penalty;           // The penalty for level crossings
-	uint32 npf_road_drive_through_penalty; // The penalty for going through a drive-through road stop
+	uint32 npf_rail_firstred_penalty;      ///< The penalty for when the first signal is red (and it is not an exit or combo signal)
+	uint32 npf_rail_firstred_exit_penalty; ///< The penalty for when the first signal is red (and it is an exit or combo signal)
+	uint32 npf_rail_lastred_penalty;       ///< The penalty for when the last signal is red
+	uint32 npf_rail_station_penalty;       ///< The penalty for station tiles
+	uint32 npf_rail_slope_penalty;         ///< The penalty for sloping upwards
+	uint32 npf_rail_curve_penalty;         ///< The penalty for curves
+	uint32 npf_rail_depot_reverse_penalty; ///< The penalty for reversing in depots
+	uint32 npf_buoy_penalty;               ///< The penalty for going over (through) a buoy
+	uint32 npf_water_curve_penalty;        ///< The penalty for curves
+	uint32 npf_road_curve_penalty;         ///< The penalty for curves
+	uint32 npf_crossing_penalty;           ///< The penalty for level crossings
+	uint32 npf_road_drive_through_penalty; ///< The penalty for going through a drive-through road stop
 
-	bool population_in_label; // Show the population of a town in his label?
+	bool population_in_label;              ///< Show the population of a town in his label?
 
-	uint8 freight_trains; // Value to multiply the weight of cargo by
+	uint8 freight_trains;                  ///< Value to multiply the weight of cargo by
 
 	/** YAPF settings */
 	YapfSettings  yapf;
@@ -181,25 +206,25 @@
 	uint8 scrollwheel_scrolling;
 	uint8 scrollwheel_multiplier;
 
-	uint8 town_growth_rate;  ///< Town growth rate
-	uint8 larger_towns;      ///< The number of cities to build. These start off larger and grow twice as fast
-	uint8 initial_city_size; ///< Multiplier for the initial size of the cities compared to towns
+	uint8 town_growth_rate;      ///< Town growth rate
+	uint8 larger_towns;          ///< The number of cities to build. These start off larger and grow twice as fast
+	uint8 initial_city_size;     ///< Multiplier for the initial size of the cities compared to towns
 
-	bool pause_on_newgame;   ///< Whether to start new games paused or not.
+	bool pause_on_newgame;       ///< Whether to start new games paused or not.
 
 	TownLayoutByte town_layout;  ///< Select town layout
 
-	bool timetabling;        ///< Whether to allow timetabling.
-	bool timetable_in_ticks; ///< Whether to show the timetable in ticks rather than days.
-
-	bool autoslope;          ///< Allow terraforming under things.
+	bool timetabling;            ///< Whether to allow timetabling.
+	bool timetable_in_ticks;     ///< Whether to show the timetable in ticks rather than days.
 
-	bool mod_road_rebuild;   ///< Roadworks remove unneccesary RoadBits
+	bool autoslope;              ///< Allow terraforming under things.
 
-	bool exclusive_rights;   ///< allow buying exclusive rights
-	bool give_money;         ///< allow giving other players money
+	bool mod_road_rebuild;       ///< Roadworks remove unneccesary RoadBits
 
-	bool enable_signal_gui;  ///< Show the signal GUI when the signal button is pressed
+	bool exclusive_rights;       ///< allow buying exclusive rights
+	bool give_money;             ///< allow giving other players money
+
+	bool enable_signal_gui;      ///< Show the signal GUI when the signal button is pressed
 };
 
 extern Patches _patches;
--- a/src/ship.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ship.h	Sun Feb 03 20:17:54 2008 +0000
@@ -41,6 +41,7 @@
 	Money GetRunningCost() const { return ShipVehInfo(this->engine_type)->running_cost * _price.ship_running; }
 	bool IsInDepot() const { return this->u.ship.state == 0x80; }
 	void Tick();
+	void OnNewDay();
 };
 
 #endif /* SHIP_H */
--- a/src/ship_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ship_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "ship.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "timetable.h"
@@ -15,7 +14,8 @@
 #include "station.h"
 #include "news.h"
 #include "engine.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "npf.h"
 #include "depot.h"
 #include "vehicle_gui.h"
@@ -37,7 +37,9 @@
 #include "variables.h"
 #include "autoreplace_gui.h"
 #include "gfx_func.h"
+#include "settings_type.h"
 
+#include "table/strings.h"
 
 static const uint16 _ship_sprites[] = {0x0E5D, 0x0E55, 0x0E65, 0x0E6D};
 
@@ -121,7 +123,7 @@
 	if (_patches.new_pathfinding_all) {
 		NPFFoundTargetData ftd;
 		Trackdir trackdir = GetVehicleTrackdir(v);
-		ftd = NPFRouteToDepotTrialError(v->tile, trackdir, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPE);
+		ftd = NPFRouteToDepotTrialError(v->tile, trackdir, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPES);
 		if (ftd.best_bird_dist == 0) {
 			best_depot = GetDepotByTile(ftd.node.tile); /* Found target */
 		} else {
@@ -156,39 +158,39 @@
 		if (v->current_order.type == OT_GOTO_DEPOT) {
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return;
 	}
 
 	v->current_order.type = OT_GOTO_DEPOT;
-	v->current_order.flags = OF_NON_STOP;
+	v->current_order.flags = OFB_NON_STOP;
 	v->current_order.dest = depot->index;
 	v->dest_tile = depot->xy;
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 }
 
-void OnNewDay_Ship(Vehicle *v)
+void Ship::OnNewDay()
 {
 	CommandCost cost(EXPENSES_SHIP_RUN);
 
-	if ((++v->day_counter & 7) == 0)
-		DecreaseVehicleValue(v);
-
-	CheckVehicleBreakdown(v);
-	AgeVehicle(v);
-	CheckIfShipNeedsService(v);
+	if ((++this->day_counter & 7) == 0)
+		DecreaseVehicleValue(this);
 
-	CheckOrders(v);
-
-	if (v->vehstatus & VS_STOPPED) return;
+	CheckVehicleBreakdown(this);
+	AgeVehicle(this);
+	CheckIfShipNeedsService(this);
 
-	cost.AddCost(GetVehicleProperty(v, 0x0F, ShipVehInfo(v->engine_type)->running_cost) * _price.ship_running / 364);
-	v->profit_this_year -= cost.GetCost() >> 8;
+	CheckOrders(this);
 
-	SubtractMoneyFromPlayerFract(v->owner, cost);
+	if (this->vehstatus & VS_STOPPED) return;
 
-	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+	cost.AddCost(GetVehicleProperty(this, 0x0F, ShipVehInfo(this->engine_type)->running_cost) * _price.ship_running / 364);
+	this->profit_this_year -= cost.GetCost() >> 8;
+
+	SubtractMoneyFromPlayerFract(this->owner, cost);
+
+	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	/* we need this for the profit */
 	InvalidateWindowClasses(WC_SHIPS_LIST);
 }
@@ -227,7 +229,7 @@
 void Ship::MarkDirty()
 {
 	this->cur_image = this->GetImage(this->direction);
-	MarkAllViewportsDirty(this->left_coord, this->top_coord, this->right_coord + 1, this->bottom_coord + 1);
+	MarkSingleVehicleDirty(this);
 }
 
 static void PlayShipSound(const Vehicle *v)
@@ -248,8 +250,8 @@
 
 	switch (v->current_order.type) {
 		case OT_GOTO_DEPOT:
-			if (!(v->current_order.flags & OF_PART_OF_ORDERS)) return;
-			if (v->current_order.flags & OF_SERVICE_IF_NEEDED &&
+			if (!(v->current_order.flags & OFB_PART_OF_ORDERS)) return;
+			if (v->current_order.flags & OFB_SERVICE_IF_NEEDED &&
 					!VehicleNeedsService(v)) {
 				UpdateVehicleTimetable(v, true);
 				v->cur_order_index++;
@@ -384,7 +386,7 @@
 	if (spd != v->cur_speed) {
 		v->cur_speed = spd;
 		if (_patches.vehicle_speed)
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 
 	/* Decrease somewhat when turning */
@@ -477,7 +479,7 @@
 		pfs.best_bird_dist = (uint)-1;
 		pfs.best_length = (uint)-1;
 
-		FollowTrack(tile, 0x3800 | TRANSPORT_WATER, 0, (DiagDirection)_ship_search_directions[i][dir], (TPFEnumProc*)ShipTrackFollower, NULL, &pfs);
+		FollowTrack(tile, 0x1800 | TRANSPORT_WATER, 0, (DiagDirection)_ship_search_directions[i][dir], (TPFEnumProc*)ShipTrackFollower, NULL, &pfs);
 
 		if (best_track != INVALID_TRACK) {
 			if (pfs.best_bird_dist != 0) {
@@ -508,7 +510,7 @@
 	return best_bird_dist;
 }
 
-static inline NPFFoundTargetData PerfNPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, Owner owner, RailTypeMask railtypes)
+static inline NPFFoundTargetData PerfNPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, Owner owner, RailTypes railtypes)
 {
 
 	void* perf = NpfBeginInterval();
@@ -537,7 +539,7 @@
 
 		NPFFillWithOrderData(&fstd, v);
 
-		ftd = PerfNPFRouteToStationOrTile(src_tile, trackdir, &fstd, TRANSPORT_WATER, v->owner, INVALID_RAILTYPE);
+		ftd = PerfNPFRouteToStationOrTile(src_tile, trackdir, &fstd, TRANSPORT_WATER, v->owner, INVALID_RAILTYPES);
 
 		if (ftd.best_trackdir != 0xff) {
 			/* If ftd.best_bird_dist is 0, we found our target and ftd.best_trackdir contains
@@ -681,7 +683,7 @@
 			 * always skip ahead. */
 			if (v->current_order.type == OT_LEAVESTATION) {
 				v->current_order.Free();
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			} else if (v->dest_tile != 0) {
 				/* We have a target, let's see if we reached it... */
 				if (v->current_order.type == OT_GOTO_STATION &&
@@ -863,7 +865,7 @@
 		v->max_age = e->lifelength * 366;
 		_new_vehicle_id = v->index;
 
-		v->string_id = STR_SV_SHIP_NAME;
+		v->name = NULL;
 		v->u.ship.state = TRACK_BIT_DEPOT;
 
 		v->service_interval = _patches.servint_ships;
@@ -959,7 +961,7 @@
 
 		v->vehstatus ^= VS_STOPPED;
 		v->cur_speed = 0;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClasses(WC_SHIPS_LIST);
 	}
@@ -998,14 +1000,14 @@
 
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
-		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
+		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OF_HALT_IN_DEPOT)) {
 			/* We called with a different DEPOT_SERVICE setting.
 			 * Now we change the setting to apply the new one and let the vehicle head for the same depot.
 			 * Note: the if is (true for requesting service == true for ordered to stop in depot)          */
 			if (flags & DC_EXEC) {
-				ClrBit(v->current_order.flags, OFB_PART_OF_ORDERS);
-				ToggleBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+				ClrBit(v->current_order.flags, OF_PART_OF_ORDERS);
+				ToggleBit(v->current_order.flags, OF_HALT_IN_DEPOT);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			}
 			return CommandCost();
 		}
@@ -1014,12 +1016,12 @@
 		if (flags & DC_EXEC) {
 			/* If the orders to 'goto depot' are in the orders list (forced servicing),
 			 * then skip to the next order; effectively cancelling this forced service */
-			if (HasBit(v->current_order.flags, OFB_PART_OF_ORDERS))
+			if (HasBit(v->current_order.flags, OF_PART_OF_ORDERS))
 				v->cur_order_index++;
 
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return CommandCost();
 	}
@@ -1032,11 +1034,11 @@
 
 		v->dest_tile = dep->xy;
 		v->current_order.type = OT_GOTO_DEPOT;
-		v->current_order.flags = OF_NON_STOP;
-		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
+		v->current_order.flags = OFB_NON_STOP;
+		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OF_HALT_IN_DEPOT);
 		v->current_order.refit_cargo = CT_INVALID;
 		v->current_order.dest = dep->index;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 
 	return CommandCost();
--- a/src/ship_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/ship_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,8 +6,6 @@
 #include "openttd.h"
 #include "debug.h"
 #include "ship.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "viewport_func.h"
@@ -18,6 +16,9 @@
 #include "strings_func.h"
 #include "vehicle_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+
 void DrawShipImage(const Vehicle *v, int x, int y, VehicleID selection)
 {
 	DrawSprite(v->GetImage(DIR_W), GetVehiclePalette(v), x + 32, y + 10);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/signal.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,656 @@
+/* $Id$ */
+
+/** @file signal.cpp functions related to rail signals updating */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "debug.h"
+#include "tile_cmd.h"
+#include "rail_map.h"
+#include "road_map.h"
+#include "station_map.h"
+#include "tunnelbridge_map.h"
+#include "vehicle_func.h"
+#include "train.h"
+#include "newgrf_station.h"
+#include "functions.h"
+#include "track_type.h"
+#include "track_func.h"
+#include "signal_func.h"
+#include "player_func.h"
+
+
+/** these are the maximums used for updating signal blocks */
+enum {
+	SIG_TBU_SIZE    =  64, ///< number of signals entering to block
+	SIG_TBD_SIZE    = 256, ///< number of intersections - open nodes in current block
+	SIG_GLOB_SIZE   = 128, ///< number of open blocks (block can be opened more times until detected)
+	SIG_GLOB_UPDATE =  64, ///< how many items need to be in _globset to force update
+};
+
+/* need to typecast to compile with MorphOS */
+assert_compile((int)SIG_GLOB_UPDATE <= (int)SIG_GLOB_SIZE);
+
+/** incidating trackbits with given enterdir */
+static const TrackBitsByte _enterdir_to_trackbits[DIAGDIR_END] = {
+	{TRACK_BIT_3WAY_NE},
+	{TRACK_BIT_3WAY_SE},
+	{TRACK_BIT_3WAY_SW},
+	{TRACK_BIT_3WAY_NW}
+};
+
+/** incidating trackdirbits with given enterdir */
+static const TrackdirBitsShort _enterdir_to_trackdirbits[DIAGDIR_END] = {
+	{TRACKDIR_BIT_X_SW | TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_RIGHT_S},
+	{TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_RIGHT_N},
+	{TRACKDIR_BIT_X_NE | TRACKDIR_BIT_LOWER_E | TRACKDIR_BIT_LEFT_N},
+	{TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_LEFT_S}
+};
+
+/**
+ * Set containing 'items' items of 'tile and Tdir'
+ * No tree structure is used because it would cause
+ * slowdowns in most usual cases
+ */
+template <typename Tdir, uint items>
+struct SmallSet {
+private:
+	uint n;           // actual number of units
+	bool overflowed;  // did we try to oveflow the set?
+	const char *name; // name, used for debugging purposes...
+
+	/** Element of set */
+	struct SSdata {
+		TileIndex tile;
+		Tdir dir;
+	} data[items];
+
+public:
+	/** Constructor - just set default values and 'name' */
+	SmallSet(const char *name) : n(0), overflowed(false), name(name) { }
+
+	/** Reset variables to default values */
+	void Reset()
+	{
+		this->n = 0;
+		this->overflowed = false;
+	}
+
+	/**
+	 * Returns value of 'oveflowed'
+	 * @return did we try to overflow the set?
+	 */
+	bool Overflowed()
+	{
+		return this->overflowed;
+	}
+
+	/**
+	 * Checks for empty set
+	 * @return is the set empty?
+	 */
+	bool IsEmpty()
+	{
+		return this->n == 0;
+	}
+
+	/**
+	 * Checks for full set
+	 * @return is the set full?
+	 */
+	bool IsFull()
+	{
+		return this->n == lengthof(data);
+	}
+
+	/**
+	 * Reads the number of items
+	 * @return current number of items
+	 */
+	uint Items()
+	{
+		return this->n;
+	}
+
+
+	/**
+	 * Tries to remove first instance of given tile and dir
+	 * @param tile tile
+	 * @param dir and dir to remove
+	 * @return element was found and removed
+	 */
+	bool Remove(TileIndex tile, Tdir dir)
+	{
+		for (uint i = 0; i < this->n; i++) {
+			if (this->data[i].tile == tile && this->data[i].dir == dir) {
+				this->data[i] = this->data[--this->n];
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * Tries to find given tile and dir in the set
+	 * @param tile tile
+	 * @param dir and dir to find
+	 * @return true iff the tile & dir elemnt was found
+	 */
+	bool IsIn(TileIndex tile, Tdir dir)
+	{
+		for (uint i = 0; i < this->n; i++) {
+			if (this->data[i].tile == tile && this->data[i].dir == dir) return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Adds tile & dir into the set, checks for full set
+	 * Sets the 'overflowed' flag if the set was full
+	 * @param tile tile
+	 * @param dir and dir to add
+	 * @return true iff the item could be added (set wasn't full)
+	 */
+	bool Add(TileIndex tile, Tdir dir)
+	{
+		if (this->IsFull()) {
+			overflowed = true;
+			DEBUG(misc, 0, "SignalSegment too complex. Set %s is full (maximum %d)", name, items);
+			return false; // set is full
+		}
+
+		this->data[this->n].tile = tile;
+		this->data[this->n].dir = dir;
+		this->n++;
+
+		return true;
+	}
+
+	/**
+	 * Reads the last added element into the set
+	 * @param tile pointer where tile is written to
+	 * @param dir pointer where dir is written to
+	 * @return false iff the set was empty
+	 */
+	bool Get(TileIndex *tile, Tdir *dir)
+	{
+		if (this->n == 0) return false;
+
+		this->n--;
+		*tile = this->data[this->n].tile;
+		*dir = this->data[this->n].dir;
+
+		return true;
+	}
+};
+
+static SmallSet<Trackdir, SIG_TBU_SIZE> _tbuset("_tbuset");         ///< set of signals that will be updated
+static SmallSet<DiagDirection, SIG_TBD_SIZE> _tbdset("_tbdset");    ///< set of open nodes in current signal block
+static SmallSet<DiagDirection, SIG_GLOB_SIZE> _globset("_globset"); ///< set of places to be updated in following runs
+
+
+/** Check whether there is a train on rail, not in a depot */
+static void *TrainOnTileEnum(Vehicle *v, void *)
+{
+	if (v->type != VEH_TRAIN || v->u.rail.track == TRACK_BIT_DEPOT) return NULL;
+
+	return v;
+}
+
+
+/**
+ * Perform some operations before adding data into Todo set
+ * The new and reverse direction is removed from _globset, because we are sure
+ * it doesn't need to be checked again
+ * Also, remove reverse direction from _tbdset
+ * This is the 'core' part so the graph seaching won't enter any tile twice
+ *
+ * @param t1 tile we are entering
+ * @param d1 direction (tile side) we are entering
+ * @param t2 tile we are leaving
+ * @param d2 direction (tile side) we are leaving
+ * @return false iff reverse direction was in Todo set
+ */
+static inline bool CheckAddToTodoSet(TileIndex t1, DiagDirection d1, TileIndex t2, DiagDirection d2)
+{
+	_globset.Remove(t1, d1); // it can be in Global but not in Todo
+	_globset.Remove(t2, d2); // remove in all cases
+
+	assert(!_tbdset.IsIn(t1, d1)); // it really shouldn't be there already
+
+	if (_tbdset.Remove(t2, d2)) return false;
+
+	return true;
+}
+
+
+/**
+ * Perform some operations before adding data into Todo set
+ * The new and reverse direction is removed from Global set, because we are sure
+ * it doesn't need to be checked again
+ * Also, remove reverse direction from Todo set
+ * This is the 'core' part so the graph seaching won't enter any tile twice
+ *
+ * @param t1 tile we are entering
+ * @param d1 direction (tile side) we are entering
+ * @param t2 tile we are leaving
+ * @param d2 direction (tile side) we are leaving
+ * @return false iff the Todo buffer would be overrun
+ */
+static inline bool MaybeAddToTodoSet(TileIndex t1, DiagDirection d1, TileIndex t2, DiagDirection d2)
+{
+	if (!CheckAddToTodoSet(t1, d1, t2, d2)) return true;
+
+	return _tbdset.Add(t1, d1);
+}
+
+
+/** Current signal block state flags */
+enum SigFlags {
+	SF_NONE   = 0,
+	SF_TRAIN  = 1 << 0, ///< train found in segment
+	SF_EXIT   = 1 << 1, ///< exitsignal found
+	SF_EXIT2  = 1 << 2, ///< two or more exits found
+	SF_GREEN  = 1 << 3, ///< green exitsignal found
+	SF_GREEN2 = 1 << 4, ///< two or more green exits found
+	SF_FULL   = 1 << 5, ///< some of buffers was full, do not continue
+};
+
+DECLARE_ENUM_AS_BIT_SET(SigFlags)
+
+
+/**
+ * Search signal block
+ *
+ * @param owner owner whose signals we are updating
+ * @return SigFlags
+ */
+static SigFlags ExploreSegment(Owner owner)
+{
+	SigFlags flags = SF_NONE;
+
+	TileIndex tile;
+	DiagDirection enterdir;
+
+	while (_tbdset.Get(&tile, &enterdir)) {
+		TileIndex oldtile = tile; // tile we are leaving
+		DiagDirection exitdir = enterdir == INVALID_DIAGDIR ? INVALID_DIAGDIR : ReverseDiagDir(enterdir); // expected new exit direction (for straight line)
+
+		switch (GetTileType(tile)) {
+			case MP_RAILWAY: {
+				if (GetTileOwner(tile) != owner) continue; // do not propagate signals on others' tiles (remove for tracksharing)
+
+				if (IsRailDepot(tile)) {
+					if (enterdir == INVALID_DIAGDIR) { // from 'inside' - train just entered or left the depot
+						if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+						exitdir = GetRailDepotDirection(tile);
+						tile += TileOffsByDiagDir(exitdir);
+						enterdir = ReverseDiagDir(exitdir);
+						break;
+					} else if (enterdir == GetRailDepotDirection(tile)) { // entered a depot
+						if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+						continue;
+					} else {
+						continue;
+					}
+				}
+
+				if (GetRailTileType(tile) == RAIL_TILE_WAYPOINT) {
+					if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+					tile += TileOffsByDiagDir(exitdir);
+					/* enterdir and exitdir stay the same */
+					break;
+				}
+
+				TrackBits tracks = GetTrackBits(tile); // trackbits of tile
+				TrackBits tracks_masked = (TrackBits)(tracks & _enterdir_to_trackbits[enterdir]); // only incidating trackbits
+
+				if (tracks == TRACK_BIT_HORZ || tracks == TRACK_BIT_VERT) { // there is exactly one incidating track, no need to check
+					tracks = tracks_masked;
+					if (!(flags & SF_TRAIN) && VehicleFromPos(tile, &tracks, &EnsureNoTrainOnTrackProc)) flags |= SF_TRAIN;
+				} else {
+					if (tracks_masked == TRACK_BIT_NONE) continue; // no incidating track
+					if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+				}
+
+				if (HasSignals(tile)) { // there is exactly one track - not zero, because there is exit from this tile
+					Track track = TrackBitsToTrack(tracks_masked); // mask TRACK_BIT_X and Y too
+					if (HasSignalOnTrack(tile, track)) { // now check whole track, not trackdir
+						SignalType sig = GetSignalType(tile, track);
+						Trackdir trackdir = (Trackdir)FindFirstBit((tracks * 0x101) & _enterdir_to_trackdirbits[enterdir]);
+						Trackdir reversedir = ReverseTrackdir(trackdir);
+						/* add (tile, reversetrackdir) to 'to-be-updated' set when there is
+						 * ANY signal in REVERSE direction
+						 * (if it is a presignal EXIT and it changes, it will be added to 'to-be-done' set later) */
+						if (HasSignalOnTrackdir(tile, reversedir)) {
+							if (!_tbuset.Add(tile, reversedir)) return flags | SF_FULL;
+						}
+						/* if it is a presignal EXIT in OUR direction and we haven't found 2 green exits yes, do special check */
+						if (!(flags & SF_GREEN2) && (sig & SIGTYPE_EXIT) && HasSignalOnTrackdir(tile, trackdir)) { // found presignal exit
+							if (flags & SF_EXIT) flags |= SF_EXIT2; // found two (or more) exits
+							flags |= SF_EXIT; // found at least one exit - allow for compiler optimizations
+							if (GetSignalStateByTrackdir(tile, trackdir) == SIGNAL_STATE_GREEN) { // found green presignal exit
+								if (flags & SF_GREEN) flags |= SF_GREEN2;
+								flags |= SF_GREEN;
+							}
+						}
+						continue;
+					}
+				}
+
+				for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) { // test all possible exit directions
+					if (dir != enterdir && tracks & _enterdir_to_trackbits[dir]) { // any track incidating?
+						TileIndex newtile = tile + TileOffsByDiagDir(dir);  // new tile to check
+						DiagDirection newdir = ReverseDiagDir(dir); // direction we are entering from
+						if (!MaybeAddToTodoSet(newtile, newdir, tile, dir)) return flags | SF_FULL;
+					}
+				}
+
+				continue; // continue the while() loop
+				}
+
+			case MP_STATION:
+				if (!IsRailwayStation(tile)) continue;
+				if (GetTileOwner(tile) != owner) continue;
+				if (DiagDirToAxis(enterdir) != GetRailStationAxis(tile)) continue; // different axis
+				if (IsStationTileBlocked(tile)) continue; // 'eye-candy' station tile
+
+				if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+				tile += TileOffsByDiagDir(exitdir);
+				break;
+
+			case MP_ROAD:
+				if (!IsLevelCrossing(tile)) continue;
+				if (GetTileOwner(tile) != owner) continue;
+				if (DiagDirToAxis(enterdir) == GetCrossingRoadAxis(tile)) continue; // different axis
+
+				if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+				tile += TileOffsByDiagDir(exitdir);
+				break;
+
+			case MP_TUNNELBRIDGE: {
+				if (GetTileOwner(tile) != owner) continue;
+				if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) continue;
+				DiagDirection dir = GetTunnelBridgeDirection(tile);
+
+				if (enterdir == INVALID_DIAGDIR) { // incoming from the wormhole
+					if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+					enterdir = dir;
+					exitdir = ReverseDiagDir(dir);
+					tile += TileOffsByDiagDir(exitdir); // just skip to next tile
+				} else { // NOT incoming from the wormhole!
+					if (ReverseDiagDir(enterdir) != dir) continue;
+					if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
+					tile = GetOtherTunnelBridgeEnd(tile); // just skip to exit tile
+					enterdir = INVALID_DIAGDIR;
+					exitdir = INVALID_DIAGDIR;
+				}
+				}
+				break;
+
+			default:
+				continue; // continue the while() loop
+		}
+
+		if (!MaybeAddToTodoSet(tile, enterdir, oldtile, exitdir)) return flags | SF_FULL;
+	}
+
+	return flags;
+}
+
+
+/**
+ * Update signals around segment in _tbuset
+ *
+ * @param flags info about segment
+ */
+static void UpdateSignalsAroundSegment(SigFlags flags)
+{
+	TileIndex tile;
+	Trackdir trackdir;
+
+	while (_tbuset.Get(&tile, &trackdir)) {
+		assert(HasSignalOnTrackdir(tile, trackdir));
+
+		SignalType sig = GetSignalType(tile, TrackdirToTrack(trackdir));
+		SignalState newstate = SIGNAL_STATE_GREEN;
+
+		/* determine whether the new state is red */
+		if (flags & SF_TRAIN) {
+			/* train in the segment */
+			newstate = SIGNAL_STATE_RED;
+		} else {
+ 			/* is it a bidir combo? - then do not count its other signal direction as exit */
+			if (sig == SIGTYPE_COMBO && HasSignalOnTrackdir(tile, ReverseTrackdir(trackdir))) {
+				/* at least one more exit */
+				if (flags & SF_EXIT2 &&
+ 						/* no green exit */
+						(!(flags & SF_GREEN) ||
+						/* only one green exit, and it is this one - so all other exits are red */
+						(!(flags & SF_GREEN2) && GetSignalStateByTrackdir(tile, ReverseTrackdir(trackdir)) == SIGNAL_STATE_GREEN))) {
+					newstate = SIGNAL_STATE_RED;
+				}
+			} else { // entry, at least one exit, no green exit
+				if (sig & SIGTYPE_ENTRY && (flags & SF_EXIT && !(flags & SF_GREEN))) newstate = SIGNAL_STATE_RED;
+			}
+		}
+
+		/* only when the state changes */
+		if (newstate != GetSignalStateByTrackdir(tile, trackdir)) {
+			if (sig & SIGTYPE_EXIT) {
+				/* for pre-signal exits, add block to the global set */
+				DiagDirection exitdir = TrackdirToExitdir(ReverseTrackdir(trackdir));
+				_globset.Add(tile, exitdir); // do not check for full global set, first update all signals
+			}
+			SetSignalStateByTrackdir(tile, trackdir, newstate);
+			MarkTileDirtyByTile(tile);
+		}
+	}
+
+}
+
+
+/** Reset all sets after one set overflowed */
+static inline void ResetSets()
+{
+	_tbuset.Reset();
+	_tbdset.Reset();
+	_globset.Reset();
+}
+
+
+/**
+ * Updates blocks in _globset buffer
+ *
+ * @param owner player whose signals we are updating
+ * @return false iff presignal entry would be green (needed for trains leaving depot)
+ * @pre IsValidPlayer(owner)
+ */
+static bool UpdateSignalsInBuffer(Owner owner)
+{
+	assert(IsValidPlayer(owner));
+
+	bool first = true;  // first block?
+	bool state = false; // value to return
+
+	TileIndex tile;
+	DiagDirection dir;
+
+	while (_globset.Get(&tile, &dir)) {
+		assert(_tbuset.IsEmpty());
+		assert(_tbdset.IsEmpty());
+
+		/* After updating signal, data stored are always MP_RAILWAY with signals.
+		 * Other situations happen when data are from outside functions -
+		 * modification of railbits (including both rail building and removal),
+		 * train entering/leaving block, train leaving depot...
+		 */
+		switch (GetTileType(tile)) {
+			case MP_TUNNELBRIDGE:
+				/* 'optimization assert' - do not try to update signals when it is not needed */
+				assert(GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL);
+				assert(dir == INVALID_DIAGDIR || dir == ReverseDiagDir(GetTunnelBridgeDirection(tile)));
+				_tbdset.Add(tile, INVALID_DIAGDIR);  // we can safely start from wormhole centre
+				_tbdset.Add(GetOtherTunnelBridgeEnd(tile), INVALID_DIAGDIR);
+				break;
+
+			case MP_RAILWAY:
+				if (IsRailDepot(tile)) {
+					/* 'optimization assert' do not try to update signals in other cases */
+					assert(dir == INVALID_DIAGDIR || dir == GetRailDepotDirection(tile));
+					_tbdset.Add(tile, INVALID_DIAGDIR); // start from depot inside
+					break;
+				}
+				/* FALLTHROUGH */
+			case MP_STATION:
+			case MP_ROAD:
+				if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
+ 					/* only add to set when there is some 'interesting' track */
+					_tbdset.Add(tile, dir);
+					_tbdset.Add(tile + TileOffsByDiagDir(dir), ReverseDiagDir(dir));
+					break;
+				}
+				/* FALLTHROUGH */
+			default:
+				/* jump to next tile */
+				tile = tile + TileOffsByDiagDir(dir);
+				dir = ReverseDiagDir(dir);
+				if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
+					_tbdset.Add(tile, dir);
+					break;
+				}
+				/* happens when removing a rail that wasn't connected at one or both sides */
+				continue; // continue the while() loop
+		}
+
+		assert(!_tbdset.Overflowed()); // it really shouldn't overflow by these one or two items
+		assert(!_tbdset.IsEmpty()); // it wouldn't hurt anyone, but shouldn't happen too
+
+		SigFlags flags = ExploreSegment(owner);
+
+		if (first) {
+			first = false;
+			state = (flags & SF_TRAIN) || (flags & SF_EXIT && !(flags & SF_GREEN)) || (flags & SF_FULL); // true iff train CAN'T leave the depot
+		}
+
+		/* do not do anything when some buffer was full */
+		if (flags & SF_FULL) {
+			ResetSets(); // free all sets
+			break;
+		}
+
+		UpdateSignalsAroundSegment(flags);
+	}
+
+	return state;
+}
+
+
+static Owner _last_owner = INVALID_OWNER; ///< last owner whose track was put into _globset
+
+
+/**
+ * Update signals in buffer
+ * Called from 'outside'
+ */
+void UpdateSignalsInBuffer()
+{
+	if (!_globset.IsEmpty()) {
+		UpdateSignalsInBuffer(_last_owner);
+		_last_owner = INVALID_OWNER; // invalidate
+	}
+}
+
+
+/**
+ * Add track to signal update buffer
+ *
+ * @param tile tile where we start
+ * @param track track at which ends we will update signals
+ * @param owner owner whose signals we will update
+ */
+void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner)
+{
+	static const DiagDirection _search_dir_1[] = {
+		DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_NE, DIAGDIR_SE, DIAGDIR_SW, DIAGDIR_SE
+	};
+	static const DiagDirection _search_dir_2[] = {
+		DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE
+	};
+
+	/* do not allow signal updates for two players in one run */
+	assert(_globset.IsEmpty() || owner == _last_owner);
+
+	_last_owner = owner;
+
+	_globset.Add(tile, _search_dir_1[track]);
+	_globset.Add(tile, _search_dir_2[track]);
+
+	if (_globset.Items() >= SIG_GLOB_UPDATE) {
+		/* too many items, force update */
+		UpdateSignalsInBuffer(_last_owner);
+		_last_owner = INVALID_OWNER;
+	}
+}
+
+
+/**
+ * Add side of tile to signal update buffer
+ *
+ * @param tile tile where we start
+ * @param side side of tile
+ * @param owner owner whose signals we will update
+ */
+void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner)
+{
+	/* do not allow signal updates for two players in one run */
+	assert(_globset.IsEmpty() || owner == _last_owner);
+
+	_last_owner = owner;
+
+	_globset.Add(tile, side);
+
+	if (_globset.Items() >= SIG_GLOB_UPDATE) {
+		/* too many items, force update */
+		UpdateSignalsInBuffer(_last_owner);
+		_last_owner = INVALID_OWNER;
+	}
+}
+
+/**
+ * Update signals, starting at one side of a tile
+ * Will check tile next to this at opposite side too
+ *
+ * @see UpdateSignalsInBuffer()
+ * @param tile tile where we start
+ * @param side side of tile
+ * @param owner owner whose signals we will update
+ * @return false iff train can leave depot
+ */
+bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner)
+{
+	assert(_globset.IsEmpty());
+	_globset.Add(tile, side);
+
+	return UpdateSignalsInBuffer(owner);
+}
+
+
+/**
+ * Update signals at segments that are at both ends of
+ * given (existent or non-existent) track
+ *
+ * @see UpdateSignalsInBuffer()
+ * @param tile tile where we start
+ * @param track track at which ends we will update signals
+ * @param owner owner whose signals we will update
+ */
+void SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner)
+{
+	assert(_globset.IsEmpty());
+
+	AddTrackToSignalBuffer(tile, track, owner);
+	UpdateSignalsInBuffer(owner);
+}
--- a/src/signal_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/signal_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,10 @@
 #define SIGNAL_FUNC_H
 
 #include "track_type.h"
+#include "tile_type.h"
+#include "direction_type.h"
+#include "track_type.h"
+#include "player_type.h"
 
 /**
  * Maps a trackdir to the bit that stores its status in the map arrays, in the
@@ -37,4 +41,10 @@
 	return _signal_on_track[track];
 }
 
+bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner);
+void SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner);
+void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner);
+void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner);
+void UpdateSignalsInBuffer();
+
 #endif /* SIGNAL_FUNC_H */
--- a/src/signs.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/signs.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,9 +4,8 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "landscape.h"
-#include "player.h"
+#include "player_func.h"
 #include "signs.h"
 #include "saveload.h"
 #include "command_func.h"
@@ -20,21 +19,24 @@
 #include "map_func.h"
 #include "string_func.h"
 
+#include "table/strings.h"
+
 SignID _new_sign_id;
 uint _total_signs;
+bool _sign_sort_dirty;
 
 /* Initialize the sign-pool */
 DEFINE_OLD_POOL_GENERIC(Sign, Sign)
 
-Sign::Sign(StringID string)
+Sign::Sign(PlayerID owner)
 {
-	this->str = string;
+	this->owner = owner;
 }
 
 Sign::~Sign()
 {
-	DeleteName(this->str);
-	this->str = STR_NULL;
+	free(this->name);
+	this->owner = INVALID_PLAYER;
 }
 
 /**
@@ -95,7 +97,7 @@
 CommandCost CmdPlaceSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	/* Try to locate a new sign */
-	Sign *si = new Sign(STR_280A_SIGN);
+	Sign *si = new Sign(_current_player);
 	if (si == NULL) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
 	AutoPtrT<Sign> s_auto_delete = si;
 
@@ -106,7 +108,6 @@
 
 		si->x = x;
 		si->y = y;
-		si->owner = _current_player; // owner of the sign; just eyecandy
 		si->z = GetSlopeZ(x, y);
 		UpdateSignVirtCoords(si);
 		MarkSignDirty(si);
@@ -136,17 +137,13 @@
 	/* If _cmd_text 0 means the new text for the sign is non-empty.
 	 * So rename the sign. If it is empty, it has no name, so delete it */
 	if (!StrEmpty(_cmd_text)) {
-		/* Create the name */
-		StringID str = AllocateName(_cmd_text, 0);
-		if (str == 0) return CMD_ERROR;
-
 		if (flags & DC_EXEC) {
 			Sign *si = GetSign(p1);
 
 			/* Delete the old name */
-			DeleteName(si->str);
+			free(si->name);
 			/* Assign the new one */
-			si->str = str;
+			si->name = strdup(_cmd_text);
 			si->owner = _current_player;
 
 			/* Update; mark sign dirty twice, because it can either becom longer, or shorter */
@@ -155,9 +152,6 @@
 			MarkSignDirty(si);
 			InvalidateWindow(WC_SIGN_LIST, 0);
 			_sign_sort_dirty = true;
-		} else {
-			/* Free the name, because we did not assign it yet */
-			DeleteName(str);
 		}
 	} else { // Delete sign
 		if (flags & DC_EXEC) {
@@ -214,7 +208,8 @@
 }
 
 static const SaveLoad _sign_desc[] = {
-      SLE_VAR(Sign, str,   SLE_UINT16),
+  SLE_CONDVAR(Sign, name,  SLE_NAME,                   0, 83),
+  SLE_CONDSTR(Sign, name,  SLE_STR, 0,                84, SL_MAX_VERSION),
   SLE_CONDVAR(Sign, x,     SLE_FILE_I16 | SLE_VAR_I32, 0, 4),
   SLE_CONDVAR(Sign, y,     SLE_FILE_I16 | SLE_VAR_I32, 0, 4),
   SLE_CONDVAR(Sign, x,     SLE_INT32,                  5, SL_MAX_VERSION),
--- a/src/signs.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/signs.h	Sun Feb 03 20:17:54 2008 +0000
@@ -11,7 +11,7 @@
 DECLARE_OLD_POOL(Sign, Sign, 2, 16000)
 
 struct Sign : PoolItem<Sign, SignID, &_Sign_pool> {
-	StringID     str;
+	char *name;
 	ViewportSign sign;
 	int32        x;
 	int32        y;
@@ -21,12 +21,12 @@
 	/**
 	 * Creates a new sign
 	 */
-	Sign(StringID string = STR_NULL);
+	Sign(PlayerID owner = INVALID_PLAYER);
 
 	/** Destroy the sign */
 	~Sign();
 
-	inline bool IsValid() const { return this->str != STR_NULL; }
+	inline bool IsValid() const { return this->owner != INVALID_PLAYER; }
 };
 
 enum {
@@ -60,7 +60,7 @@
 #define FOR_ALL_SIGNS_FROM(ss, start) for (ss = GetSign(start); ss != NULL; ss = (ss->index + 1U < GetSignPoolSize()) ? GetSign(ss->index + 1U) : NULL) if (ss->IsValid())
 #define FOR_ALL_SIGNS(ss) FOR_ALL_SIGNS_FROM(ss, 0)
 
-VARDEF bool _sign_sort_dirty;
+extern bool _sign_sort_dirty;
 
 void UpdateAllSignVirtCoords();
 void PlaceProc_Sign(TileIndex tile);
--- a/src/signs_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/signs_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,10 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "gui.h"
 #include "textbuf_gui.h"
 #include "window_gui.h"
-#include "player.h"
+#include "player_gui.h"
 #include "signs.h"
 #include "debug.h"
 #include "variables.h"
@@ -21,6 +19,9 @@
 #include "gfx_func.h"
 #include "viewport_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+
 static const Sign **_sign_sort;
 static uint _num_sign_sort;
 
@@ -33,11 +34,13 @@
 	const Sign *sign1 = *(const Sign**)b;
 	char buf1[64];
 
-	GetString(buf1, sign0->str, lastof(buf1));
+	SetDParam(0, sign0->index);
+	GetString(buf1, STR_SIGN_NAME, lastof(buf1));
 
 	if (sign1 != _last_sign) {
 		_last_sign = sign1;
-		GetString(_bufcache, sign1->str, lastof(_bufcache));
+		SetDParam(0, sign1->index);
+		GetString(_bufcache, STR_SIGN_NAME, lastof(_bufcache));
 	}
 
 	return strcmp(buf1, _bufcache); // sort by name
@@ -175,7 +178,7 @@
 static void UpdateSignEditWindow(Window *w, const Sign *si)
 {
 	/* Display an empty string when the sign hasnt been edited yet */
-	if (si->str != STR_280A_SIGN) {
+	if (si->name != NULL) {
 		SetDParam(0, si->index);
 		GetString(_edit_str_buf, STR_SIGN_NAME, lastof(_edit_str_buf));
 	} else {
--- a/src/slope_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/slope_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -45,6 +45,19 @@
 }
 
 /**
+ * Removes a halftile slope from a slope
+ *
+ * Non-halftile slopes remain unmodified.
+ *
+ * @param s A #Slope.
+ * @return The slope s without it's halftile slope.
+ */
+static inline Slope RemoveHalftileSlope(Slope s)
+{
+	return (Slope)(s & ~SLOPE_HALFTILE_MASK);
+}
+
+/**
  * Return the complement of a slope.
  *
  * This method returns the complement of a slope. The complement of a
@@ -62,6 +75,29 @@
 }
 
 /**
+ * Tests if a specific slope has exactly one corner raised.
+ *
+ * @param s The #Slope
+ * @return true iff exactly one corner is raised
+ */
+static inline bool IsSlopeWithOneCornerRaised(Slope s)
+{
+	return (s == SLOPE_W) || (s == SLOPE_S) || (s == SLOPE_E) || (s == SLOPE_N);
+}
+
+/**
+ * Returns the slope with a specific corner raised.
+ *
+ * @param corner The #Corner.
+ * @return The #Slope with corner "corner" raised.
+ */
+static inline Slope SlopeWithOneCornerRaised(Corner corner)
+{
+	assert(IsValidCorner(corner));
+	return (Slope)(1 << corner);
+}
+
+/**
  * Tests if a slope has a highest corner (i.e. one corner raised or a steep slope).
  *
  * Note: A halftile slope is ignored.
@@ -71,8 +107,8 @@
  */
 static inline bool HasSlopeHighestCorner(Slope s)
 {
-	s = (Slope)(s & ~SLOPE_HALFTILE_MASK);
-	return IsSteepSlope(s) || (s == SLOPE_W) || (s == SLOPE_S) || (s == SLOPE_E) || (s == SLOPE_N);
+	s = RemoveHalftileSlope(s);
+	return IsSteepSlope(s) || IsSlopeWithOneCornerRaised(s);
 }
 
 /**
@@ -84,7 +120,7 @@
  */
 static inline Corner GetHighestSlopeCorner(Slope s)
 {
-	switch (s & ~SLOPE_HALFTILE_MASK) {
+	switch (RemoveHalftileSlope(s)) {
 		case SLOPE_W:
 		case SLOPE_STEEP_W: return CORNER_W;
 		case SLOPE_S:
@@ -135,15 +171,14 @@
 }
 
 /**
- * Returns the slope with a specific corner raised.
+ * Tests if a specific slope has exactly three corners raised.
  *
- * @param corner The #Corner.
- * @return The #Slope with corner "corner" raised.
+ * @param s The #Slope
+ * @return true iff exactly three corners are raised
  */
-static inline Slope SlopeWithOneCornerRaised(Corner corner)
+static inline bool IsSlopeWithThreeCornersRaised(Slope s)
 {
-	assert(IsValidCorner(corner));
-	return (Slope)(1 << corner);
+	return !IsHalftileSlope(s) && !IsSteepSlope(s) && IsSlopeWithOneCornerRaised(ComplementSlope(s));
 }
 
 /**
@@ -158,6 +193,62 @@
 }
 
 /**
+ * Returns a specific steep slope
+ *
+ * @param corner A #Corner.
+ * @return The steep #Slope with "corner" as highest corner.
+ */
+static inline Slope SteepSlope(Corner corner)
+{
+	return (Slope)(SLOPE_STEEP | SlopeWithThreeCornersRaised(OppositeCorner(corner)));
+}
+
+/**
+ * Tests if a specific slope is an inclined slope.
+ *
+ * @param s The #Slope
+ * @return true iff the slope is inclined.
+ */
+static inline bool IsInclinedSlope(Slope s)
+{
+	return (s == SLOPE_NW) || (s == SLOPE_SW) || (s == SLOPE_SE) || (s == SLOPE_NE);
+}
+
+/**
+ * Returns the direction of an inclined slope.
+ *
+ * @param s A #Slope
+ * @return The direction the slope goes up in. Or INVALID_DIAGDIR if the slope is not an inclined slope.
+ */
+static inline DiagDirection GetInclinedSlopeDirection(Slope s)
+{
+	switch (s) {
+		case SLOPE_NE: return DIAGDIR_NE;
+		case SLOPE_SE: return DIAGDIR_SE;
+		case SLOPE_SW: return DIAGDIR_SW;
+		case SLOPE_NW: return DIAGDIR_NW;
+		default: return INVALID_DIAGDIR;
+	}
+}
+
+/**
+ * Returns the slope, that is inclined in a specific direction.
+ *
+ * @param dir A #DiagDirection
+ * @return The #Slope that goes up in direction dir.
+ */
+static inline Slope InclinedSlope(DiagDirection dir)
+{
+	switch (dir) {
+		case DIAGDIR_NE: return SLOPE_NE;
+		case DIAGDIR_SE: return SLOPE_SE;
+		case DIAGDIR_SW: return SLOPE_SW;
+		case DIAGDIR_NW: return SLOPE_NW;
+		default: NOT_REACHED();
+	}
+}
+
+/**
  * Adds a halftile slope to a slope.
  *
  * @param s #Slope without a halftile slope.
--- a/src/smallmap_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/smallmap_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,3 +1,4 @@
+
 /* $Id$ */
 
 /** @file smallmap_gui.cpp */
@@ -9,8 +10,6 @@
 #include "industry_map.h"
 #include "industry.h"
 #include "station_map.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "landscape.h"
 #include "gui.h"
 #include "window_gui.h"
@@ -18,7 +17,7 @@
 #include "tunnel_map.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
-#include "player.h"
+#include "player_base.h"
 #include "town.h"
 #include "variables.h"
 #include "blitter/factory.hpp"
@@ -28,7 +27,10 @@
 #include "core/endian_func.hpp"
 #include "vehicle_base.h"
 #include "sound_func.h"
+#include "settings_type.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
 
 static const Widget _smallmap_widgets[] = {
 {  WWT_CLOSEBOX,   RESIZE_NONE,    13,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},
--- a/src/sound.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/sound.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -14,6 +14,7 @@
 #include "core/alloc_func.hpp"
 #include "map_func.h"
 #include "vehicle_base.h"
+#include "debug.h"
 
 static uint _file_count;
 static FileEntry *_files;
@@ -25,12 +26,20 @@
 
 static void OpenBankFile(const char *filename)
 {
-	uint count;
 	uint i;
 
 	FioOpenFile(SOUND_SLOT, filename);
 	uint pos = FioGetPos();
-	count = FioReadDword() / 8;
+	uint count = FioReadDword() / 8;
+
+	/* Simple check for the correct number of original sounds. */
+	if (count != 73) {
+		DEBUG(misc, 6, "Incorrect number of sounds in '%s', ignoring.", filename);
+		_file_count = 0;
+		_files = NULL;
+		return;
+	}
+
 	FileEntry *fe = CallocT<FileEntry>(count);
 
 	if (fe == NULL) {
@@ -104,13 +113,9 @@
 	return _file_count;
 }
 
-static bool SetBankSource(MixerChannel *mc, uint bank)
+static bool SetBankSource(MixerChannel *mc, const FileEntry *fe)
 {
-	const FileEntry *fe;
-	uint i;
-
-	if (bank >= GetNumSounds()) return false;
-	fe = GetSound(bank);
+	assert(fe != NULL);
 
 	if (fe->file_size == 0) return false;
 
@@ -120,8 +125,9 @@
 	FioSeekToFile(fe->file_slot, fe->file_offset);
 	FioReadBlock(mem, fe->file_size);
 
-	for (i = 0; i != fe->file_size; i++)
+	for (uint i = 0; i != fe->file_size; i++) {
 		mem[i] += -128; // Convert unsigned sound data to signed
+	}
 
 	assert(fe->bits_per_sample == 8 && fe->channels == 1 && fe->file_size != 0 && fe->rate != 0);
 
@@ -139,17 +145,22 @@
 /* Low level sound player */
 static void StartSound(uint sound, int panning, uint volume)
 {
-	MixerChannel *mc;
-	uint left_vol, right_vol;
+	if (volume == 0) return;
 
-	if (volume == 0) return;
-	mc = MxAllocateChannel();
+	const FileEntry *fe = GetSound(sound);
+	if (fe == NULL) return;
+
+	MixerChannel *mc = MxAllocateChannel();
 	if (mc == NULL) return;
-	if (!SetBankSource(mc, sound)) return;
+
+	if (!SetBankSource(mc, fe)) return;
+
+	/* Apply the sound effect's own volume. */
+	volume = (fe->volume * volume) / 128;
 
 	panning = Clamp(panning, -PANNING_LEVELS, PANNING_LEVELS);
-	left_vol = (volume * PANNING_LEVELS) - (volume * panning);
-	right_vol = (volume * PANNING_LEVELS) + (volume * panning);
+	uint left_vol = (volume * PANNING_LEVELS) - (volume * panning);
+	uint right_vol = (volume * PANNING_LEVELS) + (volume * panning);
 	MxSetChannelVolume(mc, left_vol * 128 / PANNING_LEVELS, right_vol * 128 / PANNING_LEVELS);
 	MxActivateChannel(mc);
 }
@@ -215,7 +226,7 @@
 			StartSound(
 				sound,
 				left / max(1, vp->virtual_width / ((PANNING_LEVELS << 1) + 1)) - PANNING_LEVELS,
-				(GetSound(sound)->volume * msf.effect_vol * _vol_factor_by_zoom[vp->zoom - ZOOM_LVL_BEGIN]) >> 15
+				(msf.effect_vol * _vol_factor_by_zoom[vp->zoom - ZOOM_LVL_BEGIN]) / 256
 			);
 			return;
 		}
@@ -242,9 +253,5 @@
 
 void SndPlayFx(SoundFx sound)
 {
-	StartSound(
-		sound,
-		0,
-		(GetSound(sound)->volume * msf.effect_vol) >> 7
-	);
+	StartSound(sound, 0, msf.effect_vol);
 }
--- a/src/sound/sound_driver.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/sound/sound_driver.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -23,5 +23,6 @@
 };
 
 extern SoundDriver *_sound_driver;
+extern char _ini_sounddriver[32];
 
 #endif /* SOUND_SOUND_DRIVER_HPP */
--- a/src/spritecache.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spritecache.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,7 +7,6 @@
 #include "variables.h"
 #include "debug.h"
 #include "spritecache.h"
-#include "table/sprites.h"
 #include "fileio.h"
 #include "spriteloader/grf.hpp"
 #include "core/alloc_func.hpp"
@@ -17,17 +16,18 @@
 #endif /* WITH_PNG */
 #include "blitter/factory.hpp"
 
+#include "table/sprites.h"
+
 /* Default of 4MB spritecache */
 uint _sprite_cache_size = 4;
 
 
 struct SpriteCache {
-	void *ptr;
-	uint8 file_slot;
-	uint32 file_pos;
-	int16 lru;
+ 	void *ptr;
 	uint32 id;
-	const char *grf_name;
+ 	uint32 file_pos;
+	uint16 file_slot;
+ 	int16 lru;
 };
 
 
@@ -142,7 +142,7 @@
 		SpriteLoaderPNG sprite_loader;
 		SpriteLoader::Sprite sprite;
 
-		if (sprite_loader.LoadSprite(&sprite, sc->grf_name, 0, sc->id)) {
+		if (sprite_loader.LoadSprite(&sprite, file_slot, sc->id)) {
 			sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
 			free(sprite.data);
 
@@ -229,7 +229,7 @@
 	SpriteLoaderGrf sprite_loader;
 	SpriteLoader::Sprite sprite;
 
-	if (!sprite_loader.LoadSprite(&sprite, sc->grf_name, file_slot, file_pos)) return NULL;
+	if (!sprite_loader.LoadSprite(&sprite, file_slot, file_pos)) return NULL;
 	if (id == 142) sprite.height = 10; // Compensate for a TTD bug
 	sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
 	free(sprite.data);
@@ -256,42 +256,19 @@
 	sc->lru = 0;
 	sc->id = file_sprite_id;
 
-	const char *fio_grf_name = FioGetFilename();
-	const char *t = strrchr(fio_grf_name, PATHSEPCHAR);
-	char *grf_name;
-	if (t == NULL) grf_name = strdup(fio_grf_name);
-	else           grf_name = strdup(t);
-	/* Make the string lowercase and strip extension */
-	char *t2 = strrchr(grf_name, '.');
-	if (t2 != NULL) *t2 = '\0';
-	strtolower(grf_name);
-
-	free((char *)sc->grf_name);
-	sc->grf_name = grf_name;
-
 	return true;
 }
 
 
 void DupSprite(SpriteID old_spr, SpriteID new_spr)
 {
+	SpriteCache *scnew = AllocateSpriteCache(new_spr); // may reallocate: so put it first
 	SpriteCache *scold = GetSpriteCache(old_spr);
-	SpriteCache *scnew = AllocateSpriteCache(new_spr);
 
 	scnew->file_slot = scold->file_slot;
 	scnew->file_pos = scold->file_pos;
 	scnew->ptr = NULL;
 	scnew->id = scold->id;
-	free((char *)scnew->grf_name);
-	scnew->grf_name = strdup(scold->grf_name);
-}
-
-
-void SkipSprites(uint count)
-{
-	for (; count > 0; --count) {
-		if (!ReadSpriteHeaderSkipData()) return;
-	}
 }
 
 
@@ -492,7 +469,6 @@
 	NextBlock(_spritecache_ptr)->size = 0;
 
 	/* Reset the spritecache 'pool' */
-	for (uint i = 0; i < _spritecache_items; i++) free((char *)_spritecache[i].grf_name);
 	free(_spritecache);
 	_spritecache_items = 0;
 	_spritecache = NULL;
--- a/src/spritecache.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spritecache.h	Sun Feb 03 20:17:54 2008 +0000
@@ -35,6 +35,5 @@
 
 bool LoadNextSprite(int load_index, byte file_index, uint file_sprite_id);
 void DupSprite(SpriteID old_spr, SpriteID new_spr);
-void SkipSprites(uint count);
 
 #endif /* SPRITECACHE_H */
--- a/src/spriteloader/grf.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spriteloader/grf.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -9,7 +9,7 @@
 #include "../core/alloc_func.hpp"
 #include "grf.hpp"
 
-bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, const char *filename, uint8 file_slot, uint32 file_pos)
+bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, uint32 file_pos)
 {
 	/* Open the right file and go to the correct position */
 	FioSeekToFile(file_slot, file_pos);
--- a/src/spriteloader/grf.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spriteloader/grf.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -12,7 +12,7 @@
 	/**
 	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
 	 */
-	bool LoadSprite(SpriteLoader::Sprite *sprite, const char *filename, uint8 file_slot, uint32 file_pos);
+	bool LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, uint32 file_pos);
 };
 
 #endif /* SPRITELOADER_GRF_HPP */
--- a/src/spriteloader/png.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spriteloader/png.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file grf.cpp */
+/** @file png.cpp */
 
 #ifdef WITH_PNG
 
@@ -181,8 +181,9 @@
 	return true;
 }
 
-bool SpriteLoaderPNG::LoadSprite(SpriteLoader::Sprite *sprite, const char *filename, uint8 file_slot, uint32 file_pos)
+bool SpriteLoaderPNG::LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, uint32 file_pos)
 {
+	const char *filename = FioGetFilename(file_slot);
 	if (!LoadPNG(sprite, filename, file_pos, false)) return false;
 	if (!LoadPNG(sprite, filename, file_pos, true)) return false;
 	return true;
--- a/src/spriteloader/png.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spriteloader/png.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -12,7 +12,7 @@
 	/**
 	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
 	 */
-	bool LoadSprite(SpriteLoader::Sprite *sprite, const char *filename, uint8 file_slot, uint32 file_pos);
+	bool LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, uint32 file_pos);
 };
 
 #endif /* SPRITELOADER_PNG_HPP */
--- a/src/spriteloader/spriteloader.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/spriteloader/spriteloader.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -26,7 +26,7 @@
 	/**
 	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
 	 */
-	virtual bool LoadSprite(SpriteLoader::Sprite *sprite, const char *filename, uint8 file_slot, uint32 file_pos) = 0;
+	virtual bool LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, uint32 file_pos) = 0;
 
 	virtual ~SpriteLoader() { }
 };
--- a/src/station.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,13 +7,11 @@
 #include "bridge_map.h"
 #include "debug.h"
 #include "station_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "station.h"
 #include "town.h"
 #include "news.h"
 #include "saveload.h"
-#include "player.h"
+#include "player_func.h"
 #include "airport.h"
 #include "sprite.h"
 #include "depot.h"
@@ -31,6 +29,11 @@
 #include "window_func.h"
 #include "date_func.h"
 #include "variables.h"
+#include "settings_type.h"
+#include "command_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 Station::Station(TileIndex tile)
 {
@@ -61,7 +64,7 @@
 {
 	DEBUG(station, cDebugCtorLevel, "I-%3d", index);
 
-	DeleteName(this->string_id);
+	free(this->name);
 	free(this->speclist);
 
 	if (CleaningPool()) return;
--- a/src/station.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,7 +6,6 @@
 #define STATION_H
 
 #include "airport.h"
-#include "player.h"
 #include "oldpool.h"
 #include "sprite.h"
 #include "road_type.h"
@@ -137,7 +136,8 @@
 	TileIndex airport_tile;
 	TileIndex dock_tile;
 	Town *town;
-	uint16 string_id;
+	StringID string_id;     ///< Default name (town area) of station
+	char *name;             ///< Custom name
 
 	ViewportSign sign;
 
--- a/src/station_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,15 +11,12 @@
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "station_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "station.h"
 #include "viewport_func.h"
 #include "command_func.h"
 #include "town.h"
 #include "news.h"
 #include "saveload.h"
-#include "player.h"
 #include "airport.h"
 #include "sprite.h"
 #include "depot.h"
@@ -45,6 +42,10 @@
 #include "date_func.h"
 #include "vehicle_func.h"
 #include "string_func.h"
+#include "signal_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 DEFINE_OLD_POOL_GENERIC(Station, Station)
 DEFINE_OLD_POOL_GENERIC(RoadStop, RoadStop)
@@ -699,7 +700,7 @@
  * @param w width of search area
  * @param h height of search area
  * @param flags operation to perform
- * @param invalid_dirs prohibited directions
+ * @param invalid_dirs prohibited directions (set of DiagDirections)
  * @param station StationID to be queried and returned if available
  * @param check_clear if clearing tile should be performed (in wich case, cost will be added)
  * @return the cost in case of success, or an error code if it failed.
@@ -734,11 +735,12 @@
 
 		int flat_z = z;
 		if (tileh != SLOPE_FLAT) {
-			/* need to check so the entrance to the station is not pointing at a slope. */
-			if ((invalid_dirs & 1 && !(tileh & SLOPE_NE) && (uint)w_cur == w) ||
-					(invalid_dirs & 2 && !(tileh & SLOPE_SE) && h_cur == 1) ||
-					(invalid_dirs & 4 && !(tileh & SLOPE_SW) && w_cur == 1) ||
-					(invalid_dirs & 8 && !(tileh & SLOPE_NW) && (uint)h_cur == h)) {
+			/* need to check so the entrance to the station is not pointing at a slope.
+			 * This must be valid for all station tiles, as the user can remove single station tiles. */
+			if ((HasBit(invalid_dirs, DIAGDIR_NE) && !(tileh & SLOPE_NE)) ||
+			    (HasBit(invalid_dirs, DIAGDIR_SE) && !(tileh & SLOPE_SE)) ||
+			    (HasBit(invalid_dirs, DIAGDIR_SW) && !(tileh & SLOPE_SW)) ||
+			    (HasBit(invalid_dirs, DIAGDIR_NW) && !(tileh & SLOPE_NW))) {
 				return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
 			}
 			cost.AddCost(_price.terraform);
@@ -797,14 +799,14 @@
 		 * the uniform-stations code wouldn't handle it well */
 		BEGIN_TILE_LOOP(t, st->trainst_w, st->trainst_h, st->train_tile)
 			if (!st->TileBelongsToRailStation(t)) { // there may be adjoined station
-				_error_message = STR_306D_NONUNIFORM_STATIONS_DISALLOWED;
+				_error_message = STR_NONUNIFORM_STATIONS_DISALLOWED;
 				return false;
 			}
 		END_TILE_LOOP(t, st->trainst_w, st->trainst_h, st->train_tile)
 
 		/* check so the orientation is the same */
 		if (GetRailStationAxis(st->train_tile) != axis) {
-			_error_message = STR_306D_NONUNIFORM_STATIONS_DISALLOWED;
+			_error_message = STR_NONUNIFORM_STATIONS_DISALLOWED;
 			return false;
 		}
 
@@ -824,7 +826,7 @@
 			tile -= TileDiffXY(curw, 0);
 			curw += w;
 		} else {
-			_error_message = STR_306D_NONUNIFORM_STATIONS_DISALLOWED;
+			_error_message = STR_NONUNIFORM_STATIONS_DISALLOWED;
 			return false;
 		}
 	}
@@ -905,7 +907,7 @@
 
 	/* Does the authority allow this? */
 	if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile_org)) return CMD_ERROR;
-	if (!ValParamRailtype(p2 & 0xF)) return CMD_ERROR;
+	if (!ValParamRailtype((RailType)(p2 & 0xF))) return CMD_ERROR;
 
 	/* unpack parameters */
 	Axis axis = Extract<Axis, 0>(p1);
@@ -1003,7 +1005,7 @@
 	}
 
 	/* Check if the given station class is valid */
-	if (GB(p2, 8, 8) >= STAT_CLASS_MAX) return CMD_ERROR;
+	if (GB(p2, 8, 8) >= GetNumStationClasses()) return CMD_ERROR;
 
 	/* Check if we can allocate a custom stationspec to this station */
 	const StationSpec *statspec = GetCustomStationSpec((StationClassID)GB(p2, 8, 8), GB(p2, 16, 8));
@@ -1072,7 +1074,7 @@
 
 				tile += tile_delta;
 			} while (--w);
-			SetSignalsOnBothDir(tile_org, track);
+			AddTrackToSignalBuffer(tile_org, track, _current_player);
 			YapfNotifyTrackLayoutChange(tile_org, track);
 			tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
 		} while (--numtracks);
@@ -1195,17 +1197,20 @@
 		/* Do not allow removing from stations if non-uniform stations are not enabled
 		 * The check must be here to give correct error message
  		 */
-		if (!_patches.nonuniform_stations) return_cmd_error(STR_306D_NONUNIFORM_STATIONS_DISALLOWED);
+		if (!_patches.nonuniform_stations) return_cmd_error(STR_NONUNIFORM_STATIONS_DISALLOWED);
 
 		/* If we reached here, the tile is valid so increase the quantity of tiles we will remove */
 		quantity++;
 
 		if (flags & DC_EXEC) {
+			/* read variables before the station tile is removed */
 			uint specindex = GetCustomStationSpecIndex(tile2);
 			Track track = GetRailStationTrack(tile2);
+			Owner owner = GetTileOwner(tile2);
+
 			DoClearSquare(tile2);
 			st->rect.AfterRemoveTile(st, tile2);
-			SetSignalsOnBothDir(tile2, track);
+			AddTrackToSignalBuffer(tile2, track, owner);
 			YapfNotifyTrackLayoutChange(tile2, track);
 
 			DeallocateSpecFromStation(st, specindex);
@@ -1256,15 +1261,17 @@
 	do {
 		int w_bak = w;
 		do {
-			// for nonuniform stations, only remove tiles that are actually train station tiles
+			/* for nonuniform stations, only remove tiles that are actually train station tiles */
 			if (st->TileBelongsToRailStation(tile)) {
 				if (!EnsureNoVehicleOnGround(tile))
 					return CMD_ERROR;
 				cost.AddCost(_price.remove_rail_station);
 				if (flags & DC_EXEC) {
+					/* read variables before the station tile is removed */
 					Track track = GetRailStationTrack(tile);
+					Owner owner = GetTileOwner(tile); // _current_player can be OWNER_WATER
 					DoClearSquare(tile);
-					SetSignalsOnBothDir(tile, track);
+					AddTrackToSignalBuffer(tile, track, owner);
 					YapfNotifyTrackLayoutChange(tile, track);
 				}
 			}
@@ -1351,13 +1358,23 @@
 		if (IsTileOwner(tile, OWNER_TOWN) && !_patches.road_stop_on_town_road) return_cmd_error(STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD);
 		if (GetRoadTileType(tile) != ROAD_TILE_NORMAL) return CMD_ERROR;
 
+		RoadTypes cur_rts = GetRoadTypes(tile);
+
+		/* there is a road, check if we can build road+tram stop over it */
+		if (HasBit(cur_rts, ROADTYPE_ROAD)) {
+			Owner road_owner = GetRoadOwner(tile, ROADTYPE_ROAD);
+			if (road_owner != OWNER_TOWN && road_owner != OWNER_NONE && !CheckOwnership(road_owner)) return CMD_ERROR;
+		}
+
+		/* there is a tram, check if we can build road+tram stop over it */
+		if (HasBit(cur_rts, ROADTYPE_TRAM)) {
+			Owner tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM);
+			if (tram_owner != OWNER_NONE && !CheckOwnership(tram_owner)) return CMD_ERROR;
+		}
+
 		/* Don't allow building the roadstop when vehicles are already driving on it */
 		if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
-		RoadTypes cur_rts = GetRoadTypes(tile);
-		if (GetRoadOwner(tile, ROADTYPE_ROAD) != OWNER_TOWN && HasBit(cur_rts, ROADTYPE_ROAD) && !CheckOwnership(GetRoadOwner(tile, ROADTYPE_ROAD))) return CMD_ERROR;
-		if (HasBit(cur_rts, ROADTYPE_TRAM) && !CheckOwnership(GetRoadOwner(tile, ROADTYPE_TRAM))) return CMD_ERROR;
-
 		/* Do not remove roadtypes! */
 		rts |= cur_rts;
 	}
@@ -1377,7 +1394,7 @@
 	/* give us a road stop in the list, and check if something went wrong */
 	RoadStop *road_stop = new RoadStop(tile);
 	if (road_stop == NULL) {
-		return_cmd_error(type ? STR_3008B_TOO_MANY_TRUCK_STOPS : STR_3008A_TOO_MANY_BUS_STOPS);
+		return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
 	}
 
 	/* ensure that in case of error (or no DC_EXEC) the new road stop gets deleted upon return */
@@ -1385,7 +1402,7 @@
 
 	if (st != NULL &&
 			GetNumRoadStopsInStation(st, RoadStop::BUS) + GetNumRoadStopsInStation(st, RoadStop::TRUCK) >= RoadStop::LIMIT) {
-		return_cmd_error(type ? STR_3008B_TOO_MANY_TRUCK_STOPS : STR_3008A_TOO_MANY_BUS_STOPS);
+		return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
 	}
 
 	/* In case of new station if DC_EXEC is NOT set we still need to create the station
@@ -1820,6 +1837,8 @@
 	if (!IsWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE);
 	if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
+	if (GetTileSlope(tile, NULL) != SLOPE_FLAT) return_cmd_error(STR_304B_SITE_UNSUITABLE);
+
 	/* allocate and initialize new station */
 	Station *st = new Station(tile);
 	if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
@@ -1842,7 +1861,7 @@
 
 		st->build_date = _date;
 
-		MakeBuoy(tile, st->index);
+		MakeBuoy(tile, st->index, GetWaterClass(tile));
 
 		UpdateStationVirtCoordDirty(st);
 		UpdateStationAcceptance(st, false);
@@ -1900,7 +1919,7 @@
 		/* We have to set the water tile's state to the same state as before the
 		 * buoy was placed. Otherwise one could plant a buoy on a canal edge,
 		 * remove it and flood the land (if the canal edge is at level 0) */
-		MakeWaterOrCanalDependingOnOwner(tile, GetTileOwner(tile));
+		MakeWaterKeepingClass(tile, GetTileOwner(tile));
 		MarkTileDirtyByTile(tile);
 
 		UpdateStationVirtCoordDirty(st);
@@ -1929,14 +1948,12 @@
 {
 	CommandCost cost;
 
-	DiagDirection direction;
-	switch (GetTileSlope(tile, NULL)) {
-		case SLOPE_SW: direction = DIAGDIR_NE; break;
-		case SLOPE_SE: direction = DIAGDIR_NW; break;
-		case SLOPE_NW: direction = DIAGDIR_SE; break;
-		case SLOPE_NE: direction = DIAGDIR_SW; break;
-		default: return_cmd_error(STR_304B_SITE_UNSUITABLE);
-	}
+	DiagDirection direction = GetInclinedSlopeDirection(GetTileSlope(tile, NULL));
+	if (direction == INVALID_DIAGDIR) return_cmd_error(STR_304B_SITE_UNSUITABLE);
+	direction = ReverseDiagDir(direction);
+
+	/* Docks cannot be placed on rapids */
+	if (IsWaterTile(tile)) return_cmd_error(STR_304B_SITE_UNSUITABLE);
 
 	if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) return CMD_ERROR;
 
@@ -1953,6 +1970,9 @@
 
 	if (MayHaveBridgeAbove(tile_cur) && IsBridgeAbove(tile_cur)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
+	/* Get the water class of the water tile before it is cleared.*/
+	WaterClass wc = GetWaterClass(tile_cur);
+
 	cost = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(cost)) return CMD_ERROR;
 
@@ -2010,7 +2030,7 @@
 
 		st->rect.BeforeAddRect(tile, _dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TRY);
 
-		MakeDock(tile, st->owner, st->index, direction);
+		MakeDock(tile, st->owner, st->index, direction, wc);
 
 		UpdateStationVirtCoordDirty(st);
 		UpdateStationAcceptance(st, false);
@@ -2035,7 +2055,7 @@
 
 	if (flags & DC_EXEC) {
 		DoClearSquare(tile1);
-		MakeWaterOrCanalDependingOnSurroundings(tile2, st->owner);
+		MakeWaterKeepingClass(tile2, st->owner);
 
 		st->rect.AfterRemoveTile(st, tile1);
 		st->rect.AfterRemoveTile(st, tile2);
@@ -2073,7 +2093,7 @@
 		total_offset = rti->total_offset;
 		custom_ground_offset = rti->custom_ground_offset;
 	} else {
-		roadtypes = GetRoadTypes(ti->tile);
+		roadtypes = IsRoadStop(ti->tile) ? GetRoadTypes(ti->tile) : ROADTYPES_NONE;
 		total_offset = 0;
 		custom_ground_offset = 0;
 	}
@@ -2140,7 +2160,14 @@
 		DrawTramCatenary(ti, axis == AXIS_X ? ROAD_X : ROAD_Y);
 	}
 
-	if (IsCanalBuoyTile(ti->tile)) DrawCanalWater(ti->tile);
+	if (IsBuoy(ti->tile)) {
+		/* Draw appropriate water edges */
+		switch (GetWaterClass(ti->tile)) {
+			case WATER_CLASS_SEA: break;
+			case WATER_CLASS_CANAL: DrawCanalWater(ti->tile, false); break;
+			case WATER_CLASS_RIVER: DrawRiverWater(ti, false); break;
+		}
+	}
 
 	const DrawTileSeqStruct *dtss;
 	foreach_draw_tile_seq(dtss, t->seq) {
@@ -2348,9 +2375,9 @@
 				!IsCompatibleTrainStationTile(tile + TileOffsByDiagDir(DirToDiagDir(v->direction)), tile)) {
 			StationID station_id = GetStationIndex(tile);
 
-			if ((!(v->current_order.flags & OF_NON_STOP) && !_patches.new_nonstop) ||
+			if ((!(v->current_order.flags & OFB_NON_STOP) && !_patches.new_nonstop) ||
 					(v->current_order.type == OT_GOTO_STATION && v->current_order.dest == station_id)) {
-				if (!(_patches.new_nonstop && v->current_order.flags & OF_NON_STOP) &&
+				if (!(_patches.new_nonstop && v->current_order.flags & OFB_NON_STOP) &&
 						v->current_order.type != OT_LEAVESTATION &&
 						v->last_station_visited != station_id) {
 					DiagDirection dir = DirToDiagDir(v->direction);
@@ -2624,19 +2651,13 @@
 
 	if (!IsUniqueStationName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	StringID str = AllocateName(_cmd_text, 6);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
-		StringID old_str = st->string_id;
-
-		st->string_id = str;
+		free(st->name);
+		st->name = strdup(_cmd_text);
+
 		UpdateStationVirtCoord(st);
-		DeleteName(old_str);
 		ResortStationLists();
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
@@ -2895,8 +2916,8 @@
 		switch (GetStationType(tile)) {
 			case STATION_RAIL:    return_cmd_error(STR_300B_MUST_DEMOLISH_RAILROAD);
 			case STATION_AIRPORT: return_cmd_error(STR_300E_MUST_DEMOLISH_AIRPORT_FIRST);
-			case STATION_TRUCK:   return_cmd_error(HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) ? STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION : STR_3047_MUST_DEMOLISH_TRUCK_STATION);
-			case STATION_BUS:     return_cmd_error(HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) ? STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION : STR_3046_MUST_DEMOLISH_BUS_STATION);
+			case STATION_TRUCK:   return_cmd_error(HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) ? STR_MUST_DEMOLISH_CARGO_TRAM_STATION : STR_3047_MUST_DEMOLISH_TRUCK_STATION);
+			case STATION_BUS:     return_cmd_error(HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) ? STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION : STR_3046_MUST_DEMOLISH_BUS_STATION);
 			case STATION_BUOY:    return_cmd_error(STR_306A_BUOY_IN_THE_WAY);
 			case STATION_DOCK:    return_cmd_error(STR_304D_MUST_DEMOLISH_DOCK_FIRST);
 			case STATION_OILRIG:
@@ -3045,6 +3066,7 @@
 	SLE_CONDNULL(1, 0, 3),
 
 	    SLE_VAR(Station, string_id,                  SLE_STRINGID),
+	SLE_CONDSTR(Station, name,                       SLE_STR, 0,                 84, SL_MAX_VERSION),
 	    SLE_VAR(Station, had_vehicle_of_type,        SLE_UINT16),
 
 	    SLE_VAR(Station, time_since_load,            SLE_UINT8),
--- a/src/station_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,18 +5,16 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "textbuf_gui.h"
 #include "station.h"
-#include "player.h"
+#include "player_func.h"
 #include "economy_func.h"
 #include "town.h"
 #include "command_func.h"
 #include "variables.h"
 #include "vehicle_gui.h"
-#include "table/sprites.h"
 #include "cargotype.h"
 #include "station_gui.h"
 #include "station.h"
@@ -25,6 +23,10 @@
 #include "window_func.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
 
 typedef int CDECL StationSortListingTypeFunction(const void*, const void*);
 
@@ -33,6 +35,8 @@
 static StationSortListingTypeFunction StationWaitingSorter;
 static StationSortListingTypeFunction StationRatingMaxSorter;
 
+bool _station_show_coverage;
+
 /**
  * Draw small boxes of cargo amount and ratings data at the given
  * coordinates. If amount exceeds 576 units, it is shown 'full', same
@@ -333,12 +337,14 @@
 			/* draw widgets, with player's name in the caption */
 			SetDParam(0, owner);
 			SetDParam(1, w->vscroll.count);
+
+			/* Set text of sort by dropdown */
+			w->widget[SLW_SORTDROPBTN].data = _station_sort_listing[sl->sort_type];
+
 			DrawWindowWidgets(w);
 
-			/* draw sorting criteria string */
-			DrawString(85, 26, _station_sort_listing[sl->sort_type], TC_BLACK);
 			/* draw arrow pointing up/down for ascending/descending sorting */
-			DoDrawString(sl->flags & SL_ORDER ? DOWNARROW : UPARROW, 69, 26, TC_BLACK);
+			DrawSortButtonState(w, SLW_SORTBY, sl->flags & SL_ORDER ? SBS_DOWN : SBS_UP);
 
 			int cg_ofst;
 			int x = 89;
@@ -477,7 +483,6 @@
 					SetWindowDirty(w);
 					break;
 
-				case SLW_SORTCRITERIA:
 				case SLW_SORTDROPBTN: // select sorting criteria dropdown menu
 					ShowDropDownMenu(w, _station_sort_listing, sl->sort_type, SLW_SORTDROPBTN, 0, 0);
 					break;
@@ -587,8 +592,7 @@
 {      WWT_PANEL,  RESIZE_RIGHT,    14,   117,   357,    14,    24, 0x0,               STR_NULL},                         // SLW_PAN_RIGHT
 
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,     0,    80,    25,    36, STR_SORT_BY,       STR_SORT_ORDER_TIP},               // SLW_SORTBY
-{      WWT_PANEL,   RESIZE_NONE,    14,    81,   232,    25,    36, 0x0,               STR_SORT_CRITERIA_TIP},            // SLW_SORTCRITERIA
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,   233,   243,    25,    36, STR_0225,          STR_SORT_CRITERIA_TIP},            // SLW_SORTDROPBTN
+{   WWT_DROPDOWN,   RESIZE_NONE,    14,    81,   243,    25,    36, 0x0,               STR_SORT_CRITERIA_TIP},            // SLW_SORTDROPBTN
 {      WWT_PANEL,  RESIZE_RIGHT,    14,   244,   357,    25,    36, 0x0,               STR_NULL},                         // SLW_PAN_SORT_RIGHT
 {   WIDGETS_END},
 };
@@ -660,39 +664,21 @@
 	}
 }
 
-static const Widget _station_view_expanded_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,          STR_018B_CLOSE_WINDOW},                // SVW_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   236,     0,    13, STR_300A_0,        STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   237,   248,     0,    13, 0x0,               STR_STICKY_BUTTON},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   236,    14,    65, 0x0,               STR_NULL},                             // SVW_WAITING
-{  WWT_SCROLLBAR,   RESIZE_NONE,    14,   237,   248,    14,    65, 0x0,               STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,               STR_NULL},                             // SVW_ACCEPTLIST
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   248,    66,   197, 0x0,               STR_NULL},                             // SVW_RATINGLIST
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    63,   198,   209, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // SVW_LOCATION
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,    64,   128,   198,   209, STR_3033_ACCEPTS,  STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO}, // SVW_ACCEPTS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   129,   192,   198,   209, STR_0130_RENAME,   STR_3055_CHANGE_NAME_OF_STATION},      // SVW_RENAME
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   193,   206,   198,   209, STR_TRAIN,         STR_SCHEDULED_TRAINS_TIP },            // SVW_TRAINS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   207,   220,   198,   209, STR_LORRY,         STR_SCHEDULED_ROAD_VEHICLES_TIP },     // SVW_ROADVEHS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   221,   234,   198,   209, STR_PLANE,         STR_SCHEDULED_AIRCRAFT_TIP },          // SVW_PLANES
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   235,   248,   198,   209, STR_SHIP,          STR_SCHEDULED_SHIPS_TIP },             // SVW_SHIPS
-{   WIDGETS_END},
-};
-
 static const Widget _station_view_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,          STR_018B_CLOSE_WINDOW},                // SVW_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   236,     0,    13, STR_300A_0,        STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   237,   248,     0,    13, 0x0,               STR_STICKY_BUTTON},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   236,    14,    65, 0x0,               STR_NULL},                             // SVW_WAITING
-{  WWT_SCROLLBAR,   RESIZE_NONE,    14,   237,   248,    14,    65, 0x0,               STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   248,    66,    97, 0x0,               STR_NULL},                             // SVW_ACCEPTLIST
-{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,               STR_NULL},                             // SVW_RATINGLIST
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    63,    98,   109, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // SVW_LOCATION
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,    64,   128,    98,   109, STR_3032_RATINGS,  STR_3054_SHOW_STATION_RATINGS},        // SVW_RATINGS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   129,   192,    98,   109, STR_0130_RENAME,   STR_3055_CHANGE_NAME_OF_STATION},      // SVW_RENAME
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   193,   206,    98,   109, STR_TRAIN,         STR_SCHEDULED_TRAINS_TIP },            // SVW_TRAINS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   207,   220,    98,   109, STR_LORRY,         STR_SCHEDULED_ROAD_VEHICLES_TIP },     // SVW_ROADVEHS
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   221,   234,    98,   109, STR_PLANE,         STR_SCHEDULED_AIRCRAFT_TIP },          // SVW_PLANES
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   235,   248,    98,   109, STR_SHIP,          STR_SCHEDULED_SHIPS_TIP },             // SVW_SHIPS
+{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   236,     0,    13, STR_300A_0,        STR_018C_WINDOW_TITLE_DRAG_THIS},
+{  WWT_STICKYBOX,     RESIZE_LR,    14,   237,   248,     0,    13, 0x0,               STR_STICKY_BUTTON},
+{      WWT_PANEL,     RESIZE_RB,    14,     0,   236,    14,    65, 0x0,               STR_NULL},                             // SVW_WAITING
+{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   237,   248,    14,    65, 0x0,               STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{      WWT_PANEL,    RESIZE_RTB,    14,     0,   248,    66,    97, 0x0,               STR_NULL},                             // SVW_ACCEPTLIST / SVW_RATINGLIST
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,    59,    98,   109, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // SVW_LOCATION
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,    60,   120,    98,   109, STR_3032_RATINGS,  STR_3054_SHOW_STATION_RATINGS},        // SVW_RATINGS / SVW_ACCEPTS
+{ WWT_PUSHTXTBTN,    RESIZE_RTB,    14,   121,   180,    98,   109, STR_0130_RENAME,   STR_3055_CHANGE_NAME_OF_STATION},      // SVW_RENAME
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   181,   194,    98,   109, STR_TRAIN,         STR_SCHEDULED_TRAINS_TIP },            // SVW_TRAINS
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   195,   208,    98,   109, STR_LORRY,         STR_SCHEDULED_ROAD_VEHICLES_TIP },     // SVW_ROADVEHS
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   209,   222,    98,   109, STR_PLANE,         STR_SCHEDULED_AIRCRAFT_TIP },          // SVW_PLANES
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   223,   236,    98,   109, STR_SHIP,          STR_SCHEDULED_SHIPS_TIP },             // SVW_SHIPS
+{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   237,   248,    98,   109, 0x0,               STR_RESIZE_BUTTON},
 {   WIDGETS_END},
 };
 
@@ -704,9 +690,9 @@
  * @param x x on-screen coordinate where to start with drawing icons
  * @param y y coordinate
  */
-static void DrawCargoIcons(CargoID i, uint waiting, int x, int y)
+static void DrawCargoIcons(CargoID i, uint waiting, int x, int y, uint width)
 {
-	uint num = min((waiting + 5) / 10, 23); // maximum is 23 icons so it won't overflow
+	uint num = min((waiting + 5) / 10, width / 10); // maximum is width / 10 icons so it won't overflow
 	if (num == 0) return;
 
 	const CargoSpec *cs = GetCargo(i);
@@ -727,6 +713,20 @@
 	} while (--num);
 }
 
+struct CargoData {
+	CargoID cargo;
+	StationID source;
+	uint count;
+
+	CargoData(CargoID cargo, StationID source, uint count) :
+		cargo(cargo),
+		source(source),
+		count(count)
+	{ }
+};
+
+typedef std::list<CargoData> CargoDataList;
+
 /**
  * Redraws whole StationView window
  *
@@ -736,20 +736,40 @@
 {
 	StationID station_id = w->window_number;
 	const Station* st = GetStation(station_id);
-	uint num;     ///< number of cargo types waiting at station
 	int x, y;     ///< coordinates used for printing waiting/accepted/rating of cargo
 	int pos;      ///< = w->vscroll.pos
 	StringID str;
+	CargoDataList cargolist;
 
 	/* count types of cargos waiting in station */
-	num = 1;
 	for (CargoID i = 0; i < NUM_CARGO; i++) {
 		if (!st->goods[i].cargo.Empty()) {
-			num++;
-			if (st->goods[i].cargo.Source() != station_id) num++;
+			/* Add an entry for total amount of cargo of this type waiting. */
+			cargolist.push_back(CargoData(i, INVALID_STATION, st->goods[i].cargo.Count()));
+
+			/* Add an entry for each distinct cargo source. */
+			const CargoList::List *packets = st->goods[i].cargo.Packets();
+			for (CargoList::List::const_iterator it = packets->begin(); it != packets->end(); it++) {
+				const CargoPacket *cp = *it;
+				if (cp->source != station_id) {
+					bool added = false;
+
+					/* Check if we already have this source in the list */
+					for (CargoDataList::iterator jt = cargolist.begin(); jt != cargolist.end(); jt++) {
+						CargoData *cd = &(*jt);
+						if (cd->cargo == i && cd->source == cp->source) {
+							cd->count += cp->count;
+							added = true;
+							break;
+						}
+					}
+
+					if (!added) cargolist.push_back(CargoData(i, cp->source, cp->count));
+				}
+			}
 		}
 	}
-	SetVScrollCount(w, num); // update scrollbar
+	SetVScrollCount(w, cargolist.size() + 1); // update scrollbar
 
 	/* disable some buttons */
 	w->SetWidgetDisabledState(SVW_RENAME,   st->owner != _local_player);
@@ -766,6 +786,9 @@
 	y = 15;
 	pos = w->vscroll.pos;
 
+	uint width = w->widget[SVW_WAITING].right - w->widget[SVW_WAITING].left - 4;
+	int maxrows = w->vscroll.cap;
+
 	if (--pos < 0) {
 		str = STR_00D0_NOTHING;
 		for (CargoID i = 0; i < NUM_CARGO; i++) {
@@ -776,37 +799,27 @@
 		y += 10;
 	}
 
-	for (CargoID i = 0; i < NUM_CARGO && pos > -5; i++) {
-		uint waiting = st->goods[i].cargo.Count();
-		if (waiting == 0) continue;
-
-		if (st->goods[i].cargo.Source() == station_id) {
-			if (--pos < 0) {
-				DrawCargoIcons(i, waiting, x, y);
-				SetDParam(1, waiting);
-				SetDParam(0, i);
-				DrawStringRightAligned(x + 234, y, STR_0009, TC_FROMSTRING);
-				y += 10;
-			}
-		} else {
-			/* enroute */
-			if (--pos < 0) {
-				DrawCargoIcons(i, waiting, x, y);
-				SetDParam(1, waiting);
-				SetDParam(0, i);
-				DrawStringRightAligned(x + 234, y, STR_000A_EN_ROUTE_FROM, TC_FROMSTRING);
-				y += 10;
+	for (CargoDataList::const_iterator it = cargolist.begin(); it != cargolist.end() && pos > -maxrows; ++it) {
+		if (--pos < 0) {
+			const CargoData *cd = &(*it);
+			if (cd->source == INVALID_STATION) {
+				/* Heading */
+				DrawCargoIcons(cd->cargo, cd->count, x, y, width);
+				SetDParam(0, cd->cargo);
+				SetDParam(1, cd->count);
+				DrawStringRightAligned(x + width, y, STR_0009, TC_FROMSTRING);
+			} else {
+				SetDParam(0, cd->cargo);
+				SetDParam(1, cd->count);
+				SetDParam(2, cd->source);
+				DrawStringRightAlignedTruncated(x + width, y, STR_EN_ROUTE_FROM, TC_FROMSTRING, width);
 			}
 
-			if (pos > -5 && --pos < 0) {
-				SetDParam(0, st->goods[i].cargo.Source());
-				DrawStringRightAligned(x + 234, y, STR_000B, TC_FROMSTRING);
-				y += 10;
-			}
+			y += 10;
 		}
 	}
 
-	if (IsWindowOfPrototype(w, _station_view_widgets)) { // small window with list of accepted cargo
+	if (w->widget[SVW_ACCEPTS].data == STR_3032_RATINGS) { // small window with list of accepted cargo
 		char *b = _userstring;
 		bool first = true;
 
@@ -834,11 +847,13 @@
 		/* Make sure we detect any buffer overflow */
 		assert(b < endof(_userstring));
 
-		DrawStringMultiLine(2, 67, STR_SPEC_USERSTRING, 245);
+		DrawStringMultiLine(2, w->widget[SVW_ACCEPTLIST].top + 1, STR_SPEC_USERSTRING, w->widget[SVW_ACCEPTLIST].right - w->widget[SVW_ACCEPTLIST].left);
 	} else { // extended window with list of cargo ratings
-		DrawString(2, 67, STR_3034_LOCAL_RATING_OF_TRANSPORT, TC_FROMSTRING);
+		y = w->widget[SVW_RATINGLIST].top + 1;
 
-		y = 77;
+		DrawString(2, y, STR_3034_LOCAL_RATING_OF_TRANSPORT, TC_FROMSTRING);
+		y += 10;
+
 		for (CargoID i = 0; i < NUM_CARGO; i++) {
 			const CargoSpec *cs = GetCargo(i);
 			if (!cs->IsValid()) continue;
@@ -878,13 +893,16 @@
 				case SVW_RATINGS:
 					SetWindowDirty(w);
 
-					/* toggle height/widget set */
-					if (IsWindowOfPrototype(w, _station_view_expanded_widgets)) {
-						AssignWidgetToWindow(w, _station_view_widgets);
-						w->height = 110;
+					if (w->widget[SVW_RATINGS].data == STR_3032_RATINGS) {
+						/* Switch to ratings view */
+						w->widget[SVW_RATINGS].data = STR_3033_ACCEPTS;
+						w->widget[SVW_RATINGS].tooltips = STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO;
+						ResizeWindowForWidget(w, SVW_ACCEPTLIST, 0, 100);
 					} else {
-						AssignWidgetToWindow(w, _station_view_expanded_widgets);
-						w->height = 210;
+						/* Switch to accepts view */
+						w->widget[SVW_RATINGS].data = STR_3032_RATINGS;
+						w->widget[SVW_RATINGS].tooltips = STR_3054_SHOW_STATION_RATINGS;
+						ResizeWindowForWidget(w, SVW_ACCEPTLIST, 0, -100);
 					}
 
 					SetWindowDirty(w);
@@ -943,6 +961,11 @@
 			DeleteWindowById(WC_AIRCRAFT_LIST, wno);
 			break;
 		}
+
+		case WE_RESIZE:
+			if (e->we.sizing.diff.x != 0) ResizeButtons(w, SVW_LOCATION, SVW_RENAME);
+			w->vscroll.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
+			break;
 	}
 }
 
@@ -950,7 +973,7 @@
 static const WindowDesc _station_view_desc = {
 	WDP_AUTO, WDP_AUTO, 249, 110, 249, 110,
 	WC_STATION_VIEW, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
 	_station_view_widgets,
 	StationViewWndProc
 };
@@ -968,4 +991,5 @@
 	PlayerID owner = GetStation(w->window_number)->owner;
 	if (owner != OWNER_NONE) w->caption_color = owner;
 	w->vscroll.cap = 5;
+	w->resize.step_height = 10;
 }
--- a/src/station_gui.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station_gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -24,11 +24,10 @@
 	SLW_PAN_RIGHT      = 15, ///< Panel right of list of cargo types
 
 	SLW_SORTBY         = 16, ///< 'Sort by' button - reverse sort direction
-	SLW_SORTCRITERIA   = 17, ///< Button - list of criteria
-	SLW_SORTDROPBTN    = 18, ///< Dropdown button
-	SLW_PAN_SORT_RIGHT = 19, ///< Panel right of sorting options
+	SLW_SORTDROPBTN    = 17, ///< Dropdown button
+	SLW_PAN_SORT_RIGHT = 18, ///< Panel right of sorting options
 
-	SLW_CARGOSTART     = 20, ///< Widget numbers used for list of cargo types (not present in _player_stations_widgets)
+	SLW_CARGOSTART     = 19, ///< Widget numbers used for list of cargo types (not present in _player_stations_widgets)
 };
 
 /** Enum for StationView, referring to _station_view_widgets and _station_view_expanded_widgets */
@@ -37,15 +36,16 @@
 	SVW_CAPTION    =  1, ///< Caption of the window
 	SVW_WAITING    =  3, ///< List of waiting cargo
 	SVW_ACCEPTLIST =  5, ///< List of accepted cargos
-	SVW_RATINGLIST =  6, ///< Ratings of cargos
-	SVW_LOCATION   =  7, ///< 'Location' button
-	SVW_RATINGS    =  8, ///< 'Ratings' button
-	SVW_ACCEPTS    =  8, ///< 'Accepts' button
-	SVW_RENAME     =  9, ///< 'Rename' button
-	SVW_TRAINS     = 10, ///< List of scheduled trains button
+	SVW_RATINGLIST =  5, ///< Ratings of cargos
+	SVW_LOCATION   =  6, ///< 'Location' button
+	SVW_RATINGS    =  7, ///< 'Ratings' button
+	SVW_ACCEPTS    =  7, ///< 'Accepts' button
+	SVW_RENAME     =  8, ///< 'Rename' button
+	SVW_TRAINS     =  9, ///< List of scheduled trains button
 	SVW_ROADVEHS,        ///< List of scheduled road vehs button
 	SVW_PLANES,          ///< List of scheduled planes button
 	SVW_SHIPS,           ///< List of scheduled ships button
+	SVW_RESIZE,          ///< Resize button
 };
 
 /* sorter stuff */
@@ -58,7 +58,9 @@
 	SCT_ALL
 };
 
-void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad);
+int DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad);
 void CheckRedrawStationCoverage(const Window *w);
 
+extern bool _station_show_coverage;
+
 #endif /* STATION_GUI_H */
--- a/src/station_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/station_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "rail_map.h"
 #include "road_map.h"
+#include "water_map.h"
 #include "station.h"
 #include "rail.h"
 
@@ -155,16 +156,6 @@
 	return IsTileType(t, MP_STATION) && IsBuoy(t);
 }
 
-static inline bool IsCanalBuoyTile(TileIndex t)
-{
-	return IsBuoyTile(t) && !IsTileOwner(t, OWNER_WATER);
-}
-
-static inline bool IsSeaBuoyTile(TileIndex t)
-{
-	return IsBuoyTile(t) && IsTileOwner(t, OWNER_WATER);
-}
-
 static inline bool IsHangarTile(TileIndex t)
 {
 	return IsTileType(t, MP_STATION) && IsHangar(t);
@@ -190,6 +181,7 @@
 		IsRailwayStationTile(t1) &&
 		IsCompatibleRail(GetRailType(t1), GetRailType(t2)) &&
 		GetRailStationAxis(t1) == GetRailStationAxis(t2) &&
+		GetStationIndex(t1) == GetStationIndex(t2) &&
 		!IsStationTileBlocked(t1);
 }
 
@@ -286,18 +278,20 @@
 	MakeStation(t, o, sid, STATION_AIRPORT, section);
 }
 
-static inline void MakeBuoy(TileIndex t, StationID sid)
+static inline void MakeBuoy(TileIndex t, StationID sid, WaterClass wc)
 {
 	/* Make the owner of the buoy tile the same as the current owner of the
 	 * water tile. In this way, we can reset the owner of the water to its
 	 * original state when the buoy gets removed. */
 	MakeStation(t, GetTileOwner(t), sid, STATION_BUOY, 0);
+	SetWaterClass(t, wc);
 }
 
-static inline void MakeDock(TileIndex t, Owner o, StationID sid, DiagDirection d)
+static inline void MakeDock(TileIndex t, Owner o, StationID sid, DiagDirection d, WaterClass wc)
 {
 	MakeStation(t, o, sid, STATION_DOCK, d);
 	MakeStation(t + TileOffsByDiagDir(d), o, sid, STATION_DOCK, GFX_DOCK_BASE_WATER_PART + DiagDirToAxis(d));
+	SetWaterClass(t + TileOffsByDiagDir(d), wc);
 }
 
 static inline void MakeOilrig(TileIndex t, StationID sid)
--- a/src/stdafx.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/stdafx.h	Sun Feb 03 20:17:54 2008 +0000
@@ -4,7 +4,16 @@
 
 #ifndef STDAFX_H
 #define STDAFX_H
-#define DEBUG_DUMP_COMMANDS
+
+#if defined(__NDS__)
+	#include <nds/jtypes.h>
+	/* NDS' types for uint32/int32 are based on longs, which causes
+	 * trouble all over the place in OpenTTD. */
+	#define uint32 uint32_ugly_hack
+	#define int32 int32_ugly_hack
+	typedef unsigned int uint32_ugly_hack;
+	typedef signed int int32_ugly_hack;
+#endif /* __NDS__ */
 
 /* It seems that we need to include stdint.h before anything else
  * We need INT64_MAX, which for most systems comes from stdint.h. However, MSVC
@@ -147,19 +156,17 @@
 	#pragma warning(disable: 4761)  // integral size mismatch in argument : conversion supplied
 	#pragma warning(disable: 4200)  // nonstandard extension used : zero-sized array in struct/union
 
-	#if (_MSC_VER >= 1400)                   // MSVC 2005 safety checks
-		#pragma warning(disable: 4996)   // 'strdup' was declared deprecated
-		#define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
-		#pragma warning(disable: 6308)   // code analyzer: 'realloc' might return null pointer: assigning null pointer to 't_ptr', which is passed as an argument to 'realloc', will cause the original memory block to be leaked
-		#pragma warning(disable: 6011)   // code analyzer: Dereferencing NULL pointer 'pfGetAddrInfo': Lines: 995, 996, 998, 999, 1001
-		#pragma warning(disable: 6326)   // code analyzer: potential comparison of a constant with another constant
-		#pragma warning(disable: 6031)   // code analyzer: Return value ignored: 'ReadFile'
-		#pragma warning(disable: 6255)   // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead
-		#pragma warning(disable: 6246)   // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ...
-	#else /* _MSC_VER >= 1400  ( <1400 for MSVC2003) */
-		#pragma warning(disable: 4288)   // nonstandard extension used : 'y' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope
-		#pragma warning(disable: 4292)   // compiler limit : terminating debug information emission for enum 'StringIdEnum' with member 'STR_801D_COAL_CAR'
-	#endif /* _MSC_VER >= 1400 */
+	#if (_MSC_VER < 1400)                   // MSVC 2005 safety checks
+		#error "Only MSVC 2005 or higher are supported. MSVC 2003 and earlier are not!. Upgrade your compiler."
+	#endif /* (_MSC_VER < 1400) */
+	#pragma warning(disable: 4996)   // 'strdup' was declared deprecated
+	#define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
+	#pragma warning(disable: 6308)   // code analyzer: 'realloc' might return null pointer: assigning null pointer to 't_ptr', which is passed as an argument to 'realloc', will cause the original memory block to be leaked
+	#pragma warning(disable: 6011)   // code analyzer: Dereferencing NULL pointer 'pfGetAddrInfo': Lines: 995, 996, 998, 999, 1001
+	#pragma warning(disable: 6326)   // code analyzer: potential comparison of a constant with another constant
+	#pragma warning(disable: 6031)   // code analyzer: Return value ignored: 'ReadFile'
+	#pragma warning(disable: 6255)   // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead
+	#pragma warning(disable: 6246)   // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ...
 
 	#include <malloc.h> // alloca()
 	#define NORETURN __declspec(noreturn)
@@ -250,7 +257,7 @@
 	typedef unsigned int uint;
 #endif
 
-#if !defined(__BEOS__) /* Already defined on BEOS */
+#if !defined(__BEOS__) && !defined(__NDS__) /* Already defined on BEOS and NDS */
 	typedef unsigned char    uint8;
 	typedef   signed char     int8;
 	typedef unsigned short   uint16;
@@ -259,7 +266,7 @@
 	typedef   signed int      int32;
 	typedef unsigned __int64 uint64;
 	typedef   signed __int64  int64;
-#endif
+#endif /* !__BEOS__ && !__NDS__ */
 
 #if !defined(WITH_PERSONAL_DIR)
 	#define PERSONAL_DIR ""
@@ -302,18 +309,18 @@
 
 #define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__)
 
-#if defined(MORPHOS)
-	/* MorphOS doesn't have C++ conformant _stricmp... */
+#if defined(MORPHOS) || defined(__NDS__)
+	/* MorphOS and NDS don't have C++ conformant _stricmp... */
 	#define _stricmp stricmp
 #elif defined(OPENBSD)
 	/* OpenBSD uses strcasecmp(3) */
 	#define _stricmp strcasecmp
 #endif
 
-#if !defined(MORPHOS) && !defined(OPENBSD)
-	/* MorphOS & OpenBSD don't know wchars, the rest does :( */
+#if !defined(MORPHOS) && !defined(OPENBSD) && !defined(__NDS__)
+	/* NDS, MorphOS & OpenBSD don't know wchars, the rest does :( */
 	#define HAS_WCHAR
-#endif /* !defined(MORPHOS) && !defined(OPENBSD) */
+#endif /* !defined(MORPHOS) && !defined(OPENBSD) && !defined(__NDS__) */
 
 #if !defined(MAX_PATH)
 	#define MAX_PATH 260
--- a/src/strgen/strgen.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/strgen/strgen.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,10 +1,11 @@
 /* $Id$ */
 
 #include "../stdafx.h"
-#include "../table/control_codes.h"
 #include "../core/alloc_func.hpp"
 #include "../core/endian_func.hpp"
 #include "../string_func.h"
+#include "../table/control_codes.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
--- a/src/string.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/string.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,12 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/control_codes.h"
 #include "debug.h"
 #include "core/alloc_func.hpp"
 #include "string_func.h"
 
+#include "table/control_codes.h"
+
 #include <stdarg.h>
 #include <ctype.h> // required for tolower()
 
--- a/src/string_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/string_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file string.h Functions related to low-level strings. */
+/** @file string_func.h Functions related to low-level strings. */
 
 #ifndef STRING_FUNC_H
 #define STRING_FUNC_H
--- a/src/strings.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/strings.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "currency.h"
-#include "table/strings.h"
 #include "namegen.h"
 #include "station.h"
 #include "town.h"
@@ -15,7 +14,6 @@
 #include "industry.h"
 #include "variables.h"
 #include "newgrf_text.h"
-#include "table/control_codes.h"
 #include "music.h"
 #include "industry.h"
 #include "fileio.h"
@@ -34,9 +32,14 @@
 #include "date_func.h"
 #include "vehicle_base.h"
 #include "string_func.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "fios.h"
+#include "settings_type.h"
+#include "video/video_driver.hpp"
 
-/* for opendir/readdir/closedir */
-# include "fios.h"
+#include "table/strings.h"
+#include "table/control_codes.h"
 
 DynamicLanguages _dynlang;
 char _userstring[128];
@@ -101,9 +104,14 @@
  * the indices will be reused. */
 static int _bind_index;
 
-static const char *GetStringPtr(StringID string)
+const char *GetStringPtr(StringID string)
 {
-	return _langpack_offs[_langtab_start[string >> 11] + (string & 0x7FF)];
+	switch (GB(string, 11, 5)) {
+		case 28: return GetGRFStringPtr(GB(string, 0, 11));
+		case 29: return GetGRFStringPtr(GB(string, 0, 11) + 0x0800);
+		case 30: return GetGRFStringPtr(GB(string, 0, 11) + 0x1000);
+		default: return _langpack_offs[_langtab_start[string >> 11] + (string & 0x7FF)];
+	}
 }
 
 /** The highest 8 bits of string contain the "case index".
@@ -122,7 +130,6 @@
 
 	uint index = GB(string,  0, 11);
 	uint tab   = GB(string, 11,  5);
-	char buff[512];
 
 	switch (tab) {
 		case 4:
@@ -136,8 +143,8 @@
 			break;
 
 		case 15:
-			/* User defined name */
-			return GetName(buffr, index, last);
+			/* Old table for custom names. This is no longer used */
+			error("Incorrect conversion of custom name string.");
 
 		case 26:
 			/* Include string within newgrf text (format code 81) */
@@ -148,16 +155,13 @@
 			break;
 
 		case 28:
-			GetGRFString(buff, index, lastof(buff));
-			return FormatString(buffr, buff, argv, 0, last);
+			return FormatString(buffr, GetGRFStringPtr(index), argv, 0, last);
 
 		case 29:
-			GetGRFString(buff, index + 0x800, lastof(buff));
-			return FormatString(buffr, buff, argv, 0, last);
+			return FormatString(buffr, GetGRFStringPtr(index + 0x0800), argv, 0, last);
 
 		case 30:
-			GetGRFString(buff, index + 0x1000, lastof(buff));
-			return FormatString(buffr, buff, argv, 0, last);
+			return FormatString(buffr, GetGRFStringPtr(index + 0x1000), argv, 0, last);
 
 		case 31:
 			/* dynamic strings. These are NOT to be passed through the formatter,
@@ -693,8 +697,7 @@
 			}
 
 			case SCC_GENDER_LIST: { // {G 0 Der Die Das}
-				char buffr[512];
-				const char *s = GetStringWithArgs(buffr, argv_orig[(byte)*str++], argv, last); // contains the string that determines gender.
+				const char *s = GetStringPtr(argv_orig[(byte)*str++]); // contains the string that determines gender.
 				int len;
 				int gender = 0;
 				if (s != NULL) {
@@ -819,17 +822,20 @@
 				break;
 
 			case SCC_WAYPOINT_NAME: { // {WAYPOINT}
-				int64 temp[2];
 				Waypoint *wp = GetWaypoint(GetInt32(&argv));
-				StringID str;
-				if (wp->string != STR_NULL) {
-					str = wp->string;
+
+				if (!wp->IsValid()) { // waypoint doesn't exist anymore
+					buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last);
+				} else if (wp->name != NULL) {
+					buff = strecpy(buff, wp->name, last);
 				} else {
+					int64 temp[2];
 					temp[0] = wp->town_index;
 					temp[1] = wp->town_cn + 1;
-					str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL;
+					StringID str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL;
+
+					buff = GetStringWithArgs(buff, str, temp, last);
 				}
-				buff = GetStringWithArgs(buff, str, temp, last);
 				break;
 			}
 
@@ -838,6 +844,8 @@
 
 				if (!st->IsValid()) { // station doesn't exist anymore
 					buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last);
+				} else if (st->name != NULL) {
+					buff = strecpy(buff, st->name, last);
 				} else {
 					int64 temp[3];
 					temp[0] = STR_TOWN;
@@ -857,7 +865,9 @@
 				temp[0] = t->townnameparts;
 				uint32 grfid = t->townnamegrfid;
 
-				if (grfid == 0) {
+				if (t->name != NULL) {
+					buff = strecpy(buff, t->name, last);
+				} else if (grfid == 0) {
 					/* Original town name */
 					buff = GetStringWithArgs(buff, t->townnametype, temp, last);
 				} else {
@@ -875,44 +885,75 @@
 
 			case SCC_GROUP_NAME: { // {GROUP}
 				const Group *g = GetGroup(GetInt32(&argv));
-				int64 args[1];
 
 				assert(g->IsValid());
 
-				args[0] = g->index;
-				buff = GetStringWithArgs(buff, IsCustomName(g->string_id) ? g->string_id : STR_GROUP_NAME_FORMAT, args, last);
+				if (g->name != NULL) {
+					buff = strecpy(buff, g->name, last);
+				} else {
+					int64 args[1];
 
+					args[0] = g->index;
+					buff = GetStringWithArgs(buff, STR_GROUP_NAME_FORMAT, args, last);
+				}
 				break;
 			}
 
 			case SCC_ENGINE_NAME: { // {ENGINE}
 				EngineID engine = (EngineID)GetInt32(&argv);
+				const Engine *e = GetEngine(engine);
 
-				buff = GetString(buff, GetCustomEngineName(engine), last);
+				if (e->name != NULL) {
+					buff = strecpy(buff, e->name, last);
+				} else {
+					buff = GetStringWithArgs(buff, EngInfo(engine)->string_id, NULL, last);
+				}
 				break;
 			}
 
 			case SCC_VEHICLE_NAME: { // {VEHICLE}
 				const Vehicle *v = GetVehicle(GetInt32(&argv));
 
-				int64 args[1];
-				args[0] = v->unitnumber;
+				if (v->name != NULL) {
+					buff = strecpy(buff, v->name, last);
+				} else {
+					int64 args[1];
+					args[0] = v->unitnumber;
 
-				buff = GetStringWithArgs(buff, v->string_id, args, last);
+					StringID str;
+					switch (v->type) {
+						default: NOT_REACHED();
+						case VEH_TRAIN:    str = STR_SV_TRAIN_NAME; break;
+						case VEH_ROAD:     str = STR_SV_ROADVEH_NAME; break;
+						case VEH_SHIP:     str = STR_SV_SHIP_NAME; break;
+						case VEH_AIRCRAFT: str = STR_SV_AIRCRAFT_NAME; break;
+					}
+
+					buff = GetStringWithArgs(buff, str, args, last);
+				}
 				break;
 			}
 
 			case SCC_SIGN_NAME: { // {SIGN}
 				const Sign *si = GetSign(GetInt32(&argv));
-				buff = GetString(buff, si->str, last);
+				if (si->name != NULL) {
+					buff = strecpy(buff, si->name, last);
+				} else {
+					buff = GetStringWithArgs(buff, STR_280A_SIGN, NULL, last);
+				}
 				break;
 			}
 
 			case SCC_COMPANY_NAME: { // {COMPANY}
 				const Player *p = GetPlayer((PlayerID)GetInt32(&argv));
-				int64 args[1];
-				args[0] = p->name_2;
-				buff = GetStringWithArgs(buff, p->name_1, args, last);
+
+				if (p->name != NULL) {
+					buff = strecpy(buff, p->name, last);
+				} else {
+					int64 args[1];
+					args[0] = p->name_2;
+					buff = GetStringWithArgs(buff, p->name_1, args, last);
+				}
 				break;
 			}
 
@@ -930,9 +971,14 @@
 
 			case SCC_PLAYER_NAME: { // {PLAYERNAME}
 				const Player *p = GetPlayer((PlayerID)GetInt32(&argv));
-				int64 args[1];
-				args[0] = p->president_name_2;
-				buff = GetStringWithArgs(buff, p->president_name_1, args, last);
+
+				if (p->president_name != NULL) {
+					buff = strecpy(buff, p->president_name, last);
+				} else {
+					int64 args[1];
+					args[0] = p->president_name_2;
+					buff = GetStringWithArgs(buff, p->president_name_1, args, last);
+				}
 				break;
 			}
 
@@ -1183,7 +1229,6 @@
 #else /* ENABLE_NETWORK */
 static inline void SortNetworkLanguages() {}
 #endif /* ENABLE_NETWORK */
-extern void SortTownGeneratorNames();
 
 bool ReadLanguagePack(int lang_index)
 {
@@ -1241,7 +1286,6 @@
 	_dynlang.curr = lang_index;
 	SetCurrentGrfLangID(_langpack->isocode);
 	SortNetworkLanguages();
-	SortTownGeneratorNames();
 	return true;
 }
 
@@ -1273,14 +1317,6 @@
 }
 #endif /* !(defined(WIN32) || defined(__APPLE__)) */
 
-static int CDECL LanguageCompareFunc(const void *a, const void *b)
-{
-	const Language *cmp1 = (const Language*)a;
-	const Language *cmp2 = (const Language*)b;
-
-	return strcmp(cmp1->file, cmp2->file);
-}
-
 int CDECL StringIDSorter(const void *a, const void *b)
 {
 	const StringID va = *(const StringID*)a;
@@ -1387,9 +1423,6 @@
 	}
 	if (language_count == 0) error("No available language packs (invalid versions?)");
 
-	/* Sort the language names alphabetically */
-	qsort(files, language_count, sizeof(Language), LanguageCompareFunc);
-
 	/* Acquire the locale of the current system */
 	const char *lang = GetCurrentLocale("LC_MESSAGES");
 	if (lang == NULL) lang = "en_GB";
@@ -1408,7 +1441,6 @@
 
 		dl->ent[dl->num].file = files[i].file;
 		dl->ent[dl->num].name = strdup(hdr.name);
-		dl->dropdown[dl->num] = SPECSTR_LANGUAGE_START + dl->num;
 
 		/* We are trying to find a default language. The priority is by
 		 * configuration file, local environment and last, if nothing found,
@@ -1424,8 +1456,6 @@
 
 		dl->num++;
 	}
-	/* Terminate the dropdown list */
-	dl->dropdown[dl->num] = INVALID_STRING_ID;
 
 	if (dl->num == 0) error("Invalid version of language packs");
 
--- a/src/strings_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/strings_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -9,6 +9,7 @@
 
 char *InlineString(char *buf, StringID string);
 char *GetString(char *buffr, StringID string, const char *last);
+const char *GetStringPtr(StringID string);
 
 extern char _userstring[128];
 
@@ -69,6 +70,12 @@
 
 int CDECL StringIDSorter(const void *a, const void *b);
 
+/** Key comparison function for std::map */
+struct StringIDCompare
+{
+	bool operator()(StringID s1, StringID s2) const { return StringIDSorter(&s1, &s2) < 0; }
+};
+
 void CheckForMissingGlyphsInLoadedLanguagePack();
 
 #endif /* STRINGS_TYPE_H */
--- a/src/strings_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/strings_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -20,11 +20,10 @@
 
 /** Used for dynamic language support */
 struct DynamicLanguages {
-	int num;                         ///< Number of languages
-	int curr;                        ///< Currently selected language index
-	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
-	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
-	Language ent[MAX_LANG];          ///< Information about the languages
+	int num;                  ///< Number of languages
+	int curr;                 ///< Currently selected language index
+	char curr_file[MAX_PATH]; ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
+	Language ent[MAX_LANG];   ///< Information about the languages
 };
 
 // special string constants
--- a/src/subsidy_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/subsidy_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,11 +4,9 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "station.h"
 #include "industry.h"
 #include "town.h"
-#include "player.h"
 #include "economy_func.h"
 #include "variables.h"
 #include "cargotype.h"
@@ -18,6 +16,8 @@
 #include "viewport_func.h"
 #include "gfx_func.h"
 
+#include "table/strings.h"
+
 static void HandleSubsidyClick(int y)
 {
 	const Subsidy *s;
--- a/src/table/build_industry.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/build_industry.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1176,7 +1176,7 @@
 #define MI(tbl, sndc, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \
            c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
 	 {tbl, lengthof(tbl), min(255, d), 0, d, pc, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m,            \
-	 {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
+	 {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, GRFMappedStringID(in, 0), GRFMappedStringID(intx, 0), GRFMappedStringID(s1, 0), GRFMappedStringID(s2, 0), GRFMappedStringID(s3, 0), GRFMappedStringID(STR_UNDEFINED, 0), {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
 	 sndc, snd, 0, 0, true, {INVALID_INDUSTRYTYPE, 0, NULL, NULL, INVALID_INDUSTRYTYPE}}
 	/* Format:
 	   tile table                              count and sounds table
--- a/src/table/cargo_const.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/cargo_const.h	Sun Feb 03 20:17:54 2008 +0000
@@ -3,7 +3,7 @@
 /* Table of all default cargo types */
 
 #define MK(bt, label, c, e, f, g, h, fr, te, ks1, ks2, ks3, ks4, ks5, l, m) \
-          {bt, label, 0, c, c, e, f, {g, h}, fr, te, 0, 0, ks1, ks2, ks3, ks4, ks5, l, m, NULL}
+          {bt, label, 0, c, c, e, f, {g, h}, fr, te, 0, 0, GRFMappedStringID(ks1, 0), GRFMappedStringID(ks2, 0), GRFMappedStringID(ks3, 0), GRFMappedStringID(ks4, 0), GRFMappedStringID(ks5, 0), l, m, NULL}
 static const CargoSpec _default_cargo[] = {
 	MK(  0, 'PASS', 152,  1, 3185,  0,  24, false, TE_PASSENGERS,
 		STR_000F_PASSENGERS,     STR_002F_PASSENGER,      STR_PASSENGERS, STR_QUANTITY_PASSENGERS,   STR_ABBREV_PASSENGERS,
--- a/src/table/control_codes.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/control_codes.h	Sun Feb 03 20:17:54 2008 +0000
@@ -116,18 +116,19 @@
 	 * These are mapped to the original glyphs */
 	SCC_LESSTHAN       = SCC_SPRITE_START + 0x3C,
 	SCC_GREATERTHAN    = SCC_SPRITE_START + 0x3E,
-	SCC_UPARROW        = SCC_SPRITE_START + 0x80,
-	SCC_SMALLUPARROW   = SCC_SPRITE_START + 0x90,
-	SCC_SMALLDOWNARROW = SCC_SPRITE_START + 0x91,
-	SCC_TRAIN          = SCC_SPRITE_START + 0x94,
-	SCC_LORRY          = SCC_SPRITE_START + 0x95,
-	SCC_BUS            = SCC_SPRITE_START + 0x96,
-	SCC_PLANE          = SCC_SPRITE_START + 0x97,
-	SCC_SHIP           = SCC_SPRITE_START + 0x98,
+	SCC_UPARROW        = SCC_SPRITE_START + 0xA0,
 	SCC_DOWNARROW      = SCC_SPRITE_START + 0xAA,
 	SCC_CHECKMARK      = SCC_SPRITE_START + 0xAC,
 	SCC_CROSS          = SCC_SPRITE_START + 0xAD,
 	SCC_RIGHTARROW     = SCC_SPRITE_START + 0xAF,
+	SCC_TRAIN          = SCC_SPRITE_START + 0xB4,
+	SCC_LORRY          = SCC_SPRITE_START + 0xB5,
+	SCC_BUS            = SCC_SPRITE_START + 0xB6,
+	SCC_PLANE          = SCC_SPRITE_START + 0xB7,
+	SCC_SHIP           = SCC_SPRITE_START + 0xB8,
+	SCC_SUPERSCRIPT_M1 = SCC_SPRITE_START + 0xB9,
+	SCC_SMALLUPARROW   = SCC_SPRITE_START + 0xBC,
+	SCC_SMALLDOWNARROW = SCC_SPRITE_START + 0xBD,
 };
 
 #endif /* CONTROL_CODES_H */
--- a/src/table/engines.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/engines.h	Sun Feb 03 20:17:54 2008 +0000
@@ -17,7 +17,7 @@
  * @note the 0x80 in parameter b sets the "is carriage bit"
  * @note the 5 between d and e is the load amount
  */
-#define MK(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, e, 0, 8, 0, 0, 0 }
+#define MK(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, e, 0, 8, 0, 0, 0, STR_EMPTY }
 
 /** Writes the properties of a train carriage into the EngineInfo struct.
  * @param a Introduction date
@@ -28,7 +28,7 @@
  * @see MK
  * @note the 5 between d and e is the load amount
  */
-#define MW(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b | 0x80, 5, e, 0, 8, 0, 0, 0 }
+#define MW(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b | 0x80, 5, e, 0, 8, 0, 0, 0, STR_EMPTY }
 
 /** Writes the properties of a ship into the EngineInfo struct.
  * @param a Introduction date
@@ -39,7 +39,7 @@
  * @see MK
  * @note the 10 between d and e is the load amount
  */
-#define MS(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, e, 0, 8, 0, 0, 0 }
+#define MS(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, e, 0, 8, 0, 0, 0, STR_EMPTY }
 
 /** Writes the properties of an aeroplane into the EngineInfo struct.
  * @param a Introduction date
@@ -50,7 +50,7 @@
  * @see MK
  * @note the 20 between d and e is the load amount
  */
-#define MA(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, 0, 8, 0, 0, 0 }
+#define MA(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, 0, 8, 0, 0, 0, STR_EMPTY }
 
 // Climates
 // T = Temperate
@@ -345,7 +345,7 @@
  * @param m engclass
  * Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76
  */
-#define RVI(a, b, c, d, e, f, g, h, i, j, k, l, m) { a, b, c, {l}, d, e, f, g, h, m, i, j, k, 0, 0, 0, 0, 76, 0 }
+#define RVI(a, b, c, d, e, f, g, h, i, j, k, l, m) { a, b, c, {l}, d, e, f, g, h, m, i, j, k, 0, 0, 0, 0, 0, 76, 0 }
 #define M RAILVEH_MULTIHEAD
 #define W RAILVEH_WAGON
 #define G RAILVEH_SINGLEHEAD
--- a/src/table/files.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/files.h	Sun Feb 03 20:17:54 2008 +0000
@@ -33,8 +33,7 @@
 		{ "TRGT.GRF",      {0xfc, 0xde, 0x1d, 0x7e, 0x8a, 0x74, 0x19, 0x7d, 0x72, 0xa6, 0x26, 0x95, 0x88, 0x4b, 0x90, 0x9e} }
 	},
 	{ "SAMPLE.CAT",    {0x42, 0x2e, 0xa3, 0xdd, 0x07, 0x4d, 0x28, 0x59, 0xbb, 0x51, 0x63, 0x9a, 0x6e, 0x0e, 0x85, 0xda} },
-	{ "CHARS.GRF",     {0x5f, 0x2e, 0xbf, 0x05, 0xb6, 0x12, 0x65, 0x81, 0xd2, 0x10, 0xa9, 0x19, 0x62, 0x41, 0x70, 0x64} },
-	{ "OPENTTDD.GRF",  {0x9a, 0x26, 0xc9, 0xd1, 0xa2, 0x39, 0xb8, 0xaa, 0x57, 0xac, 0x0f, 0xf0, 0xe4, 0x4b, 0x37, 0xb2} }
+	{ "OPENTTDD.GRF",  {0x2c, 0x3a, 0x86, 0x3b, 0xe0, 0x42, 0xb1, 0x65, 0xba, 0x59, 0xcb, 0x99, 0x9c, 0x3f, 0xe5, 0x3e} }
 };
 
 static FileList files_win = {
@@ -47,6 +46,5 @@
 		{ "TRGTR.GRF",     {0xde, 0x53, 0x65, 0x05, 0x17, 0xfe, 0x66, 0x1c, 0xea, 0xa3, 0x13, 0x8c, 0x6e, 0xdb, 0x0e, 0xb8} }
 	},
 	{ "SAMPLE.CAT",    {0x92, 0x12, 0xe8, 0x1e, 0x72, 0xba, 0xdd, 0x4b, 0xbe, 0x1e, 0xae, 0xae, 0x66, 0x45, 0x8e, 0x10} },
-	{ "CHARS.GRF",     {0x5f, 0x2e, 0xbf, 0x05, 0xb6, 0x12, 0x65, 0x81, 0xd2, 0x10, 0xa9, 0x19, 0x62, 0x41, 0x70, 0x64} },
-	{ "OPENTTDW.GRF",  {0xa1, 0x9c, 0xaa, 0xfc, 0x6b, 0xd2, 0x09, 0xc3, 0xd4, 0x84, 0x33, 0x43, 0x3f, 0xd1, 0xbd, 0xd5} }
+	{ "OPENTTDW.GRF",  {0x1d, 0x9b, 0x03, 0x5e, 0x5d, 0x87, 0xef, 0x21, 0x0f, 0xe3, 0x6e, 0x6d, 0x12, 0xa1, 0x85, 0xfb} }
 };
--- a/src/table/landscape_sprite.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/landscape_sprite.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,7 +1,6 @@
 /* $Id$ */
 
 enum {
-	SKIP = 0xFFFE,
 	END  = 0xFFFF
 };
 
--- a/src/table/namegen.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/namegen.h	Sun Feb 03 20:17:54 2008 +0000
@@ -2,8 +2,7 @@
 
 /** @file table/namegen.h Namepart tables for the town name generator */
 
-#include "../stdafx.h"
-#include "../openttd.h"
+#include "../core/enum_type.hpp"
 
 static const char *name_original_english_1[] = {
 	"Great ",
--- a/src/table/railtypes.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/railtypes.h	Sun Feb 03 20:17:54 2008 +0000
@@ -44,10 +44,10 @@
 		SPR_RAIL_SNOW_OFFSET,
 
 		/* Powered railtypes */
-		1 << RAILTYPE_RAIL | 1 << RAILTYPE_ELECTRIC,
+		RAILTYPES_RAIL | RAILTYPES_ELECTRIC,
 
 		/* Compatible railtypes */
-		1 << RAILTYPE_RAIL | 1 << RAILTYPE_ELECTRIC,
+		RAILTYPES_RAIL | RAILTYPES_ELECTRIC,
 
 		/* main offset */
 		0,
@@ -100,10 +100,10 @@
 		SPR_RAIL_SNOW_OFFSET,
 
 		/* Powered railtypes */
-		1 << RAILTYPE_ELECTRIC,
+		RAILTYPES_ELECTRIC,
 
 		/* Compatible railtypes */
-		1 << RAILTYPE_ELECTRIC | 1 << RAILTYPE_RAIL,
+		RAILTYPES_ELECTRIC | RAILTYPES_RAIL,
 
 		/* main offset */
 		0,
@@ -152,10 +152,10 @@
 		SPR_MONO_SNOW_OFFSET,
 
 		/* Powered railtypes */
-		1 << RAILTYPE_MONO,
+		RAILTYPES_MONO,
 
 		/* Compatible Railtypes */
-		1 << RAILTYPE_MONO,
+		RAILTYPES_MONO,
 
 		/* main offset */
 		82,
@@ -204,10 +204,10 @@
 		SPR_MGLV_SNOW_OFFSET,
 
 		/* Powered railtypes */
-		1 << RAILTYPE_MAGLEV,
+		RAILTYPES_MAGLEV,
 
 		/* Compatible Railtypes */
-		1 << RAILTYPE_MAGLEV,
+		RAILTYPES_MAGLEV,
 
 		/* main offset */
 		164,
--- a/src/table/sprites.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/sprites.h	Sun Feb 03 20:17:54 2008 +0000
@@ -49,7 +49,7 @@
 
 	/* Extra graphic spritenumbers */
 	SPR_OPENTTD_BASE     = 4896,
-	OPENTTD_SPRITE_COUNT = 136,
+	OPENTTD_SPRITE_COUNT = 138,
 
 	/* Halftile-selection sprites */
 	SPR_HALFTILE_SELECTION_FLAT = SPR_OPENTTD_BASE,
@@ -1017,6 +1017,7 @@
 	SPR_IMG_TRANSMITTER     = 4086,
 	SPR_IMG_LEVEL_LAND      = SPR_OPENTTD_BASE + 91,
 	SPR_IMG_BUILD_CANAL     = SPR_OPENTTD_BASE + 88,
+	SPR_IMG_BUILD_RIVER     = SPR_OPENTTD_BASE + 136,
 	SPR_IMG_BUILD_LOCK      = SPR_CANALS_BASE + 64,
 	SPR_IMG_PAUSE           = 726,
 	SPR_IMG_FASTFORWARD     = SPR_OPENTTD_BASE + 90,
@@ -1319,6 +1320,7 @@
 	SPR_CURSOR_DOCK           = 3668,
 	SPR_CURSOR_CANAL          = SPR_OPENTTD_BASE + 89,
 	SPR_CURSOR_LOCK           = SPR_OPENTTD_BASE + 87,
+	SPR_CURSOR_RIVER          = SPR_OPENTTD_BASE + 137,
 
 	/* shared road & rail cursors */
 	SPR_CURSOR_BRIDGE         = 2593,
--- a/src/table/town_land.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/town_land.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1803,7 +1803,7 @@
  * @see HouseSpec
  */
 #define MS(mnd, mxd, p, rc, bn, rr, mg, ca1, ca2, ca3, bf, ba, cg1, cg2, cg3) \
-	{mnd, mxd, p, rc, bn, rr, mg, {ca1, ca2, ca3}, {cg1, cg2, cg3}, bf, ba, true, \
+	{mnd, mxd, p, rc, GRFMappedStringID(bn, 0), rr, mg, {ca1, ca2, ca3}, {cg1, cg2, cg3}, bf, ba, true, \
 	 0, NULL, 0, 0, {0, 0, 0, 0}, 16, NO_EXTRA_FLAG, HOUSE_NO_CLASS, 0, 2, 0, 0, 0, NULL}
 /** House specifications from original data */
 static const HouseSpec _original_house_specs[] = {
--- a/src/table/unicode.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/table/unicode.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,6 +6,10 @@
 	byte key;   ///< Character index of sprite
 };
 
+enum {
+	CLRA = 0, ///< Identifier to clear all glyphs at this codepoint
+	CLRL = 1, ///< Identifier to clear glyphs for large font at this codepoint
+};
 
 /* Default unicode mapping table for sprite based glyphs.
  * This table allows us use unicode characters even though the glyphs don't
@@ -13,9 +17,40 @@
  * This is not used for FreeType rendering */
 
 static DefaultUnicodeMapping _default_unicode_map[] = {
+	{ 0x00A0, 0x20 }, /* Non-breaking space / Up arrow */
+	{ 0x00A4, CLRL }, /* Currency sign */
+	{ 0x00A6, CLRL }, /* Broken bar */
+	{ 0x00A7, CLRL }, /* Section sign */
+	{ 0x00A8, CLRL }, /* Diaeresis */
+	{ 0x00A9, CLRL }, /* Copyright sign */
+	{ 0x00AA, CLRA }, /* Feminine ordinal indicator / Down arrow */
+	{ 0x00AC, CLRA }, /* Not sign / Tick mark */
+	{ 0x00AD, 0x20 }, /* Soft hyphen / X mark */
+	{ 0x00AF, CLRA }, /* Macron / Right arrow */
+	{ 0x00B0, CLRL }, /* Degree sign */
+	{ 0x00B1, CLRL }, /* Plus-Minus sign */
+	{ 0x00B2, CLRL }, /* Superscript 2 */
+	{ 0x00B3, CLRL }, /* Superscript 3 */
+	{ 0x00B4, CLRA }, /* Acute accent / Train symbol */
+	{ 0x00B5, CLRA }, /* Micro sign / Truck symbol */
+	{ 0x00B6, CLRA }, /* Pilcrow sign / Bus symbol */
+	{ 0x00B7, CLRA }, /* Middle dot / Aircraft symbol */
+	{ 0x00B8, CLRA }, /* Cedilla / Ship symbol */
+	{ 0x00B9, CLRA }, /* Superscript 1 / Superscript -1 */
+	{ 0x00BA, CLRL }, /* Masculine ordinal indicator */
+	{ 0x00BC, CLRA }, /* One quarter / Small up arrow */
+	{ 0x00BD, CLRA }, /* One half / Small down arrow */
+	{ 0x00BE, CLRL }, /* Three quarters */
+	{ 0x00D0, CLRL }, /* Capital letter eth */
+	{ 0x00D7, CLRL }, /* Multiplication sign */
+	{ 0x00D8, CLRL }, /* Capital letter O with stroke */
+	{ 0x00D9, CLRL }, /* Capital letter U with grave */
+	{ 0x00DE, CLRL }, /* Capital letter thorn */
+	{ 0x00E6, CLRL }, /* Small letter ae */
+	{ 0x00F0, CLRL }, /* Small letter eth */
+	{ 0x00F7, CLRL }, /* Divison sign */
+	{ 0x00F8, CLRL }, /* Small letter o with stroke */
+	{ 0x00FE, CLRL }, /* Small letter thorn */
+	{ 0x0178, 0x9F }, /* Capital letter Y with diaeresis */
 	{ 0x010D, 0x63 }, /* Small letter c with caron */
-	{ 0x0160, 0xA6 }, /* Capital letter s with caron */
-	{ 0x0161, 0xA8 }, /* Small letter s with caron */
-	{ 0x017E, 0xB8 }, /* Small letter z with caron */
-	{ 0x20AC, 0xA4 }, /* Euro symbol */
 };
--- a/src/terraform_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/terraform_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "strings_type.h"
-#include "table/strings.h"
 #include "command_func.h"
 #include "tile_map.h"
 #include "tunnel_map.h"
@@ -14,6 +13,8 @@
 #include "functions.h"
 #include "economy_func.h"
 
+#include "table/strings.h"
+
 /*
  * In one terraforming command all four corners of a initial tile can be raised/lowered (though this is not available to the player).
  * The maximal amount of height modifications is archieved when raising a complete flat land from sea level to MAX_TILE_HEIGHT or vice versa.
--- a/src/terraform_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/terraform_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,9 +6,8 @@
 #include "openttd.h"
 #include "bridge_map.h"
 #include "clear_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "viewport_func.h"
@@ -21,6 +20,12 @@
 #include "station.h"
 #include "unmovable_map.h"
 #include "textbuf_gui.h"
+#include "genworld.h"
+#include "settings_type.h"
+#include "tree_map.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 void CcTerraform(bool success, TileIndex tile, uint32 p1, uint32 p2)
 {
@@ -52,7 +57,7 @@
 	_generating_world = true;
 	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
 		if (GetTileType(tile) != MP_WATER) {
-			SetTropicZone(tile, (_ctrl_pressed) ? TROPICZONE_INVALID : TROPICZONE_DESERT);
+			SetTropicZone(tile, (_ctrl_pressed) ? TROPICZONE_NORMAL : TROPICZONE_DESERT);
 			DoCommandP(tile, 0, 0, NULL, CMD_LANDSCAPE_CLEAR);
 			MarkTileDirtyByTile(tile);
 		}
@@ -79,8 +84,10 @@
 
 	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
 		switch (GetTileType(tile)) {
+			case MP_TREES:
+				if (GetTreeGround(tile) == TREE_GROUND_SHORE) continue;
+			/* FALL THROUGH */
 			case MP_CLEAR:
-			case MP_TREES:
 				MakeClear(tile, CLEAR_ROCKS, 3);
 				break;
 
@@ -128,6 +135,9 @@
 		case DDSP_CREATE_WATER:
 			DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_BUILD_CANALS));
 			break;
+		case DDSP_CREATE_RIVER:
+			DoCommandP(end_tile, start_tile, 2, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_BUILD_CANALS));
+			break;
 		default:
 			return false;
 	}
@@ -378,7 +388,8 @@
 
 static void PlaceProc_LightHouse(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
+	/* not flat || not(trees || clear without bridge above) */
+	if (GetTileSlope(tile, NULL) != SLOPE_FLAT || !(IsTileType(tile, MP_TREES) || (IsTileType(tile, MP_CLEAR) && !IsBridgeAbove(tile)))) {
 		return;
 	}
 
@@ -389,7 +400,8 @@
 
 static void PlaceProc_Transmitter(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
+	/* not flat || not(trees || clear without bridge above) */
+	if (GetTileSlope(tile, NULL) != SLOPE_FLAT || !(IsTileType(tile, MP_TREES) || (IsTileType(tile, MP_CLEAR) && !IsBridgeAbove(tile)))) {
 		return;
 	}
 
@@ -408,23 +420,29 @@
 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_WATER);
 }
 
+static void PlaceProc_RiverArea(TileIndex tile)
+{
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_RIVER);
+}
+
 static const Widget _scen_edit_land_gen_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_0223_LAND_GENERATION,  STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_STICKYBOX,   RESIZE_NONE,     7,   170,   181,     0,    13, STR_NULL,                  STR_STICKY_BUTTON},
-{     WWT_PANEL,   RESIZE_NONE,     7,     0,   181,    14,   102, 0x0,                       STR_NULL},
+{   WWT_CAPTION,   RESIZE_NONE,     7,    11,   191,     0,    13, STR_0223_LAND_GENERATION,  STR_018C_WINDOW_TITLE_DRAG_THIS},
+{ WWT_STICKYBOX,   RESIZE_NONE,     7,   192,   203,     0,    13, STR_NULL,                  STR_STICKY_BUTTON},
+{     WWT_PANEL,   RESIZE_NONE,     7,     0,   203,    14,   102, 0x0,                       STR_NULL},
 {    WWT_IMGBTN,   RESIZE_NONE,    14,     2,    23,    16,    37, SPR_IMG_DYNAMITE,          STR_018D_DEMOLISH_BUILDINGS_ETC},
 {    WWT_IMGBTN,   RESIZE_NONE,    14,    24,    45,    16,    37, SPR_IMG_TERRAFORM_DOWN,    STR_018E_LOWER_A_CORNER_OF_LAND},
 {    WWT_IMGBTN,   RESIZE_NONE,    14,    46,    67,    16,    37, SPR_IMG_TERRAFORM_UP,      STR_018F_RAISE_A_CORNER_OF_LAND},
 {    WWT_IMGBTN,   RESIZE_NONE,    14,    68,    89,    16,    37, SPR_IMG_LEVEL_LAND,        STR_LEVEL_LAND_TOOLTIP},
 {    WWT_IMGBTN,   RESIZE_NONE,    14,    90,   111,    16,    37, SPR_IMG_BUILD_CANAL,       STR_CREATE_LAKE},
-{    WWT_IMGBTN,   RESIZE_NONE,    14,   112,   134,    16,    37, SPR_IMG_ROCKS,             STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
-{    WWT_IMGBTN,   RESIZE_NONE,    14,   135,   157,    16,    37, SPR_IMG_LIGHTHOUSE_DESERT, STR_NULL}, // XXX - dynamic
-{    WWT_IMGBTN,   RESIZE_NONE,    14,   158,   179,    16,    37, SPR_IMG_TRANSMITTER,       STR_028E_PLACE_TRANSMITTER},
-{    WWT_IMGBTN,   RESIZE_NONE,    14,   139,   150,    45,    56, SPR_ARROW_UP,              STR_0228_INCREASE_SIZE_OF_LAND_AREA},
-{    WWT_IMGBTN,   RESIZE_NONE,    14,   139,   150,    58,    69, SPR_ARROW_DOWN,            STR_0229_DECREASE_SIZE_OF_LAND_AREA},
-{   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   157,    76,    87, STR_SE_NEW_WORLD,          STR_022A_GENERATE_RANDOM_LAND},
-{   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   157,    89,   100, STR_022B_RESET_LANDSCAPE,  STR_RESET_LANDSCAPE_TOOLTIP},
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   112,   133,    16,    37, SPR_IMG_BUILD_RIVER,       STR_CREATE_RIVER},
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   134,   156,    16,    37, SPR_IMG_ROCKS,             STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   157,   179,    16,    37, SPR_IMG_LIGHTHOUSE_DESERT, STR_NULL}, // XXX - dynamic
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   180,   201,    16,    37, SPR_IMG_TRANSMITTER,       STR_028E_PLACE_TRANSMITTER},
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    45,    56, SPR_ARROW_UP,              STR_0228_INCREASE_SIZE_OF_LAND_AREA},
+{    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    58,    69, SPR_ARROW_DOWN,            STR_0229_DECREASE_SIZE_OF_LAND_AREA},
+{   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   179,    76,    87, STR_SE_NEW_WORLD,          STR_022A_GENERATE_RANDOM_LAND},
+{   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   179,    89,   100, STR_022B_RESET_LANDSCAPE,  STR_RESET_LANDSCAPE_TOOLTIP},
 {   WIDGETS_END},
 };
 
@@ -468,19 +486,24 @@
 	HandlePlacePushButton(w, 8, SPR_CURSOR_CANAL, VHM_RECT, PlaceProc_WaterArea);
 }
 
+static void EditorTerraformClick_RiverArea(Window *w)
+{
+	HandlePlacePushButton(w, 9, SPR_CURSOR_RIVER, VHM_RECT, PlaceProc_RiverArea);
+}
+
 static void EditorTerraformClick_RockyArea(Window *w)
 {
-	HandlePlacePushButton(w, 9, SPR_CURSOR_ROCKY_AREA, VHM_RECT, PlaceProc_RockyArea);
+	HandlePlacePushButton(w, 10, SPR_CURSOR_ROCKY_AREA, VHM_RECT, PlaceProc_RockyArea);
 }
 
 static void EditorTerraformClick_DesertLightHouse(Window *w)
 {
-	HandlePlacePushButton(w, 10, SPR_CURSOR_LIGHTHOUSE, VHM_RECT, (_opt.landscape == LT_TROPIC) ? PlaceProc_DesertArea : PlaceProc_LightHouse);
+	HandlePlacePushButton(w, 11, SPR_CURSOR_LIGHTHOUSE, VHM_RECT, (_opt.landscape == LT_TROPIC) ? PlaceProc_DesertArea : PlaceProc_LightHouse);
 }
 
 static void EditorTerraformClick_Transmitter(Window *w)
 {
-	HandlePlacePushButton(w, 11, SPR_CURSOR_TRANSMITTER, VHM_RECT, PlaceProc_Transmitter);
+	HandlePlacePushButton(w, 12, SPR_CURSOR_TRANSMITTER, VHM_RECT, PlaceProc_Transmitter);
 }
 
 static const uint16 _editor_terraform_keycodes[] = {
@@ -491,7 +514,8 @@
 	'R',
 	'T',
 	'Y',
-	'U'
+	'U',
+	'I'
 };
 
 typedef void OnButtonClick(Window *w);
@@ -501,6 +525,7 @@
 	EditorTerraformClick_RaiseBigLand,
 	EditorTerraformClick_LevelLand,
 	EditorTerraformClick_WaterArea,
+	EditorTerraformClick_RiverArea,
 	EditorTerraformClick_RockyArea,
 	EditorTerraformClick_DesertLightHouse,
 	EditorTerraformClick_Transmitter
@@ -539,8 +564,8 @@
 {
 	switch (e->event) {
 		case WE_CREATE:
-			/* XXX - lighthouse button is widget 10!! Don't forget when changing */
-			w->widget[10].tooltips = (_opt.landscape == LT_TROPIC) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
+			/* XXX - lighthouse button is widget 11!! Don't forget when changing */
+			w->widget[11].tooltips = (_opt.landscape == LT_TROPIC) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
 			break;
 
 		case WE_PAINT: {
@@ -551,7 +576,7 @@
 
 			assert(n != 0);
 			do {
-				DrawSprite(SPR_WHITE_POINT, PAL_NONE, 77 + coords[0], 55 + coords[1]);
+				DrawSprite(SPR_WHITE_POINT, PAL_NONE, 88 + coords[0], 55 + coords[1]);
 				coords += 2;
 			} while (--n);
 
@@ -572,11 +597,11 @@
 
 		case WE_CLICK:
 			switch (e->we.click.widget) {
-				case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
+				case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12:
 					_editor_terraform_button_proc[e->we.click.widget - 4](w);
 					break;
-				case 12: case 13: { // Increase/Decrease terraform size
-					int size = (e->we.click.widget == 12) ? 1 : -1;
+				case 13: case 14: { // Increase/Decrease terraform size
+					int size = (e->we.click.widget == 13) ? 1 : -1;
 					w->HandleButtonClick(e->we.click.widget);
 					size += _terraform_size;
 
@@ -586,11 +611,11 @@
 					SndPlayFx(SND_15_BEEP);
 					SetWindowDirty(w);
 				} break;
-				case 14: // gen random land
-					w->HandleButtonClick(14);
+				case 15: // gen random land
+					w->HandleButtonClick(15);
 					ShowCreateScenario();
 					break;
-				case 15: // Reset landscape
+				case 16: // Reset landscape
 					ShowQuery(
 						STR_022C_RESET_LANDSCAPE,
 						STR_RESET_LANDSCAPE_CONFIRMATION_TEXT,
@@ -606,7 +631,7 @@
 					w->RaiseWidget(i);
 					w->InvalidateWidget(i);
 				}
-				if (i == 3) i = 11;
+				if (i == 3) i = 12;
 			}
 			break;
 
@@ -624,6 +649,7 @@
 					case DDSP_CREATE_ROCKS:
 					case DDSP_CREATE_DESERT:
 					case DDSP_CREATE_WATER:
+					case DDSP_CREATE_RIVER:
 					case DDSP_RAISE_AND_LEVEL_AREA:
 					case DDSP_LOWER_AND_LEVEL_AREA:
 					case DDSP_LEVEL_AREA:
@@ -642,7 +668,7 @@
 }
 
 static const WindowDesc _scen_edit_land_gen_desc = {
-	WDP_AUTO, WDP_AUTO, 182, 103, 182, 103,
+	WDP_AUTO, WDP_AUTO, 204, 103, 204, 103,
 	WC_SCEN_LAND_GEN, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
 	_scen_edit_land_gen_widgets,
--- a/src/texteff.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/texteff.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,9 +10,7 @@
 #include "saveload.h"
 #include "console.h"
 #include "variables.h"
-#include "table/sprites.h"
 #include "blitter/factory.hpp"
-#include <stdarg.h> /* va_list */
 #include "texteff.hpp"
 #include "video/video_driver.hpp"
 #include "transparency.h"
@@ -21,6 +19,11 @@
 #include "date_func.h"
 #include "functions.h"
 #include "viewport_func.h"
+#include "settings_type.h"
+
+#include "table/sprites.h"
+
+#include <stdarg.h> /* va_list */
 
 enum {
 	MAX_TEXTMESSAGE_LENGTH = 200,
--- a/src/tgp.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tgp.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,7 +6,6 @@
 #include <math.h>
 #include "openttd.h"
 #include "clear_map.h"
-#include "table/strings.h"
 #include "clear_map.h"
 #include "variables.h"
 #include "void_map.h"
@@ -15,6 +14,9 @@
 #include "genworld.h"
 #include "core/alloc_func.hpp"
 #include "core/random_func.hpp"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 /*
  *
--- a/src/tile_cmd.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tile_cmd.h	Sun Feb 03 20:17:54 2008 +0000
@@ -12,6 +12,7 @@
 #include "cargo_type.h"
 #include "strings_type.h"
 #include "date_type.h"
+#include "player_type.h"
 
 /** The returned bits of VehicleEnterTile. */
 enum VehicleEnterTileStatus {
@@ -25,6 +26,7 @@
 	 * VETS_ENTERED_STATION is set
 	 */
 	VETS_STATION_ID_OFFSET = 8,
+	VETS_STATION_MASK      = 0xFFFF << VETS_STATION_ID_OFFSET,
 
 	/** Bit sets of the above specified bits */
 	VETSB_CONTINUE         = 0,                          ///< The vehicle can continue normally
--- a/src/tile_map.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tile_map.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file tile.cpp */
+/** @file tile_map.cpp */
 
 #include "stdafx.h"
 #include "openttd.h"
--- a/src/tile_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tile_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "tile_type.h"
 #include "slope_type.h"
+#include "player_type.h"
 #include "map_func.h"
 #include "core/bitmath_func.hpp"
 
--- a/src/tile_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tile_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -41,11 +41,20 @@
 /**
  * Additional infos of a tile on a tropic game.
  *
- * Each non-water tile in a tropic game is either a rainforest tile or a
- * desert one.
+ * The tropiczone is not modified during gameplay. It mainly affects tree growth. (desert tiles are visible though)
+ *
+ * In randomly generated maps:
+ *  TROPICZONE_DESERT: Generated everywhere, if there is neither water nor mountains (TileHeight >= 4) in a certain distance from the tile.
+ *  TROPICZONE_RAINFOREST: Genereated everywhere, if there is no desert in a certain distance from the tile.
+ *  TROPICZONE_NORMAL: Everywhere else, i.e. between desert and rainforest and on sea (if you clear the water).
+ *
+ * In scenarios:
+ *  TROPICZONE_NORMAL: Default value.
+ *  TROPICZONE_DESERT: Placed manually.
+ *  TROPICZONE_RAINFOREST: Placed if you plant certain rainforest-trees.
  */
 enum TropicZone {
-	TROPICZONE_INVALID    = 0,      ///< Invalid tropiczone-type
+	TROPICZONE_NORMAL     = 0,      ///< Normal tropiczone
 	TROPICZONE_DESERT     = 1,      ///< Tile is desert
 	TROPICZONE_RAINFOREST = 2,      ///< Rainforest tile
 };
--- a/src/timetable_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/timetable_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,14 +5,14 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "command_func.h"
-#include "player.h"
 #include "functions.h"
 #include "window_func.h"
 #include "vehicle_func.h"
 #include "vehicle_base.h"
+#include "settings_type.h"
 
+#include "table/strings.h"
 
 static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 time, bool is_journey)
 {
@@ -24,7 +24,7 @@
 		order->wait_time = time;
 	}
 
-	if (v->cur_order_index == order_number && HasBit(v->current_order.flags, OFB_PART_OF_ORDERS)) {
+	if (v->cur_order_index == order_number && HasBit(v->current_order.flags, OF_PART_OF_ORDERS)) {
 		if (is_journey) {
 			v->current_order.travel_time = time;
 		} else {
@@ -65,7 +65,7 @@
 	bool is_journey = HasBit(p1, 24);
 	if (!is_journey) {
 		if (order->type != OT_GOTO_STATION) return_cmd_error(STR_TIMETABLE_ONLY_WAIT_AT_STATIONS);
-		if (_patches.new_nonstop && (order->flags & OF_NON_STOP)) return_cmd_error(STR_TIMETABLE_NOT_STOPPING_HERE);
+		if (_patches.new_nonstop && (order->flags & OFB_NON_STOP)) return_cmd_error(STR_TIMETABLE_NOT_STOPPING_HERE);
 	}
 
 	if (flags & DC_EXEC) {
--- a/src/timetable_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/timetable_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "command_func.h"
 #include "engine.h"
 #include "gui.h"
@@ -17,6 +16,10 @@
 #include "vehicle_base.h"
 #include "string_func.h"
 #include "gfx_func.h"
+#include "player_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 static int GetOrderFromTimetableWndPt(Window *w, int y, const Vehicle *v)
 {
@@ -61,7 +64,7 @@
 			w->EnableWidget(7);
 		} else {
 			const Order *order = GetVehicleOrder(v, (selected + 1) / 2);
-			bool disable = order == NULL || order->type != OT_GOTO_STATION || (_patches.new_nonstop && (order->flags & OF_NON_STOP));
+			bool disable = order == NULL || order->type != OT_GOTO_STATION || (_patches.new_nonstop && (order->flags & OFB_NON_STOP));
 
 			w->SetWidgetDisabledState(6, disable);
 			w->SetWidgetDisabledState(7, disable);
@@ -101,7 +104,7 @@
 					break;
 
 				case OT_GOTO_STATION:
-					SetDParam(0, (order->flags & OF_NON_STOP) ? STR_880C_GO_NON_STOP_TO : STR_8806_GO_TO);
+					SetDParam(0, (order->flags & OFB_NON_STOP) ? STR_880A_GO_NON_STOP_TO : STR_8806_GO_TO);
 					SetDParam(1, order->dest);
 
 					if (order->wait_time > 0) {
@@ -121,20 +124,20 @@
 						SetDParam(1, GetDepot(order->dest)->town_index);
 
 						switch (v->type) {
-							case VEH_TRAIN: string = (order->flags & OF_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
-							case VEH_ROAD:  string = STR_9038_GO_TO_ROADVEH_DEPOT; break;
+							case VEH_TRAIN: string = (order->flags & OFB_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
+							case VEH_ROAD:  string = STR_GO_TO_ROADVEH_DEPOT; break;
 							case VEH_SHIP:  string = STR_GO_TO_SHIP_DEPOT; break;
 							default: break;
 						}
 					}
 
-					if (order->flags & OF_FULL_LOAD) string++; // Service at orders
+					if (order->flags & OFB_FULL_LOAD) string++; // Service at orders
 
 					SetDParam(0, string);
 				} break;
 
 				case OT_GOTO_WAYPOINT:
-					SetDParam(0, (order->flags & OF_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
+					SetDParam(0, (order->flags & OFB_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
 					SetDParam(1, order->dest);
 					break;
 
@@ -179,7 +182,7 @@
 		for (const Order *order = GetVehicleOrder(v, 0); order != NULL; order = order->next) {
 			total_time += order->travel_time + order->wait_time;
 			if (order->travel_time == 0) complete = false;
-			if (order->wait_time == 0 && order->type == OT_GOTO_STATION && !(_patches.new_nonstop && (order->flags & OF_NON_STOP))) complete = false;
+			if (order->wait_time == 0 && order->type == OT_GOTO_STATION && !(_patches.new_nonstop && (order->flags & OFB_NON_STOP))) complete = false;
 		}
 
 		if (total_time != 0) {
--- a/src/town.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/town.h	Sun Feb 03 20:17:54 2008 +0000
@@ -11,6 +11,8 @@
 #include "tile_type.h"
 #include "date_type.h"
 #include "town_type.h"
+#include "player_type.h"
+#include "newgrf_string_type.h"
 
 enum {
 	HOUSE_NO_CLASS   = 0,
@@ -42,13 +44,21 @@
 
 DECLARE_ENUM_AS_BIT_SET(BuildingFlags)
 
+enum HouseZonesBits {
+	HZB_TOWN_EDGE = 0,
+	HZB_TOWN_OUTSKIRT,
+	HZB_TOWN_OUTER_SUBURB,
+	HZB_TOWN_INNER_SUBURB,
+	HZB_TOWN_CENTRE,
+};
+
 enum HouseZones {                  ///< Bit  Value       Meaning
 	HZ_NOZNS             = 0x0000,  ///<       0          This is just to get rid of zeros, meaning none
-	HZ_ZON1              = 0x0001,  ///< 0..4 1,2,4,8,10  which town zones the building can be built in, Zone1 been the further suburb
-	HZ_ZON2              = 0x0002,
-	HZ_ZON3              = 0x0004,
-	HZ_ZON4              = 0x0008,
-	HZ_ZON5              = 0x0010,  ///<                  center of town
+	HZ_ZON1              = 1U << HZB_TOWN_EDGE,    ///< 0..4 1,2,4,8,10  which town zones the building can be built in, Zone1 been the further suburb
+	HZ_ZON2              = 1U << HZB_TOWN_OUTSKIRT,
+	HZ_ZON3              = 1U << HZB_TOWN_OUTER_SUBURB,
+	HZ_ZON4              = 1U << HZB_TOWN_INNER_SUBURB,
+	HZ_ZON5              = 1U << HZB_TOWN_CENTRE,  ///<  center of town
 	HZ_ZONALL            = 0x001F,  ///<       1F         This is just to englobe all above types at once
 	HZ_SUBARTC_ABOVE     = 0x0800,  ///< 11    800        can appear in sub-arctic climate above the snow line
 	HZ_TEMP              = 0x1000,  ///< 12   1000        can appear in temperate climate
@@ -87,6 +97,7 @@
 	uint32 townnamegrfid;
 	uint16 townnametype;
 	uint32 townnameparts;
+	char *name;
 
 	/* NOSAVE: Location of name sign, UpdateTownVirtCoord updates this. */
 	ViewportSign sign;
@@ -167,7 +178,7 @@
 	Year max_date;                     ///< last year it can be built
 	byte population;                   ///< population (Zero on other tiles in multi tile house.)
 	byte removal_cost;                 ///< cost multiplier for removing it
-	StringID building_name;            ///< building name
+	GRFMappedStringID building_name;   ///< building name
 	uint16 remove_rating_decrease;     ///< rating decrease if removed
 	byte mail_generation;              ///< mail generation multiplier (tile based, as the acceptances below)
 	byte cargo_acceptance[3];          ///< acceptance level for the cargo slots
@@ -195,7 +206,7 @@
 	const struct GRFFile *grffile;     ///< grf file that introduced this house
 };
 
-VARDEF HouseSpec _house_specs[HOUSE_MAX];
+extern HouseSpec _house_specs[HOUSE_MAX];
 
 uint32 GetWorldPopulation();
 
@@ -236,8 +247,6 @@
 
 bool CheckforTownRating(uint32 flags, Town *t, byte type);
 
-VARDEF const Town** _town_sort;
-
 static inline HouseSpec *GetHouseSpecs(HouseID house_id)
 {
 	assert(house_id < HOUSE_MAX);
@@ -254,8 +263,6 @@
 	return index < GetTownPoolSize() && GetTown(index)->IsValid();
 }
 
-VARDEF uint _total_towns;
-
 static inline TownID GetMaxTownIndex()
 {
 	/* TODO - This isn't the real content of the function, but
@@ -268,6 +275,8 @@
 
 static inline uint GetNumTowns()
 {
+	extern uint _total_towns;
+
 	return _total_towns;
 }
 
@@ -293,16 +302,17 @@
 	return GetTown(index);
 }
 
-Town* CalcClosestTownFromTile(TileIndex tile, uint threshold);
+Town *CalcClosestTownFromTile(TileIndex tile, uint threshold);
 
 #define FOR_ALL_TOWNS_FROM(t, start) for (t = GetTown(start); t != NULL; t = (t->index + 1U < GetTownPoolSize()) ? GetTown(t->index + 1U) : NULL) if (t->IsValid())
 #define FOR_ALL_TOWNS(t) FOR_ALL_TOWNS_FROM(t, 0)
 
-VARDEF bool _town_sort_dirty;
-VARDEF byte _town_sort_order;
+extern bool _town_sort_dirty;
+extern byte _town_sort_order;
+extern const Town **_town_sort;
 
-VARDEF Town *_cleared_town;
-VARDEF int _cleared_town_rating;
+extern Town *_cleared_town;
+extern int _cleared_town_rating;
 
 uint OriginalTileRandomiser(uint x, uint y);
 void ResetHouses();
@@ -313,7 +323,7 @@
 bool CheckIfAuthorityAllows(TileIndex tile);
 Town *ClosestTownFromTile(TileIndex tile, uint threshold);
 void ChangeTownRating(Town *t, int add, int max);
-uint GetTownRadiusGroup(const Town* t, TileIndex tile);
+HouseZonesBits GetTownRadiusGroup(const Town* t, TileIndex tile);
 void SetTownRatingTestMode(bool mode);
 
 #endif /* TOWN_H */
--- a/src/town_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/town_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "debug.h"
 #include "road_map.h"
 #include "road_internal.h" /* Cleaning up road bits */
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "landscape.h"
 #include "town_map.h"
 #include "tunnel_map.h"
@@ -18,7 +16,7 @@
 #include "command_func.h"
 #include "industry.h"
 #include "station.h"
-#include "player.h"
+#include "player_base.h"
 #include "news.h"
 #include "saveload.h"
 #include "gui.h"
@@ -27,7 +25,6 @@
 #include "variables.h"
 #include "bridge.h"
 #include "bridge_map.h"
-#include "table/town_land.h"
 #include "genworld.h"
 #include "newgrf.h"
 #include "newgrf_callbacks.h"
@@ -43,6 +40,19 @@
 #include "window_func.h"
 #include "string_func.h"
 
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/town_land.h"
+
+uint _total_towns;
+HouseSpec _house_specs[HOUSE_MAX];
+
+bool _town_sort_dirty;
+byte _town_sort_order;
+const Town **_town_sort;
+
+Town *_cleared_town;
+int _cleared_town_rating;
 
 /* Initialize the town-pool */
 DEFINE_OLD_POOL_GENERIC(Town, Town)
@@ -55,7 +65,7 @@
 
 Town::~Town()
 {
-	DeleteName(this->townnametype);
+	free(this->name);
 
 	if (CleaningPool()) return;
 
@@ -425,8 +435,7 @@
 		for (uint i = 0; i < 256; i++) {
 			uint16 callback = GetHouseCallback(CBID_HOUSE_PRODUCE_CARGO, i, r, house_id, t, tile);
 
-			if (callback == CALLBACK_FAILED) break;
-			if (callback == 0x20FF) break;
+			if (callback == CALLBACK_FAILED || callback == CALLBACK_HOUSEPRODCARGO_END) break;
 
 			CargoID cargo = GetCargoTranslation(GB(callback, 8, 7), hs->grffile);
 			if (cargo == CT_INVALID) continue;
@@ -664,25 +673,25 @@
  * @return true if one of the neighboring tiles at the
  *  given distance is a road tile else false
  */
-static bool IsNeighborRoadTile(TileIndex tile, DiagDirection dir, uint dist_multi)
+static bool IsNeighborRoadTile(TileIndex tile, const DiagDirection dir, uint dist_multi)
 {
-	static TileIndexDiff tid_lt[3]; // lookup table for the used diff values
-	tid_lt[0] = TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90RIGHT));
-	tid_lt[1] = TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90LEFT));
-	tid_lt[2] = TileOffsByDiagDir(ReverseDiagDir(dir));
+	/* Lookup table for the used diff values */
+	const TileIndexDiff tid_lt[3] = {
+		TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90RIGHT)),
+		TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90LEFT)),
+		TileOffsByDiagDir(ReverseDiagDir(dir)),
+	};
 
 	/* We add 1 to the distance because we want to get 1 for
 	 * the min distance multiplyer and not 0.
 	 * Therefore we start at 4. The 4 is used because
-	 * there are 4 tiles per distance step to check.
-	 */
+	 * there are 4 tiles per distance step to check. */
 	dist_multi = (dist_multi + 1) * 4;
 	for (uint pos = 4; pos < dist_multi; pos++) {
 		TileIndexDiff cur = 0;
 		/* For each even value of pos add the right TileIndexDiff
 		 * for each uneven value the left TileIndexDiff
-		 * for each with 2nd bit set (2,3,6,7,..) add the reversed TileIndexDiff
-		 */
+		 * for each with 2nd bit set (2,3,6,7,..) add the reversed TileIndexDiff */
 		cur += tid_lt[(pos & 1) ? 0 : 1];
 		if (pos & 2) cur += tid_lt[2];
 
@@ -701,19 +710,15 @@
  */
 static bool IsRoadAllowedHere(TileIndex tile, DiagDirection dir)
 {
-	if (TileX(tile) < 2 || TileY(tile) < 2 || MapMaxX() <= TileX(tile) || MapMaxY() <= TileY(tile)) return false;
+	if (TileX(tile) < 2 || TileX(tile) >= MapMaxX() || TileY(tile) < 2 || TileY(tile) >= MapMaxY()) return false;
 
 	Slope cur_slope, desired_slope;
 
-	/* If this assertion fails, it might be because the world contains
-	 *  land at the edges. This is not ok. */
-	TILE_ASSERT(tile);
-
 	for (;;) {
 		/* Check if there already is a road at this point? */
 		if (GetTownRoadBits(tile) == ROAD_NONE) {
-			/* No, try to build one in the direction.
-			 * if that fails clear the land, and if that fails exit.
+			/* No, try if we are able to build a road piece there.
+			 * If that fails clear the land, and if that fails exit.
 			 * This is to make sure that we can build a road here later. */
 			if (CmdFailed(DoCommand(tile, ((dir == DIAGDIR_NW || dir == DIAGDIR_SE) ? ROAD_X : ROAD_Y), 0, DC_AUTO, CMD_BUILD_ROAD)) &&
 					CmdFailed(DoCommand(tile, 0, 0, DC_AUTO, CMD_LANDSCAPE_CLEAR)))
@@ -727,10 +732,10 @@
 			switch (_patches.town_layout) {
 				default: NOT_REACHED();
 
-				case TL_ORIGINAL: /* Disallow the road if any neighboring tile has a road (distance: 1) */
+				case TL_ORIGINAL: // Disallow the road if any neighboring tile has a road (distance: 1)
 					return !IsNeighborRoadTile(tile, dir, 1);
 
-				case TL_BETTER_ROADS: /* Disallow the road if any neighboring tile has a road (distance: 1 and 2). */
+				case TL_BETTER_ROADS: // Disallow the road if any neighboring tile has a road (distance: 1 and 2).
 					return !IsNeighborRoadTile(tile, dir, 2);
 			}
 		}
@@ -742,8 +747,8 @@
 			if (Chance16(1, 8)) {
 				CommandCost res = CMD_ERROR;
 				if (!_generating_world && Chance16(1, 10)) {
-					/* Note: Do not replace " ^ 0xF" with ComplementSlope(). The slope might be steep. */
-					res = DoCommand(tile, Chance16(1, 16) ? cur_slope : cur_slope ^ 0xF, 0,
+					/* Note: Do not replace "^ SLOPE_ELEVATED" with ComplementSlope(). The slope might be steep. */
+					res = DoCommand(tile, Chance16(1, 16) ? cur_slope : cur_slope ^ SLOPE_ELEVATED, 0,
 							DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_TERRAFORM_LAND);
 				}
 				if (CmdFailed(res) && Chance16(1, 3)) {
@@ -781,8 +786,8 @@
 	if (tileh == SLOPE_FLAT) return;
 
 	/* First try up, then down */
-	if (!TerraformTownTile(tile, ~tileh & 0xF, 1)) {
-		TerraformTownTile(tile, tileh & 0xF, 0);
+	if (!TerraformTownTile(tile, ~tileh & SLOPE_ELEVATED, 1)) {
+		TerraformTownTile(tile, tileh & SLOPE_ELEVATED, 0);
 	}
 }
 
@@ -905,7 +910,7 @@
  * @param bridge_dir The valid direction in which to grow a bridge
  * @return true if a bridge has been build else false
  */
-static bool GrowTownWithBridge(const Town *t, TileIndex tile, DiagDirection bridge_dir)
+static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDirection bridge_dir)
 {
 	assert(bridge_dir < DIAGDIR_END);
 
@@ -913,33 +918,25 @@
 	if (slope == SLOPE_FLAT) return false; // no slope, no bridge
 
 	/* Make sure the direction is compatible with the slope.
-	 * If any of the following bits match, the slope is forbidden for
-	 *  that diagdir. This means 5 non-steep slopes, and 3 steep-slopes
-	 *  per diagdir.
-	 * 0 -> 0b1100
-	 * 1 -> 0b0110
-	 * 2 -> 0b0011
-	 * 3 -> 0b1001
-	 * 0xCC is 0b11001100, so we just shift it right with
-	 * the direction to get the forbidden slope mask. */
-	if (HASBITS(slope & 0x0F, 0xCC >> bridge_dir)) return false;
+	 * Well we check if the slope has an up bit set in the
+	 * reverse direction. */
+	if (HASBITS(slope, InclinedSlope(bridge_dir))) return false;
 
 	/* Assure that the bridge is connectable to the start side */
 	if (!(GetTownRoadBits(TileAddByDiagDir(tile, ReverseDiagDir(bridge_dir))) & DiagDirToRoadBits(bridge_dir))) return false;
 
 	/* We are in the right direction */
-	uint8 bridge_length = 0;     // This value stores the length of the possible bridge
+	uint8 bridge_length = 0;      // This value stores the length of the possible bridge
 	TileIndex bridge_tile = tile; // Used to store the other waterside
 
-	int delta = TileOffsByDiagDir(bridge_dir);
-
+	const int delta = TileOffsByDiagDir(bridge_dir);
 	do {
 		if (bridge_length++ >= 11) {
 			/* Max 11 tile long bridges */
 			return false;
 		}
 		bridge_tile += delta;
-	} while (TileX(bridge_tile) != 0 && TileY(bridge_tile) != 0 && IsWaterTile(bridge_tile) && TileX(bridge_tile) != 0);
+	} while (TileX(bridge_tile) != 0 && TileY(bridge_tile) != 0 && IsWaterTile(bridge_tile));
 
 	/* no water tiles in between? */
 	if (bridge_length == 1) return false;
@@ -1192,7 +1189,7 @@
 			/* Don't allow building over roads of other cities */
 			if (IsTileOwner(tile, OWNER_TOWN) && GetTownByTile(tile) != t) {
 				_grow_town_result = GROWTH_SUCCEED;
-			} else if (_game_mode == GM_EDITOR) {
+			} else if (IsTileOwner(tile, OWNER_NONE) && _game_mode == GM_EDITOR) {
 				/* If we are in the SE, and this road-piece has no town owner yet, it just found an
 				 * owner :) (happy happy happy road now) */
 				SetTileOwner(tile, OWNER_TOWN);
@@ -1594,9 +1591,9 @@
 	int b;
 	Slope slope;
 
-	static const byte _masks[8] = {
-		0xC,0x3,0x9,0x6,
-		0x3,0xC,0x6,0x9,
+	static const Slope _masks[8] = {
+		SLOPE_NE,  SLOPE_SW,  SLOPE_NW,  SLOPE_SE,
+		SLOPE_SW,  SLOPE_NE,  SLOPE_SE,  SLOPE_NW,
 	};
 
 	slope = GetTileSlope(tile, NULL);
@@ -1606,25 +1603,29 @@
 
 	b = 0;
 	if ((slope != SLOPE_FLAT && ~slope & _masks[mode])) b = ~b;
-	if ((tileh != SLOPE_FLAT && ~tileh & _masks[mode+4])) b = ~b;
+	if ((tileh != SLOPE_FLAT && ~tileh & _masks[mode + 4])) b = ~b;
 	if (b)
 		return false;
 
 	return CmdSucceeded(DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR));
 }
 
-
-uint GetTownRadiusGroup(const Town* t, TileIndex tile)
+/** Returns the bit corresponding to the town zone of the specified tile
+ * @param t Town on which radius is to be found
+ * @param tile TileIndex where radius needs to be found
+ * @return the bit position of the given zone, as defined in HouseZones
+ */
+HouseZonesBits GetTownRadiusGroup(const Town* t, TileIndex tile)
 {
 	uint dist = DistanceSquare(tile, t->xy);
-	uint smallest;
+	HouseZonesBits smallest;
 	uint i;
 
-	if (t->fund_buildings_months && dist <= 25) return 4;
-
-	smallest = 0;
+	if (t->fund_buildings_months && dist <= 25) return HZB_TOWN_CENTRE;
+
+	smallest = HZB_TOWN_EDGE;
 	for (i = 0; i != lengthof(t->radius); i++) {
-		if (dist < t->radius[i]) smallest = i;
+		if (dist < t->radius[i]) smallest = (HouseZonesBits)i;
 	}
 
 	return smallest;
@@ -1668,9 +1669,10 @@
 	/* Above snow? */
 	slope = GetTileSlope(tile, &z);
 
-	/* Get the town zone type */
+	/* Get the town zone type of the current tile, as well as the climate.
+	 * This will allow to easily compare with the specs of the new house to build */
 	{
-		uint rad = GetTownRadiusGroup(t, tile);
+		HouseZonesBits rad = GetTownRadiusGroup(t, tile);
 
 		int land = _opt.landscape;
 		if (land == LT_ARCTIC && z >= _opt.snow_line) land = -1;
@@ -1690,6 +1692,7 @@
 		/* Generate a list of all possible houses that can be built. */
 		for (i = 0; i < HOUSE_MAX; i++) {
 			hs = GetHouseSpecs(i);
+			/* Verify that the candidate house spec matches the current tile status */
 			if ((~hs->building_availability & bitmask) == 0 && hs->enabled) {
 				if (_loaded_newgrf_features.has_newhouses) {
 					probability_max += hs->probability;
@@ -1888,7 +1891,6 @@
  */
 CommandCost CmdRenameTown(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	StringID str;
 	Town *t;
 
 	if (!IsValidTownID(p1) || StrEmpty(_cmd_text)) return CMD_ERROR;
@@ -1897,21 +1899,15 @@
 
 	if (!IsUniqueTownName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	str = AllocateName(_cmd_text, 4);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
-		DeleteName(t->townnametype);
-		t->townnametype = str;
-		t->townnamegrfid = 0;
+		free(t->name);
+		t->name = strdup(_cmd_text);
 
 		UpdateTownVirtCoord(t);
 		_town_sort_dirty = true;
 		UpdateAllStationVirtCoord();
 		UpdateAllWaypointSigns();
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 	return CommandCost();
 }
@@ -2409,14 +2405,14 @@
 	SLE_CONDVAR(Town, xy,                    SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
 	SLE_CONDVAR(Town, xy,                    SLE_UINT32,                 6, SL_MAX_VERSION),
 
-	SLE_CONDVAR(Town, population,            SLE_FILE_U16 | SLE_VAR_U32, 0, 2),
-	SLE_CONDVAR(Town, population,            SLE_UINT32,                 3, SL_MAX_VERSION),
-
+	SLE_CONDNULL(2, 0, 2),
+	SLE_CONDNULL(4, 3, 84),
 
 	    SLE_VAR(Town, num_houses,            SLE_UINT16),
 	SLE_CONDVAR(Town, townnamegrfid,         SLE_UINT32, 66, SL_MAX_VERSION),
 	    SLE_VAR(Town, townnametype,          SLE_UINT16),
 	    SLE_VAR(Town, townnameparts,         SLE_UINT32),
+	SLE_CONDSTR(Town, name,                  SLE_STR, 0, 84, SL_MAX_VERSION),
 
 	    SLE_VAR(Town, flags12,               SLE_UINT8),
 	    SLE_VAR(Town, statues,               SLE_UINT8),
@@ -2459,15 +2455,15 @@
 	SLE_CONDVAR(Town, grow_counter,          SLE_UINT8,                  0, 53),
 	SLE_CONDVAR(Town, growth_rate,           SLE_UINT8,                  0, 53),
 
-	SLE_CONDVAR(Town, time_until_rebuild,    SLE_UINT16,                 54, SL_MAX_VERSION),
-	SLE_CONDVAR(Town, grow_counter,          SLE_UINT16,                 54, SL_MAX_VERSION),
-	SLE_CONDVAR(Town, growth_rate,           SLE_INT16,                  54, SL_MAX_VERSION),
+	SLE_CONDVAR(Town, time_until_rebuild,    SLE_UINT16,                54, SL_MAX_VERSION),
+	SLE_CONDVAR(Town, grow_counter,          SLE_UINT16,                54, SL_MAX_VERSION),
+	SLE_CONDVAR(Town, growth_rate,           SLE_INT16,                 54, SL_MAX_VERSION),
 
 	    SLE_VAR(Town, fund_buildings_months, SLE_UINT8),
 	    SLE_VAR(Town, road_build_months,     SLE_UINT8),
 
-	    SLE_VAR(Town, exclusivity,           SLE_UINT8),
-	    SLE_VAR(Town, exclusive_counter,     SLE_UINT8),
+	SLE_CONDVAR(Town, exclusivity,           SLE_UINT8,                  2, SL_MAX_VERSION),
+	SLE_CONDVAR(Town, exclusive_counter,     SLE_UINT8,                  2, SL_MAX_VERSION),
 
 	SLE_CONDVAR(Town, larger_town,           SLE_BOOL,                  56, SL_MAX_VERSION),
 
--- a/src/town_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/town_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "town.h"
 #include "viewport_func.h"
 #include "gfx_func.h"
@@ -14,12 +12,18 @@
 #include "window_gui.h"
 #include "textbuf_gui.h"
 #include "command_func.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
+#include "player_gui.h"
 #include "network/network.h"
 #include "variables.h"
 #include "strings_func.h"
 #include "economy_func.h"
 #include "core/alloc_func.hpp"
+#include "settings_type.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 enum TownAuthorityWidget {
 	TWA_CLOSEBOX = 0,
@@ -474,7 +478,7 @@
 		SetVScrollCount(w, _num_town_sort);
 
 		DrawWindowWidgets(w);
-		DoDrawString(_town_sort_order & 1 ? DOWNARROW : UPARROW, (_town_sort_order <= 1) ? 88 : 187, 15, TC_BLACK);
+		DrawSortButtonState(w, (_town_sort_order <= 1) ? 3 : 4, _town_sort_order & 1 ? SBS_DOWN : SBS_UP);
 
 		{
 			int n = 0;
--- a/src/track_type.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/track_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,6 +5,8 @@
 #ifndef TRACK_TYPE_H
 #define TRACK_TYPE_H
 
+#include "core/enum_type.hpp"
+
 /**
  * These are used to specify a single track.
  * Can be translated to a trackbit with TrackToTrackbit
--- a/src/train.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/train.h	Sun Feb 03 20:17:54 2008 +0000
@@ -304,6 +304,7 @@
 	bool IsInDepot() const { return CheckTrainInDepot(this, false) != -1; }
 	bool IsStoppedInDepot() const { return CheckTrainStoppedInDepot(this) >= 0; }
 	void Tick();
+	void OnNewDay();
 };
 
 #endif /* TRAIN_H */
--- a/src/train_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/train_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,7 +10,6 @@
 #include "landscape.h"
 #include "gui.h"
 #include "station_map.h"
-#include "table/strings.h"
 #include "tunnel_map.h"
 #include "timetable.h"
 #include "articulated_vehicles.h"
@@ -18,10 +17,10 @@
 #include "pathfind.h"
 #include "npf.h"
 #include "station.h"
-#include "table/train_cmd.h"
 #include "news.h"
 #include "engine.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "depot.h"
 #include "waypoint.h"
 #include "vehicle_gui.h"
@@ -43,18 +42,44 @@
 #include "date_func.h"
 #include "vehicle_func.h"
 #include "sound_func.h"
+#include "signal_func.h"
 #include "variables.h"
 #include "autoreplace_gui.h"
 #include "gfx_func.h"
 #include "ai/ai.h"
-
+#include "settings_type.h"
+
+#include "table/strings.h"
+#include "table/train_cmd.h"
 
 static bool TrainCheckIfLineEnds(Vehicle *v);
 static void TrainController(Vehicle *v, bool update_image);
+static TileIndex TrainApproachingCrossingTile(const Vehicle *v);
 
 static const byte _vehicle_initial_x_fract[4] = {10, 8, 4,  8};
 static const byte _vehicle_initial_y_fract[4] = { 8, 4, 8, 10};
-static const TrackBits _state_dir_table[4] = { TRACK_BIT_RIGHT, TRACK_BIT_LOWER, TRACK_BIT_LEFT, TRACK_BIT_UPPER };
+
+
+/**
+ * Determine the side in which the train will leave the tile
+ *
+ * @param direction vehicle direction
+ * @param track vehicle track bits
+ * @return side of tile the train will leave
+ */
+static inline DiagDirection TrainExitDir(Direction direction, TrackBits track)
+{
+	static const TrackBits state_dir_table[DIAGDIR_END] = { TRACK_BIT_RIGHT, TRACK_BIT_LOWER, TRACK_BIT_LEFT, TRACK_BIT_UPPER };
+
+	DiagDirection diagdir = DirToDiagDir(direction);
+
+	/* Determine the diagonal direction in which we will exit this tile */
+	if (!HasBit(direction, 0) && track != state_dir_table[diagdir]) {
+		diagdir = ChangeDiagDir(diagdir, DIAGDIRDIFF_90LEFT);
+	}
+
+	return diagdir;
+}
 
 
 /** Return the cargo weight multiplier to use for a rail vehicle
@@ -108,7 +133,7 @@
 		v->u.rail.cached_power = total_power;
 		v->u.rail.cached_max_te = max_te;
 		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 }
 
@@ -166,7 +191,7 @@
 	const RailVehicleInfo *rvi_v = RailVehInfo(v->engine_type);
 	EngineID first_engine = IsFrontEngine(v) ? v->engine_type : INVALID_ENGINE;
 	v->u.rail.cached_total_length = 0;
-	v->u.rail.compatible_railtypes = 0;
+	v->u.rail.compatible_railtypes = RAILTYPES_NONE;
 
 	bool train_can_tilt = true;
 
@@ -231,7 +256,7 @@
 			 * existing electric engines when elrails are disabled and then re-enabled */
 			if (HasBit(u->u.rail.flags, VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL)) {
 				u->u.rail.railtype = RAILTYPE_RAIL;
-				u->u.rail.compatible_railtypes |= (1 << RAILTYPE_RAIL);
+				u->u.rail.compatible_railtypes |= RAILTYPES_RAIL;
 			}
 
 			/* max speed is the minimum of the speed limits of all vehicles in the consist */
@@ -280,13 +305,13 @@
 	assert(v->type == VEH_TRAIN);
 	/* When does a train drive through a station
 	 * first we deal with the "new nonstop handling" */
-	if (_patches.new_nonstop && o->flags & OF_NON_STOP && sid == o->dest) {
+	if (_patches.new_nonstop && o->flags & OFB_NON_STOP && sid == o->dest) {
 		return false;
 	}
 
 	if (v->last_station_visited == sid) return false;
 
-	if (sid != o->dest && (o->flags & OF_NON_STOP || _patches.new_nonstop)) {
+	if (sid != o->dest && (o->flags & OFB_NON_STOP || _patches.new_nonstop)) {
 		return false;
 	}
 
@@ -729,7 +754,7 @@
 			v->reliability_spd_dec = e->reliability_spd_dec;
 			v->max_age = e->lifelength * 366;
 
-			v->string_id = STR_SV_TRAIN_NAME;
+			v->name = NULL;
 			v->u.rail.railtype = rvi->railtype;
 			_new_vehicle_id = v->index;
 
@@ -1223,7 +1248,7 @@
 				InvalidateWindow(WC_VEHICLE_DETAILS, src_head->index);
 				/* Update the refit button and window */
 				InvalidateWindow(WC_VEHICLE_REFIT, src_head->index);
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, src_head->index, 12);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, src_head->index, VVW_WIDGET_REFIT_VEH);
 			}
 			/* Update the depot window */
 			InvalidateWindow(WC_VEHICLE_DEPOT, src_head->tile);
@@ -1237,7 +1262,7 @@
 				UpdateTrainAcceleration(dst_head);
 				InvalidateWindow(WC_VEHICLE_DETAILS, dst_head->index);
 				/* Update the refit button and window */
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, dst_head->index, 12);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, dst_head->index, VVW_WIDGET_REFIT_VEH);
 				InvalidateWindow(WC_VEHICLE_REFIT, dst_head->index);
 			}
 			/* Update the depot window */
@@ -1280,7 +1305,7 @@
 		}
 
 		v->vehstatus ^= VS_STOPPED;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 	}
 	return CommandCost();
@@ -1525,7 +1550,7 @@
 	if (spd != old) {
 		v->u.rail.last_speed = spd;
 		if (_patches.vehicle_speed || (old == 0) != (spd == 0))
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 	}
 }
 
@@ -1601,23 +1626,99 @@
 	TrainPowerChanged(v);
 }
 
-/* Check if the vehicle is a train and is on the tile we are testing */
-static void *TestTrainOnCrossing(Vehicle *v, void *data)
+
+/**
+ * Check if the vehicle is a train
+ * @param v vehicle on tile
+ * @return v if it is a train, NULL otherwise
+ */
+static void *TrainOnTileEnum(Vehicle *v, void *)
 {
-	if (v->type != VEH_TRAIN) return NULL;
+	return (v->type == VEH_TRAIN) ? v : NULL;
+}
+
+
+/**
+ * Checks if a train is approaching a rail-road crossing
+ * @param v vehicle on tile
+ * @param data tile with crossing we are testing
+ * @return v if it is approaching a crossing, NULL otherwise
+ */
+static void *TrainApproachingCrossingEnum(Vehicle *v, void *data)
+{
+	/* not a train || not front engine || crashed */
+	if (v->type != VEH_TRAIN || !IsFrontEngine(v) || v->vehstatus & VS_CRASHED) return NULL;
+
+	TileIndex tile = *(TileIndex*)data;
+
+	if (TrainApproachingCrossingTile(v) != tile) return NULL;
+
 	return v;
 }
 
-static void DisableTrainCrossing(TileIndex tile)
+
+/**
+ * Finds a vehicle approaching rail-road crossing
+ * @param tile tile to test
+ * @return pointer to vehicle approaching the crossing
+ * @pre tile is a rail-road crossing
+ */
+static Vehicle *TrainApproachingCrossing(TileIndex tile)
 {
-	if (IsLevelCrossingTile(tile) &&
-			IsCrossingBarred(tile) &&
-			VehicleFromPos(tile, NULL, &TestTrainOnCrossing) == NULL) { // empty?
-		UnbarCrossing(tile);
+	assert(IsLevelCrossingTile(tile));
+
+	DiagDirection dir = AxisToDiagDir(OtherAxis(GetCrossingRoadAxis(tile)));
+	TileIndex tile_from = tile + TileOffsByDiagDir(dir);
+
+	Vehicle *v = (Vehicle *)VehicleFromPos(tile_from, &tile, &TrainApproachingCrossingEnum);
+
+	if (v != NULL) return v;
+
+	dir = ReverseDiagDir(dir);
+	tile_from = tile + TileOffsByDiagDir(dir);
+
+	return (Vehicle *)VehicleFromPos(tile_from, &tile, &TrainApproachingCrossingEnum);
+}
+
+
+/**
+ * Sets correct crossing state
+ * @param tile tile to update
+ * @param sound should we play sound?
+ * @pre tile is a rail-road crossing
+ */
+void UpdateLevelCrossing(TileIndex tile, bool sound)
+{
+	assert(IsLevelCrossingTile(tile));
+
+	/* train on crossing || train approaching crossing */
+	bool new_state = VehicleFromPos(tile, NULL, &TrainOnTileEnum) || TrainApproachingCrossing(tile);
+
+	if (new_state != IsCrossingBarred(tile)) {
+		if (new_state && sound) {
+			SndPlayTileFx(SND_0E_LEVEL_CROSSING, tile);
+		}
+		SetCrossingBarred(tile, new_state);
 		MarkTileDirtyByTile(tile);
 	}
 }
 
+
+/**
+ * Bars crossing and plays ding-ding sound if not barred already
+ * @param tile tile with crossing
+ * @pre tile is a rail-road crossing
+ */
+static inline void MaybeBarCrossingWithSound(TileIndex tile)
+{
+	if (!IsCrossingBarred(tile)) {
+		BarCrossing(tile);
+		SndPlayTileFx(SND_0E_LEVEL_CROSSING, tile);
+		MarkTileDirtyByTile(tile);
+	}
+}
+
+
 /**
  * Advances wagons for train reversing, needed for variable length wagons.
  * Needs to be called once before the train is reversed, and once after it.
@@ -1665,20 +1766,7 @@
 	}
 
 	/* Check if we were approaching a rail/road-crossing */
-	{
-		TileIndex tile = v->tile;
-		DiagDirection dir = DirToDiagDir(v->direction);
-
-		/* Determine the diagonal direction in which we will exit this tile */
-		if (!(v->direction & 1) && v->u.rail.track != _state_dir_table[dir]) {
-			dir = ChangeDiagDir(dir, DIAGDIRDIFF_90LEFT);
-		}
-		/* Calculate next tile */
-		tile += TileOffsByDiagDir(dir);
-
-		/* Check if the train left a rail/road-crossing */
-		DisableTrainCrossing(tile);
-	}
+	TileIndex crossing = TrainApproachingCrossingTile(v);
 
 	/* count number of vehicles */
 	int r = 0;  ///< number of vehicles - 1
@@ -1702,6 +1790,13 @@
 	for (Vehicle *u = v; u != NULL; u = u->Next()) { u->cur_image = u->GetImage(u->direction); }
 
 	ClrBit(v->u.rail.flags, VRF_REVERSING);
+
+	/* update crossing we were approaching */
+	if (crossing != INVALID_TILE) UpdateLevelCrossing(crossing);
+
+	/* maybe we are approaching crossing now, after reversal */
+	crossing = TrainApproachingCrossingTile(v);
+	if (crossing != INVALID_TILE) MaybeBarCrossingWithSound(crossing);
 }
 
 /** Reverse train.
@@ -1938,18 +2033,12 @@
 		}
 	} else {
 		/* search in the forward direction first. */
-		DiagDirection i = DirToDiagDir(v->direction);
-		if (!(v->direction & 1) && v->u.rail.track != _state_dir_table[i]) {
-			i = ChangeDiagDir(i, DIAGDIRDIFF_90LEFT);
-		}
+		DiagDirection i = TrainExitDir(v->direction, v->u.rail.track);
 		NewTrainPathfind(tile, 0, v->u.rail.compatible_railtypes, i, (NTPEnumProc*)NtpCallbFindDepot, &tfdd);
 		if (tfdd.best_length == (uint)-1){
 			tfdd.reverse = true;
 			/* search in backwards direction */
-			i = ReverseDiagDir(DirToDiagDir(v->direction));
-			if (!(v->direction & 1) && v->u.rail.track != _state_dir_table[i]) {
-				i = ChangeDiagDir(i, DIAGDIRDIFF_90LEFT);
-			}
+			i = TrainExitDir(ReverseDir(v->direction), v->u.rail.track);
 			NewTrainPathfind(tile, 0, v->u.rail.compatible_railtypes, i, (NTPEnumProc*)NtpCallbFindDepot, &tfdd);
 		}
 	}
@@ -1982,27 +2071,27 @@
 	if (v->vehstatus & VS_CRASHED) return CMD_ERROR;
 
 	if (v->current_order.type == OT_GOTO_DEPOT) {
-		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
+		if (!!(p2 & DEPOT_SERVICE) == HasBit(v->current_order.flags, OF_HALT_IN_DEPOT)) {
 			/* We called with a different DEPOT_SERVICE setting.
 			 * Now we change the setting to apply the new one and let the vehicle head for the same depot.
 			 * Note: the if is (true for requesting service == true for ordered to stop in depot)          */
 			if (flags & DC_EXEC) {
-				ClrBit(v->current_order.flags, OFB_PART_OF_ORDERS);
-				ToggleBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
-				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+				ClrBit(v->current_order.flags, OF_PART_OF_ORDERS);
+				ToggleBit(v->current_order.flags, OF_HALT_IN_DEPOT);
+				InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 			}
 			return CommandCost();
 		}
 
 		if (p2 & DEPOT_DONT_CANCEL) return CMD_ERROR; // Requested no cancelation of depot orders
 		if (flags & DC_EXEC) {
-			if (HasBit(v->current_order.flags, OFB_PART_OF_ORDERS)) {
+			if (HasBit(v->current_order.flags, OF_PART_OF_ORDERS)) {
 				v->cur_order_index++;
 			}
 
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return CommandCost();
 	}
@@ -2019,11 +2108,11 @@
 
 		v->dest_tile = tfdd.tile;
 		v->current_order.type = OT_GOTO_DEPOT;
-		v->current_order.flags = OF_NON_STOP;
-		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OFB_HALT_IN_DEPOT);
+		v->current_order.flags = OFB_NON_STOP;
+		if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OF_HALT_IN_DEPOT);
 		v->current_order.dest = GetDepotByTile(tfdd.tile)->index;
 		v->current_order.refit_cargo = CT_INVALID;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		/* If there is no depot in front, reverse automatically */
 		if (tfdd.reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION);
 	}
@@ -2157,7 +2246,7 @@
 
 		v->load_unload_time_rem = 0;
 
-		if (UpdateSignalsOnSegment(v->tile, DirToDiagDir(v->direction))) {
+		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner)) {
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 			return true;
 		}
@@ -2176,7 +2265,7 @@
 	v->UpdateDeltaXY(v->direction);
 	v->cur_image = v->GetImage(v->direction);
 	VehiclePositionChanged(v);
-	UpdateSignalsOnSegment(v->tile, DirToDiagDir(v->direction));
+	UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner);
 	UpdateTrainAcceleration(v);
 	InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 
@@ -2470,8 +2559,8 @@
 {
 	switch (v->current_order.type) {
 		case OT_GOTO_DEPOT:
-			if (!(v->current_order.flags & OF_PART_OF_ORDERS)) return false;
-			if ((v->current_order.flags & OF_SERVICE_IF_NEEDED) &&
+			if (!(v->current_order.flags & OFB_PART_OF_ORDERS)) return false;
+			if ((v->current_order.flags & OFB_SERVICE_IF_NEEDED) &&
 					!VehicleNeedsService(v)) {
 				UpdateVehicleTimetable(v, true);
 				v->cur_order_index++;
@@ -2502,7 +2591,7 @@
 
 	/* check if we've reached a non-stop station while TTDPatch nonstop is enabled.. */
 	if (_patches.new_nonstop &&
-			v->current_order.flags & OF_NON_STOP &&
+			v->current_order.flags & OFB_NON_STOP &&
 			IsTileType(v->tile, MP_STATION) &&
 			v->current_order.dest == GetStationIndex(v->tile)) {
 		UpdateVehicleTimetable(v, true);
@@ -2561,7 +2650,7 @@
 	Vehicle *v = this;
 	do {
 		v->cur_image = v->GetImage(v->direction);
-		MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
+		MarkSingleVehicleDirty(v);
 	} while ((v = v->Next()) != NULL);
 
 	/* need to update acceleration and cached values since the goods on the train changed. */
@@ -2757,7 +2846,7 @@
 	if (IsTileType(tile, MP_RAILWAY) &&
 			GetRailTileType(tile) == RAIL_TILE_SIGNALS) {
 		uint i = FindFirstBit2x64(GetTrackBits(tile) * 0x101 & _reachable_tracks[dir]);
-		UpdateSignalsOnSegment(tile, _otherside_signal_directions[i]);
+		UpdateSignalsOnSegment(tile, _otherside_signal_directions[i], GetTileOwner(tile));
 	}
 }
 
@@ -2766,14 +2855,27 @@
 {
 	if (v->u.rail.crash_anim_pos != 0) return;
 
+	/* we may need to update crossing we were approaching */
+	TileIndex crossing = TrainApproachingCrossingTile(v);
+
 	v->u.rail.crash_anim_pos++;
 
-	Vehicle *u = v;
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
+	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+
+	if (v->u.rail.track == TRACK_BIT_DEPOT) {
+		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
+	}
+
+	RebuildVehicleLists();
+
 	BEGIN_ENUM_WAGONS(v)
 		v->vehstatus |= VS_CRASHED;
+		MarkSingleVehicleDirty(v);
 	END_ENUM_WAGONS(v)
 
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, u->index, STATUS_BAR);
+	/* must be updated after the train has been marked crashed */
+	if (crossing != INVALID_TILE) UpdateLevelCrossing(crossing);
 }
 
 static uint CountPassengersInTrain(const Vehicle* v)
@@ -2787,7 +2889,6 @@
 
 struct TrainCollideChecker {
 	Vehicle *v;
-	const Vehicle *v_skip;
 	uint num;
 };
 
@@ -2795,23 +2896,21 @@
 {
 	TrainCollideChecker* tcc = (TrainCollideChecker*)data;
 
-	if (v != tcc->v &&
-			v != tcc->v_skip &&
-			v->type == VEH_TRAIN &&
-			v->u.rail.track != TRACK_BIT_DEPOT &&
-			abs(v->z_pos - tcc->v->z_pos) < 6 &&
-			abs(v->x_pos - tcc->v->x_pos) < 6 &&
-			abs(v->y_pos - tcc->v->y_pos) < 6 ) {
-
-		Vehicle *coll = v->First();
-
-		/* it can't collide with its own wagons */
-		if (tcc->v == coll ||
-			(tcc->v->u.rail.track == TRACK_BIT_WORMHOLE && (tcc->v->direction & 2) != (v->direction & 2)))
-			return NULL;
-
-		/* two drivers + passengers killed in train tcc->v (if it was not crashed already) */
+	if (v->type != VEH_TRAIN) return NULL;
+
+	/* get first vehicle now to make most usual checks faster */
+	Vehicle *coll = v->First();
+
+	/* can't collide with own wagons && can't crash in depot && the same height level */
+	if (coll != tcc->v && v->u.rail.track != TRACK_BIT_DEPOT && abs(v->z_pos - tcc->v->z_pos) < 6) {
+		int x_diff = v->x_pos - tcc->v->x_pos;
+		int y_diff = v->y_pos - tcc->v->y_pos;
+
+		/* needed to disable possible crash of competitor train in station by building diagonal track at its end */
+		if (x_diff * x_diff + y_diff * y_diff > 25) return NULL;
+
 		if (!(tcc->v->vehstatus & VS_CRASHED)) {
+			/* two drivers + passengers killed in train tcc->v (if it was not crashed already) */
 			tcc->num += 2 + CountPassengersInTrain(tcc->v);
 			SetVehicleCrashed(tcc->v);
 		}
@@ -2841,7 +2940,6 @@
 
 	TrainCollideChecker tcc;
 	tcc.v = v;
-	tcc.v_skip = v->Next();
 	tcc.num = 0;
 
 	/* find colliding vehicles */
@@ -2886,7 +2984,7 @@
 	/* For every vehicle after and including the given vehicle */
 	for (prev = v->Previous(); v != NULL; prev = v, v = v->Next()) {
 		DiagDirection enterdir = DIAGDIR_BEGIN;
-		bool update_signals = false;
+		bool update_signals_crossing = false; // will we update signals or crossing state?
 		BeginVehicleMove(v);
 
 		GetNewVehiclePosResult gp = GetNewVehiclePos(v);
@@ -2914,7 +3012,7 @@
 
 					if (v->current_order.type == OT_LEAVESTATION) {
 						v->current_order.Free();
-						InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+						InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 					}
 				}
 			} else {
@@ -3009,11 +3107,6 @@
 					goto invalid_rail;
 				}
 
-				if (IsLevelCrossingTile(v->tile) && v->Next() == NULL) {
-					UnbarCrossing(v->tile);
-					MarkTileDirtyByTile(v->tile);
-				}
-
 				if (IsFrontEngine(v)) v->load_unload_time_rem = 0;
 
 				if (!HasBit(r, VETS_ENTERED_WORMHOLE)) {
@@ -3029,7 +3122,7 @@
 
 				/* We need to update signal status, but after the vehicle position hash
 				 * has been updated by AfterSetTrainPos() */
-				update_signals = true;
+				update_signals_crossing = true;
 
 				if (prev == NULL) AffectSpeedByDirChange(v, chosen_dir);
 
@@ -3044,7 +3137,7 @@
 					min(v->cur_speed, GetBridge(GetBridgeType(v->tile))->speed);
 			}
 
-			if (!(IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) || !HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
+			if (!IsTileType(gp.new_tile, MP_TUNNELBRIDGE) || !HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
 				v->x_pos = gp.x;
 				v->y_pos = gp.y;
 				VehiclePositionChanged(v);
@@ -3068,12 +3161,15 @@
 			AffectSpeedByZChange(v, old_z);
 		}
 
-		if (update_signals) {
+		if (update_signals_crossing) {
 			if (IsFrontEngine(v)) TrainMovedChangeSignals(gp.new_tile, enterdir);
 
 			/* Signals can only change when the first
 			 * (above) or the last vehicle moves. */
-			if (v->Next() == NULL) TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir));
+			if (v->Next() == NULL) {
+				TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir));
+				if (IsLevelCrossingTile(gp.old_tile)) UpdateLevelCrossing(gp.old_tile);
+			}
 		}
 	}
 	return;
@@ -3098,6 +3194,8 @@
  */
 static void DeleteLastWagon(Vehicle *v)
 {
+	Vehicle *first = v->First();
+
 	/* Go to the last wagon and delete the link pointing there
 	 * *u is then the one-before-last wagon, and *v the last
 	 * one which will physicially be removed */
@@ -3105,33 +3203,41 @@
 	for (; v->Next() != NULL; v = v->Next()) u = v;
 	u->SetNext(NULL);
 
-	InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
-	DeleteWindowById(WC_VEHICLE_VIEW, v->index);
+	if (first == v) {
+		/* Removing front vehicle (the last to go) */
+		DeleteWindowById(WC_VEHICLE_VIEW, v->index);
+		InvalidateWindow(WC_COMPANY, v->owner);
+	} else {
+		/* Recalculate cached train properties */
+		TrainConsistChanged(first);
+		InvalidateWindow(WC_VEHICLE_DETAILS, first->index);
+		/* Update the depot window if the first vehicle is in depot -
+		 * if v == first, then it is updated in PreDestructor() */
+		if (first->u.rail.track == TRACK_BIT_DEPOT) {
+			InvalidateWindow(WC_VEHICLE_DEPOT, first->tile);
+		}
+	}
+
 	RebuildVehicleLists();
-	InvalidateWindow(WC_COMPANY, v->owner);
-
-	BeginVehicleMove(v);
-	EndVehicleMove(v);
+
+	MarkSingleVehicleDirty(v);
+
+	/* 'v' shouldn't be accessed after it has been deleted */
+	TrackBits track = v->u.rail.track;
+	TileIndex tile = v->tile;
+	Owner owner = v->owner;
 
 	delete v;
-
-	if (v->u.rail.track != TRACK_BIT_DEPOT && v->u.rail.track != TRACK_BIT_WORMHOLE)
-		SetSignalsOnBothDir(v->tile, FIND_FIRST_BIT(v->u.rail.track));
-
-	/* Check if the wagon was on a road/rail-crossing and disable it if no
-	 * others are on it */
-	DisableTrainCrossing(v->tile);
-
-	if (v->u.rail.track == TRACK_BIT_WORMHOLE) { // inside a tunnel / bridge
-		TileIndex endtile = GetOtherTunnelBridgeEnd(v->tile);
-
-		if (GetVehicleTunnelBridge(v->tile, endtile) != NULL) return; // tunnel / bridge is busy
-
-		DiagDirection dir = GetTunnelBridgeDirection(v->tile);
-
-		/* v->direction is "random", so it cannot be used to determine the direction of the track */
-		UpdateSignalsOnSegment(v->tile, dir);
-		UpdateSignalsOnSegment(endtile, ReverseDiagDir(dir));
+	v = NULL; // make sure nobody will won't try to read 'v' anymore
+
+	/* check if the wagon was on a road/rail-crossing */
+	if (IsLevelCrossingTile(tile)) UpdateLevelCrossing(tile);
+
+	/* Update signals */
+	if (IsTileType(tile, MP_TUNNELBRIDGE) || IsTileDepotType(tile, TRANSPORT_RAIL)) {
+		UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, owner);
+	} else {
+		SetSignalsOnBothDir(tile, (Track)(FIND_FIRST_BIT(track)), owner);
 	}
 }
 
@@ -3222,12 +3328,120 @@
 	}
 }
 
-static const byte _breakdown_speeds[16] = {
+/** Maximum speeds for train that is broken down or approaching line end */
+static const uint16 _breakdown_speeds[16] = {
 	225, 210, 195, 180, 165, 150, 135, 120, 105, 90, 75, 60, 45, 30, 15, 15
 };
 
+
+/**
+ * Train is approaching line end, slow down and possibly reverse
+ *
+ * @param v front train engine
+ * @param signal not line end, just a red signal
+ * @return true iff we did NOT have to reverse
+ */
+static bool TrainApproachingLineEnd(Vehicle *v, bool signal)
+{
+	/* Calc position within the current tile */
+	uint x = v->x_pos & 0xF;
+	uint y = v->y_pos & 0xF;
+
+	/* for diagonal directions, 'x' will be 0..15 -
+	 * for other directions, it will be 1, 3, 5, ..., 15 */
+	switch (v->direction) {
+		case DIR_N : x = ~x + ~y + 25; break;
+		case DIR_NW: x = y;            /* FALLTHROUGH */
+		case DIR_NE: x = ~x + 16;      break;
+		case DIR_E : x = ~x + y + 9;   break;
+		case DIR_SE: x = y;            break;
+		case DIR_S : x = x + y - 7;    break;
+		case DIR_W : x = ~y + x + 9;   break;
+		default: break;
+	}
+
+	/* do not reverse when approaching red signal */
+	if (!signal && x + 4 >= TILE_SIZE) {
+		/* we are too near the tile end, reverse now */
+		v->cur_speed = 0;
+		ReverseTrainDirection(v);
+		return false;
+	}
+
+	/* slow down */
+	v->vehstatus |= VS_TRAIN_SLOWING;
+	uint16 break_speed = _breakdown_speeds[x & 0xF];
+	if (break_speed < v->cur_speed) v->cur_speed = break_speed;
+
+	return true;
+}
+
+
+/**
+ * Determines whether train would like to leave the tile
+ * @param v train to test
+ * @return true iff vehicle is NOT entering or inside a depot or tunnel/bridge
+ */
+static bool TrainCanLeaveTile(const Vehicle *v)
+{
+	/* Exit if inside a tunnel/bridge or a depot */
+	if (v->u.rail.track == TRACK_BIT_WORMHOLE || v->u.rail.track == TRACK_BIT_DEPOT) return false;
+
+	TileIndex tile = v->tile;
+
+	/* entering a tunnel/bridge? */
+	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+		DiagDirection dir = GetTunnelBridgeDirection(tile);
+		if (DiagDirToDir(dir) == v->direction) return false;
+	}
+
+	/* entering a depot? */
+	if (IsTileDepotType(tile, TRANSPORT_RAIL)) {
+		DiagDirection dir = ReverseDiagDir(GetRailDepotDirection(tile));
+		if (DiagDirToDir(dir) == v->direction) return false;
+	}
+
+	return true;
+}
+
+
+/**
+ * Determines whether train is approaching a rail-road crossing
+ *   (thus making it barred)
+ * @param v front engine of train
+ * @return TileIndex of crossing the train is approaching, else INVALID_TILE
+ * @pre v in non-crashed front engine
+ */
+static TileIndex TrainApproachingCrossingTile(const Vehicle *v)
+{
+	assert(IsFrontEngine(v));
+	assert(!(v->vehstatus & VS_CRASHED));
+
+	if (!TrainCanLeaveTile(v)) return INVALID_TILE;
+
+	DiagDirection dir = TrainExitDir(v->direction, v->u.rail.track);
+	TileIndex tile = v->tile + TileOffsByDiagDir(dir);
+
+	/* not a crossing || wrong axis || wrong railtype || wrong owner */
+	if (!IsLevelCrossingTile(tile) || DiagDirToAxis(dir) == GetCrossingRoadAxis(tile) ||
+			!CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) {
+		return INVALID_TILE;
+	}
+
+	return tile;
+}
+
+
+/**
+ * Checks for line end. Also, bars crossing at next tile if needed
+ *
+ * @param v vehicle we are checking
+ * @return true iff we did NOT have to reverse
+ */
 static bool TrainCheckIfLineEnds(Vehicle *v)
 {
+	/* First, handle broken down train */
+
 	int t = v->breakdown_ctr;
 	if (t > 1) {
 		v->vehstatus |= VS_TRAIN_SLOWING;
@@ -3238,84 +3452,36 @@
 		v->vehstatus &= ~VS_TRAIN_SLOWING;
 	}
 
-	if (v->u.rail.track == TRACK_BIT_WORMHOLE) return true; // exit if inside a tunnel
-	if (v->u.rail.track == TRACK_BIT_DEPOT) return true; // exit if inside a depot
-
-	TileIndex tile = v->tile;
-
-	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
-		DiagDirection dir = GetTunnelBridgeDirection(tile);
-		if (DiagDirToDir(dir) == v->direction) return true;
-	}
-
-	// depot?
-	/* XXX -- When enabled, this makes it possible to crash trains of others
-	     (by building a depot right against a station) */
-/*	if (IsTileType(tile, MP_RAILWAY) && GetRailTileType(tile) == RAIL_TILE_DEPOT_WAYPOINT)
-		return true;*/
+	if (!TrainCanLeaveTile(v)) return true;
 
 	/* Determine the non-diagonal direction in which we will exit this tile */
-	DiagDirection dir = DirToDiagDir(v->direction);
-	if (!(v->direction & 1) && v->u.rail.track != _state_dir_table[dir]) {
-		dir = ChangeDiagDir(dir, DIAGDIRDIFF_90LEFT);
-	}
+	DiagDirection dir = TrainExitDir(v->direction, v->u.rail.track);
 	/* Calculate next tile */
-	tile += TileOffsByDiagDir(dir);
-	// determine the track status on the next tile.
+	TileIndex tile = v->tile + TileOffsByDiagDir(dir);
+
+	/* Determine the track status on the next tile */
 	uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _reachable_tracks[dir];
 
-	/* Calc position within the current tile ?? */
-	uint x = v->x_pos & 0xF;
-	uint y = v->y_pos & 0xF;
-
-	switch (v->direction) {
-		case DIR_N : x = ~x + ~y + 24; break;
-		case DIR_NW: x = y;            /* FALLTHROUGH */
-		case DIR_NE: x = ~x + 16;      break;
-		case DIR_E : x = ~x + y + 8;   break;
-		case DIR_SE: x = y;            break;
-		case DIR_S : x = x + y - 8;    break;
-		case DIR_W : x = ~y + x + 8;   break;
-		default: break;
+	/* We are sure the train is not entering a depot, it is detected above */
+
+	/* no suitable trackbits at all || wrong railtype || not our track ||
+	 *   tunnel/bridge from opposite side || depot from opposite side */
+	if (GB(ts, 0, 16) == 0 || !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner ||
+			(IsTileType(tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(tile) != dir) ||
+			(IsTileDepotType(tile, TRANSPORT_RAIL) && GetRailDepotDirection(tile) == dir) ) {
+		return TrainApproachingLineEnd(v, false);
 	}
 
-	if (GB(ts, 0, 16) != 0) {
-		/* If we approach a rail-piece which we can't enter, or the back of a depot, don't enter it! */
-		if (x + 4 >= TILE_SIZE &&
-				(!CheckCompatibleRail(v, tile) ||
-				(IsTileDepotType(tile, TRANSPORT_RAIL) &&
-				GetRailDepotDirection(tile) == dir))) {
-			v->cur_speed = 0;
-			ReverseTrainDirection(v);
-			return false;
-		}
-		if ((ts &= (ts >> 16)) == 0) {
-			/* make a rail/road crossing red
-			 * do not make crossing red behind depot the train is entering */
-			if (IsLevelCrossingTile(tile) && (!IsTileDepotType(v->tile, TRANSPORT_RAIL) || GetRailDepotDirection(v->tile) == dir)) {
-				if (!IsCrossingBarred(tile)) {
-					BarCrossing(tile);
-					SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v);
-					MarkTileDirtyByTile(tile);
-				}
-			}
-			return true;
-		}
-	} else if (x + 4 >= TILE_SIZE) {
-		v->cur_speed = 0;
-		ReverseTrainDirection(v);
-		return false;
-	}
-
-	/* slow down */
-	v->vehstatus |= VS_TRAIN_SLOWING;
-	uint16 break_speed = _breakdown_speeds[x & 0xF];
-	if (!(v->direction & 1)) break_speed >>= 1;
-	if (break_speed < v->cur_speed) v->cur_speed = break_speed;
+	/* approaching red signal */
+	if ((ts & (ts >> 16)) != 0) return TrainApproachingLineEnd(v, true);
+
+	/* approaching a rail/road crossing? then make it red */
+	if (IsLevelCrossingTile(tile)) MaybeBarCrossingWithSound(tile);
 
 	return true;
 }
 
+
 static void TrainLocoHandler(Vehicle *v, bool mode)
 {
 	/* train has crashed? */
@@ -3359,6 +3525,12 @@
 	if (!mode) HandleLocomotiveSmokeCloud(v);
 
 	int j = UpdateTrainSpeed(v);
+
+	/* we need to invalidate the widget if we are stopping from 'Stopping 0 km/h' to 'Stopped' */
+	if (v->cur_speed == 0 && v->u.rail.last_speed == 0 && v->vehstatus & VS_STOPPED) {
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
+	}
+
 	if (j == 0) {
 		/* if the vehicle has speed 0, update the last_speed field. */
 		if (v->cur_speed != 0) return;
@@ -3435,7 +3607,7 @@
 			 * schedule? */
 			v->current_order.type = OT_DUMMY;
 			v->current_order.flags = 0;
-			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		}
 		return;
 	}
@@ -3449,44 +3621,44 @@
 	}
 
 	v->current_order.type = OT_GOTO_DEPOT;
-	v->current_order.flags = OF_NON_STOP;
+	v->current_order.flags = OFB_NON_STOP;
 	v->current_order.dest = depot->index;
 	v->dest_tile = tfdd.tile;
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 }
 
-void OnNewDay_Train(Vehicle *v)
+void Train::OnNewDay()
 {
-	if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
-
-	if (IsFrontEngine(v)) {
-		CheckVehicleBreakdown(v);
-		AgeVehicle(v);
-
-		CheckIfTrainNeedsService(v);
-
-		CheckOrders(v);
+	if ((++this->day_counter & 7) == 0) DecreaseVehicleValue(this);
+
+	if (IsFrontEngine(this)) {
+		CheckVehicleBreakdown(this);
+		AgeVehicle(this);
+
+		CheckIfTrainNeedsService(this);
+
+		CheckOrders(this);
 
 		/* update destination */
-		if (v->current_order.type == OT_GOTO_STATION) {
-			TileIndex tile = GetStation(v->current_order.dest)->train_tile;
-			if (tile != 0) v->dest_tile = tile;
+		if (this->current_order.type == OT_GOTO_STATION) {
+			TileIndex tile = GetStation(this->current_order.dest)->train_tile;
+			if (tile != 0) this->dest_tile = tile;
 		}
 
-		if ((v->vehstatus & VS_STOPPED) == 0) {
+		if ((this->vehstatus & VS_STOPPED) == 0) {
 			/* running costs */
-			CommandCost cost(EXPENSES_TRAIN_RUN, v->GetRunningCost() / 364);
-
-			v->profit_this_year -= cost.GetCost() >> 8;
-
-			SubtractMoneyFromPlayerFract(v->owner, cost);
-
-			InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+			CommandCost cost(EXPENSES_TRAIN_RUN, this->GetRunningCost() / 364);
+
+			this->profit_this_year -= cost.GetCost() >> 8;
+
+			SubtractMoneyFromPlayerFract(this->owner, cost);
+
+			InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 		}
-	} else if (IsTrainEngine(v)) {
+	} else if (IsTrainEngine(this)) {
 		/* Also age engines that aren't front engines */
-		AgeVehicle(v);
+		AgeVehicle(this);
 	}
 }
 
--- a/src/train_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/train_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,8 +5,6 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "gfx_func.h"
@@ -19,6 +17,9 @@
 #include "vehicle_func.h"
 #include "settings_type.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+
 void CcBuildWagon(bool success, TileIndex tile, uint32 p1, uint32 p2)
 {
 	Vehicle *v, *found;
@@ -240,7 +241,7 @@
 		}
 
 		/* draw total cargo tab */
-		DrawString(x, y + 2, STR_013F_TOTAL_CAPACITY_TEXT, TC_FROMSTRING);
+		DrawString(x, y + 2, STR_TOTAL_CAPACITY_TEXT, TC_FROMSTRING);
 		for (CargoID i = 0; i < NUM_CARGO; i++) {
 			if (max_cargo[i] > 0 && --vscroll_pos < 0 && vscroll_pos > -vscroll_cap) {
 				y += 14;
@@ -249,7 +250,7 @@
 				SetDParam(2, i);            // {SHORTCARGO} #1
 				SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2
 				SetDParam(4, _patches.freight_trains);
-				DrawString(x, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_013F_TOTAL_CAPACITY, TC_FROMSTRING);
+				DrawString(x, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_TOTAL_CAPACITY, TC_FROMSTRING);
 			}
 		}
 		SetDParam(0, v->cargo.FeederShare());
--- a/src/transparency_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/transparency_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -2,14 +2,15 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "gui.h"
 #include "window_gui.h"
 #include "variables.h"
 #include "transparency.h"
 #include "sound_func.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+
 TransparencyOptionBits _transparency_opt;
 
 enum TransparencyToolbarWidgets{
@@ -36,6 +37,7 @@
 			for (uint i = TTW_WIDGET_SIGNS; i < TTW_WIDGET_END; i++) {
 				w->SetWidgetLoweredState(i, IsTransparencySet((TransparencyOption)(i - TTW_WIDGET_SIGNS)));
 			}
+
 			DrawWindowWidgets(w);
 			break;
 
--- a/src/tree_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tree_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,9 +6,6 @@
 #include "openttd.h"
 #include "bridge_map.h"
 #include "clear_map.h"
-#include "table/strings.h"
-#include "table/sprites.h"
-#include "table/tree_land.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "tree_map.h"
@@ -20,8 +17,15 @@
 #include "genworld.h"
 #include "transparency.h"
 #include "functions.h"
-#include "player.h"
+#include "player_func.h"
 #include "sound_func.h"
+#include "settings_type.h"
+#include "water_map.h"
+#include "water.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/tree_land.h"
 
 /**
  * List of tree placer algorithm.
@@ -35,6 +39,66 @@
 };
 
 /**
+ * Tests if a tile can be converted to MP_TREES
+ * This is true for clear ground without farms or rocks.
+ *
+ * @param tile the tile of interest
+ * @param allow_desert Allow planting trees on CLEAR_DESERT?
+ * @return true if trees can be built.
+ */
+static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert)
+{
+	switch (GetTileType(tile)) {
+		case MP_WATER:
+			return !IsBridgeAbove(tile) && IsCoast(tile) && !IsSlopeWithOneCornerRaised(GetTileSlope(tile, NULL));
+
+		case MP_CLEAR:
+			return !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && !IsClearGround(tile, CLEAR_ROCKS) &&
+			       (allow_desert || !IsClearGround(tile, CLEAR_DESERT));
+
+		default: return false;
+	}
+}
+
+/**
+ * Creates a tree tile
+ * Ground type and density is preserved.
+ *
+ * @pre the tile must be suitable for trees.
+ *
+ * @param tile where to plant the trees.
+ * @param type The type of the tree
+ * @param count the number of trees (minus 1)
+ * @param growth the growth status
+ */
+static void PlantTreesOnTile(TileIndex tile, TreeType treetype, uint count, uint growth)
+{
+	assert(treetype != TREE_INVALID);
+	assert(CanPlantTreesOnTile(tile, true));
+
+	TreeGround ground;
+	uint density = 3;
+
+	switch (GetTileType(tile)) {
+		case MP_WATER:
+			ground = TREE_GROUND_SHORE;
+			break;
+
+		case MP_CLEAR:
+			switch (GetClearGround(tile)) {
+				case CLEAR_GRASS:  ground = TREE_GROUND_GRASS;       density = GetClearDensity(tile); break;
+				case CLEAR_ROUGH:  ground = TREE_GROUND_ROUGH;                                        break;
+				default:           ground = TREE_GROUND_SNOW_DESERT; density = GetClearDensity(tile); break;
+			}
+			break;
+
+		default: NOT_REACHED();
+	}
+
+	MakeTree(tile, treetype, count, growth, ground, density);
+}
+
+/**
  * Get a random TreeType for the given tile based on a given seed
  *
  * This function returns a random TreeType which can be placed on the given tile.
@@ -56,7 +120,7 @@
 
 		case LT_TROPIC:
 			switch (GetTropicZone(tile)) {
-				case TROPICZONE_INVALID: return (TreeType)(seed * TREE_COUNT_SUB_TROPICAL / 256 + TREE_SUB_TROPICAL);
+				case TROPICZONE_NORMAL:  return (TreeType)(seed * TREE_COUNT_SUB_TROPICAL / 256 + TREE_SUB_TROPICAL);
 				case TROPICZONE_DESERT:  return (TreeType)((seed > 12) ? TREE_INVALID : TREE_CACTUS);
 				default:                 return (TreeType)(seed * TREE_COUNT_RAINFOREST / 256 + TREE_RAINFOREST);
 			}
@@ -80,16 +144,16 @@
 	TreeType tree = GetRandomTreeType(tile, GB(r, 24, 8));
 
 	if (tree != TREE_INVALID) {
-		MakeTree(tile, tree, GB(r, 22, 2), min(GB(r, 16, 3), 6), TREE_GROUND_GRASS, 0);
+		PlantTreesOnTile(tile, tree, GB(r, 22, 2), min(GB(r, 16, 3), 6));
 
-		/* above snowline? */
-		if (_opt.landscape == LT_ARCTIC && GetTileZ(tile) > GetSnowLine()) {
-			SetTreeGroundDensity(tile, TREE_GROUND_SNOW_DESERT, 3);
-			SetTreeCounter(tile, (TreeGround)GB(r, 24, 3));
-		} else {
+		/* Rerandomize ground, if neither snow nor shore */
+		TreeGround ground = GetTreeGround(tile);
+		if (ground != TREE_GROUND_SNOW_DESERT && ground != TREE_GROUND_SHORE) {
 			SetTreeGroundDensity(tile, (TreeGround)GB(r, 28, 1), 3);
-			SetTreeCounter(tile, (TreeGround)GB(r, 24, 4));
 		}
+
+		/* Set the counter to a random start value */
+		SetTreeCounter(tile, (TreeGround)GB(r, 24, 4));
 	}
 }
 
@@ -113,11 +177,7 @@
 		uint dist = abs(x) + abs(y);
 		TileIndex cur_tile = TILE_MASK(tile + TileDiffXY(x, y));
 
-		if (dist <= 13 &&
-				IsTileType(cur_tile, MP_CLEAR) &&
-				!IsBridgeAbove(cur_tile) &&
-				!IsClearGround(cur_tile, CLEAR_FIELDS) &&
-				!IsClearGround(cur_tile, CLEAR_ROCKS)) {
+		if (dist <= 13 && CanPlantTreesOnTile(cur_tile, true)) {
 			PlaceTree(cur_tile, r);
 		}
 	}
@@ -145,7 +205,7 @@
  * @param tile The base tile to add a new tree somewhere around
  * @param height The height (like the one from the tile)
  */
-void PlaceTreeAtSameHeight(TileIndex tile, uint height)
+static void PlaceTreeAtSameHeight(TileIndex tile, uint height)
 {
 	uint i;
 
@@ -159,10 +219,7 @@
 		if (abs(x) + abs(y) > 16) continue;
 
 		/* Clear tile, no farm-tiles or rocks */
-		if (!IsTileType(cur_tile, MP_CLEAR) ||
-				IsClearGround(cur_tile, CLEAR_FIELDS) ||
-				IsClearGround(cur_tile, CLEAR_ROCKS))
-			continue;
+		if (!CanPlantTreesOnTile(cur_tile, true)) continue;
 
 		/* Not too much height difference */
 		if (Delta(GetTileZ(cur_tile), height) > 2) continue;
@@ -189,10 +246,7 @@
 
 		IncreaseGeneratingWorldProgress(GWP_TREE);
 
-		if (IsTileType(tile, MP_CLEAR) &&
-				!IsBridgeAbove(tile) &&
-				!IsClearGround(tile, CLEAR_FIELDS) &&
-				!IsClearGround(tile, CLEAR_ROCKS)) {
+		if (CanPlantTreesOnTile(tile, true)) {
 			PlaceTree(tile, r);
 			if (_patches.tree_placer != TP_IMPROVED) continue;
 
@@ -224,10 +278,7 @@
 
 			IncreaseGeneratingWorldProgress(GWP_TREE);
 
-			if (IsTileType(tile, MP_CLEAR) &&
-					!IsBridgeAbove(tile) &&
-					!IsClearGround(tile, CLEAR_FIELDS) &&
-					GetTropicZone(tile) == TROPICZONE_RAINFOREST) {
+			if (GetTropicZone(tile) == TROPICZONE_RAINFOREST && CanPlantTreesOnTile(tile, false)) {
 				PlaceTree(tile, r);
 			}
 		} while (--i);
@@ -311,21 +362,30 @@
 					break;
 
 				case MP_WATER:
-					msg = STR_3807_CAN_T_BUILD_ON_WATER;
-					continue;
-					break;
-
+					if (!IsCoast(tile) || IsSlopeWithOneCornerRaised(GetTileSlope(tile, NULL))) {
+						msg = STR_3807_CAN_T_BUILD_ON_WATER;
+						continue;
+					}
+				/* FALL THROUGH */
 				case MP_CLEAR:
-					if (!IsTileOwner(tile, OWNER_NONE) ||
-							IsBridgeAbove(tile)) {
+					if (IsBridgeAbove(tile)) {
 						msg = STR_2804_SITE_UNSUITABLE;
 						continue;
 					}
 
-					switch (GetClearGround(tile)) {
-						case CLEAR_FIELDS: cost.AddCost(_price.clear_fields); break;
-						case CLEAR_ROCKS:  cost.AddCost(_price.clear_rocks); break;
-						default: break;
+					if (IsTileType(tile, MP_CLEAR)) {
+						/* Remove fields or rocks. Note that the ground will get barrened */
+						switch (GetClearGround(tile)) {
+							case CLEAR_FIELDS:
+							case CLEAR_ROCKS: {
+								CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+								if (CmdFailed(ret)) return ret;
+								cost.AddCost(ret);
+								break;
+							}
+
+							default: break;
+						}
 					}
 
 					if (_game_mode != GM_EDITOR && IsValidPlayer(_current_player)) {
@@ -335,7 +395,6 @@
 
 					if (flags & DC_EXEC) {
 						TreeType treetype;
-						uint growth;
 
 						treetype = (TreeType)p1;
 						if (treetype == TREE_INVALID) {
@@ -343,15 +402,11 @@
 							if (treetype == TREE_INVALID) treetype = TREE_CACTUS;
 						}
 
-						growth = _game_mode == GM_EDITOR ? 3 : 0;
-						switch (GetClearGround(tile)) {
-							case CLEAR_ROUGH:  MakeTree(tile, treetype, 0, growth, TREE_GROUND_ROUGH, 3); break;
-							case CLEAR_SNOW:
-							case CLEAR_DESERT: MakeTree(tile, treetype, 0, growth, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
-							default:           MakeTree(tile, treetype, 0, growth, TREE_GROUND_GRASS, GetClearDensity(tile)); break;
-						}
+						/* Plant full grown trees in scenario editor */
+						PlantTreesOnTile(tile, treetype, 0, _game_mode == GM_EDITOR ? 3 : 0);
 						MarkTileDirtyByTile(tile);
 
+						/* When planting rainforest-trees, set tropiczone to rainforest in editor. */
 						if (_game_mode == GM_EDITOR && IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS))
 							SetTropicZone(tile, TROPICZONE_RAINFOREST);
 					}
@@ -385,6 +440,7 @@
 	byte z;
 
 	switch (GetTreeGround(ti->tile)) {
+		case TREE_GROUND_SHORE: DrawShoreTile(ti->tileh); break;
 		case TREE_GROUND_GRASS: DrawClearLandTile(ti, GetTreeDensity(ti->tile)); break;
 		case TREE_GROUND_ROUGH: DrawHillyLandTile(ti); break;
 		default: DrawGroundSprite(_tree_sprites_1[GetTreeDensity(ti->tile)] + _tileh_to_sprite[ti->tileh], PAL_NONE); break;
@@ -426,6 +482,7 @@
 
 	StartSpriteCombine();
 
+	/* Do not draw trees when the invisible trees patch and transparency tree are set */
 	if (!(IsTransparencySet(TO_TREES) && _patches.invisible_trees)) {
 		TreeListEnt te[4];
 		uint i;
@@ -576,9 +633,13 @@
 
 static void TileLoop_Trees(TileIndex tile)
 {
-	switch (_opt.landscape) {
-		case LT_TROPIC: TileLoopTreesDesert(tile); break;
-		case LT_ARCTIC: TileLoopTreesAlps(tile);   break;
+	if (GetTreeGround(tile) == TREE_GROUND_SHORE) {
+		TileLoop_Water(tile);
+	} else {
+		switch (_opt.landscape) {
+			case LT_TROPIC: TileLoopTreesDesert(tile); break;
+			case LT_ARCTIC: TileLoopTreesAlps(tile);   break;
+		}
 	}
 
 	TileLoopClearHelper(tile);
@@ -624,19 +685,14 @@
 
 						tile += TileOffsByDir((Direction)(Random() & 7));
 
-						if (!IsTileType(tile, MP_CLEAR) || IsBridgeAbove(tile)) return;
+						/* Cacti don't spread */
+						if (!CanPlantTreesOnTile(tile, false)) return;
 
-						switch (GetClearGround(tile)) {
-							case CLEAR_GRASS:
-								if (GetClearDensity(tile) != 3) return;
-								MakeTree(tile, treetype, 0, 0, TREE_GROUND_GRASS, 3);
-								break;
+						/* Don't plant trees, if ground was freshly cleared */
+						if (IsTileType(tile, MP_CLEAR) && GetClearGround(tile) == CLEAR_GRASS && GetClearDensity(tile) != 3) return;
 
-							case CLEAR_ROUGH: MakeTree(tile, treetype, 0, 0, TREE_GROUND_ROUGH, 3); break;
-							case CLEAR_DESERT: return; // Cacti don't spread
-							case CLEAR_SNOW: MakeTree(tile, treetype, 0, 0, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
-							default: return;
-						}
+						PlantTreesOnTile(tile, treetype, 0, 0);
+
 						break;
 					}
 
@@ -654,6 +710,7 @@
 			} else {
 				/* just one tree, change type into MP_CLEAR */
 				switch (GetTreeGround(tile)) {
+					case TREE_GROUND_SHORE: MakeShore(tile); break;
 					case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); break;
 					case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break;
 					default: // snow or desert
@@ -675,17 +732,14 @@
 {
 	uint32 r;
 	TileIndex tile;
-	ClearGround ct;
 	TreeType tree;
 
 	/* place a tree at a random rainforest spot */
 	if (_opt.landscape == LT_TROPIC &&
 			(r = Random(), tile = RandomTileSeed(r), GetTropicZone(tile) == TROPICZONE_RAINFOREST) &&
-			IsTileType(tile, MP_CLEAR) &&
-			!IsBridgeAbove(tile) &&
-			(ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH) &&
+			CanPlantTreesOnTile(tile, false) &&
 			(tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
-		MakeTree(tile, tree, 0, 0, ct == CLEAR_ROUGH ? TREE_GROUND_ROUGH : TREE_GROUND_GRASS, GetClearDensity(tile));
+		PlantTreesOnTile(tile, tree, 0, 0);
 	}
 
 	/* byte underflow */
@@ -694,15 +748,8 @@
 	/* place a tree at a random spot */
 	r = Random();
 	tile = TILE_MASK(r);
-	if (IsTileType(tile, MP_CLEAR) &&
-			!IsBridgeAbove(tile) &&
-			(ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH || ct == CLEAR_SNOW) &&
-			(tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
-		switch (ct) {
-			case CLEAR_GRASS: MakeTree(tile, tree, 0, 0, TREE_GROUND_GRASS, GetClearDensity(tile)); break;
-			case CLEAR_ROUGH: MakeTree(tile, tree, 0, 0, TREE_GROUND_ROUGH, 3); break;
-			default: MakeTree(tile, tree, 0, 0, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
-		}
+	if (CanPlantTreesOnTile(tile, false) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
+		PlantTreesOnTile(tile, tree, 0, 0);
 	}
 }
 
--- a/src/tree_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tree_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -49,7 +49,8 @@
 enum TreeGround {
 	TREE_GROUND_GRASS       = 0, ///< normal grass
 	TREE_GROUND_ROUGH       = 1, ///< some rough tile
-	TREE_GROUND_SNOW_DESERT = 2  ///< a desert or snow tile, depend on landscape
+	TREE_GROUND_SNOW_DESERT = 2, ///< a desert or snow tile, depend on landscape
+	TREE_GROUND_SHORE       = 3, ///< shore
 };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tunnelbridge.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,26 @@
+/* $Id$ */
+
+/** @file tunnelbridge.h Header file for things common for tunnels and bridges */
+
+#ifndef TUNNELBRIDGE_H
+#define TUNNELBRIDGE_H
+
+#include "tile_type.h"
+#include "map_func.h"
+#include "tunnelbridge_map.h"
+
+/**
+ * Calculates the length of a tunnel or a bridge (without end tiles)
+ * @return length of bridge/tunnel middle
+ */
+static inline uint GetTunnelBridgeLength(TileIndex begin, TileIndex end)
+{
+	int x1 = TileX(begin);
+	int y1 = TileY(begin);
+	int x2 = TileX(end);
+	int y2 = TileY(end);
+
+	return abs(x2 + y2 - x1 - y1) - 1;
+}
+
+#endif /* TUNNELBRIDGE_H */
--- a/src/tunnelbridge_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/tunnelbridge_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -10,15 +10,12 @@
 #include "bridge_map.h"
 #include "rail_map.h"
 #include "road_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "tunnel_map.h"
 #include "unmovable_map.h"
 #include "viewport_func.h"
 #include "command_func.h"
-#include "player.h"
 #include "town.h"
 #include "variables.h"
 #include "bridge.h"
@@ -29,38 +26,87 @@
 #include "autoslope.h"
 #include "transparency.h"
 #include "tunnelbridge_map.h"
-#include "table/bridge_land.h"
 #include "strings_func.h"
 #include "date_func.h"
 #include "functions.h"
 #include "vehicle_func.h"
 #include "sound_func.h"
+#include "signal_func.h"
+#include "tunnelbridge.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+#include "table/bridge_land.h"
+
+
+/** Describes the data that defines each bridge in the game
+ * @param y   year of availablity
+ * @param mnl minimum length
+ * @param mxl maximum length
+ * @param p   price
+ * @param mxs maximum speed allowed
+ * @param spr sprite to use in purchase GUI
+ * @param plt palette for the sprite in purchase GUI
+ * @param dsc description of the bridge in purchase GUI
+ * @param nrl description of the rail bridge in query tool
+ * @param nrd description of the road bridge in query tool
+ */
+#define MB(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
+	{y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd, NULL, 0}
 
 const Bridge orig_bridge[] = {
 /*
-	     year of availablity
-	     |  minimum length
-	     |  |   maximum length
-	     |  |   |    price
-	     |  |   |    |    maximum speed
-	     |  |   |    |    |  sprite to use in GUI                string with description
-	     |  |   |    |    |  |                                   |                            */
-	{    0, 0, 16,  80,  32, 0xA24, PAL_NONE                  , STR_5012_WOODEN             , NULL, 0 },
-	{    0, 0,  2, 112,  48, 0xA26, PALETTE_TO_STRUCT_RED     , STR_5013_CONCRETE           , NULL, 0 },
-	{ 1930, 0,  5, 144,  64, 0xA25, PAL_NONE                  , STR_500F_GIRDER_STEEL       , NULL, 0 },
-	{    0, 2, 10, 168,  80, 0xA22, PALETTE_TO_STRUCT_CONCRETE, STR_5011_SUSPENSION_CONCRETE, NULL, 0 },
-	{ 1930, 3, 16, 185,  96, 0xA22, PAL_NONE                  , STR_500E_SUSPENSION_STEEL   , NULL, 0 },
-	{ 1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW  , STR_500E_SUSPENSION_STEEL   , NULL, 0 },
-	{ 1930, 3,  7, 224, 160, 0xA23, PAL_NONE                  , STR_5010_CANTILEVER_STEEL   , NULL, 0 },
-	{ 1930, 3,  8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN   , STR_5010_CANTILEVER_STEEL   , NULL, 0 },
-	{ 1930, 3,  9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED     , STR_5010_CANTILEVER_STEEL   , NULL, 0 },
-	{ 1930, 0,  2, 240, 256, 0xA27, PAL_NONE                  , STR_500F_GIRDER_STEEL       , NULL, 0 },
-	{ 1995, 2, 16, 255, 320, 0xA28, PAL_NONE                  , STR_5014_TUBULAR_STEEL      , NULL, 0 },
-	{ 2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW  , STR_5014_TUBULAR_STEEL      , NULL, 0 },
-	{ 2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY    , STR_BRIDGE_TUBULAR_SILICON  , NULL, 0 }
+	       year of availablity
+	       |  minimum length
+	       |  |   maximum length
+	       |  |   |    price
+	       |  |   |    |    maximum speed
+	       |  |   |    |    |  sprite to use in GUI
+	       |  |   |    |    |  |      palette in GUI
+	   string with description        name on rail                             name on road
+	   |                              |                                        | */
+	MB(    0, 0, 16,  80,  32, 0xA24, PAL_NONE,
+	   STR_5012_WOODEN,               STR_501F_WOODEN_RAIL_BRIDGE,             STR_5025_WOODEN_ROAD_BRIDGE),
+
+	MB(    0, 0,  2, 112,  48, 0xA26, PALETTE_TO_STRUCT_RED,
+	   STR_5013_CONCRETE,             STR_5020_CONCRETE_RAIL_BRIDGE,           STR_5026_CONCRETE_ROAD_BRIDGE),
+
+	MB( 1930, 0,  5, 144,  64, 0xA25, PAL_NONE,
+	   STR_500F_GIRDER_STEEL,         STR_501C_STEEL_GIRDER_RAIL_BRIDGE,       STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
+
+	MB(    0, 2, 10, 168,  80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
+	   STR_5011_SUSPENSION_CONCRETE,  STR_501E_REINFORCED_CONCRETE_SUSPENSION, STR_5024_REINFORCED_CONCRETE_SUSPENSION),
+
+	MB( 1930, 3, 16, 185,  96, 0xA22, PAL_NONE,
+	   STR_500E_SUSPENSION_STEEL,     STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE,   STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
+
+	MB( 1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
+	   STR_500E_SUSPENSION_STEEL,     STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE,   STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
+
+	MB( 1930, 3,  7, 224, 160, 0xA23, PAL_NONE,
+	   STR_5010_CANTILEVER_STEEL,     STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,   STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
+
+	MB( 1930, 3,  8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
+	   STR_5010_CANTILEVER_STEEL,     STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,   STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
+
+	MB( 1930, 3,  9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
+	   STR_5010_CANTILEVER_STEEL,     STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,   STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
+
+	MB( 1930, 0,  2, 240, 256, 0xA27, PAL_NONE,
+	   STR_500F_GIRDER_STEEL,         STR_501C_STEEL_GIRDER_RAIL_BRIDGE,       STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
+
+	MB( 1995, 2, 16, 255, 320, 0xA28, PAL_NONE,
+	   STR_5014_TUBULAR_STEEL,        STR_5027_TUBULAR_RAIL_BRIDGE,            STR_5028_TUBULAR_ROAD_BRIDGE),
+
+	MB( 2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
+	   STR_5014_TUBULAR_STEEL,        STR_5027_TUBULAR_RAIL_BRIDGE,            STR_5028_TUBULAR_ROAD_BRIDGE),
+
+	MB( 2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY,
+	   STR_BRIDGE_TUBULAR_SILICON,    STR_5027_TUBULAR_RAIL_BRIDGE,            STR_5028_TUBULAR_ROAD_BRIDGE)
 };
 
+#undef MB
+
 Bridge _bridge[MAX_BRIDGES];
 
 
@@ -81,17 +127,28 @@
 	}
 }
 
-#define M(x) (1 << (x))
-enum BridgeFoundation {
-	/* foundation, whole tile is leveled up --> 3 corners raised */
-	BRIDGE_FULL_LEVELED_FOUNDATION = M(SLOPE_WSE) | M(SLOPE_NWS) | M(SLOPE_ENW) | M(SLOPE_SEN),
-	/* foundation, tile is partly leveled up --> 1 corner raised */
-	BRIDGE_PARTLY_LEVELED_FOUNDATION = M(SLOPE_W) | M(SLOPE_S) | M(SLOPE_E) | M(SLOPE_N),
-	/* no foundations (X,Y direction) */
-	BRIDGE_NO_FOUNDATION = M(SLOPE_FLAT) | M(SLOPE_SW) | M(SLOPE_SE) | M(SLOPE_NW) | M(SLOPE_NE),
-	BRIDGE_HORZ_RAMP = (BRIDGE_PARTLY_LEVELED_FOUNDATION | BRIDGE_NO_FOUNDATION) & ~M(SLOPE_FLAT)
-};
-#undef M
+Foundation GetBridgeFoundation(Slope tileh, Axis axis)
+{
+	if ((tileh == SLOPE_FLAT) ||
+	    (((tileh == SLOPE_NE) || (tileh == SLOPE_SW)) && (axis == AXIS_X)) ||
+	    (((tileh == SLOPE_NW) || (tileh == SLOPE_SE)) && (axis == AXIS_Y))) return FOUNDATION_NONE;
+
+	return (HasSlopeHighestCorner(tileh) ? InclinedFoundation(axis) : FlatteningFoundation(tileh));
+}
+
+/**
+ * Determines if the track on a bridge ramp is flat or goes up/down.
+ *
+ * @param tileh Slope of the tile under the bridge head
+ * @param axis Orientation of bridge
+ * @return true iff the track is flat.
+ */
+bool HasBridgeFlatRamp(Slope tileh, Axis axis)
+{
+	ApplyFoundationToSlope(GetBridgeFoundation(tileh, axis), &tileh);
+	/* If the foundation slope is flat the bridge has a non-flat ramp and vice versa. */
+	return (tileh != SLOPE_FLAT);
+}
 
 static inline const PalSpriteID *GetBridgeSpriteTable(int index, byte table)
 {
@@ -107,52 +164,46 @@
 static inline byte GetBridgeFlags(int index) { return _bridge[index].flags;}
 
 
-/** Check the slope at the bridge ramps in three easy steps:
- * - valid slopes without foundation
- * - valid slopes with foundation
- * - rest is invalid
+/**
+ * Determines the foundation for the north bridge head, and tests if the resulting slope is valid.
+ *
+ * @param axis Axis of the bridge
+ * @param tileh Slope of the tile under the north bridge head; returns slope on top of foundation
+ * @param z TileZ corresponding to tileh, gets modified as well
+ * @return Error or cost for bridge foundation
  */
-#define M(x) (1 << (x))
-static CommandCost CheckBridgeSlopeNorth(Axis axis, Slope tileh)
+static CommandCost CheckBridgeSlopeNorth(Axis axis, Slope *tileh, uint *z)
 {
-	uint32 valid;
-
-	valid = M(SLOPE_FLAT) | (axis == AXIS_X ? M(SLOPE_NE) : M(SLOPE_NW));
-	if (HasBit(valid, tileh)) return CommandCost();
+	Foundation f = GetBridgeFoundation(*tileh, axis);
+	*z += ApplyFoundationToSlope(f, tileh);
 
-	valid =
-		BRIDGE_FULL_LEVELED_FOUNDATION | M(SLOPE_N) | M(SLOPE_STEEP_N) |
-		(axis == AXIS_X ? M(SLOPE_E) | M(SLOPE_STEEP_E) : M(SLOPE_W) | M(SLOPE_STEEP_W));
-	if (HasBit(valid, tileh)) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
+	Slope valid_inclined = (axis == AXIS_X ? SLOPE_NE : SLOPE_NW);
+	if ((*tileh != SLOPE_FLAT) && (*tileh != valid_inclined)) return CMD_ERROR;
 
-	return CMD_ERROR;
+	if (f == FOUNDATION_NONE) return CommandCost();
+
+	return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 }
 
-static CommandCost CheckBridgeSlopeSouth(Axis axis, Slope tileh)
+/**
+ * Determines the foundation for the south bridge head, and tests if the resulting slope is valid.
+ *
+ * @param axis Axis of the bridge
+ * @param tileh Slope of the tile under the south bridge head; returns slope on top of foundation
+ * @param z TileZ corresponding to tileh, gets modified as well
+ * @return Error or cost for bridge foundation
+ */
+static CommandCost CheckBridgeSlopeSouth(Axis axis, Slope *tileh, uint *z)
 {
-	uint32 valid;
-
-	valid = M(SLOPE_FLAT) | (axis == AXIS_X ? M(SLOPE_SW) : M(SLOPE_SE));
-	if (HasBit(valid, tileh)) return CommandCost();
-
-	valid =
-		BRIDGE_FULL_LEVELED_FOUNDATION | M(SLOPE_S) | M(SLOPE_STEEP_S) |
-		(axis == AXIS_X ? M(SLOPE_W) | M(SLOPE_STEEP_W) : M(SLOPE_E) | M(SLOPE_STEEP_E));
-	if (HasBit(valid, tileh)) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
+	Foundation f = GetBridgeFoundation(*tileh, axis);
+	*z += ApplyFoundationToSlope(f, tileh);
 
-	return CMD_ERROR;
-}
-#undef M
-
+	Slope valid_inclined = (axis == AXIS_X ? SLOPE_SW : SLOPE_SE);
+	if ((*tileh != SLOPE_FLAT) && (*tileh != valid_inclined)) return CMD_ERROR;
 
-uint32 GetBridgeLength(TileIndex begin, TileIndex end)
-{
-	int x1 = TileX(begin);
-	int y1 = TileY(begin);
-	int x2 = TileX(end);
-	int y2 = TileY(end);
+	if (f == FOUNDATION_NONE) return CommandCost();
 
-	return abs(x2 + y2 - x1 - y1) - 1;
+	return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 }
 
 bool CheckBridge_Stuff(byte bridge_type, uint bridge_len)
@@ -198,8 +249,7 @@
 	uint bridge_len;
 	Axis direction;
 	CommandCost cost(EXPENSES_CONSTRUCTION);
-	CommandCost terraformcost, ret;
-	bool allow_on_slopes;
+	CommandCost ret;
 	bool replace_bridge = false;
 	uint replaced_bridge_type;
 
@@ -214,7 +264,7 @@
 		roadtypes = (RoadTypes)GB(p2, 8, 3);
 		if (!AreValidRoadTypes(roadtypes) || !HasRoadTypesAvail(_current_player, roadtypes)) return CMD_ERROR;
 	} else {
-		if (!ValParamRailtype(GB(p2, 8, 8))) return CMD_ERROR;
+		if (!ValParamRailtype((RailType)GB(p2, 8, 8))) return CMD_ERROR;
 		railtype = (RailType)GB(p2, 8, 8);
 		roadtypes = ROADTYPES_NONE;
 	}
@@ -250,16 +300,11 @@
 	tileh_start = GetTileSlope(tile_start, &z_start);
 	tileh_end = GetTileSlope(tile_end, &z_end);
 
-	if (IsSteepSlope(tileh_start)) z_start += TILE_HEIGHT;
-	if (HasBit(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_start)) z_start += TILE_HEIGHT;
-
-	if (IsSteepSlope(tileh_end)) z_end += TILE_HEIGHT;
-	if (HasBit(BRIDGE_FULL_LEVELED_FOUNDATION, tileh_end)) z_end += TILE_HEIGHT;
+	CommandCost terraform_cost_north = CheckBridgeSlopeNorth(direction, &tileh_start, &z_start);
+	CommandCost terraform_cost_south = CheckBridgeSlopeSouth(direction, &tileh_end, &z_end);
 
 	if (z_start != z_end) return_cmd_error(STR_BRIDGEHEADS_NOT_SAME_HEIGHT);
 
-	allow_on_slopes = _patches.build_on_slopes;
-
 	TransportType transport_type = railtype == INVALID_RAILTYPE ? TRANSPORT_ROAD : TRANSPORT_RAIL;
 
 	if (IsBridgeTile(tile_start) && IsBridgeTile(tile_end) &&
@@ -304,15 +349,16 @@
 	} else {
 		/* Build a new bridge. */
 
+		bool allow_on_slopes = _patches.build_on_slopes;
+
 		/* Try and clear the start landscape */
 		ret = DoCommand(tile_start, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 		if (CmdFailed(ret)) return ret;
 		cost = ret;
 
-		terraformcost = CheckBridgeSlopeNorth(direction, tileh_start);
-		if (CmdFailed(terraformcost) || (terraformcost.GetCost() != 0 && !allow_on_slopes))
+		if (CmdFailed(terraform_cost_north) || (terraform_cost_north.GetCost() != 0 && !allow_on_slopes))
 			return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
-		cost.AddCost(terraformcost);
+		cost.AddCost(terraform_cost_north);
 
 		/* Try and clear the end landscape */
 		ret = DoCommand(tile_end, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -320,10 +366,9 @@
 		cost.AddCost(ret);
 
 		/* false - end tile slope check */
-		terraformcost = CheckBridgeSlopeSouth(direction, tileh_end);
-		if (CmdFailed(terraformcost) || (terraformcost.GetCost() != 0 && !allow_on_slopes))
+		if (CmdFailed(terraform_cost_south) || (terraform_cost_south.GetCost() != 0 && !allow_on_slopes))
 			return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
-		cost.AddCost(terraformcost);
+		cost.AddCost(terraform_cost_south);
 	}
 
 	if (!replace_bridge) {
@@ -363,9 +408,7 @@
 
 	delta = (direction == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
 	for (tile = tile_start + delta; tile != tile_end; tile += delta) {
-		uint z;
-
-		if (GetTileSlope(tile, &z) != SLOPE_FLAT && z >= z_start) return_cmd_error(STR_BRIDGE_TOO_LOW_FOR_TERRAIN);
+		if (GetTileMaxZ(tile) > z_start) return_cmd_error(STR_BRIDGE_TOO_LOW_FOR_TERRAIN);
 
 		if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && !replace_bridge) {
 			/* Disallow crossing bridges for the time being */
@@ -398,7 +441,6 @@
 				break;
 
 			case MP_CLEAR:
-				if (!replace_bridge && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 				break;
 
 			default:
@@ -418,7 +460,7 @@
 
 	if (flags & DC_EXEC && railtype != INVALID_RAILTYPE) {
 		Track track = AxisToTrack(direction);
-		SetSignalsOnBothDir(tile_start, track);
+		AddSideToSignalBuffer(tile_start, INVALID_DIAGDIR, _current_player);
 		YapfNotifyTrackLayoutChange(tile_start, track);
 	}
 
@@ -461,21 +503,17 @@
 
 	_build_tunnel_endtile = 0;
 	if (!HasBit(p1, 9)) {
-		if (!ValParamRailtype(p1)) return CMD_ERROR;
+		if (!ValParamRailtype((RailType)p1)) return CMD_ERROR;
 	} else {
 		const RoadTypes rts = (RoadTypes)GB(p1, 0, 3);
 		if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_player, rts)) return CMD_ERROR;
 	}
 
 	start_tileh = GetTileSlope(start_tile, &start_z);
+	direction = GetInclinedSlopeDirection(start_tileh);
+	if (direction == INVALID_DIAGDIR) return_cmd_error(STR_500B_SITE_UNSUITABLE_FOR_TUNNEL);
 
-	switch (start_tileh) {
-		case SLOPE_SW: direction = DIAGDIR_SW; break;
-		case SLOPE_SE: direction = DIAGDIR_SE; break;
-		case SLOPE_NW: direction = DIAGDIR_NW; break;
-		case SLOPE_NE: direction = DIAGDIR_NE; break;
-		default: return_cmd_error(STR_500B_SITE_UNSUITABLE_FOR_TUNNEL);
-	}
+	if (IsWaterTile(start_tile)) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
 
 	ret = DoCommand(start_tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(ret)) return ret;
@@ -529,6 +567,8 @@
 	/* if the command fails from here on we want the end tile to be highlighted */
 	_build_tunnel_endtile = end_tile;
 
+	if (IsWaterTile(end_tile)) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
+
 	/* slope of end tile must be complementary to the slope of the start tile */
 	if (end_tileh != ComplementSlope(start_tileh)) {
 		/* Check if there is a structure on the terraformed tile. Do not add the cost, that will be done by the terraforming */
@@ -548,7 +588,7 @@
 		if (GB(p1, 9, 1) == TRANSPORT_RAIL) {
 			MakeRailTunnel(start_tile, _current_player, direction,                 (RailType)GB(p1, 0, 4));
 			MakeRailTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4));
-			UpdateSignalsOnSegment(start_tile, direction);
+			AddSideToSignalBuffer(start_tile, INVALID_DIAGDIR, _current_player);
 			YapfNotifyTrackLayoutChange(start_tile, AxisToTrack(DiagDirToAxis(direction)));
 		} else {
 			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 3));
@@ -602,20 +642,27 @@
 	}
 
 	if (flags & DC_EXEC) {
-		/* We first need to request the direction before calling DoClearSquare
-		 *  else the direction is always 0.. dah!! ;) */
-		DiagDirection dir = GetTunnelBridgeDirection(tile);
-		Track track;
+		if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) {
+			/* We first need to request values before calling DoClearSquare */
+			DiagDirection dir = GetTunnelBridgeDirection(tile);
+			Owner owner = GetTileOwner(tile);
 
-		DoClearSquare(tile);
-		DoClearSquare(endtile);
-		UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
-		UpdateSignalsOnSegment(endtile, dir);
-		track = AxisToTrack(DiagDirToAxis(dir));
-		YapfNotifyTrackLayoutChange(tile, track);
-		YapfNotifyTrackLayoutChange(endtile, track);
+			DoClearSquare(tile);
+			DoClearSquare(endtile);
+
+			/* cannot use INVALID_DIAGDIR for signal update because the tunnel doesn't exist anymore */
+			AddSideToSignalBuffer(tile, ReverseDiagDir(dir), owner);
+			AddSideToSignalBuffer(endtile, dir, owner);
+
+			Track track = AxisToTrack(DiagDirToAxis(dir));
+			YapfNotifyTrackLayoutChange(tile, track);
+			YapfNotifyTrackLayoutChange(endtile, track);
+		} else {
+			DoClearSquare(tile);
+			DoClearSquare(endtile);
+		}
 	}
-	return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_tunnel * (DistanceManhattan(tile, endtile) + 1));
+	return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_tunnel * (GetTunnelBridgeLength(tile, endtile) + 2));
 }
 
 
@@ -653,24 +700,29 @@
 	}
 
 	if (flags & DC_EXEC) {
-		TileIndex c;
-		Track track;
+		/* read this value before actual removal of bridge */
+		bool rail = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL;
+		Owner owner = GetTileOwner(tile);
 
 		DoClearSquare(tile);
 		DoClearSquare(endtile);
-		for (c = tile + delta; c != endtile; c += delta) {
-				ClearBridgeMiddle(c);
+		for (TileIndex c = tile + delta; c != endtile; c += delta) {
+			ClearBridgeMiddle(c);
 			MarkTileDirtyByTile(c);
 		}
 
-		UpdateSignalsOnSegment(tile, ReverseDiagDir(direction));
-		UpdateSignalsOnSegment(endtile, direction);
-		track = AxisToTrack(DiagDirToAxis(direction));
-		YapfNotifyTrackLayoutChange(tile, track);
-		YapfNotifyTrackLayoutChange(endtile, track);
+		if (rail) {
+			/* cannot use INVALID_DIAGDIR for signal update because the bridge doesn't exist anymore */
+			AddSideToSignalBuffer(tile, ReverseDiagDir(direction), owner);
+			AddSideToSignalBuffer(endtile, direction, owner);
+
+			Track track = AxisToTrack(DiagDirToAxis(direction));
+			YapfNotifyTrackLayoutChange(tile, track);
+			YapfNotifyTrackLayoutChange(endtile, track);
+		}
 	}
 
-	return CommandCost(EXPENSES_CONSTRUCTION, (DistanceManhattan(tile, endtile) + 1) * _price.clear_bridge);
+	return CommandCost(EXPENSES_CONSTRUCTION, (GetTunnelBridgeLength(tile, endtile) + 2) * _price.clear_bridge);
 }
 
 static CommandCost ClearTile_TunnelBridge(TileIndex tile, byte flags)
@@ -678,7 +730,7 @@
 	if (IsTunnel(tile)) {
 		if (flags & DC_AUTO) return_cmd_error(STR_5006_MUST_DEMOLISH_TUNNEL_FIRST);
 		return DoClearTunnel(tile, flags);
-	} else if (IsBridge(tile)) { // XXX Is this necessary?
+	} else { // IsBridge(tile)
 		if (flags & DC_AUTO) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 		return DoClearBridge(tile, flags);
 	}
@@ -744,13 +796,6 @@
 	}
 }
 
-Foundation GetBridgeFoundation(Slope tileh, Axis axis)
-{
-	if (HasBit(BRIDGE_NO_FOUNDATION, tileh)) return FOUNDATION_NONE;
-	if (HasBit(BRIDGE_FULL_LEVELED_FOUNDATION, tileh)) return FlatteningFoundation(tileh);
-	return InclinedFoundation(axis);
-}
-
 /**
  * Draws the trambits over an already drawn (lower end) of a bridge.
  * @param x       the x of the bridge
@@ -863,7 +908,7 @@
 		AddSortableSpriteToDraw(SPR_EMPTY_BOUNDING_BOX, PAL_NONE, ti->x + BB_data[4], ti->y + BB_data[5], BB_data[6], BB_data[7], TILE_HEIGHT, ti->z);
 
 		DrawBridgeMiddle(ti);
-	} else if (IsBridge(ti->tile)) { // XXX is this necessary?
+	} else { // IsBridge(ti->tile)
 		const PalSpriteID *psid;
 		int base_offset;
 		bool ice = HasTunnelBridgeSnowOrDesert(ti->tile);
@@ -927,8 +972,6 @@
 		}
 
 		DrawBridgeMiddle(ti);
-	} else {
-		NOT_REACHED();
 	}
 }
 
@@ -1004,8 +1047,8 @@
 
 	axis = GetBridgeAxis(ti->tile);
 	piece = CalcBridgePiece(
-		DistanceManhattan(ti->tile, rampnorth),
-		DistanceManhattan(ti->tile, rampsouth)
+		GetTunnelBridgeLength(ti->tile, rampnorth) + 1,
+		GetTunnelBridgeLength(ti->tile, rampsouth) + 1
 	);
 	type = GetBridgeType(rampsouth);
 
@@ -1097,7 +1140,7 @@
 
 		/* In the tunnel entrance? */
 		if (5 <= pos && pos <= 10) return z;
-	} else {
+	} else { // IsBridge(tile)
 		DiagDirection dir = GetTunnelBridgeDirection(tile);
 		uint pos = (DiagDirToAxis(dir) == AXIS_X ? y : x);
 
@@ -1107,7 +1150,7 @@
 		if (5 <= pos && pos <= 10) {
 			uint delta;
 
-			if (HasBit(BRIDGE_HORZ_RAMP, tileh)) return z + TILE_HEIGHT;
+			if (tileh != SLOPE_FLAT) return z + TILE_HEIGHT;
 
 			switch (dir) {
 				default: NOT_REACHED();
@@ -1134,45 +1177,14 @@
 	/* not used */
 }
 
-static const StringID _bridge_tile_str[(MAX_BRIDGES + 3) + (MAX_BRIDGES + 3)] = {
-	STR_501F_WOODEN_RAIL_BRIDGE,
-	STR_5020_CONCRETE_RAIL_BRIDGE,
-	STR_501C_STEEL_GIRDER_RAIL_BRIDGE,
-	STR_501E_REINFORCED_CONCRETE_SUSPENSION,
-	STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE,
-	STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE,
-	STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,
-	STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,
-	STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE,
-	STR_501C_STEEL_GIRDER_RAIL_BRIDGE,
-	STR_5027_TUBULAR_RAIL_BRIDGE,
-	STR_5027_TUBULAR_RAIL_BRIDGE,
-	STR_5027_TUBULAR_RAIL_BRIDGE,
-	0, 0, 0,
-
-	STR_5025_WOODEN_ROAD_BRIDGE,
-	STR_5026_CONCRETE_ROAD_BRIDGE,
-	STR_5022_STEEL_GIRDER_ROAD_BRIDGE,
-	STR_5024_REINFORCED_CONCRETE_SUSPENSION,
-	STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE,
-	STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE,
-	STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE,
-	STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE,
-	STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE,
-	STR_5022_STEEL_GIRDER_ROAD_BRIDGE,
-	STR_5028_TUBULAR_ROAD_BRIDGE,
-	STR_5028_TUBULAR_ROAD_BRIDGE,
-	STR_5028_TUBULAR_ROAD_BRIDGE,
-	0, 0, 0,
-};
-
 static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
 {
 	if (IsTunnel(tile)) {
 		td->str = (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) ?
 			STR_5017_RAILROAD_TUNNEL : STR_5018_ROAD_TUNNEL;
-	} else {
-		td->str = _bridge_tile_str[GetTunnelBridgeTransportType(tile) << 4 | GetBridgeType(tile)];
+	} else { //so it must be a bridge
+		int brtype = GetBridgeType(tile);
+		td->str = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL ? _bridge[brtype].name_rail : _bridge[brtype].name_road;
 	}
 	td->owner = GetTileOwner(tile);
 }
@@ -1325,7 +1337,7 @@
 				return VETSB_ENTERED_WORMHOLE;
 			}
 		}
-	} else if (IsBridge(tile)) { // XXX is this necessary?
+	} else { // IsBridge(tile)
 		DiagDirection dir;
 
 		if (v->IsPrimaryVehicle()) {
@@ -1379,24 +1391,20 @@
 		DiagDirection direction = GetTunnelBridgeDirection(tile);
 		Axis axis = DiagDirToAxis(direction);
 		CommandCost res;
+		uint z_old;
+		Slope tileh_old = GetTileSlope(tile, &z_old);
 
 		/* Check if new slope is valid for bridges in general (so we can savely call GetBridgeFoundation()) */
 		if ((direction == DIAGDIR_NW) || (direction == DIAGDIR_NE)) {
-			res = CheckBridgeSlopeSouth(axis, tileh_new);
+			CheckBridgeSlopeSouth(axis, &tileh_old, &z_old);
+			res = CheckBridgeSlopeSouth(axis, &tileh_new, &z_new);
 		} else {
-			res = CheckBridgeSlopeNorth(axis, tileh_new);
+			CheckBridgeSlopeNorth(axis, &tileh_old, &z_old);
+			res = CheckBridgeSlopeNorth(axis, &tileh_new, &z_new);
 		}
 
-		if (!CmdFailed(res)) {
-			uint z_old;
-			Slope tileh_old = GetTileSlope(tile, &z_old);
-
-			z_old += ApplyFoundationToSlope(GetBridgeFoundation(tileh_old, axis), &tileh_old);
-			z_new += ApplyFoundationToSlope(GetBridgeFoundation(tileh_new, axis), &tileh_new);
-
-			/* Surface slope remains unchanged? */
-			if ((z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
-		}
+		/* Surface slope is valid and remains unchanged? */
+		if (!CmdFailed(res) && (z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 	}
 
 	return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
--- a/src/unix.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/unix.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,12 +4,13 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
 #include "variables.h"
 #include "textbuf_gui.h"
 #include "functions.h"
 #include "core/random_func.hpp"
 
+#include "table/strings.h"
+
 #include <dirent.h>
 #include <unistd.h>
 #include <sys/stat.h>
--- a/src/unmovable_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/unmovable_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,13 +4,12 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "table/strings.h"
-#include "table/sprites.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "command_func.h"
 #include "viewport_func.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "gui.h"
 #include "station.h"
 #include "town.h"
@@ -18,7 +17,6 @@
 #include "bridge_map.h"
 #include "unmovable_map.h"
 #include "variables.h"
-#include "table/unmovable_land.h"
 #include "genworld.h"
 #include "bridge.h"
 #include "autoslope.h"
@@ -26,6 +24,11 @@
 #include "functions.h"
 #include "window_func.h"
 #include "vehicle_func.h"
+#include "player_gui.h"
+
+#include "table/strings.h"
+#include "table/sprites.h"
+#include "table/unmovable_land.h"
 
 /** Destroy a HQ.
  * During normal gameplay you can only implicitely destroy a HQ when you are
@@ -261,8 +264,10 @@
 		return_cmd_error(STR_5800_OBJECT_IN_THE_WAY);
 
 	if (IsStatue(tile)) {
+		if (flags & DC_AUTO) return_cmd_error(STR_5800_OBJECT_IN_THE_WAY);
+
 		TownID town = GetStatueTownID(tile);
-		ClrBit(GetTown(town)->statues, _current_player);
+		ClrBit(GetTown(town)->statues, GetTileOwner(tile));
 		InvalidateWindow(WC_TOWN_AUTHORITY, town);
 	}
 
@@ -444,6 +449,19 @@
 
 	if (IsOwnedLand(tile) && new_player != PLAYER_SPECTATOR) {
 		SetTileOwner(tile, new_player);
+	} else if (IsStatueTile(tile)) {
+		TownID town = GetStatueTownID(tile);
+		Town *t = GetTown(town);
+		ClrBit(t->statues, old_player);
+		if (new_player != PLAYER_SPECTATOR && !HasBit(t->statues, new_player)) {
+			/* Transfer ownership to the new company */
+			SetBit(t->statues, new_player);
+			SetTileOwner(tile, new_player);
+		} else {
+			DoClearSquare(tile);
+		}
+
+		InvalidateWindow(WC_TOWN_AUTHORITY, town);
 	} else {
 		DoClearSquare(tile);
 	}
--- a/src/variables.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/variables.h	Sun Feb 03 20:17:54 2008 +0000
@@ -5,7 +5,6 @@
 #ifndef VARIABLES_H
 #define VARIABLES_H
 
-#include "settings_type.h"
 #include "tile_type.h"
 #include "strings_type.h"
 
@@ -77,15 +76,9 @@
 
 VARDEF byte _display_opt;
 VARDEF int _caret_timer;
-VARDEF uint32 _news_display_opt;
-VARDEF bool _news_ticker_sound;
-
-VARDEF StringID _error_message;
 
 VARDEF bool _rightclick_emulate;
 
-VARDEF PlayerFace _player_face; ///< for player face storage in openttd.cfg
-
 /* IN/OUT parameters to commands */
 VARDEF TileIndex _build_tunnel_endtile;
 VARDEF bool _generating_world;
@@ -94,19 +87,12 @@
 VARDEF byte _switch_mode;
 VARDEF StringID _switch_mode_errorstr;
 
-VARDEF char _ini_videodriver[32], _ini_musicdriver[32], _ini_sounddriver[32], _ini_blitter[32];
-
-VARDEF int _num_resolutions;
-VARDEF uint16 _resolutions[32][2];
-VARDEF uint16 _cur_resolution[2];
-
 VARDEF char _savegame_format[8];
 
 VARDEF char *_config_file;
 VARDEF char *_highscore_file;
 VARDEF char *_log_file;
 
-
 /* landscape.cpp */
 extern const byte _tileh_to_sprite[32];
 
--- a/src/vehicle.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/vehicle.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "roadveh.h"
 #include "ship.h"
 #include "spritecache.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "timetable.h"
@@ -18,7 +16,7 @@
 #include "news.h"
 #include "command_func.h"
 #include "saveload.h"
-#include "player.h"
+#include "player_func.h"
 #include "engine.h"
 #include "debug.h"
 #include "vehicle_gui.h"
@@ -43,11 +41,16 @@
 #include "date_func.h"
 #include "window_func.h"
 #include "vehicle_func.h"
+#include "signal_func.h"
 #include "sound_func.h"
 #include "variables.h"
 #include "autoreplace_func.h"
 #include "autoreplace_gui.h"
 #include "string_func.h"
+#include "settings_type.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 #define INVALID_COORD (0x7fffffff)
 #define GEN_HASH(x, y) ((GB((y), 6, 6) << 6) + GB((x), 7, 6))
@@ -101,10 +104,10 @@
 bool VehicleNeedsService(const Vehicle *v)
 {
 	if (v->vehstatus & (VS_STOPPED | VS_CRASHED))       return false;
-	if (v->current_order.type != OT_GOTO_DEPOT || !(v->current_order.flags & OF_PART_OF_ORDERS)) { // Don't interfere with a depot visit by the order list
+	if (v->current_order.type != OT_GOTO_DEPOT || !(v->current_order.flags & OFB_PART_OF_ORDERS)) { // Don't interfere with a depot visit by the order list
 		if (_patches.gotodepot && VehicleHasDepotOrders(v)) return false;
 		if (v->current_order.type == OT_LOADING)            return false;
-		if (v->current_order.type == OT_GOTO_DEPOT && v->current_order.flags & OF_HALT_IN_DEPOT) return false;
+		if (v->current_order.type == OT_GOTO_DEPOT && v->current_order.flags & OFB_HALT_IN_DEPOT) return false;
 	}
 
 	if (_patches.no_servicing_if_no_breakdowns && _opt.diff.vehicle_breakdowns == 0) {
@@ -248,6 +251,7 @@
 		assert(v->first != NULL);
 
 		if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
+			if (IsFrontEngine(v)) v->u.rail.last_speed = v->cur_speed; // update displayed train speed
 			TrainConsistChanged(v);
 		} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
 			RoadVehUpdateCache(v);
@@ -569,7 +573,7 @@
 
 Vehicle::~Vehicle()
 {
-	DeleteName(this->string_id);
+	free(this->name);
 
 	if (CleaningPool()) return;
 
@@ -593,11 +597,9 @@
 
 	do {
 		Vehicle *u = v;
-		if (!(v->vehstatus & VS_HIDDEN)) {
-			/* sometimes, eg. for disaster vehicles, when company bankrupts, when removing crashed/flooded vehicles,
-			 * it may happen that vehicle chain is deleted when visible */
-			MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
-		}
+		/* sometimes, eg. for disaster vehicles, when company bankrupts, when removing crashed/flooded vehicles,
+		 * it may happen that vehicle chain is deleted when visible */
+		if (!(v->vehstatus & VS_HIDDEN)) MarkSingleVehicleDirty(v);
 		v = v->Next();
 		delete u;
 	} while (v != NULL);
@@ -612,7 +614,7 @@
 void VehicleEnteredDepotThisTick(Vehicle *v)
 {
 	/* we need to set v->leave_depot_instantly as we have no control of it's contents at this time */
-	if (HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OFB_PART_OF_ORDERS) && v->current_order.type == OT_GOTO_DEPOT) {
+	if (HasBit(v->current_order.flags, OF_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OF_PART_OF_ORDERS) && v->current_order.type == OT_GOTO_DEPOT) {
 		/* we keep the vehicle in the depot since the user ordered it to stay */
 		v->leave_depot_instantly = false;
 	} else {
@@ -1626,7 +1628,7 @@
 	uint16 wagon_list_length = 0;
 	uint16 wagon_count = 0;
 
-	CommandCost cost;
+	CommandCost cost(EXPENSES_NEW_VEHICLES);
 	uint i, sell_command, total_number_vehicles;
 	VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8);
 
@@ -2153,7 +2155,7 @@
 		max += v->cargo_cap;
 		if (v->cargo_cap != 0) {
 			unloading += HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0;
-			loading |= (u->current_order.flags & OF_UNLOAD) == 0 && st->goods[v->cargo_type].days_since_pickup != 255;
+			loading |= (u->current_order.flags & OFB_UNLOAD) == 0 && st->goods[v->cargo_type].days_since_pickup != 255;
 			cars++;
 		}
 	}
@@ -2175,7 +2177,7 @@
 		case VEH_TRAIN:
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 			if (!IsFrontEngine(v)) v = v->First();
-			UpdateSignalsOnSegment(v->tile, GetRailDepotDirection(v->tile));
+			UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner);
 			v->load_unload_time_rem = 0;
 			break;
 
@@ -2239,11 +2241,11 @@
 			}
 		}
 
-		if (HasBit(t.flags, OFB_PART_OF_ORDERS)) {
+		if (HasBit(t.flags, OF_PART_OF_ORDERS)) {
 			/* Part of orders */
 			UpdateVehicleTimetable(v, true);
 			v->cur_order_index++;
-		} else if (HasBit(t.flags, OFB_HALT_IN_DEPOT)) {
+		} else if (HasBit(t.flags, OF_HALT_IN_DEPOT)) {
 			/* Force depot visit */
 			v->vehstatus |= VS_STOPPED;
 			if (v->owner == _local_player) {
@@ -2307,7 +2309,6 @@
 CommandCost CmdNameVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	Vehicle *v;
-	StringID str;
 
 	if (!IsValidVehicleID(p1) || StrEmpty(_cmd_text)) return CMD_ERROR;
 
@@ -2317,17 +2318,11 @@
 
 	if (!IsUniqueVehicleName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-	str = AllocateName(_cmd_text, 2);
-	if (str == 0) return CMD_ERROR;
-
 	if (flags & DC_EXEC) {
-		StringID old_str = v->string_id;
-		v->string_id = str;
-		DeleteName(old_str);
+		free(v->name);
+		v->name = strdup(_cmd_text);
 		ResortVehicleLists();
 		MarkWholeScreenDirty();
-	} else {
-		DeleteName(str);
 	}
 
 	return CommandCost();
@@ -2360,26 +2355,51 @@
 }
 
 
-static Rect _old_vehicle_coords;
-
-void BeginVehicleMove(Vehicle *v)
+static Rect _old_vehicle_coords; ///< coords of vehicle before it has moved
+
+/**
+ * Stores the vehicle image coords for later call to EndVehicleMove()
+ * @param v vehicle which image's coords to store
+ * @see _old_vehicle_coords
+ * @see EndVehicleMove()
+ */
+void BeginVehicleMove(const Vehicle *v)
 {
-	_old_vehicle_coords.left = v->left_coord;
-	_old_vehicle_coords.top = v->top_coord;
-	_old_vehicle_coords.right = v->right_coord;
+	_old_vehicle_coords.left   = v->left_coord;
+	_old_vehicle_coords.top    = v->top_coord;
+	_old_vehicle_coords.right  = v->right_coord;
 	_old_vehicle_coords.bottom = v->bottom_coord;
 }
 
-void EndVehicleMove(Vehicle *v)
+/**
+ * Marks screen dirty after a vehicle has moved
+ * @param v vehicle which is marked dirty
+ * @see _old_vehicle_coords
+ * @see BeginVehicleMove()
+ */
+void EndVehicleMove(const Vehicle *v)
 {
 	MarkAllViewportsDirty(
-		min(_old_vehicle_coords.left,v->left_coord),
-		min(_old_vehicle_coords.top,v->top_coord),
-		max(_old_vehicle_coords.right,v->right_coord)+1,
-		max(_old_vehicle_coords.bottom,v->bottom_coord)+1
+		min(_old_vehicle_coords.left,   v->left_coord),
+		min(_old_vehicle_coords.top,    v->top_coord),
+		max(_old_vehicle_coords.right,  v->right_coord) + 1,
+		max(_old_vehicle_coords.bottom, v->bottom_coord) + 1
 	);
 }
 
+/**
+ * Marks viewports dirty where the vehicle's image is
+ * In fact, it equals
+ *   BeginVehicleMove(v); EndVehicleMove(v);
+ * @param v vehicle to mark dirty
+ * @see BeginVehicleMove()
+ * @see EndVehicleMove()
+ */
+void MarkSingleVehicleDirty(const Vehicle *v)
+{
+	MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
+}
+
 /* returns true if staying in the same tile */
 GetNewVehiclePosResult GetNewVehiclePos(const Vehicle *v)
 {
@@ -2585,42 +2605,35 @@
 			case VEH_TRAIN: {
 				const RailVehicleInfo *rvi = RailVehInfo(engine_type);
 
-				switch (rvi->railtype) {
-					default: NOT_REACHED();
-					case RAILTYPE_RAIL:
-					case RAILTYPE_ELECTRIC:
-					{
-						if (cargo_type == CT_INVALID) cargo_type = rvi->cargo_type;
-						if (rvi->railveh_type == RAILVEH_WAGON) {
-							if (!GetCargo(cargo_type)->is_freight) {
-								if (parent_engine_type == INVALID_ENGINE) {
-									scheme = LS_PASSENGER_WAGON_STEAM;
-								} else {
-									switch (RailVehInfo(parent_engine_type)->engclass) {
-										default: NOT_REACHED();
-										case EC_STEAM:    scheme = LS_PASSENGER_WAGON_STEAM;    break;
-										case EC_DIESEL:   scheme = LS_PASSENGER_WAGON_DIESEL;   break;
-										case EC_ELECTRIC: scheme = LS_PASSENGER_WAGON_ELECTRIC; break;
-									}
-								}
-							} else {
-								scheme = LS_FREIGHT_WAGON;
-							}
+				if (cargo_type == CT_INVALID) cargo_type = rvi->cargo_type;
+				if (rvi->railveh_type == RAILVEH_WAGON) {
+					if (!GetCargo(cargo_type)->is_freight) {
+						if (parent_engine_type == INVALID_ENGINE) {
+							scheme = LS_PASSENGER_WAGON_STEAM;
 						} else {
-							bool is_mu = HasBit(EngInfo(engine_type)->misc_flags, EF_RAIL_IS_MU);
-
-							switch (rvi->engclass) {
+							switch (RailVehInfo(parent_engine_type)->engclass) {
 								default: NOT_REACHED();
-								case EC_STEAM:    scheme = LS_STEAM; break;
-								case EC_DIESEL:   scheme = is_mu ? LS_DMU : LS_DIESEL;   break;
-								case EC_ELECTRIC: scheme = is_mu ? LS_EMU : LS_ELECTRIC; break;
+								case EC_STEAM:    scheme = LS_PASSENGER_WAGON_STEAM;    break;
+								case EC_DIESEL:   scheme = LS_PASSENGER_WAGON_DIESEL;   break;
+								case EC_ELECTRIC: scheme = LS_PASSENGER_WAGON_ELECTRIC; break;
+								case EC_MONORAIL: scheme = LS_PASSENGER_WAGON_MONORAIL; break;
+								case EC_MAGLEV:   scheme = LS_PASSENGER_WAGON_MAGLEV;   break;
 							}
 						}
-						break;
+					} else {
+						scheme = LS_FREIGHT_WAGON;
 					}
-
-					case RAILTYPE_MONO: scheme = LS_MONORAIL; break;
-					case RAILTYPE_MAGLEV: scheme = LS_MAGLEV; break;
+				} else {
+					bool is_mu = HasBit(EngInfo(engine_type)->misc_flags, EF_RAIL_IS_MU);
+
+					switch (rvi->engclass) {
+						default: NOT_REACHED();
+						case EC_STEAM:    scheme = LS_STEAM; break;
+						case EC_DIESEL:   scheme = is_mu ? LS_DMU : LS_DIESEL;   break;
+						case EC_ELECTRIC: scheme = is_mu ? LS_EMU : LS_ELECTRIC; break;
+						case EC_MONORAIL: scheme = LS_MONORAIL; break;
+						case EC_MAGLEV:   scheme = LS_MAGLEV; break;
+					}
 				}
 				break;
 			}
@@ -2740,7 +2753,8 @@
 	    SLE_VAR(Vehicle, subtype,              SLE_UINT8),
 
 	    SLE_REF(Vehicle, next,                 REF_VEHICLE_OLD),
-	    SLE_VAR(Vehicle, string_id,            SLE_STRINGID),
+	SLE_CONDVAR(Vehicle, name,                 SLE_NAME,                    0, 83),
+	SLE_CONDSTR(Vehicle, name,                 SLE_STR, 0,                 84, SL_MAX_VERSION),
 	SLE_CONDVAR(Vehicle, unitnumber,           SLE_FILE_U8  | SLE_VAR_U16,  0, 7),
 	SLE_CONDVAR(Vehicle, unitnumber,           SLE_UINT16,                  8, SL_MAX_VERSION),
 	    SLE_VAR(Vehicle, owner,                SLE_UINT8),
@@ -3098,14 +3112,14 @@
 			this->current_order.dest == this->last_station_visited) {
 		/* Arriving at the ordered station.
 		 * Keep the load/unload flags, as we (obviously) still need them. */
-		this->current_order.flags &= OF_FULL_LOAD | OF_UNLOAD | OF_TRANSFER;
+		this->current_order.flags &= OFB_FULL_LOAD | OFB_UNLOAD | OFB_TRANSFER;
 
 		/* Furthermore add the Non Stop flag to mark that this station
 		 * is the actual destination of the vehicle, which is (for example)
 		 * necessary to be known for HandleTrainLoading to determine
 		 * whether the train is lost or not; not marking a train lost
 		 * that arrives at random stations is bad. */
-		this->current_order.flags |= OF_NON_STOP;
+		this->current_order.flags |= OFB_NON_STOP;
 		UpdateVehicleTimetable(this, true);
 	} else {
 		/* This is just an unordered intermediate stop */
@@ -3118,7 +3132,7 @@
 	VehiclePayment(this);
 
 	InvalidateWindow(this->GetVehicleListWindowClass(), this->owner);
-	InvalidateWindowWidget(WC_VEHICLE_VIEW, this->index, STATUS_BAR);
+	InvalidateWindowWidget(WC_VEHICLE_VIEW, this->index, VVW_WIDGET_START_STOP_VEH);
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
 
@@ -3131,7 +3145,7 @@
 	assert(current_order.type == OT_LOADING);
 
 	/* Only update the timetable if the vehicle was supposed to stop here. */
-	if (current_order.flags & OF_NON_STOP) UpdateVehicleTimetable(this, false);
+	if (current_order.flags & OFB_NON_STOP) UpdateVehicleTimetable(this, false);
 
 	current_order.type = OT_LEAVESTATION;
 	current_order.flags = 0;
@@ -3158,7 +3172,7 @@
 			this->LeaveStation();
 
 			/* If this was not the final order, don't remove it from the list. */
-			if (!(b.flags & OF_NON_STOP)) return;
+			if (!(b.flags & OFB_NON_STOP)) return;
 			break;
 		}
 
@@ -3209,7 +3223,7 @@
 		/* Code ripped from CmdStartStopTrain. Can't call it, because of
 		 * ownership problems, so we'll duplicate some code, for now */
 		v->vehstatus |= VS_STOPPED;
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 	}
 }
--- a/src/vehicle_base.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/vehicle_base.h	Sun Feb 03 20:17:54 2008 +0000
@@ -15,6 +15,7 @@
 #include "gfx_type.h"
 #include "command_type.h"
 #include "date_type.h"
+#include "player_type.h"
 #include "oldpool.h"
 #include "order.h"
 #include "cargopacket.h"
@@ -106,7 +107,7 @@
 	TrackBitsByte track;
 	byte force_proceed;
 	RailTypeByte railtype;
-	RailTypeMask compatible_railtypes;
+	RailTypes compatible_railtypes;
 
 	byte flags;
 
@@ -200,7 +201,7 @@
 
 	Vehicle *depot_list;     // NOSAVE: linked list to tell what vehicles entered a depot during the last tick. Used by autoreplace
 
-	StringID string_id;      // Displayed string
+	char *name;              ///< Name of vehicle
 
 	UnitID unitnumber;       // unit number, for display purposes only
 	PlayerByte owner;        // which player owns the vehicle?
@@ -425,6 +426,11 @@
 	virtual void Tick() {};
 
 	/**
+	 * Calls the new day handler of the vehicle
+	 */
+	virtual void OnNewDay() {};
+
+	/**
 	 * Gets the running cost of a vehicle  that can be sent into SetDParam for string processing.
 	 * @return the vehicle's running cost
 	 */
@@ -455,6 +461,13 @@
 	 * @return the first vehicle of the chain.
 	 */
 	inline Vehicle *First() const { return this->first; }
+
+	/**
+	 * Check if we share our orders with another vehicle.
+	 * This is done by checking the previous and next pointers in the shared chain.
+	 * @return true if there are other vehicles sharing the same order
+	 */
+	inline bool IsOrderListShared() const { return this->next_shared != NULL || this->prev_shared != NULL; };
 };
 
 /**
--- a/src/vehicle_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/vehicle_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -12,6 +12,7 @@
 #include "cargo_type.h"
 #include "command_type.h"
 #include "vehicle_type.h"
+#include "player_type.h"
 
 #define is_custom_sprite(x) (x >= 0xFD)
 #define IS_CUSTOM_FIRSTHEAD_SPRITE(x) (x == 0xFD)
@@ -50,9 +51,6 @@
 Vehicle *FindVehicleBetween(TileIndex from, TileIndex to, byte z, bool without_crashed = false);
 Vehicle *GetVehicleTunnelBridge(TileIndex tile, TileIndex endtile);
 
-bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection direction);
-void SetSignalsOnBothDir(TileIndex tile, byte track);
-
 Vehicle *CheckClickOnVehicle(const ViewPort *vp, int x, int y);
 
 void DecreaseVehicleValue(Vehicle *v);
@@ -60,8 +58,9 @@
 void AgeVehicle(Vehicle *v);
 void VehicleEnteredDepotThisTick(Vehicle *v);
 
-void BeginVehicleMove(Vehicle *v);
-void EndVehicleMove(Vehicle *v);
+void BeginVehicleMove(const Vehicle *v);
+void EndVehicleMove(const Vehicle *v);
+void MarkSingleVehicleDirty(const Vehicle *v);
 
 UnitID GetFreeUnitNumber(VehicleType type);
 
@@ -135,10 +134,6 @@
  */
 SpriteID GetVehiclePalette(const Vehicle *v);
 
-/* A lot of code calls for the invalidation of the status bar, which is widget 5.
- * Best is to have a virtual value for it when it needs to change again */
-#define STATUS_BAR 5
-
 extern const uint32 _veh_build_proc_table[];
 extern const uint32 _veh_sell_proc_table[];
 extern const uint32 _veh_refit_proc_table[];
--- a/src/vehicle_gui.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/vehicle_gui.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -5,10 +5,8 @@
 #include "stdafx.h"
 #include "openttd.h"
 #include "debug.h"
-#include "player.h"
+#include "player_func.h"
 #include "station.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "engine.h"
 #include "gui.h"
 #include "window_gui.h"
@@ -36,6 +34,11 @@
 #include "autoreplace_gui.h"
 #include "core/alloc_func.hpp"
 #include "string_func.h"
+#include "settings_type.h"
+#include "widgets/dropdown_func.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 struct Sorting {
 	Listing aircraft;
@@ -552,20 +555,14 @@
 
 	if (va != last_vehicle[0]) {
 		last_vehicle[0] = va;
-		if (IsCustomName(va->string_id)) {
-			GetString(last_name[0], va->string_id, lastof(last_name[0]));
-		} else {
-			last_name[0][0] = '\0';
-		}
+		SetDParam(0, va->index);
+		GetString(last_name[0], STR_VEHICLE_NAME, lastof(last_name[0]));
 	}
 
 	if (vb != last_vehicle[1]) {
 		last_vehicle[1] = vb;
-		if (IsCustomName(vb->string_id)) {
-			GetString(last_name[1], vb->string_id, lastof(last_name[1]));
-		} else {
-			last_name[1][0] = '\0';
-		}
+		SetDParam(1, vb->index);
+		GetString(last_name[1], STR_VEHICLE_NAME, lastof(last_name[1]));
 	}
 
 	r = strcmp(last_name[0], last_name[1]); // sort by name
@@ -746,14 +743,12 @@
 	VLW_WIDGET_CAPTION,
 	VLW_WIDGET_STICKY,
 	VLW_WIDGET_SORT_ORDER,
-	VLW_WIDGET_SORT_BY_TEXT,
 	VLW_WIDGET_SORT_BY_PULLDOWN,
 	VLW_WIDGET_EMPTY_TOP_RIGHT,
 	VLW_WIDGET_LIST,
 	VLW_WIDGET_SCROLLBAR,
 	VLW_WIDGET_OTHER_PLAYER_FILLER,
 	VLW_WIDGET_AVAILABLE_VEHICLES,
-	VLW_WIDGET_MANAGE_VEHICLES,
 	VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 	VLW_WIDGET_STOP_ALL,
 	VLW_WIDGET_START_ALL,
@@ -766,8 +761,7 @@
 	{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   247,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
 	{  WWT_STICKYBOX,     RESIZE_LR,    14,   248,   259,     0,    13, 0x0,                  STR_STICKY_BUTTON},
 	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    80,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
-	{      WWT_PANEL,   RESIZE_NONE,    14,    81,   235,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
-	{    WWT_TEXTBTN,   RESIZE_NONE,    14,   236,   247,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
+	{   WWT_DROPDOWN,   RESIZE_NONE,    14,    81,   247,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
 	{      WWT_PANEL,  RESIZE_RIGHT,    14,   248,   259,    14,    25, 0x0,                  STR_NULL},
 	{     WWT_MATRIX,     RESIZE_RB,    14,     0,   247,    26,   169, 0x0,                  STR_NULL},
 	{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   248,   259,    26,   169, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
@@ -775,8 +769,7 @@
 	{      WWT_PANEL,    RESIZE_RTB,    14,     0,   247,   170,   181, 0x0,                  STR_NULL},
 
 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   105,   170,   181, 0x0,                  STR_AVAILABLE_ENGINES_TIP},
-	{    WWT_TEXTBTN,     RESIZE_TB,    14,   106,   211,   170,   181, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
-	{    WWT_TEXTBTN,     RESIZE_TB,    14,   212,   223,   170,   181, STR_0225,             STR_MANAGE_LIST_TIP},
+	{   WWT_DROPDOWN,     RESIZE_TB,    14,   106,   223,   170,   181, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
 
 	{ WWT_PUSHIMGBTN,     RESIZE_TB,    14,   224,   235,   170,   181, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
 	{ WWT_PUSHIMGBTN,     RESIZE_TB,    14,   236,   247,   170,   181, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
@@ -804,7 +797,6 @@
 	} else {
 		w->SetWidgetsHiddenState(true,
 			VLW_WIDGET_AVAILABLE_VEHICLES,
-			VLW_WIDGET_MANAGE_VEHICLES,
 			VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 			VLW_WIDGET_STOP_ALL,
 			VLW_WIDGET_START_ALL,
@@ -939,7 +931,6 @@
 	int max;
 	int i;
 	const PlayerID owner = (PlayerID)w->caption_color;
-	const Player *p = GetPlayer(owner);
 	const uint16 window_type = w->window_number & VLW_MASK;
 	const uint16 index = GB(w->window_number, 16, 16);
 
@@ -959,7 +950,7 @@
 			break;
 
 		case VLW_STANDARD: /* Company Name */
-			SetDParam(0, p->index);
+			SetDParam(0, owner);
 			SetDParam(1, w->vscroll.count);
 			break;
 
@@ -987,7 +978,6 @@
 	}
 
 	w->SetWidgetsDisabledState(vl->l.list_length == 0,
-		VLW_WIDGET_MANAGE_VEHICLES,
 		VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 		VLW_WIDGET_STOP_ALL,
 		VLW_WIDGET_START_ALL,
@@ -998,7 +988,7 @@
 	/* draw sorting criteria string */
 	DrawString(85, 15, _vehicle_sort_listing[vl->l.sort_type], TC_BLACK);
 	/* draw arrow pointing up/down for ascending/descending sorting */
-	DoDrawString(vl->l.flags & VL_DESC ? DOWNARROW : UPARROW, 69, 15, TC_BLACK);
+	DrawSortButtonState(w, VLW_WIDGET_SORT_ORDER, vl->l.flags & VL_DESC ? SBS_DOWN : SBS_UP);
 
 	max = min(w->vscroll.pos + w->vscroll.cap, vl->l.list_length);
 	for (i = w->vscroll.pos; i < max; ++i) {
@@ -1011,11 +1001,7 @@
 		DrawVehicleImage(v, x + 19, y + 6, INVALID_VEHICLE, w->widget[VLW_WIDGET_LIST].right - w->widget[VLW_WIDGET_LIST].left - 20, 0);
 		DrawString(x + 19, y + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
 
-		if ((v->type == VEH_TRAIN    && v->string_id != STR_SV_TRAIN_NAME)   ||
-			(v->type == VEH_ROAD     && v->string_id != STR_SV_ROADVEH_NAME) ||
-			(v->type == VEH_SHIP     && v->string_id != STR_SV_SHIP_NAME)    ||
-			(v->type == VEH_AIRCRAFT && v->string_id != STR_SV_AIRCRAFT_NAME)) {
-
+		if (v->name != NULL) {
 			/* The vehicle got a name so we will print it */
 			SetDParam(0, v->index);
 			DrawString(x + 19, y, STR_01AB, TC_FROMSTRING);
@@ -1067,7 +1053,7 @@
 					vl->_sorting->order = !!(vl->l.flags & VL_DESC);
 					SetWindowDirty(w);
 					break;
-				case VLW_WIDGET_SORT_BY_TEXT: case VLW_WIDGET_SORT_BY_PULLDOWN:/* Select sorting criteria dropdown menu */
+				case VLW_WIDGET_SORT_BY_PULLDOWN:/* Select sorting criteria dropdown menu */
 					ShowDropDownMenu(w, _vehicle_sort_listing, vl->l.sort_type, VLW_WIDGET_SORT_BY_PULLDOWN, 0, 0);
 					return;
 				case VLW_WIDGET_LIST: { /* Matrix to show vehicles */
@@ -1089,7 +1075,6 @@
 					ShowBuildVehicleWindow(0, vl->vehicle_type);
 					break;
 
-				case VLW_WIDGET_MANAGE_VEHICLES:
 				case VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN: {
 					static StringID action_str[] = {
 						STR_REPLACE_VEHICLES,
@@ -1133,7 +1118,7 @@
 
 					switch (e->we.dropdown.index) {
 						case 0: /* Replace window */
-							ShowReplaceVehicleWindow(vl->vehicle_type);
+							ShowReplaceGroupVehicleWindow(DEFAULT_GROUP, vl->vehicle_type);
 							break;
 						case 1: /* Send for servicing */
 							DoCommandP(0, GB(w->window_number, 16, 16) /* StationID or OrderID (depending on VLW) */,
@@ -1323,7 +1308,7 @@
 	{ WWT_PUSHTXTBTN,     RESIZE_TB, 14,   0,  95, 113, 124, STR_013C_CARGO,       STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED}, // VLD_WIDGET_DETAILS_CARGO_CARRIED
 	{ WWT_PUSHTXTBTN,     RESIZE_TB, 14,  96, 194, 113, 124, STR_013D_INFORMATION, STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES},// VLD_WIDGET_DETAILS_TRAIN_VEHICLES
 	{ WWT_PUSHTXTBTN,     RESIZE_TB, 14, 195, 293, 113, 124, STR_013E_CAPACITIES,  STR_8851_SHOW_CAPACITIES_OF_EACH},       // VLD_WIDGET_DETAILS_CAPACITY_OF_EACH
-	{ WWT_PUSHTXTBTN,    RESIZE_RTB, 14, 294, 392, 113, 124, STR_013E_TOTAL_CARGO, STR_8852_SHOW_TOTAL_CARGO},              // VLD_WIDGET_DETAILS_TOTAL_CARGO
+	{ WWT_PUSHTXTBTN,    RESIZE_RTB, 14, 294, 392, 113, 124, STR_TOTAL_CARGO,      STR_SHOW_TOTAL_CARGO},                   // VLD_WIDGET_DETAILS_TOTAL_CARGO
 	{  WWT_RESIZEBOX,   RESIZE_LRTB, 14, 393, 404, 113, 124, 0x0,                  STR_RESIZE_BUTTON},                      // VLD_RESIZE
 	{   WIDGETS_END},
 };
@@ -1660,26 +1645,6 @@
 
 /* Unified vehicle GUI - Vehicle View Window */
 
-/** Constants of vehicle view widget indices */
-enum VehicleViewWindowWidgets {
-	VVW_WIDGET_CLOSEBOX = 0,
-	VVW_WIDGET_CAPTION,
-	VVW_WIDGET_STICKY,
-	VVW_WIDGET_PANEL,
-	VVW_WIDGET_VIEWPORT,
-	VVW_WIDGET_START_STOP_VEH,
-	VVW_WIDGET_CENTER_MAIN_VIEH,
-	VVW_WIDGET_GOTO_DEPOT,
-	VVW_WIDGET_REFIT_VEH,
-	VVW_WIDGET_SHOW_ORDERS,
-	VVW_WIDGET_SHOW_DETAILS,
-	VVW_WIDGET_CLONE_VEH,
-	VVW_WIDGET_EMPTY_BOTTOM_RIGHT,
-	VVW_WIDGET_RESIZE,
-	VVW_WIDGET_TURN_AROUND,
-	VVW_WIDGET_FORCE_PROCEED,
-};
-
 /** Vehicle view widgets. */
 static const Widget _vehicle_view_widgets[] = {
 	{   WWT_CLOSEBOX,  RESIZE_NONE,  14,   0,  10,   0,  13, STR_00C5,                 STR_018B_CLOSE_WINDOW },           // VVW_WIDGET_CLOSEBOX
@@ -1998,7 +1963,7 @@
 					SetDParam(0, depot->town_index);
 					SetDParam(1, v->GetDisplaySpeed());
 				}
-				if (HasBit(v->current_order.flags, OFB_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OFB_PART_OF_ORDERS)) {
+				if (HasBit(v->current_order.flags, OF_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OF_PART_OF_ORDERS)) {
 					str = _heading_for_depot_strings[v->type] + _patches.vehicle_speed;
 				} else {
 					str = _heading_for_depot_service_strings[v->type] + _patches.vehicle_speed;
--- a/src/vehicle_gui.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/vehicle_gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -22,7 +22,27 @@
 
 extern const StringID _vehicle_sort_listing[];
 
-/* Start of functions regarding vehicle list windows */
+/** Constants of vehicle view widget indices */
+enum VehicleViewWindowWidgets {
+	VVW_WIDGET_CLOSEBOX = 0,
+	VVW_WIDGET_CAPTION,
+	VVW_WIDGET_STICKY,
+	VVW_WIDGET_PANEL,
+	VVW_WIDGET_VIEWPORT,
+	VVW_WIDGET_START_STOP_VEH,
+	VVW_WIDGET_CENTER_MAIN_VIEH,
+	VVW_WIDGET_GOTO_DEPOT,
+	VVW_WIDGET_REFIT_VEH,
+	VVW_WIDGET_SHOW_ORDERS,
+	VVW_WIDGET_SHOW_DETAILS,
+	VVW_WIDGET_CLONE_VEH,
+	VVW_WIDGET_EMPTY_BOTTOM_RIGHT,
+	VVW_WIDGET_RESIZE,
+	VVW_WIDGET_TURN_AROUND,
+	VVW_WIDGET_FORCE_PROCEED,
+};
+
+/** Start of functions regarding vehicle list windows */
 enum {
 	PLY_WND_PRC__OFFSET_TOP_WIDGET = 26,
 	PLY_WND_PRC__SIZE_OF_ROW_TINY  = 13,
@@ -31,7 +51,7 @@
 	PLY_WND_PRC__SIZE_OF_ROW_BIG2  = 39,
 };
 
-/* Vehicle List Window type flags */
+/** Vehicle List Window type flags */
 enum {
 	VLW_STANDARD      = 0 << 8,
 	VLW_SHARED_ORDERS = 1 << 8,
--- a/src/video/cocoa/event.mm	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/video/cocoa/event.mm	Sun Feb 03 20:17:54 2008 +0000
@@ -40,12 +40,14 @@
 #include "../../debug.h"
 #include "../../os/macosx/splash.h"
 #include "../../variables.h"
+#include "../../settings_type.h"
 #include "../../core/geometry_type.hpp"
 #include "cocoa_v.h"
 #include "cocoa_keys.h"
 #include "../../blitter/factory.hpp"
 #include "../../gfx_func.h"
 #include "../../network/network.h"
+#include "../../core/random_func.hpp"
 
 
 /* Right Mouse Button Emulation enum */
--- a/src/video/dedicated_v.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/video/dedicated_v.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,7 @@
 #include "../debug.h"
 #include "../gfx_func.h"
 #include "../network/network.h"
+#include "../network/network_internal.h"
 #include "../console.h"
 #include "../variables.h"
 #include "../genworld.h"
@@ -15,6 +16,8 @@
 #include "../fios.h"
 #include "../blitter/factory.hpp"
 #include "../core/alloc_func.hpp"
+#include "../player_func.h"
+#include "../core/random_func.hpp"
 #include "dedicated_v.h"
 
 #ifdef BEOS_NET_SERVER
--- a/src/video/sdl_v.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/video/sdl_v.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -11,6 +11,8 @@
 #include "../variables.h"
 #include "../blitter/factory.hpp"
 #include "../network/network.h"
+#include "../core/math_func.hpp"
+#include "../core/random_func.hpp"
 #include "sdl_v.h"
 #include <SDL.h>
 
--- a/src/video/video_driver.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/video/video_driver.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -31,5 +31,9 @@
 };
 
 extern VideoDriver *_video_driver;
+extern char _ini_videodriver[32];
+extern int _num_resolutions;
+extern uint16 _resolutions[32][2];
+extern uint16 _cur_resolution[2];
 
 #endif /* VIDEO_VIDEO_DRIVER_HPP */
--- a/src/video/win32_v.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/video/win32_v.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,8 @@
 #include "../win32.h"
 #include "../blitter/factory.hpp"
 #include "../network/network.h"
+#include "../core/math_func.hpp"
+#include "../core/random_func.hpp"
 #include "win32_v.h"
 #include <windows.h>
 #include <tchar.h>
--- a/src/viewport.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/viewport.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "tile_cmd.h"
 #include "gui.h"
 #include "spritecache.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "landscape.h"
 #include "viewport_func.h"
 #include "station.h"
@@ -25,6 +23,11 @@
 #include "strings_func.h"
 #include "zoom_func.h"
 #include "vehicle_func.h"
+#include "player_func.h"
+#include "settings_type.h"
+
+#include "table/sprites.h"
+#include "table/strings.h"
 
 #define VIEWPORT_DRAW_MEM (65536 * 2)
 
@@ -906,7 +909,7 @@
 	int offset;
 
 	FoundationPart foundation_part = FOUNDATION_PART_NORMAL;
-	Slope autorail_tileh = (Slope)(ti->tileh & ~SLOPE_HALFTILE_MASK);
+	Slope autorail_tileh = RemoveHalftileSlope(ti->tileh);
 	if (IsHalftileSlope(ti->tileh)) {
 		static const uint _lower_rail[4] = { 5U, 2U, 4U, 3U };
 		Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh);
@@ -955,7 +958,7 @@
 			FoundationPart foundation_part = FOUNDATION_PART_NORMAL;
 			if (ti->tileh & SLOPE_N) {
 				z += TILE_HEIGHT;
-				if ((ti->tileh & ~SLOPE_HALFTILE_MASK) == SLOPE_STEEP_N) z += TILE_HEIGHT;
+				if (RemoveHalftileSlope(ti->tileh) == SLOPE_STEEP_N) z += TILE_HEIGHT;
 			}
 			if (IsHalftileSlope(ti->tileh)) {
 				Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh);
@@ -2156,9 +2159,8 @@
 /* scrolls the viewport in a window to a given location */
 bool ScrollWindowTo(int x , int y, Window *w, bool instant)
 {
-	Point pt;
-
-	pt = MapXYZToViewport(w->viewport, x, y, GetSlopeZ(x, y));
+	/* The slope cannot be acquired outside of the map, so make sure we are always within the map. */
+	Point pt = MapXYZToViewport(w->viewport, x, y, GetSlopeZ(Clamp(x, 0, MapSizeX()), Clamp(y, 0, MapSizeY())));
 	WP(w, vp_d).follow_vehicle = INVALID_VEHICLE;
 
 	if (WP(w, vp_d).dest_scrollpos_x == pt.x && WP(w, vp_d).dest_scrollpos_y == pt.y)
--- a/src/viewport_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/viewport_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,7 @@
 #include "gfx_type.h"
 #include "viewport_type.h"
 #include "vehicle_type.h"
+#include "strings_type.h"
 
 void SetSelectionRed(bool);
 
@@ -50,7 +51,7 @@
 
 void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method);
 void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, byte process);
-void VpSetPresizeRange(uint from, uint to);
+void VpSetPresizeRange(TileIndex from, TileIndex to);
 void VpSetPlaceSizingLimit(int limit);
 
 typedef void PlaceProc(TileIndex tile);
--- a/src/water.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/water.h	Sun Feb 03 20:17:54 2008 +0000
@@ -6,10 +6,16 @@
 #define WATER_H
 
 void TileLoop_Water(TileIndex tile);
+bool FloodHalftile(TileIndex t);
+
+void ConvertGroundTilesIntoWaterTiles();
+
 void DrawShipDepotSprite(int x, int y, int image);
-void DrawCanalWater(TileIndex tile);
-void MakeWaterOrCanalDependingOnOwner(TileIndex tile, Owner o);
-void MakeWaterOrCanalDependingOnSurroundings(TileIndex t, Owner o);
-void FloodHalftile(TileIndex t);
+void DrawCanalWater(TileIndex tile, bool draw_base);
+void DrawRiverWater(const struct TileInfo *ti, bool draw_base);
+void DrawShoreTile(Slope tileh);
+
+void MakeWaterKeepingClass(TileIndex tile, Owner o);
+void SetWaterClassDependingOnSurroundings(TileIndex t);
 
 #endif /* WATER_H */
--- a/src/water_cmd.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/water_cmd.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,8 +8,6 @@
 #include "bridge.h"
 #include "cmd_helper.h"
 #include "station_map.h"
-#include "table/sprites.h"
-#include "table/strings.h"
 #include "tile_cmd.h"
 #include "landscape.h"
 #include "viewport_func.h"
@@ -33,10 +31,68 @@
 #include "vehicle_func.h"
 #include "sound_func.h"
 #include "variables.h"
-
+#include "player_func.h"
+#include "settings_type.h"
+#include "clear_map.h"
+#include "tree_map.h"
 
-static Vehicle *FindFloodableVehicleOnTile(TileIndex tile);
-static void FloodVehicle(Vehicle *v);
+#include "table/sprites.h"
+#include "table/strings.h"
+
+/**
+ * Describes the behaviour of a tile during flooding.
+ */
+enum FloodingBehaviour {
+	FLOOD_NONE,    ///< The tile does not flood neighboured tiles.
+	FLOOD_ACTIVE,  ///< The tile floods neighboured tiles.
+	FLOOD_PASSIVE, ///< The tile does not actively flood neighboured tiles, but it prevents them from drying up.
+	FLOOD_DRYUP,   ///< The tile drys up if it is not constantly flooded from neighboured tiles.
+};
+
+/**
+ * Describes from which directions a specific slope can be flooded (if the tile is floodable at all).
+ */
+static const uint8 _flood_from_dirs[] = {
+	(1 << DIR_NW) | (1 << DIR_SW) | (1 << DIR_SE) | (1 << DIR_NE), // SLOPE_FLAT
+	(1 << DIR_NE) | (1 << DIR_SE),                                 // SLOPE_W
+	(1 << DIR_NW) | (1 << DIR_NE),                                 // SLOPE_S
+	(1 << DIR_NE),                                                 // SLOPE_SW
+	(1 << DIR_NW) | (1 << DIR_SW),                                 // SLOPE_E
+	0,                                                             // SLOPE_EW
+	(1 << DIR_NW),                                                 // SLOPE_SE
+	(1 << DIR_N ) | (1 << DIR_NW) | (1 << DIR_NE),                 // SLOPE_WSE, SLOPE_STEEP_S
+	(1 << DIR_SW) | (1 << DIR_SE),                                 // SLOPE_N
+	(1 << DIR_SE),                                                 // SLOPE_NW
+	0,                                                             // SLOPE_NS
+	(1 << DIR_E ) | (1 << DIR_NE) | (1 << DIR_SE),                 // SLOPE_NWS, SLOPE_STEEP_W
+	(1 << DIR_SW),                                                 // SLOPE_NE
+	(1 << DIR_S ) | (1 << DIR_SW) | (1 << DIR_SE),                 // SLOPE_ENW, SLOPE_STEEP_N
+	(1 << DIR_W ) | (1 << DIR_SW) | (1 << DIR_NW),                 // SLOPE_SEN, SLOPE_STEEP_E
+};
+
+/**
+ * Marks tile dirty if it is a canal or river tile.
+ * Called to avoid glitches when flooding tiles next to canal tile.
+ *
+ * @param tile tile to check
+ */
+static inline void MarkTileDirtyIfCanalOrRiver(TileIndex tile)
+{
+	if (IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile);
+}
+
+/**
+ * Marks the tiles around a tile as dirty, if they are canals or rivers.
+ *
+ * @param tile The center of the tile where all other tiles are marked as dirty
+ * @ingroup dirty
+ */
+static void MarkCanalsAndRiversAroundDirty(TileIndex tile)
+{
+	for (Direction dir = DIR_BEGIN; dir < DIR_END; dir++) {
+		MarkTileDirtyIfCanalOrRiver(tile + TileOffsByDir(dir));
+	}
+}
 
 /**
  * Makes a tile canal or water depending on the surroundings.
@@ -45,33 +101,46 @@
  * @param t the tile to change.
  * @param o the owner of the new tile.
  */
-void MakeWaterOrCanalDependingOnSurroundings(TileIndex t, Owner o)
+void SetWaterClassDependingOnSurroundings(TileIndex t)
 {
 	assert(GetTileSlope(t, NULL) == SLOPE_FLAT);
 
 	/* Mark tile dirty in all cases */
 	MarkTileDirtyByTile(t);
 
-	/* Non-sealevel -> canal */
-	if (TileHeight(t) != 0) {
-		MakeCanal(t, o);
-		return;
-	}
-
 	bool has_water = false;
 	bool has_canal = false;
+	bool has_river = false;
 
 	for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
 		TileIndex neighbour = TileAddByDiagDir(t, dir);
-		if (IsTileType(neighbour, MP_WATER)) {
-			has_water |= IsSea(neighbour) || IsCoast(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) == OWNER_WATER);
-			has_canal |= IsCanal(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) != OWNER_WATER);
+		switch (GetTileType(neighbour)) {
+			case MP_WATER:
+				has_water |= IsSea(neighbour) || IsCoast(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) == OWNER_WATER);
+				has_canal |= IsCanal(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) != OWNER_WATER);
+				has_river |= IsRiver(neighbour);
+				break;
+
+			case MP_RAILWAY:
+				/* Shore or flooded halftile */
+				has_water |= (GetRailGroundType(neighbour) == RAIL_GROUND_WATER);
+				break;
+
+			case MP_TREES:
+				/* trees on shore */
+				has_water |= (GetTreeGround(neighbour) == TREE_GROUND_SHORE);
+				break;
+
+			default: break;
 		}
 	}
-	if (has_canal || !has_water) {
-		MakeCanal(t, o);
+
+	if (has_river && !has_canal) {
+		SetWaterClass(t, WATER_CLASS_RIVER);
+	} else if (has_canal || !has_water) {
+		SetWaterClass(t, WATER_CLASS_CANAL);
 	} else {
-		MakeWater(t);
+		SetWaterClass(t, WATER_CLASS_SEA);
 	}
 }
 
@@ -92,11 +161,19 @@
 
 	tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
 
-	if (!IsWaterTile(tile) || !IsWaterTile(tile2))
+	if (!IsWaterTile(tile) || !IsWaterTile(tile2)) {
 		return_cmd_error(STR_3801_MUST_BE_BUILT_ON_WATER);
+	}
 
 	if (IsBridgeAbove(tile) || IsBridgeAbove(tile2)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
+	if (GetTileSlope(tile, NULL) != SLOPE_FLAT || GetTileSlope(tile2, NULL) != SLOPE_FLAT) {
+		/* Prevent depots on rapids */
+		return_cmd_error(STR_0239_SITE_UNSUITABLE);
+	}
+
+	WaterClass wc1 = GetWaterClass(tile);
+	WaterClass wc2 = GetWaterClass(tile2);
 	Owner o1 = GetTileOwner(tile);
 	Owner o2 = GetTileOwner(tile2);
 	ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -111,8 +188,8 @@
 	if (flags & DC_EXEC) {
 		depot->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
-		MakeShipDepot(tile,  _current_player, DEPOT_NORTH, axis, o1);
-		MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, o2);
+		MakeShipDepot(tile,  _current_player, DEPOT_NORTH, axis, wc1, o1);
+		MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2, o2);
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile2);
 		d_auto_delete.Detach();
@@ -121,12 +198,14 @@
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.build_ship_depot);
 }
 
-void MakeWaterOrCanalDependingOnOwner(TileIndex tile, Owner o)
+void MakeWaterKeepingClass(TileIndex tile, Owner o)
 {
-	if (o == OWNER_WATER) {
-		MakeWater(tile);
-	} else {
-		MakeCanal(tile, o);
+	assert(IsTileType(tile, MP_WATER) || (IsTileType(tile, MP_STATION) && (IsBuoy(tile) || IsDock(tile))));
+
+	switch (GetWaterClass(tile)) {
+		case WATER_CLASS_SEA:   MakeWater(tile);              break;
+		case WATER_CLASS_CANAL: MakeCanal(tile, o, Random()); break;
+		case WATER_CLASS_RIVER: MakeRiver(tile, Random());    break;
 	}
 }
 
@@ -146,8 +225,8 @@
 		/* Kill the depot, which is registered at the northernmost tile. Use that one */
 		delete GetDepotByTile(tile2 < tile ? tile2 : tile);
 
-		MakeWaterOrCanalDependingOnOwner(tile,  GetShipDepotWaterOwner(tile));
-		MakeWaterOrCanalDependingOnOwner(tile2, GetShipDepotWaterOwner(tile2));
+		MakeWaterKeepingClass(tile,  GetShipDepotWaterOwner(tile));
+		MakeWaterKeepingClass(tile2, GetShipDepotWaterOwner(tile2));
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile2);
 	}
@@ -167,6 +246,8 @@
 
 	delta = TileOffsByDiagDir(dir);
 	/* lower tile */
+	WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL;
+
 	ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(ret)) return CMD_ERROR;
 	if (GetTileSlope(tile - delta, NULL) != SLOPE_FLAT) {
@@ -174,6 +255,8 @@
 	}
 
 	/* upper tile */
+	WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL;
+
 	ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(ret)) return CMD_ERROR;
 	if (GetTileSlope(tile + delta, NULL) != SLOPE_FLAT) {
@@ -187,10 +270,12 @@
 	}
 
 	if (flags & DC_EXEC) {
-		MakeLock(tile, _current_player, dir);
+		MakeLock(tile, _current_player, dir, wc_lower, wc_upper);
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile - delta);
 		MarkTileDirtyByTile(tile + delta);
+		MarkCanalsAndRiversAroundDirty(tile - delta);
+		MarkCanalsAndRiversAroundDirty(tile + delta);
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_water * 22 >> 3);
@@ -208,30 +293,17 @@
 
 	if (flags & DC_EXEC) {
 		DoClearSquare(tile);
-		MakeWaterOrCanalDependingOnSurroundings(tile + delta, _current_player);
-		MakeWaterOrCanalDependingOnSurroundings(tile - delta, _current_player);
+		MakeWaterKeepingClass(tile + delta, GetTileOwner(tile));
+		MakeWaterKeepingClass(tile - delta, GetTileOwner(tile));
+		MarkTileDirtyByTile(tile - delta);
+		MarkTileDirtyByTile(tile + delta);
+		MarkCanalsAndRiversAroundDirty(tile - delta);
+		MarkCanalsAndRiversAroundDirty(tile + delta);
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_water * 2);
 }
 
-/**
- * Marks the tiles around a tile as dirty.
- *
- * This functions marks the tiles around a given tile as dirty for repaint.
- *
- * @param tile The center of the tile where all other tiles are marked as dirty
- * @ingroup dirty
- * @see TerraformAddDirtyTileAround
- */
-static void MarkTilesAroundDirty(TileIndex tile)
-{
-	MarkTileDirtyByTile(TILE_ADDXY(tile, 0, 1));
-	MarkTileDirtyByTile(TILE_ADDXY(tile, 0, -1));
-	MarkTileDirtyByTile(TILE_ADDXY(tile, 1, 0));
-	MarkTileDirtyByTile(TILE_ADDXY(tile, -1, 0));
-}
-
 /** Builds a lock (ship-lift)
  * @param tile tile where to place the lock
  * @param flags type of operation
@@ -240,15 +312,12 @@
  */
 CommandCost CmdBuildLock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	DiagDirection dir;
+	DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile, NULL));
+	if (dir == INVALID_DIAGDIR) return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
 
-	switch (GetTileSlope(tile, NULL)) {
-		case SLOPE_SW: dir = DIAGDIR_SW; break;
-		case SLOPE_SE: dir = DIAGDIR_SE; break;
-		case SLOPE_NW: dir = DIAGDIR_NW; break;
-		case SLOPE_NE: dir = DIAGDIR_NE; break;
-		default: return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
-	}
+	/* Disallow building of locks on river rapids */
+	if (IsWaterTile(tile)) return_cmd_error(STR_0239_SITE_UNSUITABLE);
+
 	return DoBuildShiplift(tile, dir, flags);
 }
 
@@ -256,7 +325,7 @@
  * @param tile end tile of stretch-dragging
  * @param flags type of operation
  * @param p1 start tile of stretch-dragging
- * @param p2 ctrl pressed - toggles ocean / canals at sealevel (ocean only allowed in the scenario editor)
+ * @param p2 specifies canal (0), water (1) or river (2); last two can only be built in scenario editor
  */
 CommandCost CmdBuildCanal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
@@ -267,8 +336,9 @@
 	int sx, sy;
 
 	if (p1 >= MapSize()) return CMD_ERROR;
+
 	/* Outside of the editor you can only build canals, not oceans */
-	if (HasBit(p2, 0) && _game_mode != GM_EDITOR) return CMD_ERROR;
+	if (p2 != 0 && _game_mode != GM_EDITOR) return CMD_ERROR;
 
 	x = TileX(tile);
 	y = TileY(tile);
@@ -286,25 +356,28 @@
 	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
 		CommandCost ret;
 
-		if (GetTileSlope(tile, NULL) != SLOPE_FLAT) {
+		Slope slope = GetTileSlope(tile, NULL);
+		if (slope != SLOPE_FLAT && (p2 != 2 || !IsInclinedSlope(slope))) {
 			return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
 		}
 
 		/* can't make water of water! */
-		if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || HasBit(p2, 0))) continue;
+		if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || p2 == 1)) continue;
 
 		ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 		if (CmdFailed(ret)) return ret;
 		cost.AddCost(ret);
 
 		if (flags & DC_EXEC) {
-			if (TileHeight(tile) == 0 && HasBit(p2, 0)) {
+			if (TileHeight(tile) == 0 && p2 == 1) {
 				MakeWater(tile);
+			} else if (p2 == 2) {
+				MakeRiver(tile, Random());
 			} else {
-				MakeCanal(tile, _current_player);
+				MakeCanal(tile, _current_player, Random());
 			}
 			MarkTileDirtyByTile(tile);
-			MarkTilesAroundDirty(tile);
+			MarkCanalsAndRiversAroundDirty(tile);
 		}
 
 		cost.AddCost(_price.clear_water);
@@ -334,7 +407,10 @@
 
 			if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
 
-			if (flags & DC_EXEC) DoClearSquare(tile);
+			if (flags & DC_EXEC) {
+				DoClearSquare(tile);
+				MarkCanalsAndRiversAroundDirty(tile);
+			}
 			return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_water);
 
 		case WATER_TILE_COAST: {
@@ -343,8 +419,11 @@
 			/* Make sure no vehicle is on the tile */
 			if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
-			if (flags & DC_EXEC) DoClearSquare(tile);
-			if (slope == SLOPE_N || slope == SLOPE_E || slope == SLOPE_S || slope == SLOPE_W) {
+			if (flags & DC_EXEC) {
+				DoClearSquare(tile);
+				MarkCanalsAndRiversAroundDirty(tile);
+			}
+			if (IsSlopeWithOneCornerRaised(slope)) {
 				return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_water);
 			} else {
 				return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_roughland);
@@ -373,73 +452,102 @@
 	}
 }
 
-/** return true if a tile is a water tile. */
-static bool IsWateredTile(TileIndex tile)
+/**
+ * return true if a tile is a water tile wrt. a certain direction.
+ *
+ * @param tile The tile of interest.
+ * @param from The direction of interest.
+ * @return true iff the tile is water in the view of 'from'.
+ *
+ */
+static bool IsWateredTile(TileIndex tile, Direction from)
 {
 	switch (GetTileType(tile)) {
 		case MP_WATER:
 			if (!IsCoast(tile)) return true;
-
 			switch (GetTileSlope(tile, NULL)) {
-				case SLOPE_W:
-				case SLOPE_S:
-				case SLOPE_E:
-				case SLOPE_N:
-					return true;
-
-				default:
-					return false;
+				case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
+				case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
+				case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
+				case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
+				default: return false;
 			}
 
-		case MP_STATION:  return IsOilRig(tile) || IsDock(tile) || IsBuoy(tile);
+		case MP_RAILWAY:
+			if (GetRailGroundType(tile) == RAIL_GROUND_WATER) {
+				assert(IsPlainRailTile(tile));
+				switch (GetTileSlope(tile, NULL)) {
+					case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
+					case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
+					case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
+					case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
+					default: return false;
+				}
+			}
+			return false;
+
+		case MP_STATION:  return IsOilRig(tile) || (IsDock(tile) && GetTileSlope(tile, NULL) == SLOPE_FLAT) || IsBuoy(tile);
 		case MP_INDUSTRY: return (GetIndustrySpec(GetIndustryType(tile))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
 		default:          return false;
 	}
 }
 
-/** draw a canal styled water tile with dikes around */
-void DrawCanalWater(TileIndex tile)
+static void DrawWaterEdges(SpriteID base, TileIndex tile)
 {
 	uint wa;
 
+	/* determine the edges around with water. */
+	wa  = IsWateredTile(TILE_ADDXY(tile, -1,  0), DIR_SW) << 0;
+	wa += IsWateredTile(TILE_ADDXY(tile,  0,  1), DIR_NW) << 1;
+	wa += IsWateredTile(TILE_ADDXY(tile,  1,  0), DIR_NE) << 2;
+	wa += IsWateredTile(TILE_ADDXY(tile,  0, -1), DIR_SE) << 3;
+
+	if (!(wa & 1)) DrawGroundSprite(base,     PAL_NONE);
+	if (!(wa & 2)) DrawGroundSprite(base + 1, PAL_NONE);
+	if (!(wa & 4)) DrawGroundSprite(base + 2, PAL_NONE);
+	if (!(wa & 8)) DrawGroundSprite(base + 3, PAL_NONE);
+
+	/* right corner */
+	switch (wa & 0x03) {
+		case 0: DrawGroundSprite(base + 4, PAL_NONE); break;
+		case 3: if (!IsWateredTile(TILE_ADDXY(tile, -1, 1), DIR_W)) DrawGroundSprite(base + 8, PAL_NONE); break;
+	}
+
+	/* bottom corner */
+	switch (wa & 0x06) {
+		case 0: DrawGroundSprite(base + 5, PAL_NONE); break;
+		case 6: if (!IsWateredTile(TILE_ADDXY(tile, 1, 1), DIR_N)) DrawGroundSprite(base + 9, PAL_NONE); break;
+	}
+
+	/* left corner */
+	switch (wa & 0x0C) {
+		case  0: DrawGroundSprite(base + 6, PAL_NONE); break;
+		case 12: if (!IsWateredTile(TILE_ADDXY(tile, 1, -1), DIR_E)) DrawGroundSprite(base + 10, PAL_NONE); break;
+	}
+
+	/* upper corner */
+	switch (wa & 0x09) {
+		case 0: DrawGroundSprite(base + 7, PAL_NONE); break;
+		case 9: if (!IsWateredTile(TILE_ADDXY(tile, -1, -1), DIR_S)) DrawGroundSprite(base + 11, PAL_NONE); break;
+	}
+}
+
+/** Draw a plain sea water tile with no edges */
+void DrawSeaWater(TileIndex tile)
+{
+	DrawGroundSprite(SPR_FLAT_WATER_TILE, PAL_NONE);
+}
+
+/** draw a canal styled water tile with dikes around */
+void DrawCanalWater(TileIndex tile, bool draw_base)
+{
+	if (draw_base) DrawGroundSprite(SPR_FLAT_WATER_TILE, PAL_NONE);
+
 	/* Test for custom graphics, else use the default */
 	SpriteID dikes_base = GetCanalSprite(CF_DIKES, tile);
 	if (dikes_base == 0) dikes_base = SPR_CANAL_DIKES_BASE;
 
-	/* determine the edges around with water. */
-	wa  = IsWateredTile(TILE_ADDXY(tile, -1,  0)) << 0;
-	wa += IsWateredTile(TILE_ADDXY(tile,  0,  1)) << 1;
-	wa += IsWateredTile(TILE_ADDXY(tile,  1,  0)) << 2;
-	wa += IsWateredTile(TILE_ADDXY(tile,  0, -1)) << 3;
-
-	if (!(wa & 1)) DrawGroundSprite(dikes_base,     PAL_NONE);
-	if (!(wa & 2)) DrawGroundSprite(dikes_base + 1, PAL_NONE);
-	if (!(wa & 4)) DrawGroundSprite(dikes_base + 2, PAL_NONE);
-	if (!(wa & 8)) DrawGroundSprite(dikes_base + 3, PAL_NONE);
-
-	/* right corner */
-	switch (wa & 0x03) {
-		case 0: DrawGroundSprite(dikes_base + 4, PAL_NONE); break;
-		case 3: if (!IsWateredTile(TILE_ADDXY(tile, -1, 1))) DrawGroundSprite(dikes_base + 8, PAL_NONE); break;
-	}
-
-	/* bottom corner */
-	switch (wa & 0x06) {
-		case 0: DrawGroundSprite(dikes_base + 5, PAL_NONE); break;
-		case 6: if (!IsWateredTile(TILE_ADDXY(tile, 1, 1))) DrawGroundSprite(dikes_base + 9, PAL_NONE); break;
-	}
-
-	/* left corner */
-	switch (wa & 0x0C) {
-		case  0: DrawGroundSprite(dikes_base + 6, PAL_NONE); break;
-		case 12: if (!IsWateredTile(TILE_ADDXY(tile, 1, -1))) DrawGroundSprite(dikes_base + 10, PAL_NONE); break;
-	}
-
-	/* upper corner */
-	switch (wa & 0x09) {
-		case 0: DrawGroundSprite(dikes_base + 7, PAL_NONE); break;
-		case 9: if (!IsWateredTile(TILE_ADDXY(tile, -1, -1))) DrawGroundSprite(dikes_base + 11, PAL_NONE); break;
-	}
+	DrawWaterEdges(dikes_base, tile);
 }
 
 struct LocksDrawTileStruct {
@@ -480,25 +588,69 @@
 	}
 }
 
+void DrawRiverWater(const TileInfo *ti, bool draw_base)
+{
+	SpriteID image = SPR_FLAT_WATER_TILE;
+	SpriteID edges_base = GetCanalSprite(CF_RIVER_EDGE, ti->tile);
+
+	if (ti->tileh != SLOPE_FLAT) {
+		image = GetCanalSprite(CF_RIVER_SLOPE, ti->tile);
+		if (image == 0) {
+			switch (ti->tileh) {
+				case SLOPE_NW: image = SPR_WATER_SLOPE_Y_DOWN; break;
+				case SLOPE_SW: image = SPR_WATER_SLOPE_X_UP;   break;
+				case SLOPE_SE: image = SPR_WATER_SLOPE_Y_UP;   break;
+				case SLOPE_NE: image = SPR_WATER_SLOPE_X_DOWN; break;
+				default:       image = SPR_FLAT_WATER_TILE;    break;
+			}
+		} else {
+			switch (ti->tileh) {
+				default: NOT_REACHED();
+				case SLOPE_SE:             edges_base += 12; break;
+				case SLOPE_NE: image += 1; edges_base += 24; break;
+				case SLOPE_SW: image += 2; edges_base += 36; break;
+				case SLOPE_NW: image += 3; edges_base += 48; break;
+			}
+		}
+	}
+
+	if (draw_base) DrawGroundSprite(image, PAL_NONE);
+
+	/* Draw river edges if available. */
+	if (edges_base > 48) DrawWaterEdges(edges_base, ti->tile);
+}
+
+void DrawShoreTile(Slope tileh)
+{
+	/* Converts the enum Slope into an offset based on SPR_SHORE_BASE.
+	 * This allows to calculate the proper sprite to display for this Slope */
+	static const byte tileh_to_shoresprite[32] = {
+		0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 17, 11, 12, 13, 14, 0,
+		0, 0, 0, 0, 0,  0, 0, 0, 0, 0,  0,  5,  0, 10, 15, 0,
+	};
+
+	assert(!IsHalftileSlope(tileh)); // Halftile slopes need to get handled earlier.
+	assert(tileh != SLOPE_FLAT);     // Shore is never flat
+
+	assert((tileh != SLOPE_EW) && (tileh != SLOPE_NS)); // No suitable sprites for current flooding behaviour
+
+	DrawGroundSprite(SPR_SHORE_BASE + tileh_to_shoresprite[tileh], PAL_NONE);
+}
+
 static void DrawTile_Water(TileInfo *ti)
 {
 	switch (GetWaterTileType(ti->tile)) {
 		case WATER_TILE_CLEAR:
-			DrawGroundSprite(SPR_FLAT_WATER_TILE, PAL_NONE);
-			if (IsCanal(ti->tile)) DrawCanalWater(ti->tile);
+			switch (GetWaterClass(ti->tile)) {
+				case WATER_CLASS_SEA:   DrawSeaWater(ti->tile); break;
+				case WATER_CLASS_CANAL: DrawCanalWater(ti->tile, true); break;
+				case WATER_CLASS_RIVER: DrawRiverWater(ti, true); break;
+			}
 			DrawBridgeMiddle(ti);
 			break;
 
 		case WATER_TILE_COAST: {
-			/* Converts the enum Slope into an offset based on SPR_SHORE_BASE.
-			 * This allows to calculate the proper sprite to display for this Slope */
-			static const byte tileh_to_shoresprite[32] = {
-				0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 17, 11, 12, 13, 14, 0,
-				0, 0, 0, 0, 0,  0, 0, 0, 0, 0,  0,  5,  0, 10, 15, 0,
-			};
-
-			assert(!IsSteepSlope(ti->tileh));
-			DrawGroundSprite(SPR_SHORE_BASE + tileh_to_shoresprite[ti->tileh], PAL_NONE);
+			DrawShoreTile(ti->tileh);
 			DrawBridgeMiddle(ti);
 		} break;
 
@@ -568,86 +720,6 @@
 	/* not used */
 }
 
-/**
- * Marks tile dirty if it is a canal tile.
- * Called to avoid glitches when flooding tiles next to canal tile.
- *
- * @param tile tile to check
- */
-static inline void MarkTileDirtyIfCanal(TileIndex tile) {
-	if (IsTileType(tile, MP_WATER) && IsCanal(tile)) MarkTileDirtyByTile(tile);
-}
-
-/**
- * Floods neighboured floodable tiles
- *
- * @param tile The water source tile that causes the flooding.
- * @param offs[0] Destination tile to flood.
- * @param offs[1] First corner of edge between source and dest tile.
- * @param offs[2] Second corder of edge between source and dest tile.
- * @param offs[3] Third corner of dest tile.
- * @param offs[4] Fourth corner of dest tile.
- */
-static void TileLoopWaterHelper(TileIndex tile, const TileIndexDiffC *offs)
-{
-	TileIndex target = TILE_ADD(tile, ToTileIndexDiff(offs[0]));
-
-	/* type of this tile mustn't be water already. */
-	if (IsTileType(target, MP_WATER)) return;
-
-	/* Are both corners of the edge between source and dest on height 0 ? */
-	if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[1]))) != 0 ||
-			TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[2]))) != 0) {
-		return;
-	}
-
-	/* Is any corner of the dest tile raised? (First two corners already checked above. */
-	if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[3]))) != 0 ||
-			TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[4]))) != 0) {
-		/* make coast.. */
-		switch (GetTileType(target)) {
-			case MP_RAILWAY: {
-				if (!IsPlainRailTile(target)) break;
-
-				FloodHalftile(target);
-
-				Vehicle *v = FindFloodableVehicleOnTile(target);
-				if (v != NULL) FloodVehicle(v);
-
-				break;
-			}
-
-			case MP_CLEAR:
-			case MP_TREES:
-				_current_player = OWNER_WATER;
-				if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
-					MakeShore(target);
-					MarkTileDirtyByTile(target);
-				}
-				break;
-
-			default:
-				break;
-		}
-	} else {
-		/* Flood vehicles */
-		_current_player = OWNER_WATER;
-
-		Vehicle *v = FindFloodableVehicleOnTile(target);
-		if (v != NULL) FloodVehicle(v);
-
-		/* flood flat tile */
-		if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
-			MakeWater(target);
-			MarkTileDirtyByTile(target);
-			/* Mark surrounding canal tiles dirty too to avoid glitches */
-			MarkTileDirtyIfCanal(target + TileDiffXY(0, 1));
-			MarkTileDirtyIfCanal(target + TileDiffXY(1, 0));
-			MarkTileDirtyIfCanal(target + TileDiffXY(0, -1));
-			MarkTileDirtyIfCanal(target + TileDiffXY(-1, 0));
-		}
-	}
-}
 
 /**
  * Finds a vehicle to flood.
@@ -730,7 +802,7 @@
 			BEGIN_ENUM_WAGONS(v)
 				if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo.Count();
 				v->vehstatus |= VS_CRASHED;
-				MarkAllViewportsDirty(v->left_coord, v->top_coord, v->right_coord + 1, v->bottom_coord + 1);
+				MarkSingleVehicleDirty(v);
 			END_ENUM_WAGONS(v)
 
 			v = u;
@@ -758,7 +830,7 @@
 			return;
 		}
 
-		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
+		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 
 		SetDParam(0, pass);
@@ -772,6 +844,162 @@
 }
 
 /**
+ * Returns the behaviour of a tile during flooding.
+ *
+ * @return Behaviour of the tile
+ */
+static FloodingBehaviour GetFloodingBehaviour(TileIndex tile)
+{
+	/* FLOOD_ACTIVE:  'single-corner-raised'-coast, sea, sea-shipdepots, sea-buoys, rail with flooded halftile
+	 * FLOOD_DRYUP:   coast with more than one corner raised, coast with rail-track, coast with trees
+	 * FLOOD_PASSIVE: oilrig, dock, water-industries
+	 * FLOOD_NONE:    canals, rivers, everything else
+	 */
+	switch (GetTileType(tile)) {
+		case MP_WATER:
+			if (IsCoast(tile)) {
+				Slope tileh = GetTileSlope(tile, NULL);
+				return (IsSlopeWithOneCornerRaised(tileh) ? FLOOD_ACTIVE : FLOOD_DRYUP);
+			} else {
+				return (GetWaterClass(tile) == WATER_CLASS_SEA) ? FLOOD_ACTIVE : FLOOD_NONE;
+			}
+
+		case MP_RAILWAY:
+			if (GetRailGroundType(tile) == RAIL_GROUND_WATER) {
+				return (IsSlopeWithOneCornerRaised(GetTileSlope(tile, NULL)) ? FLOOD_ACTIVE : FLOOD_DRYUP);
+			}
+			return FLOOD_NONE;
+
+		case MP_TREES:
+			return (GetTreeGround(tile) == TREE_GROUND_SHORE ? FLOOD_DRYUP : FLOOD_NONE);
+
+		case MP_STATION:
+			if (IsBuoy(tile) && GetWaterClass(tile) == WATER_CLASS_SEA) return FLOOD_ACTIVE;
+			if (IsOilRig(tile) || IsDock(tile)) return FLOOD_PASSIVE;
+			return FLOOD_NONE;
+
+		case MP_INDUSTRY:
+			return ((GetIndustrySpec(GetIndustryType(tile))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0 ? FLOOD_PASSIVE : FLOOD_NONE);
+
+		default:
+			return FLOOD_NONE;
+	}
+}
+
+/**
+ * Floods a tile.
+ */
+static void DoFloodTile(TileIndex target)
+{
+	if (IsTileType(target, MP_WATER)) return;
+
+	bool flooded = false; // Will be set to true if something is changed.
+
+	_current_player = OWNER_WATER;
+
+	Slope tileh = GetTileSlope(target, NULL);
+	if (tileh != SLOPE_FLAT) {
+		/* make coast.. */
+		switch (GetTileType(target)) {
+			case MP_RAILWAY: {
+				if (!IsPlainRailTile(target)) break;
+
+				flooded = FloodHalftile(target);
+
+				Vehicle *v = FindFloodableVehicleOnTile(target);
+				if (v != NULL) FloodVehicle(v);
+
+				break;
+			}
+
+			case MP_TREES:
+				if (!IsSlopeWithOneCornerRaised(tileh)) {
+					SetTreeGroundDensity(target, TREE_GROUND_SHORE, 3);
+					MarkTileDirtyByTile(target);
+					flooded = true;
+					break;
+				}
+			/* FALL THROUGH */
+			case MP_CLEAR:
+				if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
+					MakeShore(target);
+					MarkTileDirtyByTile(target);
+					flooded = true;
+				}
+				break;
+
+			default:
+				break;
+		}
+	} else {
+		/* Flood vehicles */
+		Vehicle *v = FindFloodableVehicleOnTile(target);
+		if (v != NULL) FloodVehicle(v);
+
+		/* flood flat tile */
+		if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
+			MakeWater(target);
+			MarkTileDirtyByTile(target);
+			flooded = true;
+		}
+	}
+
+	if (flooded) {
+		/* Mark surrounding canal tiles dirty too to avoid glitches */
+		MarkCanalsAndRiversAroundDirty(target);
+
+		/* update signals if needed */
+		UpdateSignalsInBuffer();
+	}
+
+	_current_player = OWNER_NONE;
+}
+
+/**
+ * Drys a tile up.
+ */
+static void DoDryUp(TileIndex tile)
+{
+	_current_player = OWNER_WATER;
+
+	switch (GetTileType(tile)) {
+		case MP_RAILWAY:
+			assert(IsPlainRailTile(tile));
+			assert(GetRailGroundType(tile) == RAIL_GROUND_WATER);
+
+			RailGroundType new_ground;
+			switch (GetTrackBits(tile)) {
+				case TRACK_BIT_UPPER: new_ground = RAIL_GROUND_FENCE_HORIZ1; break;
+				case TRACK_BIT_LOWER: new_ground = RAIL_GROUND_FENCE_HORIZ2; break;
+				case TRACK_BIT_LEFT:  new_ground = RAIL_GROUND_FENCE_VERT1;  break;
+				case TRACK_BIT_RIGHT: new_ground = RAIL_GROUND_FENCE_VERT2;  break;
+				default: NOT_REACHED();
+			}
+			SetRailGroundType(tile, new_ground);
+			MarkTileDirtyByTile(tile);
+			break;
+
+		case MP_TREES:
+			SetTreeGroundDensity(tile, TREE_GROUND_GRASS, 3);
+			MarkTileDirtyByTile(tile);
+			break;
+
+		case MP_WATER:
+			assert(IsCoast(tile));
+
+			if (CmdSucceeded(DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
+				MakeClear(tile, CLEAR_GRASS, 3);
+				MarkTileDirtyByTile(tile);
+			}
+			break;
+
+		default: NOT_REACHED();
+	}
+
+	_current_player = OWNER_NONE;
+}
+
+/**
  * Let a water tile floods its diagonal adjoining tiles
  * called from tunnelbridge_cmd, and by TileLoop_Industry() and TileLoop_Track()
  *
@@ -779,47 +1007,79 @@
  */
 void TileLoop_Water(TileIndex tile)
 {
-	static const TileIndexDiffC _tile_loop_offs_array[][5] = {
-		// tile to mod              shore?    shore?
-		{{-1,  0}, {0, 0}, {0, 1}, {-1,  0}, {-1,  1}},
-		{{ 0,  1}, {0, 1}, {1, 1}, { 0,  2}, { 1,  2}},
-		{{ 1,  0}, {1, 0}, {1, 1}, { 2,  0}, { 2,  1}},
-		{{ 0, -1}, {0, 0}, {1, 0}, { 0, -1}, { 1, -1}}
-	};
-
-	/* Ensure buoys on canal borders do not flood */
-	if (IsCanalBuoyTile(tile)) return;
-	/* Ensure only sea and coast floods, not canals or rivers */
-	if (IsTileType(tile, MP_WATER) && !(IsSea(tile) || IsCoast(tile))) return;
-
-	/* floods in all four diagonal directions with the exception of the edges */
-	if (IsInsideMM(TileX(tile), 1, MapSizeX() - 3 + 1) &&
-			IsInsideMM(TileY(tile), 1, MapSizeY() - 3 + 1)) {
-		uint i;
+	switch (GetFloodingBehaviour(tile)) {
+		case FLOOD_ACTIVE:
+			for (Direction dir = DIR_BEGIN; dir < DIR_END; dir++) {
+				TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(dir));
+				if (dest == INVALID_TILE) continue;
 
-		for (i = 0; i != lengthof(_tile_loop_offs_array); i++) {
-			TileLoopWaterHelper(tile, _tile_loop_offs_array[i]);
-		}
-	}
-
-	/* _current_player can be changed by TileLoopWaterHelper.. reset it back here */
-	_current_player = OWNER_NONE;
+				uint z_dest;
+				Slope slope_dest = (Slope)(GetFoundationSlope(dest, &z_dest) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP);
+				if (z_dest > 0) continue;
 
-	/* edges */
-	if (TileX(tile) == 0 && IsInsideMM(TileY(tile), 1, MapSizeY() - 3 + 1)) { //NE
-		TileLoopWaterHelper(tile, _tile_loop_offs_array[2]);
-	}
+				if (!HasBit(_flood_from_dirs[slope_dest], ReverseDir(dir))) continue;
 
-	if (TileX(tile) == MapSizeX() - 2 && IsInsideMM(TileY(tile), 1, MapSizeY() - 3 + 1)) { //SW
-		TileLoopWaterHelper(tile, _tile_loop_offs_array[0]);
-	}
+				DoFloodTile(dest);
+			}
+			break;
 
-	if (TileY(tile) == 0 && IsInsideMM(TileX(tile), 1, MapSizeX() - 3 + 1)) { //NW
-		TileLoopWaterHelper(tile, _tile_loop_offs_array[1]);
+		case FLOOD_DRYUP: {
+			Slope slope_here = (Slope)(GetFoundationSlope(tile, NULL) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP);
+			uint check_dirs = _flood_from_dirs[slope_here];
+			uint dir;
+			FOR_EACH_SET_BIT(dir, check_dirs) {
+				TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir((Direction)dir));
+				if (dest == INVALID_TILE) continue;
+
+				FloodingBehaviour dest_behaviour = GetFloodingBehaviour(dest);
+				if ((dest_behaviour == FLOOD_ACTIVE) || (dest_behaviour == FLOOD_PASSIVE)) return;
+			}
+			DoDryUp(tile);
+			break;
+		}
+
+		default: return;
 	}
+}
 
-	if (TileY(tile) == MapSizeY() - 2 && IsInsideMM(TileX(tile), 1, MapSizeX() - 3 + 1)) { //SE
-		TileLoopWaterHelper(tile, _tile_loop_offs_array[3]);
+void ConvertGroundTilesIntoWaterTiles()
+{
+	TileIndex tile;
+	uint z;
+	Slope slope;
+
+	for (tile = 0; tile < MapSize(); ++tile) {
+		slope = GetTileSlope(tile, &z);
+		if (IsTileType(tile, MP_CLEAR) && z == 0) {
+			/* Make both water for tiles at level 0
+			 * and make shore, as that looks much better
+			 * during the generation. */
+			switch (slope) {
+				case SLOPE_FLAT:
+					MakeWater(tile);
+					break;
+
+				case SLOPE_N:
+				case SLOPE_E:
+				case SLOPE_S:
+				case SLOPE_W:
+					MakeShore(tile);
+					break;
+
+				default:
+					uint check_dirs = _flood_from_dirs[slope & ~SLOPE_STEEP];
+					uint dir;
+					FOR_EACH_SET_BIT(dir, check_dirs) {
+						TileIndex dest = TILE_ADD(tile, TileOffsByDir((Direction)dir));
+						Slope slope_dest = (Slope)(GetTileSlope(dest, NULL) & ~SLOPE_STEEP);
+						if (slope_dest == SLOPE_FLAT || IsSlopeWithOneCornerRaised(slope_dest)) {
+							MakeShore(tile);
+							break;
+						}
+					}
+					break;
+			}
+		}
 	}
 }
 
@@ -832,7 +1092,7 @@
 	if (mode != TRANSPORT_WATER) return 0;
 
 	switch (GetWaterTileType(tile)) {
-		case WATER_TILE_CLEAR: ts = TRACK_BIT_ALL; break;
+		case WATER_TILE_CLEAR: ts = (GetTileSlope(tile, NULL) == SLOPE_FLAT) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break;
 		case WATER_TILE_COAST: ts = (TrackBits)coast_tracks[GetTileSlope(tile, NULL) & 0xF]; break;
 		case WATER_TILE_LOCK:  ts = AxisToTrackBits(DiagDirToAxis(GetLockDirection(tile))); break;
 		case WATER_TILE_DEPOT: ts = AxisToTrackBits(GetShipDepotAxis(tile)); break;
--- a/src/water_map.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/water_map.h	Sun Feb 03 20:17:54 2008 +0000
@@ -12,6 +12,12 @@
 	WATER_TILE_DEPOT,
 };
 
+enum WaterClass {
+	WATER_CLASS_SEA,
+	WATER_CLASS_CANAL,
+	WATER_CLASS_RIVER,
+};
+
 enum DepotPart {
 	DEPOT_NORTH = 0x80,
 	DEPOT_SOUTH = 0x81,
@@ -37,6 +43,18 @@
 	return WATER_TILE_DEPOT;
 }
 
+static inline WaterClass GetWaterClass(TileIndex t)
+{
+	assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION));
+	return (WaterClass)GB(_m[t].m3, 0, 2);
+}
+
+static inline void SetWaterClass(TileIndex t, WaterClass wc)
+{
+	assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION));
+	SB(_m[t].m3, 0, 2, wc);
+}
+
 /** IsWater return true if any type of clear water like ocean, river, canal */
 static inline bool IsWater(TileIndex t)
 {
@@ -45,9 +63,22 @@
 
 static inline bool IsSea(TileIndex t)
 {
-	if (GetWaterTileType(t) != WATER_TILE_CLEAR) return false;
-	if (!IsTileOwner(t, OWNER_WATER)) return false; // 'Human' built water = canal, not sea
-	return true;
+	return IsWater(t) && GetWaterClass(t) == WATER_CLASS_SEA;
+}
+
+static inline bool IsCanal(TileIndex t)
+{
+	return IsWater(t) && GetWaterClass(t) == WATER_CLASS_CANAL;
+}
+
+static inline bool IsRiver(TileIndex t)
+{
+	return IsWater(t) && GetWaterClass(t) == WATER_CLASS_RIVER;
+}
+
+static inline bool IsWaterTile(TileIndex t)
+{
+	return IsTileType(t, MP_WATER) && IsWater(t);
 }
 
 static inline bool IsCoast(TileIndex t)
@@ -55,16 +86,6 @@
 	return GetWaterTileType(t) == WATER_TILE_COAST;
 }
 
-static inline bool IsCanal(TileIndex t)
-{
-	return GetWaterTileType(t) == WATER_TILE_CLEAR && GetTileOwner(t) != OWNER_WATER;
-}
-
-static inline bool IsWaterTile(TileIndex t)
-{
-	return IsTileType(t, MP_WATER) && IsWater(t);
-}
-
 static inline TileIndex GetOtherShipDepotTile(TileIndex t)
 {
 	return t + (HasBit(_m[t].m5, 0) ? -1 : 1) * (HasBit(_m[t].m5, 1) ? TileDiffXY(0, 1) : TileDiffXY(1, 0));
@@ -101,13 +122,18 @@
 	return GB(_m[t].m5, 0, 4);
 }
 
+static inline byte GetWaterTileRandomBits(TileIndex t)
+{
+	return _m[t].m4;
+}
+
 
 static inline void MakeWater(TileIndex t)
 {
 	SetTileType(t, MP_WATER);
 	SetTileOwner(t, OWNER_WATER);
 	_m[t].m2 = 0;
-	_m[t].m3 = 0;
+	_m[t].m3 = WATER_CLASS_SEA;
 	_m[t].m4 = 0;
 	_m[t].m5 = 0;
 }
@@ -122,44 +148,54 @@
 	_m[t].m5 = 1;
 }
 
-static inline void MakeCanal(TileIndex t, Owner o)
+static inline void MakeRiver(TileIndex t, uint8 random_bits)
+{
+	SetTileType(t, MP_WATER);
+	SetTileOwner(t, OWNER_WATER);
+	_m[t].m2 = 0;
+	_m[t].m3 = WATER_CLASS_RIVER;
+	_m[t].m4 = random_bits;
+	_m[t].m5 = 0;
+}
+
+static inline void MakeCanal(TileIndex t, Owner o, uint8 random_bits)
 {
 	assert(o != OWNER_WATER);
 	SetTileType(t, MP_WATER);
 	SetTileOwner(t, o);
 	_m[t].m2 = 0;
-	_m[t].m3 = 0;
-	_m[t].m4 = 0;
+	_m[t].m3 = WATER_CLASS_CANAL;
+	_m[t].m4 = random_bits;
 	_m[t].m5 = 0;
 }
 
-static inline void MakeShipDepot(TileIndex t, Owner o, DepotPart base, Axis a, Owner original_owner)
+static inline void MakeShipDepot(TileIndex t, Owner o, DepotPart base, Axis a, WaterClass original_water_class, Owner original_owner)
 {
 	SetTileType(t, MP_WATER);
 	SetTileOwner(t, o);
 	_m[t].m2 = 0;
-	_m[t].m3 = 0;
+	_m[t].m3 = original_water_class;
 	_m[t].m4 = original_owner;
 	_m[t].m5 = base + a * 2;
 }
 
-static inline void MakeLockTile(TileIndex t, Owner o, byte section)
+static inline void MakeLockTile(TileIndex t, Owner o, byte section, WaterClass original_water_class)
 {
 	SetTileType(t, MP_WATER);
 	SetTileOwner(t, o);
 	_m[t].m2 = 0;
-	_m[t].m3 = 0;
+	_m[t].m3 = original_water_class;
 	_m[t].m4 = 0;
 	_m[t].m5 = section;
 }
 
-static inline void MakeLock(TileIndex t, Owner o, DiagDirection d)
+static inline void MakeLock(TileIndex t, Owner o, DiagDirection d, WaterClass wc_lower, WaterClass wc_upper)
 {
 	TileIndexDiff delta = TileOffsByDiagDir(d);
 
-	MakeLockTile(t, o, LOCK_MIDDLE + d);
-	MakeLockTile(t - delta, o, LOCK_LOWER + d);
-	MakeLockTile(t + delta, o, LOCK_UPPER + d);
+	MakeLockTile(t, o, LOCK_MIDDLE + d, WATER_CLASS_CANAL);
+	MakeLockTile(t - delta, o, LOCK_LOWER + d, wc_lower);
+	MakeLockTile(t + delta, o, LOCK_UPPER + d, wc_upper);
 }
 
 #endif /* WATER_MAP_H */
--- a/src/waypoint.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/waypoint.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -16,7 +16,6 @@
 #include "town.h"
 #include "waypoint.h"
 #include "variables.h"
-#include "table/strings.h"
 #include "yapf/yapf.h"
 #include "newgrf.h"
 #include "misc/autoptr.hpp"
@@ -29,6 +28,11 @@
 #include "vehicle_func.h"
 #include "vehicle_base.h"
 #include "string_func.h"
+#include "signal_func.h"
+#include "player_func.h"
+#include "settings_type.h"
+
+#include "table/strings.h"
 
 enum {
 	MAX_WAYPOINTS_PER_TOWN = 64,
@@ -89,14 +93,14 @@
 	FOR_ALL_WAYPOINTS(local_wp) {
 		if (wp == local_wp) continue;
 
-		if (local_wp->xy && local_wp->string == STR_NULL && local_wp->town_index == wp->town_index)
+		if (local_wp->xy && local_wp->name == NULL && local_wp->town_index == wp->town_index)
 			used_waypoint[local_wp->town_cn] = true;
 	}
 
 	/* Find an empty spot */
 	for (i = 0; used_waypoint[i] && i < MAX_WAYPOINTS_PER_TOWN; i++) {}
 
-	wp->string = STR_NULL;
+	wp->name = NULL;
 	wp->town_cn = i;
 }
 
@@ -194,7 +198,7 @@
 		wp_auto_delete = wp;
 
 		wp->town_index = 0;
-		wp->string = STR_NULL;
+		wp->name = NULL;
 		wp->town_cn = 0;
 	} else if (flags & DC_EXEC) {
 		/* Move existing (recently deleted) waypoint to the new location */
@@ -282,6 +286,7 @@
 
 	if (flags & DC_EXEC) {
 		Track track = GetRailWaypointTrack(tile);
+		Owner owner = GetTileOwner(tile); // cannot use _current_player because of possible floods
 		wp = GetWaypointByTile(tile);
 
 		wp->deleted = 30; // let it live for this many days before we do the actual deletion.
@@ -292,7 +297,7 @@
 			MarkTileDirtyByTile(tile);
 		} else {
 			DoClearSquare(tile);
-			SetSignalsOnBothDir(tile, track);
+			AddTrackToSignalBuffer(tile, track, owner);
 		}
 		YapfNotifyTrackLayoutChange(tile, track);
 	}
@@ -347,24 +352,17 @@
 	if (!StrEmpty(_cmd_text)) {
 		if (!IsUniqueWaypointName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
 
-		StringID str = AllocateName(_cmd_text, 0);
-
-		if (str == 0) return CMD_ERROR;
-
 		if (flags & DC_EXEC) {
-			if (wp->string != STR_NULL) DeleteName(wp->string);
-
-			wp->string = str;
+			free(wp->name);
+			wp->name = strdup(_cmd_text);
 			wp->town_cn = 0;
 
 			UpdateWaypointSign(wp);
 			MarkWholeScreenDirty();
-		} else {
-			DeleteName(str);
 		}
 	} else {
 		if (flags & DC_EXEC) {
-			if (wp->string != STR_NULL) DeleteName(wp->string);
+			free(wp->name);
 
 			MakeDefaultWaypointName(wp);
 			UpdateWaypointSign(wp);
@@ -390,7 +388,6 @@
 
 	stat.train_tile = stat.xy = wp->xy;
 	stat.town = GetTown(wp->town_index);
-	stat.string_id = wp->string;
 	stat.build_date = wp->build_date;
 
 	return &stat;
@@ -420,7 +417,7 @@
 
 Waypoint::~Waypoint()
 {
-	if (this->string != STR_NULL) DeleteName(this->string);
+	free(this->name);
 
 	if (CleaningPool()) return;
 
@@ -459,7 +456,8 @@
 	SLE_CONDVAR(Waypoint, xy,         SLE_UINT32,                  6, SL_MAX_VERSION),
 	SLE_CONDVAR(Waypoint, town_index, SLE_UINT16,                 12, SL_MAX_VERSION),
 	SLE_CONDVAR(Waypoint, town_cn,    SLE_UINT8,                  12, SL_MAX_VERSION),
-	    SLE_VAR(Waypoint, string,     SLE_UINT16),
+	SLE_CONDVAR(Waypoint, string,     SLE_STRINGID,                0, 83),
+	SLE_CONDSTR(Waypoint, name,       SLE_STR, 0,                 84, SL_MAX_VERSION),
 	    SLE_VAR(Waypoint, deleted,    SLE_UINT8),
 
 	SLE_CONDVAR(Waypoint, build_date, SLE_FILE_U16 | SLE_VAR_I32,  3, 30),
--- a/src/waypoint.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/waypoint.h	Sun Feb 03 20:17:54 2008 +0000
@@ -7,6 +7,7 @@
 
 #include "oldpool.h"
 #include "rail_map.h"
+#include "command_type.h"
 
 struct Waypoint;
 DECLARE_OLD_POOL(Waypoint, Waypoint, 3, 8000)
@@ -16,7 +17,8 @@
 
 	TownID town_index; ///< Town associated with the waypoint
 	byte town_cn;      ///< The Nth waypoint for this town (consecutive number)
-	StringID string;   ///< If this is zero (i.e. no custom name), town + town_cn is used for naming
+	StringID string;   ///< C000-C03F have special meaning in old games
+	char *name;        ///< Custom name. If not set, town + town_cn is used for naming
 
 	ViewportSign sign; ///< Dimensions of sign (not saved)
 	Date build_date;   ///< Date of construction
--- a/src/widget.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/widget.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -4,13 +4,18 @@
 
 #include "stdafx.h"
 #include "openttd.h"
-#include "player.h"
-#include "table/sprites.h"
-#include "table/strings.h"
+#include "core/math_func.hpp"
+#include "player_func.h"
 #include "gfx_func.h"
 #include "window_gui.h"
 #include "window_func.h"
+#include "widgets/dropdown_func.h"
 
+#include "table/sprites.h"
+#include "table/strings.h"
+
+static const char *UPARROW   = "\xEE\x8A\xA0";
+static const char *DOWNARROW = "\xEE\x8A\xAA";
 
 static Point HandleScrollbarHittest(const Scrollbar *sb, int top, int bottom)
 {
@@ -208,13 +213,13 @@
 			/* show different image when clicked for WWT_IMGBTN_2 */
 			if ((wi->type & WWT_MASK) == WWT_IMGBTN_2 && clicked) img++;
 			DrawSprite(img, PAL_NONE, r.left + 1 + clicked, r.top + 1 + clicked);
-			goto draw_default;
+			break;
 		}
 
 		case WWT_PANEL: {
 			assert(wi->data == 0);
 			DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
-			goto draw_default;
+			break;
 		}
 
 		case WWT_TEXTBTN:
@@ -229,7 +234,7 @@
 			if ((wi->type & WWT_MASK) == WWT_TEXTBTN_2 && clicked) str++;
 
 			DrawStringCentered(((r.left + r.right + 1) >> 1) + clicked, ((r.top + r.bottom + 1) >> 1) - 5 + clicked, str, TC_FROMSTRING);
-			goto draw_default;
+			break;
 		}
 
 		case WWT_TEXT: {
@@ -244,7 +249,7 @@
 			DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_LOWERED | FR_DARKENED);
 
 			if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 1, str, TC_FROMSTRING, r.right - r.left - 10);
-			goto draw_default;
+			break;
 		}
 
 		case WWT_MATRIX: {
@@ -288,7 +293,7 @@
 				GfxFillRect(r.left + 1, x, r.right - 1, x, color);
 			}
 
-			goto draw_default;
+			break;
 		}
 
 		/* vertical scrollbar */
@@ -424,7 +429,7 @@
 			GfxFillRect(r.left + 1, r.bottom - 1, r.right - 1, r.bottom - 1, c1);
 			GfxFillRect(r.left, r.bottom, r.right, r.bottom, c2);
 
-			goto draw_default;
+			break;
 		}
 
 		case WWT_STICKYBOX: {
@@ -468,11 +473,34 @@
 			}
 
 			DrawStringCenteredTruncated(r.left + 2, r.right - 2, r.top + 2, wi->data, 0x84);
-draw_default:;
-			if (w->IsWidgetDisabled(i)) {
-				GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, _colour_gradient[wi->color & 0xF][2] | (1 << PALETTE_MODIFIER_GREYOUT));
-			}
+			break;
 		}
+
+		case WWT_DROPDOWN: {
+			assert(r.bottom - r.top == 11); // ensure consistent size
+
+			StringID str = wi->data;
+			DrawFrameRect(r.left, r.top, r.right - 12, r.bottom, wi->color, FR_NONE);
+			DrawFrameRect(r.right - 11, r.top, r.right, r.bottom, wi->color, clicked ? FR_LOWERED : FR_NONE);
+			DrawString(r.right - (clicked ? 8 : 9), r.top + (clicked ? 2 : 1), STR_0225, TC_BLACK);
+			if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 1, str, TC_BLACK, r.right - r.left - 12);
+			break;
+		}
+
+		case WWT_DROPDOWNIN: {
+			assert(r.bottom - r.top == 11); // ensure consistent size
+
+			StringID str = wi->data;
+			DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_LOWERED | FR_DARKENED);
+			DrawFrameRect(r.right - 11, r.top + 1, r.right - 1, r.bottom - 1, wi->color, clicked ? FR_LOWERED : FR_NONE);
+			DrawString(r.right - (clicked ? 8 : 9), r.top + (clicked ? 2 : 1), STR_0225, TC_BLACK);
+			if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 2, str, TC_BLACK, r.right - r.left - 12);
+			break;
+		}
+		}
+
+		if (w->IsWidgetDisabled(i)) {
+			GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, _colour_gradient[wi->color & 0xF][2] | (1 << PALETTE_MODIFIER_GREYOUT));
 		}
 	}
 
@@ -483,235 +511,6 @@
 
 }
 
-static const Widget _dropdown_menu_widgets[] = {
-{      WWT_PANEL,   RESIZE_NONE,     0,     0, 0,     0, 0, 0x0, STR_NULL},
-{  WWT_SCROLLBAR,   RESIZE_NONE,     0,     0, 0,     0, 0, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{   WIDGETS_END},
-};
-
-static int GetDropdownItem(const Window *w)
-{
-	byte item, counter;
-	int y;
-
-	if (GetWidgetFromPos(w, _cursor.pos.x - w->left, _cursor.pos.y - w->top) < 0)
-		return -1;
-
-	y = _cursor.pos.y - w->top - 2 + w->vscroll.pos * 10;
-
-	if (y < 0)
-		return - 1;
-
-	item = y / 10;
-	if (item >= WP(w, dropdown_d).num_items || (HasBit(WP(w,dropdown_d).disabled_state, item) && !HasBit(WP(w,dropdown_d).hidden_state, item)) || WP(w,dropdown_d).items[item] == 0)
-		return - 1;
-
-	/* Skip hidden items -- +1 for each hidden item before the clicked item. */
-	for (counter = 0; item >= counter; ++counter)
-		if (HasBit(WP(w, dropdown_d).hidden_state, counter)) item++;
-
-	return item;
-}
-
-static void DropdownMenuWndProc(Window *w, WindowEvent *e)
-{
-	int item;
-
-	switch (e->event) {
-		case WE_PAINT: {
-			int x,y,i,sel;
-			int width, height;
-
-			DrawWindowWidgets(w);
-
-			x = 1;
-			y = 2 - w->vscroll.pos * 10;
-
-			sel    = WP(w, dropdown_d).selected_index;
-			width  = w->widget[0].right - 3;
-			height = w->widget[0].bottom - 3;
-
-			for (i = 0; WP(w, dropdown_d).items[i] != INVALID_STRING_ID; i++, sel--) {
-				if (HasBit(WP(w, dropdown_d).hidden_state, i)) continue;
-
-				if (y >= 0 && y <= height) {
-					if (WP(w, dropdown_d).items[i] != STR_NULL) {
-						if (sel == 0) GfxFillRect(x + 1, y, x + width, y + 9, 0);
-						DrawStringTruncated(x + 2, y, WP(w, dropdown_d).items[i], sel == 0 ? TC_WHITE : TC_BLACK, x + width);
-
-						if (HasBit(WP(w, dropdown_d).disabled_state, i)) {
-							GfxFillRect(x, y, x + width, y + 9,
-								(1 << PALETTE_MODIFIER_GREYOUT) | _colour_gradient[_dropdown_menu_widgets[0].color][5]
-							);
-						}
-					} else {
-						int c1 = _colour_gradient[_dropdown_menu_widgets[0].color][3];
-						int c2 = _colour_gradient[_dropdown_menu_widgets[0].color][7];
-
-						GfxFillRect(x + 1, y + 3, x + w->width - 5, y + 3, c1);
-						GfxFillRect(x + 1, y + 4, x + w->width - 5, y + 4, c2);
-					}
-				}
-				y += 10;
-			}
-		} break;
-
-		case WE_CLICK: {
-			if (e->we.click.widget != 0) break;
-			item = GetDropdownItem(w);
-			if (item >= 0) {
-				WP(w, dropdown_d).click_delay = 4;
-				WP(w, dropdown_d).selected_index = item;
-				SetWindowDirty(w);
-			}
-		} break;
-
-		case WE_MOUSELOOP: {
-			Window *w2 = FindWindowById(WP(w, dropdown_d).parent_wnd_class, WP(w,dropdown_d).parent_wnd_num);
-			if (w2 == NULL) {
-				DeleteWindow(w);
-				return;
-			}
-
-			if (WP(w, dropdown_d).click_delay != 0 && --WP(w,dropdown_d).click_delay == 0) {
-				WindowEvent e;
-				e.event = WE_DROPDOWN_SELECT;
-				e.we.dropdown.button = WP(w, dropdown_d).parent_button;
-				e.we.dropdown.index  = WP(w, dropdown_d).selected_index;
-				w2->wndproc(w2, &e);
-				DeleteWindow(w);
-				return;
-			}
-
-			if (WP(w, dropdown_d).drag_mode) {
-				item = GetDropdownItem(w);
-
-				if (!_left_button_clicked) {
-					WP(w, dropdown_d).drag_mode = false;
-					if (item < 0) return;
-					WP(w, dropdown_d).click_delay = 2;
-				} else {
-					if (item < 0) return;
-				}
-
-				WP(w, dropdown_d).selected_index = item;
-				SetWindowDirty(w);
-			}
-		} break;
-
-		case WE_DESTROY: {
-			Window *w2 = FindWindowById(WP(w, dropdown_d).parent_wnd_class, WP(w,dropdown_d).parent_wnd_num);
-			if (w2 != NULL) {
-				w2->RaiseWidget(WP(w, dropdown_d).parent_button);
-				w2->InvalidateWidget(WP(w, dropdown_d).parent_button);
-			}
-		} break;
-	}
-}
-
-void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask)
-{
-	int i;
-	const Widget *wi;
-	Window *w2;
-	const Window *w3;
-	bool is_dropdown_menu_shown = w->IsWidgetLowered(button);
-	int top, height;
-	int screen_top, screen_bottom;
-	bool scroll = false;
-
-	DeleteWindowById(WC_DROPDOWN_MENU, 0);
-
-	if (is_dropdown_menu_shown) return;
-
-	w->LowerWidget(button);
-
-	w->InvalidateWidget(button);
-
-	for (i = 0; strings[i] != INVALID_STRING_ID; i++) {}
-	if (i == 0) return;
-
-	wi = &w->widget[button];
-
-	if (hidden_mask != 0) {
-		uint j;
-
-		for (j = 0; strings[j] != INVALID_STRING_ID; j++) {
-			if (HasBit(hidden_mask, j)) i--;
-		}
-	}
-
-	/* The preferred position is just below the dropdown calling widget */
-	top = w->top + wi->bottom + 2;
-	height = i * 10 + 4;
-
-	w3 = FindWindowById(WC_STATUS_BAR, 0);
-	screen_bottom = w3 == NULL ? _screen.height : w3->top;
-
-	/* Check if the dropdown will fully fit below the widget */
-	if (top + height >= screen_bottom) {
-		w3 = FindWindowById(WC_MAIN_TOOLBAR, 0);
-		screen_top = w3 == NULL ? 0 : w3->top + w3->height;
-
-		/* If not, check if it will fit above the widget */
-		if (w->top + wi->top - height - 1 > screen_top) {
-			top = w->top + wi->top - height - 1;
-		} else {
-			/* ... and lastly if it won't, enable the scroll bar and fit the
-			 * list in below the widget */
-			int rows = (screen_bottom - 4 - top) / 10;
-			height = rows * 10 + 4;
-			scroll = true;
-		}
-	}
-
-	w2 = AllocateWindow(
-		w->left + wi[-1].left + 1,
-		top,
-		wi->right - wi[-1].left + 1,
-		height,
-		DropdownMenuWndProc,
-		WC_DROPDOWN_MENU,
-		_dropdown_menu_widgets);
-
-	w2->widget[0].color = wi->color;
-	w2->widget[0].right = wi->right - wi[-1].left;
-	w2->widget[0].bottom = height - 1;
-
-	w2->SetWidgetHiddenState(1, !scroll);
-
-	if (scroll) {
-		/* We're scrolling, so enable the scroll bar and shrink the list by
-		 * the scrollbar's width */
-		w2->widget[1].color  = wi->color;
-		w2->widget[1].right  = w2->widget[0].right;
-		w2->widget[1].left   = w2->widget[1].right - 11;
-		w2->widget[1].bottom = height - 1;
-		w2->widget[0].right -= 12;
-
-		w2->vscroll.cap   = (height - 4) / 10;
-		w2->vscroll.count = i;
-	}
-
-	w2->desc_flags = WDF_DEF_WIDGET;
-	w2->flags4 &= ~WF_WHITE_BORDER_MASK;
-
-	WP(w2, dropdown_d).disabled_state = disabled_mask;
-	WP(w2, dropdown_d).hidden_state = hidden_mask;
-
-	WP(w2, dropdown_d).parent_wnd_class = w->window_class;
-	WP(w2, dropdown_d).parent_wnd_num = w->window_number;
-	WP(w2, dropdown_d).parent_button = button;
-
-	WP(w2, dropdown_d).num_items = i;
-	WP(w2, dropdown_d).selected_index = selected;
-	WP(w2, dropdown_d).items = strings;
-
-	WP(w2, dropdown_d).click_delay = 0;
-	WP(w2, dropdown_d).drag_mode = true;
-}
-
-
 static void ResizeWidgets(Window *w, byte a, byte b)
 {
 	int16 offset = w->widget[a].left;
@@ -783,3 +582,34 @@
 		}
 	}
 }
+
+void ResizeWindowForWidget(Window *w, int widget, int delta_x, int delta_y)
+{
+	int right  = w->widget[widget].right;
+	int bottom = w->widget[widget].bottom;
+
+	for (uint i = 0; i < w->widget_count; i++) {
+		if (w->widget[i].left >= right) w->widget[i].left += delta_x;
+		if (w->widget[i].right >= right) w->widget[i].right += delta_x;
+		if (w->widget[i].top >= bottom) w->widget[i].top += delta_y;
+		if (w->widget[i].bottom >= bottom) w->widget[i].bottom += delta_y;
+	}
+
+	w->width  += delta_x;
+	w->height += delta_y;
+	w->resize.width  += delta_x;
+	w->resize.height += delta_y;
+}
+
+/** Draw a sort button's up or down arrow symbol.
+ * @param w Window of widget
+ * @param widget Sort button widget
+ * @param state State of sort button
+ */
+void DrawSortButtonState(const Window *w, int widget, SortButtonState state)
+{
+	if (state == SBS_OFF) return;
+
+	int offset = w->IsWidgetLowered(widget) ? 1 : 0;
+	DoDrawString(state == SBS_DOWN ? DOWNARROW : UPARROW, w->widget[widget].right - 11 + offset, w->widget[widget].top + 1 + offset, TC_BLACK);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/dropdown.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,329 @@
+/* $Id$ */
+
+#include "../stdafx.h"
+#include "../openttd.h"
+#include "../strings_type.h"
+#include "../window_gui.h"
+#include "../strings_func.h"
+#include "../strings_type.h"
+#include "../gfx_func.h"
+#include "../window_func.h"
+#include "../core/math_func.hpp"
+#include "dropdown_type.h"
+#include "dropdown_func.h"
+
+#include "../table/sprites.h"
+#include "table/strings.h"
+
+StringID DropDownListItem::String() const
+{
+	return STR_NULL;
+}
+
+StringID DropDownListStringItem::String() const
+{
+	return this->string;
+}
+
+StringID DropDownListParamStringItem::String() const
+{
+	for (uint i = 0; i < lengthof(this->decode_params); i++) SetDParam(i, this->decode_params[i]);
+	return this->string;
+}
+
+/**
+ * Delete all items of a drop down list and the list itself
+ * @param list List to delete.
+ */
+static void DeleteDropDownList(DropDownList *list)
+{
+	for (DropDownList::iterator it = list->begin(); it != list->end(); ++it) {
+		DropDownListItem *item = *it;
+		delete item;
+	}
+	delete list;
+}
+
+struct dropdown_d {
+	WindowClass parent_wnd_class;
+	WindowNumber parent_wnd_num;
+	byte parent_button;
+	DropDownList *list;
+	byte selected_index;
+	byte click_delay;
+	bool drag_mode;
+	int scrolling;
+};
+assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(dropdown_d));
+
+static const Widget _dropdown_menu_widgets[] = {
+{      WWT_PANEL,   RESIZE_NONE,     0,     0, 0,     0, 0, 0x0, STR_NULL},
+{  WWT_SCROLLBAR,   RESIZE_NONE,     0,     0, 0,     0, 0, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{   WIDGETS_END},
+};
+
+static int GetDropDownItem(const Window *w)
+{
+	if (GetWidgetFromPos(w, _cursor.pos.x - w->left, _cursor.pos.y - w->top) < 0) return -1;
+
+	int y = _cursor.pos.y - w->top - 2 + w->vscroll.pos * 10;
+	if (y < 0) return -1;
+
+	uint selected_row = y / 10;
+	const DropDownList *list = WP(w, dropdown_d).list;
+
+	if (selected_row >= list->size()) return -1;
+
+	for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it, selected_row--) {
+		if (selected_row == 0) {
+			const DropDownListItem *item = *it;
+			if (item->masked || item->String() == STR_NULL) return -1;
+			return item->result;
+		}
+	}
+
+	return -1;
+}
+
+static void DropDownMenuWndProc(Window *w, WindowEvent *e)
+{
+	switch (e->event) {
+		case WE_PAINT: {
+			DrawWindowWidgets(w);
+
+			int x = 1;
+			int y = 2 - w->vscroll.pos * 10;
+
+			int sel    = WP(w, dropdown_d).selected_index;
+			int width  = w->widget[0].right - 3;
+			int height = w->widget[0].bottom - 3;
+
+			DropDownList *list = WP(w, dropdown_d).list;
+
+			for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) {
+				if (y >= 0 && y <= height) {
+					const DropDownListItem *item = *it;
+					if (item->String() != STR_NULL) {
+						if (sel == item->result) GfxFillRect(x + 1, y, x + width, y + 9, 0);
+
+						DrawStringTruncated(x + 2, y, item->String(), sel == item->result ? TC_WHITE : TC_BLACK, x + width);
+
+						if (item->masked) {
+							GfxFillRect(x, y, x + width, y + 9,
+								(1 << PALETTE_MODIFIER_GREYOUT) | _colour_gradient[w->widget[0].color][5]
+							);
+						}
+					} else {
+						int c1 = _colour_gradient[w->widget[0].color][3];
+						int c2 = _colour_gradient[w->widget[0].color][7];
+
+						GfxFillRect(x + 1, y + 3, x + w->width - 5, y + 3, c1);
+						GfxFillRect(x + 1, y + 4, x + w->width - 5, y + 4, c2);
+					}
+				}
+				y += 10;
+			}
+		} break;
+
+		case WE_CLICK: {
+			if (e->we.click.widget != 0) break;
+			int item = GetDropDownItem(w);
+			if (item >= 0) {
+				WP(w, dropdown_d).click_delay = 4;
+				WP(w, dropdown_d).selected_index = item;
+				SetWindowDirty(w);
+			}
+		} break;
+
+		case WE_TICK:
+			if (WP(w, dropdown_d).scrolling == -1) {
+				w->vscroll.pos = max(0, w->vscroll.pos - 1);
+				SetWindowDirty(w);
+			} else if (WP(w, dropdown_d).scrolling == 1) {
+				w->vscroll.pos = min(w->vscroll.count - w->vscroll.cap, w->vscroll.pos + 1);
+				SetWindowDirty(w);
+			}
+			WP(w, dropdown_d).scrolling = 0;
+			break;
+
+		case WE_MOUSELOOP: {
+			Window *w2 = FindWindowById(WP(w, dropdown_d).parent_wnd_class, WP(w,dropdown_d).parent_wnd_num);
+			if (w2 == NULL) {
+				DeleteWindow(w);
+				return;
+			}
+
+			if (WP(w, dropdown_d).click_delay != 0 && --WP(w,dropdown_d).click_delay == 0) {
+				WindowEvent e;
+				e.event = WE_DROPDOWN_SELECT;
+				e.we.dropdown.button = WP(w, dropdown_d).parent_button;
+				e.we.dropdown.index  = WP(w, dropdown_d).selected_index;
+				w2->wndproc(w2, &e);
+				DeleteWindow(w);
+				return;
+			}
+
+			if (WP(w, dropdown_d).drag_mode) {
+				int item = GetDropDownItem(w);
+
+				if (!_left_button_clicked) {
+					WP(w, dropdown_d).drag_mode = false;
+					if (item < 0) return;
+					WP(w, dropdown_d).click_delay = 2;
+				} else {
+					if (_cursor.pos.y <= w->top + 2) {
+						/* Cursor is above the list, set scroll up */
+						WP(w, dropdown_d).scrolling = -1;
+						return;
+					} else if (_cursor.pos.y >= w->top + w->height - 2) {
+						/* Cursor is below list, set scroll down */
+						WP(w, dropdown_d).scrolling = 1;
+						return;
+					}
+
+					if (item < 0) return;
+				}
+
+				WP(w, dropdown_d).selected_index = item;
+				SetWindowDirty(w);
+			}
+		} break;
+
+		case WE_DESTROY: {
+			Window *w2 = FindWindowById(WP(w, dropdown_d).parent_wnd_class, WP(w,dropdown_d).parent_wnd_num);
+			if (w2 != NULL) {
+				w2->RaiseWidget(WP(w, dropdown_d).parent_button);
+				w2->InvalidateWidget(WP(w, dropdown_d).parent_button);
+			}
+
+			DeleteDropDownList(WP(w, dropdown_d).list);
+		} break;
+	}
+}
+
+void ShowDropDownList(Window *w, DropDownList *list, int selected, int button)
+{
+	bool is_dropdown_menu_shown = w->IsWidgetLowered(button);
+
+	DeleteWindowById(WC_DROPDOWN_MENU, 0);
+
+	if (is_dropdown_menu_shown) {
+		DeleteDropDownList(list);
+		return;
+	}
+
+	w->LowerWidget(button);
+	w->InvalidateWidget(button);
+
+	/* Our parent's button widget is used to determine where to place the drop
+	 * down list window. */
+	const Widget *wi = &w->widget[button];
+
+	/* The preferred position is just below the dropdown calling widget */
+	int top = w->top + wi->bottom + 1;
+	int height = list->size() * 10 + 4;
+
+	/* Check if the status bar is visible, as we don't want to draw over it */
+	Window *w3 = FindWindowById(WC_STATUS_BAR, 0);
+	int screen_bottom = w3 == NULL ? _screen.height : w3->top;
+
+	bool scroll = false;
+
+	/* Check if the dropdown will fully fit below the widget */
+	if (top + height >= screen_bottom) {
+		w3 = FindWindowById(WC_MAIN_TOOLBAR, 0);
+		int screen_top = w3 == NULL ? 0 : w3->top + w3->height;
+
+		/* If not, check if it will fit above the widget */
+		if (w->top + wi->top - height > screen_top) {
+			top = w->top + wi->top - height;
+		} else {
+			/* ... and lastly if it won't, enable the scroll bar and fit the
+			 * list in below the widget */
+			int rows = (screen_bottom - 4 - top) / 10;
+			height = rows * 10 + 4;
+			scroll = true;
+		}
+	}
+
+	Window *dw = AllocateWindow(
+		w->left + wi->left,
+		top,
+		wi->right - wi->left + 1,
+		height,
+		DropDownMenuWndProc,
+		WC_DROPDOWN_MENU,
+		_dropdown_menu_widgets);
+
+	dw->widget[0].color = wi->color;
+	dw->widget[0].right = wi->right - wi->left;
+	dw->widget[0].bottom = height - 1;
+
+	dw->SetWidgetHiddenState(1, !scroll);
+
+	if (scroll) {
+		/* We're scrolling, so enable the scroll bar and shrink the list by
+		 * the scrollbar's width */
+		dw->widget[1].color  = wi->color;
+		dw->widget[1].right  = dw->widget[0].right;
+		dw->widget[1].left   = dw->widget[1].right - 11;
+		dw->widget[1].bottom = height - 1;
+		dw->widget[0].right -= 12;
+
+		dw->vscroll.cap   = (height - 4) / 10;
+		dw->vscroll.count = list->size();
+	}
+
+	dw->desc_flags = WDF_DEF_WIDGET;
+	dw->flags4 &= ~WF_WHITE_BORDER_MASK;
+
+	WP(dw, dropdown_d).parent_wnd_class = w->window_class;
+	WP(dw, dropdown_d).parent_wnd_num   = w->window_number;
+	WP(dw, dropdown_d).parent_button    = button;
+	WP(dw, dropdown_d).list             = list;
+	WP(dw, dropdown_d).selected_index   = selected;
+	WP(dw, dropdown_d).click_delay      = 0;
+	WP(dw, dropdown_d).drag_mode        = true;
+}
+
+void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask)
+{
+	/* Don't create a new list if we're just closing an existing menu */
+	if (w->IsWidgetLowered(button)) {
+		DeleteWindowById(WC_DROPDOWN_MENU, 0);
+		return;
+	}
+
+	uint result = 0;
+	DropDownList *list = new DropDownList();
+
+	for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) {
+		if (!HasBit(hidden_mask, i)) {
+			list->push_back(new DropDownListStringItem(strings[i], result, HasBit(disabled_mask, i)));
+		}
+		result++;
+	}
+
+	/* No entries in the list? */
+	if (list->size() == 0) {
+		DeleteDropDownList(list);
+		return;
+	}
+
+	ShowDropDownList(w, list, selected, button);
+}
+
+void HideDropDownMenu(Window *pw)
+{
+	Window **wz;
+	FOR_ALL_WINDOWS(wz) {
+		if ((*wz)->window_class != WC_DROPDOWN_MENU) continue;
+
+		if (pw->window_class == WP(*wz, dropdown_d).parent_wnd_class &&
+				pw->window_number == WP(*wz, dropdown_d).parent_wnd_num) {
+			DeleteWindow(*wz);
+			break;
+		}
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/dropdown_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,12 @@
+/* $Id$ */
+
+#ifndef WIDGETS_DROPDOWN_FUNC_H
+#define WIDGETS_DROPDOWN_FUNC_H
+
+/* Show drop down menu containing a fixed list of strings */
+void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask);
+
+/* Hide drop down menu of a parent window */
+void HideDropDownMenu(Window *pw);
+
+#endif /* WIDGETS_DROPDOWN_FUNC_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/dropdown_type.h	Sun Feb 03 20:17:54 2008 +0000
@@ -0,0 +1,66 @@
+/* $Id$ */
+
+#ifndef WIDGETS_DROPDOWN_TYPE_H
+#define WIDGETS_DROPDOWN_TYPE_H
+
+#include "../window_type.h"
+#include <list>
+
+/**
+ * Base list item class from which others are derived. If placed in a list it
+ * will appear as a horizontal line in the menu.
+ */
+class DropDownListItem {
+public:
+	int result;  ///< Result code to return to window on selection
+	bool masked; ///< Masked and unselectable item
+
+	DropDownListItem(int result, bool masked) : result(result), masked(masked) {}
+	virtual ~DropDownListItem() {}
+	virtual StringID String() const;
+};
+
+/**
+ * Common string list item.
+ */
+class DropDownListStringItem : public DropDownListItem {
+public:
+	StringID string; ///< String ID of item
+
+	DropDownListStringItem(StringID string, int result, bool masked) : DropDownListItem(result, masked), string(string) {}
+	virtual ~DropDownListStringItem() {}
+
+	StringID String() const;
+};
+
+/**
+ * String list item with parameters.
+ */
+class DropDownListParamStringItem : public DropDownListStringItem {
+public:
+	uint64 decode_params[10]; ///< Parameters of the string
+
+	DropDownListParamStringItem(StringID string, int result, bool masked) : DropDownListStringItem(string, result, masked) {}
+	virtual ~DropDownListParamStringItem() {}
+
+	StringID String() const;
+	void SetParam(uint index, uint64 value) { decode_params[index] = value; }
+};
+
+/**
+ * A drop down list is a collection of drop down list items.
+ */
+typedef std::list<DropDownListItem *> DropDownList;
+
+/**
+ * Show a drop down list.
+ * @param w        Parent window for the list.
+ * @param list     Prepopulated DropDownList. Will be deleted when the list is
+ *                 closed.
+ * @param selected The initially selected list item.
+ * @param button   The widget within the parent window that is used to determine
+ *                 the list's location.
+ */
+void ShowDropDownList(Window *w, DropDownList *list, int selected, int button);
+
+#endif /* WIDGETS_DROPDOWN_TYPE_H */
--- a/src/window.cpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/window.cpp	Sun Feb 03 20:17:54 2008 +0000
@@ -6,12 +6,11 @@
 #include <stdarg.h>
 #include "openttd.h"
 #include "debug.h"
-#include "player.h"
+#include "player_func.h"
 #include "gfx_func.h"
 #include "console.h"
 #include "viewport_func.h"
 #include "variables.h"
-#include "table/sprites.h"
 #include "genworld.h"
 #include "blitter/factory.hpp"
 #include "window_gui.h"
@@ -19,6 +18,9 @@
 #include "core/alloc_func.hpp"
 #include "map_func.h"
 #include "vehicle_base.h"
+#include "settings_type.h"
+
+#include "table/sprites.h"
 
 /* delta between mouse cursor and upper left corner of dragged window */
 static Point _drag_delta;
@@ -27,6 +29,19 @@
 Window *_z_windows[lengthof(_windows)];
 Window **_last_z_window; ///< always points to the next free space in the z-array
 
+Point _cursorpos_drag_start;
+
+int _scrollbar_start_pos;
+int _scrollbar_size;
+byte _scroller_click_timeout;
+
+bool _scrolling_scrollbar;
+bool _scrolling_viewport;
+bool _popup_menu_active;
+
+byte _special_mouse_mode;
+
+
 void CDECL Window::SetWidgetsDisabledState(bool disab_stat, int widgets, ...)
 {
 	va_list wdg_list;
--- a/src/window_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/window_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,11 +1,12 @@
 /* $Id$ */
 
-/** @file window.h Window functions not directly related to making/drawing windows. */
+/** @file window_func.h Window functions not directly related to making/drawing windows. */
 
 #ifndef WINDOW_FUNC_H
 #define WINDOW_FUNC_H
 
 #include "window_type.h"
+#include "player_type.h"
 
 /**
  * Marks the window as dirty for repaint.
@@ -18,7 +19,6 @@
 
 Window *FindWindowById(WindowClass cls, WindowNumber number);
 void DeleteWindow(Window *w);
-void DeletePlayerWindows(PlayerID pi);
 void ChangeWindowOwner(PlayerID old_player, PlayerID new_player);
 
 void ResizeWindow(Window *w, int x, int y);
--- a/src/window_gui.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/window_gui.h	Sun Feb 03 20:17:54 2008 +0000
@@ -8,6 +8,8 @@
 #include "core/bitmath_func.hpp"
 #include "vehicle_type.h"
 #include "viewport_type.h"
+#include "player_type.h"
+#include "strings_type.h"
 
 /**
  * The maximum number of windows that can be opened.
@@ -367,13 +369,6 @@
 };
 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(smallmap_d));
 
-/* player face selection window */
-struct facesel_d {
-	PlayerFace face; // player face bits
-	bool advanced;   // advance player face selection window
-};
-assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(facesel_d));
-
 struct refit_d {
 	int sel;
 	struct RefitOption *cargo;
@@ -444,20 +439,6 @@
 };
 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(message_d));
 
-struct dropdown_d {
-	uint32 disabled_state;
-	uint32 hidden_state;
-	WindowClass parent_wnd_class;
-	WindowNumber parent_wnd_num;
-	byte parent_button;
-	byte num_items;
-	byte selected_index;
-	const StringID *items;
-	byte click_delay;
-	bool drag_mode;
-};
-assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(dropdown_d));
-
 struct vehiclelist_d {
 	const Vehicle** sort_list;  // List of vehicles (sorted)
 	Listing *_sorting;          // pointer to the appropiate subcategory of _sorting
@@ -511,6 +492,8 @@
 	WWT_SCROLL2BAR, ///< 2nd vertical scrollbar
 	WWT_RESIZEBOX,
 	WWT_CLOSEBOX,
+	WWT_DROPDOWN,   ///< Raised drop down list (regular)
+	WWT_DROPDOWNIN, ///< Inset drop down list (used on game options only)
 	WWT_LAST,       ///< Last Item. use WIDGETS_END to fill up padding!!
 
 	WWT_MASK = 0x1F,
@@ -597,7 +580,14 @@
 /* widget.cpp */
 int GetWidgetFromPos(const Window *w, int x, int y);
 void DrawWindowWidgets(const Window *w);
-void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask);
+
+enum SortButtonState {
+	SBS_OFF,
+	SBS_DOWN,
+	SBS_UP,
+};
+
+void DrawSortButtonState(const Window *w, int widget, SortButtonState state);
 
 
 Window *GetCallbackWnd();
@@ -612,17 +602,17 @@
 extern Window **_last_z_window;
 #define FOR_ALL_WINDOWS(wz) for (wz = _z_windows; wz != _last_z_window; wz++)
 
-VARDEF Point _cursorpos_drag_start;
+extern Point _cursorpos_drag_start;
 
-VARDEF int _scrollbar_start_pos;
-VARDEF int _scrollbar_size;
-VARDEF byte _scroller_click_timeout;
+extern int _scrollbar_start_pos;
+extern int _scrollbar_size;
+extern byte _scroller_click_timeout;
 
-VARDEF bool _scrolling_scrollbar;
-VARDEF bool _scrolling_viewport;
-VARDEF bool _popup_menu_active;
+extern bool _scrolling_scrollbar;
+extern bool _scrolling_viewport;
+extern bool _popup_menu_active;
 
-VARDEF byte _special_mouse_mode;
+extern byte _special_mouse_mode;
 enum SpecialMouseMode {
 	WSM_NONE     = 0,
 	WSM_DRAGDROP = 1,
@@ -640,6 +630,10 @@
  */
 void ResizeButtons(Window *w, byte left, byte right);
 
+/** Resize a widget an shuffle other widgets around to fit.
+ */
+void ResizeWindowForWidget(Window *w, int widget, int delta_x, int delta_y);
+
 
 /**
  * Sets the enabled/disabled status of a widget.
--- a/src/yapf/follow_track.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/yapf/follow_track.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -37,9 +37,26 @@
 	FORCEINLINE static TransportType TT() {return Ttr_type_;}
 	FORCEINLINE static bool IsWaterTT() {return TT() == TRANSPORT_WATER;}
 	FORCEINLINE static bool IsRailTT() {return TT() == TRANSPORT_RAIL;}
+	FORCEINLINE bool IsTram() {return IsRoadTT() && HasBit(m_veh->u.road.compatible_roadtypes, ROADTYPE_TRAM);}
 	FORCEINLINE static bool IsRoadTT() {return TT() == TRANSPORT_ROAD;}
 	FORCEINLINE static bool Allow90degTurns() {return T90deg_turns_allowed_;}
 
+	/** Tests if a tile is a road tile with a single tramtrack (tram can reverse) */
+	FORCEINLINE DiagDirection GetSingleTramBit(TileIndex tile)
+	{
+		if (IsTram() && IsTileType(tile, MP_ROAD) && GetRoadTileType(tile) == ROAD_TILE_NORMAL) {
+			RoadBits rb = GetRoadBits(tile, ROADTYPE_TRAM);
+			switch (rb) {
+				case ROAD_NW: return DIAGDIR_NW;
+				case ROAD_SW: return DIAGDIR_SW;
+				case ROAD_SE: return DIAGDIR_SE;
+				case ROAD_NE: return DIAGDIR_NE;
+				default: break;
+			}
+		}
+		return INVALID_DIAGDIR;
+	}
+
 	/** main follower routine. Fills all members and return true on success.
 	 *  Otherwise returns false if track can't be followed. */
 	FORCEINLINE bool Follow(TileIndex old_tile, Trackdir old_td)
@@ -47,9 +64,10 @@
 		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);
+		assert(((GetTileTrackStatus(m_old_tile, TT(), m_veh->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(m_old_td)) != 0) ||
+		       (GetSingleTramBit(m_old_tile) != INVALID_DIAGDIR)); // Disable the assertion for single tram bits
 		m_exitdir = TrackdirToExitdir(m_old_td);
-		if (EnteredDepot()) return true;
+		if (ForcedReverse()) return true;
 		if (!CanExitOldTile()) return false;
 		FollowTileExit();
 		if (!QueryNewTileTrackStatus()) return TryReverse();
@@ -76,32 +94,22 @@
 		m_is_station = m_is_bridge = m_is_tunnel = false;
 		m_tiles_skipped = 0;
 
-		// extra handling for tunnels in our direction
-		if (IsTunnelTile(m_old_tile)) {
-			DiagDirection tunnel_enterdir = GetTunnelBridgeDirection(m_old_tile);
-			if (tunnel_enterdir == m_exitdir) {
-				// we are entering the tunnel
-				FindLengthOfTunnelResult flotr = FindLengthOfTunnel(m_old_tile, m_exitdir);
-				m_new_tile = flotr.tile;
-				m_is_tunnel = true;
-				m_tiles_skipped = flotr.length - 1;
+		// extra handling for tunnels and bridges in our direction
+		if (IsTileType(m_old_tile, MP_TUNNELBRIDGE)) {
+			DiagDirection enterdir = GetTunnelBridgeDirection(m_old_tile);
+			if (enterdir == m_exitdir) {
+				// we are entering the tunnel / bridge
+				if (IsTunnel(m_old_tile)) {
+					m_is_tunnel = true;
+					m_new_tile = GetOtherTunnelEnd(m_old_tile);
+				} else { // IsBridge(m_old_tile)
+					m_is_bridge = true;
+					m_new_tile = GetOtherBridgeEnd(m_old_tile);
+				}
+				m_tiles_skipped = GetTunnelBridgeLength(m_new_tile, m_old_tile);
 				return;
 			}
-			assert(ReverseDiagDir(tunnel_enterdir) == m_exitdir);
-		}
-
-		// extra handling for bridge ramp in our direction
-		if (IsBridgeTile(m_old_tile)) {
-			DiagDirection bridge_enterdir = GetTunnelBridgeDirection(m_old_tile);
-			if (bridge_enterdir == m_exitdir) {
-				// we are entering the bridge ramp
-				m_new_tile = GetOtherBridgeEnd(m_old_tile);
-				uint32 bridge_length = GetBridgeLength(m_old_tile, m_new_tile);
-				m_tiles_skipped = bridge_length;
-				m_is_bridge = true;
-				return;
-			}
-			assert(ReverseDiagDir(bridge_enterdir) == m_exitdir);
+			assert(ReverseDiagDir(enterdir) == m_exitdir);
 		}
 
 		// normal or station tile, do one step
@@ -127,6 +135,24 @@
 		} else {
 			uint32 ts = GetTileTrackStatus(m_new_tile, TT(), m_veh->u.road.compatible_roadtypes);
 			m_new_td_bits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
+
+			if (m_new_td_bits == 0) {
+				/* GetTileTrackStatus() returns 0 for single tram bits.
+				 * As we cannot change it there (easily) without breaking something, change it here */
+				switch (GetSingleTramBit(m_new_tile)) {
+					case DIAGDIR_NE:
+					case DIAGDIR_SW:
+						m_new_td_bits = TRACKDIR_BIT_X_NE | TRACKDIR_BIT_X_SW;
+						break;
+
+					case DIAGDIR_NW:
+					case DIAGDIR_SE:
+						m_new_td_bits = TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_Y_SE;
+						break;
+
+					default: break;
+				}
+			}
 		}
 		return (m_new_td_bits != TRACKDIR_BIT_NONE);
 	}
@@ -143,6 +169,13 @@
 			}
 		}
 
+		/* single tram bits can only be left in one direction */
+		DiagDirection single_tram = GetSingleTramBit(m_old_tile);
+		if (single_tram != INVALID_DIAGDIR && single_tram != 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);
@@ -166,6 +199,13 @@
 			}
 		}
 
+		/* single tram bits can only be entered from one direction */
+		DiagDirection single_tram = GetSingleTramBit(m_new_tile);
+		if (single_tram != INVALID_DIAGDIR && single_tram != ReverseDiagDir(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);
@@ -214,7 +254,7 @@
 						return false;
 					}
 				}
-			} else if (IsBridge(m_new_tile)) {
+			} else { // IsBridge(m_new_tile)
 				if (!m_is_bridge) {
 					DiagDirection ramp_enderdir = GetTunnelBridgeDirection(m_new_tile);
 					if (ramp_enderdir != m_exitdir) {
@@ -242,8 +282,8 @@
 		return true;
 	}
 
-	/** return true if we entered depot and reversed inside */
-	FORCEINLINE bool EnteredDepot()
+	/** return true if we must reverse (in depots and single tram bits) */
+	FORCEINLINE bool ForcedReverse()
 	{
 		// rail and road depots cause reversing
 		if (!IsWaterTT() && IsTileDepotType(m_old_tile, TT())) {
@@ -258,13 +298,25 @@
 				return true;
 			}
 		}
+
+		// single tram bits cause reversing
+		if (GetSingleTramBit(m_old_tile) == ReverseDiagDir(m_exitdir)) {
+			// reverse
+			m_new_tile = m_old_tile;
+			m_new_td_bits = TrackdirToTrackdirBits(ReverseTrackdir(m_old_td));
+			m_exitdir = ReverseDiagDir(m_exitdir);
+			m_tiles_skipped = 0;
+			m_is_tunnel = m_is_bridge = m_is_station = false;
+			return true;
+		}
+
 		return false;
 	}
 
 	/** return true if we successfully reversed at end of road/track */
 	FORCEINLINE bool TryReverse()
 	{
-		if (IsRoadTT()) {
+		if (IsRoadTT() && !IsTram()) {
 			// if we reached the end of road, we can reverse the RV and continue moving
 			m_exitdir = ReverseDiagDir(m_exitdir);
 			// new tile will be the same as old one
--- a/src/yapf/yapf.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/yapf/yapf.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -23,6 +23,7 @@
 #include "../waypoint.h"
 #include "../debug.h"
 #include "../settings_type.h"
+#include "../tunnelbridge.h"
 
 extern uint64 _rdtsc();
 
--- a/src/yapf/yapf_costbase.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/yapf/yapf_costbase.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -13,11 +13,9 @@
 				// it is bridge ramp, check if we are entering the bridge
 				if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(td)) return false; // no, we are living it, no penalty
 				// we are entering the bridge
-				// if the tile slope is downwards, then bridge ramp has not upward slope
-				uint tile_slope = GetTileSlope(tile, NULL) & 0x0F;
-				if ((c_upwards_slopes[tile_slope] & TrackdirToTrackdirBits(ReverseTrackdir(td))) != 0) return false; // tile under ramp goes down, no penalty
-				// tile under ramp isn't going down, so ramp must go up
-				return true;
+				Slope tile_slope = GetTileSlope(tile, NULL);
+				Axis axis = DiagDirToAxis(GetTunnelBridgeDirection(tile));
+				return !HasBridgeFlatRamp(tile_slope, axis);
 			} else {
 				// not bridge ramp
 				if (IsTunnelTile(tile)) return false; // tunnel entry/exit doesn't slope
--- a/src/yapf/yapf_destrail.hpp	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/yapf/yapf_destrail.hpp	Sun Feb 03 20:17:54 2008 +0000
@@ -8,7 +8,7 @@
 class CYapfDestinationRailBase
 {
 protected:
-	RailTypeMask m_compatible_railtypes;
+	RailTypes m_compatible_railtypes;
 
 public:
 	void SetDestination(Vehicle* v)
--- a/src/zoom_func.h	Wed Jan 09 18:11:12 2008 +0000
+++ b/src/zoom_func.h	Sun Feb 03 20:17:54 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file zoom.hpp */
+/** @file zoom_func.hpp */
 
 #ifndef ZOOM_FUNC_H
 #define ZOOM_FUNC_H