(svn r10136) [gamebalance] -Sync: r9900:10100 from trunk gamebalance
authorcelestar
Wed, 13 Jun 2007 12:05:56 +0000
branchgamebalance
changeset 9912 1ac8aac92385
parent 9911 0b8b245a2391
child 9913 e79cd19772dd
(svn r10136) [gamebalance] -Sync: r9900:10100 from trunk
Makefile.in
Makefile.src.in
bin/data/flags.grf
bin/data/oneway.grf
bin/data/openttd.grf
bin/data/tramtrkw.grf
changelog.txt
config.lib
configure
docs/landscape.html
docs/landscape_grid.html
docs/openttd.6
known-bugs.txt
os/debian/changelog
os/win32/installer/install.nsi
os/win32/installer/notice.ini
projects/openttd.vcproj
projects/openttd_vs80.vcproj
readme.txt
source.list
src/ai/default/default.cpp
src/ai/trolly/build.cpp
src/ai/trolly/pathfinder.cpp
src/ai/trolly/trolly.cpp
src/aircraft.h
src/airport_gui.cpp
src/articulated_vehicles.cpp
src/articulated_vehicles.h
src/autoreplace_cmd.cpp
src/autoreplace_gui.cpp
src/blitter/8bpp_debug.cpp
src/blitter/8bpp_debug.hpp
src/blitter/8bpp_optimized.cpp
src/blitter/8bpp_optimized.hpp
src/blitter/8bpp_slow.cpp
src/blitter/8bpp_slow.hpp
src/blitter/blitter.hpp
src/build_vehicle_gui.cpp
src/callback_table.cpp
src/clear_cmd.cpp
src/command.cpp
src/command.h
src/debug.h
src/depot_gui.cpp
src/disaster_cmd.cpp
src/dock_gui.cpp
src/dummy_land.cpp
src/economy.cpp
src/elrail.cpp
src/engine.cpp
src/engine.h
src/fileio.cpp
src/fios.cpp
src/fontcache.cpp
src/functions.h
src/genworld.cpp
src/gfx.cpp
src/gfx.h
src/gfxinit.cpp
src/group_cmd.cpp
src/gui.h
src/industry.h
src/industry_cmd.cpp
src/industry_gui.cpp
src/industry_map.h
src/landscape.cpp
src/landscape.h
src/lang/american.txt
src/lang/brazilian_portuguese.txt
src/lang/bulgarian.txt
src/lang/catalan.txt
src/lang/czech.txt
src/lang/danish.txt
src/lang/dutch.txt
src/lang/english.txt
src/lang/esperanto.txt
src/lang/estonian.txt
src/lang/finnish.txt
src/lang/french.txt
src/lang/galician.txt
src/lang/german.txt
src/lang/hungarian.txt
src/lang/icelandic.txt
src/lang/italian.txt
src/lang/japanese.txt
src/lang/korean.txt
src/lang/lithuanian.txt
src/lang/norwegian_bokmal.txt
src/lang/norwegian_nynorsk.txt
src/lang/polish.txt
src/lang/portuguese.txt
src/lang/romanian.txt
src/lang/russian.txt
src/lang/simplified_chinese.txt
src/lang/slovak.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/swedish.txt
src/lang/traditional_chinese.txt
src/lang/turkish.txt
src/lang/ukrainian.txt
src/lang/unfinished/afrikaans.txt
src/lang/unfinished/croatian.txt
src/livery.h
src/main_gui.cpp
src/misc_gui.cpp
src/network/core/config.h
src/network/network.h
src/network/network_data.cpp
src/network/network_gui.cpp
src/network/network_server.cpp
src/newgrf.cpp
src/newgrf.h
src/newgrf_commons.cpp
src/newgrf_commons.h
src/newgrf_config.cpp
src/newgrf_engine.cpp
src/newgrf_gui.cpp
src/newgrf_house.cpp
src/newgrf_house.h
src/newgrf_industries.cpp
src/newgrf_industries.h
src/newgrf_spritegroup.h
src/newgrf_station.cpp
src/npf.cpp
src/npf.h
src/oldloader.cpp
src/openttd.cpp
src/openttd.h
src/order_cmd.cpp
src/order_gui.cpp
src/pathfind.cpp
src/pathfind.h
src/player.h
src/player_gui.cpp
src/players.cpp
src/rail.cpp
src/rail_cmd.cpp
src/rail_gui.cpp
src/rail_map.h
src/road.h
src/road_cmd.cpp
src/road_gui.cpp
src/road_map.cpp
src/road_map.h
src/roadveh.h
src/roadveh_cmd.cpp
src/roadveh_gui.cpp
src/saveload.cpp
src/saveload.h
src/settings.cpp
src/settings_gui.cpp
src/ship.h
src/ship_cmd.cpp
src/signs.cpp
src/smallmap_gui.cpp
src/sound.cpp
src/spritecache.cpp
src/spritecache.h
src/spriteloader/grf.cpp
src/spriteloader/grf.hpp
src/spriteloader/spriteloader.hpp
src/station.cpp
src/station.h
src/station_cmd.cpp
src/stdafx.h
src/strings.cpp
src/strings.h
src/table/ai_rail.h
src/table/build_industry.h
src/table/files.h
src/table/industry_land.h
src/table/road_land.h
src/table/roadveh.h
src/table/sprites.h
src/terraform_gui.cpp
src/texteff.cpp
src/town_cmd.cpp
src/train.h
src/train_cmd.cpp
src/tree_cmd.cpp
src/tunnelbridge_cmd.cpp
src/unix.cpp
src/unmovable_cmd.cpp
src/variables.h
src/vehicle.cpp
src/vehicle.h
src/vehicle_gui.h
src/viewport.cpp
src/water_cmd.cpp
src/win32.cpp
src/window.h
src/yapf/follow_track.hpp
src/yapf/yapf_costrail.hpp
src/yapf/yapf_destrail.hpp
src/yapf/yapf_road.cpp
src/yapf/yapf_ship.cpp
src/zoom.hpp
--- a/Makefile.in	Wed Jun 13 11:45:14 2007 +0000
+++ b/Makefile.in	Wed Jun 13 12:05:56 2007 +0000
@@ -31,10 +31,14 @@
 OSXAPP = !!OSXAPP!!
 REVISION = !!REVISION!!
 AWK = !!AWK!!
+DISTCC = !!DISTCC!!
 
 RES := $(shell if ! [ -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST)`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
 
 all: config.cache
+ifdef DISTCC
+	@if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi
+endif
 	@for dir in $(DIRS); do \
 		$(MAKE) -C $$dir all; \
 	done
@@ -99,6 +103,9 @@
 run-gdb: all
 	$(Q)cd !!BIN_DIR!! && gdb --ex run --args ./!!TTD!! $(OPENTTD_ARGS)
 
+run-prof: all
+	$(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS) && gprof !!TTD!! | less
+
 %.o:
 	@for dir in $(SRC_DIRS); do \
 		$(MAKE) -C $$dir $(@:src/%=%); \
--- a/Makefile.src.in	Wed Jun 13 11:45:14 2007 +0000
+++ b/Makefile.src.in	Wed Jun 13 12:05:56 2007 +0000
@@ -96,8 +96,15 @@
 REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
 # Find the revision like: rXXXX-branch
 REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branch/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
+else
+# Are we a git dir?
+ifeq ($(shell if test -d $(SRC_DIR)/../.git; then echo 1; fi), 1)
+# Find the revision like: rXXXXM
+REV := g$(shell if head=`git rev-parse --verify HEAD 2>/dev/null`; then echo "$$head" | cut -c1-8; fi)$(shell if git diff-index HEAD | read dummy; then echo M; fi)$(shell git branch|grep '[*]'|sed 's/\* /-/;s/^-master$$//')
 endif
 endif
+endif
+
 # Make sure we have something in REV
 ifeq ($(REV),)
 REV := norev000
Binary file bin/data/flags.grf has changed
Binary file bin/data/oneway.grf has changed
Binary file bin/data/openttd.grf has changed
Binary file bin/data/tramtrkw.grf has changed
--- a/changelog.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/changelog.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -1,7 +1,38 @@
+0.5.2 (2007-05-29)
+------------------------------------------------------------------------
+- Feature: Add threading support for MorphOS (r9759)
+- Fix: Bridges and tunnels were not always removed on bankruptcy, thus leaving tunnels/bridges with an invalid owner that would crash the game when clicking with the query tool on them (r9966)
+- Fix: Null pointer dereference under MorphOS and AmigaOS (r9861)
+
+
+0.5.2-RC1 (2007-05-16)
+------------------------------------------------------------------------
+- Feature: Windows 95/98/ME check in Windows 2000/XP/2003/Vista builds (r9834)
+- Feature: Add password protected status to 'players' (network server) console command (r9771)
+- Feature: Add server_lang in [network] section of openttd.cfg (r9716)
+- Fix: Loading some TTDP savegames caused an instant assertion on loading (r9857)
+- Fix: [NewGRF] Catch occurance of division-by-zero in varaction handling (r9837)
+- Fix: Only non dedicated servers cannot have 0 players [FS#765] (r9785)
+- Fix: Remove arbitrary limit on length of NewGRF strings (r9775)
+- Fix: [NewGRF] Ignore axis-bit of station tile layouts [FS#756] (r9758)
+- Fix: [win32] Dead key and open/close console. (r9728)
+- Fix: When you have closed the "Load game"/"New game" windows which you started from the "start server" menu, you shouldn't start a server when starting a new game [SF#1244842] (r9757)
+- Fix: Trains were lost after autorenewal/autoreplace [FS#732] (r9753)
+- Fix: Stop flooded towns from building roads on water [FS#598] (r9743)
+- Fix: Station signs were not resized when the language changed [FS#672] (r9741)
+- Fix: In news history, newlines were not replaced with spaces [FS#677] (r9731)
+- Fix: Crash when destroying bridge with train partially on it [FS#738] (r9726)
+- Fix: Planes made a 270 degree turn instead of a 90 degree turn on the southern runway of the intercontinental airport [FS#743] (r9725)
+- Fix: In-game private messages did not work for clients with high ClientIDs (r9719)
+- Fix: Do not allow building of rail vehicles whose railtype is not available (r9718)
+- Fix: [YAPF] The guessed path was ignored for ships [FS#736] (r9694)
+
+
 0.5.1 (2007-04-20)
 ------------------------------------------------------------------------
 (None)
 
+
 0.5.1-RC3 (2007-04-17)
 ------------------------------------------------------------------------
 - Feature: Add list_patches to console commands; shows all patches and values (r9565)
--- a/config.lib	Wed Jun 13 11:45:14 2007 +0000
+++ b/config.lib	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 }
 
 set_default() {
+	released_version=""
+
 	ignore_extra_parameters="0"
 	# We set all kinds of defaults for params. Later on the user can override
 	# most of them; but if they don't, this default is used.
@@ -42,6 +44,7 @@
 	enable_universal="1"
 	enable_osx_g5="0"
 	enable_unicode="1"
+	with_distcc="1"
 	with_osx_sysroot="1"
 	with_application_bundle="1"
 	with_sdl="1"
@@ -59,7 +62,7 @@
 	with_fontconfig="1"
 	with_psp_config="1"
 
-	save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_osx_sysroot enable_universal enable_osx_g5 enable_unicode 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 CC CXX CFLAGS LDFLAGS"
+	save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_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 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 CC CXX CFLAGS LDFLAGS"
 }
 
 detect_params() {
@@ -233,6 +236,10 @@
 			--with-midi=*)                with_midi="$optarg";;
 			--with-midi-arg=*)            with_midi_arg="$optarg";;
 
+			--without-distcc)             with_distcc="0";;
+			--with-distcc)                with_distcc="2";;
+			--with-distcc=*)              with_distcc="$optarg";;
+
 			--without-osx-sysroot)        with_osx_sysroot="0";;
 			--with-osx-sysroot)           with_osx_sysroot="2";;
 			--with-osx-sysroot=*)         with_osx_sysroot="$optarg";;
@@ -303,10 +310,10 @@
 		echo " Available options are: --endian=[AUTO|LE|BE]"
 		exit 1
 	fi
-	# OS only allows DETECT, UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
-	if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2|WINCE|PSP)$'`" ]; then
+	# OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
+	if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2|WINCE|PSP)$'`" ]; then
 		echo "configure: error: invalid option --os=$os"
-		echo " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2|WINCE|PSP]"
+		echo " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2|WINCE|PSP]"
 		exit 1
 	fi
 	# enable_debug should be between 0 and 4
@@ -510,6 +517,35 @@
 		log 1 "checking stripping... skipped"
 	fi
 
+	if [ "$with_distcc" = "0" ]; then
+		log 1 "checking distcc... no"
+	elif [ "$with_distcc" = "1" ]; then
+		with_distcc="0"
+
+		log 1 "checking distcc... no (only used when forced)"
+	elif [ "$with_distcc" = "2" ]; then
+		distcc="distcc"
+	else
+		distcc="$with_distcc"
+	fi
+	if [ "$with_distcc" != "0" ]; then
+		res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 0-6`"
+		if [ "$res" != "distcc" ]; then
+			distcc=""
+			log 1 "checking distcc... no"
+			if [ "$with_distcc" = "2" ]; then
+				log 1 "configure: error: no distcc detected, but was forced to be used"
+				exit 1
+			fi
+			if [ "$with_distcc" != "1" ]; then
+				log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
+				exit 1
+			fi
+		fi
+
+		log 1 "checking distcc... $distcc"
+	fi
+
 	if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
 		if [ "$with_osx_sysroot" = "1" ]; then
 			with_osx_sysroot="0"
@@ -609,6 +645,47 @@
 			exit 1
 		fi
 	fi
+
+	if [ -n "$released_version" ]; then
+		log 1 "checking revision... release ($released_version)"
+		if [ -n "$revision" ] && [ "$revision" != "$released_version" ]; then
+			log 1 "WARNING: overriding of the revision is NOT possible for releases"
+			log 1 "WARNING: the given revision is IGNORED"
+
+			sleep 5
+		fi
+		revision=$released_version
+	else
+		if [ -n "$revision" ]; then
+			log 1 "checking revision... $revision"
+			log 1 "WARNING: we do not advise you to use this setting"
+			log 1 "WARNING: in most cases it is not safe for network use"
+			log 1 "WARNING: USE WITH CAUTION!"
+
+			sleep 5
+		elif [ -f "$ROOT_DIR/version" ]; then
+			revision="`cat $ROOT_DIR/version`"
+
+			log 1 "checking revision... $revision"
+		elif [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help`" ]; then
+			revision=""
+			log 1 "checking revision... svn detection"
+		elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help`" ]; then
+			revision=""
+			log 1 "checking revision... git detection"
+		else
+			revision=""
+			log 1 "checking revision... no detection"
+			log 1 "WARNING: there is no means to determine the version."
+			log 1 "WARNING: please use a subversion or git checkout of OpenTTD."
+			log 1 "WARNING: this version will be allowed by all game servers,"
+			log 1 "WARNING: but you will be kicked from all incompatible"
+			log 1 "WARNING: servers as you will desync."
+			log 1 "WARNING: USE WITH CAUTION!"
+
+			sleep 5
+		fi
+	fi
 }
 
 make_cflags_and_ldflags() {
@@ -709,7 +786,7 @@
 		fi
 	fi
 
-	if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ]; then
+	if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ]; then
 		LIBS="$LIBS -lpthread"
 		LIBS="$LIBS -lrt"
 	fi
@@ -733,6 +810,10 @@
 		CFLAGS="$CFLAGS -Wno-strict-prototypes"
 	fi
 
+	if [ "$os" = "OPENBSD" ]; then
+		LIBS="$LIBS -pthread"
+	fi
+
 	if [ "$os" = "OSX" ]; then
 		LDFLAGS="$LDFLAGS -framework Cocoa"
 		if [ "$enable_dedicated" = "0" ]; then
@@ -745,7 +826,7 @@
 	fi
 
 	# Most targets act like UNIX, just with some additions
-	if [ "$os" = "BEOS" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
+	if [ "$os" = "BEOS" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
 		CFLAGS="$CFLAGS -DUNIX"
 	fi
 	# And others like Windows
@@ -927,23 +1008,6 @@
 		fi
 	fi
 
-	if [ -n "$revision" ]; then
-		log 1 "checking revision... $revision"
-		log 1 "WARNING: we do not advise you to use this setting"
-		log 1 "WARNING: in most cases it is not safe for network use"
-		log 1 "WARNING: USE WITH CAUTION!"
-
-		sleep 5
-	elif [ -f "$ROOT_DIR/version" ]; then
-		revision="`cat $ROOT_DIR/version`"
-
-		log 1 "checking revision... $revision"
-	else
-		revision=""
-
-		log 1 "checking revision... svn detection"
-	fi
-
 	log 1 "using CFLAGS... $CFLAGS $CC_CFLAGS"
 	log 1 "using LDFLAGS... $LIBS $LDFLAGS"
 
@@ -958,6 +1022,14 @@
 	else
 		makedepend=""
 	fi
+
+	if [ "$with_distcc" != "0" ]; then
+		cc_host="$distcc $cc_host"
+		cxx_host="$distcc $cxx_host"
+		log 1 ""
+		log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
+		log 1 ""
+	fi
 }
 
 check_compiler() {
@@ -1239,13 +1311,14 @@
 
 detect_os() {
 	if [ "$os" = "DETECT" ]; then
-		# Detect UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
+		# Detect UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
 
 		# Try first via dumpmachine, then via uname
 		os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
 					/linux/        { print "UNIX";    exit}
 					/darwin/       { print "OSX";     exit}
 					/freebsd/      { print "FREEBSD"; exit}
+					/openbsd/      { print "OPENBSD"; exit}
 					/morphos/      { print "MORPHOS"; exit}
 					/beos/         { print "BEOS";    exit}
 					/sunos/        { print "SUNOS";   exit}
@@ -1262,6 +1335,7 @@
 					/linux/        { print "UNIX";    exit}
 					/darwin/       { print "OSX";     exit}
 					/freebsd/      { print "FREEBSD"; exit}
+					/openbsd/      { print "OPENBSD"; exit}
 					/morphos/      { print "MORPHOS"; exit}
 					/beos/         { print "BEOS";    exit}
 					/sunos/        { print "SUNOS";   exit}
@@ -1273,8 +1347,8 @@
 
 		if [ -z "$os" ]; then
 			log 1 "detecting OS... none detected"
-			log 1 "I couldn't detect your OS. Please use --with-os=OS to force one"
-			log 1 "Allowed values are: UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP"
+			log 1 "I couldn't detect your OS. Please use --os=OS to force one"
+			log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP"
 			exit 1
 		fi
 
@@ -1862,6 +1936,7 @@
 		s#!!AWK!!#$awk#g;
 		s#!!GCC295!!#$gcc295#g;
 		s#!!ENABLE_INSTALL!!#$enable_install#g;
+		s#!!DISTCC!!#$distcc#g;
 	"
 }
 
@@ -1960,8 +2035,8 @@
 	echo "  --awk=AWK                      the awk to use in configure [awk]"
 	echo "  --lipo=LIPO                    the lipo to use (OSX ONLY) [HOST-lipo]"
 	echo "  --os=OS                        the OS we are compiling for [DETECT]"
-	echo "                                 DETECT/UNIX/OSX/FREEBSD/MORPHOS/BEOS/"
-	echo "                                 SUNOS/CYGWIN/MINGW/OS2/WINCE/PSP"
+	echo "                                 DETECT/UNIX/OSX/FREEBSD/OPENBSD/MORPHOS/"
+	echo "                                 BEOS/SUNOS/CYGWIN/MINGW/OS2/WINCE/PSP"
 	echo "  --endian=ENDIAN                set the endian of the HOST (AUTO/LE/BE)"
 	echo "  --revision=rXXXX               overwrite the revision detection."
 	echo "                                 Use with care!"
--- a/configure	Wed Jun 13 11:45:14 2007 +0000
+++ b/configure	Wed Jun 13 12:05:56 2007 +0000
@@ -45,8 +45,8 @@
 
 set_default
 detect_params "$@"
+check_params
 save_params
-check_params
 make_cflags_and_ldflags
 
 EXE=""
--- a/docs/landscape.html	Wed Jun 13 11:45:14 2007 +0000
+++ b/docs/landscape.html	Wed Jun 13 12:05:56 2007 +0000
@@ -355,9 +355,9 @@
     </li>
     <li>m5 bit 6 set = with signals:
      <ul>
-      <li>m2 bits 7..4: bit clear = signal shows red; same bits as in m3</li>
-      <li>m2 bit 2: set = semaphore signals, clear = light signals </li>
-      <li>m2 bits 1..0 : type of signal
+      <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>
          <tr>
           <td nowrap="nowrap" valign="top"><tt>00</tt>: </td>
@@ -475,9 +475,9 @@
    <td valign=top nowrap>&nbsp;</td>
    <td>
     <ul>
-     <li>m5 bits 7..4 clear: road
+     <li>m5 bits 7..6 clear: road
       <ul>
-       <li>m1: <a href="#OwnershipInfo">owner</a> of the road</li>
+       <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:
@@ -513,7 +513,7 @@
         </table>
        </li>
        <li>m3 bits 3..0: counter for the roadworks</li>
-       <li>m5 bits 3..0: road layout: bit set = road piece present:
+       <li>m4 bits 3..0: road layout road type #1: bit set = road piece present:
         <table>
          <tr>
           <td nowrap valign=top>bit 0: </td>
@@ -533,25 +533,36 @@
          </tr>
         </table>
        </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>
       </ul>
      </li>
-     <li>m5 bit 5 set: road depot
+     <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 4 set, bits 7..5 clear: level crossing
+     <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: <a href="#OwnershipInfo">owner</a> of the road</li>
-       <li>m5 bit 3: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li>
-       <li>m5 bit 2: set if crossing lights are on</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
       </ul>
      </li>
      <li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
--- a/docs/landscape_grid.html	Wed Jun 13 11:45:14 2007 +0000
+++ b/docs/landscape_grid.html	Wed Jun 13 12:05:56 2007 +0000
@@ -88,9 +88,9 @@
       <td class="caption">rail</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO OOOO</span> XXXX XXXX</td>
+      <td class="bits"><span class="free">OOOO OOOO O</span>XXX <span class="free">O</span>XXX</td>
       <td class="bits">XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO O</span>XXX</td>
+      <td class="bits">XXXX 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>
@@ -123,11 +123,11 @@
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO OOOO</span></td>
       <td class="bits">XXXX 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>
+      <td class="bits">XXXX XXXX</td>
+      <td class="bits">XXXX XXXX</td>
+      <td class="bits">XXXX XXXX</td>
     </tr>
     <tr>
       <td class="caption">level crossing</td>
@@ -135,10 +135,10 @@
       <td class="bits">-inherit-</td>
       <td class="bits">-inherit-</td>
       <td class="bits">XXXX XXXX</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">XXXX XX<span class="free">OO</span></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">road depot</td>
@@ -147,9 +147,9 @@
       <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">XXXX 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"><span class="free">OOOO OOOO</span></td>
+      <td class="bits">XXX<span class="free">O OOOO</span></td>
     </tr>
     <tr>
       <td>3</td>
--- a/docs/openttd.6	Wed Jun 13 11:45:14 2007 +0000
+++ b/docs/openttd.6	Wed Jun 13 12:05:56 2007 +0000
@@ -1,6 +1,6 @@
 .\"                                      Hey, EMACS: -*- nroff -*-
 .\" Please adjust this date whenever revising the manpage.
-.Dd April 20, 2007
+.Dd May 29, 2007
 .Dt OPENTTD 6
 .Sh NAME
 .Nm openttd
--- a/known-bugs.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/known-bugs.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -15,16 +15,13 @@
 If the bug report is closed, it has been fixed, which then can be verified
 in the latest SVN version.
 
-Bugs for 0.5.1
+Bugs for 0.5.2
 ------------------------------------------------------------------------
 URL: http://bugs.openttd.org
 
 -735	Plural rule not expanded correctly when non-numeric placeholder uses
--732	Trains are lost after autorenewal/autoreplace
 -716	Train Crash in Depot
--677	Badspacing in news summaries
 -674	Map signs allow less nonenglish characters than english ones
--672	Non-transparent station names' backgrounds do not resize properly upon language change
 -669	Docks/Airports/RV Stations can be built without available vehicles
 -646	AI builds useless stations
 -601	Airports can't get flooded when they have planes in them
@@ -36,7 +33,7 @@
 -546	Overflows due to inflation
 -540	Planes vanished when offered exclusive
 -539	Trains can cash the same cargo multiple times
--522	overflow on vehicle costs
+-522	Overflow on vehicle costs
 -508	Destroying trees and replanting => raised rating
 -502	OSX can incorrectly print "dbg: [sl] Cannot open savegame 'data/opntitle.dat' for saving/loading."
 -501	Mouse pointer gets hidden, when draging out of window and back again. Only affects Wacom etc.
@@ -52,7 +49,7 @@
 -355	graphics bugs with trains - water, tunnels
 -354	Maglev Trains faster than All Planes
 -339	Crash in Quicktime when exiting game
--299	disable 90 deg turns patch - AI builds 90 deg turns
+-299	Disable 90 deg turns patch - AI builds 90 deg turns
 -290	NPF - no path to depot from tunnel
 -282	AI Players do not clear loans as soon as they could
 -274	Autoclean ignores any share holdings
@@ -61,11 +58,11 @@
 -216	AI build train vans one van less
 -202	2 Locomotives in 1 Train - Selling one results in Age of the other one Being 0
 -193	Inconsistent directory usage on Mac OS X
--165	vehicle length not taken into account
+-165	Vehicle length not taken into account
 -153	Language crash with app renaming OSX
 -119	Clipping problems with vehicles on slopes
 - 89	Able to build railways/stations before engines become available
-- 65	short wagons bug
+- 65	Short wagons bug
 - 51	Windows doesn't support CUSTOM_LANG_DIR
 - 47	Low rating calculation and cargo loading priority
 
@@ -77,30 +74,25 @@
 -1459262	Towns building too many roads way too long now
 -1458995	Another bug with smooth_economy
 -1393415	NPF & one-way sigs
--1244842	Multiplayer interface bug (0.4.0.1)
--1212267	station visited twice when servicing
+-1212267	Station visited twice when servicing
 -1208170	Duplicate station names can be created
 -1116638	"More, but smaller changes" deficiency
--1106356	re-offered prototypes
+-1106356	Re-offered prototypes
 
-Minor Bugs for 0.5.1
 ------------------------------------------------------------------------
 URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
 
 -1461629	[r4180]Subsidy calculated wrong
--1412031	fast forward scrolling is also fast forward :)
--1387424	overtake insolvent company is to cheap
+-1412031	Fast forward scrolling is also fast forward :)
 -1382782	Loan interest calculated 'wrong'
--1201284	permanent hilight in a depot
+-1201284	Permanent hilight in a depot
 -1185852	Scrollbars get arbitrarily small
--1160732	little bug with transparency
--1117731	Editor-StartingDate
--1108046	game freezes
+-1160732	Little bug with transparency
+-1108046	Game freezes
 -1102174	Bug if 3 people buy 25% shares in one company
 -1084620	Minor bug considering buses/trucks
--1034310	color mauve in diagrams
+-1034310	Color mauve in diagrams
 -1030661	It's possible to build a tunnel under oil wells
-- 987891	Large UFO destruction bug
 - 987883	Aircraft landing/taking off
-- 987880	company league table updating
-- 985924	aircraft taxi speed
+- 987880	Company league table updating
+- 985924	Aircraft taxi speed
--- a/os/debian/changelog	Wed Jun 13 11:45:14 2007 +0000
+++ b/os/debian/changelog	Wed Jun 13 12:05:56 2007 +0000
@@ -4,17 +4,29 @@
 
  -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Mon, 26 Feb 2007 21:07:05 +0100
 
+openttd (0.5.2-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Tue, 29 May 2007 20:00:00 +0100
+
+openttd (0.5.2~rc1-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Wed, 16 May 2007 23:35:39 +0100
+
 openttd (0.5.1-1) unstable; urgency=low
 
   * New upstream release.
 
- -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Fri, 20 Aprr 2007 21:45:32 +0100
+ -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Fri, 20 Apr 2007 21:45:32 +0100
 
 openttd (0.5.1~rc3-1) unstable; urgency=low
 
   * New upstream release.
 
- -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Tue, 17 Aprr 2007 22:00:46 +0100
+ -- Matthijs Kooijman <m.kooijman@student.utwente.nl>  Tue, 17 Apr 2007 22:00:46 +0100
 
 openttd (0.5.1~rc2-1) unstable; urgency=low
 
--- a/os/win32/installer/install.nsi	Wed Jun 13 11:45:14 2007 +0000
+++ b/os/win32/installer/install.nsi	Wed Jun 13 12:05:56 2007 +0000
@@ -1,6 +1,6 @@
 !define APPNAME "OpenTTD"   ; Define application name
-!define APPVERSION "0.5.1"  ; Define application version
-!define INSTALLERVERSION 32 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
+!define APPVERSION "0.5.2"  ; Define application version
+!define INSTALLERVERSION 34 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
 
 !define APPURLLINK "http://www.openttd.org"
 !define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}"
@@ -81,6 +81,7 @@
 !define MUI_FINISHPAGE_NOREBOOTSUPPORT
 !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+!define MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT DisableBack
 
 !insertmacro MUI_PAGE_FINISH
 !insertmacro MUI_UNPAGE_CONFIRM
@@ -355,26 +356,30 @@
 hasCD:
 FunctionEnd
 
-;---------------------------------------------------------------------
-; Custom page function to show notices for running OpenTTD
+;----------------------------------------------------------------------------------
+; Disable the "Back" button on finish page if the installer is run on Win9x systems
+Function DisableBack
+	Call GetWindowsVersion
+	Pop $R0
+	StrCmp $R0 "win9x" 0 WinNT
+	!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "BackEnabled" "0"
+WinNT:
+	ClearErrors
+FunctionEnd
+
+;----------------------------------------------------------------------------------
+; Custom page function to show notices for running OpenTTD (only for win32 systems)
 ; We have extracted this custom page as Notice in the .onInit function
 Function ShowWarningsPage
+	Call GetWindowsVersion
+	Pop $R0
+	; Don't show the UNICODE notice if the installer is run on Win9x systems
+	StrCmp $R0 "win9x" 0 WinNT
+	Abort
+WinNT:
 	!insertmacro MUI_HEADER_TEXT "Installation Complete" "Important notices for OpenTTD usage."
 	!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "notice.ini" "Notice"
 	!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Notice"
-
-	Call GetWindowsVersion
-	Pop $R0
-
-	; Hide the MSLU text if the installer is not run on Win9x systems
-	StrCmp $R0 "winnt" 0 Win9x
-	!insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 1" "HWND" ; MSLU groupbox
-	ShowWindow $R1 0
-	!insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 2" "HWND" ; MSLU text
-	ShowWindow $R1 0
-	!insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 3" "HWND" ; MSLU link
-	ShowWindow $R1 0
-Win9x:
 	ClearErrors
 	!insertmacro MUI_INSTALLOPTIONS_SHOW
 FunctionEnd
--- a/os/win32/installer/notice.ini	Wed Jun 13 11:45:14 2007 +0000
+++ b/os/win32/installer/notice.ini	Wed Jun 13 12:05:56 2007 +0000
@@ -1,41 +1,17 @@
 ; Ini file generated by the HM NIS Edit IO designer.
 [Settings]
-NumFields=6
+NumFields=3
+CancelEnabled=0
 
 [Field 1]
 Type=Groupbox
-Text=Notice for Windows 9x/ME users!
-Left=8
-Right=292
-Top=80
-Bottom=138
-
-[Field 2]
-Type=Label
-Text=OpenTTD will not work without the Microsoft Layer for Unicode installed.\r\nDue to licensing issues we cannot bundle this file with the installer. Please download MSLU from the Microsoft website and extract UnicoWS.dll to the same directory as the openttd executabe.
-Left=13
-Right=284
-Top=91
-Bottom=127
-
-[Field 3]
-Type=Link
-Text=Microsoft Layer for Unicode
-State=http://www.microsoft.com/downloads/details.aspx?FamilyId=73BA7BD7-ED06-4F0D-80A4-2A7EEAEE17E2&displaylang=en
-Left=197
-Right=284
-Top=127
-Bottom=135
-
-[Field 4]
-Type=Groupbox
 Text=UNICODE support
 Left=8
 Right=292
 Top=0
 Bottom=75
 
-[Field 5]
+[Field 2]
 Type=Label
 Text=This version of OpenTTD has support for UNICODE, allowing users to use non-ASCII character sets such as Russian or Japanese.\r\nSelecting such a language will result in an unusable and garbled interface. You will need to specify a font that has support for these characters in openttd.cfg, or alternatively use an appropiate grf file.\r\n\r\nFor more information please refer to the readme or the wiki.
 Left=13
@@ -43,7 +19,7 @@
 Top=9
 Bottom=65
 
-[Field 6]
+[Field 3]
 Type=Link
 Text=OpenTTD wiki
 Left=238
--- a/projects/openttd.vcproj	Wed Jun 13 11:45:14 2007 +0000
+++ b/projects/openttd.vcproj	Wed Jun 13 12:05:56 2007 +0000
@@ -164,6 +164,9 @@
 				RelativePath=".\..\src\airport.cpp">
 			</File>
 			<File
+				RelativePath=".\..\src\articulated_vehicles.cpp">
+			</File>
+			<File
 				RelativePath=".\..\src\autoreplace_cmd.cpp">
 			</File>
 			<File
@@ -393,6 +396,12 @@
 				RelativePath=".\..\src\airport_movement.h">
 			</File>
 			<File
+				RelativePath=".\..\src\articulated_vehicles.h">
+			</File>
+			<File
+				RelativePath=".\..\src\autoreplace_cmd.h">
+			</File>
+			<File
 				RelativePath=".\..\src\aystar.h">
 			</File>
 			<File
@@ -540,6 +549,9 @@
 				RelativePath=".\..\src\newgrf_house.h">
 			</File>
 			<File
+				RelativePath=".\..\src\newgrf_industries.h">
+			</File>
+			<File
 				RelativePath=".\..\src\newgrf_sound.h">
 			</File>
 			<File
@@ -953,6 +965,44 @@
 			</File>
 		</Filter>
 		<Filter
+			Name="Blitters"
+			Filter="">
+			<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_slow.cpp">
+			</File>
+			<File
+				RelativePath=".\..\src\blitter\8bpp_slow.hpp">
+			</File>
+			<File
+				RelativePath=".\..\src\blitter\blitter.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\spriteloader.hpp">
+			</File>
+		</Filter>
+		<Filter
 			Name="NewGRF"
 			Filter="">
 			<File
@@ -977,6 +1027,9 @@
 				RelativePath=".\..\src\newgrf_house.cpp">
 			</File>
 			<File
+				RelativePath=".\..\src\newgrf_industries.cpp">
+			</File>
+			<File
 				RelativePath=".\..\src\newgrf_sound.cpp">
 			</File>
 			<File
--- a/projects/openttd_vs80.vcproj	Wed Jun 13 11:45:14 2007 +0000
+++ b/projects/openttd_vs80.vcproj	Wed Jun 13 12:05:56 2007 +0000
@@ -448,6 +448,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\articulated_vehicles.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\autoreplace_cmd.cpp"
 				>
 			</File>
@@ -752,6 +756,14 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\articulated_vehicles.h"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\autoreplace_cmd.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\aystar.h"
 				>
 			</File>
@@ -948,6 +960,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\newgrf_industries.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\newgrf_sound.h"
 				>
 			</File>
@@ -1493,6 +1509,54 @@
 			</File>
 		</Filter>
 		<Filter
+			Name="Blitters"
+			>
+			<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_slow.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\blitter\8bpp_slow.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\blitter\blitter.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Sprite loaders"
+			>
+			<File
+				RelativePath=".\..\src\spriteloader\grf.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\spriteloader\grf.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\..\src\spriteloader\spriteloader.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
 			Name="NewGRF"
 			>
 			<File
@@ -1524,6 +1588,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\newgrf_industries.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\newgrf_sound.cpp"
 				>
 			</File>
--- a/readme.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/readme.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -1,6 +1,6 @@
 OpenTTD README
-Last updated:    2007-04-20
-Release version: 0.5.1
+Last updated:    2007-05-29
+Release version: 0.5.2
 ------------------------------------------------------------------------
 
 
@@ -75,6 +75,7 @@
   Linux                - SDL
   MacOS X (universal)  - Cocoa video and sound drivers (SDL works too, but not 100% and not as a universal binary)
   MorphOS              - SDL
+  OpenBSD              - SDL
   OS/2                 - SDL
   Windows              - Win32 GDI (faster) or SDL
 
@@ -174,6 +175,10 @@
   graphics/png is optional for screenshots in the PNG format.
   Use "gmake", but do a "./configure" before the first build.
 
+OpenBSD:
+  Use "gmake", but do a "./configure" before the first build.
+  Note that you need the port devel/sdl to compile OpenTTD.
+
 MorphOS:
   Use "make". However, for the first build one has to do a "./configure" first.
   Note that you need the MorphOS SDK, latest libnix updates (else C++ parts of
@@ -312,6 +317,7 @@
   Richard Kempton (RichK67)      - Additional airports, initial TGP implementation
   Michael Blunck                 - For revolutionizing TTD with awesome graphics
   George                         - Canal graphics
+  David Dallaston (Pikka)        - Tram tracks
   All Translators                - For their support to make OpenTTD a truly international game
   Bug Reporters                  - Thanks for all bug reports
   Chris Sawyer                   - For an amazing game!
--- a/source.list	Wed Jun 13 11:45:14 2007 +0000
+++ b/source.list	Wed Jun 13 12:05:56 2007 +0000
@@ -1,5 +1,6 @@
 # Source Files
 airport.cpp
+articulated_vehicles.cpp
 autoreplace_cmd.cpp
 aystar.cpp
 bmp.cpp
@@ -98,6 +99,8 @@
 aircraft.h
 airport.h
 airport_movement.h
+articulated_vehicles.h
+autoreplace_cmd.h
 aystar.h
 bmp.h
 cargotype.h
@@ -147,6 +150,7 @@
 newgrf_config.h
 newgrf_engine.h
 newgrf_house.h
+newgrf_industries.h
 newgrf_sound.h
 newgrf_spritegroup.h
 newgrf_station.h
@@ -288,6 +292,20 @@
 ai/trolly/shared.cpp
 ai/trolly/trolly.cpp
 
+# Blitters
+blitter/8bpp_debug.cpp
+blitter/8bpp_debug.hpp
+blitter/8bpp_optimized.cpp
+blitter/8bpp_optimized.hpp
+blitter/8bpp_slow.cpp
+blitter/8bpp_slow.hpp
+blitter/blitter.hpp
+
+# Sprite loaders
+spriteloader/grf.cpp
+spriteloader/grf.hpp
+spriteloader/spriteloader.hpp
+
 # NewGRF
 newgrf.cpp
 newgrf_canal.cpp
@@ -296,6 +314,7 @@
 newgrf_config.cpp
 newgrf_engine.cpp
 newgrf_house.cpp
+newgrf_industries.cpp
 newgrf_sound.cpp
 newgrf_spritegroup.cpp
 newgrf_station.cpp
--- a/src/ai/default/default.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ai/default/default.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -67,7 +67,7 @@
 
 static TrackBits GetRailTrackStatus(TileIndex tile)
 {
-	uint32 r = GetTileTrackStatus(tile, TRANSPORT_RAIL);
+	uint32 r = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
 	return (TrackBits)(byte) (r | r >> 8);
 }
 
@@ -622,7 +622,6 @@
 	int dist;
 	uint same_station = 0;
 
-	// Make sure distance to closest station is < 37 pixels.
 	from_tile = GET_TOWN_OR_INDUSTRY_TILE(fr->from);
 	to_tile = GET_TOWN_OR_INDUSTRY_TILE(fr->to);
 
@@ -646,7 +645,19 @@
 		return false;
 	}
 
-	if (dist != 0xFFFF && dist > 37) return false;
+	/* Requiring distance to nearest station to be always under 37 tiles may be suboptimal,
+	 * Especially for longer aircraft routes that start and end pretty at any arbitrary place on map
+	 * While it may be nice for AI to cluster their creations together, hardcoded limit is not ideal.
+	 * If AI will randomly start on some isolated spot, it will never get out of there.
+	 * AI will have chance of randomly rejecting routes further than 37 tiles from their network,
+	 * so there will be some attempt to cluster the network together */
+
+	/* Random value between 37 and 292. Low values are exponentially more likely
+	 * With 50% chance the value will be under 52 tiles */
+	int min_distance = 36 + 1 << (Random() % 9); // 0..8
+
+	/* Make sure distance to closest station is < min_distance tiles. */
+	if (dist != 0xFFFF && dist > min_distance) return false;
 
 	if (p->ai.route_type_mask != 0 &&
 			!(p->ai.route_type_mask & bitmask) &&
@@ -672,8 +683,8 @@
 		const Industry* i = (const Industry*)fr->from;
 		const IndustrySpec *indsp = GetIndustrySpec(i->type);
 
-		if (i->pct_transported[fr->cargo != indsp->produced_cargo[0]] > 0x99 ||
-				i->total_production[fr->cargo != indsp->produced_cargo[0]] == 0) {
+		if (i->last_month_pct_transported[fr->cargo != indsp->produced_cargo[0]] > 0x99 ||
+				i->last_month_production[fr->cargo != indsp->produced_cargo[0]] == 0) {
 			return false;
 		}
 	}
@@ -1371,15 +1382,55 @@
 	FoundRoute fr;
 	int i;
 
+	/* Get aircraft that would be bought for this route
+	 * (probably, as conditions may change before the route is fully built,
+	 * like running out of money and having to select different aircraft, etc ...) */
+	EngineID veh = AiChooseAircraftToBuild(p->player_money, p->ai.build_kind != 0 ? 0 : AIR_CTOL);
+
+	/* No aircraft buildable mean no aircraft route */
+	if (veh == INVALID_ENGINE) return;
+
+	const AircraftVehicleInfo *avi = AircraftVehInfo(veh);
+
+	/* For passengers, "optimal" number of days in transit is about 80 to 100
+	 * Calculate "maximum optimal number of squares" from speed for 80 days
+	 * 20 days should be enough for takeoff, land, taxi, etc ...
+	 *
+	 * "A vehicle traveling at 100kph will cross 5.6 tiles per day" ->
+	 * Since in table aircraft speeds are in "real km/h", this should be accurate
+	 * We get max_squares = avi->max_speed * 5.6 / 100.0 * 80 */
+	int max_squares = avi->max_speed * 448 / 100;
+
+	/* For example this will be 10456 tiles for 2334 km/h aircrafts with realistic aircraft speeds
+	 * and 836 with "unrealistic" speeds, much more than the original 95 squares limit
+	 *
+	 * Size of the map, if not rectangular, it is the larger dimension of it
+	 */
+	int map_size = max(MapSizeX(), MapSizeY());
+
+	/* Minimum distance between airports is half of map size, clamped between 1% and 20% of optimum.
+	 * May prevent building plane routes at all on small maps, but they will be ineffective there, so
+	 * it is feature, not a bug.
+	 * On smaller distances, buses or trains are usually more effective approach anyway.
+	 * Additional safeguard is needing at least 20 squares,
+	 * which may trigger in highly unusual configurations */
+	int min_squares = max(20, max(max_squares / 100, min(max_squares / 5, map_size / 2)));
+
+	/* Should not happen, unless aircraft with real speed under approx. 5 km/h is selected.
+	 * No such exist, unless using some NewGRF with ballons, zeppelins or similar
+	 * slow-moving stuff. In that case, bail out, it is faster to walk by foot anyway :). */
+	if (max_squares < min_squares) return;
+
 	i = 60;
 	for (;;) {
+
 		// look for one from the subsidy list
 		AiFindSubsidyPassengerRoute(&fr);
-		if (IS_INT_INSIDE(fr.distance, 0, 95 + 1)) break;
+		if (IS_INT_INSIDE(fr.distance, min_squares, max_squares + 1)) break;
 
 		// try a random one
 		AiFindRandomPassengerRoute(&fr);
-		if (IS_INT_INSIDE(fr.distance, 0, 95 + 1)) break;
+		if (IS_INT_INSIDE(fr.distance, min_squares, max_squares + 1)) break;
 
 		// only test 60 times
 		if (--i == 0) return;
@@ -1408,7 +1459,19 @@
 	p->ai.build_kind = 0;
 	p->ai.num_build_rec = 2;
 	p->ai.num_loco_to_build = 1;
-	p->ai.num_want_fullload = 1;
+	/* Using full load always may not be the best.
+	 * Pick random value and rely on selling the vehicle & route
+	 * afterwards if the choice was utterly wrong (or maybe altering the value if AI is improved)
+	 * When traffic is very low or very assymetric, is is better not to full load
+	 * When traffic is high, full/non-full make no difference
+	 * It should be better to run with aircraft only one way full 6 times per year,
+	 * rather than two way full 1 times.
+	 * Practical experiments with AI show that the non-full-load aircrafts are usually
+	 * those that survive
+	 * Also, non-full load is more resistant against starving (by building better stations
+	 * or using exclusive rights)
+	 */
+	p->ai.num_want_fullload = CHANCE16(1, 5); // 20% chance
 //	p->ai.loco_id = INVALID_VEHICLE;
 	p->ai.order_list_blocks[0] = 0;
 	p->ai.order_list_blocks[1] = 1;
@@ -1862,7 +1925,7 @@
 	arpfd.tile2 = p->ai.cur_tile_a;
 	arpfd.flag = false;
 	arpfd.count = 0;
-	FollowTrack(p->ai.cur_tile_a + TileOffsByDiagDir(p->ai.cur_dir_a), 0x2000 | TRANSPORT_RAIL, (DiagDirection)(p->ai.cur_dir_a ^ 2),
+	FollowTrack(p->ai.cur_tile_a + TileOffsByDiagDir(p->ai.cur_dir_a), 0x2000 | TRANSPORT_RAIL, 0, (DiagDirection)(p->ai.cur_dir_a ^ 2),
 		(TPFEnumProc*)AiEnumFollowTrack, NULL, &arpfd);
 	return arpfd.count > 8;
 }
@@ -2600,10 +2663,10 @@
 		} else if (p->mode == 1) {
 			if (_want_road_truck_station) {
 				// Truck station
-				ret = DoCommand(c, p->attr, RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
+				ret = DoCommand(c, p->attr, ROADTYPES_ROAD << 2 | RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
 			} else {
 				// Bus station
-				ret = DoCommand(c, p->attr, RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
+				ret = DoCommand(c, p->attr, ROADTYPES_ROAD << 2 | RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
 			}
 clear_town_stuff:;
 
@@ -2824,13 +2887,13 @@
 	tile = TILE_MASK(p->ai.cur_tile_a + TileOffsByDiagDir(dir));
 
 	if (IsRoadStopTile(tile) || IsTileDepotType(tile, TRANSPORT_ROAD)) return false;
-	bits = GetTileTrackStatus(tile, TRANSPORT_ROAD) & _ai_road_table_and[dir];
+	bits = GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD) & _ai_road_table_and[dir];
 	if (bits == 0) return false;
 
 	are.best_dist = (uint)-1;
 
 	for_each_bit(i, bits) {
-		FollowTrack(tile, 0x3000 | TRANSPORT_ROAD, (DiagDirection)_dir_by_track[i], (TPFEnumProc*)AiEnumFollowRoad, NULL, &are);
+		FollowTrack(tile, 0x3000 | TRANSPORT_ROAD, ROADTYPES_ROAD, (DiagDirection)_dir_by_track[i], (TPFEnumProc*)AiEnumFollowRoad, NULL, &are);
 	}
 
 	if (DistanceManhattan(tile, are.dest) <= are.best_dist) return false;
@@ -2888,7 +2951,7 @@
 		}
 
 		// Is building a (rail)bridge possible at this place (type doesn't matter)?
-		if (CmdFailed(DoCommand(tile_new, tile, 0x8000, DC_AUTO, CMD_BUILD_BRIDGE)))
+		if (CmdFailed(DoCommand(tile_new, tile, ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE)))
 			return;
 		AiBuildRoadRecursive(arf, tile_new, dir2);
 
@@ -3038,13 +3101,13 @@
 		 */
 		for (i = 10; i != 0; i--) {
 			if (CheckBridge_Stuff(i, bridge_len)) {
-				int32 cost = DoCommand(tile, p->ai.cur_tile_a, i + (0x80 << 8), DC_AUTO, CMD_BUILD_BRIDGE);
+				int32 cost = DoCommand(tile, p->ai.cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
 				if (!CmdFailed(cost) && cost < (p->player_money >> 5)) break;
 			}
 		}
 
 		// Build it
-		DoCommand(tile, p->ai.cur_tile_a, i + (0x80 << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
+		DoCommand(tile, p->ai.cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
 
 		p->ai.state_counter = 0;
 	} else if (arf.best_ptr[0] & 0x40) {
--- a/src/ai/trolly/build.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ai/trolly/build.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -42,9 +42,9 @@
 		return AI_DoCommand(tile, direction + (numtracks << 8) + (length << 16), 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_STATION);
 
 	if (type == AI_BUS)
-		return AI_DoCommand(tile, direction, RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
+		return AI_DoCommand(tile, direction, ROADTYPES_ROAD << 2 | RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
 
-	return AI_DoCommand(tile, direction, RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
+	return AI_DoCommand(tile, direction, ROADTYPES_ROAD << 2 | RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
 }
 
 
@@ -75,7 +75,7 @@
 	if (p->ainew.tbt == AI_TRAIN) {
 		return AI_DoCommand(tile_a, tile_b, (0x00 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 	} else {
-		return AI_DoCommand(tile_a, tile_b, (0x80 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
+		return AI_DoCommand(tile_a, tile_b, ((0x80 | ROADTYPES_ROAD) << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 	}
 }
 
@@ -162,7 +162,7 @@
 	} else {
 		// Tunnel code
 		if ((AI_PATHFINDER_FLAG_TUNNEL & route_extra[part]) != 0) {
-			cost += AI_DoCommand(route[part], 0x200, 0, flag, CMD_BUILD_TUNNEL);
+			cost += AI_DoCommand(route[part], 0x200 | ROADTYPES_ROAD, 0, flag, CMD_BUILD_TUNNEL);
 			PathFinderInfo->position++;
 			// TODO: problems!
 			if (CmdFailed(cost)) {
--- a/src/ai/trolly/pathfinder.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ai/trolly/pathfinder.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -237,17 +237,10 @@
 					if (IsTunnel(atile)) {
 						if (GetTunnelDirection(atile) != i) continue;
 					} else {
-						if ((_m[atile].m5 & 1) != DiagDirToAxis(i)) continue;
+						if (GetBridgeRampDirection(atile) != i) continue;
 					}
 				}
 			}
-			// But also if we are on a bridge, we can only move a certain direction
-			if (!PathFinderInfo->rail_or_road && IsRoad(ctile)) {
-				if (IsTileType(ctile, MP_TUNNELBRIDGE)) {
-					// An existing bridge/tunnel... let's test the direction ;)
-					if ((_m[ctile].m5 & 1) != (i & 1)) continue;
-				}
-			}
 
 			if ((AI_PATHFINDER_FLAG_BRIDGE & current->path.node.user_data[0]) != 0 ||
 					(AI_PATHFINDER_FLAG_TUNNEL & current->path.node.user_data[0]) != 0) {
@@ -291,9 +284,9 @@
 							dir = 0;
 						} else {
 							// It already has road.. check if we miss any bits!
-							if ((_m[ctile].m5 & dir) != dir) {
+							if ((GetAnyRoadBits(ctile, ROADTYPE_ROAD) & dir) != dir) {
 								// We do miss some pieces :(
-								dir &= ~_m[ctile].m5;
+								dir &= ~GetAnyRoadBits(ctile, ROADTYPE_ROAD);
 							} else {
 								dir = 0;
 							}
--- a/src/ai/trolly/trolly.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ai/trolly/trolly.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -280,9 +280,9 @@
 
 		// No limits on delevering stations!
 		//  Or for industry that does not give anything yet
-		if (indsp->produced_cargo[0] == CT_INVALID || i->total_production[0] == 0) return true;
+		if (indsp->produced_cargo[0] == CT_INVALID || i->last_month_production[0] == 0) return true;
 
-		if (i->total_production[0] - i->total_transported[0] < AI_CHECKCITY_NEEDED_CARGO) return false;
+		if (i->last_month_production[0] - i->last_month_transported[0] < AI_CHECKCITY_NEEDED_CARGO) return false;
 
 		// Check if we have build a station in this town the last 6 months
 		//  else we don't do it. This is done, because stat updates can be slow
@@ -322,7 +322,7 @@
 		// We are about to add one...
 		count++;
 		// Check if we the city can provide enough cargo for this amount of stations..
-		if (count * AI_CHECKCITY_CARGO_PER_STATION > i->total_production[0]) return false;
+		if (count * AI_CHECKCITY_CARGO_PER_STATION > i->last_month_production[0]) return false;
 
 		// All check are okay, so we can build here!
 		return true;
@@ -468,12 +468,12 @@
 
 			// TODO: in max_cargo, also check other cargo (beside [0])
 			// First we check if the from_ic produces cargo that this ic accepts
-			if (indsp_from->produced_cargo[0] != CT_INVALID && ind_from->total_production[0] != 0) {
+			if (indsp_from->produced_cargo[0] != CT_INVALID && ind_from->last_month_production[0] != 0) {
 				for (i = 0; i < lengthof(indsp_temp->accepts_cargo); i++) {
 					if (indsp_temp->accepts_cargo[i] == CT_INVALID) break;
 					if (indsp_from->produced_cargo[0] == indsp_temp->accepts_cargo[i]) {
 						// Found a compatible industry
-						max_cargo = ind_from->total_production[0] - ind_from->total_transported[0];
+						max_cargo = ind_from->last_month_production[0] - ind_from->last_month_transported[0];
 						found = true;
 						p->ainew.from_deliver = true;
 						p->ainew.to_deliver = false;
@@ -481,14 +481,14 @@
 					}
 				}
 			}
-			if (!found && indsp_temp->produced_cargo[0] != CT_INVALID && ind_temp->total_production[0] != 0) {
+			if (!found && indsp_temp->produced_cargo[0] != CT_INVALID && ind_temp->last_month_production[0] != 0) {
 				// If not check if the current ic produces cargo that the from_ic accepts
 				for (i = 0; i < lengthof(indsp_from->accepts_cargo); i++) {
 					if (indsp_from->accepts_cargo[i] == CT_INVALID) break;
 					if (indsp_from->produced_cargo[0] == indsp_from->accepts_cargo[i]) {
 						// Found a compatbiel industry
 						found = true;
-						max_cargo = ind_temp->total_production[0] - ind_temp->total_transported[0];
+						max_cargo = ind_temp->last_month_production[0] - ind_temp->last_month_transported[0];
 						p->ainew.from_deliver = false;
 						p->ainew.to_deliver = true;
 						break;
@@ -898,9 +898,9 @@
 		// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
 		tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
 		if (p->ainew.from_deliver) {
-			max_cargo = GetIndustry(p->ainew.from_ic)->total_production[0];
+			max_cargo = GetIndustry(p->ainew.from_ic)->last_month_production[0];
 		} else {
-			max_cargo = GetIndustry(p->ainew.to_ic)->total_production[0];
+			max_cargo = GetIndustry(p->ainew.to_ic)->last_month_production[0];
 		}
 
 		// This is because moving 60% is more than we can dream of!
@@ -1224,7 +1224,7 @@
 	// Skip the first order if it is a second vehicle
 	//  This to make vehicles go different ways..
 	if (p->ainew.cur_veh & 1)
-		AI_DoCommand(0, p->ainew.veh_id, 0, DC_EXEC, CMD_SKIP_ORDER);
+		AI_DoCommand(0, p->ainew.veh_id, 1, DC_EXEC, CMD_SKIP_TO_ORDER);
 
 	// 3, 2, 1... go! (give START_STOP command ;))
 	AI_DoCommand(0, p->ainew.veh_id, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
--- a/src/aircraft.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/aircraft.h	Wed Jun 13 12:05:56 2007 +0000
@@ -135,6 +135,7 @@
 	void UpdateDeltaXY(Direction direction);
 	ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; }
 	WindowClass GetVehicleListWindowClass() const { return WC_AIRCRAFT_LIST; }
+	bool IsPrimaryVehicle() const { return IsNormalAircraft(this); }
 };
 
 #endif /* AIRCRAFT_H */
--- a/src/airport_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/airport_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -34,12 +34,12 @@
 
 static void PlaceAirport(TileIndex tile)
 {
-	DoCommandP(tile, _selected_airport_type, 0, CcBuildAirport, CMD_BUILD_AIRPORT | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_A001_CAN_T_BUILD_AIRPORT_HERE));
+	DoCommandP(tile, _selected_airport_type, _ctrl_pressed, CcBuildAirport, CMD_BUILD_AIRPORT | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_A001_CAN_T_BUILD_AIRPORT_HERE));
 }
 
 static void PlaceAir_DemolishArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
 }
 
 
@@ -95,7 +95,7 @@
 		break;
 
 	case WE_PLACE_MOUSEUP:
-		if (e->we.place.pt.x != -1) {
+		if (e->we.place.pt.x != -1 && e->we.place.select_proc == DDSP_DEMOLISH_AREA) {
 			DoCommandP(e->we.place.tile, e->we.place.starttile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
 		}
 		break;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/articulated_vehicles.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,113 @@
+/* $Id$ */
+
+/** @file articulated_vehicles.cpp */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "functions.h"
+#include "command.h"
+#include "vehicle.h"
+#include "articulated_vehicles.h"
+#include "engine.h"
+#include "train.h"
+#include "roadveh.h"
+#include "newgrf_callbacks.h"
+#include "newgrf_engine.h"
+
+
+uint CountArticulatedParts(EngineID engine_type)
+{
+	if (!HASBIT(EngInfo(engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return 0;
+
+	uint i;
+	for (i = 1; i < 10; i++) {
+		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL);
+		if (callback == CALLBACK_FAILED || callback == 0xFF) break;
+	}
+
+	return i - 1;
+}
+
+void AddArticulatedParts(Vehicle **vl, VehicleType type)
+{
+	const Vehicle *v = vl[0];
+	Vehicle *u = vl[0];
+
+	if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
+
+	for (uint i = 1; i < 10; i++) {
+		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, v);
+		if (callback == CALLBACK_FAILED || callback == 0xFF) return;
+
+		/* Attempt to use pre-allocated vehicles until they run out. This can happen
+		 * if the callback returns different values depending on the cargo type. */
+		u->next = vl[i];
+		if (u->next == NULL) u->next = AllocateVehicle();
+		if (u->next == NULL) return;
+
+		u = u->next;
+
+		EngineID engine_type = GetFirstEngineOfType(type) + GB(callback, 0, 7);
+		bool flip_image = HASBIT(callback, 7);
+
+		/* get common values from first engine */
+		u->direction = v->direction;
+		u->owner = v->owner;
+		u->tile = v->tile;
+		u->x_pos = v->x_pos;
+		u->y_pos = v->y_pos;
+		u->z_pos = v->z_pos;
+		u->build_year = v->build_year;
+		u->vehstatus = v->vehstatus & ~VS_STOPPED;
+
+		u->cargo_subtype = 0;
+		u->max_speed = 0;
+		u->max_age = 0;
+		u->engine_type = engine_type;
+		u->value = 0;
+		u->subtype = 0;
+		u->cur_image = 0xAC2;
+		u->random_bits = VehicleRandomBits();
+
+		switch (type) {
+			default: NOT_REACHED();
+
+			case VEH_TRAIN: {
+				const RailVehicleInfo *rvi_artic = RailVehInfo(engine_type);
+
+				u = new (u) Train();
+				u->u.rail.track = v->u.rail.track;
+				u->u.rail.railtype = v->u.rail.railtype;
+				u->u.rail.first_engine = v->engine_type;
+
+				u->spritenum = rvi_artic->image_index;
+				u->cargo_type = rvi_artic->cargo_type;
+				u->cargo_cap = rvi_artic->capacity;
+
+				SetArticulatedPart(u);
+			} break;
+
+			case VEH_ROAD: {
+				const RoadVehicleInfo *rvi_artic = RoadVehInfo(engine_type);
+
+				u = new (u) RoadVehicle();
+				u->u.road.first_engine = v->engine_type;
+				u->u.road.cached_veh_length = GetRoadVehLength(u);
+				u->u.road.state = RVSB_IN_DEPOT;
+
+				u->u.road.roadtype = v->u.road.roadtype;
+				u->u.road.compatible_roadtypes = v->u.road.compatible_roadtypes;
+
+				u->spritenum = rvi_artic->image_index;
+				u->cargo_type = rvi_artic->cargo_type;
+				u->cargo_cap = rvi_artic->capacity;
+
+				SetRoadVehArticPart(u);
+			} break;
+		}
+
+		if (flip_image) u->spritenum++;
+
+		VehiclePositionChanged(u);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/articulated_vehicles.h	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,11 @@
+/* $Id$ */
+
+/** @file articulated_vehicles.h */
+
+#ifndef ARTICULATED_VEHICLES_H
+#define ARTICULATED_VEHICLES_H
+
+uint CountArticulatedParts(EngineID engine_type);
+void AddArticulatedParts(Vehicle **vl, VehicleType type);
+
+#endif /* ARTICULATED_VEHICLES_H */
--- a/src/autoreplace_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/autoreplace_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -171,7 +171,12 @@
 		return cost;
 	}
 
-	if (replacement_cargo_type != CT_NO_REFIT) cost += GetRefitCost(new_engine_type); // add refit cost
+	if (replacement_cargo_type != CT_NO_REFIT) {
+		/* add refit cost */
+		int32 refit_cost = GetRefitCost(new_engine_type);
+		if (old_v->type == VEH_TRAIN && IsMultiheaded(old_v)) refit_cost += refit_cost; // pay for both ends
+		cost += refit_cost;
+	}
 
 	if (flags & DC_EXEC) {
 		new_v = GetVehicle(_new_vehicle_id);
@@ -195,9 +200,14 @@
 			 * We add the new engine after the old one instead of replacing it. It will give the same result anyway when we
 			 * sell the old engine in a moment
 			 */
-			DoCommand(0, (GetPrevVehicleInChain(old_v)->index << 16) | new_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
+			/* Get the vehicle in front of the one we move out */
+			Vehicle *front = GetPrevVehicleInChain(old_v);
+			/* If the vehicle in front is the rear end of a dualheaded engine, then we need to use the one in front of that one */
+			if (IsMultiheaded(front) && !IsTrainEngine(front)) front = GetPrevVehicleInChain(front);
 			/* Now we move the old one out of the train */
 			DoCommand(0, (INVALID_VEHICLE << 16) | old_v->index, 0, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
+			/* Add the new vehicle */
+			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);
@@ -224,10 +234,6 @@
 				if (temp_v != NULL) {
 					DoCommand(0, (new_v->index << 16) | temp_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
 				}
-			} else if (!IsDefaultGroupID(old_v->group_id) && IsValidGroupID(old_v->group_id)) {
-				/* Increase the new num engines of the group for the ships, aircraft, and road vehicles
-					The old new num engine is decrease in the destroyvehicle function */
-				GetGroup(old_v->group_id)->num_engines[new_v->engine_type]++;
 			}
 		}
 		/* We are done setting up the new vehicle. Now we move the cargo from the old one to the new one */
@@ -240,9 +246,19 @@
 			GetName(vehicle_name, old_v->string_id & 0x7FF, lastof(vehicle_name));
 		}
 	} else { // flags & DC_EXEC not set
+		int32 tmp_move = 0;
+		if (old_v->type == VEH_TRAIN && IsFrontEngine(old_v) && old_v->next != NULL) {
+			/* Verify that the wagons can be placed on the engine in question.
+			 * This is done by building an engine, test if the wagons can be added and then sell the test engine. */
+			DoCommand(old_v->tile, new_engine_type, 3, DC_EXEC, GetCmdBuildVeh(old_v));
+			Vehicle *temp = GetVehicle(_new_vehicle_id);
+			tmp_move = DoCommand(0, (temp->index << 16) | old_v->next->index, 1, 0, CMD_MOVE_RAIL_VEHICLE);
+			DoCommand(0, temp->index, 0, DC_EXEC, GetCmdSellVeh(old_v));
+		}
+
 		/* Ensure that the player will not end up having negative money while autoreplacing
 		 * This is needed because the only other check is done after the income from selling the old vehicle is substracted from the cost */
-		if (p->money64 < (cost + total_cost)) {
+		if (CmdFailed(tmp_move) || p->money64 < (cost + total_cost)) {
 			SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 			SubtractMoneyFromPlayer(-sell_value); // Pay back the loan
 			return CMD_ERROR;
@@ -338,6 +354,8 @@
 			/* Now replace the vehicle */
 			temp_cost = ReplaceVehicle(&w, flags, cost);
 
+			if (CmdFailed(temp_cost)) break; // replace failed for some reason. Leave the vehicle alone
+
 			if (flags & DC_EXEC &&
 					(w->type != VEH_TRAIN || w->u.rail.first_engine == INVALID_ENGINE)) {
 				/* now we bought a new engine and sold the old one. We need to fix the
@@ -346,10 +364,7 @@
 				 */
 				v = w;
 			}
-
-			if (!CmdFailed(temp_cost)) {
-				cost += temp_cost;
-			}
+			cost += temp_cost;
 		} while (w->type == VEH_TRAIN && (w = GetNextVehicle(w)) != NULL);
 
 		if (!(flags & DC_EXEC) && (p->money64 < (int32)(cost + p->engine_renew_money) || cost == 0)) {
--- a/src/autoreplace_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/autoreplace_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -160,6 +160,9 @@
 			/* This is for engines we can replace to and they should depend on what we selected to replace from */
 			if (!IsEngineBuildable(e, type, _local_player)) continue; // we need to be able to build the engine
 			if (!EnginesGotCargoInCommon(e, WP(w, replaceveh_d).sel_engine[0])) continue; // the engines needs to be able to carry the same cargo
+
+			/* Road vehicles can't be replaced by trams and vice-versa */
+			if (type == VEH_ROAD && HASBIT(EngInfo(WP(w, replaceveh_d).sel_engine[0])->misc_flags, EF_ROAD_TRAM) != HASBIT(EngInfo(e)->misc_flags, EF_ROAD_TRAM)) continue;
 			if (e == WP(w, replaceveh_d).sel_engine[0]) continue; // we can't replace an engine into itself (that would be autorenew)
 		}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_debug.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,51 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "../functions.h"
+#include "8bpp_debug.hpp"
+
+static FBlitter_8bppDebug iFBlitter_8bppDebug;
+
+void Blitter_8bppDebug::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+	const byte *src, *src_line;
+	Pixel8 *dst, *dst_line;
+
+	/* Find where to start reading in the source sprite */
+	src_line = (const byte *)bp->sprite + (bp->skip_top * bp->sprite_width + bp->skip_left) * ScaleByZoom(1, zoom);
+	dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+	for (int y = 0; y < bp->height; y++) {
+		dst = dst_line;
+		dst_line += bp->pitch;
+
+		src = src_line;
+		src_line += bp->sprite_width * ScaleByZoom(1, zoom);
+
+		for (int x = 0; x < bp->width; x++) {
+			if (*src != 0) *dst = *src;
+			dst++;
+			src += ScaleByZoom(1, zoom);
+		}
+		assert(src <= src_line);
+	}
+}
+
+Sprite *Blitter_8bppDebug::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+	Sprite *dest_sprite;
+	dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width);
+
+	dest_sprite->height = sprite->height;
+	dest_sprite->width  = sprite->width;
+	dest_sprite->x_offs = sprite->x_offs;
+	dest_sprite->y_offs = sprite->y_offs;
+
+	/* Write a random color as sprite; this makes debugging really easy */
+	uint color = InteractiveRandom() % 150 + 2;
+	for (int i = 0; i < sprite->height * sprite->width; i++) {
+		dest_sprite->data[i] = (sprite->data[i].m == 0) ? 0 : color;
+	}
+
+	return dest_sprite;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_debug.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file debug.hpp */
+
+#ifndef BLITTER_8BPP_DEBUG_HPP
+#define BLITTER_8BPP_DEBUG_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppDebug : public Blitter {
+public:
+	uint8 GetScreenDepth() { return 8; }
+
+	void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+	Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppDebug: public BlitterFactory<FBlitter_8bppDebug> {
+public:
+	/* virtual */ const char *GetName() { return "8bpp-debug"; }
+
+	/* virtual */ const char *GetDescription() { return "8bpp Debug Blitter (testing only)"; }
+
+	/* virtual */ Blitter *CreateInstance() { return new Blitter_8bppDebug(); }
+};
+
+#endif /* BLITTER_8BPP_DEBUG_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_optimized.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,198 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "../debug.h"
+#include "8bpp_optimized.hpp"
+
+static FBlitter_8bppOptimized iFBlitter_8bppOptimized;
+
+void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+	const byte *src, *src_next;
+	Pixel8 *dst, *dst_line;
+	uint offset = 0;
+
+	/* Find the offset of this zoom-level */
+	offset = ((const byte *)bp->sprite)[(int)zoom * 2] | ((const byte *)bp->sprite)[(int)zoom * 2 + 1] << 8;
+
+	/* Find where to start reading in the source sprite */
+	src = (const byte *)bp->sprite + offset;
+	dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+	/* Skip over the top lines in the source image */
+	for (int y = 0; y < bp->skip_top; y++) {
+		uint trans, pixels;
+		for (;;) {
+			trans = *src++;
+			pixels = *src++;
+			if (trans == 0 && pixels == 0) break;
+			src += pixels;
+		}
+	}
+
+	src_next = src;
+
+	for (int y = 0; y < bp->height; y++) {
+		dst = dst_line;
+		dst_line += bp->pitch;
+
+		uint skip_left = bp->skip_left;
+		int width = bp->width;
+
+		for (;;) {
+			src = src_next;
+			uint8 trans = *src++;
+			uint8 pixels = *src++;
+			src_next = src + pixels;
+			if (trans == 0 && pixels == 0) break;
+			if (width <= 0) continue;
+
+			if (skip_left != 0) {
+				if (skip_left < trans) {
+					trans -= skip_left;
+					skip_left = 0;
+				} else {
+					skip_left -= trans;
+					trans = 0;
+				}
+				if (skip_left < pixels) {
+					src += skip_left;
+					pixels -= skip_left;
+					skip_left = 0;
+				} else {
+					src += pixels;
+					skip_left -= pixels;
+					pixels = 0;
+				}
+			}
+			if (skip_left != 0) continue;
+
+			/* Skip transparent pixels */
+			dst += trans;
+			width -= trans;
+			if (width <= 0) continue;
+			if (pixels > width) pixels = width;
+			width -= pixels;
+
+			switch (mode) {
+				case BM_COLOUR_REMAP:
+					for (uint x = 0; x < pixels; x++) {
+						if (bp->remap[*src] != 0) *dst = bp->remap[*src];
+						dst++; src++;
+					}
+					break;
+
+				case BM_TRANSPARENT:
+					for (uint x = 0; x < pixels; x++) {
+						*dst = bp->remap[*dst];
+						dst++; src++;
+					}
+					break;
+
+				default:
+					memcpy(dst, src, pixels);
+					dst += pixels; src += pixels;
+					break;
+			}
+		}
+	}
+}
+
+Sprite *Blitter_8bppOptimized::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+	Sprite *dest_sprite;
+	byte *temp_dst;
+	uint memory = 0;
+	uint index = 0;
+
+	/* Make memory for all zoom-levels */
+	memory += (int)ZOOM_LVL_END * sizeof(uint16);
+	for (int i = 0; i < (int)ZOOM_LVL_END; i++) {
+		memory += UnScaleByZoom(sprite->height, (ZoomLevel)i) * UnScaleByZoom(sprite->width, (ZoomLevel)i);
+		index += 2;
+	}
+
+	/* We have no idea how much memory we really need, so just guess something */
+	memory *= 5;
+	temp_dst = MallocT<byte>(memory);
+
+	/* Make the sprites per zoom-level */
+	for (int i = 0; i < (int)ZOOM_LVL_END; i++) {
+		/* Store the scaled image */
+		const SpriteLoader::CommonPixel *src;
+
+		/* Store the index table */
+		temp_dst[i * 2] = index & 0xFF;
+		temp_dst[i * 2 + 1] = (index >> 8) & 0xFF;
+
+		byte *dst = &temp_dst[index];
+
+		for (int y = 0; y < UnScaleByZoom(sprite->height, (ZoomLevel)i); y++) {
+			uint trans = 0;
+			uint pixels = 0;
+			uint last_color = 0;
+			uint count_index = 0;
+			uint rx = 0;
+			src = &sprite->data[ScaleByZoom(y, (ZoomLevel)i) * sprite->width];
+
+			for (int x = 0; x < UnScaleByZoom(sprite->width, (ZoomLevel)i); x++) {
+				uint color = 0;
+
+				/* Get the color keeping in mind the zoom-level */
+				for (int j = 0; j < ScaleByZoom(1, (ZoomLevel)i); j++) {
+					if (src->m != 0) color = src->m;
+					src++;
+					rx++;
+					/* Because of the scaling it might happen we read outside the buffer. Avoid that. */
+					if (rx == sprite->width) break;
+				}
+
+				if (last_color == 0 || color == 0) {
+					if (count_index != 0) {
+						/* Write how many non-transparent bytes we get */
+						temp_dst[count_index] = pixels;
+						pixels = 0;
+						count_index = 0;
+					}
+					/* As long as we find transparency bytes, keep counting */
+					if (color == 0) {
+						last_color = 0;
+						trans++;
+						continue;
+					}
+					/* No longer transparency, so write the amount of transparent bytes */
+					*dst = trans;
+					dst++; index++;
+					trans = 0;
+					/* Reserve a byte for the pixel counter */
+					count_index = index;
+					dst++; index++;
+				}
+				last_color = color;
+				pixels++;
+				*dst = color;
+				dst++; index++;
+			}
+
+			if (count_index != 0) temp_dst[count_index] = pixels;
+
+			/* Write line-ending */
+			*dst = 0; dst++; index++;
+			*dst = 0; dst++; index++;
+		}
+	}
+
+	/* Safety check, to make sure we guessed the size correctly */
+	assert(index < memory);
+
+	/* Allocate the exact amount of memory we need */
+	dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + index);
+
+	dest_sprite->height = sprite->height;
+	dest_sprite->width  = sprite->width;
+	dest_sprite->x_offs = sprite->x_offs;
+	dest_sprite->y_offs = sprite->y_offs;
+	memcpy(dest_sprite->data, temp_dst, index);
+
+	return dest_sprite;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_optimized.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file 8bpp_nice.hpp */
+
+#ifndef BLITTER_8BPP_OPTIMIZED_HPP
+#define BLITTER_8BPP_OPTIMIZED_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppOptimized : public Blitter {
+public:
+	uint8 GetScreenDepth() { return 8; }
+
+	void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+	Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppOptimized: public BlitterFactory<FBlitter_8bppOptimized> {
+public:
+	/* virtual */ const char *GetName() { return "8bpp-optimzed"; }
+
+	/* virtual */ const char *GetDescription() { return "8bpp Optimized Blitter (compression + all-ZoomLevel cache)"; }
+
+	/* virtual */ Blitter *CreateInstance() { return new Blitter_8bppOptimized(); }
+};
+
+#endif /* BLITTER_8BPP_OPTIMIZED_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_slow.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,63 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "8bpp_slow.hpp"
+
+static FBlitter_8bppSimple iFBlitter_8bppSimple;
+
+void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+	const byte *src, *src_line;
+	Pixel8 *dst, *dst_line;
+
+	/* Find where to start reading in the source sprite */
+	src_line = (const byte *)bp->sprite + (bp->skip_top * bp->sprite_width + bp->skip_left) * ScaleByZoom(1, zoom);
+	dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+	for (int y = 0; y < bp->height; y++) {
+		dst = dst_line;
+		dst_line += bp->pitch;
+
+		src = src_line;
+		src_line += bp->sprite_width * ScaleByZoom(1, zoom);
+
+		for (int x = 0; x < bp->width; x++) {
+			uint color = 0;
+
+			switch (mode) {
+				case BM_COLOUR_REMAP:
+					color = bp->remap[*src];
+					break;
+
+				case BM_TRANSPARENT:
+					if (*src != 0) color = bp->remap[*dst];
+					break;
+
+				default:
+					color = *src;
+					break;
+			}
+			if (color != 0) *dst = color;
+			dst++;
+			src += ScaleByZoom(1, zoom);
+		}
+	}
+}
+
+Sprite *Blitter_8bppSimple::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+	Sprite *dest_sprite;
+	dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width);;
+
+	dest_sprite->height = sprite->height;
+	dest_sprite->width  = sprite->width;
+	dest_sprite->x_offs = sprite->x_offs;
+	dest_sprite->y_offs = sprite->y_offs;
+
+	/* Copy over only the 'remap' channel, as that is what we care about in 8bpp */
+	for (int i = 0; i < sprite->height * sprite->width; i++) {
+		dest_sprite->data[i] = sprite->data[i].m;
+	}
+
+	return dest_sprite;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_slow.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file 8bpp.hpp */
+
+#ifndef BLITTER_8BPP_SIMPLE_HPP
+#define BLITTER_8BPP_SIMPLE_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppSimple : public Blitter {
+public:
+	uint8 GetScreenDepth() { return 8; }
+
+	void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+	Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppSimple: public BlitterFactory<FBlitter_8bppSimple> {
+public:
+	/* virtual */ const char *GetName() { return "8bpp-simple"; }
+
+	/* virtual */ const char *GetDescription() { return "8bpp Simple Blitter (relative slow, but never wrong)"; }
+
+	/* virtual */ Blitter *CreateInstance() { return new Blitter_8bppSimple(); }
+};
+
+#endif /* BLITTER_8BPP_SIMPLE_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/blitter.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,170 @@
+/* $Id$ */
+
+/** @file blitter.hpp */
+
+#ifndef BLITTER_HPP
+#define BLITTER_HPP
+
+#include "../spriteloader/spriteloader.hpp"
+#include "../spritecache.h"
+#include <string>
+#include <map>
+
+enum BlitterMode {
+	BM_NORMAL,
+	BM_COLOUR_REMAP,
+	BM_TRANSPARENT,
+};
+
+/**
+ * How all blitters should look like. Extend this class to make your own.
+ */
+class Blitter {
+public:
+	struct BlitterParams {
+		const void *sprite;      ///< Pointer to the sprite how ever the encoder stored it
+		const byte *remap;       ///< XXX -- Temporary storage for remap array
+
+		int skip_left, skip_top; ///< How much pixels of the source to skip on the left and top (based on zoom of dst)
+		int width, height;       ///< The width and height in pixels that needs to be drawn to dst
+		int sprite_width;        ///< Real width of the sprite
+		int sprite_height;       ///< Real height of the sprite
+		int left, top;           ///< The offset in the 'dst' in pixels to start drawing
+
+		void *dst;               ///< Destination buffer
+		int pitch;               ///< The pitch of the destination buffer
+	};
+
+	typedef void *AllocatorProc(size_t size);
+
+	/**
+	 * Get the screen depth this blitter works for.
+	 *  This is either: 8, 16, 24 or 32.
+	 */
+	virtual uint8 GetScreenDepth() = 0;
+
+	/**
+	 * Draw an image to the screen, given an amount of params defined above.
+	 */
+	virtual void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) = 0;
+
+	/**
+	 * Convert a sprite from the loader to our own format.
+	 */
+	virtual Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator) = 0;
+
+	virtual ~Blitter() { }
+};
+
+/**
+ * The base factory, keeping track of all blitters.
+ */
+class BlitterFactoryBase {
+private:
+	char *name;
+	typedef std::map<std::string, BlitterFactoryBase *> Blitters;
+
+	static Blitters &GetBlitters()
+	{
+		static Blitters &s_blitters = *new Blitters();
+		return s_blitters;
+	}
+
+	static Blitter **GetActiveBlitter()
+	{
+		static Blitter *s_blitter = NULL;
+		return &s_blitter;
+	}
+
+protected:
+	/**
+	 * Register a blitter internally, based on his name.
+	 * @param name the name of the blitter.
+	 * @note an assert() will be trigger if 2 blitters with the same name try to register.
+	 */
+	void RegisterBlitter(const char *name)
+	{
+		/* Don't register nameless Blitters */
+		if (name == NULL) return;
+
+		this->name = strdup(name);
+		std::pair<Blitters::iterator, bool> P = GetBlitters().insert(Blitters::value_type(name, this));
+		assert(P.second);
+	}
+
+public:
+	BlitterFactoryBase() :
+		name(NULL)
+	{}
+
+	virtual ~BlitterFactoryBase() { if (this->name != NULL) GetBlitters().erase(this->name); free(this->name); }
+
+	/**
+	 * Find the requested blitter and return his class.
+	 * @param name the blitter to select.
+	 * @post Sets the blitter so GetCurrentBlitter() returns it too.
+	 */
+	static Blitter *SelectBlitter(const char *name)
+	{
+		if (GetBlitters().size() == 0) return NULL;
+
+		Blitters::iterator it = GetBlitters().begin();
+		for (; it != GetBlitters().end(); it++) {
+			BlitterFactoryBase *b = (*it).second;
+			if (strcasecmp(name, b->name) == 0) {
+				Blitter *newb = b->CreateInstance();
+				*GetActiveBlitter() = newb;
+				return newb;
+			}
+		}
+		return NULL;
+	}
+
+	/**
+	 * Get the current active blitter (always set by calling SelectBlitter).
+	 */
+	static Blitter *GetCurrentBlitter()
+	{
+		return *GetActiveBlitter();
+	}
+
+
+	static char *GetBlittersInfo(char *p, const char *last)
+	{
+		p += snprintf(p, last - p, "List of blitters:\n");
+		Blitters::iterator it = GetBlitters().begin();
+		for (; it != GetBlitters().end(); it++) {
+			BlitterFactoryBase *b = (*it).second;
+			p += snprintf(p, last - p, "%18s: %s\n", b->name, b->GetDescription());
+		}
+		p += snprintf(p, last - p, "\n");
+
+		return p;
+	}
+
+	/**
+	 * Get a nice description of the blitter-class.
+	 */
+	virtual const char *GetDescription() = 0;
+
+	/**
+	 * Create an instance of this Blitter-class.
+	 */
+	virtual Blitter *CreateInstance() = 0;
+};
+
+/**
+ * A template factory, so ->GetName() works correctly. This because else some compiler will complain.
+ */
+template <class T>
+class BlitterFactory: public BlitterFactoryBase {
+public:
+	BlitterFactory() { this->RegisterBlitter(((T *)this)->GetName()); }
+
+	/**
+	 * Get the long, human readable, name for the Blitter-class.
+	 */
+	const char *GetName();
+};
+
+#endif /* BLITTER_HPP */
--- a/src/build_vehicle_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/build_vehicle_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -15,6 +15,7 @@
 #include "window.h"
 #include "gui.h"
 #include "vehicle.h"
+#include "articulated_vehicles.h"
 #include "gfx.h"
 #include "station.h"
 #include "command.h"
@@ -28,6 +29,7 @@
 #include "strings.h"
 #include "cargotype.h"
 #include "group.h"
+#include "road_map.h"
 
 
 enum BuildVehicleWidgets {
@@ -268,6 +270,19 @@
 	return _internal_sort_order ? -r : r;
 }
 
+static int CDECL TrainEngineCapacitySorter(const void *a, const void *b)
+{
+	int va = RailVehInfo(*(const EngineID*)a)->capacity;
+	int vb = RailVehInfo(*(const EngineID*)b)->capacity;
+	int r = va - vb;
+
+	if (r == 0) {
+		/* Use EngineID to sort instead since we want consistent sorting */
+		return EngineNumberSorter(a, b);
+	}
+	return _internal_sort_order ? -r : r;
+}
+
 static int CDECL TrainEnginesThenWagonsSorter(const void *a, const void *b)
 {
 	EngineID va = *(const EngineID*)a;
@@ -282,6 +297,32 @@
 	return _internal_sort_order ? -r : r;
 }
 
+static int CDECL RoadVehEngineCapacitySorter(const void *a, const void *b)
+{
+	int va = RoadVehInfo(*(const EngineID*)a)->capacity;
+	int vb = RoadVehInfo(*(const EngineID*)b)->capacity;
+	int r = va - vb;
+
+	if (r == 0) {
+		/* Use EngineID to sort instead since we want consistent sorting */
+		return EngineNumberSorter(a, b);
+	}
+	return _internal_sort_order ? -r : r;
+}
+
+static int CDECL ShipEngineCapacitySorter(const void *a, const void *b)
+{
+	int va = ShipVehInfo(*(const EngineID*)a)->capacity;
+	int vb = ShipVehInfo(*(const EngineID*)b)->capacity;
+	int r = va - vb;
+
+	if (r == 0) {
+		/* Use EngineID to sort instead since we want consistent sorting */
+		return EngineNumberSorter(a, b);
+	}
+	return _internal_sort_order ? -r : r;
+}
+
 /* Aircraft sorting functions */
 
 static int CDECL AircraftEngineCostSorter(const void *a, const void *b)
@@ -321,18 +362,25 @@
 
 static int CDECL AircraftEngineCargoSorter(const void *a, const void *b)
 {
-	const int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity;
-	const int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity;
-	const int r = va - vb;
+	int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity;
+	int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity;
+	int r = va - vb;
 
 	if (r == 0) {
-		/* Use EngineID to sort instead since we want consistent sorting */
-		return EngineNumberSorter(a, b);
+		/* The planes has the same passenger capacity. Check mail capacity instead */
+		va = AircraftVehInfo(*(const EngineID*)a)->mail_capacity;
+		vb = AircraftVehInfo(*(const EngineID*)b)->mail_capacity;
+		r = va - vb;
+
+		if (r == 0) {
+			/* Use EngineID to sort instead since we want consistent sorting */
+			return EngineNumberSorter(a, b);
+		}
 	}
 	return _internal_sort_order ? -r : r;
 }
 
-static EngList_SortTypeFunction * const _sorter[][9] = {{
+static EngList_SortTypeFunction * const _sorter[][10] = {{
 	/* Trains */
 	&TrainEngineNumberSorter,
 	&TrainEngineCostSorter,
@@ -343,18 +391,21 @@
 	&TrainEngineRunningCostSorter,
 	&TrainEnginePowerVsRunningCostSorter,
 	&EngineReliabilitySorter,
+	&TrainEngineCapacitySorter,
 }, {
 	/* Road vehicles */
 	&EngineNumberSorter,
 	&EngineIntroDateSorter,
 	&EngineNameSorter,
 	&EngineReliabilitySorter,
+	&RoadVehEngineCapacitySorter,
 }, {
 	/* Ships */
 	&EngineNumberSorter,
 	&EngineIntroDateSorter,
 	&EngineNameSorter,
 	&EngineReliabilitySorter,
+	&ShipEngineCapacitySorter,
 }, {
 	/* Aircraft */
 	&EngineNumberSorter,
@@ -367,7 +418,7 @@
 	&AircraftEngineCargoSorter,
 }};
 
-static const StringID _sort_listing[][10] = {{
+static const StringID _sort_listing[][11] = {{
 	/* Trains */
 	STR_ENGINE_SORT_ENGINE_ID,
 	STR_ENGINE_SORT_COST,
@@ -378,6 +429,7 @@
 	STR_ENGINE_SORT_RUNNING_COST,
 	STR_ENGINE_SORT_POWER_VS_RUNNING_COST,
 	STR_SORT_BY_RELIABILITY,
+	STR_ENGINE_SORT_CARGO_CAPACITY,
 	INVALID_STRING_ID
 }, {
 	/* Road vehicles */
@@ -385,6 +437,7 @@
 	STR_ENGINE_SORT_INTRO_DATE,
 	STR_SORT_BY_DROPDOWN_NAME,
 	STR_SORT_BY_RELIABILITY,
+	STR_ENGINE_SORT_CARGO_CAPACITY,
 	INVALID_STRING_ID
 }, {
 	/* Ships */
@@ -392,6 +445,7 @@
 	STR_ENGINE_SORT_INTRO_DATE,
 	STR_SORT_BY_DROPDOWN_NAME,
 	STR_SORT_BY_RELIABILITY,
+	STR_ENGINE_SORT_CARGO_CAPACITY,
 	INVALID_STRING_ID
 }, {
 	/* Aircraft */
@@ -706,6 +760,7 @@
 
 	for (eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) {
 		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);
 
 		if (eid == bv->sel_engine) sel_id = eid;
@@ -1059,6 +1114,7 @@
 			ResizeWindow(w, 0, 16);
 			break;
 		case VEH_ROAD:
+			WP(w, buildvehicle_d).filter.roadtypes = (tile == 0) ? ROADTYPES_ALL : GetRoadTypes(tile);
 			ResizeWindow(w, 0, 16);
 		case VEH_SHIP:
 			break;
--- a/src/callback_table.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/callback_table.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -33,6 +33,7 @@
 CommandCallback CcPlaceSign;
 CommandCallback CcTerraform;
 CommandCallback CcBuildTown;
+CommandCallback CcGiveMoney;
 
 /* rail_gui.cpp */
 CommandCallback CcPlaySound1E;
@@ -87,7 +88,8 @@
 	/* 0x17 */ CcCloneShip,
 	/* 0x18 */ CcCloneTrain,
 	/* 0x19 */ CcAI,
-	/* 0x1A */ CcCloneVehicle
+	/* 0x1A */ CcCloneVehicle,
+	/* 0x1B */ CcGiveMoney,
 };
 
 const int _callback_table_count = lengthof(_callback_table);
--- a/src/clear_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/clear_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -292,24 +292,24 @@
 		for (count = ts.tile_table_count; count != 0; count--, ti++) {
 			TileIndex tile = *ti;
 
-			if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) {
+			uint z_min = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
+			uint z_max = z_min;
+			uint t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
+			z_min = min(z_min, t);
+			z_max = max(z_max, t);
+			t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
+			z_min = min(z_min, t);
+			z_max = max(z_max, t);
+			t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
+			z_min = min(z_min, t);
+			z_max = max(z_max, t);
+
+			if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) &&
+					GetBridgeHeight(GetSouthernBridgeEnd(tile)) <= z_max * TILE_HEIGHT) {
 				return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 			}
-
-			if (direction == -1) {
-				uint z, t;
-
-				z = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
-				t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
-				if (t <= z) z = t;
-				t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
-				if (t <= z) z = t;
-				t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
-				if (t <= z) z = t;
-
-				if (IsTunnelInWay(tile, z * TILE_HEIGHT)) {
-					return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
-				}
+			if (direction == -1 && IsTunnelInWay(tile, z_min * TILE_HEIGHT)) {
+				return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
 			}
 		}
 	}
@@ -765,7 +765,7 @@
 	/* not used */
 }
 
-static uint32 GetTileTrackStatus_Clear(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	return 0;
 }
--- a/src/command.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/command.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -79,7 +79,7 @@
 DEF_COMMAND(CmdReverseTrainDirection);
 
 DEF_COMMAND(CmdModifyOrder);
-DEF_COMMAND(CmdSkipOrder);
+DEF_COMMAND(CmdSkipToOrder);
 DEF_COMMAND(CmdDeleteOrder);
 DEF_COMMAND(CmdInsertOrder);
 DEF_COMMAND(CmdChangeServiceInt);
@@ -176,6 +176,8 @@
 DEF_COMMAND(CmdRemoveAllVehiclesGroup);
 DEF_COMMAND(CmdSetGroupReplaceProtection);
 
+DEF_COMMAND(CmdMoveOrder);
+
 /* The master command table */
 static const Command _command_proc_table[] = {
 	{CmdBuildRailroadTrack,                  0}, /*   0 */
@@ -222,7 +224,7 @@
 	{CmdReverseTrainDirection,               0}, /*  41 */
 
 	{CmdModifyOrder,                         0}, /*  42 */
-	{CmdSkipOrder,                           0}, /*  43 */
+	{CmdSkipToOrder,                         0}, /*  43 */
 	{CmdDeleteOrder,                         0}, /*  44 */
 	{CmdInsertOrder,                         0}, /*  45 */
 
@@ -328,6 +330,7 @@
 	{CmdAddSharedVehicleGroup,               0}, /* 124 */
 	{CmdRemoveAllVehiclesGroup,              0}, /* 125 */
 	{CmdSetGroupReplaceProtection,           0}, /* 126 */
+	{CmdMoveOrder,                           0}, /* 127 */
 };
 
 /* This function range-checks a cmd, and checks if the cmd is not NULL */
--- a/src/command.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/command.h	Wed Jun 13 12:05:56 2007 +0000
@@ -57,7 +57,7 @@
 	CMD_REVERSE_TRAIN_DIRECTION      =  41,
 
 	CMD_MODIFY_ORDER                 =  42,
-	CMD_SKIP_ORDER                   =  43,
+	CMD_SKIP_TO_ORDER                =  43,
 	CMD_DELETE_ORDER                 =  44,
 	CMD_INSERT_ORDER                 =  45,
 
@@ -143,6 +143,7 @@
 	CMD_MASS_START_STOP              = 117,
 	CMD_DEPOT_SELL_ALL_VEHICLES      = 118,
 	CMD_DEPOT_MASS_AUTOREPLACE       = 119,
+
 	CMD_CREATE_GROUP                 = 120,
 	CMD_DELETE_GROUP                 = 121,
 	CMD_RENAME_GROUP                 = 122,
@@ -150,6 +151,8 @@
 	CMD_ADD_SHARED_VEHICLE_GROUP     = 124,
 	CMD_REMOVE_ALL_VEHICLES_GROUP    = 125,
 	CMD_SET_GROUP_REPLACE_PROTECTION = 126,
+
+	CMD_MOVE_ORDER                   = 127,
 };
 
 enum {
--- a/src/debug.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/debug.h	Wed Jun 13 12:05:56 2007 +0000
@@ -97,7 +97,27 @@
 	#define OTTD_PRINTF64 "ll"
 #endif
 
-/* Used for profiling */
+/* Used for profiling
+ *
+ * Usage:
+ * TIC();
+ *   --Do your code--
+ * TOC("A name", 1);
+ *
+ * When you run the TIC() / TOC() multiple times, you can increase the '1'
+ *  to only display average stats every N values. Some things to know:
+ *
+ * for (int i = 0; i < 5; i++) {
+ *   TIC();
+ *     --Do yuor code--
+ *   TOC("A name", 5);
+ * }
+ *
+ * Is the correct usage for multiple TIC() / TOC() calls.
+ *
+ * TIC() / TOC() creates it's own block, so make sure not the mangle
+ *  it with an other block.
+ **/
 #define TIC() {\
 	extern uint64 _rdtsc();\
 	uint64 _xxx_ = _rdtsc();\
--- a/src/depot_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/depot_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -184,7 +184,7 @@
 			DrawStringRightAligned(w->widget[DEPOT_WIDGET_MATRIX].right - 1, y + 4, STR_TINY_BLACK, 0); // Draw the counter
 			break;
 
-		case VEH_ROAD:     DrawRoadVehImage( v, x + 24, sprite_y, WP(w, depot_d).sel); break;
+		case VEH_ROAD:     DrawRoadVehImage( v, x + 24, sprite_y, 1, WP(w, depot_d).sel); break;
 		case VEH_SHIP:     DrawShipImage(    v, x + 19, sprite_y - 1, WP(w, depot_d).sel); break;
 		case VEH_AIRCRAFT: {
 			const Sprite *spr = GetSprite(GetAircraftImage(v, DIR_W));
@@ -488,10 +488,10 @@
 
 	if (v == NULL) return;
 
-	if (v->type == VEH_TRAIN && !IsFrontEngine(v)) {
+	if (v->HasFront() && !v->IsPrimaryVehicle()) {
 		v = GetFirstVehicleInChain(v);
 		/* Do nothing when clicking on a train in depot with no loc attached */
-		if (!IsFrontEngine(v)) return;
+		if (v->type == VEH_TRAIN && !IsFrontEngine(v)) return;
 	}
 
 	switch (v->type) {
--- a/src/disaster_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/disaster_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -713,7 +713,7 @@
 
 	tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
 	if (IsValidTile(tile)) {
-		TrackdirBits r = (TrackdirBits)GetTileTrackStatus(tile, TRANSPORT_WATER);
+		TrackdirBits r = (TrackdirBits)GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
 
 		if (TrackdirBitsToTrackBits(r) == TRACK_BIT_ALL && !CHANCE16(1, 90)) {
 			GetNewVehiclePosResult gp = GetNewVehiclePos(v);
--- a/src/dock_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/dock_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -38,7 +38,7 @@
 
 static void PlaceDocks_Dock(TileIndex tile)
 {
-	DoCommandP(tile, 0, 0, CcBuildDocks, CMD_BUILD_DOCK | CMD_AUTO | CMD_MSG(STR_9802_CAN_T_BUILD_DOCK_HERE));
+	DoCommandP(tile, _ctrl_pressed, 0, CcBuildDocks, CMD_BUILD_DOCK | CMD_AUTO | CMD_MSG(STR_9802_CAN_T_BUILD_DOCK_HERE));
 }
 
 static void PlaceDocks_Depot(TileIndex tile)
@@ -53,12 +53,12 @@
 
 static void PlaceDocks_DemolishArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DemolishArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
 }
 
 static void PlaceDocks_BuildCanal(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_OR_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_CREATE_WATER);
 }
 
 static void PlaceDocks_BuildLock(TileIndex tile)
@@ -153,11 +153,11 @@
 
 	case WE_PLACE_MOUSEUP:
 		if (e->we.place.pt.x != -1) {
-			switch (e->we.place.select_method) {
-				case VPM_X_AND_Y:
+			switch (e->we.place.select_proc) {
+				case DDSP_DEMOLISH_AREA:
 					GUIPlaceProcDragXY(e);
 					break;
-				case VPM_X_OR_Y:
+				case DDSP_CREATE_WATER:
 					DoCommandP(e->we.place.tile, e->we.place.starttile, 0, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
 					break;
 				default: break;
@@ -235,14 +235,16 @@
 	case WE_CREATE: LowerWindowWidget(w, _station_show_coverage + 3); break;
 
 	case WE_PAINT: {
-		int rad;
+		int rad = (_patches.modified_catchment) ? CA_DOCK : 4;
 
 		if (WP(w, def_d).close) return;
 		DrawWindowWidgets(w);
 
-		rad = (_patches.modified_catchment) ? CA_DOCK : 4;
-
-		if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
+		if (_station_show_coverage) {
+			SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
+		} else {
+			SetTileSelectSize(1, 1);
+		}
 
 		DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
 		break;
--- a/src/dummy_land.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/dummy_land.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -63,7 +63,7 @@
 	/* not used */
 }
 
-static uint32 GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	return 0;
 }
--- a/src/economy.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/economy.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -30,6 +30,7 @@
 #include "vehicle_gui.h"
 #include "ai/ai.h"
 #include "train.h"
+#include "roadveh.h"
 #include "aircraft.h"
 #include "newgrf_engine.h"
 #include "newgrf_sound.h"
@@ -117,10 +118,7 @@
 
 		FOR_ALL_VEHICLES(v) {
 			if (v->owner != owner) continue;
-			if ((v->type == VEH_TRAIN && IsFrontEngine(v)) ||
-					 v->type == VEH_ROAD ||
-					(v->type == VEH_AIRCRAFT && IsNormalAircraft(v)) ||
-					 v->type == VEH_SHIP) {
+			if (IsPlayerBuildableVehicleType(v->type) && v->IsPrimaryVehicle()) {
 				num++;
 				if (v->age > 730) {
 					/* Find the vehicle with the lowest amount of profit */
@@ -343,7 +341,7 @@
 			if (v->owner == new_player) {
 				switch (v->type) {
 					case VEH_TRAIN:    if (IsFrontEngine(v)) num_train++; break;
-					case VEH_ROAD:     num_road++; break;
+					case VEH_ROAD:     if (IsRoadVehFront(v)) num_road++; break;
 					case VEH_SHIP:     num_ship++; break;
 					case VEH_AIRCRAFT: if (IsNormalAircraft(v)) num_aircraft++; break;
 					default: break;
@@ -364,7 +362,7 @@
 					if (IsEngineCountable(v)) GetPlayer(new_player)->num_engines[v->engine_type]++;
 					switch (v->type) {
 						case VEH_TRAIN:    if (IsFrontEngine(v)) v->unitnumber = ++num_train; break;
-						case VEH_ROAD:     v->unitnumber = ++num_road; break;
+						case VEH_ROAD:     if (IsRoadVehFront(v)) v->unitnumber = ++num_road; break;
 						case VEH_SHIP:     v->unitnumber = ++num_ship; break;
 						case VEH_AIRCRAFT: if (IsNormalAircraft(v)) v->unitnumber = ++num_aircraft; break;
 						default: NOT_REACHED();
@@ -820,12 +818,12 @@
 	/* Randomize cargo type */
 	if (HASBIT(Random(), 0) && ind->produced_cargo[1] != CT_INVALID) {
 		cargo = ind->produced_cargo[1];
-		trans = i->pct_transported[1];
-		total = i->total_production[1];
+		trans = i->last_month_pct_transported[1];
+		total = i->last_month_production[1];
 	} else {
 		cargo = ind->produced_cargo[0];
-		trans = i->pct_transported[0];
-		total = i->total_production[0];
+		trans = i->last_month_pct_transported[0];
+		total = i->last_month_production[0];
 	}
 
 	/* Quit if no production in this industry
@@ -1319,6 +1317,13 @@
 		return;
 	}
 
+	if (v->type == VEH_TRAIN && !IsTileType(v->tile, MP_STATION)) {
+		/* The train reversed in the station. Take the "easy" way
+		 * out and let the train just leave as it always did. */
+		SETBIT(v->vehicle_flags, VF_LOADING_FINISHED);
+		return;
+	}
+
 	int unloading_time = 0;
 	Vehicle *u = v;
 	int result = 0;
@@ -1430,7 +1435,7 @@
 
 			/* Skip loading this vehicle if another train/vehicle is already handling
 			 * the same cargo type at this station */
-			if (_patches.improved_load && cargo_left[v->cargo_type] < 0) {
+			if (_patches.improved_load && cargo_left[v->cargo_type] <= 0) {
 				SETBIT(cargo_not_full, v->cargo_type);
 				continue;
 			}
@@ -1548,7 +1553,7 @@
 		InvalidateWindow(v->GetVehicleListWindowClass(), v->owner);
 		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 
-		st->MarkTilesDirty();
+		st->MarkTilesDirty(true);
 		v->MarkDirty();
 
 		if (result & 2) InvalidateWindow(WC_STATION_VIEW, last_visited);
--- a/src/elrail.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/elrail.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -249,7 +249,7 @@
 			Track bridgetrack = GetBridgeAxis(ti->tile) == AXIS_X ? TRACK_X : TRACK_Y;
 			uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
 
-			if ((height <= TilePixelHeight(ti->tile) + TILE_HEIGHT) &&
+			if ((height <= GetTileMaxZ(ti->tile) + TILE_HEIGHT) &&
 					(i == PCPpositions[bridgetrack][0] || i == PCPpositions[bridgetrack][1])) {
 				SETBIT(OverridePCP, i);
 			}
@@ -289,7 +289,7 @@
 	if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !HASBIT(_transparent_opt, TO_BUILDINGS)) {
 		uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
 
-		if (height <= TilePixelHeight(ti->tile) + TILE_HEIGHT) return;
+		if (height <= GetTileMaxZ(ti->tile) + TILE_HEIGHT) return;
 	}
 
 	/* Drawing of pylons is finished, now draw the wires */
--- a/src/engine.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/engine.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -178,14 +178,16 @@
 static void AcceptEnginePreview(EngineID eid, PlayerID player)
 {
 	Engine *e = GetEngine(eid);
+	Player *p = GetPlayer(player);
 
 	SETBIT(e->player_avail, player);
 	if (e->type == VEH_TRAIN) {
 		const RailVehicleInfo *rvi = RailVehInfo(eid);
-		Player *p = GetPlayer(player);
 
 		assert(rvi->railtype < RAILTYPE_END);
 		SETBIT(p->avail_railtypes, rvi->railtype);
+	} else if (e->type == VEH_ROAD) {
+		SETBIT(p->avail_roadtypes, HASBIT(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
 	}
 
 	e->preview_player = INVALID_PLAYER;
@@ -330,6 +332,12 @@
 			if (p->is_active) SETBIT(p->avail_railtypes, railtype);
 		}
 	}
+	if ((index - NUM_TRAIN_ENGINES) < NUM_ROAD_ENGINES) {
+		/* maybe make another road type available */
+		FOR_ALL_PLAYERS(p) {
+			if (p->is_active) SETBIT(p->avail_roadtypes, HASBIT(EngInfo(index)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
+		}
+	}
 	AddNewsItem(index, NEWS_FLAGS(NM_CALLBACK, 0, NT_NEW_VEHICLES, DNC_VEHICLEAVAIL), 0, 0);
 }
 
--- a/src/engine.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/engine.h	Wed Jun 13 12:05:56 2007 +0000
@@ -127,8 +127,8 @@
  * EngineInfo.misc_flags is a bitmask, with the following values
  */
 enum {
-	EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves (unsupported)
-	EF_ROAD_TRAM  = 0, ///< Road vehicle is a tram/light rail vehicle (unsup)
+	EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves
+	EF_ROAD_TRAM  = 0, ///< Road vehicle is a tram/light rail vehicle
 	EF_USES_2CC   = 1, ///< Vehicle uses two company colours
 	EF_RAIL_IS_MU = 2, ///< Rail vehicle is a multiple-unit (DMU/EMU)
 };
--- a/src/fileio.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/fileio.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -206,10 +206,10 @@
 	FILE *f;
 	char buf[MAX_PATH];
 
-	if (strrchr(filename, PATHSEPCHAR) == NULL) {
+	if (filename[0] == PATHSEPCHAR || filename[1] == ':') {
+		ttd_strlcpy(buf, filename, lengthof(buf));
+	} else {
 		snprintf(buf, lengthof(buf), "%s%s", _paths.data_dir, filename);
-	} else {
-		ttd_strlcpy(buf, filename, lengthof(buf));
 	}
 
 	f = fopen(buf, "rb");
@@ -264,6 +264,31 @@
 	}
 }
 
+/**
+ * Allocates and files a variable with the full path
+ * based on the given directory.
+ * @param dir the directory to base the path on
+ * @return the malloced full path
+ */
+char *BuildWithFullPath(const char *dir)
+{
+	char *dest = MallocT<char>(MAX_PATH);
+	ttd_strlcpy(dest, dir, MAX_PATH);
+
+	/* Check if absolute or relative path */
+	const char *s = strchr(dest, PATHSEPCHAR);
+
+	/* Add absolute path */
+	if (s == NULL || dest != s) {
+		getcwd(dest, MAX_PATH);
+		AppendPathSeparator(dest, MAX_PATH);
+		ttd_strlcat(dest, dir, MAX_PATH);
+	}
+	AppendPathSeparator(dest, MAX_PATH);
+
+	return dest;
+}
+
 #if defined(WIN32) || defined(WINCE)
 /**
  * Determine the base (personal dir and game data dir) paths
@@ -307,11 +332,9 @@
 	/* Change the working directory to enable doubleclicking in UIs */
 	ChangeWorkingDirectory(exe);
 
-	_paths.game_data_dir = MallocT<char>(MAX_PATH);
-	ttd_strlcpy(_paths.game_data_dir, GAME_DATA_DIR, MAX_PATH);
+	_paths.game_data_dir = BuildWithFullPath(GAME_DATA_DIR);
 #if defined(SECOND_DATA_DIR)
-	_paths.second_data_dir = MallocT<char>(MAX_PATH);
-	ttd_strlcpy(_paths.second_data_dir, SECOND_DATA_DIR, MAX_PATH);
+	_paths.second_data_dir = BuildWithFullPath(SECOND_DATA_DIR);
 #else
 	_paths.second_data_dir = NULL;
 #endif
@@ -325,23 +348,10 @@
 	}
 
 	_paths.personal_dir = str_fmt("%s" PATHSEP "%s", homedir, PERSONAL_DIR);
+	AppendPathSeparator(_paths.personal_dir, MAX_PATH);
 #else /* not defined(USE_HOMEDIR) */
-	_paths.personal_dir = MallocT<char>(MAX_PATH);
-	ttd_strlcpy(_paths.personal_dir, PERSONAL_DIR, MAX_PATH);
-
-	/* check if absolute or relative path */
-	const char *s = strchr(_paths.personal_dir, PATHSEPCHAR);
-
-	/* add absolute path */
-	if (s == NULL || _paths.personal_dir != s) {
-		getcwd(_paths.personal_dir, MAX_PATH);
-		AppendPathSeparator(_paths.personal_dir, MAX_PATH);
-		ttd_strlcat(_paths.personal_dir, PERSONAL_DIR, MAX_PATH);
-	}
+	_paths.personal_dir = BuildWithFullPath(PERSONAL_DIR);
 #endif /* defined(USE_HOMEDIR) */
-
-	AppendPathSeparator(_paths.personal_dir,  MAX_PATH);
-	AppendPathSeparator(_paths.game_data_dir, MAX_PATH);
 }
 #endif /* defined(WIN32) || defined(WINCE) */
 
@@ -359,17 +369,14 @@
 {
 	DetermineBasePaths(exe);
 
-	_paths.save_dir      = str_fmt("%ssave", _paths.personal_dir);
-	_paths.autosave_dir  = str_fmt("%s" PATHSEP "autosave", _paths.save_dir);
-	_paths.scenario_dir  = str_fmt("%sscenario", _paths.personal_dir);
-	_paths.heightmap_dir = str_fmt("%s" PATHSEP "heightmap", _paths.scenario_dir);
+	_paths.save_dir      = str_fmt("%ssave" PATHSEP, _paths.personal_dir);
+	_paths.autosave_dir  = str_fmt("%s" PATHSEP "autosave" PATHSEP, _paths.save_dir);
+	_paths.scenario_dir  = str_fmt("%sscenario" PATHSEP, _paths.personal_dir);
+	_paths.heightmap_dir = str_fmt("%s" PATHSEP "heightmap" PATHSEP, _paths.scenario_dir);
 	_paths.gm_dir        = str_fmt("%sgm" PATHSEP, _paths.game_data_dir);
 	_paths.data_dir      = str_fmt("%sdata" PATHSEP, _paths.game_data_dir);
 #if defined(CUSTOM_LANG_DIR)
-	/* Sets the search path for lng files to the custom one */
-	_paths.lang_dir = MallocT<char>(MAX_PATH);
-	ttd_strlcpy(_paths.lang_dir, CUSTOM_LANG_DIR, MAX_PATH);
-	AppendPathSeparator(_paths.lang_dir, MAX_PATH);
+	_paths.lang_dir = BuildWithFullPath(CUSTOM_LANG_DIR);
 #else
 	_paths.lang_dir = str_fmt("%slang" PATHSEP, _paths.game_data_dir);
 #endif
--- a/src/fios.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/fios.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -114,10 +114,12 @@
 
 	case FIOS_TYPE_PARENT:
 		/* Check for possible NULL ptr (not required for UNIXes, but AmigaOS-alikes) */
-		if ((s = strrchr(path, PATHSEPCHAR)) != NULL) {
-			s[1] = '\0'; // go up a directory
-			if (!FiosIsRoot(path)) s[0] = '\0';
+		s = strrchr(path, PATHSEPCHAR);
+		if (s != NULL && s != path) {
+			s[0] = '\0'; // Remove last path separator character, so we can go up one level.
 		}
+		s = strrchr(path, PATHSEPCHAR);
+		if (s != NULL) s[1] = '\0'; // go up a directory
 #if defined(__MORPHOS__) || defined(__AMIGAOS__)
 		/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */
 		else if ((s = strrchr(path, ':')) != NULL) s[1] = '\0';
@@ -125,14 +127,12 @@
 		break;
 
 	case FIOS_TYPE_DIR:
-		if (!FiosIsRoot(path)) strcat(path, PATHSEP);
 		strcat(path, item->name);
+		strcat(path, PATHSEP);
 		break;
 
 	case FIOS_TYPE_DIRECT:
-		sprintf(path, "%s" PATHSEP, item->name);
-		s = strrchr(path, PATHSEPCHAR);
-		if (s != NULL && s[1] == '\0') s[0] = '\0'; // strip trailing slash
+		sprintf(path, "%s", item->name);
 		break;
 
 	case FIOS_TYPE_FILE:
@@ -150,7 +150,7 @@
 			snprintf(str_buffr, lengthof(str_buffr), "%s:%s", path, item->name);
 		} else // XXX - only next line!
 #endif
-		snprintf(str_buffr, lengthof(str_buffr), "%s" PATHSEP "%s", path, item->name);
+		snprintf(str_buffr, lengthof(str_buffr), "%s%s", path, item->name);
 
 		return str_buffr;
 	}
--- a/src/fontcache.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/fontcache.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -14,6 +14,8 @@
 #include "string.h"
 #include "fontcache.h"
 #include "helpers.hpp"
+#include "spriteloader/spriteloader.hpp"
+#include "blitter/blitter.hpp"
 
 #ifdef WITH_FREETYPE
 
@@ -361,6 +363,11 @@
 	_glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)].width  = glyph->width;
 }
 
+void *AllocateFont(size_t size)
+{
+	return malloc(size);
+}
+
 
 const Sprite *GetGlyph(FontSize size, WChar key)
 {
@@ -368,7 +375,7 @@
 	FT_GlyphSlot slot;
 	GlyphEntry new_glyph;
 	GlyphEntry *glyph;
-	Sprite *sprite;
+	SpriteLoader::Sprite sprite;
 	int width;
 	int height;
 	int x;
@@ -398,21 +405,20 @@
 	height = max(1, slot->bitmap.rows  + (size == FS_NORMAL));
 
 	/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
-	sprite = (Sprite*)calloc(width * height + 8, 1);
-	sprite->info   = 1;
-	sprite->width  = width;
-	sprite->height = height;
-	sprite->x_offs = slot->bitmap_left;
+	sprite.data = CallocT<SpriteLoader::CommonPixel>(width * height);
+	sprite.width = width;
+	sprite.height = height;
+	sprite.x_offs = slot->bitmap_left;
 	// XXX 2 should be determined somehow... it's right for the normal face
 	y_adj = (size == FS_NORMAL) ? 2 : 0;
-	sprite->y_offs = GetCharacterHeight(size) - slot->bitmap_top - y_adj;
+	sprite.y_offs = GetCharacterHeight(size) - slot->bitmap_top - y_adj;
 
 	/* Draw shadow for medium size */
 	if (size == FS_NORMAL) {
 		for (y = 0; y < slot->bitmap.rows; y++) {
 			for (x = 0; x < slot->bitmap.width; x++) {
 				if (HASBIT(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) {
-					sprite->data[1 + x + (1 + y) * sprite->width] = SHADOW_COLOUR;
+					sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR;
 				}
 			}
 		}
@@ -421,17 +427,18 @@
 	for (y = 0; y < slot->bitmap.rows; y++) {
 		for (x = 0; x < slot->bitmap.width; x++) {
 			if (HASBIT(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) {
-				sprite->data[x + y * sprite->width] = FACE_COLOUR;
+				sprite.data[x + y * sprite.width].m = FACE_COLOUR;
 			}
 		}
 	}
 
-	new_glyph.sprite = sprite;
+	new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
+	free(sprite.data);
 	new_glyph.width  = (slot->advance.x >> 6) + (size != FS_NORMAL);
 
 	SetGlyphPtr(size, key, &new_glyph);
 
-	return sprite;
+	return new_glyph.sprite;
 }
 
 
--- a/src/functions.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/functions.h	Wed Jun 13 12:05:56 2007 +0000
@@ -131,10 +131,10 @@
 
 void ResetObjectToPlace();
 
-bool ScrollWindowTo(int x, int y, Window * w);
+bool ScrollWindowTo(int x, int y, Window * w, bool instant = false);
 
-bool ScrollMainWindowToTile(TileIndex tile);
-bool ScrollMainWindowTo(int x, int y);
+bool ScrollMainWindowToTile(TileIndex tile, bool instant = false);
+bool ScrollMainWindowTo(int x, int y, bool instant = false);
 void DrawSprite(SpriteID img, SpriteID pal, int x, int y);
 bool EnsureNoVehicle(TileIndex tile);
 bool EnsureNoVehicleOnGround(TileIndex tile);
--- a/src/genworld.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/genworld.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -290,6 +290,6 @@
 
 	/* Centre the view on the map */
 	if (FindWindowById(WC_MAIN_WINDOW, 0) != NULL) {
-		ScrollMainWindowToTile(TileXY(MapSizeX() / 2, MapSizeY() / 2));
+		ScrollMainWindowToTile(TileXY(MapSizeX() / 2, MapSizeY() / 2), true);
 	}
 }
--- a/src/gfx.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/gfx.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -19,6 +19,7 @@
 #include "genworld.h"
 #include "debug.h"
 #include "zoom.hpp"
+#include "blitter/blitter.hpp"
 
 #ifdef _DEBUG
 bool _dbg_screen_rect;
@@ -45,12 +46,6 @@
 Colour _cur_palette[256];
 byte _stringwidth_table[FS_END][224];
 
-enum BlitterMode {
-	BM_NORMAL,
-	BM_COLOUR_REMAP,
-	BM_TRANSPARENT,
-};
-
 static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode);
 
 FontSize _cur_fontsize;
@@ -728,278 +723,72 @@
 	}
 }
 
-struct BlitterParams {
-	int start_x, start_y;
-	const byte *sprite;
-	Pixel *dst;
-	BlitterMode mode;
-	int width, height;
-	int width_org;
-	int pitch;
-};
-
-static void GfxBlitZoomUncomp(BlitterParams *bp, ZoomLevel zoom)
-{
-	const byte *src = bp->sprite;
-	Pixel *dst = bp->dst;
-	int height = bp->height;
-	int width = bp->width;
-	int i;
-
-	assert(height > 0);
-	assert(width > 0);
-
-	height = UnScaleByZoom(height, zoom);
-
-	switch (bp->mode) {
-		case BM_COLOUR_REMAP: {
-			const byte *ctab = _color_remap_ptr;
-
-			for (; height != 0; height--) {
-				for (i = 0; i != UnScaleByZoom(width, zoom); i++) {
-					byte b = ctab[src[ScaleByZoom(i, zoom)]];
-
-					if (b != 0) dst[i] = b;
-				}
-				src += ScaleByZoom(bp->width_org, zoom);
-				dst += bp->pitch;
-			}
-			break;
-		}
-
-		case BM_TRANSPARENT: {
-			const byte *ctab = _color_remap_ptr;
-
-			for (; height != 0; height--) {
-				for (i = 0; i != UnScaleByZoom(width, zoom); i++)
-					if (src[ScaleByZoom(i, zoom)] != 0) dst[i] = ctab[dst[i]];
-				src += ScaleByZoom(bp->width_org, zoom);
-				dst += bp->pitch;
-			}
-			break;
-		}
-
-		default:
-			for (; height != 0; height--) {
-				for (i = 0; i != UnScaleByZoom(width, zoom); i++)
-					if (src[ScaleByZoom(i, zoom)] != 0) dst[i] = src[ScaleByZoom(i, zoom)];
-				src += ScaleByZoom(bp->width_org, zoom);
-				dst += bp->pitch;
-			}
-			break;
-	}
-}
-
-static void GfxBlitTileZoom(BlitterParams *bp, ZoomLevel zoom)
-{
-	const byte *src_o = bp->sprite;
-	const byte *src;
-	int num, skip;
-	byte done;
-	Pixel *dst;
-	const byte *ctab;
-
-	src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
-
-	for (;;) {
-		do {
-			done = src_o[0];
-			num = done & 0x7F;
-			skip = src_o[1];
-			src = src_o + 2;
-			src_o += num + 2;
-
-			dst = bp->dst;
-
-			if (zoom >= ZOOM_LVL_OUT_2X && (skip & 1)) {
-				skip += 1;
-				src += 1;
-				num -= 1;
-				if (num <= 0) continue;
-			}
-
-			if (zoom >= ZOOM_LVL_OUT_4X && (skip & 2)) {
-				skip += 2;
-				src += 2;
-				num -= 2;
-				if (num <= 0) continue;
-			}
-
-			if (zoom >= ZOOM_LVL_OUT_8X && (skip & 4)) {
-				skip += 4;
-				src += 4;
-				num -= 4;
-				if (num <= 0) continue;
-			}
-
-			if (zoom >= ZOOM_LVL_OUT_16X && (skip & 8)) {
-				skip += 8;
-				src += 8;
-				num -= 8;
-				if (num <= 0) continue;
-			}
-
-			if ( (skip -= bp->start_x) > 0) {
-				dst += UnScaleByZoom(skip, zoom);
-			} else {
-				src -= skip;
-				num += skip;
-				if (num <= 0) continue;
-				skip = 0;
-			}
-
-			skip = skip + num - bp->width;
-			if (skip > 0) {
-				num -= skip;
-				if (num <= 0) continue;
-			}
-
-			num = UnScaleByZoom(num + ScaleByZoom(1, zoom) - 1, zoom);
-
-			switch (bp->mode) {
-				case BM_COLOUR_REMAP:
-					ctab = _color_remap_ptr;
-					for (; num != 0; num--) {
-							*dst = ctab[*src];
-							dst++;
-							src += ScaleByZoom(1, zoom);
-					}
-					break;
-
-				case BM_TRANSPARENT:
-					ctab = _color_remap_ptr;
-					for (; num != 0; num--) {
-							*dst = ctab[*dst];
-							dst++;
-					}
-					break;
-
-				default:
-					for (; num != 0; num--) {
-							*dst = *src;
-							dst++;
-							src += ScaleByZoom(1, zoom);
-					}
-					break;
-			}
-
-
-		} while (!(done & 0x80));
-
-		bp->dst += bp->pitch;
-		if (--bp->height == 0) return;
-
-		for (int i = 0; i < ScaleByZoom(1, zoom) - 1; i++) {
-			do {
-				done = src_o[0];
-				src_o += (done & 0x7F) + 2;
-			} while (!(done & 0x80));
-			if (--bp->height == 0) return;
-		}
-	}
-}
-
-static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode)
+static inline void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode)
 {
 	const DrawPixelInfo *dpi = _cur_dpi;
-	int start_x, start_y;
-	BlitterParams bp;
-	int zoom_mask = ~(ScaleByZoom(1, dpi->zoom) - 1);
+	Blitter::BlitterParams bp;
 
-	/* decode sprite header */
+	/* Move to the correct offset */
 	x += sprite->x_offs;
 	y += sprite->y_offs;
-	bp.width_org = bp.width = sprite->width;
-	bp.height = sprite->height;
-	bp.sprite = sprite->data;
-	bp.dst = dpi->dst_ptr;
-	bp.mode = mode;
-	bp.pitch = dpi->pitch;
-
-	assert(bp.height > 0);
-	assert(bp.width > 0);
-
-	if (sprite->info & 8) {
-		/* tile blit */
-		start_y = 0;
-
-		if (dpi->zoom > ZOOM_LVL_NORMAL) {
-			start_y += bp.height & ~zoom_mask;
-			bp.height &= zoom_mask;
-			if (bp.height == 0) return;
-			y &= zoom_mask;
-		}
-
-		if ( (y -= dpi->top) < 0) {
-			bp.height += y;
-			if (bp.height <= 0) return;
-			start_y -= y;
-			y = 0;
-		} else {
-			bp.dst += bp.pitch * UnScaleByZoom(y, dpi->zoom);
-		}
-		bp.start_y = start_y;
-
-		if ( (y = y + bp.height - dpi->height) > 0) {
-			bp.height -= y;
-			if (bp.height <= 0) return;
-		}
 
-		start_x = 0;
-		x &= zoom_mask;
-		if ( (x -= dpi->left) < 0) {
-			bp.width += x;
-			if (bp.width <= 0) return;
-			start_x -= x;
-			x = 0;
-		}
-		bp.start_x = start_x;
-		bp.dst += UnScaleByZoom(x, dpi->zoom);
-
-		if ( (x = x + bp.width - dpi->width) > 0) {
-			bp.width -= x;
-			if (bp.width <= 0) return;
-		}
-
-		GfxBlitTileZoom(&bp, dpi->zoom);
-	} else {
-		bp.sprite += bp.width * (bp.height & ~zoom_mask);
-		bp.height &= zoom_mask;
-		if (bp.height == 0) return;
-
-		y &= zoom_mask;
+	/* Copy the main data directly from the sprite */
+	bp.sprite = sprite->data;
+	bp.sprite_width = sprite->width;
+	bp.sprite_height = sprite->height;
+	bp.width = UnScaleByZoom(sprite->width, dpi->zoom);
+	bp.height = UnScaleByZoom(sprite->height, dpi->zoom);
+	bp.top = 0;
+	bp.left = 0;
+	bp.skip_left = 0;
+	bp.skip_top = 0;
+	bp.dst = dpi->dst_ptr;
+	bp.pitch = dpi->pitch;
+	bp.remap = _color_remap_ptr;
 
-		if ( (y -= dpi->top) < 0) {
-			bp.height += y;
-			if (bp.height <= 0) return;
-			bp.sprite -= bp.width * y;
-			y = 0;
-		} else {
-			bp.dst += bp.pitch * UnScaleByZoom(y, dpi->zoom);
-		}
-
-		if (bp.height > dpi->height - y) {
-			bp.height = dpi->height - y;
-			if (bp.height <= 0) return;
-		}
+	assert(sprite->width > 0);
+	assert(sprite->height > 0);
 
-		x &= zoom_mask;
+	if (bp.width <= 0) return;
+	if (bp.height <= 0) return;
 
-		if ( (x -= dpi->left) < 0) {
-			bp.width += x;
-			if (bp.width <= 0) return;
-			bp.sprite -= x;
-			x = 0;
-		}
-		bp.dst += UnScaleByZoom(x, dpi->zoom);
+	y -= dpi->top;
+	/* Check for top overflow */
+	if (y < 0) {
+		bp.height -= -UnScaleByZoom(y, dpi->zoom);
+		if (bp.height <= 0) return;
+		bp.skip_top += -UnScaleByZoom(y, dpi->zoom);
+		y = 0;
+	} else {
+		bp.top = UnScaleByZoom(y, dpi->zoom);
+	}
 
-		if (bp.width > dpi->width - x) {
-			bp.width = dpi->width - x;
-			if (bp.width <= 0) return;
-		}
+	/* Check for bottom overflow */
+	y += ScaleByZoom(bp.height, dpi->zoom) - dpi->height;
+	if (y > 0) {
+		bp.height -= UnScaleByZoom(y, dpi->zoom);
+		if (bp.height <= 0) return;
+	}
 
-		GfxBlitZoomUncomp(&bp, dpi->zoom);
+	x -= dpi->left;
+	/* Check for left overflow */
+	if (x < 0) {
+		bp.width -= -UnScaleByZoom(x, dpi->zoom);
+		if (bp.width <= 0) return;
+		bp.skip_left += -UnScaleByZoom(x, dpi->zoom);
+		x = 0;
+	} else {
+		bp.left = UnScaleByZoom(x, dpi->zoom);
 	}
+
+	/* Check for right overflow */
+	x += ScaleByZoom(bp.width, dpi->zoom) - dpi->width;
+	if (x > 0) {
+		bp.width -= UnScaleByZoom(x, dpi->zoom);
+		if (bp.width <= 0) return;
+	}
+
+	BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom);
 }
 
 void DoPaletteAnimations();
--- a/src/gfx.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/gfx.h	Wed Jun 13 12:05:56 2007 +0000
@@ -73,7 +73,7 @@
 
 	/* backquote is the key left of "1"
 	 * we only store this key here, no matter what character is really mapped to it
-	 * on a particular keyboard. (US keyboard: ` and ~ ; German keyboard: ^ and °) */
+	 * on a particular keyboard. (US keyboard: ` and ~ ; German keyboard: ^ and °) */
 	WKC_BACKQUOTE   = 45,
 	WKC_PAUSE       = 46,
 
@@ -244,7 +244,6 @@
 /* window.cpp */
 void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
 
-void SetMouseCursor(CursorID cursor);
 void SetMouseCursor(SpriteID sprite, SpriteID pal);
 void SetAnimatedMouseCursor(const AnimCursor *table);
 void CursorTick();
--- a/src/gfxinit.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/gfxinit.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -208,7 +208,7 @@
 /* Medium font */
 	   2,   92, ///< ' ' till 'z'
 	SKIP,   36,
-	 160,  160, ///< Move ¾ to the correct position
+	 160,  160, ///< Move Ÿ to the correct position
 	  98,   98, ///< Up arrow
 	 131,  133,
 	SKIP,    1, ///< skip currency sign
@@ -233,7 +233,7 @@
 /* Small font */
 	 226,  316, ///< ' ' till 'z'
 	SKIP,   36,
-	 384,  384, ///< Move ¾ to the correct position
+	 384,  384, ///< Move Ÿ to the correct position
 	 322,  322, ///< Up arrow
 	 355,  357,
 	SKIP,    1, ///< skip currency sign
@@ -255,7 +255,7 @@
 /* Big font */
 	 450,  540, ///< ' ' till 'z'
 	SKIP,   36,
-	 608,  608, ///< Move ¾ to the correct position
+	 608,  608, ///< Move Ÿ to the correct position
 	SKIP,    1,
 	 579,  581,
 	SKIP,    1,
@@ -294,47 +294,47 @@
 	582, 582,  ///<  euro symbol large size
 	358, 358,  ///<  euro symbol tiny
 	SPR_CURSOR_CANAL, SPR_IMG_FASTFORWARD, // more icons
-	648, 648, ///<  nordic char: æ
-	616, 616, ///<  nordic char: Æ
-	666, 666, ///<  nordic char: ø
-	634, 634, ///<  nordic char: Ø
+	648, 648, ///<  nordic char: æ
+	616, 616, ///<  nordic char: Æ
+	666, 666, ///<  nordic char: ø
+	634, 634, ///<  nordic char: Ø
 	SPR_PIN_UP, SPR_CURSOR_CLONE_TRAIN, // more icons
-	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
+	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
 	SPR_HOUSE_ICON, SPR_HOUSE_ICON,
-	585, 585, ///<  § large
-	587, 587, ///<  © large
-	592, 592, ///<  ® large
-	594, 597, ///<  ° ± ² ³ large
-	633, 633, ///<  × large
-	665, 665, ///<  ÷ large
+	585, 585, ///<  § large
+	587, 587, ///<  © large
+	592, 592, ///<  ® large
+	594, 597, ///<  ° ± ² ³ large
+	633, 633, ///<  × large
+	665, 665, ///<  ÷ large
 	SPR_SELL_TRAIN, SPR_SHARED_ORDERS_ICON,
-	377, 377, ///<  · small
-	153, 153, ///<  · medium
-	601, 601, ///<  · large
+	377, 377, ///<  · small
+	153, 153, ///<  · medium
+	601, 601, ///<  · large
 	SPR_WARNING_SIGN, SPR_WARNING_SIGN,
 	END
 };
@@ -396,6 +396,15 @@
 	assert(load_index == SPR_GROUP_BASE);
 	load_index += LoadGrfFile("group.grf", load_index, i++);
 
+	assert(load_index == SPR_TRAMWAY_BASE);
+	load_index += LoadGrfFile("tramtrkw.grf", load_index, i++);
+
+	assert(load_index == SPR_ONEWAY_BASE);
+	load_index += LoadGrfFile("oneway.grf", load_index, i++);
+
+	assert(load_index == SPR_FLAGS_BASE);
+	load_index += LoadGrfFile("flags.grf", load_index, i++);
+
 	/* Initialize the unicode to sprite mapping table */
 	InitializeUnicodeGlyphMap();
 
--- a/src/group_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/group_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -205,11 +205,13 @@
 
 	if (!IsValidVehicleID(p2) || (!IsValidGroupID(new_g) && !IsDefaultGroupID(new_g))) return CMD_ERROR;
 
-	Group *g = GetGroup(new_g);
-	if (g->owner != _current_player) return CMD_ERROR;
+	if (IsValidGroupID(new_g)) {
+		Group *g = GetGroup(new_g);
+		if (g->owner != _current_player) return CMD_ERROR;
+	}
 
 	Vehicle *v = GetVehicle(p2);
-	if (v->owner != _current_player || (v->type == VEH_TRAIN && !IsFrontEngine(v))) return CMD_ERROR;
+	if (v->owner != _current_player || !v->IsPrimaryVehicle()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		DecreaseGroupNumVehicle(v->group_id);
@@ -252,14 +254,11 @@
 		Vehicle *v;
 		VehicleType type = (VehicleType)p2;
 		GroupID id_g = p1;
-		uint subtype = (type == VEH_AIRCRAFT) ? AIR_AIRCRAFT : 0;
 
 		/* Find the first front engine which belong to the group id_g
 		 * then add all shared vehicles of this front engine to the group id_g */
 		FOR_ALL_VEHICLES(v) {
-			if ((v->type == type) && (
-					(type == VEH_TRAIN && IsFrontEngine(v)) ||
-					(type != VEH_TRAIN && v->subtype <= subtype))) {
+			if (v->type == type && v->IsPrimaryVehicle()) {
 				if (v->group_id != id_g) continue;
 
 				/* For each shared vehicles add it to the group */
@@ -293,14 +292,11 @@
 
 	if (flags & DC_EXEC) {
 		GroupID old_g = p1;
-		uint subtype = (type == VEH_AIRCRAFT) ? AIR_AIRCRAFT : 0;
 		Vehicle *v;
 
 		/* Find each Vehicle that belongs to the group old_g and add it to the default group */
 		FOR_ALL_VEHICLES(v) {
-			if ((v->type == type) && (
-					(type == VEH_TRAIN && IsFrontEngine(v)) ||
-					(type != VEH_TRAIN && v->subtype <= subtype))) {
+			if (v->type == type && v->IsPrimaryVehicle()) {
 				if (v->group_id != old_g) continue;
 
 				/* Add The Vehicle to the default group */
@@ -346,7 +342,7 @@
  */
 void RemoveVehicleFromGroup(const Vehicle *v)
 {
-	if (!IsValidVehicle(v) || v->type != VEH_TRAIN || !IsFrontEngine(v)) return;
+	if (!IsValidVehicle(v) || !(v->HasFront() && v->IsPrimaryVehicle())) return;
 
 	if (!IsDefaultGroupID(v->group_id)) DecreaseGroupNumVehicle(v->group_id);
 }
--- a/src/gui.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/gui.h	Wed Jun 13 12:05:56 2007 +0000
@@ -68,15 +68,29 @@
 void PlaceProc_LevelLand(TileIndex tile);
 bool GUIPlaceProcDragXY(const WindowEvent *e);
 
+/** Drag and drop selection process, or, what to do with an area of land when
+ * you've selected it. */
 enum {
-	GUI_PlaceProc_None,
-	GUI_PlaceProc_DemolishArea,
-	GUI_PlaceProc_LevelArea,
-	GUI_PlaceProc_DesertArea,
-	GUI_PlaceProc_WaterArea,
-	GUI_PlaceProc_ConvertRailArea,
-	GUI_PlaceProc_RockyArea,
-	GUI_PlaceProc_RemoveFromStation,
+	DDSP_DEMOLISH_AREA,
+	DDSP_LEVEL_AREA,
+	DDSP_CREATE_DESERT,
+	DDSP_CREATE_ROCKS,
+	DDSP_CREATE_WATER,
+	DDSP_PLANT_TREES,
+	DDSP_BUILD_BRIDGE,
+
+	/* Rail specific actions */
+	DDSP_PLACE_RAIL_NE,
+	DDSP_PLACE_RAIL_NW,
+	DDSP_PLACE_AUTORAIL,
+	DDSP_BUILD_SIGNALS,
+	DDSP_BUILD_STATION,
+	DDSP_REMOVE_STATION,
+	DDSP_CONVERT_RAIL,
+
+	/* Road specific actions */
+	DDSP_PLACE_ROAD_NE,
+	DDSP_PLACE_ROAD_NW,
 };
 
 /* misc_gui.cpp */
--- a/src/industry.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/industry.h	Wed Jun 13 12:05:56 2007 +0000
@@ -12,9 +12,19 @@
 typedef uint8 IndustryType;
 
 enum {
-	INVALID_INDUSTRY = 0xFFFF,
-	NUM_INDUSTRYTYPES = 37,
-	INDUTILE_NOANIM = 0xFF,        ///< flag to mark industry tiles as having no animation
+	INVALID_INDUSTRY       = 0xFFFF,
+	NEW_INDUSTRYOFFSET     = 37,                         ///< original number of industries
+	NUM_INDUSTRYTYPES      = 37,                         ///< total number of industries, new and old
+	INDUSTRYTILE_NOANIM    = 0xFF,                       ///< flag to mark industry tiles as having no animation
+	NEW_INDUSTRYTILEOFFSET = 175,                        ///< original number of tiles
+	INVALID_INDUSTRYTYPE   = NUM_INDUSTRYTYPES,          ///< one above amount is considered invalid
+	NUM_INDUSTRYTILES      = NEW_INDUSTRYTILEOFFSET,     ///< total number of industry tiles, new and old
+	INVALID_INDUSTRYTILE   = NUM_INDUSTRYTILES,          ///< one above amount is considered invalid
+};
+
+enum {
+	CLEAN_RANDOMSOUNDS,    ///< Free the dynamically allocated sounds table
+	CLEAN_TILELSAYOUT,     ///< Free the dynamically allocated tile layout structure
 };
 
 enum IndustryLifeType {
@@ -63,27 +73,27 @@
  * Defines the internal data of a functionnal industry
  */
 struct Industry {
-	TileIndex xy;                   ///< coordinates of the primary tile the industry is built one
+	TileIndex xy;                       ///< coordinates of the primary tile the industry is built one
 	byte width;
 	byte height;
-	const Town* town;               ///< Nearest town
-	uint16 cargo_waiting[2];        ///< amount of cargo produced per cargo
-	byte production_rate[2];        ///< production rate for each cargo
-	byte prod_level;                ///< general production level
-	uint16 last_mo_production[2];   ///< stats of last month production per cargo
-	uint16 last_mo_transported[2];  ///< stats of last month transport per cargo
-	byte pct_transported[2];        ///< percentage transported per cargo
-	uint16 total_production[2];     ///< total units produced per cargo
-	uint16 total_transported[2];    ///< total units transported per cargo
-	uint16 counter;                 ///< used for animation and/or production (if available cargo)
+	const Town *town;                   ///< Nearest town
+	uint16 cargo_waiting[2];            ///< amount of cargo produced per cargo
+	byte production_rate[2];            ///< production rate for each cargo
+	byte prod_level;                    ///< general production level
+	uint16 this_month_production[2];    ///< stats of this month's production per cargo
+	uint16 this_month_transported[2];   ///< stats of this month's transport per cargo
+	byte last_month_pct_transported[2]; ///< percentage transported per cargo in the last full month
+	uint16 last_month_production[2];    ///< total units produced per cargo in the last full month
+	uint16 last_month_transported[2];   ///< total units transported per cargo in the last full month
+	uint16 counter;                     ///< used for animation and/or production (if available cargo)
 
-	IndustryType type;              ///< type of industry. see IT_COAL_MINE and others
-	OwnerByte owner;                ///< owner of the industry.  Which SHOULD always be (imho) OWNER_NONE
-	byte random_color;              ///< randomized colour of the industry, for display purpose
-	Year last_prod_year;            ///< last year of production
-	byte was_cargo_delivered;       ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
+	IndustryType type;                  ///< type of industry. see IT_COAL_MINE and others
+	OwnerByte owner;                    ///< owner of the industry.  Which SHOULD always be (imho) OWNER_NONE
+	byte random_color;                  ///< randomized colour of the industry, for display purpose
+	Year last_prod_year;                ///< last year of production
+	byte was_cargo_delivered;           ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
 
-	IndustryID index;               ///< index of the industry in the pool of industries
+	IndustryID index;                   ///< index of the industry in the pool of industries
 };
 
 struct IndustryTileTable {
@@ -91,13 +101,22 @@
 	IndustryGfx gfx;
 };
 
+/** Data related to the handling of grf files.  Common to both industry and industry tile */
+struct GRFFileProps {
+	uint8 subst_id;
+	uint16 local_id;                      ///< id defined by the grf file for this industry
+	struct SpriteGroup *spritegroup;      ///< pointer to the different sprites of the industry
+	const struct GRFFile *grffile;        ///< grf file that introduced this industry
+	uint8 override;                       ///< id of the entity been replaced by
+};
+
 /**
  * Defines the data structure for constructing industry.
  */
 struct IndustrySpec {
 	const IndustryTileTable *const *table;///< List of the tiles composing the industry
 	byte num_table;                       ///< Number of elements in the table
-	byte cost_multiplier;                 ///< Base cost multiplier. Watch out for this one, << 5  VS << 8
+	uint16 cost_multiplier;               ///< Base cost multiplier.
 	IndustryType conflicting[3];          ///< Industries this industry cannot be close to
 	byte check_proc;                      ///< Index to a procedure to check for conflicting circumstances
 	CargoID produced_cargo[2];
@@ -119,11 +138,11 @@
 	byte appear_creation[NUM_LANDSCAPE];  ///< Probability of appearance during map creation
 	uint8 number_of_sounds;               ///< Number of sounds available in the sounds array
 	const uint8 *random_sounds;           ///< array of random sounds.
-	/* Newgrf stuff coming in */
+	/* Newgrf data */
 	uint16 callback_flags;                ///< Flags telling which grf callback is set
-	byte subst_id;
-	uint32 grfid;
-	byte override;
+	uint8 cleanup_flag;                   ///< flags indicating which data should be freed upon cleaning up
+	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
+	struct GRFFileProps grf_prop;         ///< properties related the the grf file
 };
 
 /**
@@ -131,19 +150,28 @@
  */
 struct IndustryTileSpec {
 	CargoID accepts_cargo[3];             ///< Cargo accepted by this tile
+	uint8 acceptance[3];                  ///< Level of aceptance per cargo type
 	Slope slopes_refused;                 ///< slope pattern on which this tile cannot be built
 	byte anim_production;                 ///< Animation frame to start when goods are produced
 	byte anim_next;                       ///< Next frame in an animation
 	bool anim_state;                      ///< When true, the tile has to be drawn using the animation
 	                                      ///< state instead of the construction state
+	/* Newgrf data */
+	uint8 callback_flags;                 ///< Flags telling which grf callback is set
+	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
+	struct GRFFileProps grf_prop;
 };
 
 /* industry_cmd.cpp*/
-const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries default data
-const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles default data
+const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries data
+const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles data
 void ResetIndustries();
 void PlantRandomFarmField(const Industry *i);
 
+/* writable arrays of specs */
+extern IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
+extern IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
+
 /* smallmap_gui.cpp */
 void BuildIndustriesLegend();
 
@@ -169,7 +197,6 @@
 	return index < GetIndustryPoolSize() && IsValidIndustry(GetIndustry(index));
 }
 
-VARDEF int _total_industries; //general counter
 
 static inline IndustryID GetMaxIndustryIndex()
 {
@@ -181,11 +208,51 @@
 	return GetIndustryPoolSize() - 1;
 }
 
+extern int _total_industries;  // general counter
+extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
+
 static inline uint GetNumIndustries()
 {
 	return _total_industries;
 }
 
+/** Increment the count of industries for this type
+ * @param type IndustryType to increment
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline void IncIndustryTypeCount(IndustryType type)
+{
+	assert(type < INVALID_INDUSTRYTYPE);
+	_industry_counts[type]++;
+	_total_industries++;
+}
+
+/** Decrement the count of industries for this type
+ * @param type IndustryType to decrement
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline void DecIndustryTypeCount(IndustryType type)
+{
+	assert(type < INVALID_INDUSTRYTYPE);
+	_industry_counts[type]--;
+	_total_industries--;
+}
+
+/** get the count of industries for this type
+ * @param type IndustryType to query
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline uint8 GetIndustryTypeCount(IndustryType type)
+{
+	assert(type < INVALID_INDUSTRYTYPE);
+	return min(_industry_counts[type], 0xFF); // callback expects only a byte, so cut it
+}
+
+/** Resets both the total_industries and the _industry_counts
+ * This way, we centralize all counts activities */
+static inline void ResetIndustryCounts()
+{
+	_total_industries = 0;
+	memset(&_industry_counts, 0, sizeof(_industry_counts));
+}
+
 /**
  * Return a random valid industry.
  */
@@ -221,8 +288,8 @@
 #define FOR_ALL_INDUSTRIES_FROM(i, start) for (i = GetIndustry(start); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) if (IsValidIndustry(i))
 #define FOR_ALL_INDUSTRIES(i) FOR_ALL_INDUSTRIES_FROM(i, 0)
 
-VARDEF const Industry** _industry_sort;
-VARDEF bool _industry_sort_dirty;
+extern const Industry **_industry_sort;
+extern bool _industry_sort_dirty;
 
 enum {
 	IT_COAL_MINE           =   0,
--- a/src/industry_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/industry_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -37,6 +37,34 @@
 static byte _industry_sound_ctr;
 static TileIndex _industry_sound_tile;
 
+int _total_industries;                      //general counter
+uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
+
+const Industry **_industry_sort;
+bool _industry_sort_dirty;
+
+IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
+IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
+
+/** This function initialize the spec arrays of both
+ * industry and industry tiles.
+ * It adjusts the enabling of the industry too, based on climate availability.
+ * This will allow for clearer testings */
+void ResetIndustries()
+{
+	memset(&_industry_specs, 0, sizeof(_industry_specs));
+	memcpy(&_industry_specs, &_origin_industry_specs, sizeof(_origin_industry_specs));
+
+	/* once performed, enable only the current climate industries */
+	for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) {
+		_industry_specs[i].enabled = HASBIT(_origin_industry_specs[i].climate_availability, _opt.landscape);
+	}
+
+
+	memset(&_industry_tile_specs, 0, sizeof(_industry_tile_specs));
+	memcpy(&_industry_tile_specs, &_origin_industry_tile_specs, sizeof(_origin_industry_tile_specs));
+}
+
 /**
  * Called if a new block is added to the industry-pool
  */
@@ -86,12 +114,12 @@
  * This will ensure at once : proper access and
  * not allowing modifications of it.
  * @param gfx of industrytile (which is the index in _industry_specs)
- * @pre gfx < NUM_INDUSTRY_GFXES
+ * @pre gfx < INVALID_INDUSTRYTILE
  * @return a pointer to the corresponding industrytile spec
  **/
 const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx)
 {
-	assert(gfx < NUM_INDUSTRY_GFXES);
+	assert(gfx < INVALID_INDUSTRYTILE);
 	return &_industry_tile_specs[gfx];
 }
 
@@ -119,7 +147,8 @@
 	}
 
 	_industry_sort_dirty = true;
-	_total_industries--;
+	DecIndustryTypeCount(i->type);
+
 	DeleteSubsidyWithIndustry(i->index);
 	DeleteWindowById(WC_INDUSTRY_VIEW, i->index);
 	InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
@@ -287,14 +316,10 @@
 	const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile));
 	CargoID a;
 
-	a = itspec->accepts_cargo[0];
-	if (a != CT_INVALID) ac[a] = (a == CT_PASSENGERS) ? 1 : 8;
-
-	a = itspec->accepts_cargo[1];
-	if (a != CT_INVALID) ac[a] = 8;
-
-	a = itspec->accepts_cargo[2];
-	if (a != CT_INVALID) ac[a] = 8;
+	for (byte i = 0; i < lengthof(itspec->accepts_cargo); i++) {
+		a = itspec->accepts_cargo[i];
+		if (a != CT_INVALID) ac[a] = itspec->acceptance[i];
+	}
 }
 
 static void GetTileDesc_Industry(TileIndex tile, TileDesc *td)
@@ -343,14 +368,14 @@
 		/* fluctuating economy? */
 		if (_economy.fluct <= 0) cw = (cw + 1) / 2;
 
-		i->last_mo_production[0] += cw;
+		i->this_month_production[0] += cw;
 
 		am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[0], cw);
-		i->last_mo_transported[0] += am;
+		i->this_month_transported[0] += am;
 		if (am != 0) {
 			uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
 
-			if (newgfx != INDUTILE_NOANIM) {
+			if (newgfx != INDUSTRYTILE_NOANIM) {
 				ResetIndustryConstructionStage(tile);
 				SetIndustryCompleted(tile, true);
 				SetIndustryGfx(tile, newgfx);
@@ -365,10 +390,10 @@
 
 		if (_economy.fluct <= 0) cw = (cw + 1) / 2;
 
-		i->last_mo_production[1] += cw;
+		i->this_month_production[1] += cw;
 
 		am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[1], cw);
-		i->last_mo_transported[1] += am;
+		i->this_month_transported[1] += am;
 	}
 }
 
@@ -636,7 +661,7 @@
 	TransportIndustryGoods(tile);
 
 	newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
-	if (newgfx != INDUTILE_NOANIM) {
+	if (newgfx != INDUSTRYTILE_NOANIM) {
 		ResetIndustryConstructionStage(tile);
 		SetIndustryGfx(tile, newgfx);
 		MarkTileDirtyByTile(tile);
@@ -735,7 +760,7 @@
 	ShowIndustryViewWindow(GetIndustryIndex(tile));
 }
 
-static uint32 GetTileTrackStatus_Industry(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	return 0;
 }
@@ -1283,7 +1308,7 @@
 		/* check if an industry that accepts the same goods is nearby */
 		if (DistanceMax(tile, i->xy) <= 14 &&
 				indspec->accepts_cargo[0] != CT_INVALID &&
-				indspec->accepts_cargo[0] == indspec->accepts_cargo[0] && (
+				indspec->accepts_cargo[0] == GetIndustrySpec(i->type)->accepts_cargo[0] && (
 					_game_mode != GM_EDITOR ||
 					!_patches.same_industry_close ||
 					!_patches.multiple_industry_per_town
@@ -1329,10 +1354,10 @@
 	uint32 r;
 	int j;
 
-	_total_industries++;
 	i->xy = tile;
 	i->width = i->height = 0;
 	i->type = type;
+	IncIndustryTypeCount(type);
 
 	i->production_rate[0] = indspec->production_rate[0];
 	i->production_rate[1] = indspec->production_rate[1];
@@ -1350,20 +1375,20 @@
 	i->counter = GB(r, 0, 12);
 	i->cargo_waiting[0] = 0;
 	i->cargo_waiting[1] = 0;
-	i->last_mo_production[0] = 0;
-	i->last_mo_production[1] = 0;
-	i->last_mo_transported[0] = 0;
-	i->last_mo_transported[1] = 0;
-	i->pct_transported[0] = 0;
-	i->pct_transported[1] = 0;
-	i->total_transported[0] = 0;
-	i->total_transported[1] = 0;
+	i->this_month_production[0] = 0;
+	i->this_month_production[1] = 0;
+	i->this_month_transported[0] = 0;
+	i->this_month_transported[1] = 0;
+	i->last_month_pct_transported[0] = 0;
+	i->last_month_pct_transported[1] = 0;
+	i->last_month_transported[0] = 0;
+	i->last_month_transported[1] = 0;
 	i->was_cargo_delivered = false;
 	i->last_prod_year = _cur_year;
-	i->total_production[0] = i->production_rate[0] * 8;
-	i->total_production[1] = i->production_rate[1] * 8;
+	i->last_month_production[0] = i->production_rate[0] * 8;
+	i->last_month_production[1] = i->production_rate[1] * 8;
 
-	if (!_generating_world) i->total_production[0] = i->total_production[1] = 0;
+	if (!_generating_world) i->last_month_production[0] = i->last_month_production[1] = 0;
 
 	i->prod_level = 0x10;
 
@@ -1452,7 +1477,9 @@
 	indspec = GetIndustrySpec(p1);
 
 	/* Check if the to-be built/founded industry is available for this climate. */
-	if (!HASBIT(indspec->climate_availability, _opt_ptr->landscape)) return CMD_ERROR;
+	if (!indspec->enabled) {
+		return CMD_ERROR;
+	}
 
 	/* If the patch for raw-material industries is not on, you cannot build raw-material industries.
 	 * Raw material industries are industries that do not accept cargo (at least for now)
@@ -1461,7 +1488,7 @@
 			indspec->accepts_cargo[0] == CT_INVALID &&
 			indspec->accepts_cargo[1] == CT_INVALID &&
 			indspec->accepts_cargo[2] == CT_INVALID &&
-			p1 != IT_LUMBER_MILL) {
+			!(indspec->behaviour & INDUSTRYBEH_CUT_TREES)) {
 		return CMD_ERROR;
 	}
 
@@ -1474,7 +1501,7 @@
 
 	if (CreateNewIndustryHelper(tile, p1, flags, indspec, it) == NULL) return CMD_ERROR;
 
-	return (_eco->GetPrice(CEconomy::BUILD_INDUSTRY) >> 5) * indspec->cost_multiplier;
+	return (_eco->GetPrice(CEconomy::BUILD_INDUSTRY) >> 8) * indspec->cost_multiplier;
 }
 
 
@@ -1502,9 +1529,10 @@
 static void PlaceInitialIndustry(IndustryType type, int amount)
 {
 	int num = _numof_industry_table[_opt.diff.number_industries][amount];
+	const IndustrySpec *ind_spc = GetIndustrySpec(type);
 
 	/* These are always placed next to the coastline, so we scale by the perimeter instead. */
-	num = (type == IT_OIL_REFINERY || type == IT_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
+	num = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
 
 	if (_opt.diff.number_industries != 0) {
 		PlayerID old_player = _current_player;
@@ -1536,20 +1564,20 @@
 
 	/* Find the total amount of industries */
 	for (it = IT_COAL_MINE; it < NUM_INDUSTRYTYPES; it++) {
-		int num;
 
 		ind_spc = GetIndustrySpec(it);
-		chance = ind_spc->appear_creation[_opt.landscape];
+		if (ind_spc->enabled) {
+			chance = ind_spc->appear_creation[_opt.landscape];
+			if (chance > 0) {
+				/* once the chance of appearance is determind, it have to be scaled by
+				 * the difficulty level. The "chance" in question is more an index into
+				 * the _numof_industry_table,in fact */
+				int num = _numof_industry_table[_opt.diff.number_industries][chance];
 
-		if (chance > 0) {
-			/* once the chance of appearance is determind, it have to be scaled by
-			 * the difficulty level. The "chance" in question is more an index into
-			 * the _numof_industry_table,in fact */
-			num = _numof_industry_table[_opt.diff.number_industries][chance];
-
-			/* These are always placed next to the coastline, so we scale by the perimeter instead. */
-			num = (it == IT_OIL_REFINERY || it == IT_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
-			i += num;
+				/* These are always placed next to the coastline, so we scale by the perimeter instead. */
+				num = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
+				i += num;
+			}
 		}
 	}
 
@@ -1561,8 +1589,11 @@
 		 * for this landscape.
 		 * @todo :  Do we really have to pass chance as un-scaled value, since we've already
 		 *          processed that scaling above? No, don't think so.  Will find a way. */
-		chance = GetIndustrySpec(it)->appear_creation[_opt.landscape];
-		if (chance > 0) PlaceInitialIndustry(it, chance);
+		ind_spc = GetIndustrySpec(it);
+		if (ind_spc->enabled) {
+			chance = ind_spc->appear_creation[_opt.landscape];
+			if (chance > 0) PlaceInitialIndustry(it, chance);
+		}
 	};
 }
 
@@ -1591,7 +1622,7 @@
 				new_prod = old_prod = i->production_rate[j];
 				if (CHANCE16I(20, 1024, r))
 					new_prod -= ((RandomRange(50) + 10) * old_prod) >> 8;
-				if (CHANCE16I(20 + (i->pct_transported[j] * 20 >> 8), 1024, r >> 16))
+				if (CHANCE16I(20 + (i->last_month_pct_transported[j] * 20 >> 8), 1024, r >> 16))
 					new_prod += ((RandomRange(50) + 10) * old_prod) >> 8;
 
 				new_prod = clamp(new_prod, 0, 255);
@@ -1643,17 +1674,17 @@
 	for (byte j = 0; j < lengthof(indsp->produced_cargo); j++) {
 		if (indsp->produced_cargo[j] != CT_INVALID) {
 			pct = 0;
-			if (i->last_mo_production[j] != 0) {
+			if (i->this_month_production[j] != 0) {
 				i->last_prod_year = _cur_year;
-				pct = min(i->last_mo_transported[j] * 256 / i->last_mo_production[j], 255);
+				pct = min(i->this_month_transported[j] * 256 / i->this_month_production[j], 255);
 			}
-			i->pct_transported[j] = pct;
+			i->last_month_pct_transported[j] = pct;
 
-			i->total_production[j] = i->last_mo_production[j];
-			i->last_mo_production[j] = 0;
+			i->last_month_production[j] = i->this_month_production[j];
+			i->this_month_production[j] = 0;
 
-			i->total_transported[j] = i->last_mo_transported[j];
-			i->last_mo_transported[j] = 0;
+			i->last_month_transported[j] = i->this_month_transported[j];
+			i->this_month_transported[j] = 0;
 			refresh = true;
 		}
 	}
@@ -1743,7 +1774,7 @@
 
 			if (only_decrease || CHANCE16(1, 3)) {
 				/* If you transport > 60%, 66% chance we increase, else 33% chance we increase */
-				if (!only_decrease && (i->pct_transported[0] > 153) != CHANCE16(1, 3)) {
+				if (!only_decrease && (i->last_month_pct_transported[0] > 153) != CHANCE16(1, 3)) {
 					/* Increase production */
 					if (i->prod_level != 0x80) {
 						byte b;
@@ -1824,7 +1855,7 @@
 	CleanPool(&_Industry_pool);
 	AddBlockToPool(&_Industry_pool);
 
-	_total_industries = 0;
+	ResetIndustryCounts();
 	_industry_sort_dirty = true;
 	_industry_sound_tile = 0;
 }
@@ -1846,30 +1877,30 @@
 };
 
 static const SaveLoad _industry_desc[] = {
-	SLE_CONDVAR(Industry, xy,                  SLE_FILE_U16 | SLE_VAR_U32,  0, 5),
-	SLE_CONDVAR(Industry, xy,                  SLE_UINT32,                  6, SL_MAX_VERSION),
-	    SLE_VAR(Industry, width,               SLE_UINT8),
-	    SLE_VAR(Industry, height,              SLE_UINT8),
-	    SLE_REF(Industry, town,                REF_TOWN),
+	SLE_CONDVAR(Industry, xy,                         SLE_FILE_U16 | SLE_VAR_U32,  0, 5),
+	SLE_CONDVAR(Industry, xy,                         SLE_UINT32,                  6, SL_MAX_VERSION),
+	    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_ARR(Industry, cargo_waiting,       SLE_UINT16, 2),
-	    SLE_ARR(Industry, production_rate,     SLE_UINT8,  2),
+	    SLE_ARR(Industry, 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_VAR(Industry, prod_level,          SLE_UINT8),
-	    SLE_ARR(Industry, last_mo_production,  SLE_UINT16, 2),
-	    SLE_ARR(Industry, last_mo_transported, SLE_UINT16, 2),
-	    SLE_ARR(Industry, pct_transported,     SLE_UINT8,  2),
-	    SLE_ARR(Industry, total_production,    SLE_UINT16, 2),
-	    SLE_ARR(Industry, total_transported,   SLE_UINT16, 2),
+	    SLE_VAR(Industry, prod_level,                 SLE_UINT8),
+	    SLE_ARR(Industry, this_month_production,      SLE_UINT16, 2),
+	    SLE_ARR(Industry, this_month_transported,     SLE_UINT16, 2),
+	    SLE_ARR(Industry, last_month_pct_transported, SLE_UINT8,  2),
+	    SLE_ARR(Industry, last_month_production,      SLE_UINT16, 2),
+	    SLE_ARR(Industry, last_month_transported,     SLE_UINT16, 2),
 
-	    SLE_VAR(Industry, counter,             SLE_UINT16),
+	    SLE_VAR(Industry, counter,                    SLE_UINT16),
 
-	    SLE_VAR(Industry, type,                SLE_UINT8),
-	    SLE_VAR(Industry, owner,               SLE_UINT8),
-	    SLE_VAR(Industry, random_color,        SLE_UINT8),
-	SLE_CONDVAR(Industry, last_prod_year,      SLE_FILE_U8 | SLE_VAR_I32,  0, 30),
-	SLE_CONDVAR(Industry, last_prod_year,      SLE_INT32,                 31, SL_MAX_VERSION),
-	    SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8),
+	    SLE_VAR(Industry, type,                       SLE_UINT8),
+	    SLE_VAR(Industry, owner,                      SLE_UINT8),
+	    SLE_VAR(Industry, random_color,               SLE_UINT8),
+	SLE_CONDVAR(Industry, last_prod_year,             SLE_FILE_U8 | SLE_VAR_I32,  0, 30),
+	SLE_CONDVAR(Industry, last_prod_year,             SLE_INT32,                 31, SL_MAX_VERSION),
+	    SLE_VAR(Industry, was_cargo_delivered,        SLE_UINT8),
 
 	/* reserve extra space in savegame here. (currently 32 bytes) */
 	SLE_CONDNULL(32, 2, SL_MAX_VERSION),
@@ -1892,7 +1923,7 @@
 {
 	int index;
 
-	_total_industries = 0;
+	ResetIndustryCounts();
 
 	while ((index = SlIterateArray()) != -1) {
 		Industry *i;
@@ -1902,8 +1933,7 @@
 
 		i = GetIndustry(index);
 		SlObject(i, _industry_desc);
-
-		_total_industries++;
+		IncIndustryTypeCount(i->type);
 	}
 }
 
--- a/src/industry_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/industry_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -39,7 +39,7 @@
 		if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
 			int ind_type = _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1];
 
-			SetDParam(0, (_eco->GetPrice(CEconomy::BUILD_INDUSTRY) >> 5) * GetIndustrySpec(ind_type)->cost_multiplier);
+			SetDParam(0, (_eco->GetPrice(CEconomy::BUILD_INDUSTRY) >> 8) * GetIndustrySpec(ind_type)->cost_multiplier);
 			DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
 		}
 		break;
@@ -326,9 +326,9 @@
 			DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
 
 			SetDParam(0, ind->produced_cargo[0]);
-			SetDParam(1, i->total_production[0]);
+			SetDParam(1, i->last_month_production[0]);
 
-			SetDParam(2, i->pct_transported[0] * 100 >> 8);
+			SetDParam(2, i->last_month_pct_transported[0] * 100 >> 8);
 			DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
 			/* Let's put out those buttons.. */
 			if (IsProductionAlterable(i)) {
@@ -338,8 +338,8 @@
 
 			if (ind->produced_cargo[1] != CT_INVALID) {
 				SetDParam(0, ind->produced_cargo[1]);
-				SetDParam(1, i->total_production[1]);
-				SetDParam(2, i->pct_transported[1] * 100 >> 8);
+				SetDParam(1, i->last_month_production[1]);
+				SetDParam(2, i->last_month_pct_transported[1] * 100 >> 8);
 				DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
 				/* Let's put out those buttons.. */
 				if (IsProductionAlterable(i)) {
@@ -423,7 +423,7 @@
 
 	for (byte j = 0; j < lengthof(ind->produced_cargo); j++) {
 		if (ind->produced_cargo[j] != CT_INVALID) {
-			i->total_production[j] = 8 * i->production_rate[j];
+			i->last_month_production[j] = 8 * i->production_rate[j];
 		}
 	}
 }
@@ -509,8 +509,8 @@
 					r = 1;
 				} else {
 					r =
-						(i->total_production[0] + i->total_production[1]) -
-						(j->total_production[0] + j->total_production[1]);
+						(i->last_month_production[0] + i->last_month_production[1]) -
+						(j->last_month_production[0] + j->last_month_production[1]);
 				}
 			}
 			break;
@@ -525,15 +525,15 @@
 					int pi;
 					int pj;
 
-					pi = i->pct_transported[0] * 100 >> 8;
+					pi = i->last_month_pct_transported[0] * 100 >> 8;
 					if (ind_i->produced_cargo[1] != CT_INVALID) {
-						int p = i->pct_transported[1] * 100 >> 8;
+						int p = i->last_month_pct_transported[1] * 100 >> 8;
 						if (p < pi) pi = p;
 					}
 
-					pj = j->pct_transported[0] * 100 >> 8;
+					pj = j->last_month_pct_transported[0] * 100 >> 8;
 					if (ind_j->produced_cargo[1] != CT_INVALID) {
-						int p = j->pct_transported[1] * 100 >> 8;
+						int p = j->last_month_pct_transported[1] * 100 >> 8;
 						if (p < pj) pj = p;
 					}
 
@@ -618,16 +618,16 @@
 			SetDParam(0, i->index);
 			if (ind->produced_cargo[0] != CT_INVALID) {
 				SetDParam(1, ind->produced_cargo[0]);
-				SetDParam(2, i->total_production[0]);
+				SetDParam(2, i->last_month_production[0]);
 
 				if (ind->produced_cargo[1] != CT_INVALID) {
 					SetDParam(3, ind->produced_cargo[1]);
-					SetDParam(4, i->total_production[1]);
-					SetDParam(5, i->pct_transported[0] * 100 >> 8);
-					SetDParam(6, i->pct_transported[1] * 100 >> 8);
+					SetDParam(4, i->last_month_production[1]);
+					SetDParam(5, i->last_month_pct_transported[0] * 100 >> 8);
+					SetDParam(6, i->last_month_pct_transported[1] * 100 >> 8);
 					DrawString(4, 28 + n * 10, STR_INDUSTRYDIR_ITEM_TWO, 0);
 				} else {
-					SetDParam(3, i->pct_transported[0] * 100 >> 8);
+					SetDParam(3, i->last_month_pct_transported[0] * 100 >> 8);
 					DrawString(4, 28 + n * 10, STR_INDUSTRYDIR_ITEM, 0);
 				}
 			} else {
--- a/src/industry_map.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/industry_map.h	Wed Jun 13 12:05:56 2007 +0000
@@ -48,7 +48,6 @@
 	GFX_BUBBLE_CATCHER                 = 162,
 	GFX_TOFFEE_QUARY                   = 165,
 	GFX_SUGAR_MINE_SIEVE               = 174,
-	NUM_INDUSTRY_GFXES                 = 175,
 };
 
 /**
@@ -201,12 +200,6 @@
 	_m[tile].m1 = 0;
 }
 
-/** Structure used to make a mapping from industry gfx to industry type */
-struct IndustryTypeSolver {
-	IndustryGfx MinGfx; ///< The first gfx index for the industry type
-	IndustryGfx MaxGfx; ///< The last gfx index for the industry type
-};
-
 /**
  * Get the animation loop number
  * @param tile the tile to get the animation loop number of
--- a/src/landscape.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/landscape.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -274,9 +274,9 @@
 	MarkTileDirtyByTile(tile);
 }
 
-uint32 GetTileTrackStatus(TileIndex tile, TransportType mode)
+uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode)
 {
-	return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode);
+	return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode);
 }
 
 void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player)
--- a/src/landscape.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/landscape.h	Wed Jun 13 12:05:56 2007 +0000
@@ -44,7 +44,7 @@
 void DoClearSquare(TileIndex tile);
 void RunTileLoop();
 
-uint32 GetTileTrackStatus(TileIndex tile, TransportType mode);
+uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode);
 void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac);
 void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player);
 void AnimateTile(TileIndex tile);
--- a/src/lang/american.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/american.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode en_US
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Off edge of map
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Allow drive-through road stops on town owned roads: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Allow building adjacent stations: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Always allow small airports: {ORANGE}{STRING}
 
@@ -1086,6 +1089,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Service helicopters at helipads automatically: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Link landscape toolbar to rail/road/water/airport toolbars: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Reverse scroll direction: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Smooth viewport scrolling: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Show a measurement tooltip when using various build-tools: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Show company liveries: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :None
@@ -1586,6 +1590,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Railroad track with pre-signals
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Railroad track with exit-signals
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Railroad track with combo-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Railway track with normal and pre-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Railway track with normal and exit-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Railway track with normal and combo-signals
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Railway track with pre- and exit-signals
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Railway track with pre- and combo-signals
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Railway track with exit- and combo-signals
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Must remove railway station first
 
 
 
@@ -1593,22 +1604,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Road Depot Orientation
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Road construction
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramway construction
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Build road section
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Build tramway section
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Build road bridge
+STR_180F_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_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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Select road vehicle depot orientation
+STR_1813_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
@@ -1616,6 +1644,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Road/rail grade crossing
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Can't remove bus station...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Can't remove truck station...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Can't remove passenger tram station...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Can't remove freight tram station...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Towns
@@ -1779,8 +1809,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- None -
@@ -1792,6 +1826,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_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
@@ -2242,6 +2278,8 @@
 STR_LIVERY_HELICOPTER                                           :Helicopter
 STR_LIVERY_SMALL_PLANE                                          :Small Airplane
 STR_LIVERY_LARGE_PLANE                                          :Large Airplane
+STR_LIVERY_PASSENGER_TRAM                                       :Passenger Tram
+STR_LIVERY_FREIGHT_TRAM                                         :Freight Tram
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Show general color schemes
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Show train color schemes
@@ -2630,7 +2668,6 @@
 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_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
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Delete the highlighted order
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Make the highlighted order non-stop
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insert a new order before the highlighted order, or add to end of list
@@ -2715,6 +2752,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_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...
@@ -2999,6 +3038,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}You are about to sell all the vehicles in the depot. Are you sure?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Wrong depot type
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Sell all trains in the depot
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Sell all road vehicles in the depot
--- a/src/lang/brazilian_portuguese.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case m f
 ##gender m f
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Fora do mapa
@@ -1048,6 +1050,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Novo busca de caminho global (NPF, sobrepõe NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Multiplicador de peso para trens simulando trens pesados: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Permitir estações drive-through em ruas locais: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Permitir construção de estações adjacentes: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Permitir sempre aeroportos pequenos: {ORANGE}{STRING}
 
@@ -1088,6 +1091,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Manutenção automática de helicópteros em heliportos: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Ligar ferramentas de terreno às ferramentas de transportes: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Rolar a tela no sentido oposto ao movimento do mouse: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Melhorar deslocamento do vizualizador extra: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Exibir distâncias quando usar ferramentas de construção: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Exibir cores das empresas: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Nenhum
@@ -1395,6 +1399,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Inglês
 STR_NETWORK_LANG_GERMAN                                         :Alemão
 STR_NETWORK_LANG_FRENCH                                         :Francês
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasileiro
+STR_NETWORK_LANG_BULGARIAN                                      :Búlgaro
+STR_NETWORK_LANG_CHINESE                                        :Chinês
+STR_NETWORK_LANG_CZECH                                          :Checo
+STR_NETWORK_LANG_DANISH                                         :Dinamarquês
+STR_NETWORK_LANG_DUTCH                                          :Holandês
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finlandês
+STR_NETWORK_LANG_HUNGARIAN                                      :Húngaro
+STR_NETWORK_LANG_ICELANDIC                                      :Islandês
+STR_NETWORK_LANG_ITALIAN                                        :Italiano
+STR_NETWORK_LANG_JAPANESE                                       :Japonês
+STR_NETWORK_LANG_KOREAN                                         :Coreano
+STR_NETWORK_LANG_LITHUANIAN                                     :Lituano
+STR_NETWORK_LANG_NORWEGIAN                                      :Norueguês
+STR_NETWORK_LANG_POLISH                                         :Polandês
+STR_NETWORK_LANG_PORTUGUESE                                     :Português
+STR_NETWORK_LANG_ROMANIAN                                       :Romeno
+STR_NETWORK_LANG_RUSSIAN                                        :Russo
+STR_NETWORK_LANG_SLOVAK                                         :Eslovaco
+STR_NETWORK_LANG_SLOVENIAN                                      :Esloveno
+STR_NETWORK_LANG_SPANISH                                        :Espanhol
+STR_NETWORK_LANG_SWEDISH                                        :Sueco
+STR_NETWORK_LANG_TURKISH                                        :Turco
+STR_NETWORK_LANG_UKRAINIAN                                      :Ucraniano
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Sala de espera do jogo
@@ -1588,6 +1617,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ferrovia com pré-sinais
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ferrovia com sinais de saída
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ferrovia com sinais combinados
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Linha de trem com sinais normais e pré-sinais
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Linha de trem com sinais normais e de saída
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Linha de trem com sinais normais e sinais combo
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Linha de trem com pré-sinais e de saída
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Linha de trem com pré-sinais e sinais combo
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Linha de trem com sinais de saída e sinais combo
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Remova a estação de trem antes
 
 
 
@@ -1595,22 +1631,39 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Precisa 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientação da Garagem
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Construir rodovias
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Construção de Bonde
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construir trecho rodoviário
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construir linha de bonde
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construir ponte rodoviária
+STR_180F_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_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_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_1814_ROAD                                                   :Rodovia
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Rodovia iluminada
 STR_1816_TREE_LINED_ROAD                                        :Rodovia arborizada
@@ -1618,6 +1671,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Passagem de nível
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Impossível remover estação de ônibus
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Impossível remover parada de caminhões
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Impossível remover estação de bonde...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Impossível remover estação de bonde...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Cidades
@@ -1783,8 +1838,12 @@
 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}Precisa demolir a estação de ônibus primeiro
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Precisa demolir a estação de caminhão
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Precisa demolir estação de bonde primeiro
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Precisa demolir estação de bonde primeiro
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estações
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nenhuma -
@@ -1796,6 +1855,8 @@
 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_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
@@ -2016,6 +2077,7 @@
 STR_SV_STNAME_HELIPORT                                          :Heliporto de {STRING}
 STR_SV_STNAME_FOREST                                            :Floresta de {STRING}
 
+STR_SV_GROUP_NAME                                               :{GROUP}
 
 ############ end of savegame specific region!
 
@@ -2245,6 +2307,8 @@
 STR_LIVERY_HELICOPTER                                           :Helicóptero
 STR_LIVERY_SMALL_PLANE                                          :Aeronave Pequena
 STR_LIVERY_LARGE_PLANE                                          :Aeronave Grande
+STR_LIVERY_PASSENGER_TRAM                                       :Bonde de Passageiros
+STR_LIVERY_FREIGHT_TRAM                                         :Bonde de Carga
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Exibir esquemas de cor gerais
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Exibir esquemas de cor de trens
@@ -2602,6 +2666,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Impossível inserir nova ordem...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Impossível remover esta ordem...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Impossível modificar esta ordem...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Impossível pular a ordem atual...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Impossível pular à ordem selecionada...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Impossível mover veículo...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}A locomotiva traseira sempre deve seguir sua complementar frontal
 STR_8838_N_A                                                    :N/D{SKIP}
@@ -2633,7 +2699,7 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de ordens - clique numa ordem para a selecionar
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Saltar a ordem atual, e iniciar a próxima
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem selecionada fará com que o veículo não pare nas estações
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Inserir nova ordem antes da ordem selecionada, ou adicionar no fim da lista
@@ -2718,6 +2784,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_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...
@@ -3002,6 +3070,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Você está prestes a vender todos os automóveis da garagem. Você tem certeza?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Tipo de depósito errado
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vender todos os trens no depósito
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vender todos os automóveis na garagem
@@ -3195,6 +3264,7 @@
 
 ##### Mass Order
 STR_GROUP_NAME_FORMAT                                           :Agrupar {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
 STR_GROUP_ALL_TRAINS                                            :Todos os trens
 STR_GROUP_ALL_ROADS                                             :Todos os automóveis
 STR_GROUP_ALL_SHIPS                                             :Todos os navios
@@ -3203,7 +3273,12 @@
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Adicionar veículos compartilhados
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Remover todos os veículos
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Trem{P "" s}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Automóvel{P "" s}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Navio{P "" s}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aeronave
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}Renomear um grupo
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Substituir Veículos de "{GROUP}"
 
 STR_GROUP_CAN_T_CREATE                                          :{WHITE}Impossível criar grupo...
 STR_GROUP_CAN_T_DELETE                                          :{WHITE}Impossível remover grupo...
--- a/src/lang/bulgarian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/bulgarian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case accusative dative vocative nominative instrumental locative genitive
 ##gender мъжки женÑки Ñреден
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Извън картата
@@ -1100,6 +1102,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Изклучен
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Scrollwheel ÑкороÑÑ‚ на картата: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Ðвтоматична пауза Ñтартирайки нова игра: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Използваи напредналиат ÑпиÑък на превозни ÑредÑтва: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}МакÑ. влакове на играч: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}МакÑ. брой коли на играч: {ORANGE}{STRING}
@@ -1137,6 +1140,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Грацкиа план "нÑма повече пътища" е невалиден в Ñценарий редакторат
 STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Избери грацки пътформат: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :нÑма повече пътища
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :default
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :по-добри пътища
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2х2 мрежа
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3х3 мрежа
@@ -1393,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :ÐнглийÑки
 STR_NETWORK_LANG_GERMAN                                         :ÐемÑки
 STR_NETWORK_LANG_FRENCH                                         :ФренÑки
+STR_NETWORK_LANG_BRAZILIAN                                      :БразилÑки
+STR_NETWORK_LANG_BULGARIAN                                      :БългарÑки
+STR_NETWORK_LANG_CHINESE                                        :КитайÑки
+STR_NETWORK_LANG_CZECH                                          :Чешки
+STR_NETWORK_LANG_DANISH                                         :ДатÑки
+STR_NETWORK_LANG_DUTCH                                          :ХоландÑки
+STR_NETWORK_LANG_ESPERANTO                                      :EÑперанто
+STR_NETWORK_LANG_FINNISH                                        :ФинландÑки
+STR_NETWORK_LANG_HUNGARIAN                                      :УнгарÑки
+STR_NETWORK_LANG_ICELANDIC                                      :ИÑландÑки
+STR_NETWORK_LANG_ITALIAN                                        :ИталианÑки
+STR_NETWORK_LANG_JAPANESE                                       :ЯпонÑки
+STR_NETWORK_LANG_KOREAN                                         :КорейÑки
+STR_NETWORK_LANG_LITHUANIAN                                     :ЛитовÑки
+STR_NETWORK_LANG_NORWEGIAN                                      :Ðорвежки
+STR_NETWORK_LANG_POLISH                                         :ПолÑки
+STR_NETWORK_LANG_PORTUGUESE                                     :ПортугалÑки
+STR_NETWORK_LANG_ROMANIAN                                       :РумънÑки
+STR_NETWORK_LANG_RUSSIAN                                        :РуÑки
+STR_NETWORK_LANG_SLOVAK                                         :Словашки
+STR_NETWORK_LANG_SLOVENIAN                                      :СловенÑки
+STR_NETWORK_LANG_SPANISH                                        :ИÑпанÑки
+STR_NETWORK_LANG_SWEDISH                                        :ШведÑки
+STR_NETWORK_LANG_TURKISH                                        :ТурÑки
+STR_NETWORK_LANG_UKRAINIAN                                      :УкраинÑки
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Преддверие
@@ -1586,6 +1615,10 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :ЖП Ð»Ð¸Ð½Ð¸Ñ Ñ Ð¿Ñ€Ðµ-Ñигнали
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :ЖП Ð»Ð¸Ð½Ð¸Ñ Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸ Ñигнали
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :ЖП Ð»Ð¸Ð½Ð¸Ñ Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð¸ Ñигнали
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Железопътна линиа Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¸ и изходни Ñигнали
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Железопътна линиа Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¸ и Ñъединени Ñигнали
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Железопътна линиа Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸ и Ñъединени Ñигнали
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Железопътната гара Ñ‚Ñ€Ñбва да бъде премахната първо
 
 
 
@@ -1593,22 +1626,36 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Първо махнете пътÑ
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Пътни ремонти в процеÑ
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Пътно ÑтроителÑтво
+STR_1802_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_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}ÐŸÑŠÑ‚Ñ Ð½Ðµ може да Ñе махне...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° гараж
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}ПоÑока на Трамвайно Депо
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Гаража не може да Ñе поÑтрои...
+STR_1807_CAN_T_BUILD_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_180A_ROAD_CONSTRUCTION                                      :Пътно ÑтроителÑтво
+STR_180A_TRAMWAY_CONSTRUCTION                                   :КонÑтрукциа на трамвайна линиа
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Строене на път
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}ПоÑтрои Ñекциа от трамвайна линиа
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Строене на гараж (за Ñтроене и Ñервиз на МПС-та)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Строене на автогара
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Строене на товарна гара
+STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}ПоÑтрои пъгничеÑка трамвайна гара
+STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}ПоÑтрои товарна трамвайна гара
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}ПоÑтрой моÑÑ‚
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}ПоÑтрои трамвайен моÑÑ‚
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}ПоÑтрой тунел
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}ПоÑтрои трамвайен тунел
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Премахване на аÑфалтов път
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° гараж
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Избери поÑоката на трамвайното депо
 STR_1814_ROAD                                                   :път
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :ÐÑфалтов път Ñ ÑƒÐ»Ð¸Ñ‡Ð½Ð¸ лампи
 STR_1816_TREE_LINED_ROAD                                        :ÐÑфалтов път Ñ Ð´ÑŠÑ€Ð²ÐµÑ‚Ð°
@@ -1616,6 +1663,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :ЖП прелез
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Ðе може да премахне автогарата...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Ðе може да премахне товарната гара...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}ПътничеÑката трамвайна гара неможе да бъде премахната...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Товарната трамвайна гара неможе да бъде премахната...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Градове
@@ -1779,8 +1828,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Станци{P Ñ Ð¸}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ðиколко -
@@ -1792,6 +1845,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Центриране на Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† върху ÑтанциÑта
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Покажи нивото на обÑлужване
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}ПромÑна името на ÑтанциÑта
@@ -2242,6 +2297,8 @@
 STR_LIVERY_HELICOPTER                                           :Хеликоптер
 STR_LIVERY_SMALL_PLANE                                          :Малък аероплан
 STR_LIVERY_LARGE_PLANE                                          :ГолÑм аероплан
+STR_LIVERY_PASSENGER_TRAM                                       :ПътничеÑки Трамвай
+STR_LIVERY_FREIGHT_TRAM                                         :Товарен Трамвай
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Показване на общи цветови Ñхеми
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Показване цветовите Ñхеми на влаковете
@@ -2630,7 +2687,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Капацитет на влаковата композициÑ
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Общ капацитет на влака, разбит по типове товар
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Пътен лиÑÑ‚ - натиÑнете върху назначение за маркиране. CTRL + натиÑкане - центрира върху ÑтанциÑта
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}ПреÑкачане на текущото назначение и наÑочване към Ñледващото
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Изтриване на избраното назначение
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Преминавай през избраното назначение без Ñпиране
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}ДобавÑне на назначение преди избраната или в ÐºÑ€Ð°Ñ Ð½Ð° ÑпиÑъка
@@ -2999,6 +3055,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Потвърдете продажбата на вÑички превозни ÑредÑтва в депото?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Погрешен депо теп
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Продажба вÑички влакове в депото
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Продажба вÑички автомобили в гаража
@@ -3191,11 +3248,39 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Използвай прозрачноÑÑ‚ за Ñгради като фарове и антени, може би в бъдеще за украÑи
 
 ##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Група {COMMA}
 STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Ð’Ñички влакове
+STR_GROUP_ALL_ROADS                                             :Ð’Ñички пътни превозни ÑредÑтва
+STR_GROUP_ALL_SHIPS                                             :Ð’Ñички кораби
+STR_GROUP_ALL_AIRCRAFTS                                         :Ð’Ñички Ñамолети
 STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Добави Ñподелени превозни ÑредÑтва
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Премахни вÑички превозни ÑредÑва
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Влак{P "" s}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Пътно Превозно СредÑтво{P "" s}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Кораб{P "" s}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Самолет
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Преименовай група
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Замени Превозни ÑредÑтва на "{GROUP}"
 
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Групата неможе да бъде Ñъздадена...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Тази група неможе да бъде изтрита...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Групата неможе да бъде преименована...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Ð’Ñички превозни ÑредÑтва немогат да бъдат премахнати от тази група...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Превозното ÑредÑтво неможе да Ñе добави към тази група...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Поделени превозни ÑредÑва немогат да бъдат добавени към групата...
 
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Групи - Щракни на група за да видиш ÑпиÑък на вÑички превозни ÑредÑтва от тази група
+STR_GROUP_CREATE_TIP                                            :{BLACK}Щракни да Ñъздадеш група
+STR_GROUP_DELETE_TIP                                            :{BLACK}Изтрий избраната група
+STR_GROUP_RENAME_TIP                                            :{BLACK}Преименувай избраната група
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Щракни да защитиш тази група от глобална автоматична замÑна
 
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Печалба тази година: {GREEN}{CURRENCY} {BLACK}(предишната година: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Печалба тази година: {RED}{CURRENCY} {BLACK}(предишната година: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Печалба тази година: {GREEN}{CURRENCY} {BLACK}(предишната година: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Печалба тази година: {RED}{CURRENCY} {BLACK}(предишната година: {RED}{CURRENCY}{BLACK})
 
 ########
--- a/src/lang/catalan.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/catalan.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode ca_ES
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Fora del marc del mapa
@@ -991,10 +993,10 @@
 STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Tren {COMMA} té una ordre buida
 STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Tren {COMMA} té ordres duplicades
 STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Tren {COMMA} té una estació incorrecta en les ordres
-STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Vehicle Rodat {COMMA} té massa poques ordres a la planificació
-STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Vehicle Rodat {COMMA} té una ordre buida
-STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Vehicle Rodat {COMMA} té ordres duplicades
-STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Vehicle Rodat {COMMA} té una estació incorrecta en les ordres
+STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Vehicle {COMMA} té massa poques ordres a la planificació
+STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Vehicle {COMMA} té una ordre buida
+STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Vehicle {COMMA} té ordres duplicades
+STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Vehicle {COMMA} té una estació incorrecta en les ordres
 STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Vaixell {COMMA} té massa poques ordres a la planificació
 STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Vaixell {COMMA} té una ordre buida
 STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Vaixell {COMMA} té ordres duplicades
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nova cerca de rutes global (NPF, anul·la NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Multiplicador de pes per contenidor per simular trens pesats: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Permet situar parades en carreteres que són propietat del poble: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Permetre construir estacions annexes: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Permet sempre aeroports petits: {ORANGE}{STRING}
 
@@ -1086,6 +1089,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Manteniment dels helicopters als heliports automàticament: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Enllaça la barra d'eines del paisatge a les barres d'eines de vies/carreteres/aigua/aeroports {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}En desplaçar la pantalla amb el ratolí mou la vista en la direcció contrària: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Desplaçament suau de la vista: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Mostra un cartell de mesura quan estiguis utilitzant vàries eines de construcció: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Mostra la decoració de la companyia: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Cap
@@ -1098,6 +1102,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Off
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Velocitat del mapa amb la rodeta del ratolí: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Posa en pausa automàticament en començar un joc nou: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Utilitza la llista de vehicles avançada: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Max trens per jugador: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Max automòbils per jugador: {ORANGE}{STRING}
@@ -1392,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Anglès
 STR_NETWORK_LANG_GERMAN                                         :Alemany
 STR_NETWORK_LANG_FRENCH                                         :Francès
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasiler
+STR_NETWORK_LANG_BULGARIAN                                      :Búlgar
+STR_NETWORK_LANG_CHINESE                                        :Xinès
+STR_NETWORK_LANG_CZECH                                          :Txec
+STR_NETWORK_LANG_DANISH                                         :Danès
+STR_NETWORK_LANG_DUTCH                                          :Holandès
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finès
+STR_NETWORK_LANG_HUNGARIAN                                      :Hongarès
+STR_NETWORK_LANG_ICELANDIC                                      :Islandès
+STR_NETWORK_LANG_ITALIAN                                        :Italià
+STR_NETWORK_LANG_JAPANESE                                       :Japonès
+STR_NETWORK_LANG_KOREAN                                         :Koreà
+STR_NETWORK_LANG_LITHUANIAN                                     :Lituà
+STR_NETWORK_LANG_NORWEGIAN                                      :Noruec
+STR_NETWORK_LANG_POLISH                                         :Polonès
+STR_NETWORK_LANG_PORTUGUESE                                     :Portuguès
+STR_NETWORK_LANG_ROMANIAN                                       :Romanès
+STR_NETWORK_LANG_RUSSIAN                                        :Rus
+STR_NETWORK_LANG_SLOVAK                                         :Eslovac
+STR_NETWORK_LANG_SLOVENIAN                                      :Eslovè
+STR_NETWORK_LANG_SPANISH                                        :Espanyol
+STR_NETWORK_LANG_SWEDISH                                        :Suec
+STR_NETWORK_LANG_TURKISH                                        :Turc
+STR_NETWORK_LANG_UKRAINIAN                                      :Ucraïnès
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Lobby de partida multijugador
@@ -1585,6 +1615,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Via de tren amb pre-senyals
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Via de tren amb senyals de sortida
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Via de tren amb senyals combinades
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Via de tren amb senyals normals i pre-senyals
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Via de tren amb senyals normals i senyals de sortida
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Via de tren amb senyals normals i senyals combinades
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Via de tren amb pre-senyals i senyals de sortida
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Via de tren amb pre-senyals i senyals combinades
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Via de tren amb senyals de sortida i senyals combinades
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Primer has de treure la via de l'estació
 
 
 
@@ -1592,22 +1629,39 @@
 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 via de tramvia
 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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Cotxeres
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Construcció de Carreteres
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Construcció de vies de tramvia
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construeix una secció de carretera
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construeix secció de via de tramvia
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construeix un pont per carretera
+STR_180F_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_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_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_1814_ROAD                                                   :Carretera
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Carretera amb fanals
 STR_1816_TREE_LINED_ROAD                                        :Carretera de tres carrils
@@ -1615,6 +1669,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Pas a nivell
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}No es pot treure l'estació d'autobusos...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}No es pot treure l'estació de camions...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}No puc treure l'estació de tramvies de passatgers
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}No puc treure l'estació de tramvies de mercaderies
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Poblacions
@@ -1778,8 +1834,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Estacions/Parades
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Cap -
@@ -1791,6 +1851,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_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ó
@@ -1973,7 +2035,7 @@
 STR_SV_EMPTY                                                    :
 STR_SV_UNNAMED                                                  :Sense Nom
 STR_SV_TRAIN_NAME                                               :Tren {COMMA}
-STR_SV_ROADVEH_NAME                                             :Vehicle Rodat {COMMA}
+STR_SV_ROADVEH_NAME                                             :Vehicle {COMMA}
 STR_SV_SHIP_NAME                                                :Vaixell {COMMA}
 STR_SV_AIRCRAFT_NAME                                            :Aeronau {COMMA}
 
@@ -2011,6 +2073,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliport
 STR_SV_STNAME_FOREST                                            :{STRING} Bosc
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2107,12 +2171,12 @@
 STR_7011_CONSTRUCTION                                           :{GOLD}Construcció
 STR_7012_NEW_VEHICLES                                           :{GOLD}Nous Vehicles
 STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Desp. de Circ. de Trens
-STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. de Vehicles Rodats
+STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. de Vehicles
 STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Desp. de Circ. d'Aeronaus
 STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Desp. de Circ. de Vaixells
 STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Manteniment de Propietats
 STR_7018_TRAIN_INCOME                                           :{GOLD}Ingressos de Tren
-STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Ingressos de Vehicles Rodats
+STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Ingressos de Vehicles
 STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Ingressos d'Aeronaus
 STR_701B_SHIP_INCOME                                            :{GOLD}Ingressos de Vaixells
 STR_701C_LOAN_INTEREST                                          :{GOLD}Interessos del Prèstec
@@ -2239,6 +2303,8 @@
 STR_LIVERY_HELICOPTER                                           :Helicòpter
 STR_LIVERY_SMALL_PLANE                                          :Avió petit
 STR_LIVERY_LARGE_PLANE                                          :Avió gran
+STR_LIVERY_PASSENGER_TRAM                                       :Tramvia de passatgers
+STR_LIVERY_FREIGHT_TRAM                                         :Tramvia de càrrega
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Mostra esquemes de colors generals
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Mostra els esquemes de colors dels trens
@@ -2596,6 +2662,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}No es pot afegir una nova ordre...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}No es pot esborrar aquesta ordre...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}No es pot modificar aquesta ordre...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Impossible moure aquesta ordre...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Impossible saltar l'ordre actual...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Impossible saltar l'ordre seleccionada...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}No es pot moure el vehicle...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}La màquina posterior sempre ha de seguir la seva parella davantera
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2627,7 +2696,7 @@
 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_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
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Fer sense parades l'ordre seleccionada
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Afegeix una nova ordre abans de la seleccionada, o afegeix-la al final de la llista
@@ -2667,11 +2736,11 @@
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Automòbil en camí
-STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} Vehicles Rodats
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} Vehicles
 STR_9002                                                        :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Cotxera de Vehicles Rodats
+STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}{TOWN} Cotxera de Vehicles
 STR_9004_NEW_VEHICLES                                           :{BLACK}Nous Vehicles
-STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Nous Vehicles Rodats
+STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Nous Vehicles
 STR_9007_BUILD_VEHICLE                                          :{BLACK}Construeix Vehicle
 STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}No es pot construir l'automòbil...
 STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Detalls)
@@ -2684,7 +2753,7 @@
 STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...s'ha de parar dins d'una cotxera
 STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}No pots vendre l'automòbil...
 STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}No es pot parar/arrencar l'automòbil...
-STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Vehicle Rodat {COMMA} esperant en cotxera
+STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Vehicle {COMMA} esperant en cotxera
 STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Cap a la cotxera de {TOWN}.
 STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Cap a la cotxera de {TOWN}, a {VELOCITY}
 STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Revisió a la cotxera de {TOWN}
@@ -2703,7 +2772,7 @@
 STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Construeix un nou automòbil
 STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Arrossega el vehicle fins aquí per vendre'l
 STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Centra la pantalla principal en la situació de la cotxera
-STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Llista de selecció de Vehicles Rodats - clica en un vehicle per informació
+STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Llista de selecció de Vehicles - clica en un vehicle per informació
 STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Construeix l'automòbil seleccionat
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Cost: {CURRENCY}{}Velocitat: {VELOCITY}{}Cost de circulació: {CURRENCY}/any{}Capacitat: {CARGO}
 
@@ -2712,8 +2781,10 @@
 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_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Accident de Vehicle Rodat!{}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 Rodat!{}{COMMA} moren en una bola de foc després d'una colisió amb un tren
+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_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...
 STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}No es poden girar vehicles que estan formats per múltiples unitats
 STR_9034_RENAME                                                 :{BLACK}Reanomena
@@ -2996,6 +3067,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Estàs a punt de vendre tots els vehicles de la cotxera. N'estàs segur?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Tipus de cotxera incorrecta
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vendre tots els trens de la cotxera
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vendre tots els vehicles de la cotxera
@@ -3005,7 +3077,7 @@
 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP                          :{BLACK}Treure una llista de tots els trens amb aquesta cotxera en les seves ordres
 STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP                        :{BLACK}Treure una llista de tots els vehicles amb aquesta cotxera en les seves ordres
 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Treure una llista de tots els vaixells amb aquesta drassana en les seves ordres
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Treu una llista de tots els avions amb algun hangar en aquest aeroport en les seves ordres
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Treu una llista de tots les aeronaus amb algun hangar en aquest aeroport en les seves ordres
 
 STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Autosubstitueix tots els trens de la cotxera
 STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Autosubstitueix tots els vehicles de la cotxera
@@ -3186,3 +3258,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Activa/Desactiva transparència dels edificis com ara estacions, cotxeres, punts de trobada i catenàries
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Activa/Desactiva transparència dels ponts
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Activa/Desactiva transparència de les estructures com ara fars i antenes
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Grup {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Tots els trens
+STR_GROUP_ALL_ROADS                                             :Tots els vehicles
+STR_GROUP_ALL_SHIPS                                             :Tots els vaixells
+STR_GROUP_ALL_AIRCRAFTS                                         :Totes les aeronaus
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Afegeix vehicles compartits
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Treu tots els vehicles
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Tren{P "" s}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Vehicle{P "" s}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Vaixell{P "" s}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aeronau
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Canvia de nom el grup
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Substitueix els Vehicles de "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}No puc crear el  grup...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}No puc eliminar aquest grup...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}No puc canviar el nom del grup...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}No puc eliminar tots els vehicles d'aquest grup...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}No puc afegir el vehicle a aquest grup...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}No puc afegir vehicles compartits al grup...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Grups - Clica en un grup per llistar tots els vehicles d'aquest grup
+STR_GROUP_CREATE_TIP                                            :{BLACK}Clica per crear un grup
+STR_GROUP_DELETE_TIP                                            :{BLACK}Elimina el grup seleccionat
+STR_GROUP_RENAME_TIP                                            :{BLACK}Canvia el nom del grup seleccionat
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Clica per protegir aquest grup de l'autosubstitueix global
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Benefici aquest any: {GREEN}{CURRENCY} {BLACK}(any passat: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Benefici aquest any: {RED}{CURRENCY} {BLACK}(any passat: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Benefici aquest any: {GREEN}{CURRENCY} {BLACK}(any passat: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Benefici aquest any: {RED}{CURRENCY} {BLACK}(any passat: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/czech.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/czech.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -1,10 +1,12 @@
 ##name Czech
-##ownname ÄŒesky
-##isocode cs_CS
+##ownname Čeština
+##isocode cs_CZ
 ##plural 6
 ##case nom gen dat acc voc loc ins big
 ##gender f m n
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Mimo okraj mapy
@@ -1104,6 +1106,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nový globální algoritmus hledání cesty (NPF, nahradí NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Pro simulaci těžkých vlaků vynásobit hmotnost nákladu: {ORANGE}{STRING}x
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Povolit průjezdné zastávky na silnicích vlastněných obcemi: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Povolit stavění přilehlých stanic: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Malá letiště se budou moci stále stavět: {ORANGE}{STRING}
 
@@ -1144,6 +1147,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Údržba vrtulníků na heliportech: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Otevírat lištu na úpravy terénu s lištami na výstavbu tratí/silnic atd.: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Posouvat pohled opaÄným smÄ›rem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Plynulé posouvání po mapě: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Ukázat rozměry při použití stavebních nástrojů: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Zobrazovat barvy spoleÄnosti pro: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :žádnou spoleÄnost
@@ -1156,6 +1160,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :nic
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rychlost skrolovacího koleÄka: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Zastavit automaticky hru pÅ™i zaÄínání nové hry: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Používat pokroÄilý seznam vozidel: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maximum vlaků na hráÄe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximum silniÄních vozidel na hráÄe: {ORANGE}{STRING}
@@ -1450,6 +1455,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :AngliÄtina
 STR_NETWORK_LANG_GERMAN                                         :NÄ›mÄina
 STR_NETWORK_LANG_FRENCH                                         :Francouzština
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazilská portugalština
+STR_NETWORK_LANG_BULGARIAN                                      :Bulharština
+STR_NETWORK_LANG_CHINESE                                        :Čínština
+STR_NETWORK_LANG_CZECH                                          :Čeština
+STR_NETWORK_LANG_DANISH                                         :Dánština
+STR_NETWORK_LANG_DUTCH                                          :Nizozemština
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finština
+STR_NETWORK_LANG_HUNGARIAN                                      :MaÄarÅ¡tina
+STR_NETWORK_LANG_ICELANDIC                                      :Islandština
+STR_NETWORK_LANG_ITALIAN                                        :Italština
+STR_NETWORK_LANG_JAPANESE                                       :Japonština
+STR_NETWORK_LANG_KOREAN                                         :Korejština
+STR_NETWORK_LANG_LITHUANIAN                                     :Litevština
+STR_NETWORK_LANG_NORWEGIAN                                      :Norština
+STR_NETWORK_LANG_POLISH                                         :Polština
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugalština
+STR_NETWORK_LANG_ROMANIAN                                       :Rumunština
+STR_NETWORK_LANG_RUSSIAN                                        :Ruština
+STR_NETWORK_LANG_SLOVAK                                         :Slovenština
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovinština
+STR_NETWORK_LANG_SPANISH                                        :Španělština
+STR_NETWORK_LANG_SWEDISH                                        :Švédština
+STR_NETWORK_LANG_TURKISH                                        :TureÄtina
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrajinština
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Vstupní místnost do multiplayerové hry
@@ -1643,6 +1673,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :ŽelezniÄní traÅ¥ s presignály
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :ŽelezniÄní traÅ¥ s výstupními signály
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :ŽelezniÄní traÅ¥ s kombinovanými signály
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Koleje s normálním a vjezdovým návěstím (pre-signal)
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Koleje s normálním a výjezdovým návěstím (exit-signal)
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Koleje s normálním a cestovým návěstím (combo-signal)
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Koleje s vjezdovým (pre-signal) a výjezdovým návěstím (exit-signal)
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Koleje s vjezdovým (pre-signal) a cestovým návěstím (combo-signal)
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Koleje s výjezdovým (exit-signal) a cestovým návěstím (combo-signal)
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Je nejprve nutno odstranit stanici
 
 
 
@@ -1650,22 +1687,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientace garáže
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Výstavba silnic
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Výstavba tramvajové tratě
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Postavit silnici
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Položit kus kolejí pro tramvaje
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Postavit silniÄní most
+STR_180F_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_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_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_1814_ROAD                                                   :Silnice
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Silnice s pouliÄním osvÄ›tlením
 STR_1816_TREE_LINED_ROAD                                        :Silnice s alejí
@@ -1673,6 +1727,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :ŽelezniÄní pÅ™ejezd
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Nelze odstranit autobusovou zastávku...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Nelze odstranit nakládací rampu...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Nelze zbourat tramvajovou stanici pro cestující...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Nelze odstranit nákladní tramvajovou stanici...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Města
@@ -1836,8 +1892,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stanic{P e e ""}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nic -
@@ -1849,6 +1909,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_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
@@ -2069,6 +2131,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} heliport
 STR_SV_STNAME_FOREST                                            :{STRING} les
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2297,6 +2361,8 @@
 STR_LIVERY_HELICOPTER                                           :Vrtulník
 STR_LIVERY_SMALL_PLANE                                          :Malé letadlo
 STR_LIVERY_LARGE_PLANE                                          :Velké letadlo
+STR_LIVERY_PASSENGER_TRAM                                       :Tramvaj pro cestující
+STR_LIVERY_FREIGHT_TRAM                                         :Nákladní tramvaj
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Zobrazit všeobecná barevná schémata
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Zobrazit barevná schémata pro vlaky
@@ -2660,6 +2726,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Nemohu přidat nový příkaz
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Nemohu tento příkaz smazat...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Nemohu tento příkaz změnit...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Nelze pÅ™eskoÄit souÄasný příkaz...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Nelze pÅ™eskoÄit na oznaÄený příkaz...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Nemohu přesunout vozidlo...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Zadní stroj vždy doprovází svůj protějšek vepředu
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2691,7 +2759,7 @@
 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_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ší
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Provést oznaÄený příkaz bez zastavení
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Vložit nový příkaz pÅ™ed oznaÄený příkaz nebo na konec seznamu
@@ -2776,6 +2844,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_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...
@@ -3060,6 +3130,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Chceš prodat všechna vozidla v depu. Jsi si jistý?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Nevhodný druh depa
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Prodat všechny vlaky v depu
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Prodat vÅ¡echna silniÄní vozidla v depu
@@ -3250,3 +3321,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, kontrolních bodů a vedení
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Změna průhlednosti mostů
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}ZmÄ›na průhlednosti staveb jako majáků, vysílaÄů a doplňků (v budoucnosti)
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Skupina {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :VÅ¡echny vlaky
+STR_GROUP_ALL_ROADS                                             :VÅ¡echna silniÄní vozidla
+STR_GROUP_ALL_SHIPS                                             :VÅ¡echny lodÄ›
+STR_GROUP_ALL_AIRCRAFTS                                         :VÅ¡echna letadla
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Přidat sdílená vozidla
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Odstranit všechna vozidla
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} vlak{P "" y ů}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} silniÄní{P "" "" ch} vozid{P lo la el}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} lo{P Ä dÄ› dí}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} letad{P lo la el}
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Přejmenovat skupinu
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Vyměnit vozidla "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Nelze vytvořit skupinu...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Nelze vymazat skupinu...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Nelze přejmenovat skupinu...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Nelze odstranit všechna vozidla ze skupiny...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Nelze přidat vozidlo do skupiny...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Nelze přidat sdílená vozidla do skupiny...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Skupiny - Kliknutím na skupinu se zobrazí seznam vozidel ve skupině
+STR_GROUP_CREATE_TIP                                            :{BLACK}Kliknutím vytvoříš skupinu
+STR_GROUP_DELETE_TIP                                            :{BLACK}Vymazat vybranou skupinu
+STR_GROUP_RENAME_TIP                                            :{BLACK}Přejmenovat vybranou skupinu
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Kliknutím nebude na tuto skupinu mít vliv automatická výměna vozidel
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Letošní příjem: {GREEN}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Letošní příjem: {RED}{CURRENCY} {BLACK}(minulý rok: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/danish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/danish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode da_DA
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Ude over kanten af kortet
@@ -462,7 +464,7 @@
 STR_018D_DEMOLISH_BUILDINGS_ETC                                 :{BLACK}Nedriv bygninger osv. på et stykke land
 STR_018E_LOWER_A_CORNER_OF_LAND                                 :{BLACK}Sænk et hjørne af landet
 STR_018F_RAISE_A_CORNER_OF_LAND                                 :{BLACK}Hæv et hjørne af landet
-STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Scroll bar - scroller listen op/ned
+STR_0190_SCROLL_BAR_SCROLLS_LIST                                :{BLACK}Scrollbar - scroller listen op/ned
 STR_HSCROLL_BAR_SCROLLS_LIST                                    :{BLACK}Scroll bar - flytter listen mod venstre/højre
 STR_0191_SHOW_LAND_CONTOURS_ON_MAP                              :{BLACK}Vis landskabskonturer på kortet
 STR_0192_SHOW_VEHICLES_ON_MAP                                   :{BLACK}Vis køretøjer på kortet
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ny global ruteplanlægger (NPF, tilsidesætter NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Vægtfaktor for fragt for at simulere tunge tog: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Tillad gennemkørsels-stop på veje ejet af en by: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Tillad bygning af tilstødende stationer: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Tillad altid små lufthavne: {ORANGE}{STRING}
 
@@ -1086,6 +1089,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Automatisk service på helikopterlandingspladser: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Forbind landskabsværktøjer med skinne/vej/vand/lufthavn: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Flyt i modsat retning ved scroll med musen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Jævn scrolling af udsnit: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Vis måleværktøjstip ved brug af div. bygge-værktøjer: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Vis selskabsfarver: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Ingen
@@ -1393,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Engelsk
 STR_NETWORK_LANG_GERMAN                                         :Tysk
 STR_NETWORK_LANG_FRENCH                                         :Fransk
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasiliansk
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgarsk
+STR_NETWORK_LANG_CHINESE                                        :Kinesisk
+STR_NETWORK_LANG_CZECH                                          :Tjekkisk
+STR_NETWORK_LANG_DANISH                                         :Dansk
+STR_NETWORK_LANG_DUTCH                                          :Hollandsk
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finsk
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungarsk
+STR_NETWORK_LANG_ICELANDIC                                      :Islandsk
+STR_NETWORK_LANG_ITALIAN                                        :Italiensk
+STR_NETWORK_LANG_JAPANESE                                       :Japansk
+STR_NETWORK_LANG_KOREAN                                         :Koreansk
+STR_NETWORK_LANG_LITHUANIAN                                     :Litauisk
+STR_NETWORK_LANG_NORWEGIAN                                      :Norsk
+STR_NETWORK_LANG_POLISH                                         :Polsk
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugisisk
+STR_NETWORK_LANG_ROMANIAN                                       :Rumænsk
+STR_NETWORK_LANG_RUSSIAN                                        :Russisk
+STR_NETWORK_LANG_SLOVAK                                         :Slovakisk
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovensk
+STR_NETWORK_LANG_SPANISH                                        :Spansk
+STR_NETWORK_LANG_SWEDISH                                        :Svensk
+STR_NETWORK_LANG_TURKISH                                        :Tyrkisk
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainsk
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Netværksspils lobby
@@ -1565,7 +1594,7 @@
 STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Kan ikke bygge jernbane her...
 STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Kan ikke fjerne jernbane herfra...
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Kan ikke fjerne signaler herfra...
-STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Retning for remise
+STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Retning af remise
 STR_1015_RAILROAD_CONSTRUCTION                                  :Jernbanekonstruktion
 STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Elektrisk jernbanekonstruktion
 STR_1016_MONORAIL_CONSTRUCTION                                  :Monorailkonstruktion
@@ -1583,9 +1612,16 @@
 STR_1023_RAILROAD_TRAIN_DEPOT                                   :Remise
 STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...området ejes af et andet selskab
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Jernbane med almindelige signaler
-STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbane med indkørselssignaler
-STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbane med udkørselssignaler
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbane med kombinerede ind- og udkørselssignaler
+STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbane med præ-signaler
+STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbane med exit-signaler
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbane med kombi-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Jernbanespor med normale og præ-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Jernbanespor med normale og exit-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Jernbanespor med normale og kombi-signaler
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Jernbanespor med præ- og exit-signaler
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Jernbanespor med præ- og kombi-signaler
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Jernbanespor med exit- og kombi-signaler
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Jernbanestation skal fjernes først
 
 
 
@@ -1593,22 +1629,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Retning af værksted
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Vejkonstruktion
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Sporvejskonstruktion
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Byg en sektion vej
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Byg sporvejssektion
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Byg bro
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Byg sporvejsbro
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Byg tunnel
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Byg sporvejstunnel
 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_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_1814_ROAD                                                   :Vej
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Vej med gadelygter
 STR_1816_TREE_LINED_ROAD                                        :Vej med vejtræer
@@ -1616,6 +1669,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Jernbaneoverskæring
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kan ikke fjerne rutebilstation...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kan ikke fjerne fragtcentral...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Kan ikke fjerne passager-sporvognsstation
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Kan ikke fjerne fragt-sporvognsstation
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Byer
@@ -1779,8 +1834,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stationer
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ingen -
@@ -1792,6 +1851,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_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
@@ -1821,10 +1882,10 @@
 STR_STAT_CLASS_WAYP                                             :Kontrolsteder
 
 ##id 0x3800
-STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Skibsdok orientering
+STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Retning af skibsdok
 STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...skal bygges på vand
 STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Kan ikke bygge en skibsdok her...
-STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Vælg orientering af skibsdok
+STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Vælg retning af skibsdok
 STR_3804_WATER                                                  :Vand
 STR_3805_COAST_OR_RIVERBANK                                     :Kyst eller flodbred
 STR_3806_SHIP_DEPOT                                             :Skibsdok
@@ -2242,6 +2303,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Lille fly
 STR_LIVERY_LARGE_PLANE                                          :Stort fly
+STR_LIVERY_PASSENGER_TRAM                                       :Passager-sporvogn
+STR_LIVERY_FREIGHT_TRAM                                         :Fragt-sporvogn
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Vis generelle farveskemaer
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Vis farveskemaer for tog
@@ -2599,6 +2662,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Kan ikke indsætte ny ordre...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Kan ikke slette denne ordre...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Kan ikke ændre denne ordre...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Kan ikke flytte denne ordre...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Kan ikke springe over nuværende ordre...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Kan ikke springe over valgt ordre...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Kan ikke flytte køretøjet...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Det bagerste lokomotiv vil altid følge dets forende
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2630,7 +2696,7 @@
 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_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 den nuværende ordre og gå til den næste
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Lav den markerede ordre til en "uden stop" ordre
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Indsæt en ny ordre før den markerede eller ved slutningen af ordrelisten
@@ -2715,6 +2781,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_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...
@@ -2999,6 +3067,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Du er ved at sælge alle køretøjer i depotet. Er du sikker?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Forkert depottype
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Sælg alle toge i remisen
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Sælg alle køretøjer i værkstedet
--- a/src/lang/dutch.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/dutch.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode nl_NL
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Buiten de kaart
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nieuwe globale routeplanner (NPF, voorkeur over NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Gewichtsverhouding voor vracht om zware treinen te simuleren: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Laat toe dat doorrij wegstops worden geplaatst op door stad beheerde wegen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Bouwen van aangrenzende stations toestaan: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Altijd kleine vliegvelden toestaan: {ORANGE}{STRING}
 
@@ -1086,6 +1089,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Helikopters automatisch repareren op helipads: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Verbind de landschaptoolbar met de trein/weg/water/vliegveld toolbars: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Omgekeerde scrollrichting: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Vloeiend scrollen kijkvenster: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Toon dimensie informatie bij het gebruik van diverse bouw-tools: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Laat all bedrijfslogo's zien: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Niets
@@ -1393,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Engels
 STR_NETWORK_LANG_GERMAN                                         :Duits
 STR_NETWORK_LANG_FRENCH                                         :Frans
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazilliaans
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgaars
+STR_NETWORK_LANG_CHINESE                                        :Chinees
+STR_NETWORK_LANG_CZECH                                          :Tchechisch
+STR_NETWORK_LANG_DANISH                                         :Deens
+STR_NETWORK_LANG_DUTCH                                          :Nederlands
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Fins
+STR_NETWORK_LANG_HUNGARIAN                                      :Hongaars
+STR_NETWORK_LANG_ICELANDIC                                      :IJslands
+STR_NETWORK_LANG_ITALIAN                                        :Italiaans
+STR_NETWORK_LANG_JAPANESE                                       :Japans
+STR_NETWORK_LANG_KOREAN                                         :Koreaans
+STR_NETWORK_LANG_LITHUANIAN                                     :Litouws
+STR_NETWORK_LANG_NORWEGIAN                                      :Noors
+STR_NETWORK_LANG_POLISH                                         :Pools
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugees
+STR_NETWORK_LANG_ROMANIAN                                       :Roemeens
+STR_NETWORK_LANG_RUSSIAN                                        :Russisch
+STR_NETWORK_LANG_SLOVAK                                         :Slovaaks
+STR_NETWORK_LANG_SLOVENIAN                                      :Sloveens
+STR_NETWORK_LANG_SPANISH                                        :Spaans
+STR_NETWORK_LANG_SWEDISH                                        :Zweeds
+STR_NETWORK_LANG_TURKISH                                        :Turks
+STR_NETWORK_LANG_UKRAINIAN                                      :Oekraïne
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Multiplayer lobby
@@ -1586,6 +1615,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Spoor met voorseinen
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Spoor met uitgangseinen
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Spoor met combinatieseinen
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Spoor met normale en pre-seinen
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Spoor met normale en uitgangs-signalen
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Spoor met normale en dubbele-signalen
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Spoor met pre- en uitgangs- signalen
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Spoor met pre- en dubbele- signalen
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Spoor met uitgangs- en dubbele- signalen
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Treinstation moet eerst verwijderd worden
 
 
 
@@ -1593,22 +1629,39 @@
 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_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Kies brug
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... een richtings wegen kunnen geen kruisingen hebben
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kan hier geen weg bouwen...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kan geen tramrails bouwen hier...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kan hier geen weg weghalen...
+STR_1805_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_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_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_180A_ROAD_CONSTRUCTION                                      :Wegenbouw
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramrails constructie
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bouw weg
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bouw tramrails onderdeel
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bouw brug voor wegvoertuigen
+STR_180F_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_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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Selecteer richting van wegvoertuigdepot
+STR_1813_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
@@ -1616,6 +1669,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Gelijke weg/spoorweg kruising
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kan busstation niet verwijderen...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kan vrachtwagenstation niet verwijderen...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Kan passagiers tram station niet verwijderen...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Kan vracht tram station niet verwijderen...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Steden
@@ -1779,8 +1834,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stations
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Geen -
@@ -1792,6 +1851,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centreer hoofdbeeld op lokatie van station
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Bekijk stationsreputaties
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Hernoem station
@@ -2242,6 +2303,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Klein Vliegtuig
 STR_LIVERY_LARGE_PLANE                                          :Groot Vliegtuig
+STR_LIVERY_PASSENGER_TRAM                                       :Passagiers tram
+STR_LIVERY_FREIGHT_TRAM                                         :Vracht tram
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Laat de algemene kleurschema's zien
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Laat trein kleurschema's zien
@@ -2599,6 +2662,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Kan nieuwe order niet invoegen...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Kan deze order niet verwijderen...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Kan deze order niet aanpassen...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Kan huidige order niet overslaan...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Kan geselecteerde order niet overslaan...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Kan voertuig niet verplaatsen...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}De achterste locomotief zal altijd het voorste deel volgen
 STR_8838_N_A                                                    :NVT.{SKIP}
@@ -2630,7 +2695,7 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Laat de mogelijkheden van elk voertuig zien
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Laat totale capaiteit van trein zien, gescheiden door goederentype
 STR_8852_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 de huidige order over en begin met de volgende
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Maak de geselecteerde order non-stop
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Voeg een nieuwe order in voor de geselecteerde order, of voeg het toe aan de eind van de lijst
@@ -2715,6 +2780,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}Infwoners feesten . . .{}Eerste passagiers tram arriveert in {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Inwoners feesten . . .{}Eerste vracht tram arriveert in {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}Bestuurder verongelukt door treinbotsing
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Wegvoertuig gebotst!{}{COMMA} verongelukt door treinbotsing
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Kan voertuig niet omdraaien...
@@ -2965,8 +3032,8 @@
 STR_NEWGRF_COMPATIBLE_LOADED                                    :{ORANGE}Bijbehorend bestand niet gevonden (compatibel GRF geladen)
 
 STR_NEWGRF_COMPATIBLE_LOAD_WARNING                              :{WHITE}Compatibele GRF(s) geladen voor ontbrekende bestanden
-STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Ontbrekende GRF bestand(en) zijn uitgeschakeld
-STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}GRF bestand(en) om dit spel te kunnen laden ontbreken
+STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Missend(e) GRF bestand(en) zijn uitgeschakeld
+STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}Er zijn missende GRF bestanden om het spel te laden
 
 STR_CURRENCY_WINDOW                                             :{WHITE}Aangepaste valuta
 STR_CURRENCY_EXCHANGE_RATE                                      :{LTBLUE}Wisselkoers: {ORANGE}{CURRENCY} = £ {COMMA}
@@ -2999,6 +3066,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Je staat op het punt alle voertuigen in het depot te verkopen. Weet je het zeker?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Verkeerd depot type
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Verkoop alle treinen in het depot
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Verkoop alle weg voertuigen in het depot
--- a/src/lang/english.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/english.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -1050,6 +1050,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Allow drive-through road stops on town owned roads: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Allow building adjacent stations: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Always allow small airports: {ORANGE}{STRING1}
 
@@ -1090,6 +1091,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Service helicopters at helipads automatically: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Link landscape toolbar to rail/road/water/airport toolbars: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Reverse scroll direction: {ORANGE}{STRING1}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Smooth viewport scrolling: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Show a measurement tooltip when using various build-tools: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Show company liveries: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :None
@@ -1397,6 +1399,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :English
 STR_NETWORK_LANG_GERMAN                                         :German
 STR_NETWORK_LANG_FRENCH                                         :French
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazilian
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgarian
+STR_NETWORK_LANG_CHINESE                                        :Chinese
+STR_NETWORK_LANG_CZECH                                          :Czech
+STR_NETWORK_LANG_DANISH                                         :Danish
+STR_NETWORK_LANG_DUTCH                                          :Dutch
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finnish
+STR_NETWORK_LANG_HUNGARIAN                                      :Hungarian
+STR_NETWORK_LANG_ICELANDIC                                      :Icelandic
+STR_NETWORK_LANG_ITALIAN                                        :Italian
+STR_NETWORK_LANG_JAPANESE                                       :Japanese
+STR_NETWORK_LANG_KOREAN                                         :Korean
+STR_NETWORK_LANG_LITHUANIAN                                     :Lithuanian
+STR_NETWORK_LANG_NORWEGIAN                                      :Norwegian
+STR_NETWORK_LANG_POLISH                                         :Polish
+STR_NETWORK_LANG_PORTUGUESE                                     :Portuguese
+STR_NETWORK_LANG_ROMANIAN                                       :Romanian
+STR_NETWORK_LANG_RUSSIAN                                        :Russian
+STR_NETWORK_LANG_SLOVAK                                         :Slovak
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovenian
+STR_NETWORK_LANG_SPANISH                                        :Spanish
+STR_NETWORK_LANG_SWEDISH                                        :Swedish
+STR_NETWORK_LANG_TURKISH                                        :Turkish
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainian
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Multiplayer game lobby
@@ -1590,6 +1617,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Railway track with pre-signals
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Railway track with exit-signals
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Railway track with combo-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Railway track with normal and pre-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Railway track with normal and exit-signals
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Railway track with normal and combo-signals
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Railway track with pre- and exit-signals
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Railway track with pre- and combo-signals
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Railway track with exit- and combo-signals
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Must remove railway station first
 
 
 
@@ -1597,22 +1631,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Road Depot Orientation
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Road construction
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramway construction
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Build road section
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Build tramway section
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Build road bridge
+STR_180F_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_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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Select road vehicle depot orientation
+STR_1813_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
@@ -1620,6 +1671,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Road/rail level crossing
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Can't remove bus station...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Can't remove lorry station...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Can't remove passenger tram station...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Can't remove freight tram station...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Towns
@@ -1790,9 +1843,13 @@
 STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} now accepts {STRING}
 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 Orient.
+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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- None -
@@ -1804,6 +1861,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_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
@@ -2260,6 +2319,8 @@
 STR_LIVERY_HELICOPTER                                           :Helicopter
 STR_LIVERY_SMALL_PLANE                                          :Small Aeroplane
 STR_LIVERY_LARGE_PLANE                                          :Large Aeroplane
+STR_LIVERY_PASSENGER_TRAM                                       :Passenger Tram
+STR_LIVERY_FREIGHT_TRAM                                         :Freight Tram
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Show general colour schemes
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Show train colour schemes
@@ -2617,6 +2678,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Can't insert new order...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Can't delete this order...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Can't modify this order...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Can't move this order...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Can't skip current order...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Can't skip to selected order...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Can't move vehicle...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}The rear engine will always follow its front counterpart
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2648,7 +2712,7 @@
 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_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
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Make the highlighted order non-stop
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insert a new order before the highlighted order, or add to end of list
@@ -2727,12 +2791,16 @@
 STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Road vehicle selection list - click on vehicle for information
 STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Build the highlighted road vehicle
 STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Cost: {CURRENCY}{}Speed: {VELOCITY}{}Running Cost: {CURRENCY}/yr{}Capacity: {CARGO}
+STR_ARTICULATED_RV_CAPACITY                                     :{BLACK}Capacity: {LTBLUE}
+STR_BARE_CARGO                                                  :{CARGO}
 
 STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Name road vehicle
 STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}Can't name road vehicle...
 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_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...
@@ -3017,6 +3085,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}You are about to sell all the vehicles in the depot. Are you sure?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Wrong depot type
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Sell all trains in the depot
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Sell all road vehicles in the depot
--- a/src/lang/esperanto.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/esperanto.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2628,7 +2628,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordena listo - alklaku ordenon por elekti. CTRL + klako skrolas al la stacio
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Saltu de la nuna ordeno al la sekva
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}ForviÅu la elektitan ordenon
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Senhaltigu elektitan ordenon
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Enigu novan ordenon antaÅ­ la elektita ordeno, aÅ­ aldonu fine de la listo
--- a/src/lang/estonian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/estonian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 0
 ##case g genitiiv
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Väljaspool kaardi piire
@@ -12,7 +14,7 @@
 STR_0004                                                        :{WHITE}{CURRENCY64}
 STR_0005                                                        :{RED}{CURRENCY64}
 STR_EMPTY                                                       :
-STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Maa peab olema tasane
+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
@@ -294,15 +296,15 @@
 STR_00E2                                                        :{BLACK}{COMMA}
 STR_00E3                                                        :{RED}{COMMA}
 STR_00E4_LOCATION                                               :{BLACK}Asukoht
-STR_00E5_CONTOURS                                               :Maastik
-STR_00E6_VEHICLES                                               :Sõidukid
-STR_00E7_INDUSTRIES                                             :Tööstused
-STR_00E8_ROUTES                                                 :Teed
-STR_00E9_VEGETATION                                             :Taimestik
-STR_00EA_OWNERS                                                 :Omanikud
-STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Teed
-STR_00EC_RAILROADS                                              :{BLACK}{TINYFONT}Raudteed
-STR_00ED_STATIONS_AIRPORTS_DOCKS                                :{BLACK}{TINYFONT}Jaamad/lennujaamad/sadamad
+STR_00E5_CONTOURS                                               :maastik
+STR_00E6_VEHICLES                                               :sõidukid
+STR_00E7_INDUSTRIES                                             :tööstused
+STR_00E8_ROUTES                                                 :kaubaliinid
+STR_00E9_VEGETATION                                             :taimestik
+STR_00EA_OWNERS                                                 :omanikud
+STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Sõiduteed
+STR_00EC_RAILROADS                                              :{BLACK}{TINYFONT}Rööbasteed
+STR_00ED_STATIONS_AIRPORTS_DOCKS                                :{BLACK}{TINYFONT}Jaamad/lennuväljad/sadamad
 STR_00EE_BUILDINGS_INDUSTRIES                                   :{BLACK}{TINYFONT}Ehitised/tööstused
 STR_00EF_VEHICLES                                               :{BLACK}{TINYFONT}Sõidukid
 STR_00F0_100M                                                   :{BLACK}{TINYFONT}100 m
@@ -311,7 +313,7 @@
 STR_00F3_400M                                                   :{BLACK}{TINYFONT}400 m
 STR_00F4_500M                                                   :{BLACK}{TINYFONT}500 m
 STR_00F5_TRAINS                                                 :{BLACK}{TINYFONT}Rongid
-STR_00F6_ROAD_VEHICLES                                          :{BLACK}{TINYFONT}Maanteesõidukid
+STR_00F6_ROAD_VEHICLES                                          :{BLACK}{TINYFONT}Mootorsõidukid
 STR_00F7_SHIPS                                                  :{BLACK}{TINYFONT}Laevad
 STR_00F8_AIRCRAFT                                               :{BLACK}{TINYFONT}Õhusõidukid
 STR_00F9_TRANSPORT_ROUTES                                       :{BLACK}{TINYFONT}Veoliinid
@@ -324,20 +326,20 @@
 STR_0100_FACTORY                                                :{BLACK}{TINYFONT}Vabrik
 STR_0101_PRINTING_WORKS                                         :{BLACK}{TINYFONT}Trükikoda
 STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Naftapuuraugud
-STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Rauamaagi kaevandus
+STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Rauamaagikaevandus
 STR_0104_STEEL_MILL                                             :{BLACK}{TINYFONT}Terase tööstus
 STR_0105_BANK                                                   :{BLACK}{TINYFONT}Pank
 STR_0106_PAPER_MILL                                             :{BLACK}{TINYFONT}Paberitehas
 STR_0107_GOLD_MINE                                              :{BLACK}{TINYFONT}Kullakaevandus
 STR_0108_FOOD_PROCESSING_PLANT                                  :{BLACK}{TINYFONT}Toidutöötlustehas
 STR_0109_DIAMOND_MINE                                           :{BLACK}{TINYFONT}Teemantikaevandus
-STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Vasemaagi kaevandus
+STR_010A_COPPER_ORE_MINE                                        :{BLACK}{TINYFONT}Vasemaagikaevandus
 STR_010B_FRUIT_PLANTATION                                       :{BLACK}{TINYFONT}Puuviljaistandus
 STR_010C_RUBBER_PLANTATION                                      :{BLACK}{TINYFONT}Kummipuuistandus
 STR_010D_WATER_SUPPLY                                           :{BLACK}{TINYFONT}Veepumbad
 STR_010E_WATER_TOWER                                            :{BLACK}{TINYFONT}Veetorn
 STR_010F_LUMBER_MILL                                            :{BLACK}{TINYFONT}Saeveski
-STR_0110_COTTON_CANDY_FOREST                                    :{BLACK}{TINYFONT}Suhkruvati mets
+STR_0110_COTTON_CANDY_FOREST                                    :{BLACK}{TINYFONT}Suhkruvatimets
 STR_0111_CANDY_FACTORY                                          :{BLACK}{TINYFONT}Maiustuste tehas
 STR_0112_BATTERY_FARM                                           :{BLACK}{TINYFONT}Patareitalu
 STR_0113_COLA_WELLS                                             :{BLACK}{TINYFONT}Koolapumbad
@@ -351,10 +353,10 @@
 STR_011B_RAILROAD_STATION                                       :{BLACK}{TINYFONT}Raudteejaam
 STR_011C_TRUCK_LOADING_BAY                                      :{BLACK}{TINYFONT}Veoautode laadimisplats
 STR_011D_BUS_STATION                                            :{BLACK}{TINYFONT}Bussijaam
-STR_011E_AIRPORT_HELIPORT                                       :{BLACK}{TINYFONT}Lennujaam
+STR_011E_AIRPORT_HELIPORT                                       :{BLACK}{TINYFONT}Lennuväli/kopteriväljak
 STR_011F_DOCK                                                   :{BLACK}{TINYFONT}Sadam
 STR_0120_ROUGH_LAND                                             :{BLACK}{TINYFONT}Konarlik maa
-STR_0121_GRASS_LAND                                             :{BLACK}{TINYFONT}Muru
+STR_0121_GRASS_LAND                                             :{BLACK}{TINYFONT}Rohuväli
 STR_0122_BARE_LAND                                              :{BLACK}{TINYFONT}Lage maa
 STR_0123_FIELDS                                                 :{BLACK}{TINYFONT}Põllud
 STR_0124_TREES                                                  :{BLACK}{TINYFONT}Puud
@@ -384,19 +386,19 @@
 
 STR_013B_OWNED_BY                                               :{WHITE}...omanik on {STRING}
 STR_013C_CARGO                                                  :{BLACK}Laadung
-STR_013D_INFORMATION                                            :{BLACK}Informatsioon
-STR_013E_CAPACITIES                                             :{BLACK}Mahutavused
+STR_013D_INFORMATION                                            :{BLACK}Andmed
+STR_013E_CAPACITIES                                             :{BLACK}Kandevõimed
 STR_013E_TOTAL_CARGO                                            :{BLACK}Laadungit kokku
-STR_013F_CAPACITY                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO}
-STR_CAPACITY_MULT                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT                                    :{BLACK}Rongi kogumahutavus:
+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_MULT                                         :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
 STR_0140_NEW_GAME                                               :{BLACK}Alusta mängu
 STR_0141_LOAD_GAME                                              :{BLACK}Laadi mängu
 STR_SINGLE_PLAYER                                               :{BLACK}Üksikmängija
 STR_MULTIPLAYER                                                 :{BLACK}Võrgumäng
-STR_SCENARIO_EDITOR                                             :{BLACK}Stsenaariumi Muutmine
+STR_SCENARIO_EDITOR                                             :{BLACK}Stsenaariumiredaktor
 
 STR_64                                                          :64
 STR_128                                                         :128
@@ -447,10 +449,10 @@
 
 ############ range for menu starts
 STR_0154_OPERATING_PROFIT_GRAPH                                 :Opereerimiskasumi graafik
-STR_0155_INCOME_GRAPH                                           :Sissetulekute graafik
+STR_0155_INCOME_GRAPH                                           :Tulugraafik
 STR_0156_DELIVERED_CARGO_GRAPH                                  :Transporditud kauba graafik
 STR_0157_PERFORMANCE_HISTORY_GRAPH                              :Tegevustulemuste graafik
-STR_0158_COMPANY_VALUE_GRAPH                                    :Ettevõtte väärtuse graafik
+STR_0158_COMPANY_VALUE_GRAPH                                    :Firmaväärtuse graafik
 STR_0159_CARGO_PAYMENT_RATES                                    :Veotasude määrad
 STR_015A_COMPANY_LEAGUE_TABLE                                   :Ettevõtete edetabel
 STR_PERFORMANCE_DETAIL_MENU                                     :Ãœksikasjalik tulemusreiting
@@ -478,9 +480,9 @@
 STR_SORT_BY_PROFIT_LAST_YEAR                                    :Eelmise aasta kasum
 STR_SORT_BY_PROFIT_THIS_YEAR                                    :Selle aasta kasum
 STR_SORT_BY_AGE                                                 :Vanus
-STR_SORT_BY_RELIABILITY                                         :Töökindlus
-STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Kogumahutavus veose tüübi kohta
-STR_SORT_BY_MAX_SPEED                                           :Maksimaalne kiirus
+STR_SORT_BY_RELIABILITY                                         :Tehnoseisund
+STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE                        :Kandevõime kokku veose tüübi kohta
+STR_SORT_BY_MAX_SPEED                                           :Tippkiirus
 STR_SORT_BY_MODEL                                               :Mudel
 STR_SORT_BY_VALUE                                               :Väärtus
 STR_SORT_BY_FACILITY                                            :Jaama tüüp
@@ -490,16 +492,16 @@
 STR_ENGINE_SORT_COST                                            :Hind
 STR_ENGINE_SORT_POWER                                           :Võimsus
 STR_ENGINE_SORT_INTRO_DATE                                      :Esitluskuupäev
-STR_ENGINE_SORT_RUNNING_COST                                    :Teenindusmaks
-STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Jõud/Teenindusmaks
-STR_ENGINE_SORT_CARGO_CAPACITY                                  :Laadungi mahutavus
+STR_ENGINE_SORT_RUNNING_COST                                    :Käituskulud
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST                           :Võimsus- ja käituskulud
+STR_ENGINE_SORT_CARGO_CAPACITY                                  :Kauba kandevõime
 STR_NO_WAITING_CARGO                                            :{BLACK}Kaupa pole ootamas
 STR_SELECT_ALL_FACILITIES                                       :{BLACK}Vali kõik tööstused
 STR_SELECT_ALL_TYPES                                            :{BLACK}Vali kõik kaubatüüpid (ka mitteoodatav kaup)
-STR_AVAILABLE_TRAINS                                            :{BLACK}Saada olevad rongid
-STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Saada olevad maanteesõidukid
-STR_AVAILABLE_SHIPS                                             :{BLACK}Saada olevad laevad
-STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Saada olevad õhusõidukid
+STR_AVAILABLE_TRAINS                                            :{BLACK}Saadaval rongid
+STR_AVAILABLE_ROAD_VEHICLES                                     :{BLACK}Saadaval sõidukid
+STR_AVAILABLE_SHIPS                                             :{BLACK}Saadaval laevad
+STR_AVAILABLE_AIRCRAFT                                          :{BLACK}Saadaval õhusõidukid
 STR_AVAILABLE_ENGINES_TIP                                       :{BLACK}Vaata nimekirja seda tüüpi veovahenditest
 STR_MANAGE_LIST                                                 :{BLACK}Halda nimekirja
 STR_MANAGE_LIST_TIP                                             :{BLACK}Saada juhised kõikidele selles nimekirjas olevatele veovahenditele
@@ -508,7 +510,7 @@
 STR_SEND_ROAD_VEHICLE_TO_DEPOT                                  :Saada depoose
 STR_SEND_SHIP_TO_DEPOT                                          :Saada depoose
 STR_SEND_AIRCRAFT_TO_HANGAR                                     :Saada angaari
-STR_SEND_FOR_SERVICING                                          :Saada teenindusse
+STR_SEND_FOR_SERVICING                                          :Saada hooldusesse
 
 ############ range for months starts
 STR_0162_JAN                                                    :jaan
@@ -539,21 +541,21 @@
 STR_0179_DISPLAY_GRAPHS                                         :{BLACK}Kuva graafikuid
 STR_017A_DISPLAY_COMPANY_LEAGUE                                 :{BLACK}Kuva ettevõtete edetabel
 STR_017B_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Kuva ettevõtte rongide nimistu
-STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Kuva nimekiri ettevõtte maanteesõidukitest
+STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Kuva nimekiri ettevõtte mootorsõidukitest
 STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Kuva ettevõtte laevade nimistu
 STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}Kuva nimekiri ettevõtte õhusõidukitest
 STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Suurenda vaadet
 STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Vähenda vaadet
-STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Ehita raudteed
+STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Ehita rööbasteed
 STR_0182_BUILD_ROADS                                            :{BLACK}Ehita maanteid
 STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}Ehita laevasadamat
-STR_0184_BUILD_AIRPORTS                                         :{BLACK}Ehita lennujaamu
+STR_0184_BUILD_AIRPORTS                                         :{BLACK}Ehita lennuvälju
 STR_0185_PLANT_TREES_PLACE_SIGNS                                :{BLACK}Puude istutamine, siltide paigaldamine jne.
-STR_0186_LAND_BLOCK_INFORMATION                                 :{BLACK}Maa-ala informatsioon
+STR_0186_LAND_BLOCK_INFORMATION                                 :{BLACK}Maa-ala andmed
 STR_0187_OPTIONS                                                :{BLACK}Seaded
 STR_0188                                                        :{BLACK}{SMALLUPARROW}
 STR_0189                                                        :{BLACK}{SMALLDOWNARROW}
-STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}Teenindusvahemikku ei saa muuta...
+STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}Hooldusperioodi ei saa muuta...
 STR_018B_CLOSE_WINDOW                                           :{BLACK}Sulge aken
 STR_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}Akna pealkiri - lohista akna liigutamiseks
 STR_STICKY_BUTTON                                               :{BLACK}Keela selle akna sulgemine 'Sulge kõik aknad' nupu klõpsamisel
@@ -585,13 +587,13 @@
 STR_01A0_IS_GETTING_OLD                                         :{WHITE}{STRING} {COMMA} on vanaks muutumas
 STR_01A1_IS_GETTING_VERY_OLD                                    :{WHITE}{STRING} {COMMA} on saamas väga vanaks
 STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} on saanud väga vanaks ja vajab kohest asendamist
-STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Maa-ala info
-STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Puhastamistasu: {LTBLUE}N/A
-STR_01A5_COST_TO_CLEAR                                          :{BLACK}Puhastamistasu: {LTBLUE}{CURRENCY}
-STR_01A6_N_A                                                    :k-tu
+STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Maa-ala andmed
+STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Puhastustasu: {LTBLUE}N/A
+STR_01A5_COST_TO_CLEAR                                          :{BLACK}Puhastustasu: {LTBLUE}{CURRENCY}
+STR_01A6_N_A                                                    :puudub
 STR_01A7_OWNER                                                  :{BLACK}Omanik: {LTBLUE}{STRING}
-STR_01A8_LOCAL_AUTHORITY                                        :{BLACK}Kohalik võim: {LTBLUE}{STRING}
-STR_01A9_NONE                                                   :Mitte keegi
+STR_01A8_LOCAL_AUTHORITY                                        :{BLACK}Kohalik omavalitsus: {LTBLUE}{STRING}
+STR_01A9_NONE                                                   :puudub
 STR_01AA_NAME                                                   :{BLACK}Nimi
 STR_01AB                                                        :{BLACK}{TINYFONT}{STRING}
 
@@ -645,7 +647,7 @@
 STR_01DA_CUSTOM_2                                               :{TINYFONT}Omatehtud 2
 STR_01DB_MUSIC_VOLUME                                           :{BLACK}{TINYFONT}Muusika valjus
 STR_01DC_EFFECTS_VOLUME                                         :{BLACK}{TINYFONT}Effektide valjus
-STR_01DD_MIN_MAX                                                :{BLACK}{TINYFONT}MIN  '  '  ' '  '  '  MAX
+STR_01DD_MIN_MAX                                                :{BLACK}{TINYFONT}Vähim  '  '  ' '  '  '  Suurim
 STR_01DE_SKIP_TO_PREVIOUS_TRACK                                 :{BLACK}Eelmine lugu
 STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION                        :{BLACK}Järgmine lugu
 STR_01E0_STOP_PLAYING_MUSIC                                     :{BLACK}Lõpeta muusika mängimine
@@ -675,10 +677,10 @@
 STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Tühjenda valitud programm (ainult omatehtud 1 ja omatehtud 2)
 STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Muusikaseadete salvestamine
 STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Vajuta loole, et seda programmi lisada (ainult omatehtud 1 ja omatehtud 2)
-STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Vajuta loole, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult)
+STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult)
 STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Lülita lugude segamine sisse ja välja
 STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Näita muusikalugude valimise akent
-STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Vajuta pakkumisele, et näha linna/tööstuse asukohta
+STR_01FD_CLICK_ON_SERVICE_TO_CENTER                             :{BLACK}Vajuta pakkumisele, et näha linna või tööstuse asukohta
 STR_01FE_DIFFICULTY                                             :{BLACK}Raskusaste ({STRING})
 STR_01FF                                                        :{TINYFONT}{BLACK}{DATE_LONG}
 STR_0200_LAST_MESSAGE_NEWS_REPORT                               :Viimane teade
@@ -694,7 +696,7 @@
 STR_NEWS_OPEN_CLOSE                                             :{YELLOW}Ava / sulge tööstuseid
 STR_020A_ECONOMY_CHANGES                                        :{YELLOW}Muutused majanduses
 STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}Soovitused ja teated mängija veovahendite kohta
-STR_020C_NEW_VEHICLES                                           :{YELLOW}Uued veovahendid
+STR_020C_NEW_VEHICLES                                           :{YELLOW}Uus veerem
 STR_020D_CHANGES_OF_CARGO_ACCEPTANCE                            :{YELLOW}Veoste vastuvõtutingimuste muutumine
 STR_020E_SUBSIDIES                                              :{YELLOW}Toetused
 STR_020F_GENERAL_INFORMATION                                    :{YELLOW}Ãœldine teave
@@ -726,8 +728,8 @@
 STR_022A_GENERATE_RANDOM_LAND                                   :{BLACK}Juhusliku kaardi loomine
 STR_022B_RESET_LANDSCAPE                                        :{BLACK}Nulli maastik
 STR_022C_RESET_LANDSCAPE                                        :{WHITE}Nulli maastik
-STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Eemalda kogu mängija omand kaardilt
-STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Kas oled kindel, et tahad eemaldada kogu mängija omandi?
+STR_RESET_LANDSCAPE_TOOLTIP                                     :{BLACK}Eemalda kõik mängija omandid
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT                           :{WHITE}Kas oled kindel, et tahad lammutada kõik mängija omandid?
 STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Maastiku loomine
 STR_022F_TOWN_GENERATION                                        :{BLACK}Linnade loomine
 STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Tööstuste loomine
@@ -756,7 +758,7 @@
 STR_0246_FACTORY                                                :{BLACK}Vabrik
 STR_0247_STEEL_MILL                                             :{BLACK}Terasetööstus
 STR_0248_FARM                                                   :{BLACK}Talu
-STR_0249_IRON_ORE_MINE                                          :{BLACK}Rauamaagi kaevandus
+STR_0249_IRON_ORE_MINE                                          :{BLACK}Rauamaagikaevandus
 STR_024A_OIL_WELLS                                              :{BLACK}Naftapuurauk
 STR_024B_BANK                                                   :{BLACK}Pank
 STR_024C_PAPER_MILL                                             :{BLACK}Paberitehas
@@ -772,7 +774,7 @@
 STR_0256_COPPER_ORE_MINE                                        :{BLACK}Vasemaagikaevandus
 STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Suhkruvatimets
 STR_0258_CANDY_FACTORY                                          :{BLACK}Maiustuste tehas
-STR_0259_BATTERY_FARM                                           :{BLACK}Patareifarm
+STR_0259_BATTERY_FARM                                           :{BLACK}Patareitalu
 STR_025A_COLA_WELLS                                             :{BLACK}Koolapumbad
 STR_025B_TOY_SHOP                                               :{BLACK}Mänguasjapood
 STR_025C_TOY_FACTORY                                            :{BLACK}Mänguasjatehas
@@ -784,12 +786,12 @@
 STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}Ehita kivisöekaevandus
 STR_0263_CONSTRUCT_POWER_STATION                                :{BLACK}Ehita elektrijaam
 STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Ehita saeveski
-STR_0265_PLANT_FOREST                                           :{BLACK}Istuta mets
+STR_0265_PLANT_FOREST                                           :{BLACK}Istuta metsa
 STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Ehita naftarafineerimistehas
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Ehita naftaplatvorm (seda saab ehitada vaid kaardi serva)
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Ehita naftaplatvorm (seda on võimalik ehitada ainult kaardi serva)
 STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Ehita vabrik
 STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Ehita terasetööstus
-STR_026A_CONSTRUCT_FARM                                         :{BLACK}Raja farm
+STR_026A_CONSTRUCT_FARM                                         :{BLACK}Raja talu
 STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Ehita rauamaagikaevandus
 STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Ehita naftapuuraugud
 STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Ehita pank (saab ehitada vaid linnadesse, mille rahvastikuarv ületab 1200)
@@ -798,16 +800,16 @@
 STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Ehita trükikoda
 STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Ehita kullakaevandus
 STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Ehita pank (saab vaid linnadesse ehitada)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Ehita saeveski (vihmametsade puhustamiseks ja puidu tootmiseks)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Ehita saeveskit (vihmametsade raideks ja puidu tootmiseks)
 STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Istuta puuviljaistandus
 STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Istuta kummipuuistandus
 STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Ehita veepumbad
 STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Ehita veetorn (saab ainult linnadesse ehitada)
 STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Ehita teemantikaevandus
 STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Ehita vasemaagikaevandus
-STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Istuta suhkruvatimets
+STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Istuta suhkruvatimetsa
 STR_027B_CONSTRUCT_CANDY_FACTORY                                :{BLACK}Ehita maiustuste tehas
-STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Ehita patareifarm
+STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Ehita patareitalu
 STR_027D_CONSTRUCT_COLA_WELLS                                   :{BLACK}Ehita koolapumbad
 STR_027E_CONSTRUCT_TOY_SHOP                                     :{BLACK}Ehita mänguasjapood
 STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}Ehita mänguasjatehas
@@ -880,7 +882,7 @@
 STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Näidatavad linnanimed
 STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Näidatavad jaamanimed
 STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Näidatavad sildid
-STR_WAYPOINTS_DISPLAYED2                                        :{SETX 12}Näidatavad kontrollpunktid
+STR_WAYPOINTS_DISPLAYED2                                        :{SETX 12}Näidatavad meldepunktid
 STR_02D0_FULL_ANIMATION                                         :{SETX 12}Täielik animeerimine
 STR_02D2_FULL_DETAIL                                            :{SETX 12}Kõik üksikasjad
 STR_02D4_TRANSPARENT_BUILDINGS                                  :{SETX 12}Läbipaistvad hooned
@@ -888,7 +890,7 @@
 ############ range ends here
 
 ############ range for menu starts
-STR_02D5_LAND_BLOCK_INFO                                        :Maapinna informatsioon
+STR_02D5_LAND_BLOCK_INFO                                        :Maapinna andmed
 STR_02D6                                                        :
 STR_CONSOLE_SETTING                                             :Lülita konsool sisse/välja
 STR_02D7_SCREENSHOT_CTRL_S                                      :Ekraanitõmmis (Ctrl-S)
@@ -912,15 +914,15 @@
 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Kleebi vaateaknast
 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Vaatealma koha võtmine peamiseks vaateks
 
-STR_02E0_CURRENCY_UNITS                                         :{BLACK}Rahaühik
+STR_02E0_CURRENCY_UNITS                                         :{BLACK}Valuuta
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
-STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Rahaühiku valimine
+STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Valuuta valimine
 STR_MEASURING_UNITS                                             :{BLACK}Mõõtmisühikud
 STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
 STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Mõõtmisühikute valik
 STR_02E6_ROAD_VEHICLES                                          :{BLACK}Sõidukid
 STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Vali, kummal pool teed maanteesõidukid liiguvad
+STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Vali, kummal pool teed mootorsõidukid liiklevad
 STR_02E9_DRIVE_ON_LEFT                                          :Vasakpoolne liiklus
 STR_02EA_DRIVE_ON_RIGHT                                         :Parempoolne liiklus
 STR_02EB_TOWN_NAMES                                             :{BLACK}Linnanimed
@@ -929,7 +931,7 @@
 
 STR_02F4_AUTOSAVE                                               :{BLACK}Automaatsalvestus
 STR_02F5                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Vali intervall, mille järel automaatsalvestus toimub
+STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Vali intervall, mille järel isesalvestus toimub
 STR_02F7_OFF                                                    :Väljas
 STR_02F8_EVERY_3_MONTHS                                         :Iga 3 kuu tagant
 STR_02F9_EVERY_6_MONTHS                                         :Iga 6 kuu tagant
@@ -1087,28 +1089,28 @@
 
 # Start of order review system.
 # DON'T ADD OR REMOVE LINES HERE
-STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Rongil {COMMA} marsruudis on liiga vähe sihtpunkte
+STR_TRAIN_HAS_TOO_FEW_ORDERS                                    :{WHITE}Rongi {COMMA} sõidugraafikus on liiga vähe sihtpunkte
 STR_TRAIN_HAS_VOID_ORDER                                        :{WHITE}Rongil {COMMA} on tühistatud käsklus
 STR_TRAIN_HAS_DUPLICATE_ENTRY                                   :{WHITE}Rongil {COMMA} on mõni sihtpunktidest topelt
 STR_TRAIN_HAS_INVALID_ENTRY                                     :{WHITE}Rongi {COMMA} plaanis on kehtetuid jaamu
-STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Maanteesõiduki {COMMA} sõiduplaan sisaldab liiga vähe sihtpunkte
-STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Maanteesõiduki {COMMA} sõiduplaan sisaldab kehtetuid sihtpunkte
-STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Maanteesõidukil {COMMA} on mõni sihtpunkt on topelt
-STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Maanteesõiduki {COMMA} marsruudis on kehtetuid jaamu
+STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS                              :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab liiga vähe sihtpunkte
+STR_ROADVEHICLE_HAS_VOID_ORDER                                  :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab kehtetuid sihtpunkte
+STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY                             :{WHITE}Mootorsõidukil {COMMA} on mõni sihtpunkt on topelt
+STR_ROADVEHICLE_HAS_INVALID_ENTRY                               :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab olematut jaama
 STR_SHIP_HAS_TOO_FEW_ORDERS                                     :{WHITE}Laeval {COMMA} on plaanis liiga vähe sihtpunkte
 STR_SHIP_HAS_VOID_ORDER                                         :{WHITE}Laeval {COMMA} on kehtetuid sihtpunkte
 STR_SHIP_HAS_DUPLICATE_ENTRY                                    :{WHITE}Laeval {COMMA} on mõni sihtpunkt on topelt
 STR_SHIP_HAS_INVALID_ENTRY                                      :{WHITE}Laeva {COMMA} plaanis on kehtetuid jaamu
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Õhusõiduki {COMMA} sõiduplaanis on liiga vähe sihtpunkte
-STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Õhusõidukil {COMMA} on sõiduplaanis kehtetu sihtpunkt
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Õhusõiduki {COMMA} sõidugraafikus on liiga vähe sihtpunkte
+STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Õhusõidukil {COMMA} on sõidugraafikus kehtetu sihtpunkt
 STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Õhusõidukil {COMMA} on topeltsihtpunkte
-STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Õhusõiduki {COMMA} sõiduplaanis on kehtetu jaam
+STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Õhusõiduki {COMMA} sõidugraafikus on kehtetu jaam
 # end of order system
 
-STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Rongi automaatne uuendamine {COMMA} ebaõnnestus (rahalimiit)
-STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Maanteesõiduki automaatne uuendamine ebaõnnestus {COMMA} (rahalimiit)
-STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Laeva automaatne uuendamine ebaõnnestus {COMMA} (rahalimiit)
-STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Õhusõiduki automaatne uuendamine ebaõnnestus{COMMA} (rahapiirang)
+STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Rongi iseuuendamine {COMMA} ebaõnnestus (rahapiirang)
+STR_ROADVEHICLE_AUTORENEW_FAILED                                :{WHITE}Mootorsõiduki iseuuendamine ebaõnnestus {COMMA} (rahapiirang)
+STR_SHIP_AUTORENEW_FAILED                                       :{WHITE}Laeva iseuuendamine ebaõnnestus {COMMA} (rahapiirang)
+STR_AIRCRAFT_AUTORENEW_FAILED                                   :{WHITE}Õhusõiduki iseuuendamine ebaõnnestus{COMMA} (rahapiirang)
 STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT                            :{WHITE}Rong {COMMA} on peale asendust liiga pikk
 
 STR_CONFIG_PATCHES                                              :{BLACK}Paranduste seaded
@@ -1120,7 +1122,7 @@
 STR_CONFIG_PATCHES_VEHICLESPEED                                 :{LTBLUE}Näita olekuribal veovahendi kiirust: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BUILDONSLOPES                                :{LTBLUE}Luba ehitised nõlvadele ja kallastele: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_CATCHMENT                                    :{LTBLUE}Võimalda reaalsemaid veekogu alasid: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_EXTRADYNAMITE                                :{LTBLUE}Luba linna teede, sildade, tunnelite jne eemaldamine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_EXTRADYNAMITE                                :{LTBLUE}Luba linnateede, -sildade, -tunnelite jne lammutamine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAMMOTHTRAINS                                :{LTBLUE}Luba väga pikkade rongide ehitamine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REALISTICACCEL                               :{LTBLUE}Aktiveeri realistlik rongide kiirendamine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FORBID_90_DEG                                :{LTBLUE}Keela rongidel ja laevadel 90 kraadised pöörded: {ORANGE}{STRING} {LTBLUE} (vajab NPF)
@@ -1136,29 +1138,30 @@
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Luba mitu sama liiki tööstust linna kohta: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Sama liiki tööstusi saab ehitada üksteise lähedale: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Alati näita olekuribal pikka kuupäeva: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Paiguta signaaltuled raudteele arvestades sõidusuunda: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Paiguta signaalid rööbasteele sõidusuunda arvestades: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Näita rahaliste seisude akent iga aasta lõpus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}TTDPatchiga ühilduv 'mittepeatumine': {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Maanteesõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Mootorsõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Keri vaadet, kui hiir on viidud ekraani serva: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Luba kohalikele võimudele altkäemaksu maksmine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Luba kohalikule omavalitsusele altkäemaksu maksmine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Luba suvalise kujuga jaamad: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Uus teeotsimise algoritm(NPF asendab NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Raskete rongide simuleerimiseks kasutatav raskuse korrutaja: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Luba läbisõidupeatused linnateedel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Luba jaamu lähestikku ehitada: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Luba väikesed lennujaamad kuni mängu lõpuni: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Luba väikesed lennuväljad kuni mängu lõpuni: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_WARN_LOST_TRAIN                              :{LTBLUE}Hoiata, kui rong on eksinud: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW                                 :{LTBLUE}Sõidukite sihtpunktide ülevaade: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ORDER_REVIEW_OFF                             :ei
 STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT                         :jah, kuid jäta välja seisatud veovahendid
 STR_CONFIG_PATCHES_ORDER_REVIEW_ON                              :kõikidest veovahenditest
-STR_CONFIG_PATCHES_WARN_INCOME_LESS                             :{LTBLUE}Hoiata, kui rongi sissetulek on negatiivne: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WARN_INCOME_LESS                             :{LTBLUE}Hoiata, kui rong tekitab kahjumit: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES                        :{LTBLUE}Sõidukid ei aegu: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTORENEW_VEHICLE                            :{LTBLUE}Uuenda vananemisel veovahendeid automaatselt
+STR_CONFIG_PATCHES_AUTORENEW_VEHICLE                            :{LTBLUE}Uuenda vananemisel veovahendeid ise
 STR_CONFIG_PATCHES_AUTORENEW_MONTHS                             :{LTBLUE}Uuenda {ORANGE}{STRING}{LTBLUE} kuud enne/pärast veovahendi suurimat vanust
-STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Automaatsetele uuendusele kuluv minimaalne raha: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTORENEW_MONEY                              :{LTBLUE}Iseuuendusele kuluv väikseim summa: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ERRMSG_DURATION                              :{LTBLUE}Veateate kuvamise kestus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_POPULATION_IN_LABEL                          :{LTBLUE}Näita linna nimesildil rahvaarvu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Nähtamatud puud (läbipaistvate ehitistega): {ORANGE}{STRING}
@@ -1173,7 +1176,7 @@
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Sile
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Mägine
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH              :Väga mägine
-STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Puude panemis süsteem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER                                  :{LTBLUE}Puuasetusalgoritm: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TREE_PLACER_NONE                             :Pole
 STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL                         :Algupärane
 STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED                         :Täiustatud
@@ -1182,10 +1185,11 @@
 STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE                 :Päevapidi
 STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT                         :{LTBLUE}Kõrguse level kui kõrgele lapik kaart läheb: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Maksimaalne jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seaded aeglustavad mängu
-STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Teeninda maandumisplatsidel helikoptereid automaatselt: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Lingi maastiku riba raudtee/tee/vee/lennujaama tööriistaribaga: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Suurim jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seaded aeglustavad mängu
+STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Hoolda maandumisplatsidel ise helikoptereid: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Liida maastikuriba raudtee/tee/vee/lennujaamade tööriistaribaga: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Kui kerid hiirega, liiguta vaade vastassuunda: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Sujuv vaatevälja liigutamine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Näita mitmesuguste ehitusvahendite kasutamisel mõõtmise kohtspikrit: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Näita firma livree: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Mitte ükski
@@ -1196,13 +1200,14 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Suurenda kaarti
 STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Keri kaarti
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Väljas
-STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Kaarti kerimisratta kiirus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Kaardi kerimisrulliku kiirus: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automaatne mängu peatamine uue mängu alustamisel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Kasuta laiendatud sõidukinimekirja: {ORANGE}{STRING}
 
-STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maks. rongide arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Suurim maanteesõidukite arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Suurim õhusõidukite arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Maksimaalne laevade arv mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Enim ronge mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Enim mootorsõidukeid mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_AIRCRAFT                                 :{LTBLUE}Enim õhusõidukeid mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_SHIPS                                    :{LTBLUE}Enim laevu mängija kohta: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_AI_BUILDS_TRAINS                             :{LTBLUE}Arvuti ei tohi ronge kasutada: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH                            :{LTBLUE}Keela arvutile sõidukid: {ORANGE}{STRING}
@@ -1213,15 +1218,15 @@
 STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER                            :{LTBLUE}Luba TI (AI) võrgumängus (TESTIMISEL!): {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SERVINT_TRAINS                               :{LTBLUE}Vaikimisi hooldusintervall rongidele: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Vaikimisi teenindusvahemik rongidel: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Vaikimisi valitud maanteesõidukite teenindusvahemik: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Vaikimisi valitud maanteesõidukite teenindusvahemik: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Vaikimisi valitud õhusõidukite teenindusvahemik: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Vaikimisi valitud õhusõidukite teenindusvahemik: {ORANGE}välja lülitatud
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED                      :{LTBLUE}Vaikimisi hooldusperiood rongidele: {ORANGE}väljas
+STR_CONFIG_PATCHES_SERVINT_ROADVEH                              :{LTBLUE}Vaikimisi valitud mootorsõidukite hooldusvahemik: {ORANGE}{STRING} päeva
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED                     :{LTBLUE}Vaikimisi valitud mootorsõidukite hooldusvahemik: {ORANGE}välja lülitatud
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT                             :{LTBLUE}Vaikimisi valitud õhusõidukite hooldusperiood: {ORANGE}{STRING} päeva
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Vaikimisi valitud õhusõidukite hooldusperiood: {ORANGE}väljas
 STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Vaikimisi hooldusintervall laevadele: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Vaikimisi teenindusvahemik laevadele: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Keela teenindamine, kui lagunemine on välja lülitatud: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Luba vaguni kiiruse limiidid: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Vaikimisi hooldusperiood laevadele: {ORANGE}väljas
+STR_CONFIG_PATCHES_NOSERVICE                                    :{LTBLUE}Keela hooldus, kui rikkiminemine on välja lülitatud: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}Luba vagunite kiiruspiirangud: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Keela elektrirongid: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Värvilised uudised ilmuvad aastast {ORANGE}{STRING}
@@ -1229,11 +1234,11 @@
 STR_CONFIG_PATCHES_ENDING_YEAR                                  :{LTBLUE}Mäng lõppeb aastal: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Luba sujuv majandus (väiksemad muutused)
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Luba teiste ettevõtete aktsiate ostmine
-STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Venitades paigutatud signaaltulede tihedus: {ORANGE}{STRING} ühik(ut)
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Venitades rajatavate signaalide paigutustihedus: {ORANGE}{STRING} ühik(ut)
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Ehita semaforid automaatselt enne: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}Stsenaariumiredaktor ei tunnista "ilma teedeta" linnaplaneeringut
-STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Vali linnale teeplaan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Vali linnale teedeplaneering: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :ilma teedeta
 STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :tavalised
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :paremad teed
@@ -1246,18 +1251,18 @@
 STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Paremal
 STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Akna haaramise raadius: {ORANGE}{STRING} px
 STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Akna haaramise raadius: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Linna suurenemise kiirus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Linna kasvutempo: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :Pole
 STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Aeglane
 STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Normaalne
 STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Kiire
 STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Väga Kiire
-STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Topeltkiirusel suurenevaid linnu: {ORANGE}1 iga {STRING} linna kohta
-STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Topeltkiirusel suurenevaid linnu: {ORANGE}puudub
+STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}1 iga {STRING} linna kohta
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}puudub
 STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Algne linna suuruse kordaja: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Välimus
-STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Ehitamine
+STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Ehituskulud
 STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Sõidukid
 STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Jaamad
 STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Majandus
@@ -1268,7 +1273,7 @@
 STR_CONFIG_PATCHES_CURRENCY                                     :{CURRENCY}
 
 STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Muuda seadete väärtusi
-STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Mõni või kõik vaikimisi teenindusvahemikud on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
+STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Mõni või kõik vaikimisi hooldusperioodid on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
 STR_CONFIG_PATCHES_YAPF_SHIPS                                   :{LTBLUE}Kasuta YAPF'i laevadel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_YAPF_ROAD                                    :{LTBLUE}Kasuta YAPF'i autodel: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_YAPF_RAIL                                    :{LTBLUE}Kasuta YAPF'i rongidel: {ORANGE}{STRING}
@@ -1283,36 +1288,36 @@
 STR_CHEATS_WARNING                                              :{BLACK}Hoiatus! Sa kavatsed oma konkurente reeta. Pea meeles, et sellisest häbist ei saa sa enam kunagi lahti.
 STR_CHEAT_MONEY                                                 :{LTBLUE}Suurenda raha hulka {CURRENCY64} võrra
 STR_CHEAT_CHANGE_PLAYER                                         :{LTBLUE}Mängi, kui mängija: {ORANGE}{COMMA}
-STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Maagiline buldooser(eemaldamatute objektide eemaldamine): {ORANGE}{STRING}
+STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Maagiline buldooser (eemaldamatute rajatiste lammutamine): {ORANGE}{STRING}
 STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Tunnelid võivad üksteist läbida: {ORANGE}{STRING}
 STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Pausi ajal ehitamine: {ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Reaktiivlennukid ei kuku alla (tihti) väikestel lennuväljadel: {ORANGE} {STRING}
+STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Reaktiivlennukid ei kuku (tihti) alla väikestel lennuväljadel: {ORANGE} {STRING}
 STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Vaheta kliimat: {ORANGE} {STRING}
 STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Muuda kuupäeva: {ORANGE} {DATE_SHORT}
 STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Luba muutuvad tootmisväärtused: {ORANGE}{STRING}
 
-STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Suudub kontrollpunti: {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Suudub meldepunkti: {WAYPOINT}
 STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Suundub {WAYPOINT}, {VELOCITY}
 
 STR_GO_TO_WAYPOINT                                              :Läbi punkti {WAYPOINT}
 STR_GO_NON_STOP_TO_WAYPOINT                                     :Läbi peatumata punkti{WAYPOINT}
 
-STR_WAYPOINTNAME_CITY                                           :Kontrollpunkt {TOWN}
-STR_WAYPOINTNAME_CITY_SERIAL                                    :Kontrollpunkt {TOWN} #{COMMA}
-STR_LANDINFO_WAYPOINT                                           :Kontrollpunkt
+STR_WAYPOINTNAME_CITY                                           :{TOWN} meldepunkt
+STR_WAYPOINTNAME_CITY_SERIAL                                    :Meldepunkt {TOWN} #{COMMA}
+STR_LANDINFO_WAYPOINT                                           :Meldepunkt
 
-STR_WAYPOINT                                                    :{WHITE}Kontrollpunkt
-STR_WAYPOINT_GRAPHICS_TIP                                       :{BLACK}Kontrollpunkti tüübi valik
+STR_WAYPOINT                                                    :{WHITE}Meldepunkt
+STR_WAYPOINT_GRAPHICS_TIP                                       :{BLACK}Vali meldepunkti liik
 
 STR_WAYPOINT_VIEWPORT                                           :{WHITE}{WAYPOINT}
 STR_WAYPOINT_VIEWPORT_TINY                                      :{TINYFONT}{WHITE}{WAYPOINT}
 STR_WAYPOINT_RAW                                                :{WAYPOINT}
-STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Kontrollpunkti nime muutmine
+STR_EDIT_WAYPOINT_NAME                                          :{WHITE}Muuda meldepunkti nime
 
-STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}Kontrollpunkti nime ei saa muuta...
-STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Rööbaste muutmine kontrollpunktiks
-STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}Rongide kontrollpunkti ei saa siia teha...
-STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}Rongide kontrollpunkti ei saa siit eemaldada...
+STR_CANT_CHANGE_WAYPOINT_NAME                                   :{WHITE}Meldepunkti nime ei saa muuta...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP                                :{BLACK}Muuda rööpad meldepunktiks
+STR_CANT_BUILD_TRAIN_WAYPOINT                                   :{WHITE}Meldepunkti ei saa siia rajada...
+STR_CANT_REMOVE_TRAIN_WAYPOINT                                  :{WHITE}Meldepunkti ei saa siit eemaldada...
 
 STR_BUILD_AUTORAIL_TIP                                          :{BLACK}Rööbaste ehitamine kasutades "venitamist"
 
@@ -1345,9 +1350,9 @@
 
 STR_LANDINFO_COORDS                                             :{BLACK}Koordinaadid: {LTBLUE}{NUM}x{NUM} ({STRING})
 
-STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Jaamaosa ei saa eemaldada...
+STR_CANT_REMOVE_PART_OF_STATION                                 :{WHITE}Siinset jaamablokki ei saa lammutada...
 STR_CANT_CONVERT_RAIL                                           :{WHITE}Siin ei saa raudteetüüpi muuta...
-STR_CONVERT_RAIL_TIP                                            :{BLACK}Muuda/uuenda raudteetüüpi
+STR_CONVERT_RAIL_TIP                                            :{BLACK}Muuda/uuenda rööpaliiki
 
 STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP                                :{BLACK}Tõsta vedur siia, et kogu rong maha müüa
 
@@ -1362,25 +1367,25 @@
 STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Lülita kõik välja
 STR_MESSAGES_ENABLE_ALL                                         :{BLACK}Luba kõik
 
-STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Kivisöe kaevanduse ehitamine
+STR_CONSTRUCT_COAL_MINE_TIP                                     :{BLACK}Kivisöekaevanduse ehitamine
 STR_CONSTRUCT_FOREST_TIP                                        :{BLACK}Metsa istutamine
 STR_CONSTRUCT_OIL_RIG_TIP                                       :{BLACK}Naftaplatrvormi ehitamine
 STR_CONSTRUCT_FARM_TIP                                          :{BLACK}Talu rajamine
-STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Vasemaagi kaevanduse ehitamine
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP                               :{BLACK}Vasemaagikaevanduse ehitamine
 STR_CONSTRUCT_OIL_WELLS_TIP                                     :{BLACK}Naftapuuraugu ehitamine
 STR_CONSTRUCT_GOLD_MINE_TIP                                     :{BLACK}Kullakaevanduse ehitamine
 STR_CONSTRUCT_DIAMOND_MINE_TIP                                  :{BLACK}Teemantikaevanduse ehitamine
-STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Rauamaagi kaevandus ehitamine
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Puuviljaistandusue istutamine
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Kummipuu istanduse istutamine
-STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Rahasta Veevärki
-STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Suhkruvati metsa istutamine
-STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Patarei talu ehitamine
+STR_CONSTRUCT_IRON_ORE_MINE_TIP                                 :{BLACK}Rauamaagikaevanduse ehitamine
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP                              :{BLACK}Puuviljaistanduse istutamine
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP                             :{BLACK}Kummipuuistanduse istutamine
+STR_CONSTRUCT_WATER_SUPPLY_TIP                                  :{BLACK}Rahasta veevärki
+STR_CONSTRUCT_COTTON_CANDY_TIP                                  :{BLACK}Suhkruvatimetsa istutamine
+STR_CONSTRUCT_BATTERY_FARM_TIP                                  :{BLACK}Patareitalu ehitamine
 STR_CONSTRUCT_COLA_WELLS_TIP                                    :{BLACK}Koolapumpade ehitamine
 STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP                             :{BLACK}Plastmassiallikate tekitamine
 STR_CONSTRUCT_BUBBLE_GENERATOR_TIP                              :{BLACK}Mulligeneraatori ehitamine
 STR_CONSTRUCT_TOFFEE_QUARRY_TIP                                 :{BLACK}Iirisekaevanduse ehitamine
-STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Suhkrukaevandus ehitamine
+STR_CONSTRUCT_SUGAR_MINE_TIP                                    :{BLACK}Suhkrukaevanduse ehitamine
 
 STR_INDUSTRYDIR_CAPTION                                         :{WHITE}Tööstused
 STR_INDUSTRYDIR_ITEM                                            :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% veetud)
@@ -1394,11 +1399,11 @@
 STR_RAIL_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Vali laadung, mida rong peaks kandma
 STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED                             :{BLACK}Rongi ümberseadistamine valitud laadungi vedamiseks
 STR_RAIL_CAN_T_REFIT_VEHICLE                                    :{WHITE}Ei ole võimalik ümber seadistada...
-STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Teenindusvahemikud on protsentides: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT                            :{LTBLUE}Hooldusperioodid on protsentides: {ORANGE}{STRING}
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Tootlikuse muutmine
 
 TEMP_AI_IN_PROGRESS                                             :{WHITE}Tervitused uuele TI'le(AI). Töö selle kallal veel käib. Peaksite eeldama, et esineb probleeme. Kui juhtud tegema kuvatõmmise, siis postita see ka foorumisse. Edu!
-TEMP_AI_ACTIVATED                                               :{WHITE}Hoiatus: uus tehisintelligents on veel katsetamisel! Hetkel töötavad ainult maanteesõidukid!
+TEMP_AI_ACTIVATED                                               :{WHITE}Hoiatus: uus tehisintelligents on veel eelkatsetamisel! Hetkel töötavad ainult mootorsõidukid!
 TEMP_AI_MULTIPLAYER                                             :{WHITE}TÄHELEPANU! Seda funksiooni veel teistitakse. Palun teata kõik probleemid sellega truelight@openttd.org.
 
 ############ network gui strings
@@ -1415,7 +1420,7 @@
 
 STR_NETWORK_GAME_NAME                                           :{BLACK}Nimi
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Mängu nimi
-STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Keel, serveri versioon, jne.
+STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Suhtluskeel, serveri versioon, jne.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Mäng valimiseks vajuta nimekirjas olevale nimele
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Serveri otsimine
@@ -1426,8 +1431,8 @@
 
 STR_NETWORK_GENERAL_ONLINE                                      :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
 STR_NETWORK_CLIENTS_CAPTION                                     :{BLACK}Kliendid
-STR_NETWORK_CLIENTS_CAPTION_TIP                                 :{BLACK}Kliente sees / maksimum
-STR_NETWORK_GAME_INFO                                           :{SILVER}MÄNGU INFO
+STR_NETWORK_CLIENTS_CAPTION_TIP                                 :{BLACK}Kliente sees / enim kliente{}Ettevõtteid sees / enim ettevõtteid
+STR_NETWORK_GAME_INFO                                           :{SILVER}MÄNGU ANDMED
 STR_ORANGE                                                      :{ORANGE}{STRING}
 STR_NETWORK_CLIENTS                                             :{SILVER}Kliendid:  {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
 STR_NETWORK_LANGUAGE                                            :{SILVER}Keel:  {WHITE}{STRING}
@@ -1454,7 +1459,7 @@
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Kaitse oma mäng parooliga, kui sa ei taha, et kõik sellele ligi pääseksid
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Vali kaart:
 STR_NETWORK_SELECT_MAP_TIP                                      :{BLACK}Millist kaarti sa tahad mängida?
-STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Maksimaalne klientide arv:
+STR_NETWORK_NUMBER_OF_CLIENTS                                   :{BLACK}Suurim klientide arv:
 STR_NETWORK_NUMBER_OF_CLIENTS_TIP                               :{BLACK}Määra suurim klientide arv. Kõik vabad kohad ei pea täidetud olema
 STR_NETWORK_COMBO1                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LAN                                                 :kohtvõrk (LAN)
@@ -1473,10 +1478,10 @@
 STR_NETWORK_8_PLAYERS                                           :8 mängijat
 STR_NETWORK_9_PLAYERS                                           :9 mängijat
 STR_NETWORK_10_PLAYERS                                          :10 mängijat
-STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Maks. firmasi:
+STR_NETWORK_NUMBER_OF_COMPANIES                                 :{BLACK}Enim ettevõtteid:
 STR_NETWORK_NUMBER_OF_COMPANIES_TIP                             :{BLACK}Luba serveris X mängijat
 STR_NETWORK_COMBO3                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Maks. vaatajaid
+STR_NETWORK_NUMBER_OF_SPECTATORS                                :{BLACK}Enim pealtvaatajaid
 STR_NETWORK_NUMBER_OF_SPECTATORS_TIP                            :{BLACK}Luba serveris X vaatajat
 STR_NETWORK_COMBO4                                              :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_NETWORK_LANGUAGE_SPOKEN                                     :{BLACK}Räägitav keel:
@@ -1492,6 +1497,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Inglise keel
 STR_NETWORK_LANG_GERMAN                                         :Saksa keel
 STR_NETWORK_LANG_FRENCH                                         :Prantsuse keel
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasiilia
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgaaria
+STR_NETWORK_LANG_CHINESE                                        :Hiina
+STR_NETWORK_LANG_CZECH                                          :TÅ¡ehhi
+STR_NETWORK_LANG_DANISH                                         :Taani
+STR_NETWORK_LANG_DUTCH                                          :Hollandi
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Soome
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungari
+STR_NETWORK_LANG_ICELANDIC                                      :Islandi
+STR_NETWORK_LANG_ITALIAN                                        :Itaalia
+STR_NETWORK_LANG_JAPANESE                                       :Jaapani
+STR_NETWORK_LANG_KOREAN                                         :Korea
+STR_NETWORK_LANG_LITHUANIAN                                     :Leedu
+STR_NETWORK_LANG_NORWEGIAN                                      :Norra
+STR_NETWORK_LANG_POLISH                                         :Poola
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugali
+STR_NETWORK_LANG_ROMANIAN                                       :Rumeenia
+STR_NETWORK_LANG_RUSSIAN                                        :Vene
+STR_NETWORK_LANG_SLOVAK                                         :Slovakkia
+STR_NETWORK_LANG_SLOVENIAN                                      :Sloveenia
+STR_NETWORK_LANG_SPANISH                                        :Hispaania
+STR_NETWORK_LANG_SWEDISH                                        :Rootsi
+STR_NETWORK_LANG_TURKISH                                        :Türgi
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukraina
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Võrgumängu jututuba
@@ -1507,13 +1537,13 @@
 STR_NETWORK_REFRESH                                             :{BLACK}Värskenda servereid
 STR_NETWORK_REFRESH_TIP                                         :{BLACK}Serveri info värskendamine
 
-STR_NETWORK_COMPANY_INFO                                        :{SILVER}ETTEVÕTE INFO
+STR_NETWORK_COMPANY_INFO                                        :{SILVER}ETTEVÕTE ANDMED
 
 STR_NETWORK_COMPANY_NAME                                        :{SILVER}Ettevõtte nimi:  {WHITE}{STRING}
 STR_NETWORK_INAUGURATION_YEAR                                   :{SILVER}Avamine:  {WHITE}{NUM}
-STR_NETWORK_VALUE                                               :{SILVER}Ettevõtte väärtus:  {WHITE}{CURRENCY64}
+STR_NETWORK_VALUE                                               :{SILVER}Firmaväärtus:  {WHITE}{CURRENCY64}
 STR_NETWORK_CURRENT_BALANCE                                     :{SILVER}Rahaline seis:  {WHITE}{CURRENCY64}
-STR_NETWORK_LAST_YEARS_INCOME                                   :{SILVER}Eelmise aasta sissetulek:  {WHITE}{CURRENCY64}
+STR_NETWORK_LAST_YEARS_INCOME                                   :{SILVER}Eelmise aasta tulud:  {WHITE}{CURRENCY64}
 STR_NETWORK_PERFORMANCE                                         :{SILVER}Suutlikus:  {WHITE}{NUM}
 
 STR_NETWORK_VEHICLES                                            :{SILVER}Sõidukid:  {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
@@ -1628,93 +1658,119 @@
 ##id 0x0800
 STR_0800_COST                                                   :{TINYFONT}{RED}Hind: {CURRENCY}
 STR_0801_COST                                                   :{RED}Hind: {CURRENCY}
-STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Sissetulek: {CURRENCY}
-STR_0803_INCOME                                                 :{GREEN}Sissetulek: {CURRENCY}
+STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Tulu: {CURRENCY}
+STR_0803_INCOME                                                 :{GREEN}Tulu: {CURRENCY}
 STR_FEEDER_TINY                                                 :{TINYFONT}{YELLOW}Kanna üle: {CURRENCY}
 STR_FEEDER                                                      :{YELLOW}Kanna üle: {CURRENCY}
 STR_0805_ESTIMATED_COST                                         :{WHITE}Eeldatav hind: {CURRENCY}
-STR_0807_ESTIMATED_INCOME                                       :{WHITE}Eeldatav sissetulek: {CURRENCY}
+STR_0807_ESTIMATED_INCOME                                       :{WHITE}Eeldatavad tulud: {CURRENCY}
 STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}Siin ei saa maad kõrgendada...
 STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}Siin ei saa maad madaldada...
 STR_080A_ROCKS                                                  :Kaljud
 STR_080B_ROUGH_LAND                                             :Konarlik maa
 STR_080C_BARE_LAND                                              :Lage maa
-STR_080D_GRASS                                                  :Muru
+STR_080D_GRASS                                                  :Rohi
 STR_080E_FIELDS                                                 :Põllud
 STR_080F_SNOW_COVERED_LAND                                      :Lumekattega maa
 STR_0810_DESERT                                                 :Kõrb
 
 ##id 0x1000
 STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION                         :{WHITE}Maa on vales suunas kaldu
-STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Teostamatu raudteede kombinatsioon
+STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Teostamatu rööbasteede kooslus
 STR_1002_EXCAVATION_WOULD_DAMAGE                                :{WHITE}Kaevandamine kahjustaks tunnelit
 STR_1003_ALREADY_AT_SEA_LEVEL                                   :{WHITE}Juba jõutud meretasemeni
 STR_1004_TOO_HIGH                                               :{WHITE}Liiga kõrge
 STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Sobiv rongitee puudub
 STR_1007_ALREADY_BUILT                                          :{WHITE}...juba ehitatud
-STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Raudtee tuleb eelnevalt eemaldada
-STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Raudteede ehitamine
-STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Elektriraudtee ehitus
-STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Monorelsi ehitus
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}MagLevi ehitus
+STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Rööbastee tuleb eelnevalt lammutada
+STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Rööbastee ehitamine
+STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Elektrifitseeritud rööbastee ehitus
+STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Monorööbastee ehitamine
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Elektromageetilise rööbastee 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 rongijaama ehitada...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Siia ei saa signaaltuld asetada...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Siia ei saa raudteed ehitada...
-STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Siit ei saa raudteed eemaldada...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Siit ei saa signaaltulesid eemaldada...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Siia ei saa raudteejaama ehitada...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Siia ei saa signaale rajada...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Siia ei saa rööbasteed ehitada...
+STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Siit ei saa rööbasteed lammutada...
+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                                  :Raudtee ehitus
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Elektriraudtee ehitus
-STR_1016_MONORAIL_CONSTRUCTION                                  :Monorelsi ehitus
-STR_1017_MAGLEV_CONSTRUCTION                                    :MagLevi ehitus
-STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Ehita rongitee
+STR_1015_RAILROAD_CONSTRUCTION                                  :Rööbastee ehitamine
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Elektrifitseeritud rööbastee ehitus
+STR_1016_MONORAIL_CONSTRUCTION                                  :Monorööbastee ehitamine
+STR_1017_MAGLEV_CONSTRUCTION                                    :Elektromagneetilise rööbastee 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 rongijaam
-STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Ehita rongisignaalid
+STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Ehita raudteejaam
+STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Ehita rööbasteesignaale
 STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Ehita raudteesild
 STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}Ehita rongitunnel
-STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Rööbaste ja signaaltulede ehitamine/eemaldamine
+STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Lülitu rööbastee ja signaalide ehitamise ja lammutamise vahel
 STR_101F_BRIDGE_SELECTION_CLICK                                 :{BLACK}Silla valik - klõpsa sobivale sillale, et seda ehitada
 STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO                       :{BLACK}Depoole suuna valimine
-STR_1021_RAILROAD_TRACK                                         :Raudtee
+STR_1021_RAILROAD_TRACK                                         :Rööbastee
 STR_1023_RAILROAD_TRAIN_DEPOT                                   :Rongidepoo
 STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...ala kuulub teisele ettevõttele
-STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Raudtee tavaliste signaaltuledega
-STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Raudtee eel-signaalidega
-STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Raudtee väljumis-signaalidega
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Raudtee mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Rööbastee läbisõidusignaalidega
+STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Rööbastee sissesõidusignaalidega
+STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Rööbastee väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Rööbastee mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Rööbastee läbisõidu- ja hoiatussignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Rööbastee läbisõidu- ja väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Rööbastee läbisõidu- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Rööbastee hoiatus- ja väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Rööbastee hoiatus- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Rööbastee väljasõidu- ja mitmiksignaalidega
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Raudteejaama peab eelnevalt lammutama
 
 
 
 ##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Enne on vaja maantee eemaldada
+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}Teede ehitamine
+STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Sõiduteede ehitus
+STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Trammitee ehitamine
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Vali sillatüüp
-STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Siia ei saa maanteed ehitada...
-STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Siit ei saa maanteed eemaldada...
+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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Depoo suund
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Teeehitus
-STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Ehita tee osa
+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_180B_BUILD_ROAD_SECTION                                     :{BLACK}Ehita sõidutee blokk
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Ehita trammitee blokk
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Ehita sild
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Ehita trammisild
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Ehita tunnel
-STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Teeehituse ja -eemaldamise vahetamine
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Ehita trammitunnel
+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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vali depoole suund
-STR_1814_ROAD                                                   :Maantee
-STR_1815_ROAD_WITH_STREETLIGHTS                                 :Valgustatud maantee
+STR_1813_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                                        :Kolmerajaline tee
 STR_1817_ROAD_VEHICLE_DEPOT                                     :Depoo
-STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Raudtee ülesõit
-STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Bussijaama ei saa eemaldada...
-STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Ei saa eemaldada veoauto jaama...
+STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Raudteeületuskoht
+STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Siinset bussijaama ei saa lammutada...
+STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Siinset laadimisplatsi ei saa lammutada...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Siinset reisitrammijaama ei saa lammutada...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Siinset kaubatrammijaama ei saa lammutada...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Linnad
@@ -1725,15 +1781,15 @@
 STR_2002                                                        :{TINYFONT}{BLACK}{STRING}
 STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Ehitis tuleb eelnevalt hävitada
 STR_2005                                                        :{WHITE}{TOWN}
-STR_2006_POPULATION                                             :{BLACK}Rahvastik: {ORANGE}{COMMA}{BLACK} Maju: {ORANGE}{COMMA}
+STR_2006_POPULATION                                             :{BLACK}Rahvastik: {ORANGE}{COMMA}{BLACK}  Ehitisi: {ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :Linnanime muutmine
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Linnanime ei saa muuta...
-STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} kohalik võim keeldub seda lubamast
+STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}{TOWN} kohalik omavalitsus keeldub seda lubamast
 STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Linnanimed - vajuta linnanimele, et viia vaade linnale
 STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Vaate viimine linnale
 STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Linnanime muutmine
-STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Reisijaid eelmisel kuul: {ORANGE}{COMMA}{BLACK}  maksimum: {ORANGE}{COMMA}
-STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Posti eelmisel kuul: {ORANGE}{COMMA}{BLACK}  maksimum: {ORANGE}{COMMA}
+STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Reisijaid eelmisel kuul: {ORANGE}{COMMA}{BLACK}  Enim: {ORANGE}{COMMA}
+STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Posti eelmisel kuul: {ORANGE}{COMMA}{BLACK}  Enim: {ORANGE}{COMMA}
 STR_200F_TALL_OFFICE_BLOCK                                      :Kõrge büroohoone
 STR_2010_OFFICE_BLOCK                                           :Büroohoone
 STR_2011_SMALL_BLOCK_OF_FLATS                                   :Väike kortermaja
@@ -1751,9 +1807,9 @@
 STR_201D_OFFICE_BLOCK                                           :Büroohoone
 STR_201E_STADIUM                                                :Staadion
 STR_201F_OLD_HOUSES                                             :Vanad majad
-STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Kohalik võim
-STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Näita teavet kohaliku võimu kohta
-STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} kohalik võim
+STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Kohalik omavalitsus
+STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Näita teavet kohaliku omavalitsuse kohta
+STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} kohalik omavalitsus
 STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Ettevõtete hinnangud:
 STR_2024                                                        :{YELLOW}{COMPANY}{PLAYERNAME}: {ORANGE}{STRING}
 STR_2025_SUBSIDIES                                              :{WHITE}Toetused
@@ -1761,17 +1817,17 @@
 STR_2027_FROM_TO                                                :{ORANGE}{STRING} kohast {STRING} kohta {STRING}
 STR_2028_BY                                                     :{YELLOW} (kuni {DATE_SHORT})
 STR_202A_NONE                                                   :{ORANGE}Mitte ühtegi
-STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Juba toetatavad teenused
+STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Juba toetatavad veoteenused:
 STR_202C_FROM_TO                                                :{ORANGE}{STRING} kohast {STATION} kohta {STATION}{YELLOW} ({COMPANY}
 STR_202D_UNTIL                                                  :{YELLOW}, kuni {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Toetuse pakkumine lõppes: {}{}{STRING.g} kohast {STRING} kohta {STRING} veo eest ei maksta enam toetusi.
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Toetuse pakkumine lõppes: {}{}{STRING.g} kohast {STRING} kohta {STRING} veoste eest ei maksta enam toetusi.
 STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Toetuse maksmise aeg sai läbi:{}{}{STRING}kohast {STATION} kohta {STATION} eest ei maksta enam edaspidi toetust.
-STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Transporditeenusele pakutakse toetust:{}{}{STRING.g}veo eest linnast {STRING} linna {STRING}. Esimesele teenusepakkujale makstakse aasta läbi toetusi!
+STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Veoteenusele pakutakse toetust:{}{}{STRING.g}veo eest linnast {STRING} linna {STRING}. Esimesele teenusepakkujale makstakse aasta läbi toetusi!
 STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal 50% rohkem!
 STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal kahekordselt!
 STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal kolmekordselt!
 STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal neljakordselt!
-STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Linna {TOWN} kohalik võim keelab uut lennujaama siia ehitada
+STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Linna {TOWN} kohalik omavalitsus keeldub uut lennujaama lubamast
 STR_2036_COTTAGES                                               :Suvilad
 STR_2037_HOUSES                                                 :Majad
 STR_2038_FLATS                                                  :Korterid
@@ -1785,31 +1841,31 @@
 STR_2040_CINEMA                                                 :Kino
 STR_2041_SHOPPING_MALL                                          :Ostukeskus
 STR_2042_DO_IT                                                  :{BLACK}Soorita toiming
-STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Nimekiri asjadest, mida saab siin linnas teha - vajuta nimele, et saada rohkem informatsiooni
+STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Nimekiri asjadest, mida saab siin linnas teha - klõpsa esemel, et saada rohkem andmeid
 STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Soorita ülalpool valitud toiming
 STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Pakutavad toimingud:
 STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Väike reklaamikampaania
 STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Keskmine reklaamikampaania
 STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Suur reklaamikampaania
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Rahasta kohalikke teetöid
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Rahasta kohalikke teehoiutöid
 STR_204A_BUILD_STATUE_OF_COMPANY                                :Ehita ettevõtte omaniku kuju
 STR_204B_FUND_NEW_BUILDINGS                                     :Rahasta uute hoonete ehitust
 STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Osta monopoolsed veoõigused
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Paku kohalikele võimuesindajatele altkäemaksu
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Paku kohalikule omavalitsusele altkäemaksu
 STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Väikese reklaamikampaania korraldamine rohkemate reisijate ja kaupade meelitamiseks kasutama sinu teenuseid.{}  Hind: {CURRENCY}
 STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Keskmise reklaamikampaania korraldamine, et meelitada rohkem reisijaid ja kaupu sinu teenuste juurede.{}  Hind: {CURRENCY}
 STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Suure reklaamikampaania korraldamine, et meelitada rohkem reisijaid ja kaupu sinu teenuste juurede.{}  Hind: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Teetööde rahastamine. Põhjustab linnateedel tõsiseid liiklusprobleeme kuni 6 kuuks.{}  Hind: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Teehoiutööde rahastamine. Põhjustab linnatänavatel tõsiseid liiklusprobleeme kuni 6 kuuks.{}  Hind: {CURRENCY}
 STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Oma ettevõtte auks kuju ehitamine.{} Hind: {CURRENCY}
 STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Uute ärihoonete ehitamise rahastamine selles linnas.{} Hind: {CURRENCY}
-STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Üheks aastaks monopoolsete veoõiguste ostmine selles linnas. Linna võimud lubavad reisijate ja kauba veoks kasutada ainult sinu jaamasid.{} Hind: {CURRENCY}
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Linnavõimudele ettevõtu reitingu tõstmise eesmärgil altkäemaksu pakkumine. Vahele jäädes korral tuleb trahvi maksta.{} Hind: {CURRENCY}
+STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Üheks aastaks monopoolsete veoõiguste ostmine selles linnas. Linna omavalitsus lubab reisijate ja kauba veoks kasutada ainult sinu jaamasid.{} Hind: {CURRENCY}
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Linna omavalitusele ettevõtu reitingu tõstmise eesmärgil altkäemaksu pakkumine. Vahele jäädes korral tuleb trahvi maksta.{} Hind: {CURRENCY}
 STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Liikluskaos linnas {TOWN}!{}{}Ettevõtte {COMPANY} poolt rahastatud teedeehitus tekitab 6 kuu jooksul maanteedel liiklushäireid!
 STR_2056                                                        :{TINYFONT}{WHITE}{TOWN}
 STR_2058_UNDER_CONSTRUCTION                                     :{STRING} (ehitusel)
 STR_2059_IGLOO                                                  :Iglu
 STR_205A_TEPEES                                                 :Tipid
-STR_205B_TEAPOT_HOUSE                                           :Teepoti maja
+STR_205B_TEAPOT_HOUSE                                           :Teekannu maja
 STR_205C_PIGGY_BANK                                             :Krossu pank
 
 STR_INDUSTRY                                                    :{INDUSTRY}
@@ -1838,10 +1894,10 @@
 
 ##id 0x3000
 STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Raudteejaama valik
-STR_3001_AIRPORT_SELECTION                                      :{WHITE}Lennujaama valik
+STR_3001_AIRPORT_SELECTION                                      :{WHITE}Lennuvälja valik
 STR_3002_ORIENTATION                                            :{BLACK}Orientatsioon
 STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Radade arv
-STR_3004_PLATFORM_LENGTH                                        :{BLACK}Platvormi pikkus
+STR_3004_PLATFORM_LENGTH                                        :{BLACK}Perrooni pikkus
 STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Teisele raudteejaamale liiga lähedal
 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
@@ -1850,15 +1906,15 @@
 STR_3008B_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 hävitada
+STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Raudteejaam tuleb eelnevalt lammutada
 STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Liiga lähedal teisele lennuväljale
-STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Lennujaam tuleb eelnevalt hävitada
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Lennuväli tuleb eelnevalt lammutada
 
 STR_3030_RENAME_STATION_LOADING                                 :Jaama nime muutmine
 STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Jaama nime ei saa muuta...
-STR_3032_RATINGS                                                :{BLACK}Reitingud
+STR_3032_RATINGS                                                :{BLACK}Hinnangud
 STR_3033_ACCEPTS                                                :{BLACK}Võtab vastu
-STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Kohaliku veoteenuse reiting:
+STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Kohaliku veoteenuse hinnang:
 
 ############ range for rating starts
 STR_3035_APPALLING                                              :Kohutav
@@ -1878,8 +1934,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} jaam{P "" a}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Puudub -
@@ -1887,21 +1947,23 @@
 STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Liiga lähedal teisele sadamale
 STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Enne pead sadama hävitama
 STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Raudteejaamale suuna valimine
-STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Vali raudteejaama platvormide arv
+STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Vali raudteejaama perroonide arv
 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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Vaate viimine jaama juurde
-STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Näita jaama reitinguid
+STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Näita jaamahinnangut
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Muuda jaama nime
 STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Näita vastuvõetavate veoste nimistut
 STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Jaamanimed - vajuta nimel, et vaadet jaamale keskendada
-STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Vali lennuvälja suurus, ning tüüp
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Vali lennuvälja suurus ja tüüp
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
 STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
 STR_305E_RAILROAD_STATION                                       :Raudteejaam
 STR_305F_AIRCRAFT_HANGAR                                        :Angaar
-STR_3060_AIRPORT                                                :Lennujaam
+STR_3060_AIRPORT                                                :Lennuväli
 STR_3061_TRUCK_LOADING_AREA                                     :Laadimisplats
 STR_3062_BUS_STATION                                            :Bussijaam
 STR_3063_SHIP_DOCK                                              :Laevasadam
@@ -1917,7 +1979,7 @@
 
 STR_UNDEFINED                                                   :(määratlemata väljend)
 STR_STAT_CLASS_DFLT                                             :Vaikimisi valitud jaam
-STR_STAT_CLASS_WAYP                                             :Kontrollpunktid
+STR_STAT_CLASS_WAYP                                             :Meldepunktid
 
 ##id 0x3800
 STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Paadikuuri Orientatsioon
@@ -1961,8 +2023,8 @@
 STR_4808_FACTORY                                                :vabrik
 STR_4809_PRINTING_WORKS                                         :trükikoda
 STR_480A_STEEL_MILL                                             :terasetööstus
-STR_480B_FARM                                                   :farm
-STR_480C_COPPER_ORE_MINE                                        :vasemaagi kaevandus
+STR_480B_FARM                                                   :talu
+STR_480C_COPPER_ORE_MINE                                        :vasemaagikaevandus
 STR_480D_OIL_WELLS                                              :nafta puurauk
 STR_480E_BANK                                                   :pank
 STR_480F_FOOD_PROCESSING_PLANT                                  :toiduainetetööstus
@@ -1970,17 +2032,17 @@
 STR_4811_GOLD_MINE                                              :kullakaevandus
 STR_4812_BANK                                                   :pank
 STR_4813_DIAMOND_MINE                                           :teemantikaevandus
-STR_4814_IRON_ORE_MINE                                          :rauamaagi kaevandus
+STR_4814_IRON_ORE_MINE                                          :rauamaagikaevandus
 STR_4815_FRUIT_PLANTATION                                       :puuviljaistandus
-STR_4816_RUBBER_PLANTATION                                      :kummipuu istandus
+STR_4816_RUBBER_PLANTATION                                      :kummipuuistandus
 STR_4817_WATER_SUPPLY                                           :veepumbad
 STR_4818_WATER_TOWER                                            :veetorn
 STR_4819_FACTORY                                                :vabrik
-STR_481A_FARM                                                   :farm
+STR_481A_FARM                                                   :talu
 STR_481B_LUMBER_MILL                                            :saeveski
-STR_481C_COTTON_CANDY_FOREST                                    :suhkruvati mets
+STR_481C_COTTON_CANDY_FOREST                                    :suhkruvatimets
 STR_481D_CANDY_FACTORY                                          :kommivabrik
-STR_481E_BATTERY_FARM                                           :patarei farm
+STR_481E_BATTERY_FARM                                           :patareitalu
 STR_481F_COLA_WELLS                                             :koolapumbad
 STR_4820_TOY_SHOP                                               :mänguasjapood
 STR_4821_TOY_FACTORY                                            :mänguasjatehas
@@ -1996,7 +2058,7 @@
 STR_4829_REQUIRES                                               :{BLACK}Vajab: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
-STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Eelmise kuu toodang:
+STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Eelmise kuu valmistoodang:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% veetud)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Vaate keskendamine tööstusele
 STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Uus {STRING} on linna {TOWN} lähedal ehitamisel!
@@ -2007,7 +2069,7 @@
 STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} juhtkond teatab sulgemisest!
 STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}{INDUSTRY} teatab sulgemisest varustusprobleemide tõttu!
 STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Lähiümbruse puude puudumine põhjustab {INDUSTRY} sulgemise!
-STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} tõuseb toodang!
+STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} kasvab toodang!
 STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}{INDUSTRY} lähedal avati uus kivisöe kiht!{}Toodang kahekordistub!
 STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}{INDUSTRY} lähedal avastati uusi naftareserve!{}Toodang kahekordistub!
 STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}{INDUSTRY} võttis kasutusele uued põllutöövahendid! Toodang kahekordistub!
@@ -2041,20 +2103,20 @@
 STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}Siia ei saa tunnelit ehitada...
 STR_5017_RAILROAD_TUNNEL                                        :Raudteetunnel
 STR_5018_ROAD_TUNNEL                                            :Maanteetunnel
-STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Terasest raudtee rippsild
+STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Terasest raudteerippsild
 STR_501C_STEEL_GIRDER_RAIL_BRIDGE                               :Terasest võrestikuga raudteesild
 STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE                           :Terasest ulgtoestikuga raudteesild
-STR_501E_REINFORCED_CONCRETE_SUSPENSION                         :Raudbetoonist raudtee rippsild
-STR_501F_WOODEN_RAIL_BRIDGE                                     :Puidust raudteesild
-STR_5020_CONCRETE_RAIL_BRIDGE                                   :Betoonist raudteesild
-STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Terasest raudtee rippsild
-STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Terasraamistikuga maanteesild
-STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Terasest ulgtoestikuga maanteesild
-STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Raudbetoonist maantee rippsild
-STR_5025_WOODEN_ROAD_BRIDGE                                     :Puidust maanteesild
-STR_5026_CONCRETE_ROAD_BRIDGE                                   :Betoonist maanteesild
+STR_501E_REINFORCED_CONCRETE_SUSPENSION                         :Raudbetoonist raudteerippsild
+STR_501F_WOODEN_RAIL_BRIDGE                                     :Puitraudteesild
+STR_5020_CONCRETE_RAIL_BRIDGE                                   :Betoonraudteesild
+STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Terasest raudteerippsild
+STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Terasraamistikuga sõiduteesild
+STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Terasest ulgtoestikuga sõiduteesild
+STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Raudbetoonist sõidutee rippsild
+STR_5025_WOODEN_ROAD_BRIDGE                                     :Puidust sõiduteesild
+STR_5026_CONCRETE_ROAD_BRIDGE                                   :Betoonist sõiduteesild
 STR_5027_TUBULAR_RAIL_BRIDGE                                    :Torujas raudteesild
-STR_5028_TUBULAR_ROAD_BRIDGE                                    :Torujas maanteesild
+STR_5028_TUBULAR_ROAD_BRIDGE                                    :Torujas sõiduteesild
 
 ##id 0x5800
 STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Mingi objekt on ees
@@ -2073,7 +2135,7 @@
 STR_SV_EMPTY                                                    :
 STR_SV_UNNAMED                                                  :Nimetu
 STR_SV_TRAIN_NAME                                               :Rong {COMMA}
-STR_SV_ROADVEH_NAME                                             :Maanteesõiduk {COMMA}
+STR_SV_ROADVEH_NAME                                             :Mootorsõiduk {COMMA}
 STR_SV_SHIP_NAME                                                :Laev {COMMA}
 STR_SV_AIRCRAFT_NAME                                            :Õhusõiduk {COMMA}
 
@@ -2090,7 +2152,7 @@
 STR_SV_STNAME_WOODS                                             :{STRING} metsad
 STR_SV_STNAME_LAKESIDE                                          :{STRING} järveäärne
 STR_SV_STNAME_EXCHANGE                                          :{STRING} vahetus
-STR_SV_STNAME_AIRPORT                                           :{STRING} lennujaam
+STR_SV_STNAME_AIRPORT                                           :{STRING} lennuväli
 STR_SV_STNAME_OILFIELD                                          :{STRING} naftaväli
 STR_SV_STNAME_MINES                                             :{STRING} kaevandused
 STR_SV_STNAME_DOCKS                                             :{STRING} sadam
@@ -2108,9 +2170,11 @@
 STR_SV_STNAME_BRANCH                                            :{STRING} filiaal
 STR_SV_STNAME_UPPER                                             :Ãœlemine {STRING}
 STR_SV_STNAME_LOWER                                             :Alumine {STRING}
-STR_SV_STNAME_HELIPORT                                          :{STRING} helikopteri maandumisplats
+STR_SV_STNAME_HELIPORT                                          :{STRING} Kopteriväljak
 STR_SV_STNAME_FOREST                                            :{STRING} mets
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2125,17 +2189,17 @@
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
-STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Maksimaalne konkurentide arv: {ORANGE}{COMMA}
+STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Suurim konkurentide arv: {ORANGE}{COMMA}
 STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Konkurentide tulemise aeg: {ORANGE}{STRING}
 STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Linnade arv: {ORANGE}{STRING}
 STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Tööstuste arv: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Suurim laen alguses: {ORANGE}{CURRENCY}
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Suurim alustuslaen: {ORANGE}{CURRENCY}
 STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Intress alguses: {ORANGE}{COMMA}%
-STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Sõidukite hoolduskulud: {ORANGE}{STRING}
-STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Konkurentide ehituskiirus: {ORANGE}{STRING}
+STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Sõidukite käituskulud: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Konkurentide ehitustempo: {ORANGE}{STRING}
 STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Konkurentide intelligentsus: {ORANGE}{STRING}
-STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Sõidukite lagunemine: {ORANGE}{STRING}
-STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Subsiidiumi suurus: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Sõidukite rikkiminemine: {ORANGE}{STRING}
+STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Toetuse suurus: {ORANGE}{STRING}
 STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Ehitamise hind: {ORANGE}{STRING}
 STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Maastiku tüüp: {ORANGE}{STRING}
 STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Merede/järvede kogus: {ORANGE}{STRING}
@@ -2178,7 +2242,7 @@
 STR_6831_3_MONTHS_AFTER_PLAYER                                  :3 kuud pärast mängijat
 STR_6832_6_MONTHS_AFTER_PLAYER                                  :6 kuud pärast mängijat
 STR_6833_9_MONTHS_AFTER_PLAYER                                  :9 kuud pärast mängijat
-STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :Raudtee lõpus ja jaamas
+STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :Raudtee lõpus ja jaamades
 STR_6835_AT_END_OF_LINE_ONLY                                    :Ainult raudtee lõpus
 STR_6836_OFF                                                    :Väljas
 STR_6837_ON                                                     :Sees
@@ -2201,33 +2265,33 @@
 STR_700B_PRESIDENT_S_NAME                                       :Presidendi nimi
 STR_700C_CAN_T_CHANGE_COMPANY_NAME                              :{WHITE}Ei saa ettevõtte nime muuta...
 STR_700D_CAN_T_CHANGE_PRESIDENT                                 :{WHITE}Ei saa presidendi nime muuta...
-STR_700E_FINANCES                                               :{WHITE}{COMPANY} finantsaruanne {BLACK}{PLAYERNAME}
+STR_700E_FINANCES                                               :{WHITE}{COMPANY} rahavoogude aruanne {BLACK}{PLAYERNAME}
 STR_700F_EXPENDITURE_INCOME                                     :{WHITE}Kulud/tulud
 STR_7010                                                        :{WHITE}{NUM}
 STR_7011_CONSTRUCTION                                           :{GOLD}Ehitamine
-STR_7012_NEW_VEHICLES                                           :{GOLD}Uued veovahendid
-STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Rongide hoolduskulud
-STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Maanteesõidukite hoolduskulud
-STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Õhusõidukite hoolduskulud
-STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Laevade hoolduskulud
-STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Kinnisvara korrashoid
-STR_7018_TRAIN_INCOME                                           :{GOLD}Rongide sissetulekud
-STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Maanteesõidukite sissetulekud
-STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Õhusõidukite sissetulekud
-STR_701B_SHIP_INCOME                                            :{GOLD}Laevade sissetulekud
+STR_7012_NEW_VEHICLES                                           :{GOLD}Uus veerem
+STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Rongide käituskulud
+STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Mootorsõidukite käituskulud
+STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Õhusõidukite käituskulud
+STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Laevade käituskulud
+STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Infrastruktuuri korrashoid
+STR_7018_TRAIN_INCOME                                           :{GOLD}Rongide tulud
+STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Mootorsõidukite tulud
+STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Õhusõidukite tulud
+STR_701B_SHIP_INCOME                                            :{GOLD}Laevade tulud
 STR_701C_LOAN_INTEREST                                          :{GOLD}Laenuintress
 STR_701D_OTHER                                                  :{GOLD}Kõik muu
 STR_701E                                                        :{BLACK}-{CURRENCY64}
 STR_701F                                                        :{BLACK}+{CURRENCY64}
 STR_7020_TOTAL                                                  :{WHITE}Kokku:
 STR_7021                                                        :{COMPANY}{PLAYERNAME}
-STR_7022_INCOME_GRAPH                                           :{WHITE}Sissetulekute graafik
+STR_7022_INCOME_GRAPH                                           :{WHITE}Tulugraafik
 STR_CURRCOMPACT                                                 :{CURRCOMPACT64}
 STR_7024                                                        :{COMMA}
 STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Opereerimiskasumi graafik
 STR_7026_BANK_BALANCE                                           :{WHITE}Kontojääk
 STR_7027_LOAN                                                   :{WHITE}Laen
-STR_MAX_LOAN                                                    :{WHITE}Suurim võimalik laen:  {BLACK}{CURRENCY64}
+STR_MAX_LOAN                                                    :{WHITE}Suurim laen:  {BLACK}{CURRENCY64}
 STR_7028                                                        :{BLACK}{CURRENCY64}
 STR_7029_BORROW                                                 :{BLACK}Laena {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
 STR_702A_REPAY                                                  :{BLACK}Maksa tagasi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -2264,10 +2328,10 @@
 STR_704C_KEY                                                    :{BLACK}Selgitus
 STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Näita selgitust graafikute juures
 STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Ettevõttegraafiku selgitus
-STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Vajuta, et ettevõtte graafikut sisse ja välja lülitada
+STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Klõpsa, et ettevõtte graafikut sisse ja välja lülitada
 STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Transporditud veoste kogus
-STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Ettevõtte tegevuse reiting (maksimaalne reiting=1000)
-STR_7052_COMPANY_VALUES                                         :{WHITE}Ettevõtte väärtus
+STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Ettevõtte tegevushinnang (suurim hinnang saab olla 1000)
+STR_7052_COMPANY_VALUES                                         :{WHITE}Firmaväärtus
 STR_7053_COMPANY_LEAGUE_TABLE                                   :{WHITE}Ettevõtete edetabel
 STR_7054                                                        :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME} '{STRING}'
 STR_7055                                                        :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME}  '{STRING}'
@@ -2298,7 +2362,7 @@
 STR_706E_TYCOON                                                 :Magnaat
 STR_706F_BUILD_HQ                                               :{BLACK}Ehita peakorter
 STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Ehita ettevõtte peakorter või vii vaade peakorterile
-STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Ehita ettevõtte peakorter mujale 1% ettevõtte väärtuse hinna eest
+STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Ehita ettevõtte peakorter mujale 1% firmaväärtuse tasu eest
 STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Ettevõtte peakorterit ei saa ehitada...
 STR_7072_VIEW_HQ                                                :{BLACK}Vaata peakorterit
 STR_RELOCATE_HQ                                                 :{BLACK}Liiguta peakorterit
@@ -2308,7 +2372,7 @@
 STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Majanduslik tagasilöök!{}{}Finantseksperdid ennustavad suurt majanduslangust!
 STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Madalseis on läbi!{}{}Suurem kauplemine julgustab majanduse tugevnemisega ettevõtteid!
 STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Lülita aken suureks/väikseks
-STR_7076_COMPANY_VALUE                                          :{GOLD}Ettevõtte väärtus: {WHITE}{CURRENCY64}
+STR_7076_COMPANY_VALUE                                          :{GOLD}Firmaväärtus: {WHITE}{CURRENCY64}
 STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Osta 25% ettevõtte aktsiatest
 STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Müü 25% ettevõtte aktsiatest
 STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Osta 25% ettevõtte aktsiatest
@@ -2320,10 +2384,10 @@
 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_LIVERY_DEFAULT                                              :Tavaline Ãœleandmine
+STR_LIVERY_DEFAULT                                              :Firmavärv
 STR_LIVERY_STEAM                                                :Aurumootor
 STR_LIVERY_DIESEL                                               :Diiselmootor
-STR_LIVERY_ELECTRIC                                             :Elektrimootor
+STR_LIVERY_ELECTRIC                                             :Elektrivedur
 STR_LIVERY_MONORAIL                                             :Monorelsi Mootor
 STR_LIVERY_MAGLEV                                               :Maglev'i Mootor
 STR_LIVERY_DMU                                                  :DMU
@@ -2339,15 +2403,17 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Väike Lennuk
 STR_LIVERY_LARGE_PLANE                                          :Suur Lennuk
+STR_LIVERY_PASSENGER_TRAM                                       :Reisitramm
+STR_LIVERY_FREIGHT_TRAM                                         :Kaubatramm
 
-STR_LIVERY_GENERAL_TIP                                          :{BLACK}Näita üldist värviskeemi
+STR_LIVERY_GENERAL_TIP                                          :{BLACK}Näita üldiseid värvivalikuid
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Näita rongide värvistikke
-STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Näita maanteesõidukite värviskeeme
-STR_LIVERY_SHIP_TIP                                             :{BLACK}Näita laeva värviskeeme
-STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Näita lennuki värviskeemi
+STR_LIVERY_ROADVEH_TIP                                          :{BLACK}Näita mootorsõidukite värvivalikuid
+STR_LIVERY_SHIP_TIP                                             :{BLACK}Näita laevade värvivalikuid
+STR_LIVERY_AIRCRAFT_TIP                                         :{BLACK}Näita lennukite värvivalikuid
 STR_LIVERY_PRIMARY_TIP                                          :{BLACK}Vali põhivärv valitud skeemile
 STR_LIVERY_SECONDARY_TIP                                        :{BLACK}Vali teine värv valitud skeemile
-STR_LIVERY_PANEL_TIP                                            :{BLACK}Vali värviskeem  mida muuta, või mitu tükki vajutades CTRL+Kõps. Vajuta kastil et valida värviskeemi kaustamise vahel.
+STR_LIVERY_PANEL_TIP                                            :{BLACK}Vali värvivalik, mida muuta - või mitu kasutades CTRL+hiireklõps kombinatsiooni. Klõpsa kastil, et muuta värvivaliku kasutust.
 
 ##id 0x8000
 STR_8000_KIRBY_PAUL_TANK_STEAM                                  :Kirby Paul Tank (auruvedur)
@@ -2607,9 +2673,9 @@
 STR_80FE_GURU_X2_HELICOPTER                                     :Guru X2 Helicopter
 STR_80FF_POWERNAUT_HELICOPTER                                   :Powernaut Helicopter
 STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Teade veovahendi tootjalt
-STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Me oleme just kujundanud uue {STRING} - kas te tahaksite testida aasta aega enne kui see on saadaval kõigile?
+STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Me oleme just kujundanud uue {STRING}{P "" i} - kas te tahaksite testida seda aasta aega enne, kui see on saadaval kõigile?
 STR_8102_RAILROAD_LOCOMOTIVE                                    :raudteevedur
-STR_8103_ROAD_VEHICLE                                           :maanteesõiduk
+STR_8103_ROAD_VEHICLE                                           :mootorsõiduk
 STR_8104_AIRCRAFT                                               :lennuk
 STR_8105_SHIP                                                   :laev
 STR_8106_MONORAIL_LOCOMOTIVE                                    :monorelsivedur
@@ -2618,7 +2684,7 @@
 ##id 0x8800
 STR_8800_TRAIN_DEPOT                                            :{WHITE}Linna {TOWN} rongidepoo
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab. . .{}{STATION} jaama saabus esimene rong!
-STR_8802_DETAILS                                                :{WHITE}{STRING} (Detailid)
+STR_8802_DETAILS                                                :{WHITE}{STRING} (üksikasjad)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Rong on ees
 STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
 STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
@@ -2635,14 +2701,14 @@
 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} (Vea ja oota täislaadingut)
 STR_GO_TO_TRAIN_DEPOT                                           :Mine linna {TOWN} rongidepoosse
-STR_SERVICE_AT_TRAIN_DEPOT                                      :Teeninda linna {TOWN} rongidepoos
+STR_SERVICE_AT_TRAIN_DEPOT                                      :Hoolda linna {TOWN} rongidepoos
 STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Sõida läbi linna {TOWN} rongidepoo
-STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Teenindus linna {TOWN} rongidepoost läbisõidul
+STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Hooldus linna {TOWN} rongidepoost läbisõidul
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Suundub linna {TOWN} rongidepoosse
 STR_HEADING_FOR_TRAIN_DEPOT_VEL                                 :{ORANGE}Suundub linna {TOWN} rongidepoosse, {VELOCITY}
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Teenindus linna {TOWN} rongidepoos
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL                         :{LTBLUE}Teenindus linna {TOWN} rongidepoos, {VELOCITY}
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE                             :{LTBLUE}Hooldus linna {TOWN} raudteedepoos
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL                         :{LTBLUE}Hooldus linna {TOWN} raudteedepoos, {VELOCITY}
 
 STR_INVALID_ORDER                                               :{RED} (Ebasobiv järjekord)
 
@@ -2657,16 +2723,16 @@
 STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Ronge saab ainult siis muuta kui nad on peatatud depoo sees
 STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} rong{P "" i}
 
-STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Uus Raudtee Sõiduk
-STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Uued elektriraudteesõidukid
+STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Uus raudteeveerem
+STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Uus elektriraudteeveerem
 STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Uus Monorelssi Sõiduk
 STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Uus Maglevi Sõiduk
 STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Raudteesõidukid
 
 STR_881F_BUILD_VEHICLE                                          :{BLACK}Ehita veovahend
 STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Klooni veovahendit
-STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}See kopeerib maanteesõidukit. CTRL-klõps jagab sihtpunkte
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}See kopeerib maanteesõidukit. Vajuta sellele nuppule, ning seejärel maanteesõidukile depoo sees või väljas. CTRL-klõps jagab sihtpunkte
+STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}See paljundab mootorsõidukit. CTRL-klõps jagab sihtpunkte
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}See paljundab mootorsõidukit. Klõpsa seda nuppu, ning seejärel mootorsõidukil depoos või sellest väljas. CTRL-klõps jagab sihtpunkte
 STR_CLONE_TRAIN                                                 :{BLACK}Klooni rong
 STR_CLONE_TRAIN_INFO                                            :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. CTRL-klikk jagab sihtpunkte
 STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. Vajuta sellele nuppule, ning seejärel rongile depoo sees või väljas. CTRL-klikk jagab sihtpunkte
@@ -2683,12 +2749,12 @@
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Käsud)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Käskude Lõpp - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
-STR_SERVICE                                                     :{BLACK}Teenindus
+STR_SERVICE                                                     :{BLACK}Hooldus
 STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}Raudteesõidukit ei saa ehitada...
 STR_882C_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Ehitatud: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
 STR_882D_VALUE                                                  :{LTBLUE}{STRING}{BLACK}   Väärtus: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
-STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Laadin / Laadin maha
+STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Veose ümberlaadimine
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Rong peab olema depoos peatatud
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Rongi ei saa depoosse saata...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Pole ruumi käskudeks
@@ -2696,53 +2762,56 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Ei saa lisada uut käsku...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Ei saa kustutada seda käsku...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Ei saa muuta seda käsku...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Seda sihtpunkti ei saa ümber asetada...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Praegust järjestust ei ole võimalik vahele jätta...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Valitud järjestust ei ole võimalik vahele jätta...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Transpordivahendit ei saa liigutada...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Tagumine vedur järgneb alati eesmisele
 STR_8838_N_A                                                    :N/A{SKIP}
 STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}Raudteesõidukit ei saa müüa...
 STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Ei leia teed kohalikku depoosse
 STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}Ei saa peatada/startida rongi...
-STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Teenindusperiood: {LTBLUE}{COMMA} päeva{BLACK}  Viimati teenindatud: {LTBLUE}{DATE_LONG}
-STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Teeninduse ajavahemik: {LTBLUE}{COMMA}%{BLACK}   Viimane teenindus: {LTBLUE}{DATE_LONG}
+STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Hooldusperiood: {LTBLUE}{COMMA} päeva{BLACK}  Viimati hooldatud: {LTBLUE}{DATE_LONG}
+STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Hooldusperiood: {LTBLUE}{COMMA}%{BLACK}   Viimati hooldatud: {LTBLUE}{DATE_LONG}
 STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Rongid - vajuta rongile info jaoks
 STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Ehita uued rongid (vajab rongidepood)
-STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Rongid - et infot saada, vajuta rongile; liiguta vagunit, et seda rongilt lisada või eemaldada
+STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Rongid - et andmeid saada, vajuta rongile; liiguta vagunit, et seda rongile lisada või sellelt eemaldada
 STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Osta uus rongi veok
 STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Tiri rongi veok siia et müüa
 STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Keskenda põhivaade rongidepoo kohale
-STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Nimekiri raudteesõidukitest - info saamiseks klõpsa raudteesõidukile
+STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Nimekiri raudteesõidukitest - andmete saamiseks klõpsa raudteesõidukile
 STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Ehita valitud raudteesõiduk
 STR_8845_RENAME_TRAIN_VEHICLE_TYPE                              :{BLACK}Muuda raudteesõiduki tüübinime
 STR_8846_CURRENT_TRAIN_ACTION_CLICK                             :{BLACK}Praegune rongi tegevus - vajuta siia et peatada/käivitada rong
 STR_8847_SHOW_TRAIN_S_ORDERS                                    :{BLACK}Näita rongi käske
 STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Vaate viimine rongi asukohale
 STR_8849_SEND_TRAIN_TO_DEPOT                                    :{BLACK}Saada rong depoosse
-STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Sunni rongi minema edasi signaali ootamata
+STR_884A_FORCE_TRAIN_TO_PROCEED                                 :{BLACK}Sunni rongi signaale eirama
 STR_884B_REVERSE_DIRECTION_OF_TRAIN                             :{BLACK}Pööra rong ümber
 STR_884C_SHOW_TRAIN_DETAILS                                     :{BLACK}Näita rongi detaile
-STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Suurenda teeninduse ajavahemikku
-STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Vähenda teeninduse ajavahemikku
+STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Suurenda hooldusperioodi
+STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Vähenda hooldusperioodi
 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 mahutavust
+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_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 käsk vahele ja mine järgmise käsu 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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Märgi valitud käsk ilma peatusetta peatuseks
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Lisa uus käsk enne valitud käsku või nimekirja lõppu
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Sunni valitud käsu juures oodata täis laadingut
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Sunni valitud käsu juures maha laadida.
-STR_SERVICE_HINT                                                :{BLACK}Jäta see käsk vahele, kui teenindust ei vajata
-STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Maksumus: {CURRENCY} Mass: {WEIGHT_S}{}Kiirus: {VELOCITY}  Võimsus: {POWER}{}Kulu: {CURRENCY}/aastas{}Mahutus: {CARGO}
+STR_SERVICE_HINT                                                :{BLACK}Jäta see käsk vahele, kui hooldust ei vajata
+STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Hind: {CURRENCY} Tühimass: {WEIGHT_S}{}Tippkiirus: {VELOCITY}  Võimsus: {POWER}{}Käituskulud: {CURRENCY}/aastas{}Kandevõime: {CARGO}
 STR_885C_BROKEN_DOWN                                            :{RED}Lagunes
-STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Kulud: {LTBLUE}{CURRENCY}/aastas
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Mass: {LTBLUE}{WEIGHT_S}  {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Suurim kiirus: {LTBLUE}{VELOCITY}
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Suurim veojõud: {LTBLUE}{FORCE}
+STR_885D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED                         :{BLACK}Mass: {LTBLUE}{WEIGHT_S}  {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE                  :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY} {BLACK}Veojõud: {LTBLUE}{FORCE}
 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY}  (eelmisel aastal: {CURRENCY})
-STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Töökindlus: {LTBLUE}{COMMA}%  {BLACK}Lagunemisi alates eelmisest hoolduskorrast: {LTBLUE}{COMMA}
+STR_8860_RELIABILITY_BREAKDOWNS                                 :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}%  {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
 STR_8861_STOPPED                                                :{RED}Peatatud
-STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}Ohu korral ei ole võimalik sundida rongi signaali vahele jätma
+STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL                           :{WHITE}Ohu korral ei ole võimalik sundida rongi signaale eirama
 STR_8863_CRASHED                                                :{RED}Kokkupõrge!
 
 STR_8865_NAME_TRAIN                                             :{WHITE}Anna rongile nimi
@@ -2757,7 +2826,7 @@
 
 STR_TRAIN_STOPPING                                              :{RED}Peatub
 STR_TRAIN_STOPPING_VEL                                          :{RED}Peatub, {VELOCITY}
-STR_INCOMPATIBLE_RAIL_TYPES                                     :Ühildamatud raudtee tüübid
+STR_INCOMPATIBLE_RAIL_TYPES                                     :Ühildamatud rööbasteetüübid
 STR_TRAIN_NO_POWER                                              :{RED}Vool puudub
 STR_TRAIN_START_NO_CATENARY                                     :Selle raja ahel puudub, rong ei saa sõitu alustada
 
@@ -2766,29 +2835,29 @@
 STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE                         :{BLACK}Uus {STRING} saadaval!  -  {STRING}
 
 ##id 0x9000
-STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Maanteesõiduk on teel ees
-STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} maanteesõiduk{P "" it}
+STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Mootorsõiduk takistab teed
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} mootorsõiduk{P "" it}
 STR_9002                                                        :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}Linna {TOWN} maanteesõidukidepoo
-STR_9004_NEW_VEHICLES                                           :{BLACK}Uus maanteesõiduk
-STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Uued maanteesõidukid
+STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}Linna {TOWN} mootorsõidukidepoo
+STR_9004_NEW_VEHICLES                                           :{BLACK}Uus mootorsõiduk
+STR_9006_NEW_ROAD_VEHICLES                                      :{WHITE}Uued mootorsõidukid
 STR_9007_BUILD_VEHICLE                                          :{BLACK}Ehita veovahend
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Maanteesõidukit ei saa ehitada...
-STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Detailid)
-STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_900E_MAX_SPEED                                              :{BLACK}Maksimaalne kiirus: {LTBLUE}{VELOCITY}
-STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY}  (viimasel aastal: {CURRENCY})
-STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Töökindlus: {LTBLUE}{COMMA}%  {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Mootorsõidukit ei saa ehitada...
+STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (üksikasjad)
+STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_900E_MAX_SPEED                                              :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
+STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY}  (eelmisel aastal: {CURRENCY})
+STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}%  {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
 STR_9011_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Ehitatud: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
-STR_9012_CAPACITY                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_9012_CAPACITY                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO}
 STR_9013_MUST_BE_STOPPED_INSIDE                                 :{WHITE}...peab garaaþis olema
 STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}Ei saa veokit müüa...
 STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}Ei saa veokit peatada, ega startida...
 STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Veok {COMMA} ootab garaaþi
 STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Suundub {TOWN} garaaþi
 STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Suundub {TOWN} garaaþi, {VELOCITY}
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Teenindus linna {TOWN} depoos
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Teenindus linna {TOWN} depoos, {VELOCITY}
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Hooldus linna {TOWN} depoos
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Hooldus linna {TOWN} depoos, {VELOCITY}
 STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}Ei saa veokit garaaþi saata
 STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Ei leia kohalikku garaaþi üles
 STR_901A_ROAD_VEHICLES_CLICK_ON                                 :{BLACK}Veokid - info saamiseks vajuta veokile
@@ -2796,41 +2865,43 @@
 STR_901C_CURRENT_VEHICLE_ACTION                                 :{BLACK}Transpordivahendi praegune tegevus - selle peatamiseks või startimiseks klõpsa siia
 STR_901D_SHOW_VEHICLE_S_ORDERS                                  :{BLACK}Näita veovahendi sihtpunkte
 STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE                            :{BLACK}Keskenda vaade veovahendile
-STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Saada sõiduk garaaži. CTRL+klõps teenindab ainult.
+STR_901F_SEND_VEHICLE_TO_DEPOT                                  :{BLACK}Saada sõiduk garaaži. CTRL+klõps, et ainult teenindada.
 STR_9020_FORCE_VEHICLE_TO_TURN_AROUND                           :{BLACK}Sunni veovahendit ümber pöörama
-STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Näita maanteesõiduki üksikasju
+STR_9021_SHOW_ROAD_VEHICLE_DETAILS                              :{BLACK}Näita mootorsõiduki üksikasju
 STR_9022_VEHICLES_CLICK_ON_VEHICLE                              :{BLACK}Veovahendid - andmete saamiseks klõpsa veovahendile
-STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Ehita uus maanteesõiduk
+STR_9023_BUILD_NEW_ROAD_VEHICLE                                 :{BLACK}Ehita uus mootorsõiduk
 STR_9024_DRAG_ROAD_VEHICLE_TO_HERE                              :{BLACK}Et müüa, tiri sõiduk siia
 STR_9025_CENTER_MAIN_VIEW_ON_ROAD                               :{BLACK}Vii vaade garaaþi asukohale
-STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Nimekiri maanteesõidukitest - maanteesõiduki kohta info saamiseks vajuta sellele
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Ehita valitud maanteesõiduk
-STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Hind: {CURRENCY}{}Kiirus: {VELOCITY}{}Hoolduskulud: {CURRENCY}/aastas{}Mahutavus: {CARGO}
+STR_9026_ROAD_VEHICLE_SELECTION                                 :{BLACK}Mootorsõiduki valimisnimekiri - andmete saamiseks klõpsa sõidukile
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD                             :{BLACK}Ehita valitud mootorsõiduk
+STR_902A_COST_SPEED_RUNNING_COST                                :{BLACK}Hind: {CURRENCY}{}Tippkiirus: {VELOCITY}{}Käituskulud: {CURRENCY}/aastas{}Kandevõime: {CARGO}
 
-STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Nimeta maanteeveok ümber
+STR_902C_NAME_ROAD_VEHICLE                                      :{WHITE}Nimeta mootorsõiduk ümber
 STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}Ei saa maanteveokit ümber nimetada...
-STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Nimeta maanteeveok ümber
+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_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Rongikokkupõrge!{}Juht suri peale õnnetust tules
-STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Maanteesõiduki kokkupõrge rongiga!{}{COMMA} inimest surnud
+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...
 STR_ONLY_TURN_SINGLE_UNIT                                       :{WHITE}Mitmest osast koosnevaid veovahendeid ei saa ümber pöörata
 STR_9034_RENAME                                                 :{BLACK}Muuda nime
-STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Muuda maanteesõiduki tüübinime
-STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Muuda maanteesõiduki tüübinime
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Maanteesõiduki tüübinime ei saa muuta...
+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_SERVICE_AT_ROADVEH_DEPOT                                    :Hoolda linna {TOWN} maanteesõidukidepoos
+STR_SERVICE_AT_ROADVEH_DEPOT                                    :Hoolda linna {TOWN} mootorsõidukidepoos
 
-STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Seadista maanteesõidukit kandmaks teist tüüpi laadungit
-STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Muuda maanteesõiduki seadistust
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Seadista maanteesõidukit kandma valitud laadungitüüpi
-STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}Maanteesõiduki seadistust ei saa ümber muuta
+STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Seadista mootorsõidukit kandmaks teist tüüpi veost
+STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Muuda mootorsõiduki seadistust
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED                     :{BLACK}Seadista mootorsõidukit kandma valitud veotüüpi
+STR_REFIT_ROAD_VEHICLE_CAN_T                                    :{WHITE}Mootorsõiduki seadistust ei saa ümber muuta
 STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Vali, millist tüüpi laadungit veovahend veab
 
 ##id 0x9800
-STR_9800_DOCK_CONSTRUCTION                                      :Sadama ehitus
+STR_9800_DOCK_CONSTRUCTION                                      :Sadamaehitus
 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} Paadikuur
@@ -2846,20 +2917,20 @@
 STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Ei saa laeva ehitada...
 STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Laev on ees
 STR_980F                                                        :{WHITE}{VEHICLE}
-STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (Detailid)
-STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_9813_MAX_SPEED                                              :{BLACK}Maks. kiirus: {LTBLUE}{VELOCITY}
+STR_9811_DETAILS                                                :{WHITE}{VEHICLE} (üksikasjad)
+STR_9812_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_9813_MAX_SPEED                                              :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
 STR_9814_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY}  (viimasel: {CURRENCY})
-STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Töökindlus: {LTBLUE}{COMMA}%  {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_9815_RELIABILITY_BREAKDOWNS                                 :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}%  {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
 STR_9816_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Ehitati: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
-STR_9817_CAPACITY                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_9817_CAPACITY                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO}
 STR_9818_CAN_T_STOP_START_SHIP                                  :{WHITE}Ei saa peatada/käivitada laeva...
 STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}Ei saa laeva paadikuuri saata...
 STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Ei leia kohalikku paadikuuri
 STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Suundub {TOWN}a paadikuuri
 STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Suundub {TOWN}a paadikuuri, {VELOCITY}
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Teenindus linna {TOWN} sadamas
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Teenindus linna {TOWN} sadamas, {VELOCITY}
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Hooldus linna {TOWN} sadamas
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Hooldus linna {TOWN} sadamas, {VELOCITY}
 STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}Laev {COMMA} ootab sadamas
 STR_981D_BUILD_SHIP_DOCK                                        :{BLACK}Ehita laevakuur
 STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING                          :{BLACK}Ehita laevakuur (laevade ehitamiseks ja hoolduseks)
@@ -2876,13 +2947,13 @@
 STR_9829_CENTER_MAIN_VIEW_ON_SHIP                               :{BLACK}Vii vaade laeva asukohale
 STR_982A_SEND_SHIP_TO_DEPOT                                     :{BLACK}Saada laev paadikuuri
 STR_982B_SHOW_SHIP_DETAILS                                      :{BLACK}Näita laeva detaile
-STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Hind: {CURRENCY} Maks. Kiirus: {VELOCITY}{}Mahutavus: {CARGO}{}Hoolduskulud: {CURRENCY}/aasta
+STR_982E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Hind: {CURRENCY} Tippkiirus: {VELOCITY}{}Kandevõime: {CARGO}{}Käituskulud: {CURRENCY}/aastas
 STR_982F_NAME_SHIP                                              :{BLACK}Anna laevale nimi
 
 STR_9831_NAME_SHIP                                              :{WHITE}Anna laevale nimi
 STR_9832_CAN_T_NAME_SHIP                                        :{WHITE}Ei saa laeva ümber nimetada...
-STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} sadamasse saabus esimene laev!
-STR_9834_POSITION_BUOY_WHICH_CAN                                :{BLACK}Aseta teemärgisena kasutatav poi
+STR_9833_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} terminali saabus esimene laev!
+STR_9834_POSITION_BUOY_WHICH_CAN                                :{BLACK}Raja teemärgisena kasutatav poi
 STR_9835_CAN_T_POSITION_BUOY_HERE                               :{WHITE}Poid ei saa siia asetada...
 STR_9836_RENAME                                                 :{BLACK}Muuda nime
 STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Nimeta laeva tüüp ümber
@@ -2894,47 +2965,47 @@
 STR_983D_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Vali kauba tüüp, mida laev hakkab kandma
 STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED                        :{BLACK}Seadista laev ümber valitud kaubatüübi jaoks
 STR_983F_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Vali kaubatüüp, mida vedada:
-STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Uus mahutavus: {GOLD}{CARGO}{}{BLACK}Laeva ümberseadistamise hind: {GOLD}{CURRENCY}
+STR_9840_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Uus kandevõime: {GOLD}{CARGO}{}{BLACK}Laeva ümberseadistamise hind: {GOLD}{CURRENCY}
 STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Ei saa laeva ümber seadistada...
 STR_9842_REFITTABLE                                             :(ümberseadistatav)
 STR_GO_TO_SHIP_DEPOT                                            :Mine {TOWN} paadikuuri
-SERVICE_AT_SHIP_DEPOT                                           :Teenindus {TOWN} paadikuuris
+SERVICE_AT_SHIP_DEPOT                                           :Hooldus {TOWN} paadikuuris
 
 ##id 0xA000
-STR_A000_AIRPORTS                                               :{WHITE}Lennujaamad
-STR_A001_CAN_T_BUILD_AIRPORT_HERE                               :{WHITE}Ei saa lennujaama siia ehitada...
+STR_A000_AIRPORTS                                               :{WHITE}Lennuväljad
+STR_A001_CAN_T_BUILD_AIRPORT_HERE                               :{WHITE}Siia ei saa lennuvälja rajada...
 STR_A002_AIRCRAFT_HANGAR                                        :{WHITE}{STATION} Lennujaama angaar
 STR_A003_NEW_AIRCRAFT                                           :{BLACK}Uus lennuk
 STR_CLONE_AIRCRAFT                                              :{BLACK}Klooni lennuk
-STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}See ehitab lennukist koopia. CTRL-klikk jagab sihtpunkte
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}See ehitab lennukist koopia. Vajuta sellele nuppule, ning seejärel lennukile angaari sees või väljas. CTRL-klikk jagab sihtpunkte
+STR_CLONE_AIRCRAFT_INFO                                         :{BLACK}See paljundab õhusõidukit. CTRL-klikk jagab sihtpunkte
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW                           :{BLACK}See paljundab õhusõidukit. Vajuta sellele nuppule, ning seejärel lennukile angaari sees või väljas. CTRL-klikk jagab sihtpunkte
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}Uus lennuk
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Ehita lennuk
 STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Ei saa ehitada lennukit...
 STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} lennuk{P "" it}
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (sihtpunktid)
-STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Detailid)
-STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_A00E_MAX_SPEED                                              :{BLACK}Maks. kiirus: {LTBLUE}{VELOCITY}
+STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (üksikasjad)
+STR_A00D_AGE_RUNNING_COST_YR                                    :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK}   Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_A00E_MAX_SPEED                                              :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
 STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY}  (eelmisel aastal: {CURRENCY})
-STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Töökindlus: {LTBLUE}{COMMA}%  {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_A010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}%  {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
 STR_A011_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Ehitusaasta: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
 STR_A012_CAN_T_SEND_AIRCRAFT_TO                                 :{WHITE}Ei saa lennukit angaari saata...
 STR_HEADING_FOR_HANGAR                                          :{ORANGE}Suundub {STATION} Angaari
 STR_HEADING_FOR_HANGAR_VEL                                      :{ORANGE}Suundub {STATION} angaari, {VELOCITY}
-STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Teenindus linna {STATION} angaaris
-STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Teenindus linna {STATION} angaaris, {VELOCITY}
+STR_HEADING_FOR_HANGAR_SERVICE                                  :{LTBLUE}Hooldus linna {STATION} angaaris
+STR_HEADING_FOR_HANGAR_SERVICE_VEL                              :{LTBLUE}Hooldus linna {STATION} angaaris, {VELOCITY}
 STR_A014_AIRCRAFT_IS_WAITING_IN                                 :{WHITE}Lennuk {COMMA} ootab angaaris
 STR_A015_AIRCRAFT_IN_THE_WAY                                    :{WHITE}Lennuk on teel
 STR_A016_CAN_T_STOP_START_AIRCRAFT                              :{WHITE}Ei saa lennukit peatada/käivitada...
 STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}Lennuk on õhus
-STR_A019_CAPACITY                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO}, {CARGO}
-STR_A01A_CAPACITY                                               :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_A019_CAPACITY                                               :{BLACK}Kandevõime: {LTBLUE}{CARGO}, {CARGO}
+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                                   :Lennujaama ehitus
-STR_A01E_BUILD_AIRPORT                                          :{BLACK}Ehita lennujaam
+STR_A01D_AIRPORT_CONSTRUCTION                                   :Lennuvälja 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)
 STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Lennuk - info saamiseks vajuta lennukile
@@ -2948,12 +3019,12 @@
 STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT                           :{BLACK}Vii peavaade lennukile
 STR_A02A_SEND_AIRCRAFT_TO_HANGAR                                :{BLACK}Saada lennuk angaari
 STR_A02B_SHOW_AIRCRAFT_DETAILS                                  :{BLACK}Näita lennuki detaile
-STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Hind: {CURRENCY} Maks. kiirus: {VELOCITY}{}Mahutavus: {COMMA} reisijat, {COMMA} kotti kirju{}Hoolduskulud: {CURRENCY}/aastas
+STR_A02E_COST_MAX_SPEED_CAPACITY                                :{BLACK}Hind: {CURRENCY} Tippkiirus: {VELOCITY}{}Kandevõime: {COMMA} reisijat, {COMMA} kotti kirju{}Käituskulud: {CURRENCY}/aastas
 
 STR_A030_NAME_AIRCRAFT                                          :{WHITE}Anna lennukile nimi
 STR_A031_CAN_T_NAME_AIRCRAFT                                    :{WHITE}Ei saa lennukile nime anda
 STR_A032_NAME_AIRCRAFT                                          :{BLACK}Nimeta lennuk ümber
-STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} lennujaama saabus esimene lennuk!
+STR_A033_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} terminali saabus esimene lennuk!
 STR_A034_PLANE_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}Lennuõnnetus!{}{COMMA} surid tules {STATION}s
 STR_PLANE_CRASH_OUT_OF_FUEL                                     :{BLACK}{BIGFONT}Lennuõnnetus!{}Lennukil lõppes kütus, {COMMA} surid tules!
 STR_A036                                                        :{TINYFONT}{BLACK}{STATION}
@@ -2967,14 +3038,14 @@
 STR_A03E_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Vali kauba tüüp, mida lennuk hakkab kandma
 STR_A03F_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Seadista lennuk ümber, et kanda valitud kaubatüüpi
 STR_A040_SELECT_CARGO_TYPE_TO_CARRY                             :{GOLD}Vali kaubatüüp, mida kanda:
-STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Uus mahutavus: {GOLD}{STRING}{}{BLACK}Ãœmber seadistamise maksumus: {GOLD}{CURRENCY}
+STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Uus kandevõime: {GOLD}{STRING}{}{BLACK}Ümberseadistamise hind: {GOLD}{CURRENCY}
 STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Ei saa lennukit ümber seadistada...
-STR_GO_TO_AIRPORT_HANGAR                                        :Mine {STATION} Angaari
-SERVICE_AT_AIRPORT_HANGAR                                       :Teenindus {STATION} angaaris
+STR_GO_TO_AIRPORT_HANGAR                                        :Mine {STATION} angaari
+SERVICE_AT_AIRPORT_HANGAR                                       :Hooldus {STATION} angaaris
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Tsepeliini õnnetus {STATION}s!
-STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Maanteesõiduk plahvatas kokkupõrkes 'UFO-ga'!
+STR_B001_ROAD_VEHICLE_DESTROYED                                 :{BLACK}{BIGFONT}Mootorsõiduk plahvatas kokkupõrkes 'UFO-ga'!
 STR_B002_OIL_REFINERY_EXPLOSION                                 :{BLACK}{BIGFONT}Naftapuhastusjaama plahvatus {TOWN} lähedal!
 STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS                        :{BLACK}{BIGFONT}Tehas purunes teadmata põhjustel {TOWN} lähedal!
 STR_B004_UFO_LANDS_NEAR                                         :{BLACK}{BIGFONT}'UFO' maandus {TOWN} lähedal!
@@ -2995,17 +3066,17 @@
 STR_PERFORMANCE_DETAIL_VEHICLES                                 :{BLACK}Sõidukeid:
 STR_PERFORMANCE_DETAIL_STATIONS                                 :{BLACK}Jaamu:
 STR_PERFORMANCE_DETAIL_MIN_PROFIT                               :{BLACK}Vähim kasum:
-STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Vähim sissetulek:
-STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Maks. sissetulek:
+STR_PERFORMANCE_DETAIL_MIN_INCOME                               :{BLACK}Vähim tulu:
+STR_PERFORMANCE_DETAIL_MAX_INCOME                               :{BLACK}Suurim tulu:
 STR_PERFORMANCE_DETAIL_DELIVERED                                :{BLACK}Transporditud:
 STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Kaupu:
 STR_PERFORMANCE_DETAIL_MONEY                                    :{BLACK}Raha:
 STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Laen:
 STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Kokku:
 ############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Transpordivahendeid kokku; see sisaldab maantee-, raudtee- ja õhusõidukeid, ning laevu
-STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Jaamade osade arv. Iga osa jaamast (nt. rongijaam, bussipeatus, lennujaam) loetakse eraldi, isegi kui naad on ühendatud üheks jaamaks
-STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Kõige väiksema sissetulekuga sõiduki kasum (kõikidest vähemalt 2 aastastest veovahenditest)
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Veeremit kokku; sisaldab sõidutee-, rööbastee- ja õhusõidukeid, ning laevu
+STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Jaamablokkide arv. Iga osa jaamast (nt. rongijaam, bussipeatus, lennujaam) loetakse eraldi, isegi kui naad on ühendatud üheks jaamaks
+STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP                           :{BLACK}Kõige väiksema tuluga sõiduki kasum (kõikidest vähemalt 2 aastastest veovahenditest)
 STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP                           :{BLACK}Väikseim kuukasum viimase 12 kvartali jooksul
 STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP                           :{BLACK}Suurim kuukasum viimase 12 kvartali jooksul
 STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Kauba arv, mis on veatud viimase 4 kvartali jooksul
@@ -3048,7 +3119,7 @@
 STR_NEWGRF_FILE_TIP                                             :{BLACK}Nimekiri installeerimata NewGRF failidest. Parameetrite muutmiseks klõpsa failil.
 STR_NEWGRF_PARAMETER                                            :{BLACK}Parameetrid: {SILVER}{STRING}
 STR_NEWGRF_PARAMETER_QUERY                                      :{BLACK}Sisesta NewGRF parameetrid
-STR_NEWGRF_NO_INFO                                              :{BLACK}Informatsioon puudub
+STR_NEWGRF_NO_INFO                                              :{BLACK}Andmed puuduvad
 
 STR_NEWGRF_ADD_CAPTION                                          :{WHITE}Olemasolevad NewGRF failid
 STR_NEWGRF_ADD_FILE                                             :{BLACK}Lisa valikule
@@ -3065,7 +3136,7 @@
 STR_NEWGRF_DISABLED_WARNING                                     :{WHITE}Puuduvad GRF failid on välja lülitatud
 STR_NEWGRF_NOT_FOUND_WARNING                                    :{WHITE}Mängu laadimiseks puudu olevad GRF failid
 
-STR_CURRENCY_WINDOW                                             :{WHITE}Personaalne valuuta
+STR_CURRENCY_WINDOW                                             :{WHITE}Isiklik valuuta
 STR_CURRENCY_EXCHANGE_RATE                                      :{LTBLUE}Vahetuskurss: {ORANGE}{CURRENCY} = £ {COMMA}
 STR_CURRENCY_SEPARATOR                                          :{LTBLUE}Vahemärk:
 STR_CURRENCY_PREFIX                                             :{LTBLUE}Eesliide:
@@ -3082,20 +3153,21 @@
 STR_SHIP                                                        :{BLACK}{SHIP}
 
 STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} Rong{P "" i}
-STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} maanteesõiduk{P "" it}
+STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} mootorsõiduk{P "" it}
 STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} Lennuk{P "" it}
 STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} Laev{P "" a}
 
-STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Näita kõiki ronge, mille marsruudis on see jaam
-STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Näita kõiki maanteesõidukeid, mille marsruut sisaldab seda jaama
-STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Näita kõiki lennukeid, mille marsruudis on see lennujaam
-STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Näita kõiki laevu, mille marsruudis on see sadam
+STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Näita kõiki ronge, mille sõidugraafik sisaldab seda rongijaama
+STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Näita kõiki mootorsõidukeid, mille sõidugraafik sisaldab seda jaama
+STR_SCHEDULED_AIRCRAFT_TIP                                      :{BLACK}Näita kõiki lennukeid, mille sõidugraafik sisaldab seda lennujaama
+STR_SCHEDULED_SHIPS_TIP                                         :{BLACK}Näita kõiki laevu, mille sõidugraafik sisaldab seda sadamat
 
-STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Jagatud marsruut{COMMA} Auto{P "" d}
-STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Näita kõiki sama marsruudiga maanteesõidukeid
+STR_VEH_WITH_SHARED_ORDERS_LIST                                 :{WHITE}Jagatud sõidugraafik{COMMA} Auto{P "" d}
+STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Sa oled müümas kõiki depoos asuvaid masinaid. Kas sa oled kindel?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Vale depootüüp
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Müü kõik rongid jaamast
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Müü kõik autod garaažist
@@ -3107,10 +3179,10 @@
 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP                           :{BLACK}Võta nimekiri kõikidest laevadest selles sadamas nende käskude järgi
 STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP                       :{BLACK}Võta nimekiri kõikidest lennukitest suvalistest angaaridest selles lennujaamas nende käskude järgi
 
-STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Asenda automaatselt kõik rongid jaamas
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Asenda automaatselt kõik depoos olevad maanteesõidukid
-STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Asenda automaatselt kõik laevad sadamas
-STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Asenda automaatselt kõik lennumasinad angaaris
+STR_DEPOT_AUTOREPLACE_TRAIN_TIP                                 :{BLACK}Asenda kõik rongid jaamas ise
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP                               :{BLACK}Asenda kõik depoos olevad mootorsõidukid ise
+STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Asenda kõik laevad depoos ise
+STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Asenda kõik lennumasinad angaaris ise
 
 STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} Rong{P "" id}
 STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} Auto{P "" d}
@@ -3126,11 +3198,11 @@
 STR_REPLACE_HELP_RIGHT_ARRAY                                    :{BLACK}Vali uus vedur, millega sa soovid vasakult valitud vedurit välja vahetada.
 STR_REPLACE_HELP_STOP_BUTTON                                    :{BLACK}Vajuta lõpetamaks vasakult valitud veduri väljavahetust
 STR_REPLACE_HELP_START_BUTTON                                   :{BLACK}Vajuta vasakul asuva veduri väljavahetust paremal valitud veduriga
-STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Vali raudteetüüp millel olevaid vedureid sa soovid vahetada
+STR_REPLACE_HELP_RAILTYPE                                       :{BLACK}Vali rööbasteetüüp mille vedureid sa soovid asendada
 STR_REPLACE_HELP_REPLACE_INFO_TAB                               :{BLACK}Näitab mis veduriga soovitakse vasakult valitud vedurit vahetada, kui üldse
 STR_REPLACE_HELP                                                :{BLACK}See lubab sul vahetada ühe veduritüübi teisega, kui esimest tüüpi rongid sisenevad depoosse
 STR_REPLACE_REMOVE_WAGON                                        :{BLACK}Vagunite eemaldus: {ORANGE}{SKIP}{STRING}
-STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Sunni automaatvahetus hoidma rongi pikkust samaks eemaldades vaguneid (alustades eestpoolt), kui vahetatav mootor muudaks rongi pikemaks.
+STR_REPLACE_REMOVE_WAGON_HELP                                   :{BLACK}Sunni isevahetust hoidma rongi pikkust selleks (eest alustades) veeremit eemaldades, juhul kui uus vagun muudaks rongi pikemaks.
 STR_REPLACE_ENGINE_WAGON_SELECT                                 :{BLACK}Vahetamisel: {ORANGE}{SKIP}{SKIP}{STRING}
 STR_REPLACE_ENGINE_WAGON_SELECT_HELP                            :{BLACK} TESTIMISEL! {}Vaheta aken mootori ja vaguni vahetamise aknate vahel.{}Vaguni vahetus tehakse ainult siis kui uus vagun suudetakse muuta kandmaks sama tüüpi kaupa kui vana vagun. See valitakse igale vagunile kui tegelik vahetus käib
 STR_RAIL_VEHICLE_NOT_AVAILABLE                                  :{WHITE}Sõiduk pole saadaval
@@ -3147,7 +3219,7 @@
 STR_MASS_STOP_HANGAR_TIP                                        :{BLACK}Vajuta, kui tahad seisata kõiki lennukeid angaaris
 
 STR_MASS_START_DEPOT_TRAIN_TIP                                  :{BLACK}Klõpsa kõikide depoos asuvate rongide käivitamiseks
-STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Klõpsa, et käivitada kõik depoos olevad maanteesõidukid
+STR_MASS_START_DEPOT_ROADVEH_TIP                                :{BLACK}Klõpsa, et käivitada kõik depoos olevad mootorsõidukid
 STR_MASS_START_DEPOT_SHIP_TIP                                   :{BLACK}Klõpsa kõikide angaaris asuvate laevade käivitamiseks
 STR_MASS_START_HANGAR_TIP                                       :{BLACK}Klõpsa kõikide angaaris asuvate lennukite käivitamiseks
 
@@ -3170,18 +3242,18 @@
 
 STR_TINY_BLACK                                                  :{BLACK}{TINYFONT}{COMMA}
 
-STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Maksuvus: {GOLD}{CURRENCY}{BLACK} Kaal: {GOLD}{WEIGHT_S}
-STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Kiirus: {GOLD}{VELOCITY}{BLACK}   Võimsus: {GOLD}{POWER}
-STR_PURCHASE_INFO_SPEED                                         :{BLACK}Kiirus: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Hoolduskulud: {GOLD}{CURRENCY}/aasta
-STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Mahutavus: {GOLD}{CARGO} {STRING}
+STR_PURCHASE_INFO_COST_WEIGHT                                   :{BLACK}Hind: {GOLD}{CURRENCY}{BLACK} Tühimass: {GOLD}{WEIGHT_S}
+STR_PURCHASE_INFO_SPEED_POWER                                   :{BLACK}Tippkiirus: {GOLD}{VELOCITY}{BLACK}   Võimsus: {GOLD}{POWER}
+STR_PURCHASE_INFO_SPEED                                         :{BLACK}Tippkiirus: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_RUNNINGCOST                                   :{BLACK}Käituskulud: {GOLD}{CURRENCY}/aastas
+STR_PURCHASE_INFO_CAPACITY                                      :{BLACK}Kandevõime: {GOLD}{CARGO} {STRING}
 STR_PURCHASE_INFO_DESIGNED_LIFE                                 :{BLACK}Kujundatud: {GOLD}{NUM}{BLACK} Vanus: {GOLD}{COMMA} aastat
-STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Suurim töökindlus: {GOLD}{COMMA}%
-STR_PURCHASE_INFO_COST                                          :{BLACK}Maksuvus: {GOLD}{CURRENCY}
-STR_PURCHASE_INFO_WEIGHT_CWEIGHT                                :{BLACK}Kaal: {GOLD}{WEIGHT_S}  ({WEIGHT_S})
-STR_PURCHASE_INFO_COST_SPEED                                    :{BLACK}Maksumus: {GOLD}{CURRENCY}{BLACK} Kiirus: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Mahutavus: {GOLD}{COMMA} reisijat, {COMMA} kotti kirju
-STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Kiirendavad vagunid: {GOLD}+{POWER}{BLACK} Kaal: {GOLD}+{WEIGHT_S}
+STR_PURCHASE_INFO_RELIABILITY                                   :{BLACK}Parim tehnoseisund: {GOLD}{COMMA}%
+STR_PURCHASE_INFO_COST                                          :{BLACK}Hind: {GOLD}{CURRENCY}
+STR_PURCHASE_INFO_WEIGHT_CWEIGHT                                :{BLACK}Mass: {GOLD}{WEIGHT_S}  ({WEIGHT_S})
+STR_PURCHASE_INFO_COST_SPEED                                    :{BLACK}Hind: {GOLD}{CURRENCY}{BLACK} Tippkiirus: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Kandevõime: {GOLD}{COMMA} reisijat, {COMMA} kotti kirju
+STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Kiirendavad vagunid: {GOLD}+{POWER}{BLACK} Mass: {GOLD}+{WEIGHT_S}
 STR_PURCHASE_INFO_REFITTABLE_TO                                 :{BLACK}Ãœmberseadistatav: {GOLD}
 STR_PURCHASE_INFO_ALL_TYPES                                     :Kõik kaubatüübid
 STR_PURCHASE_INFO_ALL_BUT                                       :Kõik, välja arvatud {GOLD}
@@ -3247,18 +3319,18 @@
 ########### String for new airports
 STR_SMALL_AIRPORT                                               :{BLACK}Väike
 STR_CITY_AIRPORT                                                :{BLACK}Linn
-STR_METRO_AIRPORT                                               :{BLACK}Metropoli lennujaam
-STR_INTERNATIONAL_AIRPORT                                       :{BLACK}Rahvusvaheline lennujaam
+STR_METRO_AIRPORT                                               :{BLACK}Metropoli lennuväli
+STR_INTERNATIONAL_AIRPORT                                       :{BLACK}Rahvusvaheline lennuväli
 STR_COMMUTER_AIRPORT                                            :{BLACK}Turisti
-STR_INTERCONTINENTAL_AIRPORT                                    :{BLACK}Ãœlemaailmne lennujaam
-STR_HELIPORT                                                    :{BLACK}Helikopteri jaam
+STR_INTERCONTINENTAL_AIRPORT                                    :{BLACK}Ülemaailmne lennuväli
+STR_HELIPORT                                                    :{BLACK}Kopteriväljak
 STR_HELIDEPOT                                                   :{BLACK}Helikopteridepoo
 STR_HELISTATION                                                 :{BLACK}Helijaam
 
-STR_SMALL_AIRPORTS                                              :{BLACK}Väikesed lennujaamad
-STR_LARGE_AIRPORTS                                              :{BLACK}Suured lennujaamad
-STR_HUB_AIRPORTS                                                :{BLACK}Suured lennujaamad
-STR_HELIPORTS                                                   :{BLACK}Helikopteri lennujaamad
+STR_SMALL_AIRPORTS                                              :{BLACK}Väikesed lennuväljad
+STR_LARGE_AIRPORTS                                              :{BLACK}Suured lennuväljad
+STR_HUB_AIRPORTS                                                :{BLACK}Suured lennuväljad
+STR_HELIPORTS                                                   :{BLACK}Helikopteri lennuväljad
 
 ############ Tooltip measurment
 
@@ -3285,4 +3357,42 @@
 STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Vaheta tööstusehitiste läbipaistvust
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Vaheta läbipaistvust ehitistel nagu: jaamad, depood, vahepunktid ja elektriliinid
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Vaheta sildade läbipaistvust
-STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Vaheta läbipaistvust objektidel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
+STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Vaheta läbipaistvust rajatistel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Ãœksus {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Kõik raudteeveerem
+STR_GROUP_ALL_ROADS                                             :Kõik mootorsõidukid
+STR_GROUP_ALL_SHIPS                                             :Kõik laevad
+STR_GROUP_ALL_AIRCRAFTS                                         :Kõik lennukid
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Kõik jagatud sõidukid
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Eemalda kõik sõidukid
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Rong{P "" id}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Mootorsõiduk{P "" id}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Laev{P "" ad}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Lennuk{P "" id}
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Muuda grupi nime
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Vaheta kõik grupi "{GROUP}" sõidukid
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Ei saa üksust luua...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Ei saa seda üksust eemaldada...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Ei saa seda üksust ümber nimetada...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Ei saa kõiki sõidukeid sellest grupist eemaldada...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Ei saa sõidukit siia üksusesse lisada...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Ei saa jagatud sõidukeid siia üksusesse lisada...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Grupid - Klõpsa grupil et kõiki seal olevaid sõidukeid järjestada
+STR_GROUP_CREATE_TIP                                            :{BLACK}Klõpsa grupi loomiseks
+STR_GROUP_DELETE_TIP                                            :{BLACK}Eemalda valitud üksus
+STR_GROUP_RENAME_TIP                                            :{BLACK}Nimeta valitud üksus ümber
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klõpsa, et seda üksust üldise iseväljavahetuse eest kaitsta
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/finnish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/finnish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -1045,7 +1045,6 @@
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}Epäyhtenäiset asemat: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Uusi globaali tienhakualgor. (NPF, korvaa NTP:n): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Kerroin rahdin painolle raskaiden junien simuilointiin: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Salli pysähdyspaikkojen läpiajo kylien omistamilla teillä: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Salli aina pienet lentokentät: {ORANGE}{STRING}
 
@@ -2627,7 +2626,6 @@
 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_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.
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Tee korostetusta pysäkistä pysähtymätön.
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Lisää uusi pysähdys ennen valittua, tai lisää listan viimeiseksi.
--- a/src/lang/french.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/french.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 2
 ##gender m m2 f
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Hors limites
@@ -250,7 +252,7 @@
 STR_0119_TOFFEE_QUARRY                                          :{BLACK}{TINYFONT}Carrière de Caramel
 STR_011A_SUGAR_MINE                                             :{BLACK}{TINYFONT}Mine de Sucre
 STR_011B_RAILROAD_STATION                                       :{BLACK}{TINYFONT}Gare ferroviaire
-STR_011C_TRUCK_LOADING_BAY                                      :{BLACK}{TINYFONT}Zone de Chargement
+STR_011C_TRUCK_LOADING_BAY                                      :{BLACK}{TINYFONT}Aire de chargement
 STR_011D_BUS_STATION                                            :{BLACK}{TINYFONT}Arrêt d'autobus
 STR_011E_AIRPORT_HELIPORT                                       :{BLACK}{TINYFONT}Aéroport/Héliport
 STR_011F_DOCK                                                   :{BLACK}{TINYFONT}Port maritime
@@ -882,7 +884,7 @@
 STR_TOWNNAME_FRENCH                                             :Français
 STR_TOWNNAME_GERMAN                                             :Allemand
 STR_TOWNNAME_ADDITIONAL_ENGLISH                                 :Anglais (Additionels)
-STR_TOWNNAME_LATIN_AMERICAN                                     :Latino-Americain
+STR_TOWNNAME_LATIN_AMERICAN                                     :Latino-Americains
 STR_TOWNNAME_SILLY                                              :Drôles
 STR_TOWNNAME_SWEDISH                                            :Suédois
 STR_TOWNNAME_DUTCH                                              :Hollandais
@@ -892,13 +894,13 @@
 STR_TOWNNAME_NORWEGIAN                                          :Norvégiens
 STR_TOWNNAME_HUNGARIAN                                          :Hongrois
 STR_TOWNNAME_AUSTRIAN                                           :Autrichiens
-STR_TOWNNAME_ROMANIAN                                           :Roumain
+STR_TOWNNAME_ROMANIAN                                           :Roumains
 STR_TOWNNAME_CZECH                                              :Tchèques
-STR_TOWNNAME_SWISS                                              :Suisse
+STR_TOWNNAME_SWISS                                              :Suisses
 STR_TOWNNAME_DANISH                                             :Danois
 STR_TOWNNAME_TURKISH                                            :Turques
-STR_TOWNNAME_ITALIAN                                            :Italien
-STR_TOWNNAME_CATALAN                                            :Catalan
+STR_TOWNNAME_ITALIAN                                            :Italiens
+STR_TOWNNAME_CATALAN                                            :Catalans
 ############ end of townname region
 
 STR_CURR_GBP                                                    :Livre (£)
@@ -1047,6 +1049,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nouvelle recherche de chemin global (NPF, écrase NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Multiplier le poid pour les trains fret (simule des trains lourds): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Autoriser les arrêts de bus sur les routes des municipalités: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Autoriser la construction de stations adjacentes: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Toujours permettre les petits aéroports: {ORANGE}{STRING}
 
@@ -1087,6 +1090,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Entretenir automatiquement les hélicoptères à l'héliport: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Relier la barre d'outils Paysage avec celle des rails/routes/eau et aéroport: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Inverser la direction lors du défilement avec la souris : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Défilement régulier de la vue: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Montrer une infobulle de mesure lors de l'utilisation de divers outils de construction: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Affichage des livrées de compagnie : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Aucune
@@ -1394,6 +1398,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Anglais
 STR_NETWORK_LANG_GERMAN                                         :Allemand
 STR_NETWORK_LANG_FRENCH                                         :Français
+STR_NETWORK_LANG_BRAZILIAN                                      :Brésilien
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgare
+STR_NETWORK_LANG_CHINESE                                        :Chinois
+STR_NETWORK_LANG_CZECH                                          :Tchèque
+STR_NETWORK_LANG_DANISH                                         :Danois
+STR_NETWORK_LANG_DUTCH                                          :Hollandais
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finlandais
+STR_NETWORK_LANG_HUNGARIAN                                      :Hongrois
+STR_NETWORK_LANG_ICELANDIC                                      :Islandais
+STR_NETWORK_LANG_ITALIAN                                        :Italien
+STR_NETWORK_LANG_JAPANESE                                       :Japonais
+STR_NETWORK_LANG_KOREAN                                         :Coréen
+STR_NETWORK_LANG_LITHUANIAN                                     :Lithuanien
+STR_NETWORK_LANG_NORWEGIAN                                      :Norvégien
+STR_NETWORK_LANG_POLISH                                         :Polonais
+STR_NETWORK_LANG_PORTUGUESE                                     :Portuguais
+STR_NETWORK_LANG_ROMANIAN                                       :Roumain
+STR_NETWORK_LANG_RUSSIAN                                        :Russe
+STR_NETWORK_LANG_SLOVAK                                         :Slovaque
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovène
+STR_NETWORK_LANG_SPANISH                                        :Espagnol
+STR_NETWORK_LANG_SWEDISH                                        :Suédois
+STR_NETWORK_LANG_TURKISH                                        :Turc
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainien
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Préparation de la partie
@@ -1554,7 +1583,7 @@
 STR_1004_TOO_HIGH                                               :{WHITE}Trop élevé
 STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Aucuns rails convenables
 STR_1007_ALREADY_BUILT                                          :{WHITE}...déjà construit
-STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Doit d'abord enlever les rails
+STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Vous devez d'abord enlever les rails
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Construction de voie ferrée
 STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Construction de voie ferrée électrifiée
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Construction de Monorail
@@ -1566,7 +1595,7 @@
 STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Impossible de construire des rails ici...
 STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Impossible de retirer les rails d'ici...
 STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Impossible de retirer les signaux d'ici...
-STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Orientation du Dépôt
+STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Orientation du dépôt
 STR_1015_RAILROAD_CONSTRUCTION                                  :Construction de voie ferrée
 STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Construction de voie ferrée électrifiée
 STR_1016_MONORAIL_CONSTRUCTION                                  :Construction de Monorail
@@ -1584,32 +1613,56 @@
 STR_1023_RAILROAD_TRAIN_DEPOT                                   :Dépôt ferroviaire
 STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...appartient à une autre compagnie
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Rails avec des signaux normaux
-STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Rails avec des pré-signaux
+STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Rails avec des signaux d'entrée
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Rails avec des signaux de sortie
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Rails avec des signaux combinés
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Rails avec des signaux normaux et d'entrée
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Rails avec des signaux normaux et de sortie
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Rails avec des signaux normaux et combinés
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Rails avec des signaux d'entrée et de sortie
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Rails avec des signaux d'entrée et combinés
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Rails avec des signaux de sortie et combinés
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Vous devez d'abord retirer la gare
 
 
 
 ##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Doit d'abord retirer la route
+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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientation du dépôt
+STR_1806_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_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 station de camions...
+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_180A_ROAD_CONSTRUCTION                                      :Construction routière
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Construction de tramway
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construire une section de route
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construire une section de tramway
 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_180D_BUILD_BUS_STATION                                      :{BLACK}Construire un arrêt d'autobus
-STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construire une station de camions
+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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construire un pont routier
+STR_180F_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_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_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_1814_ROAD                                                   :Route
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Route avec lampadaires
 STR_1816_TREE_LINED_ROAD                                        :Route avec lignée d'arbustres
@@ -1617,6 +1670,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Route/rail Croisement à niveau
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Impossible de supprimer la station de bus...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Impossible de supprimer la station de camions...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Impossible de retirer la station de tramway pour passagers...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Impossible de retirer la station de tramway pour fret...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Villes
@@ -1779,20 +1834,26 @@
 STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} accepte désormais: {STRING}
 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}Station de camions
-STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Détruire d'abord l'arrêt d'autobus
-STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Détruisez d'abord la station
-STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" s}
+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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P 2 "" s}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Aucun -
 STR_304B_SITE_UNSUITABLE                                        :{WHITE}...l'endroit ne convient pas
 STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Trop près d'un autre port
-STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Détruisez d'abord le port
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Vous devez d'abord détruire le port
 STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Choisir l'orientation de la gare ferroviaire
 STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Choix du nombre de voies
 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_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
@@ -1822,7 +1883,7 @@
 STR_STAT_CLASS_WAYP                                             :Points de passage
 
 ##id 0x3800
-STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Orientation du dépot naval
+STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Orientation du dépôt
 STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...doit être construit sur l'eau
 STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Impossible de construire le dépôt naval ici...
 STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Choisir l'orientation du dépôt naval
@@ -1924,7 +1985,7 @@
 STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Véhicule dans le tunnel
 STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Autre tunnel présent
 STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Impossible de creuser pour faire déboucher le tunnel
-STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Vous devez démolir le tunnel avant
+STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Vous devez d'abord démolir le tunnel
 STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Vous devez d'abord démolir le pont
 STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Impossible de commencer et de terminer au même endroit
 STR_5009_LEVEL_LAND_OR_WATER_REQUIRED                           :{WHITE}Crevasse ou eau requise sous le pont
@@ -2243,6 +2304,8 @@
 STR_LIVERY_HELICOPTER                                           :Hélicoptère
 STR_LIVERY_SMALL_PLANE                                          :Petit porteur
 STR_LIVERY_LARGE_PLANE                                          :Gros porteur
+STR_LIVERY_PASSENGER_TRAM                                       :Tramway pour passagers
+STR_LIVERY_FREIGHT_TRAM                                         :Tramway pour fret
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Montrer les livrées générales
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Montrer les livrées de trains
@@ -2600,6 +2663,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Impossible d'insérer un nouvel ordre...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Impossible de supprimer cet ordre...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Impossible de modifier cet ordre...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Impossible de sauter l'ordre courant...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Impossible de sauter l'ordre sélectionné...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Impossible de déplacer le véhicule...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}L'engin de queue suivra toujours sa contre-partie avant
 STR_8838_N_A                                                    :N/D{SKIP}
@@ -2631,7 +2696,7 @@
 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_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
+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é
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Transformer l'ordre sélectionné en Sans-Arrêt
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insérer un nouvel ordre
@@ -2716,6 +2781,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_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...
@@ -2745,7 +2812,7 @@
 STR_CLONE_SHIP                                                  :{BLACK}Copier Navire
 STR_CLONE_SHIP_INFO                                             :{BLACK}Effectuer la copie d'un navire. Ctrl-clic partagera les ordres
 STR_CLONE_SHIP_DEPOT_INFO                                       :{BLACK}Effectuer la copie d'un navire. Cliquer ici puis sur un navire dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
-STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Navire doit être arrêté au dépôt
+STR_980B_SHIP_MUST_BE_STOPPED_IN                                :{WHITE}Le navire doit être arrêté au dépôt
 STR_980C_CAN_T_SELL_SHIP                                        :{WHITE}Impossible de vendre navire...
 STR_980D_CAN_T_BUILD_SHIP                                       :{WHITE}Impossible de construire navire...
 STR_980E_SHIP_IN_THE_WAY                                        :{WHITE}Navire présent
@@ -2835,7 +2902,7 @@
 STR_A017_AIRCRAFT_IS_IN_FLIGHT                                  :{WHITE}L'aéronef est en vol
 STR_A019_CAPACITY                                               :{BLACK}Capacité: {LTBLUE}{CARGO}, {CARGO}
 STR_A01A_CAPACITY                                               :{BLACK}Capacité: {LTBLUE}{CARGO}
-STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Aéronef doit être arrêté au hangar
+STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}L'aéronef doit être arrêté au hangar
 STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Impossible de vendre l'aéronef...
 STR_A01D_AIRPORT_CONSTRUCTION                                   :Construction d'aéroport
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Construire un aéroport
@@ -3000,6 +3067,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Vous êtes sur le point de vendre tous les véhicules du dépôt. Etes-vous sûr ?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Dépôt incompatible
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vendre tous les trains du dépôt
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vendre tous les véhicules routiers du dépôt
--- a/src/lang/galician.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/galician.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode gl_ES
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Fora do borde do mapa
@@ -1074,6 +1076,8 @@
 STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Habilita-la economía "suave"(máis cambios, pero máis pequenos)
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Permiti-la compra de accións por outras compañías
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Cando se arrastre, colocar siniais cada: {ORANGE}{STRING} cadrado(s)
+
+
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Posición da barra de ferramentas principal: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Esquerda
 STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Centro
@@ -1919,6 +1923,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliporto
 STR_SV_STNAME_FOREST                                            :{STRING} Bosque
 
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2518,7 +2523,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de Ordes - Pincha nunha orde para seleccionala
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Salta-la orde actual, e comezar coa seguinte
 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
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Insertar unha nova orde despois da seleccionada, o insertar unha nova orde ó final da lista
@@ -2549,6 +2553,8 @@
 STR_TRAIN_STOPPING_VEL                                          :{RED}Parando, {VELOCITY}
 STR_TRAIN_NO_POWER                                              :{RED}Sen enerxía
 
+STR_NEW_VEHICLE_NOW_AVAILABLE                                   :{BLACK}{BIGFONT}¡Novo {STRING} agora dispoñible!
+STR_NEW_VEHICLE_TYPE                                            :{BLACK}{BIGFONT}{STRING}
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Haí un vehículo de estrada no camiño
@@ -2794,6 +2800,7 @@
 STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Valor do préstamo que ten a compañía
 STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Puntos totais de puntos posibles
 
+STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}Configuración NewGRF
 STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}Configuración Newgrf
 STR_NEWGRF_APPLY_CHANGES                                        :{BLACK}Aplica-los cambios
 STR_NEWGRF_SET_PARAMETERS                                       :{BLACK}Conf. parámetros
@@ -2803,8 +2810,12 @@
 STR_NEWGRF_GRF_ID                                               :{BLACK}GRF ID: {SILVER}{STRING}
 STR_NEWGRF_MD5SUM                                               :{BLACK}Suma MD5: {SILVER}{STRING}
 
+STR_NEWGRF_ERROR_MSG_INFO                                       :{SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_WARNING                                    :{RED}Aviso: {SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_ERROR                                      :{RED}Erro: {SILVER}{STRING}
 
 STR_NEWGRF_ADD                                                  :{BLACK}Engadir
+STR_NEWGRF_ADD_TIP                                              :{BLACK}Engadir un novo arquivo NewGRF á lista
 STR_NEWGRF_REMOVE                                               :{BLACK}Eliminar
 STR_NEWGRF_REMOVE_TIP                                           :{BLACK}Elimina-lo arquivo NewGRF seleccionado da lista
 STR_NEWGRF_MOVEUP                                               :{BLACK}Mover Arriba
@@ -2846,6 +2857,7 @@
 STR_VEH_WITH_SHARED_ORDERS_LIST_TIP                             :{BLACK}Mostrar tódolos vehículos que comparte esta planificación
 
 ### depot strings
+STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Vas vender tódolos vehículos do depósito. ¿Estás seguro?
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vender tódolos trens do depósito
 STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP                              :{BLACK}Vender tódolos barcos no depósito
@@ -2989,3 +3001,11 @@
 STR_TRANSPARENT_INDUSTRIES_DESC                                 :{BLACK}Habilitar transparencia para industrias
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Habilitar transparencia para construibles como estacións, depósitos, puntos de ruta e catenaria
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Habilitar transparencia para pontes
+
+##### Mass Order
+
+
+
+
+
+########
--- a/src/lang/german.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/german.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 0
 ##gender m w n
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Zu weit vom Kartenrand entfernt
@@ -1047,6 +1049,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Neue globale Wegfindung für alle Fahrzeuge: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Frachtgewicht erhöhen um schwere Züge zu simulieren: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Erlaube Bushaltestellen an städtischen Straßen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Erlaube das Bauen aneinanderliegender Stationen: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Kleine Flughäfen immer erlauben: {ORANGE}{STRING}
 
@@ -1087,6 +1090,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Hubschrauber auf Helipads automatisch warten: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Landschaftsbau-Toolbar an Eisenbahn/Straßen/Hafen/Flughafen-Toolbar binden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Beim Verschieben mit der Maus die Ansicht in die Gegenrichtung verschieben: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Weiches Scrollen in den Ansichten: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Zeige Tooltip mit Abmessungen bei verschiedenen Bauwerkzeugen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Anzeigen der Firmenlackierungen: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Keine
@@ -1099,6 +1103,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Aus
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Scrollradgeschwindigkeit auf der Karte: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automatische Pause bei Spielstart: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Erweiterte Fahrzeugliste benutzen: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maximale Anzahl der Züge pro Spieler: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximale Anzahl der Straßenfahrzeuge pro Spieler: {ORANGE}{STRING}
@@ -1393,6 +1398,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Englisch
 STR_NETWORK_LANG_GERMAN                                         :Deutsch
 STR_NETWORK_LANG_FRENCH                                         :Französisch
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasilianisch
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgarisch
+STR_NETWORK_LANG_CHINESE                                        :Chinesisch
+STR_NETWORK_LANG_CZECH                                          :Tschechisch
+STR_NETWORK_LANG_DANISH                                         :Dänisch
+STR_NETWORK_LANG_DUTCH                                          :Holländisch
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finnisch
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungarisch
+STR_NETWORK_LANG_ICELANDIC                                      :Isländisch
+STR_NETWORK_LANG_ITALIAN                                        :Italienisch
+STR_NETWORK_LANG_JAPANESE                                       :Japanisch
+STR_NETWORK_LANG_KOREAN                                         :Koreanisch
+STR_NETWORK_LANG_LITHUANIAN                                     :Litauisch
+STR_NETWORK_LANG_NORWEGIAN                                      :Norwegisch
+STR_NETWORK_LANG_POLISH                                         :Polnisch
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugiesisch
+STR_NETWORK_LANG_ROMANIAN                                       :Rumänisch
+STR_NETWORK_LANG_RUSSIAN                                        :Russisch
+STR_NETWORK_LANG_SLOVAK                                         :Slowakisch
+STR_NETWORK_LANG_SLOVENIAN                                      :Slowenisch
+STR_NETWORK_LANG_SPANISH                                        :Spanisch
+STR_NETWORK_LANG_SWEDISH                                        :Schwedisch
+STR_NETWORK_LANG_TURKISH                                        :Türkisch
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainisch
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Mehrspielerlobby
@@ -1586,6 +1616,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Gleis mit Vorsignalen
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Gleis mit Ausfahrsignalen
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Gleis mit kombinierten Vor-/Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Eisenbahnschienen mit Vor- und Hauptsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Eisenbahnschienen mit Haupt- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Eisenbahnschienen mit Haupt- und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Eisenbahnschienen mit Vor- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Eisenbahnschienen mit Vor- und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Eisenbahnschienen mit Ausfahr- und Kombinationssignalen
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Bahnhof muss erst entfernt werden
 
 
 
@@ -1593,22 +1630,39 @@
 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_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Brücke wählen
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION                        :{WHITE}... Einbahnstraßen können keinen Abzweig haben
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Kann hier keine Straße bauen...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}Kann Straßenbahn hier nicht bauen...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Kann diese Straße nicht entfernen...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Kann Straßenbahn hier nicht entfernen...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Fahrzeugdepot-Ausr.
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}Ausrichtung des Straßenbahndepots
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Kann Fahrzeugdepot hier nicht bauen...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE                               :{WHITE}Kann Straßenbahndepot hier nicht bauen...
 STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Kann Busbahnhof nicht bauen...
 STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Kann Lkw-Ladeplatz nicht bauen...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION                     :{WHITE}Kann Haltestelle hier nicht bauen...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION                         :{WHITE}Kann Güterverladestelle hier nicht bauen...
 STR_180A_ROAD_CONSTRUCTION                                      :Straßenbau
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Straßenbahnbau
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Straße bauen
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Baue Straßenbahnabschnitt
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Fahrzeugdepot bauen (zum Bau und zur Wartung von Fahrzeugen)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT                               :{BLACK}Baue Straßenbahndepot (zum Erstellen und Warten von Straßenbahnen)
 STR_180D_BUILD_BUS_STATION                                      :{BLACK}Busbahnhof bauen
 STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Lkw-Ladeplatz bauen
+STR_180D_BUILD_PASSENGER_TRAM_STATION                           :{BLACK}Baue Haltestelle
+STR_180E_BUILD_CARGO_TRAM_STATION                               :{BLACK}Baue Güterverladestelle
 STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Straßenbrücke bauen
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Baue Straßenbahnbrücke
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Straßentunnel bauen
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Baue Straßenbahntunnel
 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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Fahrzeugdepots wählen
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Ausrichtung des Straßenbahndepots wählen
 STR_1814_ROAD                                                   :Straße
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Straße mit Laternen
 STR_1816_TREE_LINED_ROAD                                        :Straße mit Bäumen
@@ -1616,6 +1670,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Bahnübergang
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kann Bushaltestelle nicht entfernen...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kann LKW-Ladestelle nicht entfernen...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE} Haltestelle kann nicht entfernt werden...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Güterverladestelle kann nicht entfernt werden...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Städte
@@ -1779,8 +1835,12 @@
 STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} akzeptiert jetzt {STRING} und {STRING}
 STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Busbahnhof-Ausr.
 STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Lkw-Ladeplatz-Ausr.
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION                     :{WHITE}Ausrichtung der Haltestelle
+STR_3043_CARGO_TRAM_STATION_ORIENT                              :{WHITE}Ausrichtung der Güterverladestelle
 STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Der Busbahnhof muss erst abgerissen werden
 STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Der Lkw-Ladeplatz muss erst abgerissen werden
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION                   :{WHITE}Haltestelle muss vorher abgerissen werden
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION                       :{WHITE}Güterverladestelle muss vorher abgerissen werden
 STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Haltestelle{P "" n}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Keine -
@@ -1792,6 +1852,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 Haltestelle wählen
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION                  :{BLACK}Ausrichtung für die Güterverladestelle wählen
 STR_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Ansicht auf die Station zentrieren
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Stationsbewertung anzeigen
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Name der Station ändern
@@ -2012,6 +2074,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliport
 STR_SV_STNAME_FOREST                                            :{STRING} Wald
 
+STR_SV_GROUP_NAME                                               :{GROUP}
 
 ############ end of savegame specific region!
 
@@ -2241,6 +2304,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Kleines Flugzeug
 STR_LIVERY_LARGE_PLANE                                          :Großraumflugzeug
+STR_LIVERY_PASSENGER_TRAM                                       :Straßenbahn
+STR_LIVERY_FREIGHT_TRAM                                         :Frachtstraßenbahn
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Allgemeines Farbschema anzeigen
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Zugfarbschema anzeigen
@@ -2598,6 +2663,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Kann keinen neuen Auftrag hinzufügen...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Kann den Auftrag nicht löschen...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Kann den Auftrag nicht bearbeiten...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Kann diesen Auftrag nicht verschieben...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Kann diesen Auftrag nicht auslassen...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Kann nicht zum gewählten Auftrag wechseln...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Kann das Fahrzeug nicht bewegen...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Hintere Lok folgt immer der vorderen Lok
 STR_8838_N_A                                                    :k.A.{SKIP}
@@ -2629,7 +2697,7 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Zeige Kapazität jedes Fahrzeugs
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Auftragsliste - zum Markieren hier anklicken
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Übergehe den laufenden Auftrag, und starte den nächsten
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Den aktuellen Auftrag auslassen und den Nächsten starten. STRG + Klick geht zum ausgewählten Auftrag
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Lösche den markierten Auftrag
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Führe den markierten Auftrag ohne Halt durch
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Füge einen neuen Auftrag vor dem markierten Auftrag ein, oder setze ihn ans Ende der Liste
@@ -2714,6 +2782,8 @@
 STR_902E_NAME_ROAD_VEHICLE                                      :{BLACK}Name des Fahrzeuges
 STR_902F_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Bus erreicht {STATION}!
 STR_9030_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Lkw erreicht {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM                          :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}!
 STR_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}Fahrer stirbt in einem Feuerball nach Zusammenstoß mit einem Zug
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}{COMMA} sterben nach Zusammenstoß mit einem Zug im Feuerball
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Das Fahrzeug kann nicht gewendet werden...
@@ -2998,6 +3068,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Möchtest du alle Fahrzeuge in diesem Depot verkaufen?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Falsche Depotart
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Verkaufe alle Züge im Depot
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Verkaufe alle Fahrzeuge im Depot
@@ -3191,6 +3262,7 @@
 
 ##### Mass Order
 STR_GROUP_NAME_FORMAT                                           :Gruppe {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
 STR_GROUP_ALL_TRAINS                                            :Alle Züge
 STR_GROUP_ALL_ROADS                                             :Alle Straßenfahrzeuge
 STR_GROUP_ALL_SHIPS                                             :Alle Schiffe
--- a/src/lang/hungarian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/hungarian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 1
 ##case t ba
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Kilóg a térképről
@@ -887,8 +889,8 @@
 STR_02E6_ROAD_VEHICLES                                          :{BLACK}Közúti járművek
 STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Válaszd ki,az út melyik oldalán haladjanak a közúti járművek
-STR_02E9_DRIVE_ON_LEFT                                          :Balra hajts
-STR_02EA_DRIVE_ON_RIGHT                                         :Jobbra hajts
+STR_02E9_DRIVE_ON_LEFT                                          :Balra hajtás
+STR_02EA_DRIVE_ON_RIGHT                                         :Jobbra hajtás
 STR_02EB_TOWN_NAMES                                             :{BLACK}Városnevek
 STR_02EC                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}A városnevek stílusának kiválasztása
@@ -1112,6 +1114,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Új útvonalkereső (NPF, felülbírálja az NTP-t): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Tömegszorzó tehervonatoknak (szimulációs célból): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Ãthajtható állomások engedélyezése városi utakra: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Érintkező állomások építésének engedélyezése: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Mindig engedélyezze a kis repülőtereket: {ORANGE}{STRING}
 
@@ -1152,6 +1155,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Helikopterek automatikus javítása a helikopter-leszállókon: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Tájrendező eszköztár megnyitása a közúti/vasúti/vízi/légi eszköztárakkal: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Egeres mozgáskor a táj a másik irányba mozdul el: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Finomított nézőpont-görgetés: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Építési eszközök használata esetén területinformációk mutatása: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Cégek járműveinek mutatása: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Egyikét sem
@@ -1459,6 +1463,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Angol
 STR_NETWORK_LANG_GERMAN                                         :Német
 STR_NETWORK_LANG_FRENCH                                         :Francia
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazíl
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgár
+STR_NETWORK_LANG_CHINESE                                        :Kínai
+STR_NETWORK_LANG_CZECH                                          :Cseh
+STR_NETWORK_LANG_DANISH                                         :Dán
+STR_NETWORK_LANG_DUTCH                                          :Holland
+STR_NETWORK_LANG_ESPERANTO                                      :Eszperantó
+STR_NETWORK_LANG_FINNISH                                        :Finn
+STR_NETWORK_LANG_HUNGARIAN                                      :Magyar
+STR_NETWORK_LANG_ICELANDIC                                      :Izlandi
+STR_NETWORK_LANG_ITALIAN                                        :Olasz
+STR_NETWORK_LANG_JAPANESE                                       :Japán
+STR_NETWORK_LANG_KOREAN                                         :Koreai
+STR_NETWORK_LANG_LITHUANIAN                                     :Litván
+STR_NETWORK_LANG_NORWEGIAN                                      :Norvég
+STR_NETWORK_LANG_POLISH                                         :Lengyel
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugál
+STR_NETWORK_LANG_ROMANIAN                                       :Román
+STR_NETWORK_LANG_RUSSIAN                                        :Orosz
+STR_NETWORK_LANG_SLOVAK                                         :Szlovák
+STR_NETWORK_LANG_SLOVENIAN                                      :Szlovén
+STR_NETWORK_LANG_SPANISH                                        :Spanyol
+STR_NETWORK_LANG_SWEDISH                                        :Svéd
+STR_NETWORK_LANG_TURKISH                                        :Török
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrán
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Hálózati-játék lobby
@@ -1652,6 +1681,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Vasúti sin előrejelző szemaforral
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Vasúti sin kijáratjelző szemaforral
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Vasúti sin vegyes szemaforral
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Vasúti sín normál és előrejelzőlámpával
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Vasúti sín normál és utójelzőlámpával
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Vasúti sín normál és előutójelző lámpával
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Vasúti sín elő és utójelző lámpával
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Vasúti sín elő és előutójelző lámpával
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Vasúti sín utó és előutójelző lámpával
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Előbb a vasútállomást le kell rombolni
 
 
 
@@ -1659,22 +1695,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Garázs helyzete
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Útépítés
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Villamospálya építés
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Út építése
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Villamos-sín építése
 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_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_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_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_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_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_1814_ROAD                                                   :Út
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Út lámpákkal
 STR_1816_TREE_LINED_ROAD                                        :Fával szegélyezett út
@@ -1682,6 +1735,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Út/vasút kereszteződés
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Nem távolíthatod el ezt a buszmegállót...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Nem távolíthatod el ezt a teherautó megállót...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Nem lehet a villamos utasvárót eltávolítani...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Nem lehet a tehervillamos-állomást eltávolítani
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Városok
@@ -1845,8 +1900,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} állomásai - {COMMA}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nincs -
@@ -1858,6 +1917,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_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
@@ -2345,6 +2406,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Kis repülőgép
 STR_LIVERY_LARGE_PLANE                                          :Nagy repülőgép
+STR_LIVERY_PASSENGER_TRAM                                       :Utasszállító villamos
+STR_LIVERY_FREIGHT_TRAM                                         :Teherszállító villamos
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Ãltalános szinsémák mutatása
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Vonat szinsémák mutatása
@@ -2702,6 +2765,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Nem adhatsz meg új célpontot...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Nem törölheted ezt a célpontot...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Nem módosíthatod ezt a célpontot...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Úticél mozgatása nem lehetséges...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Nem lehet átugrani a jelenlegi úticélt...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Nem lehet a kiválasztott úticélra ugrani...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Nem mozgathatod a járművet...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}A mozdony első felének mindig elöl kell lennie
 STR_8838_N_A                                                    :Nincs{SKIP}
@@ -2733,7 +2799,7 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Menetrend - kattints egy célpontra a kijelöléséhez
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Az aktuális célpont kihagyása és ugrás a következőre
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A kijelölt célpont felé megállás nélkül kell haladni
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Új célpont beillesztése a kijelölt elé vagy a lista végére
@@ -2818,6 +2884,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_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...
@@ -3102,6 +3170,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Biztosan eladod a depóban lévő összes járművet?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Rossz depó típus
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Összes depóbeli vonat eladása
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Összes depóbeli jármű eladása
--- a/src/lang/icelandic.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/icelandic.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2597,7 +2597,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ãætlun - smelltu til að velja stöð. CTRL + músartakki færir sjónarhorn að stöðinni
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sleppa núverandi skipun, og byrja á næstu
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eyða valdri skipun
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gera valda skipun viðstöðulausa
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Skeyta inn nýrri skipun á undan valdri skipun, eða bæta við á enda listans
--- a/src/lang/italian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/italian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case ms mp fs fp
 ##gender m f
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Fuori dal bordo della mappa
@@ -53,7 +55,7 @@
 STR_002C_PLASTIC                                                :{G=f}Plastica
 STR_002D_FIZZY_DRINKS                                           :{G=f}Bibite frizzanti
 STR_002E                                                        :
-STR_002F_PASSENGER                                              :{G=m}Passeggero
+STR_002F_PASSENGER                                              :{G=m}Passeggeri
 STR_0030_COAL                                                   :{G=m}Carbone
 STR_0031_MAIL                                                   :{G=f}Posta
 STR_0032_OIL                                                    :{G=m}Petrolio
@@ -79,11 +81,11 @@
 STR_0046_CANDY                                                  :{G=f}Caramella
 STR_0047_COLA                                                   :{G=f}Cola
 STR_0048_COTTON_CANDY                                           :{G=m}Zucchero filato
-STR_0049_BUBBLE                                                 :{G=f}Bollicina
+STR_0049_BUBBLE                                                 :{G=f}Bollicine
 STR_004A_TOFFEE                                                 :{G=m}Toffee
-STR_004B_BATTERY                                                :{G=f}Batteria
+STR_004B_BATTERY                                                :{G=f}Batterie
 STR_004C_PLASTIC                                                :{G=f}Plastica
-STR_004D_FIZZY_DRINK                                            :{G=f}Bevanda frizzante
+STR_004D_FIZZY_DRINK                                            :{G=f}Bevande frizzanti
 STR_QUANTITY_NOTHING                                            :
 STR_QUANTITY_PASSENGERS                                         :{COMMA} passegger{P o i}
 STR_QUANTITY_COAL                                               :{WEIGHT} di carbone
@@ -1048,6 +1050,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nuovo pathfinding globale (NPF, sovrascrive NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Moltiplicatore di peso per simulare treni merci pesanti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Consenti fermate passanti sulle strade delle città: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Consenti la costruzione di stazioni adiacenti: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Consenti sempre la costruzione di piccoli aeroporti: {ORANGE}{STRING}
 
@@ -1088,6 +1091,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Manutieni automaticamente gli elicotteri presso gli eliporti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Apri strumenti terreno assieme a quelli di costruzione: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Inverti direzione di scorrimento della mappa: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Scorrimento morbido delle visuali: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Mostra un tooltip di misura durante la costruzione: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Mostra le livree della società: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Nessuna
@@ -1395,6 +1399,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Inglese
 STR_NETWORK_LANG_GERMAN                                         :Tedesco
 STR_NETWORK_LANG_FRENCH                                         :Francese
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasiliano
+STR_NETWORK_LANG_BULGARIAN                                      :Bùlgaro
+STR_NETWORK_LANG_CHINESE                                        :Cinese
+STR_NETWORK_LANG_CZECH                                          :Ceco
+STR_NETWORK_LANG_DANISH                                         :Danese
+STR_NETWORK_LANG_DUTCH                                          :Olandese
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finlandese
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungherese
+STR_NETWORK_LANG_ICELANDIC                                      :Islandese
+STR_NETWORK_LANG_ITALIAN                                        :Italiano
+STR_NETWORK_LANG_JAPANESE                                       :Giapponese
+STR_NETWORK_LANG_KOREAN                                         :Coreano
+STR_NETWORK_LANG_LITHUANIAN                                     :Lituano
+STR_NETWORK_LANG_NORWEGIAN                                      :Norvegese
+STR_NETWORK_LANG_POLISH                                         :Polacco
+STR_NETWORK_LANG_PORTUGUESE                                     :Portoghese
+STR_NETWORK_LANG_ROMANIAN                                       :Rumeno
+STR_NETWORK_LANG_RUSSIAN                                        :Russo
+STR_NETWORK_LANG_SLOVAK                                         :Slovacco
+STR_NETWORK_LANG_SLOVENIAN                                      :Sloveno
+STR_NETWORK_LANG_SPANISH                                        :Spagnolo
+STR_NETWORK_LANG_SWEDISH                                        :Svedese
+STR_NETWORK_LANG_TURKISH                                        :Turco
+STR_NETWORK_LANG_UKRAINIAN                                      :Ucraino
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Stanza principale partita multigiocatore
@@ -1588,6 +1617,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Ferrovia con pre-segnali
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Ferrovia con segnali di uscita
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Ferrovia con segnali combinati
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Ferrovia con segnali normali e pre-segnali
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Ferrovia con segnali normali e di uscita
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Ferrovia con segnali normali e combinati
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Ferrovia con pre-segnali e segnali di uscita
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Ferrovia con pre-segnali e segnali combinati
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Ferrovia con segnali di uscita e combinati
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Bisogna rimuovere la stazione prima
 
 
 
@@ -1595,22 +1631,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientamento deposito
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Costruzione strade
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Costruzione tranvie
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Costruisce una sezione di strada
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Costruisce una sezione di tranvia
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Costruisce un ponte stradale
+STR_180F_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_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_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_1814_ROAD                                                   :Strada
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Strada con lampioni
 STR_1816_TREE_LINED_ROAD                                        :Strada alberata
@@ -1618,6 +1671,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Passaggio a livello
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Impossibile rimuovere la stazione degli autobus...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Impossibile rimuovere l'area di carico per camion...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Impossibile rimuovere la stazione tram passeggeri...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Impossibile rimuovere la stazione tram merci...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Città
@@ -1781,9 +1836,13 @@
 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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stazion{P e i}
+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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} stazion{P 2 e i}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nessuna -
 STR_304B_SITE_UNSUITABLE                                        :{WHITE}...sito inadatto
@@ -1794,6 +1853,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_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
@@ -1903,16 +1964,16 @@
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% trasportato)
 STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centra la visuale principale sulla posizione dell'industria
 STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Nuov{G o a} {STRING} in costruzione vicino a {TOWN}!
-STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Un{G "" a} nuov{G o a} {STRING} è stat{G o a} piantat{G o a} vicino a {TOWN}!
+STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}Nuov{G o a} {STRING} piantat{G o a} vicino a {TOWN}!
 STR_482F_COST                                                   :{BLACK}Costo: {YELLOW}{CURRENCY}
 STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Impossibile costruire questo tipo di industria qui...
 STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...una foresta può essere piantata solo in una zona innevata
 STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} annuncia imminente chiusura!!
-STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Per problemi di rifornimenti {G il la} {INDUSTRY} annuncia imminente chiusura!
+STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Per problemi di rifornimenti {INDUSTRY} annuncia imminente chiusura!
 STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}La mancanza di alberi vicini costringe la {INDUSTRY} ad imminente chiusura!
 STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} incrementa la produzione!
-STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Nuovo giacimento di carbone trovato alla {INDUSTRY}!{}Atteso un raddoppiamento della produzione!
-STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Nuovo giacimento di petrolio trovato a {INDUSTRY}!{}Atteso un raddoppiamento della produzione!
+STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Trovato nuovo giacimento di carbone alla {INDUSTRY}!{}Atteso un raddoppiamento della produzione!
+STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Trovato nuovo giacimento di petrolio al {INDUSTRY}!{}Atteso un raddoppiamento della produzione!
 STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Grazie a metodi di coltivazione migliorati alla {INDUSTRY} è atteso un raddoppiamento della produzione!
 STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}La produzione a {INDUSTRY} scende del 50%
 STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Infestazione di insetti devasta la {INDUSTRY}!{}Produzione scesa del 50%
@@ -2026,7 +2087,7 @@
 STR_6801_EASY                                                   :{BLACK}Facile
 STR_6802_MEDIUM                                                 :{BLACK}Medio
 STR_6803_HARD                                                   :{BLACK}Difficile
-STR_6804_CUSTOM                                                 :{BLACK}Personalizzata
+STR_6804_CUSTOM                                                 :{BLACK}Personalizzato
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
@@ -2244,6 +2305,8 @@
 STR_LIVERY_HELICOPTER                                           :Elicottero
 STR_LIVERY_SMALL_PLANE                                          :Aeroplano piccolo
 STR_LIVERY_LARGE_PLANE                                          :Aeroplano grande
+STR_LIVERY_PASSENGER_TRAM                                       :Tram passeggeri
+STR_LIVERY_FREIGHT_TRAM                                         :Tram merci
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Mostra gli schemi di colorazione generali
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Mostra gli schemi di colorazione dei treni
@@ -2560,7 +2623,7 @@
 STR_8816                                                        :{BLACK}-
 STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Treno troppo lungo
 STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Un treno può essere modificato solo quando è fermo in un deposito
-STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} tren{P o i}
+STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} tren{P 2 o i}
 
 STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Nuovi veicoli ferroviari
 STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Nuovi veicoli ferroviari elettrici
@@ -2601,6 +2664,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Impossibile inserire un nuovo ordine...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Impossibile cancellare questo ordine...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Impossibile modificare questo ordine...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}Impossibile spostare questo ordine...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Impossibile saltare l'ordine corrente...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Impossibile saltare all'ordine selezionato...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Impossibile spostare il veicolo...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}La locomotiva di coda segue sempre quella di testa
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2632,7 +2698,7 @@
 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_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
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Fa diventare l'ordine selezionato 'non-stop'
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Inserisce un nuovo ordine prima di quello selezionato, o lo aggiunge alla fine della lista
@@ -2672,7 +2738,7 @@
 
 ##id 0x9000
 STR_9000_ROAD_VEHICLE_IN_THE_WAY                                :{WHITE}Automezzo di mezzo
-STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} automezz{P o i}
+STR_9001_ROAD_VEHICLES                                          :{WHITE}{COMPANY} - {COMMA} automezz{P 2 o i}
 STR_9002                                                        :{WHITE}{VEHICLE}
 STR_9003_ROAD_VEHICLE_DEPOT                                     :{WHITE}Deposito automezzi di {TOWN}
 STR_9004_NEW_VEHICLES                                           :{BLACK}Nuovi veicoli
@@ -2716,7 +2782,9 @@
 STR_902D_CAN_T_NAME_ROAD_VEHICLE                                :{WHITE}Impossibile rinominare l'automezzo...
 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_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_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...
@@ -2740,7 +2808,7 @@
 STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Impossibile costruire il molo qui...
 STR_9803_SHIP_DEPOT                                             :{WHITE}Deposito navale di {TOWN}
 STR_9804_NEW_SHIPS                                              :{BLACK}Nuove navi
-STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} nav{P e i}
+STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA} nav{P 2 e i}
 STR_9808_NEW_SHIPS                                              :{WHITE}Nuove navi
 STR_9809_BUILD_SHIP                                             :{BLACK}Costruisci nave
 STR_CLONE_SHIP                                                  :{BLACK}Clona nave
@@ -2816,7 +2884,7 @@
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}Nuovo aeromobile
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}Costruisci aeromobile
 STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}Impossibile costruire l'aeromobile...
-STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} aeromobil{P e i}
+STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA} aeromobil{P 2 e i}
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE} (Ordini)
 STR_A00C_DETAILS                                                :{WHITE}{VEHICLE} (Dettagli)
@@ -2986,10 +3054,10 @@
 STR_PLANE                                                       :{BLACK}{PLANE}
 STR_SHIP                                                        :{BLACK}{SHIP}
 
-STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} tren{P o i}
-STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} automezz{P o i}
-STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} aeromobil{P e i}
-STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} nav{P e i}
+STR_SCHEDULED_TRAINS                                            :{WHITE}{STATION} - {COMMA} tren{P 2 o i}
+STR_SCHEDULED_ROAD_VEHICLES                                     :{WHITE}{STATION} - {COMMA} automezz{P 2 o i}
+STR_SCHEDULED_AIRCRAFT                                          :{WHITE}{STATION} - {COMMA} aeromobil{P 2 e i}
+STR_SCHEDULED_SHIPS                                             :{WHITE}{STATION} - {COMMA} nav{P 2 e i}
 
 STR_SCHEDULED_TRAINS_TIP                                        :{BLACK}Mostra tutti i treni che hanno questa stazione pianificata
 STR_SCHEDULED_ROAD_VEHICLES_TIP                                 :{BLACK}Mostra tutti gli automezzi che hanno questa stazione pianificata
@@ -3001,6 +3069,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Stai per vendere tutti i veicoli nel deposito. Sei sicuro?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Tipo di deposito errato
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vende tutti i treni nel deposito
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vende tutti gli automezzi nel deposito
@@ -3017,10 +3086,10 @@
 STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}Rimpiazza automaticamente tutte le navi nel deposito
 STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}Rimpiazza automaticamente tutti gli aeromobili nell'hangar
 
-STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} tren{P o i}
-STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} automezz{P o i}
-STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA} nav{P e i}
-STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA} aeromobil{P e i}
+STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA} tren{P 2 o i}
+STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA} automezz{P 2 o i}
+STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA} nav{P 2 e i}
+STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA} aeromobil{P 2 e i}
 
 STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}Rimpiazza {STRING}
 STR_REPLACE_VEHICLES_START                                      :{BLACK}Inizia rimpiazzamento
@@ -3100,7 +3169,7 @@
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Generazione mondo
 STR_RANDOM_SEED                                                 :{BLACK}Seme casuale:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Fare clic per introdurre un seme casuale
-STR_LAND_GENERATOR                                              :{BLACK}Generatore terreno:
+STR_LAND_GENERATOR                                              :{BLACK}Generatore:
 STR_TREE_PLACER                                                 :{BLACK}Algoritmo alberi:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Rotazione heightmap:
 STR_TERRAIN_TYPE                                                :{BLACK}Tipo di terreno:
--- a/src/lang/japanese.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/japanese.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode ja_JP
 ##plural 1
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}地図ã®ç«¯ã‚’越ãˆã¦ã„ã¾ã™
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}新型グローãƒãƒ«ãƒ‘スファインダー(NPF):{ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}é‡ã„列車ã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ãŸã‚ã®é‡é‡ä¹—æ•°ã®è¨­å®šï¼š{ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}町有é“路上ã«é€šéŽç‚¹ã®å»ºè¨­ã‚’許容:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}隣接ã—ãŸé§…ã®å»ºè¨­ã‚’許容:{ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}常ã«å°åž‹ç©ºæ¸¯ã®å»ºè¨­ã‚’許容:{ORANGE}{STRING}
 
@@ -1086,6 +1089,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_MEASURE_TOOLTIP                              :{LTBLUE}様々ãªå»ºè¨­ã®ãƒ„ールを使用ã™ã‚‹ã¨ãã«ã€æ¸¬å®šãƒ„ールティップを表示:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}会社ã®ã‚«ãƒ©ãƒ¼ã‚¹ã‚­ãƒ¼ãƒ ã‚’表示:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :ãªã—
@@ -1098,6 +1102,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :切
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}地図ã®ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«é€Ÿåº¦ï¼š{ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}æ–°è¦ã‚²ãƒ¼ãƒ ã‚’開始ã—ãŸã¨ãã«è‡ªå‹•çš„ã«ãƒãƒ¼ã‚ºï¼š{ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}詳細ã®è»Šä¸¡ãƒªã‚¹ãƒˆã‚’使用:{ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}一人ã®ãƒ—レヤーã®åˆ—車数上é™ï¼š{ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}一人ã®ãƒ—レヤーã®é“路車両数上é™ï¼š{ORANGE}{STRING}
@@ -1392,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :英語
 STR_NETWORK_LANG_GERMAN                                         :ドイツ語
 STR_NETWORK_LANG_FRENCH                                         :フランス語
+STR_NETWORK_LANG_BRAZILIAN                                      :ãƒãƒ«ãƒˆã‚¬ãƒ«èªžï¼ˆãƒ–ラジル)
+STR_NETWORK_LANG_BULGARIAN                                      :ブルガリア語
+STR_NETWORK_LANG_CHINESE                                        :中国語
+STR_NETWORK_LANG_CZECH                                          :ãƒã‚§ã‚³èªž
+STR_NETWORK_LANG_DANISH                                         :デンマーク語
+STR_NETWORK_LANG_DUTCH                                          :オランダ語
+STR_NETWORK_LANG_ESPERANTO                                      :エスペラント語
+STR_NETWORK_LANG_FINNISH                                        :フィンランド語
+STR_NETWORK_LANG_HUNGARIAN                                      :ãƒãƒ³ã‚¬ãƒªãƒ¼èªž
+STR_NETWORK_LANG_ICELANDIC                                      :アイスランド語
+STR_NETWORK_LANG_ITALIAN                                        :イタリア語
+STR_NETWORK_LANG_JAPANESE                                       :日本語
+STR_NETWORK_LANG_KOREAN                                         :韓国語
+STR_NETWORK_LANG_LITHUANIAN                                     :リトアニア語
+STR_NETWORK_LANG_NORWEGIAN                                      :ノルウェイ語
+STR_NETWORK_LANG_POLISH                                         :ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž
+STR_NETWORK_LANG_PORTUGUESE                                     :ãƒãƒ«ãƒˆã‚¬ãƒ«èªž
+STR_NETWORK_LANG_ROMANIAN                                       :ルーマニア語
+STR_NETWORK_LANG_RUSSIAN                                        :ロシア語
+STR_NETWORK_LANG_SLOVAK                                         :スロãƒã‚­ã‚¢èªž
+STR_NETWORK_LANG_SLOVENIAN                                      :スロベニア語
+STR_NETWORK_LANG_SPANISH                                        :スペイン語
+STR_NETWORK_LANG_SWEDISH                                        :スウェーデン語
+STR_NETWORK_LANG_TURKISH                                        :トルコ語
+STR_NETWORK_LANG_UKRAINIAN                                      :ウクライナ語
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}多人数ゲームロビー
@@ -1585,6 +1615,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :å‰ä½ä¿¡å·ã®ã‚ã‚‹ç·šè·¯
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :後ä½ä¿¡å·ã®ã‚ã‚‹ç·šè·¯
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :çµ±åˆä¿¡å·ã®ã‚ã‚‹ç·šè·¯
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :通常信å·ã¨å…¥å£å¾“属信å·ã®ã‚る鉄é“
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :通常信å·ã¨å‡ºå£å¾“属信å·ã®ã‚る鉄é“
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :通常信å·ã¨çµåˆä¿¡å·ã®ã‚る鉄é“
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :å…¥å£å¾“属信å·ã¨å‡ºå£å¾“属信å·ã®ã‚る鉄é“
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :å…¥å£å¾“属信å·ã¨çµåˆä¿¡å·ã®ã‚る鉄é“
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :出å£å¾“属信å·ã¨çµåˆä¿¡å·ã®ã‚る鉄é“
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}å…ˆã«é§…を破壊ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“
 
 
 
@@ -1592,22 +1629,39 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}å…ˆã«é“路を破壊ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}é“路工事中
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}é“è·¯ã®å»ºè¨­
+STR_1802_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_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}ã“ã“ã‹ã‚‰é“è·¯ãŒç ´å£Šã§ãã¾ã›ã‚“...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}ã“ã“ã‹ã‚‰è·¯é¢é›»è»Šç·šãŒç ´å£Šã§ãã¾ã›ã‚“...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}車庫ã®é…ç½®
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}è·¯é¢é›»è»Šåº«ã®é…ç½®
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}ã“ã“ã«è»Šåº«ãŒå»ºè¨­ã§ãã¾ã›ã‚“...
+STR_1807_CAN_T_BUILD_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_180A_ROAD_CONSTRUCTION                                      :é“è·¯ã®å»ºè¨­
+STR_180A_TRAMWAY_CONSTRUCTION                                   :è·¯é¢é›»è»Šç·šã®å»ºè¨­
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}é“è·¯ã®éƒ¨åˆ†ã‚’建設ã—ã¾ã™
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}è·¯é¢é›»è»Šç·šã‚’建設ã—ã¾ã™
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}(ãƒã‚¹ã€ãƒˆãƒ©ãƒƒã‚¯ã®å»ºè¨­ã€æ•´å‚™ã®ãŸã‚ã®ï¼‰è»Šåº«ã‚’建設ã—ã¾ã™
+STR_180C_BUILD_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}é“è·¯ã®ç«¯ã‚’建設ã—ã¾ã™
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}è·¯é¢é›»è»Šç”¨æ©‹ã‚’建設
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}é“è·¯ã®ãƒˆãƒ³ãƒãƒ«ã‚’建設ã—ã¾ã™
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}è·¯é¢é›»è»Šç”¨ãƒˆãƒ³ãƒãƒ«ã‚’建設
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}é“è·¯ã®å»ºè¨­ï¼ç ´å£Šã‚’切り替ãˆã¾ã™
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}è·¯é¢é›»è»Šç·šã®å»ºè¨­ï¼ç ´å£Šã‚’切り替ãˆã¾ã™
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}車庫ã®é…ç½®ã®é¸æŠž
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}è·¯é¢é›»è»Šåº«ã®é…置をé¸æŠž
 STR_1814_ROAD                                                   :é“è·¯
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :街路照明ã®ã‚ã‚‹é“è·¯
 STR_1816_TREE_LINED_ROAD                                        :並木é“
@@ -1615,6 +1669,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :è¸åˆ‡
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}ãƒã‚¹åœãŒç ´å£Šã§ãã¾ã›ã‚“...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}è·å½¹æ‰€ãŒç ´å£Šã§ãã¾ã›ã‚“...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}乗客用路é¢é›»è»Šé§…ãŒç ´å£Šã§ãã¾ã›ã‚“...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}貨物用路é¢é›»è»Šé§…ãŒç ´å£Šã§ãã¾ã›ã‚“...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}市町æ‘
@@ -1778,8 +1834,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA}è»’ã®é§…
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- ãªã— -
@@ -1791,6 +1851,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}主ã®ç”»é¢ã‚’駅ã®å ´æ‰€ã«ç§»å‹•ã—ã¾ã™
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}駅ã®è©•ä¾¡ã‚’表示ã—ã¾ã™
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}駅åを変更ã—ã¾ã™
@@ -2011,6 +2073,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING}ヘリãƒãƒ¼ãƒˆ
 STR_SV_STNAME_FOREST                                            :{STRING}森林
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2149,8 +2213,8 @@
 STR_7039_VEHICLES                                               :{GOLD}車両数:
 STR_TRAINS                                                      :{WHITE}列車{COMMA}本
 STR_ROAD_VEHICLES                                               :{WHITE}é“路車両{COMMA}両
-STR_AIRCRAFT                                                    :{WHITE}{COMMA}å°ã®é£›è¡Œæ©Ÿ
-STR_SHIPS                                                       :{WHITE}{COMMA}éš»ã®èˆ¹èˆ¶
+STR_AIRCRAFT                                                    :{WHITE}飛行機{COMMA}å°
+STR_SHIPS                                                       :{WHITE}船舶{COMMA}隻
 STR_7042_NONE                                                   :{WHITE}ãªã—
 STR_7043_FACE_SELECTION                                         :{WHITE}é¡”ã®é¸æŠž
 STR_7044_MALE                                                   :{BLACK}男性
@@ -2239,6 +2303,8 @@
 STR_LIVERY_HELICOPTER                                           :ヘリコプター
 STR_LIVERY_SMALL_PLANE                                          :å°åž‹é£›è¡Œæ©Ÿ
 STR_LIVERY_LARGE_PLANE                                          :大型飛行機
+STR_LIVERY_PASSENGER_TRAM                                       :乗客用路é¢é›»è»Š
+STR_LIVERY_FREIGHT_TRAM                                         :貨物用路é¢é›»è»Š
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}一般ã®ã‚«ãƒ©ãƒ¼ã‚¹ã‚­ãƒ¼ãƒ ã‚’表示ã—ã¾ã™
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}列車ã®ã‚«ãƒ©ãƒ¼ã‚¹ã‚­ãƒ¼ãƒ ã‚’表示ã—ã¾ã™
@@ -2596,6 +2662,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}æ–°è¦æŒ‡ä»¤ãŒæŒ¿å…¥ã§ãã¾ã›ã‚“...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}ã“ã®æŒ‡ä»¤ãŒå‰Šé™¤ã§ãã¾ã›ã‚“...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}ã“ã®æŒ‡ä»¤ãŒå¤‰æ›´ã§ãã¾ã›ã‚“...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}ã“ã®æŒ‡ä»¤ãŒç§»å‹•ã§ãã¾ã›ã‚“...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}実行中ã®æŒ‡ä»¤ãŒã‚¹ã‚­ãƒƒãƒ—ã§ããªã„...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}é¸æŠžã—ãŸæŒ‡ä»¤ã¸ã‚¹ã‚­ãƒƒãƒ—ã§ããªã„...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}ã“ã®è»Šè¼ŒãŒç§»å‹•ã§ãã¾ã›ã‚“...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}ダブルヘッドã®å ´åˆã€å¾Œéƒ¨ã®æ©Ÿé–¢è»Šã¯å¸¸ã«å‰éƒ¨ã®æ©Ÿé–¢è»Šã«ã¤ã„ã¦è¡Œãã¾ã™
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2627,7 +2696,7 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}å„車両ã®å®¹é‡ã‚’表示ã—ã¾ã™
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}貨物種類ã«ä¸¦ã¹æ›¿ãˆã¦åˆ—車ã®åˆè¨ˆå®¹é‡ã‚’表示ã—ã¾ã™
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}指令リスト - 指令をé¸æŠžã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¾ã™
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}ç¾åœ¨ã®æŒ‡ä»¤ã‚’スキップã—ã¦ã€æ¬¡ã¸ç§»å‹•ã—ã¾ã™
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}実行中ã®æŒ‡ä»¤ã‚’スキップã—ã¦ã€æ¬¡ã¸ç§»å‹•ã—ã¾ã™ã€‚Control クリックã™ã‚‹ã¨ã€é¸æŠžã—ãŸæŒ‡ä»¤ã¸ç§»å‹•ã—ã¾ã™ã€‚
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}é¸æŠžã—ãŸæŒ‡ä»¤ã‚’削除ã—ã¾ã™
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}é¸æŠžã—ãŸæŒ‡ä»¤ã‚’「直行便ã€ã«ã—ã¾ã™
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}é¸æŠžã—ãŸæŒ‡ä»¤ã®å‰ï¼ãƒªã‚¹ãƒˆã®çµ‚ã‚ã‚Šã«æ–°è¦æŒ‡ä»¤ã‚’挿入ã—ã¾ã™
@@ -2712,6 +2781,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_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}交通事故ï¼{}列車ã«è¡çªã€é‹è»¢è€…ãŒæ­»äº¡
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}交通事故ï¼{}列車ã«è¡çªã€{COMMA}人ãŒæ­»äº¡
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}車両ãŒé€†è»¢ã•ã›ã‚‰ã‚Œã¾ã›ã‚“...
@@ -2735,7 +2806,7 @@
 STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}ã“ã“ã«åŸ é ­ãŒå»ºè¨­ã§ãã¾ã›ã‚“...
 STR_9803_SHIP_DEPOT                                             :{WHITE}{TOWN}造船所
 STR_9804_NEW_SHIPS                                              :{BLACK}æ–°è¦èˆ¹èˆ¶
-STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - {COMMA}éš»ã®èˆ¹èˆ¶
+STR_9805_SHIPS                                                  :{WHITE}{COMPANY} - 船舶{COMMA}隻
 STR_9808_NEW_SHIPS                                              :{WHITE}æ–°è¦èˆ¹èˆ¶
 STR_9809_BUILD_SHIP                                             :{BLACK}船舶を購入
 STR_CLONE_SHIP                                                  :{BLACK}船舶をクローン
@@ -2811,7 +2882,7 @@
 STR_A005_NEW_AIRCRAFT                                           :{WHITE}æ–°è¦é£›è¡Œæ©Ÿ
 STR_A006_BUILD_AIRCRAFT                                         :{BLACK}飛行機を購入
 STR_A008_CAN_T_BUILD_AIRCRAFT                                   :{WHITE}飛行機ãŒè³¼å…¥ã§ãã¾ã›ã‚“...
-STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - {COMMA}å°ã®é£›è¡Œæ©Ÿ
+STR_A009_AIRCRAFT                                               :{WHITE}{COMPANY} - 飛行機{COMMA}å°
 STR_A00A                                                        :{WHITE}{VEHICLE}
 STR_A00B_ORDERS                                                 :{WHITE}{VEHICLE}(指令)
 STR_A00C_DETAILS                                                :{WHITE}{VEHICLE}(詳細)
@@ -2996,6 +3067,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}車庫ï¼æ ¼ç´åº«ï¼é€ èˆ¹æ‰€å†…ã®ã™ã¹ã¦ã®è»Šä¸¡ã‚’販売ã—ã¾ã™ã€‚続ã‘ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :電車庫ã®ç¨®é¡žãŒä¸€è‡´ã—ã¦ã„ã¾ã›ã‚“
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}電車庫内ã®ã™ã¹ã¦ã®åˆ—車を販売ã—ã¾ã™
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}車庫内ã®ã™ã¹ã¦ã®é“路車両を販売ã—ã¾ã™
@@ -3012,10 +3084,10 @@
 STR_DEPOT_AUTOREPLACE_SHIP_TIP                                  :{BLACK}造船所内ã®ã™ã¹ã¦ã®èˆ¹èˆ¶ã‚’自動的ã«äº¤æ›ã—ã¾ã™
 STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP                              :{BLACK}æ ¼ç´åº«å†…ã®ã™ã¹ã¦ã®é£›è¡Œæ©Ÿã‚’自動的ã«äº¤æ›ã—ã¾ã™
 
-STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - {COMMA}本ã®åˆ—車
-STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - {COMMA}両ã®é“路車両
-STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - {COMMA}éš»ã®èˆ¹èˆ¶
-STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - {COMMA}å°ã®é£›è¡Œæ©Ÿ
+STR_VEHICLE_LIST_TRAIN_DEPOT                                    :{BLACK}{STRING} - 列車{COMMA}本
+STR_VEHICLE_LIST_ROADVEH_DEPOT                                  :{BLACK}{STRING} - é“路車両{COMMA}両
+STR_VEHICLE_LIST_SHIP_DEPOT                                     :{BLACK}{STRING} - 船舶{COMMA}隻
+STR_VEHICLE_LIST_AIRCRAFT_DEPOT                                 :{BLACK}{STRING} - 飛行機{COMMA}å°
 
 STR_REPLACE_VEHICLES_WHITE                                      :{WHITE}{STRING}を交æ›
 STR_REPLACE_VEHICLES_START                                      :{BLACK}車両ã®äº¤æ›ã‚’開始
@@ -3186,3 +3258,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}交通社所有ã®å»ºç‰©ãªã©ã®é€æ˜Žæ€§ã‚’å…¥ï¼åˆ‡
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}æ©‹ã®é€æ˜Žæ€§ã‚’å…¥ï¼åˆ‡
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}ç¯å°ã€é€ä¿¡æ©Ÿãªã©ã®é€æ˜Žæ€§ã‚’å…¥ï¼åˆ‡
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :グループ {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :ã™ã¹ã¦ã®åˆ—車
+STR_GROUP_ALL_ROADS                                             :ã™ã¹ã¦ã®é“路車両
+STR_GROUP_ALL_SHIPS                                             :ã™ã¹ã¦ã®èˆ¹èˆ¶
+STR_GROUP_ALL_AIRCRAFTS                                         :ã™ã¹ã¦ã®é£›è¡Œæ©Ÿ
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :共有車両を追加
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :ã™ã¹ã¦ã®è»Šä¸¡ã‚’å–り除ã
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - 列車{COMMA}本
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - é“路車両{COMMA}両
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - 船舶{COMMA}隻
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - 飛行機{COMMA}å°
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}グループåを変更
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}"{GROUP}"内ã®è»Šä¸¡ã‚’交æ›
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}グループãŒä½œæˆã§ãã¾ã›ã‚“...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}グループãŒå‰Šé™¤ã§ãã¾ã›ã‚“...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}グループåãŒå¤‰æ›´ã§ãã¾ã›ã‚“...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}グループ内ã®ã™ã¹ã¦ã®è»Šä¸¡ãŒå–り除ã‘ã¾ã›ã‚“...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}ã“ã®è»Šä¸¡ãŒã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è¿½åŠ ã§ãã¾ã›ã‚“...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}グループã«å…±æœ‰è»Šä¸¡ãŒè¿½åŠ ã§ãã¾ã›ã‚“...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}グループ - グループをクリックã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—内ã®ã™ã¹ã¦ã®è»Šä¸¡ã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã—ã¾ã™
+STR_GROUP_CREATE_TIP                                            :{BLACK}クリックã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—を作æˆã—ã¾ã™
+STR_GROUP_DELETE_TIP                                            :{BLACK}é¸æŠžã—ãŸã‚°ãƒ«ãƒ¼ãƒ—を削除ã—ã¾ã™
+STR_GROUP_RENAME_TIP                                            :{BLACK}é¸æŠžã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã®å称を変更ã—ã¾ã™
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—内ã®è»Šä¸¡ã‚’自動交æ›ã—ã¾ã›ã‚“
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}今年ã®åŽç›Šï¼š{GREEN}{CURRENCY} {BLACK}(昨年:{GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}今年ã®åŽç›Šï¼š{RED}{CURRENCY} {BLACK}(昨年:{GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}今年ã®åŽç›Šï¼š{GREEN}{CURRENCY} {BLACK}(昨年:{RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}今年ã®åŽç›Šï¼š{RED}{CURRENCY} {BLACK}(昨年:{RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/korean.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/korean.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 1
 ##gender a b
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}맵 가장ìžë¦¬ì—ì„œ 너무 멉니다!
@@ -1047,6 +1049,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}í–¥ìƒëœ 글로벌 경로íƒìƒ‰ (NPF, NTP ìš°ì„ ) : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}무거운 열차를 운행하기 위해 í™”ë¬¼ì— ë¬´ê²Œë¥¼ 가함 : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}마ì„ì´ ì†Œìœ ì¤‘ì¸ ë„로를 통과하는 버스 정류장 건설 허용: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}정거장 ê·¼ì²˜ì— ê±´ë¬¼ 짓기 허용: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}소형 ê³µí•­ì˜ ê±´ì„¤ì„ í—ˆìš© : {ORANGE}{STRING}
 
@@ -1087,6 +1090,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_MEASURE_TOOLTIP                              :{LTBLUE}다양한 건설ë„구를 ì‚¬ìš©ì‹œì— ê±°ë¦¬ì¸¡ì • íˆ´íŒ í‘œì‹œ : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}회사 ì¡°í•©ì› í‘œì‹œ : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :ì—†ìŒ
@@ -1394,6 +1398,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :ì˜ì–´
 STR_NETWORK_LANG_GERMAN                                         :ë…ì¼ì–´
 STR_NETWORK_LANG_FRENCH                                         :프랑스어
+STR_NETWORK_LANG_BRAZILIAN                                      :브ë¼ì§ˆì–´
+STR_NETWORK_LANG_BULGARIAN                                      :불가리아어
+STR_NETWORK_LANG_CHINESE                                        :중국어
+STR_NETWORK_LANG_CZECH                                          :체코어
+STR_NETWORK_LANG_DANISH                                         :ë´ë§ˆí¬ì–´
+STR_NETWORK_LANG_DUTCH                                          :네ëœëž€ë“œì–´
+STR_NETWORK_LANG_ESPERANTO                                      :ì—스페란토
+STR_NETWORK_LANG_FINNISH                                        :핀란드어
+STR_NETWORK_LANG_HUNGARIAN                                      :í—가리어
+STR_NETWORK_LANG_ICELANDIC                                      :ì•„ì´ìŠ¬ëž€ë“œì–´
+STR_NETWORK_LANG_ITALIAN                                        :ì´íƒˆë¦¬ì•„ì–´
+STR_NETWORK_LANG_JAPANESE                                       :ì¼ë³¸ì–´
+STR_NETWORK_LANG_KOREAN                                         :한국어
+STR_NETWORK_LANG_LITHUANIAN                                     :리투아니아어
+STR_NETWORK_LANG_NORWEGIAN                                      :노르웨ì´ì–´
+STR_NETWORK_LANG_POLISH                                         :í´ëž€ë“œì–´
+STR_NETWORK_LANG_PORTUGUESE                                     :í¬ë¥´íˆ¬ê°ˆì–´
+STR_NETWORK_LANG_ROMANIAN                                       :루마니아어
+STR_NETWORK_LANG_RUSSIAN                                        :러시아어
+STR_NETWORK_LANG_SLOVAK                                         :슬로바키아어
+STR_NETWORK_LANG_SLOVENIAN                                      :슬로베니아어
+STR_NETWORK_LANG_SPANISH                                        :스페ì¸ì–´
+STR_NETWORK_LANG_SWEDISH                                        :스웨ë´ì–´
+STR_NETWORK_LANG_TURKISH                                        :터키어
+STR_NETWORK_LANG_UKRAINIAN                                      :ìš°í¬ë¼ì´ë‚˜ì–´
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}ë©€í‹°í”Œë ˆì´ ì¤€ë¹„
@@ -1587,6 +1616,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :PRE ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :출구 ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :ê²°í•© ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :ì¼ë°˜ 신호등과 PREì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :ì¼ë°˜ 신호등과 ì¶œêµ¬ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :ì¼ë°˜ 신호등과 ê²°í•©ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :PRE 신호등과 ì¶œêµ¬ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :PRE 신호등과 ê²°í•©ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :출구 신호등과 ê²°í•©ì‹ í˜¸ë“±ì´ ì„¤ì¹˜ëœ ì² ë„
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}먼저 기차 ì •ê±°ìž¥ì„ ì œê±°í•´ì•¼ 합니다
 
 
 
@@ -1594,22 +1630,39 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}ë„로를 먼저 제거하십시오
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}ë„ë¡œ ìž‘ì—…ì´ ì§„í–‰ì¤‘ìž…ë‹ˆë‹¤
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}ë„ë¡œ 건설
+STR_1802_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_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}ë„로를 제거할 수 없습니다...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}ì´ê³³ì˜ ì „ì°»ê¸¸ì„ ì œê±°í•  수 없습니다...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}차고 방향
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}차량기지 방향
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}ì—¬ê¸°ì— ì°¨ê³ ë¥¼ ì§€ì„ ìˆ˜ 없습니다...
+STR_1807_CAN_T_BUILD_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_180A_ROAD_CONSTRUCTION                                      :ë„ë¡œ 건설
+STR_180A_TRAMWAY_CONSTRUCTION                                   :전찻길 건설
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}ë„ë¡œ 섹션 건설
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}전찻길 섹션 건설
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}차고 건설 (ì°¨ëŸ‰ì˜ ì œìž‘/ì ê²€ìš©)
+STR_180C_BUILD_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}êµëŸ‰ 건설
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}ì² êµ ê±´ì„¤
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}í„°ë„ ê±´ì„¤
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}í„°ë„ ê±´ì„¤
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}ë„ë¡œ 제거툴 켜기/ë„기
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}전찻길/신호등 제거툴 켜기/ë„기
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}ì°¨ê³ ì˜ ë°©í–¥ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}ì°¨ëŸ‰ê¸°ì§€ì˜ ë°©í–¥ì„ ì„ íƒí•˜ì„¸ìš”
 STR_1814_ROAD                                                   :ë„ë¡œ
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :ì‹ í˜¸ë“±ì´ ìžˆëŠ” ë„ë¡œ
 STR_1816_TREE_LINED_ROAD                                        :가로수가 있는 ë„ë¡œ
@@ -1617,6 +1670,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :ì² ë„ ê±´ë„목
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}ë²„ìŠ¤ì •ë¥˜ìž¥ì„ ì œê±°í•  수 없습니다...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}트럭 터미ë„ì„ ì œê±°í•  수 없습니다...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}ìŠ¹ê° ì „ì°¨ ì •ê±°ìž¥ì„ ì œê±°í•  수 없습니다...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}화물 ì „ì°¨ ì •ê±°ìž¥ì„ ì œê±°í•  수 없습니다...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}ë„ì‹œ
@@ -1780,8 +1835,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA}개 역사
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- ì—†ìŒ -
@@ -1793,6 +1852,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}ì´ ì—­ì´ ìžˆëŠ” 곳으로 ì´ë™í•©ë‹ˆë‹¤.
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}ì—­ì˜ ë“±ê¸‰ 표시
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}ì—­ ì´ë¦„ 변경
@@ -2243,6 +2304,8 @@
 STR_LIVERY_HELICOPTER                                           :헬리콥터
 STR_LIVERY_SMALL_PLANE                                          :소형 항공기
 STR_LIVERY_LARGE_PLANE                                          :대형 항공기
+STR_LIVERY_PASSENGER_TRAM                                       :ìŠ¹ê° ì „ì°¨
+STR_LIVERY_FREIGHT_TRAM                                         :화물 전차
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}ì¼ë°˜ ìƒ‰ìƒ ì„ íƒ
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}ì—´ì°¨ ìƒ‰ìƒ ì„ íƒ
@@ -2600,6 +2663,9 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}새 경로를 삽입할 수 없습니다...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}ì´ ê²½ë¡œë¥¼ 제거할 수 없습니다...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}ì´ ê²½ë¡œë¥¼ 수정할 수 없습니다...
+STR_CAN_T_MOVE_THIS_ORDER                                       :{WHITE}ì´ ê²½ë¡œë¥¼ 옮길 수 없습니다...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}현재 경로를 건너 뛸 수 없습니다...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}ì„ íƒí•œ 경로로 건너 뛸 수 없습니다...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}ì°¨ëŸ‰ì„ ì˜®ê¸¸ 수 없습니다...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}뒷쪽 기관차는 ì•žìª½ê²ƒì„ í•­ìƒ ë”°ë¼ë‹¤ë‹ 것입니다.
 STR_8838_N_A                                                    :ì—†ìŒ{SKIP}
@@ -2631,7 +2697,7 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}ê° ì°¨ëŸ‰ì˜ ìˆ˜ì†¡ëŸ‰ 정보를 보여줌
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}ê° í™”ë¬¼ ì¢…ë¥˜ì— ë”°ë¥¸ ì´ ìˆ˜ì†¡ëŸ‰ 보여줌
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}ì´ ì—´ì°¨ì˜ ê²½ë¡œ - ì„ íƒí•˜ë ¤ë©´ í´ë¦­í•˜ì„¸ìš”. CTRL+í´ë¦­í•˜ì‹œë©´ ê·¸ ì—­ì´ ìžˆëŠ” 장소로 ì´ë™í•©ë‹ˆë‹¤.
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}현재 경로를 건너뛰고 ë‹¤ìŒ ê²½ë¡œë¡œ 진행합니다.
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}현재 경로를 건너 ëœë‹ˆë‹¤, 그리고 ë‹¤ìŒ ê²½ë¡œë¥¼ 시작합니다. Ctrl + í´ë¦­ì€ ì„ íƒëœ 경로로 건너 ëœë‹ˆë‹¤.
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}ì„ íƒëœ 경로를 삭제합니다.
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}ì„ íƒëœ 경로를 급행으로 변경합니다.
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}ì„ íƒëœ 경로 바로 ì „ì´ë‚˜ ëª©ë¡ ë§¨ ëì— ìƒˆë¡œìš´ 경로를 삽입합니다.
@@ -2716,6 +2782,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_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}ìžë™ì°¨ 충ëŒ!{}ì—´ì°¨ì™€ì˜ ì¶©ëŒë¡œ 운전사가 사ë§í–ˆìŠµë‹ˆë‹¤!
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}ìžë™ì°¨ 충ëŒ!{}ì—´ì°¨ì™€ì˜ ì¶©ëŒë¡œ {COMMA}ëª…ì´ ì‚¬ë§í–ˆìŠµë‹ˆë‹¤!
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}ìžë™ì°¨ë¥¼ 회차시킬 수 없습니다...
@@ -3000,6 +3068,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}ì´ ì•ˆì— ìžˆëŠ” 모든 ì°¨ëŸ‰ì„ íŒë§¤í•˜ë ¤ê³  합니다. ì •ë§ íŒë§¤í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :ìž˜ëª»ëœ ì°¨ëŸ‰ê¸°ì§€ 종류
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}ì´ ì°¨ëŸ‰ê¸°ì§€ì— ìžˆëŠ” 모든 열차를 íŒë‹ˆë‹¤.
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}ì´ ì°¨ëŸ‰ê¸°ì§€ì— ìžˆëŠ” 모든 ìžë™ì°¨ë¥¼ íŒë‹ˆë‹¤.
@@ -3202,6 +3271,9 @@
 STR_GROUP_ADD_SHARED_VEHICLE                                    :모든 ê³µìœ ëœ ì°¨ëŸ‰
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :모든 차량 제거
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} 기차
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} ìžë™ì°¨
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} ì„ ë°•
 STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} 항공기
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}그룹 ì´ë¦„ 바꾸기
 STR_GROUP_REPLACE_CAPTION                                       :{WHITE}"{GROUP}"ì˜ ì°¨ëŸ‰ êµì²´
--- a/src/lang/lithuanian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/lithuanian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2627,7 +2627,6 @@
 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_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_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Praleisti esama uzduoti, vygdyti sekancia
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Istrinti pazymeta uzduoti
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Nestoti pazymetoje stoteleje
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Iterpti nauja uzduoti pries pazymeta, arba iterpti saraso pabaigoje
--- a/src/lang/norwegian_bokmal.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode nb_NO
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Utenfor kartet
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ny global rutesøking (NGR, overstyrer NTK): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Vektmultiplikator for frakt til å simulere tunge tog: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Tillat gjennomkjøring av stoppesteder på veier som er eid av byene: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Tillat bygging av nærliggende stasjoner: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Alltid tillat bygging av små flyplasser: {ORANGE}{STRING}
 
@@ -1097,6 +1100,8 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Rull kartet
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Av
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Rullehjulets hastighet på kartet: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Pause automatisk ved start av nytt spill: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Bruk den avanserte kjøretøyslisten: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maks antall tog per spiller: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maks antall kjøretøy per spiller: {ORANGE}{STRING}
@@ -1130,6 +1135,13 @@
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Tillat kjøping av aksjer i andre selskaper
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Ved opptrekking plasser signal hver: {ORANGE}{STRING} rute(r)
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Bygg signalsystem med mast automatisk før: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Velg byvei-layout: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :ingen flere veier
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :default
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :bedre veier
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 rutenett
+
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Plassering av hovedverktøylinje: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Venstre
 STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Midtstilt
@@ -2001,6 +2013,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} helikopterstasjon
 STR_SV_STNAME_FOREST                                            :{STRING}skogen
 
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2616,7 +2629,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordreliste - trykk på en ordre for å velge den
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Hopper over gjeldende ordre, og forsett på neste
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Slett den valgte ordren
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gjør den valgte ordren om til en
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Sett inn en ordre før den valgte ordren, eller i slutten av listen.
@@ -3173,3 +3185,11 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Skru på gjennomsiktighet for stasjoner, depoter, lokalstasjoner og skinner
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Skru på gjennomsiktighet for broer
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Skru på gjennomsiktighet for fyrtårn og antenner
+
+##### Mass Order
+
+
+
+
+
+########
--- a/src/lang/norwegian_nynorsk.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 0
 ##gender masculine feminine neuter
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Utføre kartet
@@ -1047,6 +1049,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ny global rutesøking (NGR, overstyrer NTK): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Vektmultiplikator for frakt til å simulere tunge tog: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Tillat å køyre gjennom stoppestadar på vegar som byane eig: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Tillat å byggje stasjonar inntil andre: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Alltid tillat bygging av små flyplassar: {ORANGE}{STRING}
 
@@ -1099,6 +1102,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :av
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Fart på rullehjul: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automatisk pause når ein startar nytt spel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Bruk avansert køyretøyliste: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maks antal tog per speler: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maks antal køyretøy per spelar: {ORANGE}{STRING}
@@ -1393,6 +1397,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Engelsk
 STR_NETWORK_LANG_GERMAN                                         :Tysk
 STR_NETWORK_LANG_FRENCH                                         :Fransk
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasiliansk
+STR_NETWORK_LANG_BULGARIAN                                      :Bulgarsk
+STR_NETWORK_LANG_CHINESE                                        :Kinesisk
+STR_NETWORK_LANG_CZECH                                          :Tsjekkisk
+STR_NETWORK_LANG_DANISH                                         :Dansk
+STR_NETWORK_LANG_DUTCH                                          :Nederlandsk
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finsk
+STR_NETWORK_LANG_HUNGARIAN                                      :Ungarsk
+STR_NETWORK_LANG_ICELANDIC                                      :Islandsk
+STR_NETWORK_LANG_ITALIAN                                        :Italiensk
+STR_NETWORK_LANG_JAPANESE                                       :Japansk
+STR_NETWORK_LANG_KOREAN                                         :Koreansk
+STR_NETWORK_LANG_LITHUANIAN                                     :Litauisk
+STR_NETWORK_LANG_NORWEGIAN                                      :Norsk
+STR_NETWORK_LANG_POLISH                                         :Polsk
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugisisk
+STR_NETWORK_LANG_ROMANIAN                                       :Rumensk
+STR_NETWORK_LANG_RUSSIAN                                        :Russisk
+STR_NETWORK_LANG_SLOVAK                                         :Slovakisk
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovensk
+STR_NETWORK_LANG_SPANISH                                        :Spansk
+STR_NETWORK_LANG_SWEDISH                                        :Svensk
+STR_NETWORK_LANG_TURKISH                                        :Tyrkisk
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainsk
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Fleirspelarspel-lobby
@@ -1586,6 +1615,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Jernbanespor med for-signal
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Jernbanespor med ut-signal
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Jernbanespor med samansette signal
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Jernbanespor med normale- og pre-signal
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Jernbanespor med normale- og exit-spor
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Jernbanespor med normale- og blandingssignal
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Jernbanespor med pre- og exit-signal
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Jernbanespor med pre- og blandingssignal
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Jernbanespor med exit- og blandingssignal
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Må fjerne togstasjon først
 
 
 
@@ -1593,22 +1629,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Retning for garasje
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Bygg veg
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Trikkekonstruksjon
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bygg veg
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bygg trikkeseksjon
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bygg bru
+STR_180F_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_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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Vel retninga på garasjen
+STR_1813_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
@@ -1616,6 +1669,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Jernbaneovergang
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kan ikkje fjerne busstasjon
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kan ikkje fjerne lastebilstasjon
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Kan ikkje fjerne trikkestasjon...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Kan ikkje fjerne trikkestasjon...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Byar
@@ -1779,8 +1834,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Stasjon{P "" ar}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Ingen -
@@ -1792,6 +1851,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_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
@@ -2012,6 +2073,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} helikopterstasjon
 STR_SV_STNAME_FOREST                                            :{STRING}skogen
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2240,6 +2303,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Lite fly
 STR_LIVERY_LARGE_PLANE                                          :Stort fly
+STR_LIVERY_PASSENGER_TRAM                                       :Passasjertrikk
+STR_LIVERY_FREIGHT_TRAM                                         :Frakttrikk
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Vis generelle fargetema
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Vis togfargetema
@@ -2597,6 +2662,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Kan ikkje setje inn ny ordre...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Kan ikkje slette denne ordren...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Kan ikkje endre denne ordren...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Kan ikkje hoppa over gjeldande ordre
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Kan ikkje hoppa til valde ordre
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Kan ikkje flytte køyretøy...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Bakmaskinen vil alltid følgje det fremste motstykket
 STR_8838_N_A                                                    :N/A{SKIP}
@@ -2628,7 +2695,7 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Ordreliste - trykk på ein ordre for å velje han
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Hopp over gjeldande ordre, og start den neste
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gjer den valde ordren om til ein
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Sett inn ein ordre før den valde ordren, eller i slutten av lista
@@ -2713,6 +2780,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_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...
@@ -2997,6 +3066,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Du er i ferd med å selje alle køyretøya i depotet. Er du sikker?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Gal type depot
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Sel alle toga i togstallen
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Sel alle køyretøya i garasjen
@@ -3187,3 +3257,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Byt gjennomsyn for bygningar som kan byggast, til dømes depot og vegmerker
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Byt gjennomsyn for bruer
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Byt gjennomsyn for bygningar som fyrtårn og antenner, kanskje i framtida for fine effekter
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Gruppe {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Alle tog
+STR_GROUP_ALL_ROADS                                             :Alle køyretøty
+STR_GROUP_ALL_SHIPS                                             :Alle skip
+STR_GROUP_ALL_AIRCRAFTS                                         :Alle fly
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Legg til delte køyretøy
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Fjern alle køyretøy
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Tog
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Køyretøy
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Skip
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Fly
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Gje nytt namn til ei gruppe
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Erstatt køyretøy i "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Kan ikkje lage gruppe...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Kan ikkje slette denne gruppa...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Kan ikkje gje gruppa nytt namn...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Kan ikkje fjerne alle køyretøy fra denne gruppa...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Kan ikkje legge dette køyretøyet til denne gruppa...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Kan ikkje legge til gruppe for delte køyretøy...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Grupper - Klikk på ei gruppe for å få ei liste over alle køyretøya i den
+STR_GROUP_CREATE_TIP                                            :{BLACK}Klikk for å lage ei gruppe
+STR_GROUP_DELETE_TIP                                            :{BLACK}Slett den valde gruppa
+STR_GROUP_RENAME_TIP                                            :{BLACK}Gje den valde gruppa nytt namn
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klikk for å beskytte denne gruppa frå å global automatisk erstatning
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/polish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/polish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2755,7 +2755,6 @@
 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_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 polecenie i zacznij następne
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Usuń podświetlone polecenie
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Zrób z tego polecenia 'non-stop'
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Wstaw nowe polecenie na końcu listy lub przed zaznaczonym poleceniem
--- a/src/lang/portuguese.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/portuguese.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode pt_PT
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Fora da borda do mapa
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nova procura de caminho global (NPF, substitui NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Multiplicador de peso para simular comboios pesados: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Permitir estações de passagem em estradas das cidades: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Permitir construção de estações adjacentes: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Permitir sempre aeroportos pequenos: {ORANGE}{STRING}
 
@@ -1392,6 +1395,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Inglês
 STR_NETWORK_LANG_GERMAN                                         :Alemão
 STR_NETWORK_LANG_FRENCH                                         :Francês
+STR_NETWORK_LANG_BRAZILIAN                                      :Brasileiro
+STR_NETWORK_LANG_BULGARIAN                                      :Búlgaro
+STR_NETWORK_LANG_CHINESE                                        :Chinês
+STR_NETWORK_LANG_CZECH                                          :Checo
+STR_NETWORK_LANG_DANISH                                         :Dinamarquês
+STR_NETWORK_LANG_DUTCH                                          :Holandês
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finlandês
+STR_NETWORK_LANG_HUNGARIAN                                      :Húngaro
+STR_NETWORK_LANG_ICELANDIC                                      :Islandês
+STR_NETWORK_LANG_ITALIAN                                        :Italiano
+STR_NETWORK_LANG_JAPANESE                                       :Japonês
+STR_NETWORK_LANG_KOREAN                                         :Coreano
+STR_NETWORK_LANG_LITHUANIAN                                     :Lituano
+STR_NETWORK_LANG_NORWEGIAN                                      :Norueguês
+STR_NETWORK_LANG_POLISH                                         :Polaco
+STR_NETWORK_LANG_PORTUGUESE                                     :Português
+STR_NETWORK_LANG_ROMANIAN                                       :Romeno
+STR_NETWORK_LANG_RUSSIAN                                        :Russo
+STR_NETWORK_LANG_SLOVAK                                         :Eslovaco
+STR_NETWORK_LANG_SLOVENIAN                                      :Esloveno
+STR_NETWORK_LANG_SPANISH                                        :Espanhol
+STR_NETWORK_LANG_SWEDISH                                        :Sueco
+STR_NETWORK_LANG_TURKISH                                        :Turco
+STR_NETWORK_LANG_UKRAINIAN                                      :Ucraniano
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Sala de espera de jogo multi-jogador
@@ -1585,6 +1613,7 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Caminhos-de-ferro com pre-sinais
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Caminhos-de-ferro com sinais de saída
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Caminhos-de-ferro com sinais combinados
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}É preciso remover a estação primeiro
 
 
 
@@ -2011,6 +2040,8 @@
 STR_SV_STNAME_HELIPORT                                          :Heliporto de {STRING}
 STR_SV_STNAME_FOREST                                            :Floresta de {STRING}
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2627,7 +2658,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Mostrar capacidades de cada veículo
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Mostrar capacidade total do comboio, dividir por tipo de carga
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de ordens - clique numa ordem para a seleccionar
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Saltar a ordem actual, e iniciar a próxima
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Eliminar a ordem seleccionada
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}A ordem seleccionada fará com que o veículo não para noutras estações pelo caminho
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Inserir nova ordem antes da ordem seleccionada, ou adicionar ao fim da lista
@@ -3186,3 +3216,35 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Comutar transparência para edificações como estações, depósitos, pontos-de-passagem e catenárias
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Comutar transparência para pontes
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Comutar transparência para estruturas como faróis-terrestres e antenas (talvez, no futuro, para embelezamentos)
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Grupo {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Todos os Comboios
+STR_GROUP_ALL_ROADS                                             :Todos os veículos de estrada
+STR_GROUP_ALL_SHIPS                                             :Todos os barcos
+STR_GROUP_ALL_AIRCRAFTS                                         :Todas as aeronaves
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Remover todos os veículos
+
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Renomear um grupo
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Substituir Veículos de "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Impossível criar grupo...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Impossível remover este grupo...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Impossível renomear o grupo...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Não é possível remover todos os veículos deste grupo...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Impossível adicionar o veículo a este grupo...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Grupos - Clique num grupo para listar todos os seus veículos
+STR_GROUP_CREATE_TIP                                            :{BLACK}Clique para criar um grupo
+STR_GROUP_DELETE_TIP                                            :{BLACK}Remover o grupo seleccionado
+STR_GROUP_RENAME_TIP                                            :{BLACK}Mudar o nome do grupo seleccionado
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Clique para proteger este grupo da autosubstituição global
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/romanian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/romanian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,32 +3,34 @@
 ##isocode ro_RO
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
-STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Depãseste limita hãrtii
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Prea aproape de marginea hãrtii
-STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nu ai destui bani - îti trebuie {CURRENCY}
+STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Depăşeşte limita hărţii
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Prea aproape de marginea hărţii
+STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nu ai destui bani - îţi trebuie {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY64}
 STR_0005                                                        :{RED}{CURRENCY64}
 STR_EMPTY                                                       :
-STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Necesitã teren plat
-STR_0008_WAITING                                                :{BLACK}ÃŽn asteptare: {WHITE}{STRING}
+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_000C_ACCEPTS                                                :{BLACK}Acceptă: {WHITE}
+STR_000D_ACCEPTS                                                :{BLACK}Acceptă: {GOLD}
 STR_000E                                                        :
-STR_000F_PASSENGERS                                             :cãlãtori
-STR_0010_COAL                                                   :cãrbuni
-STR_0011_MAIL                                                   :colete postale
+STR_000F_PASSENGERS                                             :călători
+STR_0010_COAL                                                   :cărbuni
+STR_0011_MAIL                                                   :colete poÅŸtale
 STR_0012_OIL                                                    :petrol
 STR_0013_LIVESTOCK                                              :animale
 STR_0014_GOODS                                                  :bunuri
 STR_0015_GRAIN                                                  :cereale
 STR_0016_WOOD                                                   :lemne
 STR_0017_IRON_ORE                                               :minereu de fier
-STR_0018_STEEL                                                  :otel
+STR_0018_STEEL                                                  :oţel
 STR_0019_VALUABLES                                              :valori
 STR_001A_COPPER_ORE                                             :minereu de cupru
 STR_001B_MAIZE                                                  :porumb
@@ -37,30 +39,30 @@
 STR_001E_FOOD                                                   :alimente
 STR_001F_PAPER                                                  :hârtie
 STR_0020_GOLD                                                   :aur
-STR_0021_WATER                                                  :apã
+STR_0021_WATER                                                  :apă
 STR_0022_WHEAT                                                  :grâu
 STR_0023_RUBBER                                                 :cauciuc
-STR_0024_SUGAR                                                  :zahãr
-STR_0025_TOYS                                                   :jucãrii
+STR_0024_SUGAR                                                  :zahăr
+STR_0025_TOYS                                                   :jucării
 STR_0026_CANDY                                                  :bomboane
 STR_0027_COLA                                                   :cola
-STR_0028_COTTON_CANDY                                           :vatã de zahãr
-STR_0029_BUBBLES                                                :balonase
+STR_0028_COTTON_CANDY                                           :vată de zahăr
+STR_0029_BUBBLES                                                :balonaÅŸe
 STR_002A_TOFFEE                                                 :caramel
 STR_002B_BATTERIES                                              :baterii
 STR_002C_PLASTIC                                                :plastic
 STR_002D_FIZZY_DRINKS                                           :sucuri
 STR_002E                                                        :
-STR_002F_PASSENGER                                              :cãlãtori
-STR_0030_COAL                                                   :cãrbuni
-STR_0031_MAIL                                                   :colete postale
+STR_002F_PASSENGER                                              :călător
+STR_0030_COAL                                                   :cărbuni
+STR_0031_MAIL                                                   :colete poÅŸtale
 STR_0032_OIL                                                    :petrol
 STR_0033_LIVESTOCK                                              :animale
 STR_0034_GOODS                                                  :bunuri
 STR_0035_GRAIN                                                  :cereale
 STR_0036_WOOD                                                   :lemne
 STR_0037_IRON_ORE                                               :minereu de fier
-STR_0038_STEEL                                                  :otel
+STR_0038_STEEL                                                  :oţel
 STR_0039_VALUABLES                                              :valori
 STR_003A_COPPER_ORE                                             :minereu de cupru
 STR_003B_MAIZE                                                  :porumb
@@ -69,15 +71,15 @@
 STR_003E_FOOD                                                   :alimente
 STR_003F_PAPER                                                  :hârtie
 STR_0040_GOLD                                                   :aur
-STR_0041_WATER                                                  :apã
+STR_0041_WATER                                                  :apă
 STR_0042_WHEAT                                                  :grâu
 STR_0043_RUBBER                                                 :cauciuc
-STR_0044_SUGAR                                                  :zahãr
-STR_0045_TOY                                                    :jucãrii
+STR_0044_SUGAR                                                  :zahăr
+STR_0045_TOY                                                    :jucării
 STR_0046_CANDY                                                  :bomboane
 STR_0047_COLA                                                   :cola
-STR_0048_COTTON_CANDY                                           :vatã de zahãr
-STR_0049_BUBBLE                                                 :balonase
+STR_0048_COTTON_CANDY                                           :vată de zahăr
+STR_0049_BUBBLE                                                 :balonaÅŸe
 STR_004A_TOFFEE                                                 :caramel
 STR_004B_BATTERY                                                :baterii
 STR_004C_PLASTIC                                                :plastic
@@ -151,12 +153,12 @@
 STR_00AE                                                        :{WHITE}{DATE_SHORT}
 STR_00AF                                                        :{WHITE}{DATE_LONG}
 STR_00B0_MAP                                                    :{WHITE}Harta - {STRING}
-STR_00B1_GAME_OPTIONS                                           :{WHITE}Optiuni
+STR_00B1_GAME_OPTIONS                                           :{WHITE}Opţiuni
 STR_00B2_MESSAGE                                                :{YELLOW}Mesaj
 STR_00B3_MESSAGE_FROM                                           :{YELLOW}Mesaj de la {STRING}
 STR_POPUP_CAUTION_CAPTION                                       :{WHITE}Atentie!
 STR_00B4_CAN_T_DO_THIS                                          :{WHITE}Nu pot face asta....
-STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}Nu pot curãta terenul....
+STR_00B5_CAN_T_CLEAR_THIS_AREA                                  :{WHITE}Nu pot curăţa terenul....
 STR_00B6_ORIGINAL_COPYRIGHT                                     :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, toate drepturile rezervate
 STR_00B7_VERSION                                                :{BLACK}OpenTTD versiunea {REV}
 STR_00BA_COPYRIGHT_OPENTTD                                      :{BLACK}OpenTTD {COPYRIGHT}2002-2007 Echipa OpenTTD
@@ -164,10 +166,10 @@
 
 STR_00C5                                                        :{BLACK}{CROSS}
 STR_00C6                                                        :{SILVER}{CROSS}
-STR_00C7_QUIT                                                   :{WHITE}Iesire din joc
+STR_00C7_QUIT                                                   :{WHITE}IeÅŸire din joc
 STR_00C8_YES                                                    :{BLACK}Da
 STR_00C9_NO                                                     :{BLACK}Nu
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Esti sigur cã vrei sã abandonezi jocul curent si sã revii în {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO                               :{YELLOW}Eşti sigur că vrei să abandonezi jocul curent şi să revii în {STRING}?
 STR_00CB_1                                                      :{BLACK}1
 STR_00CC_2                                                      :{BLACK}2
 STR_00CD_3                                                      :{BLACK}3
@@ -200,7 +202,7 @@
 STR_00E8_ROUTES                                                 :Rute
 STR_00E9_VEGETATION                                             :Vegetatie
 STR_00EA_OWNERS                                                 :Proprietari
-STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Strãzi
+STR_00EB_ROADS                                                  :{BLACK}{TINYFONT}Drumuri
 STR_00EC_RAILROADS                                              :{BLACK}{TINYFONT}Cãi ferate
 STR_00ED_STATIONS_AIRPORTS_DOCKS                                :{BLACK}{TINYFONT}Statii/Aeroporturi/Porturi
 STR_00EE_BUILDINGS_INDUSTRIES                                   :{BLACK}{TINYFONT}Clãdiri/Industrii
@@ -223,7 +225,7 @@
 STR_00FF_FARM                                                   :{BLACK}{TINYFONT}Fermã
 STR_0100_FACTORY                                                :{BLACK}{TINYFONT}Fabricã de conserve
 STR_0101_PRINTING_WORKS                                         :{BLACK}{TINYFONT}Tipografie
-STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Sonde
+STR_0102_OIL_WELLS                                              :{BLACK}{TINYFONT}Sonde de petrol
 STR_0103_IRON_ORE_MINE                                          :{BLACK}{TINYFONT}Minã de fier
 STR_0104_STEEL_MILL                                             :{BLACK}{TINYFONT}Otelãrie
 STR_0105_BANK                                                   :{BLACK}{TINYFONT}Bancã
@@ -347,7 +349,7 @@
 
 ############ range for menu starts
 STR_0154_OPERATING_PROFIT_GRAPH                                 :Profitul operational
-STR_0155_INCOME_GRAPH                                           :Cifra de afaceri
+STR_0155_INCOME_GRAPH                                           :Venituri
 STR_0156_DELIVERED_CARGO_GRAPH                                  :Numãr încãrcãturi livrate
 STR_0157_PERFORMANCE_HISTORY_GRAPH                              :Evolutia performantei
 STR_0158_COMPANY_VALUE_GRAPH                                    :Valoarea companiei
@@ -445,7 +447,7 @@
 STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}Mãreste imaginea
 STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}Micsoreazã imaginea
 STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}Construieste cãi ferate
-STR_0182_BUILD_ROADS                                            :{BLACK}Construieste strãzi
+STR_0182_BUILD_ROADS                                            :{BLACK}Construieste drumuri
 STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}Construieste porturi
 STR_0184_BUILD_AIRPORTS                                         :{BLACK}Construieste aeroporturi
 STR_0185_PLANT_TREES_PLACE_SIGNS                                :{BLACK}Planteazã arbori, plaseazã semne, etc.
@@ -453,7 +455,7 @@
 STR_0187_OPTIONS                                                :{BLACK}Optiuni
 STR_0188                                                        :{BLACK}{SMALLUPARROW}
 STR_0189                                                        :{BLACK}{SMALLDOWNARROW}
-STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}Nu pot schimba intervalul de service...
+STR_018A_CAN_T_CHANGE_SERVICING                                 :{WHITE}Nu pot schimba intervalul de întreţinere...
 STR_018B_CLOSE_WINDOW                                           :{BLACK}ÃŽnchide fereastra
 STR_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra
 STR_STICKY_BUTTON                                               :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
@@ -470,7 +472,7 @@
 STR_0194_SHOW_TRANSPORT_ROUTES_ON                               :{BLACK}Aratã rutele de transport pe hartã
 STR_0195_SHOW_VEGETATION_ON_MAP                                 :{BLACK}Aratã vegetatia pe hartã
 STR_0196_SHOW_LAND_OWNERS_ON_MAP                                :{BLACK}Aratã proprietãtile pe hartã
-STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Activeazã afisarea numelor oraselor pe hartã
+STR_0197_TOGGLE_TOWN_NAMES_ON_OFF                               :{BLACK}Activeazã/Dezactiveazã afisarea numelor oraselor pe hartã
 STR_0198_PROFIT_THIS_YEAR_LAST_YEAR                             :{TINYFONT}{BLACK}Profit anul acesta: {CURRENCY} (anul trecut: {CURRENCY})
 
 ############ range for service numbers starts
@@ -486,9 +488,9 @@
 STR_01A1_IS_GETTING_VERY_OLD                                    :{WHITE}{STRING} {COMMA} este foarte vechi
 STR_01A2_IS_GETTING_VERY_OLD_AND                                :{WHITE}{STRING} {COMMA} este foarte vechi si trebuie înlocuit urgent
 STR_01A3_LAND_AREA_INFORMATION                                  :{WHITE}Informatii teren
-STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Costul demolãrii: {LTBLUE}N/A
+STR_01A4_COST_TO_CLEAR_N_A                                      :{BLACK}Costul demolãrii: {LTBLUE}nu este cazul
 STR_01A5_COST_TO_CLEAR                                          :{BLACK}Costul demolãrii: {LTBLUE}{CURRENCY}
-STR_01A6_N_A                                                    :N/A
+STR_01A6_N_A                                                    :nu este cazul
 STR_01A7_OWNER                                                  :{BLACK}Proprietar: {LTBLUE}{STRING}
 STR_01A8_LOCAL_AUTHORITY                                        :{BLACK}Autoritatea localã: {LTBLUE}{STRING}
 STR_01A9_NONE                                                   :nici una
@@ -550,7 +552,7 @@
 STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION                        :{BLACK}Sãri la piesa urmãtoare din selectie
 STR_01E0_STOP_PLAYING_MUSIC                                     :{BLACK}Opreste muzica
 STR_01E1_START_PLAYING_MUSIC                                    :{BLACK}Porneste muzica
-STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC                              :{BLACK}Foloseste acest indicator pentru a regla volumul muzicii si al efectelor sonore
+STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC                              :{BLACK}Foloseste aceste indicatoare pentru a regla volumul muzicii si al efectelor sonore
 STR_01E3                                                        :{DKGREEN}{TINYFONT}--
 STR_01E4_0                                                      :{DKGREEN}{TINYFONT}0{COMMA}
 STR_01E5                                                        :{DKGREEN}{TINYFONT}{COMMA}
@@ -574,7 +576,7 @@
 STR_01F7_SELECT_CUSTOM_2_USER_DEFINED                           :{BLACK}Selecteazã programul personal 2
 STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1                          :{BLACK}Sterge programul curent (doar pentru cele personale)
 STR_01F9_SAVE_MUSIC_SETTINGS                                    :{BLACK}Salveaza setarile pentru muzica
-STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Click pe o melodie pentru a adãuga-o in programul personal curent
+STR_01FA_CLICK_ON_MUSIC_TRACK_TO                                :{BLACK}Click pe o melodie pentru a o adãuga in programul personal curent
 STR_CLICK_ON_TRACK_TO_REMOVE                                    :{BLACK}Apasa pe pista audio pentru a o elimina din programul actual (doar Custom1 sau Custom2)
 STR_01FB_TOGGLE_PROGRAM_SHUFFLE                                 :{BLACK}Comutator pentru amestecarea melodiilor (da/nu)
 STR_01FC_SHOW_MUSIC_TRACK_SELECTION                             :{BLACK}Afiseaza fereastra pentru selectia melodiilor
@@ -617,7 +619,7 @@
 STR_021C_OF_ACHIEVES_STATUS                                     :{WHITE}{BIGFONT}{PLAYERNAME} al {COMPANY} dobandeste titlul de '{STRING}'!
 STR_021F                                                        :{BLUE}{COMMA}
 STR_0221_OPENTTD                                                :{YELLOW}OpenTTD
-STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Editor scenarii
+STR_0222_SCENARIO_EDITOR                                        :{YELLOW}Editor de scenarii
 STR_0223_LAND_GENERATION                                        :{WHITE}Generator suprafatã uscat
 STR_0224                                                        :{BLACK}{UPARROW}
 STR_0225                                                        :{BLACK}{DOWNARROW}
@@ -631,180 +633,180 @@
 STR_022E_LANDSCAPE_GENERATION                                   :{BLACK}Generare peisaj
 STR_022F_TOWN_GENERATION                                        :{BLACK}Generare oras
 STR_0230_INDUSTRY_GENERATION                                    :{BLACK}Generare industrii
-STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Constructii rutiere
+STR_0231_ROAD_CONSTRUCTION                                      :{BLACK}Construcţii rutiere
 STR_0233_TOWN_GENERATION                                        :{WHITE}Generare oras
 STR_0234_NEW_TOWN                                               :{BLACK}Oras nou
 STR_0235_CONSTRUCT_NEW_TOWN                                     :{BLACK}Construieste un oras nou
 STR_0236_CAN_T_BUILD_TOWN_HERE                                  :{WHITE}Nu pot construi un oras aici...
 STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}...prea aproape de marginea hãrtii
 STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN                              :{WHITE}...prea aproape de alt oras
-STR_0239_SITE_UNSUITABLE                                        :{WHITE}...locatie nepotrivitã
-STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...prea multe orase
+STR_0239_SITE_UNSUITABLE                                        :{WHITE}...locaţie nepotrivită
+STR_023A_TOO_MANY_TOWNS                                         :{WHITE}...prea multe oraÅŸe
 STR_CANNOT_GENERATE_TOWN                                        :{WHITE}Nu pot construi nici un oras
 STR_NO_SPACE_FOR_TOWN                                           :{WHITE}...nu mai este loc pe hartã
-STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Mãreste dimensiunile orasului
+STR_023B_INCREASE_SIZE_OF_TOWN                                  :{BLACK}Măreşte dimensiunile oraşului
 STR_023C_EXPAND                                                 :{BLACK}Extinde
-STR_023D_RANDOM_TOWN                                            :{BLACK}Oras aleator
-STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION                          :{BLACK}Construieste un oras într-o locatie aleatoare
+STR_023D_RANDOM_TOWN                                            :{BLACK}OraÅŸ aleator
+STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION                          :{BLACK}Construieşte un oraş într-o locaţie aleatoare
 STR_023F_INDUSTRY_GENERATION                                    :{WHITE}Generare industrii
-STR_0240_COAL_MINE                                              :{BLACK}Minã de cãrbune
-STR_0241_POWER_STATION                                          :{BLACK}Termocentralã
-STR_0242_SAWMILL                                                :{BLACK}Exploatatie forestierã
-STR_0243_FOREST                                                 :{BLACK}Pãdure
-STR_0244_OIL_REFINERY                                           :{BLACK}Rafinãrie
-STR_0245_OIL_RIG                                                :{BLACK}Platformã petrolierã
-STR_0246_FACTORY                                                :{BLACK}Fabricã de conserve
-STR_0247_STEEL_MILL                                             :{BLACK}Otelãrie
-STR_0248_FARM                                                   :{BLACK}Fermã
-STR_0249_IRON_ORE_MINE                                          :{BLACK}Minã de fier
-STR_024A_OIL_WELLS                                              :{BLACK}Sonde
-STR_024B_BANK                                                   :{BLACK}Bancã
-STR_024C_PAPER_MILL                                             :{BLACK}Fabricã de hârtie
+STR_0240_COAL_MINE                                              :{BLACK}Mină de cărbune
+STR_0241_POWER_STATION                                          :{BLACK}Termocentrală
+STR_0242_SAWMILL                                                :{BLACK}Exploataţie forestieră
+STR_0243_FOREST                                                 :{BLACK}Pădure
+STR_0244_OIL_REFINERY                                           :{BLACK}Rafinărie
+STR_0245_OIL_RIG                                                :{BLACK}Platformă petrolieră
+STR_0246_FACTORY                                                :{BLACK}Fabrică de conserve
+STR_0247_STEEL_MILL                                             :{BLACK}Oţelărie
+STR_0248_FARM                                                   :{BLACK}Fermă
+STR_0249_IRON_ORE_MINE                                          :{BLACK}Mină de fier
+STR_024A_OIL_WELLS                                              :{BLACK}Sonde de petrol
+STR_024B_BANK                                                   :{BLACK}Bancă
+STR_024C_PAPER_MILL                                             :{BLACK}Fabrică de hârtie
 STR_024D_FOOD_PROCESSING_PLANT                                  :{BLACK}Combinat alimentar
 STR_024E_PRINTING_WORKS                                         :{BLACK}Tipografie
-STR_024F_GOLD_MINE                                              :{BLACK}Minã de aur
-STR_0250_LUMBER_MILL                                            :{BLACK}Fabricã de cherestea
-STR_0251_FRUIT_PLANTATION                                       :{BLACK}Livadã
-STR_0252_RUBBER_PLANTATION                                      :{BLACK}Plantatie de cauciuc
-STR_0253_WATER_SUPPLY                                           :{BLACK}Rezervor de apã
-STR_0254_WATER_TOWER                                            :{BLACK}Turn de apã
-STR_0255_DIAMOND_MINE                                           :{BLACK}Minã de diamante
-STR_0256_COPPER_ORE_MINE                                        :{BLACK}Minã de cupru
-STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Pãdure de vatã de zahãr
-STR_0258_CANDY_FACTORY                                          :{BLACK}Fabricã de bomboane
-STR_0259_BATTERY_FARM                                           :{BLACK}Fermã de baterii
+STR_024F_GOLD_MINE                                              :{BLACK}Mină de aur
+STR_0250_LUMBER_MILL                                            :{BLACK}Fabrică de cherestea
+STR_0251_FRUIT_PLANTATION                                       :{BLACK}Livadă
+STR_0252_RUBBER_PLANTATION                                      :{BLACK}Plantaţie de cauciuc
+STR_0253_WATER_SUPPLY                                           :{BLACK}Rezervor de apă
+STR_0254_WATER_TOWER                                            :{BLACK}Turn de apă
+STR_0255_DIAMOND_MINE                                           :{BLACK}Mină de diamante
+STR_0256_COPPER_ORE_MINE                                        :{BLACK}Mină de cupru
+STR_0257_COTTON_CANDY_FOREST                                    :{BLACK}Pădure de vată de zahăr
+STR_0258_CANDY_FACTORY                                          :{BLACK}Fabrică de bomboane
+STR_0259_BATTERY_FARM                                           :{BLACK}Fermă de baterii
 STR_025A_COLA_WELLS                                             :{BLACK}Fântâni de cola
-STR_025B_TOY_SHOP                                               :{BLACK}Magazin de jucãrii
-STR_025C_TOY_FACTORY                                            :{BLACK}Fabricã de jucãrii
+STR_025B_TOY_SHOP                                               :{BLACK}Magazin de jucării
+STR_025C_TOY_FACTORY                                            :{BLACK}Fabrică de jucării
 STR_025D_PLASTIC_FOUNTAINS                                      :{BLACK}Fântâni de plastic
-STR_025E_FIZZY_DRINK_FACTORY                                    :{BLACK}Fabricã de sucuri
-STR_025F_BUBBLE_GENERATOR                                       :{BLACK}Generator de balonase
-STR_0260_TOFFEE_QUARRY                                          :{BLACK}Carierã de caramel
-STR_0261_SUGAR_MINE                                             :{BLACK}Minã de zahãr
-STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}Construieste minã de cupru
-STR_0263_CONSTRUCT_POWER_STATION                                :{BLACK}Construieste termocentralã
-STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Înfiinteazã exploatatie forestierã
-STR_0265_PLANT_FOREST                                           :{BLACK}Planteazã pãdure
-STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Construieste rafinãrie
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Construieste platformã petrolierã (doar în apropierea marginilor hãrtii)
-STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Construieste fabricã de conserve
-STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Construieste otelãrie
-STR_026A_CONSTRUCT_FARM                                         :{BLACK}Înfiinteazã fermã
-STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Construieste minã de fier
-STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}Construieste sonde
-STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Construieste bancã (doar în orasele cu o populatie de cel putin 1200 locuitori)
-STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Construieste fabricã de hârtie
-STR_026F_CONSTRUCT_FOOD_PROCESSING                              :{BLACK}Construieste combinat alimentar
-STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}Construieste tipografie
-STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Construieste minã de aur
-STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Construieste bancã (doar în orase)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Construieste fabricã de cherestea (taie arborii din jur pentru a produce lemne)
-STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Planteazã livadã
-STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Înfiinteazã plantatie de cauciuc
-STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Construieste rezervor de apã
-STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Construieste turn de apã (doar în orase)
-STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Construieste minã de diamante
-STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Construieste minã de cupru
-STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Planteazã pãdure de vatã de zahãr
-STR_027B_CONSTRUCT_CANDY_FACTORY                                :{BLACK}Construieste fabricã de bomboane
-STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Înfiinteazã fermã de baterii
-STR_027D_CONSTRUCT_COLA_WELLS                                   :{BLACK}Construieste fântâni de cola
-STR_027E_CONSTRUCT_TOY_SHOP                                     :{BLACK}Construieste magazin de jucãrii
-STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}Construieste fabricã de jucãrii
-STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS                            :{BLACK}Construieste fântþni de plastic
-STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY                          :{BLACK}Construieste fabricã de sucuri
-STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}Construieste generator de balonase
-STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Construieste carierã de caramel
-STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Construieste minã de zahãr
+STR_025E_FIZZY_DRINK_FACTORY                                    :{BLACK}Fabrică de sucuri
+STR_025F_BUBBLE_GENERATOR                                       :{BLACK}Generator de balonaÅŸe
+STR_0260_TOFFEE_QUARRY                                          :{BLACK}Carieră de caramel
+STR_0261_SUGAR_MINE                                             :{BLACK}Mină de zahăr
+STR_0262_CONSTRUCT_COAL_MINE                                    :{BLACK}Construieşte mină de cupru
+STR_0263_CONSTRUCT_POWER_STATION                                :{BLACK}Construieşte termocentrală
+STR_0264_CONSTRUCT_SAWMILL                                      :{BLACK}Înfiinţează exploataţie forestieră
+STR_0265_PLANT_FOREST                                           :{BLACK}Plantează pădure
+STR_0266_CONSTRUCT_OIL_REFINERY                                 :{BLACK}Construieşte rafinărie
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY                             :{BLACK}Construieşte platformă petrolieră (doar în apropierea marginilor hărţii)
+STR_0268_CONSTRUCT_FACTORY                                      :{BLACK}Construieşte fabrică de conserve
+STR_0269_CONSTRUCT_STEEL_MILL                                   :{BLACK}Construieşte oţelărie
+STR_026A_CONSTRUCT_FARM                                         :{BLACK}Înfiinţează fermă
+STR_026B_CONSTRUCT_IRON_ORE_MINE                                :{BLACK}Construieşte mină de fier
+STR_026C_CONSTRUCT_OIL_WELLS                                    :{BLACK}ConstruieÅŸte sonde de petrol
+STR_026D_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Construieşte bancă (doar în oraşele cu o populaţie de cel puţin 1200 locuitori)
+STR_026E_CONSTRUCT_PAPER_MILL                                   :{BLACK}Construieşte fabrică de hârtie
+STR_026F_CONSTRUCT_FOOD_PROCESSING                              :{BLACK}ConstruieÅŸte combinat alimentar
+STR_0270_CONSTRUCT_PRINTING_WORKS                               :{BLACK}ConstruieÅŸte tipografie
+STR_0271_CONSTRUCT_GOLD_MINE                                    :{BLACK}Construieşte mină de aur
+STR_0272_CONSTRUCT_BANK_CAN_ONLY                                :{BLACK}Construieşte bancă (doar în oraşe)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO                               :{BLACK}Construieşte fabrică de cherestea (taie arborii din jur pentru a produce lemne)
+STR_0274_PLANT_FRUIT_PLANTATION                                 :{BLACK}Plantează livadă
+STR_0275_PLANT_RUBBER_PLANTATION                                :{BLACK}Înfiinţează plantaţie de cauciuc
+STR_0276_CONSTRUCT_WATER_SUPPLY                                 :{BLACK}Construieşte rezervor de apă
+STR_0277_CONSTRUCT_WATER_TOWER_CAN                              :{BLACK}Construieşte turn de apă (doar în oraşe)
+STR_0278_CONSTRUCT_DIAMOND_MINE                                 :{BLACK}Construieşte mină de diamante
+STR_0279_CONSTRUCT_COPPER_ORE_MINE                              :{BLACK}Construieşte mină de cupru
+STR_027A_PLANT_COTTON_CANDY_FOREST                              :{BLACK}Plantează pădure de vată de zahăr
+STR_027B_CONSTRUCT_CANDY_FACTORY                                :{BLACK}Construieşte fabrică de bomboane
+STR_027C_CONSTRUCT_BATTERY_FARM                                 :{BLACK}Înfiinţează fermă de baterii
+STR_027D_CONSTRUCT_COLA_WELLS                                   :{BLACK}Construieşte fântâni de cola
+STR_027E_CONSTRUCT_TOY_SHOP                                     :{BLACK}Construieşte magazin de jucării
+STR_027F_CONSTRUCT_TOY_FACTORY                                  :{BLACK}Construieşte fabrică de jucării
+STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS                            :{BLACK}Construieşte fântâni de plastic
+STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY                          :{BLACK}Construieşte fabrică de sucuri
+STR_0282_CONSTRUCT_BUBBLE_GENERATOR                             :{BLACK}ConstruieÅŸte generator de balonaÅŸe
+STR_0283_CONSTRUCT_TOFFEE_QUARRY                                :{BLACK}Construieşte carieră de caramel
+STR_0284_CONSTRUCT_SUGAR_MINE                                   :{BLACK}Construieşte mină de zahăr
 STR_0285_CAN_T_BUILD_HERE                                       :{WHITE}Nu pot construi {STRING} aici...
-STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...mai intâi trebuie creat un oras
-STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...un singur obiectiv de acest tip este permis intr-un oras
-STR_0288_PLANT_TREES                                            :{BLACK}Planteazã arbori
-STR_0289_PLACE_SIGN                                             :{BLACK}Plaseazã semn
+STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...mai întâi trebuie creat un oraş
+STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...un singur obiectiv de acest tip este permis într-un oraş
+STR_0288_PLANT_TREES                                            :{BLACK}Plantează arbori
+STR_0289_PLACE_SIGN                                             :{BLACK}Plasează semn
 STR_028A_RANDOM_TREES                                           :{BLACK}Arbori aleatori
-STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Planteazã aleator arbori pe uscat
-STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Plaseaza formatiuni pietroase
-STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Plaseazã far
-STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Plaseazã transmitãtor
-STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Defineste suprafata de desert.{}Apasã si mentine apasat CTRL pentru a o sterge
+STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Plantează aleator arbori pe uscat
+STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Plasează formaţiuni pietroase
+STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Plasează far
+STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Plasează transmiţător
+STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Defineşte suprafaţa de deşert.{}Apasă şi menţine apăsat CTRL pentru a o şterge
 STR_CREATE_LAKE                                                 :{BLACK}Defineste zona apei.{}Creeaza un canal, mai putin cand CTRL este apasat la nivelul marii, cand va inunda, in loc, imprejurimile
-STR_0290_DELETE                                                 :{BLACK}Sterge
-STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Sterge acest oras
-STR_0292_SAVE_SCENARIO                                          :Salveazã scenariul
-STR_0293_LOAD_SCENARIO                                          :Încarcã scenariu
+STR_0290_DELETE                                                 :{BLACK}Åžterge
+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_0294_QUIT_EDITOR                                            :Iesire din editor
+STR_0294_QUIT_EDITOR                                            :IeÅŸire din editor
 STR_0295                                                        :
-STR_0296_QUIT                                                   :Iesire din joc
-STR_0297_SAVE_SCENARIO_LOAD_SCENARIO                            :{BLACK}Salveazã/încarcã scenariu, abandoneazã editorul, iesire din joc
-STR_0298_LOAD_SCENARIO                                          :{WHITE}Încarcã scenariu
-STR_0299_SAVE_SCENARIO                                          :{WHITE}Salveazã scenariu
-STR_029A_PLAY_SCENARIO                                          :{BLACK}Joacã scenariu
+STR_0296_QUIT                                                   :IeÅŸire din joc
+STR_0297_SAVE_SCENARIO_LOAD_SCENARIO                            :{BLACK}Salvează/încarcă scenariu, abandonează editorul, ieşire din joc
+STR_0298_LOAD_SCENARIO                                          :{WHITE}Încarcă scenariu
+STR_0299_SAVE_SCENARIO                                          :{WHITE}Salvează scenariu
+STR_029A_PLAY_SCENARIO                                          :{BLACK}Joacă scenariu
 STR_PLAY_HEIGHTMAP                                              :{BLACK}Reda harta inaltimi
 STR_PLAY_HEIGHTMAP_HINT                                         :{BLACK}Porneste un nou joc, folosind o scara de inaltimi ca peisaj
 STR_QUIT_SCENARIO_QUERY                                         :{YELLOW}Esti sigur cã vrei sã renunti la acest scenariu?
-STR_029C_QUIT_EDITOR                                            :{WHITE}Iesire din editor
-STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...Se poate construi doar in orase cu populatia de cel putin 1200
-STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Schimbã data de start cu un an în urmã
-STR_029F_MOVE_THE_STARTING_DATE                                 :{BLACK}Schimbã data de start înainte cu un an
-STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...ambele capete ale podului trebuie sã se situeze pe uscat
+STR_029C_QUIT_EDITOR                                            :{WHITE}IeÅŸire din editor
+STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...Se poate construi doar în oraşe cu populaţia de cel puţin 1200
+STR_029E_MOVE_THE_STARTING_DATE                                 :{BLACK}Schimbă data de start cu un an în urmă
+STR_029F_MOVE_THE_STARTING_DATE                                 :{BLACK}Schimbă data de start înainte cu un an
+STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH                               :{WHITE}...ambele capete ale podului trebuie să se situeze pe uscat
 STR_02A1_SMALL                                                  :{BLACK}Mic
 STR_02A2_MEDIUM                                                 :{BLACK}Mediu
 STR_02A3_LARGE                                                  :{BLACK}Mare
 STR_SCENARIO_EDITOR_CITY                                        :{BLACK}Oras
-STR_02A4_SELECT_TOWN_SIZE                                       :{BLACK}Alege mãrimea orasului
-STR_02A5_TOWN_SIZE                                              :{YELLOW}Mãrime oras:
+STR_02A4_SELECT_TOWN_SIZE                                       :{BLACK}Alege mărimea oraşului
+STR_02A5_TOWN_SIZE                                              :{YELLOW}Mărime oraş:
 
 STR_02B6                                                        :{STRING}  -  {STRING}
-STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS                              :{BLACK}Re-afiseazã ultimul mesaj
+STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS                              :{BLACK}Re-afişează ultimul mesaj
 STR_OFF                                                         :Oprit
 STR_SUMMARY                                                     :Pe scurt
 STR_FULL                                                        :Pe larg
 STR_02BA                                                        :{SILVER}- -  {COMPANY}  - -
-STR_02BB_TOWN_DIRECTORY                                         :Lista oraselor (F5)
-STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Numele vehiculelor si modelelor
+STR_02BB_TOWN_DIRECTORY                                         :Lista oraÅŸelor (F5)
+STR_02BC_VEHICLE_DESIGN_NAMES                                   :{BLACK}Numele vehiculelor
 STR_02BD                                                        :{BLACK}{STRING}
 STR_02BE_DEFAULT                                                :Prestabilit
 STR_02BF_CUSTOM                                                 :Propriu
-STR_02C0_SAVE_CUSTOM_NAMES                                      :{BLACK}Salveaza numele proprii
-STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION                         :{BLACK}Selecteazã numele modelelor
-STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Salveazã pe disc numele personalizate de mãrci si modele
+STR_02C0_SAVE_CUSTOM_NAMES                                      :{BLACK}Salvează numele proprii
+STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION                         :{BLACK}Selectează numele modelelor
+STR_02C2_SAVE_CUSTOMIZED_VEHICLE                                :{BLACK}Salvează pe disc numele personalizate de mărci şi modele
 
 STR_CHECKMARK                                                   :{CHECKMARK}
 ############ range for menu starts
-STR_02C3_GAME_OPTIONS                                           :Optiunile jocului (F2)
-STR_02C5_DIFFICULTY_SETTINGS                                    :Setãri dificultate
+STR_02C3_GAME_OPTIONS                                           :Opţiunile jocului (F2)
+STR_02C5_DIFFICULTY_SETTINGS                                    :Setări dificultate
 STR_02C7_CONFIG_PATCHES                                         :Configurare patch
 STR_NEWGRF_SETTINGS                                             :Setari Newgrf
 STR_GAMEOPTMENU_0A                                              :
-STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Afiseazã numele oraselor
-STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Afiseazã numele statiilor
-STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Afiseazã semnele de pe hartã
+STR_02CA_TOWN_NAMES_DISPLAYED                                   :{SETX 12}Afişează numele oraşelor
+STR_02CC_STATION_NAMES_DISPLAYED                                :{SETX 12}Afişează numele staţiilor
+STR_02CE_SIGNS_DISPLAYED                                        :{SETX 12}Afişează semnele de pe hartă
 STR_WAYPOINTS_DISPLAYED2                                        :{SETX 12}Afisare puncte de tranzit
-STR_02D0_FULL_ANIMATION                                         :{SETX 12}Animatie completã
+STR_02D0_FULL_ANIMATION                                         :{SETX 12}Animaţie completă
 STR_02D2_FULL_DETAIL                                            :{SETX 12}Detalii grafice complete
 STR_02D4_TRANSPARENT_BUILDINGS                                  :{SETX 12}Peisaj transparent (X)
 STR_TRANSPARENT_SIGNS                                           :{SETX 12}Semne statii, transparente
 ############ range ends here
 
 ############ range for menu starts
-STR_02D5_LAND_BLOCK_INFO                                        :Informatii despre teren
+STR_02D5_LAND_BLOCK_INFO                                        :Informaţii despre teren
 STR_02D6                                                        :
 STR_CONSOLE_SETTING                                             :Consola On/Off
-STR_02D7_SCREENSHOT_CTRL_S                                      :Screenshot (Ctrl-S)
-STR_02D8_GIANT_SCREENSHOT_CTRL_G                                :Screenshot gigant(Ctrl-G)
+STR_02D7_SCREENSHOT_CTRL_S                                      :Capturează ecranul (Ctrl-S)
+STR_02D8_GIANT_SCREENSHOT_CTRL_G                                :Capturează toată harta (Ctrl-G)
 STR_02D9_ABOUT_OPENTTD                                          :Despre 'OpenTTD'
 ############ range ends here
 
 STR_02DB_OFF                                                    :{BLACK}inactiv
 STR_02DA_ON                                                     :{BLACK}activ
-STR_02DC_DISPLAY_SUBSIDIES                                      :{BLACK}Afiseazã subventiile (F6)
-STR_02DD_SUBSIDIES                                              :Subventii (F6)
+STR_02DC_DISPLAY_SUBSIDIES                                      :{BLACK}Afişează subvenţiile (F6)
+STR_02DD_SUBSIDIES                                              :Subvenţii (F6)
 STR_02DE_MAP_OF_WORLD                                           :Harta lumii (F4)
 STR_EXTRA_VIEW_PORT                                             :Extra ecran
 STR_SIGN_LIST                                                   :Lista de semne
 STR_TRANSPARENCY_OPTIONS                                        :Optiuni transparenta
-STR_02DF_TOWN_DIRECTORY                                         :Lista oraselor
+STR_02DF_TOWN_DIRECTORY                                         :Lista oraÅŸelor
 STR_TOWN_POPULATION                                             :{BLACK}Populatia totala: {COMMA}
 STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Ecran{COMMA}
 STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}Copiaza pe ecranul principal
@@ -812,66 +814,66 @@
 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Importa din ecran
 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Importa locatia acestui ecran in ecranul principal
 
-STR_02E0_CURRENCY_UNITS                                         :{BLACK}Unitãti monetare
+STR_02E0_CURRENCY_UNITS                                         :{BLACK}Unităţi monetare
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
-STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Alege unitatea monetarã
+STR_02E2_CURRENCY_UNITS_SELECTION                               :{BLACK}Alege unitatea monetară
 STR_MEASURING_UNITS                                             :{BLACK}Unitãti de mãsurã
 STR_02E4                                                        :{BLACK}{SKIP}{SKIP}{STRING}
 STR_MEASURING_UNITS_SELECTION                                   :{BLACK}Selectie unitãti de mãsurã
-STR_02E6_ROAD_VEHICLES                                          :{BLACK}Autovehiculele circulã..
+STR_02E6_ROAD_VEHICLES                                          :{BLACK}Autovehiculele circulă...
 STR_02E7                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Alege partea strãzii pe care se circulã
-STR_02E9_DRIVE_ON_LEFT                                          :Pe partea stângã
-STR_02EA_DRIVE_ON_RIGHT                                         :Pe partea dreaptã
-STR_02EB_TOWN_NAMES                                             :{BLACK}Numele oraselor
+STR_02E8_SELECT_SIDE_OF_ROAD_FOR                                :{BLACK}Alege partea străzii pe care se circulă
+STR_02E9_DRIVE_ON_LEFT                                          :Pe partea stângă
+STR_02EA_DRIVE_ON_RIGHT                                         :Pe partea dreaptă
+STR_02EB_TOWN_NAMES                                             :{BLACK}Numele oraÅŸelor
 STR_02EC                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}Alege nationalitatea numelor oraselor
+STR_02ED_SELECT_STYLE_OF_TOWN_NAMES                             :{BLACK}Alege naţionalitatea numelor oraşelor
 
-STR_02F4_AUTOSAVE                                               :{BLACK}Salvare automatã
+STR_02F4_AUTOSAVE                                               :{BLACK}Salvare automată
 STR_02F5                                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Alege intervalul scurs între salvãrile automate
-STR_02F7_OFF                                                    :Dezactivatã
+STR_02F6_SELECT_INTERVAL_BETWEEN                                :{BLACK}Alege intervalul de timp dintre salvările automate
+STR_02F7_OFF                                                    :Dezactivată
 STR_02F8_EVERY_3_MONTHS                                         :La fiecare 3 luni
 STR_02F9_EVERY_6_MONTHS                                         :La fiecare 6 luni
 STR_02FA_EVERY_12_MONTHS                                        :La fiecare 12 luni
 STR_02FB_START_A_NEW_GAME                                       :{BLACK}ÃŽncepere joc nou
-STR_02FC_LOAD_A_SAVED_GAME                                      :{BLACK}Incarca un joc salvat
-STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Creeazã un joc/scenariu propriu
-STR_02FF_SELECT_SINGLE_PLAYER_GAME                              :{BLACK}Alege un joc cu un singur jucãtor
-STR_0300_SELECT_MULTIPLAYER_GAME                                :{BLACK}Alege un joc multiplayer cu 2-8 jucatori
-STR_0301_DISPLAY_GAME_OPTIONS                                   :{BLACK}Afiseazã optiunile jocului
-STR_0302_DISPLAY_DIFFICULTY_OPTIONS                             :{BLACK}Afiseaza optiunile pentru alegerea dificultãtii
+STR_02FC_LOAD_A_SAVED_GAME                                      :{BLACK}Încarcă un joc salvat
+STR_02FE_CREATE_A_CUSTOMIZED_GAME                               :{BLACK}Creează un joc/scenariu propriu
+STR_02FF_SELECT_SINGLE_PLAYER_GAME                              :{BLACK}Alege un joc cu un singur jucător
+STR_0300_SELECT_MULTIPLAYER_GAME                                :{BLACK}Alege un joc multiplayer cu 2-8 jucători
+STR_0301_DISPLAY_GAME_OPTIONS                                   :{BLACK}Afişează opţiunile jocului
+STR_0302_DISPLAY_DIFFICULTY_OPTIONS                             :{BLACK}Afişează opţiunile pentru alegerea dificultăţii
 STR_0303_START_A_NEW_GAME_USING                                 :{BLACK}ÃŽnceperea unui joc nou folosind un scenariu deja existent
-STR_0304_QUIT                                                   :{BLACK}Iesire
-STR_0305_QUIT_OPENTTD                                           :{BLACK}Iesi din 'OpenTTD'
+STR_0304_QUIT                                                   :{BLACK}IeÅŸire
+STR_0305_QUIT_OPENTTD                                           :{BLACK}IeÅŸi din 'OpenTTD'
 STR_0307_OPENTTD                                                :{WHITE}OpenTTD {REV}
-STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...se poate construi doar în orase
-STR_030E_SELECT_TEMPERATE_LANDSCAPE                             :{BLACK}Alege peisajul 'climã temperatã'
-STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Alege peisajul 'climã sub-arcticã'
-STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Alege peisajul 'climã sub-tropicalã'
-STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Alege peisajul 'tara jucãriilor'
-STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Finanteazã constructia de industrii noi
+STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...se poate construi doar în oraşe
+STR_030E_SELECT_TEMPERATE_LANDSCAPE                             :{BLACK}Alege peisajul 'climă temperată'
+STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE                            :{BLACK}Alege peisajul 'climă sub-arctică'
+STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE                          :{BLACK}Alege peisajul 'climă sub-tropicală'
+STR_0311_SELECT_TOYLAND_LANDSCAPE                               :{BLACK}Alege peisajul 'ţara jucăriilor'
+STR_0312_FUND_CONSTRUCTION_OF_NEW                               :{BLACK}Finanţează construcţia de industrii noi
 
 ############ range for menu starts
 STR_INDUSTRY_DIR                                                :Lista industriilor
 STR_0313_FUND_NEW_INDUSTRY                                      :Obiectiv industrial nou
 ############ range ends here
 
-STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Construieste un nou obiectiv ind.
+STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}ConstruieÅŸte un nou obiectiv industrial
 STR_JUST_STRING                                                 :{STRING}
-STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...se poate construi doar in orase
+STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...se poate construi doar în oraşe
 STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST                        :{WHITE}...se poate construi doar in padurile ecuatoriale
-STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT                            :{WHITE}...se poate construi doar in zonele de desert
-STR_0319_PAUSED                                                 :{YELLOW}* *  PAUZÃ  (F1) *  *
+STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT                            :{WHITE}...se poate construi doar în zonele de deşert
+STR_0319_PAUSED                                                 :{YELLOW}* *  PAUZÄ‚  (F1) *  *
 
-STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Screenshot salvat cu succes pe disc în fisierul '{STRING}'
-STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Screenshot nerealizat!
+STR_031B_SCREENSHOT_SUCCESSFULLY                                :{WHITE}Imagine salvată cu succes pe disc în fişierul '{STRING}'
+STR_031C_SCREENSHOT_FAILED                                      :{WHITE}Imaginea nu a putut fi capturată!
 
-STR_0329_PURCHASE_LAND_FOR_FUTURE                               :{BLACK}Cumpãrã teren pentru folosire ulterioarã
-STR_032F_AUTOSAVE                                               :{RED}SALVARE AUTOMATÃ
+STR_0329_PURCHASE_LAND_FOR_FUTURE                               :{BLACK}Cumpără teren pentru folosire ulterioară
+STR_032F_AUTOSAVE                                               :{RED}SALVARE AUTOMATÄ‚
 STR_SAVING_GAME                                                 :{RED}*  *  SALVARE JOC *  *
 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_0330_SELECT_EZY_STREET_STYLE                                :{BLACK}Selectează programul muzical 'Ezy Street'
 
 STR_0335_6                                                      :{BLACK}6
 STR_0336_7                                                      :{BLACK}7
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Nou pathfinding global(NPF, dezactiveaza NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Multiplicator greutate pt marfar pt simularea trenurilor grele: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Permite semafoare in intersectiile drumurilor din proprietatea orasului: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Permite construirea de statii adiacente: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Permite întotdeauna aeroporturi mici: {ORANGE}{STRING}
 
@@ -1157,7 +1160,7 @@
 STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Multiplicator initial dimensiune oras: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Interfatã
-STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Constructie
+STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Construcţie
 STR_CONFIG_PATCHES_VEHICLES                                     :{BLACK}Vehicule
 STR_CONFIG_PATCHES_STATIONS                                     :{BLACK}Statii
 STR_CONFIG_PATCHES_ECONOMY                                      :{BLACK}Economie
@@ -1195,7 +1198,7 @@
 STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Merge spre {WAYPOINT}, {VELOCITY}
 
 STR_GO_TO_WAYPOINT                                              :Mergi via {WAYPOINT}
-STR_GO_NON_STOP_TO_WAYPOINT                                     :Mergi non-stop via {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Mergi fără oprire via {WAYPOINT}
 
 STR_WAYPOINTNAME_CITY                                           :Halta {TOWN}
 STR_WAYPOINTNAME_CITY_SERIAL                                    :Halta {TOWN} #{COMMA}
@@ -1528,189 +1531,204 @@
 ##id 0x0800
 STR_0800_COST                                                   :{TINYFONT}{RED}Cheltuieli: {CURRENCY}
 STR_0801_COST                                                   :{RED}Cheltuieli: {CURRENCY}
-STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Încasãri: {CURRENCY}
-STR_0803_INCOME                                                 :{GREEN}Încasãri: {CURRENCY}
+STR_0802_INCOME                                                 :{TINYFONT}{GREEN}Venituri: {CURRENCY}
+STR_0803_INCOME                                                 :{GREEN}Venituri: {CURRENCY}
 STR_FEEDER_TINY                                                 :{TINYFONT}{YELLOW}Transferã: {CURRENCY}
 STR_FEEDER                                                      :{YELLOW}Transferã: {CURRENCY}
 STR_0805_ESTIMATED_COST                                         :{WHITE}Cost estimat: {CURRENCY}
 STR_0807_ESTIMATED_INCOME                                       :{WHITE}Venit estimat: {CURRENCY}
-STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}Nu pot înãlta terenul...
-STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}Nu pot sãpa terenul...
+STR_0808_CAN_T_RAISE_LAND_HERE                                  :{WHITE}Nu pot înălţa terenul...
+STR_0809_CAN_T_LOWER_LAND_HERE                                  :{WHITE}Nu pot coborî terenul...
 STR_080A_ROCKS                                                  :Stânci
 STR_080B_ROUGH_LAND                                             :Teren pietros
 STR_080C_BARE_LAND                                              :Teren viran
-STR_080D_GRASS                                                  :Verdeatã
+STR_080D_GRASS                                                  :Verdeaţă
 STR_080E_FIELDS                                                 :Teren agricol
-STR_080F_SNOW_COVERED_LAND                                      :Zãpadã
-STR_0810_DESERT                                                 :Desert
+STR_080F_SNOW_COVERED_LAND                                      :Teren înzăpezit
+STR_0810_DESERT                                                 :DeÅŸert
 
 ##id 0x1000
-STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION                         :{WHITE}Terenul are o înclinatie nepotrivitã
-STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Combinatie de linii imposibilã
-STR_1002_EXCAVATION_WOULD_DAMAGE                                :{WHITE}Sãpãturile ar afecta tunelul
-STR_1003_ALREADY_AT_SEA_LEVEL                                   :{WHITE}Te afli deja la nivelul mãrii
+STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION                         :{WHITE}Terenul are o înclinaţie nepotrivită
+STR_1001_IMPOSSIBLE_TRACK_COMBINATION                           :{WHITE}Combinaţie de linii imposibilă
+STR_1002_EXCAVATION_WOULD_DAMAGE                                :{WHITE}Săpăturile ar afecta tunelul
+STR_1003_ALREADY_AT_SEA_LEVEL                                   :{WHITE}Deja la nivelul mării
 STR_1004_TOO_HIGH                                               :{WHITE}Prea înalt
-STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Cale feratã nepotrivitã
+STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}Cale ferată nepotrivită
 STR_1007_ALREADY_BUILT                                          :{WHITE}...deja construit
-STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Mai intâi trebuie demolatã calea feratã
-STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Constructii feroviare
-STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Constructie Cale Feratã Electrificatã
-STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Constructii monorail
-STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Constructii maglev
-STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Alege podul de cale feratã
-STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Nu pot construi un depou aici...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Nu pot construi o garã aici...
+STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}Mai întâi trebuie înlăturată calea ferată
+STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}Construcţii feroviare
+STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}Construcţie Cale Ferată Electrificată
+STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}Construcţii monoşină
+STR_100C_MAGLEV_CONSTRUCTION                                    :{WHITE}Construcţii maglev
+STR_100D_SELECT_RAIL_BRIDGE                                     :{WHITE}Alege podul de cale ferată
+STR_100E_CAN_T_BUILD_TRAIN_DEPOT                                :{WHITE}Nu pot construi un depou feroviar aici...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION                           :{WHITE}Nu pot construi o gară aici...
 STR_1010_CAN_T_BUILD_SIGNALS_HERE                               :{WHITE}Nu pot plasa semnale aici...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Nu pot construi cale feratã aici...
-STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Nu pot demola calea feratã...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Nu pot demola semnalele de aici...
-STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Orientarea depoului
-STR_1015_RAILROAD_CONSTRUCTION                                  :Constructii feroviare
-STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Constructie cale feratã electrificatã
-STR_1016_MONORAIL_CONSTRUCTION                                  :Constructii monorail
-STR_1017_MAGLEV_CONSTRUCTION                                    :Constructii maglev
-STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Construieste cale feratã
-STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Construieste un depou feroviar (pentru construire/service trenuri)
-STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Construieste garã
-STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Plaseazã semnale feroviare
-STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Construieste pod de cale feratã
-STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}Construieste tunel feroviar
-STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Comutator pentru constructie/demolare cãi ferate si semnale
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK                             :{WHITE}Nu pot construi cale ferată aici...
+STR_1012_CAN_T_REMOVE_RAILROAD_TRACK                            :{WHITE}Nu pot înlătura calea ferată...
+STR_1013_CAN_T_REMOVE_SIGNALS_FROM                              :{WHITE}Nu pot înlătura semnalele de aici...
+STR_1014_TRAIN_DEPOT_ORIENTATION                                :{WHITE}Orientarea depoului feroviar
+STR_1015_RAILROAD_CONSTRUCTION                                  :Construcţii feroviare
+STR_TOOLB_ELRAIL_CONSTRUCTION                                   :Construcţie cale ferată electrificată
+STR_1016_MONORAIL_CONSTRUCTION                                  :Construcţii monoşină
+STR_1017_MAGLEV_CONSTRUCTION                                    :Construcţii maglev
+STR_1018_BUILD_RAILROAD_TRACK                                   :{BLACK}Construieşte cale ferată
+STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING                         :{BLACK}Construieşte un depou feroviar (pentru construire şi întreţinere de trenuri)
+STR_101A_BUILD_RAILROAD_STATION                                 :{BLACK}Construieşte gară
+STR_101B_BUILD_RAILROAD_SIGNALS                                 :{BLACK}Plasează semnale feroviare
+STR_101C_BUILD_RAILROAD_BRIDGE                                  :{BLACK}Construieşte pod de cale ferată
+STR_101D_BUILD_RAILROAD_TUNNEL                                  :{BLACK}ConstruieÅŸte tunel feroviar
+STR_101E_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Comutator pentru construcţie/înlăturare căi ferate şi semnale
 STR_101F_BRIDGE_SELECTION_CLICK                                 :{BLACK}Alegere pod - clic pe podul selectat pentru a-l construi
 STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO                       :{BLACK}Alege orientarea depoului
-STR_1021_RAILROAD_TRACK                                         :Cale feratã
-STR_1023_RAILROAD_TRAIN_DEPOT                                   :Depou de cale feratã
-STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...terenul se aflã in posesia altei companii
+STR_1021_RAILROAD_TRACK                                         :Cale ferată
+STR_1023_RAILROAD_TRAIN_DEPOT                                   :Depou de cale ferată
+STR_1024_AREA_IS_OWNED_BY_ANOTHER                               :{WHITE}...terenul se află în proprietatea altei companii
 STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS                          :Cale feratã cu semnale normale
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Cale feratã cu pre-semnalizare
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Cale feratã cu semnale de iesire
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Cale feratã cu semnale combinate
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Trebuie mai intai sa demolati gara
 
 
 
 ##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Mai întâi trebuie demolatã soseaua
+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}Constructii rutiere
+STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Construcţii rutiere
+STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}Construcţie Tramvai
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Alege pod rutier
-STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}Nu pot construi sosea aici...
-STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Nu pot demola soseaua...
+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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientarea autobazei
-STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Nu pot construi autobazã aici...
-STR_1808_CAN_T_BUILD_BUS_STATION                                :{WHITE}Nu pot construi statie de autobuz...
-STR_1809_CAN_T_BUILD_TRUCK_STATION                              :{WHITE}Nu pot construi platformã pentru camioane...
-STR_180A_ROAD_CONSTRUCTION                                      :Constructii rutiere
-STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construieste sectiune de sosea
-STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construieste o autobazã (pentru construire/service autovehicule)
-STR_180D_BUILD_BUS_STATION                                      :{BLACK}Plaseazã statie de autobuz
-STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construieste platformã pentru camioane
-STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Construieste pod rutier
-STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Construieste tunel rutier
-STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Comutator pentru constructie/demolare sosele
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Construcţii rutiere
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Construcţie tramvai
+STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Construieşte secţiune de şosea
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Construcieşte şină de tramvai
+STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Construieşte o autobază (pentru construire şi întreţinere de autovehicule)
+STR_180D_BUILD_BUS_STATION                                      :{BLACK}Plasează staţie de autobuz
+STR_180E_BUILD_TRUCK_LOADING_BAY                                :{BLACK}Construieşte platformă pentru camioane
+STR_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}ConstruieÅŸte pod rutier
+STR_180F_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_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Comutator pentru construcţie/înlăturare şosele
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Alege orientarea autobazei
-STR_1814_ROAD                                                   :Stradã
-STR_1815_ROAD_WITH_STREETLIGHTS                                 :Stradã iluminatã
-STR_1816_TREE_LINED_ROAD                                        :Stradã cu copaci pe margine
-STR_1817_ROAD_VEHICLE_DEPOT                                     :Autobazã
-STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Traversare la nivel cu calea feratã
+STR_1813_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
+STR_1817_ROAD_VEHICLE_DEPOT                                     :Autobază
+STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Trecere la nivel cu calea ferată
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Nu pot elimina statia de autobus...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Nu pot elimina statia de camioane...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Nu pot înlătura staţia de tramvai...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Nu pot înlătura staţia de tramvai...
 
 ##id 0x2000
-STR_2000_TOWNS                                                  :{WHITE}Orase
+STR_2000_TOWNS                                                  :{WHITE}OraÅŸe
 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}{STRING}
-STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Mai întâi trebuie sã demolezi clãdirea
+STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Mai întâi trebuie demolată clădirea
 STR_2005                                                        :{WHITE}{TOWN}
-STR_2006_POPULATION                                             :{BLACK}Populatia: {ORANGE}{COMMA}{BLACK}  Locuinte: {ORANGE}{COMMA}
-STR_2007_RENAME_TOWN                                            :Redenumire
-STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Nu pot redenumi orasul...
-STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Autoritãtile locale din {TOWN} refuzã sã permitã acest lucru
-STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Numele oraselor - clic pe un nume pentru a centra imaginea pe orasul respectiv
-STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Mutã imaginea pe locatia orasului
-STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Schimbã numele orasului
-STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Calatori luna trecuta: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
-STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Colete postale luna trecuta: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
-STR_200F_TALL_OFFICE_BLOCK                                      :Clãdire înaltã de birouri
-STR_2010_OFFICE_BLOCK                                           :Clãdire de birouri
-STR_2011_SMALL_BLOCK_OF_FLATS                                   :Clãdire micã de birouri
-STR_2012_CHURCH                                                 :Bisericã
-STR_2013_LARGE_OFFICE_BLOCK                                     :Clãdire mare de birouri
+STR_2006_POPULATION                                             :{BLACK}Populaţia: {ORANGE}{COMMA}{BLACK}  Locuinţe: {ORANGE}{COMMA}
+STR_2007_RENAME_TOWN                                            :Redenumire oraÅŸ
+STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Nu pot redenumi oraÅŸul...
+STR_2009_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Autorităţile locale din {TOWN} refuză să permită această acţiune
+STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Numele oraÅŸelor - clic pe un nume pentru a centra imaginea pe oraÅŸul respectiv
+STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Mută imaginea pe locaţia oraşului
+STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Schimbă numele oraşului
+STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Călători luna trecută: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
+STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Colete poştale luna trecută: {ORANGE}{COMMA}{BLACK}  max: {ORANGE}{COMMA}
+STR_200F_TALL_OFFICE_BLOCK                                      :Clădire înaltă de birouri
+STR_2010_OFFICE_BLOCK                                           :Clădire de birouri
+STR_2011_SMALL_BLOCK_OF_FLATS                                   :Bloc mic de apartamente
+STR_2012_CHURCH                                                 :Biserică
+STR_2013_LARGE_OFFICE_BLOCK                                     :Clădire mare de birouri
 STR_2014_TOWN_HOUSES                                            :Case
 STR_2015_HOTEL                                                  :Hotel
 STR_2016_STATUE                                                 :Statuie
-STR_2017_FOUNTAIN                                               :Fântânã
+STR_2017_FOUNTAIN                                               :Fântână
 STR_2018_PARK                                                   :Parc
-STR_2019_OFFICE_BLOCK                                           :Clãdire de birouri
-STR_201A_SHOPS_AND_OFFICES                                      :Magazine si birouri
-STR_201B_MODERN_OFFICE_BUILDING                                 :Clãdire modernã de birouri
+STR_2019_OFFICE_BLOCK                                           :Clădire de birouri
+STR_201A_SHOPS_AND_OFFICES                                      :Magazine ÅŸi birouri
+STR_201B_MODERN_OFFICE_BUILDING                                 :Clădire modernă de birouri
 STR_201C_WAREHOUSE                                              :Depozit
 STR_201D_OFFICE_BLOCK                                           :Bloc de birouri
 STR_201E_STADIUM                                                :Stadion
 STR_201F_OLD_HOUSES                                             :Case vechi
-STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Autoritate loc.
-STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Afiseazã informatii referitoare la autoritatea localã
-STR_2022_LOCAL_AUTHORITY                                        :{WHITE}Autoritatea localã din {TOWN}
-STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Ratingul companiilor de transport:
+STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Autoritate locală
+STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Afişează informaţii referitoare la autoritatea locală
+STR_2022_LOCAL_AUTHORITY                                        :{WHITE}Autoritatea locală din {TOWN}
+STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Evaluarea companiilor de transport:
 STR_2024                                                        :{YELLOW}{COMPANY}{PLAYERNAME}: {ORANGE}{STRING}
-STR_2025_SUBSIDIES                                              :{WHITE}Subventii (F6)
-STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Subventii disponibile:
+STR_2025_SUBSIDIES                                              :{WHITE}Subvenţii (F6)
+STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Subvenţii disponibile:
 STR_2027_FROM_TO                                                :{ORANGE}- {STRING} de la {STRING} la {STRING}
-STR_2028_BY                                                     :{YELLOW} (data limitã: {DATE_SHORT})
+STR_2028_BY                                                     :{YELLOW} (data limită: {DATE_SHORT})
 STR_202A_NONE                                                   :{ORANGE}- nici una
-STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Subventii acordate la ora actualã:
+STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Subvenţii acordate la ora actuală:
 STR_202C_FROM_TO                                                :{ORANGE}- {STRING} de la {STATION} la {STATION}{YELLOW} ({COMPANY}
-STR_202D_UNTIL                                                  :{YELLOW}, pânã în {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Ofertã expiratã:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai fi subventionat
-STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Ofertã închisã:{}{}Transportul de {STRING} de la {STATION} la {STATION} nu va mai fi subventionat
-STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Subventie oferitã:{}{}Primul transport de {STRING} de la {STRING} la {STRING} va atrage subventionarea pe un an din partea autoritãtilor locale
-STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subventie acordatã companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasãri cu 50% mai mari timp de un an!
-STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subventie acordatã companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasãri duble timp de un an!
-STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subventie acordatã companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasãri triple timp de un an!
-STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subventie acordatã companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasãri de patru ori mai mari timp de un an!
-STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Autoritatea localã din {TOWN} refuzã sã permitã construirea unui nou aeroport în acest oras
-STR_2036_COTTAGES                                               :Cãsute
+STR_202D_UNTIL                                                  :{YELLOW}, până în {DATE_SHORT})
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Ofertă expirată:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai primi subvenţie
+STR_202F_SUBSIDY_WITHDRAWN_SERVICE                              :{BLACK}{BIGFONT}Ofertă închisă:{}{}Transportul de {STRING} de la {STATION} la {STATION} nu va mai fi subvenţionat
+STR_2030_SERVICE_SUBSIDY_OFFERED                                :{BLACK}{BIGFONT}Subvenţie oferită:{}{}Primul transport de {STRING} de la {STRING} la {STRING} va primi o subvenţie pe un an din partea autorităţilor locale
+STR_2031_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvenţie acordată companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasări cu 50% mai mari timp de un an!
+STR_2032_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvenţie acordată companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasări duble timp de un an!
+STR_2033_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvenţie acordată companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasări triple timp de un an!
+STR_2034_SERVICE_SUBSIDY_AWARDED                                :{BLACK}{BIGFONT}Subvenţie acordată companiei {COMPANY}!{}{}Transportul de {STRING} de la {STATION} la {STATION} va aduce încasări de patru ori mai mari timp de un an!
+STR_2035_LOCAL_AUTHORITY_REFUSES                                :{WHITE}Autoritatea locală din {TOWN} refuză să permită construirea unui nou aeroport în acest oraş
+STR_2036_COTTAGES                                               :Căsuţe
 STR_2037_HOUSES                                                 :Case
 STR_2038_FLATS                                                  :Blocuri
-STR_2039_TALL_OFFICE_BLOCK                                      :Clãdire înaltã de birouri
-STR_203A_SHOPS_AND_OFFICES                                      :Magazine si birouri
-STR_203B_SHOPS_AND_OFFICES                                      :Magazine si birouri
+STR_2039_TALL_OFFICE_BLOCK                                      :Clădire înaltă de birouri
+STR_203A_SHOPS_AND_OFFICES                                      :Magazine ÅŸi birouri
+STR_203B_SHOPS_AND_OFFICES                                      :Magazine ÅŸi birouri
 STR_203C_THEATER                                                :Teatru
 STR_203D_STADIUM                                                :Stadion
 STR_203E_OFFICES                                                :Birouri
 STR_203F_HOUSES                                                 :Case
-STR_2040_CINEMA                                                 :Cinema
+STR_2040_CINEMA                                                 :Cinematograf
 STR_2041_SHOPPING_MALL                                          :Centru comercial
 STR_2042_DO_IT                                                  :{BLACK}Alege
-STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Lista de actiuni disponibile pentru acest oras - clic pe fiecare pentru mai multe detalii
-STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Activeazã actiunea selectatã din listã
-STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Actiuni disponibile:
-STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Campanie publicitarã micã
-STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Campanie publicitarã medie
-STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Campanie publicitarã mare
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Finanteazã reconstructia strãzilor
-STR_204A_BUILD_STATUE_OF_COMPANY                                :Ridicã un monument dedicat presedintelui companiei
-STR_204B_FUND_NEW_BUILDINGS                                     :Finanteazã constructia de noi clãdiri
-STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Cumpãrã drepturile exclusive de transport
+STR_2043_LIST_OF_THINGS_TO_DO_AT                                :{BLACK}Lista de acţiuni disponibile pentru acest oraş - clic pe fiecare pentru mai multe detalii
+STR_2044_CARRY_OUT_THE_HIGHLIGHTED                              :{BLACK}Activează acţiunea selectată din listă
+STR_2045_ACTIONS_AVAILABLE                                      :{BLACK}Acţiuni disponibile:
+STR_2046_SMALL_ADVERTISING_CAMPAIGN                             :Campanie publicitară mică
+STR_2047_MEDIUM_ADVERTISING_CAMPAIGN                            :Campanie publicitară medie
+STR_2048_LARGE_ADVERTISING_CAMPAIGN                             :Campanie publicitară mare
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION                         :Finanţează reconstrucţia străzilor
+STR_204A_BUILD_STATUE_OF_COMPANY                                :Ridică un monument dedicat preşedintelui companiei
+STR_204B_FUND_NEW_BUILDINGS                                     :Finanţează construcţia de noi clădiri
+STR_204C_BUY_EXCLUSIVE_TRANSPORT                                :Cumpără drepturi exclusive de transport
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY                              :Mituieste autoritatea localã
-STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiazã o campanie publicitarã micã pentru a atrage mai multi pasageri si mai multe mãrfuri spre compania ta.{}  Cost: {CURRENCY}
-STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Initiazã o campanie publicitarã medie pentru a atrage mai multi pasageri si mai multe mãrfuri spre compania ta.{}  Cost: {CURRENCY}
-STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Initiazã o mare campanie publicitarã pentru a atrage mai multi pasageri si mai multe mãrfuri spre compania ta.{}  Cost: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Finanteazã reconstructia strãzilor locale. Acest lucru cauzeazã devieri majore ale traficului rutier timp de 6 luni.{}  Cost: {CURRENCY}
-STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Înaltã o statuie în cinstea companiei tale.{} Cost: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Finanteazã constructia de noi clãdiri comerciale în oras.{}  Cost: {CURRENCY}
-STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Cumpãrã drepturile exclusive în acest oras pe o perioadã de un an. Autoritãtile locale vor folosi doar compania ta pentru transportul de pasageri si mãrfuri.{} Cost: {CURRENCY}
+STR_204D_INITIATE_A_SMALL_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Iniţiază o campanie publicitară mică pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{}  Cost: {CURRENCY}
+STR_204E_INITIATE_A_MEDIUM_LOCAL                                :{WHITE}{STRING}{}{YELLOW} Iniţiază o campanie publicitară medie pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{}  Cost: {CURRENCY}
+STR_204F_INITIATE_A_LARGE_LOCAL                                 :{WHITE}{STRING}{}{YELLOW} Iniţiază o mare campanie publicitară pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{}  Cost: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION                                :{WHITE}{STRING}{}{YELLOW} Finanţează reconstrucţia străzilor locale. Acest lucru cauzează perturbări majore ale traficului rutier timp de până la 6 luni.{}  Cost: {CURRENCY}
+STR_2051_BUILD_A_STATUE_IN_HONOR                                :{WHITE}{STRING}{}{YELLOW} Înalţă o statuie în cinstea companiei tale.{} Cost: {CURRENCY}
+STR_2052_FUND_THE_CONSTRUCTION_OF                               :{WHITE}{STRING}{}{YELLOW} Finanţează construcţia de noi clădiri comerciale în oraş.{}  Cost: {CURRENCY}
+STR_2053_BUY_1_YEAR_S_EXCLUSIVE                                 :{WHITE}{STRING}{}{YELLOW} Cumpără drepturi exclusive în acest oraş pe o perioadă de un an. Autorităţile locale vor permite doar companiei tale să transporte călători şi mărfuri.{} Cost: {CURRENCY}
 STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC                         :{WHITE}{STRING}{}{YELLOW} Mituieste autoritãtile locale pentru a-ti îmbunãtãti ratingul, dar cu riscul de a fi prins si de a plãti amenzi serioase.{}  Cost: {CURRENCY}
-STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Haos pe strãzile din {TOWN}!{}{}Programul finantat de {COMPANY} pentru reconstructia strãzilor, aduce 6 luni de haos participantilor la trafic!
+STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING                       :{BIGFONT}{BLACK}Haos pe străzile din {TOWN}!{}{}Programul finanţat de {COMPANY} pentru reconstrucţia străzilor aduce 6 luni de haos participanţilor la trafic!
 STR_2056                                                        :{TINYFONT}{WHITE}{TOWN}
-STR_2058_UNDER_CONSTRUCTION                                     :{STRING} (în constructie)
+STR_2058_UNDER_CONSTRUCTION                                     :{STRING} (în construcţie)
 STR_2059_IGLOO                                                  :Iglu
 STR_205A_TEPEES                                                 :Corturi
-STR_205B_TEAPOT_HOUSE                                           :Casã-ceainic
-STR_205C_PIGGY_BANK                                             :Pusculitã
+STR_205B_TEAPOT_HOUSE                                           :Casă-ceainic
+STR_205C_PIGGY_BANK                                             :Puşculiţă
 
 STR_INDUSTRY                                                    :{INDUSTRY}
 STR_TOWN                                                        :{TOWN}
@@ -1719,50 +1737,50 @@
 
 ##id 0x2800
 STR_LANDSCAPING                                                 :Modificare peisaj
-STR_2800_PLANT_TREES                                            :Planteazã arbori
-STR_2801_PLACE_SIGN                                             :Plaseazã semn
+STR_2800_PLANT_TREES                                            :Plantează arbori
+STR_2801_PLACE_SIGN                                             :Plasează semn
 STR_2802_TREES                                                  :{WHITE}Arbori
-STR_2803_TREE_ALREADY_HERE                                      :{WHITE}...sunt deja plantati arbori
-STR_2804_SITE_UNSUITABLE                                        :{WHITE}...locatie nepotrivitã
+STR_2803_TREE_ALREADY_HERE                                      :{WHITE}...sunt deja plantaţi arbori
+STR_2804_SITE_UNSUITABLE                                        :{WHITE}...locaţie nepotrivită
 STR_2805_CAN_T_PLANT_TREE_HERE                                  :{WHITE}Nu pot planta arbori aici...
 STR_2806                                                        :{WHITE}{STRING}
 STR_2808_TOO_MANY_SIGNS                                         :{WHITE}...prea multe semne
 STR_2809_CAN_T_PLACE_SIGN_HERE                                  :{WHITE}Nu pot plasa un semn aici...
 STR_280A_SIGN                                                   :Semn
-STR_280B_EDIT_SIGN_TEXT                                         :{WHITE}Editeazã textul semnului
+STR_280B_EDIT_SIGN_TEXT                                         :{WHITE}Editează textul semnului
 STR_280C_CAN_T_CHANGE_SIGN_NAME                                 :{WHITE}Nu pot schimba numele semnului...
-STR_280D_SELECT_TREE_TYPE_TO_PLANT                              :{BLACK}Alege specia de arbori plantati
+STR_280D_SELECT_TREE_TYPE_TO_PLANT                              :{BLACK}Alege specia de arbori de plantat
 STR_280E_TREES                                                  :Arbori
-STR_280F_RAINFOREST                                             :Pãdure tropicalã
-STR_2810_CACTUS_PLANTS                                          :Cactusi
+STR_280F_RAINFOREST                                             :Pădure tropicală
+STR_2810_CACTUS_PLANTS                                          :CactuÅŸi
 
 ##id 0x3000
-STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Alege tipul de garã
+STR_3000_RAIL_STATION_SELECTION                                 :{WHITE}Alege tipul de gară
 STR_3001_AIRPORT_SELECTION                                      :{WHITE}Alege tipul de aeroport
 STR_3002_ORIENTATION                                            :{BLACK}Orientarea
-STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Numãr de linii
+STR_3003_NUMBER_OF_TRACKS                                       :{BLACK}Număr de linii
 STR_3004_PLATFORM_LENGTH                                        :{BLACK}Lungimea liniilor
-STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Prea aproape de altã garã
-STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING                         :{WHITE}Este adiacentã mai multor statii
-STR_3007_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prea multe statii in acest oras
-STR_3008_TOO_MANY_STATIONS_LOADING                              :{WHITE}Prea multe statii
-STR_3008A_TOO_MANY_BUS_STOPS                                    :{WHITE}Prea multe statii de autobuz
-STR_3008B_TOO_MANY_TRUCK_STOPS                                  :{WHITE}Prea multe statii de camion
-STR_3009_TOO_CLOSE_TO_ANOTHER_STATION                           :{WHITE}Prea aproape de altã statie
+STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD                          :{WHITE}Prea aproape de altă gară
+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_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
+STR_300B_MUST_DEMOLISH_RAILROAD                                 :{WHITE}Mai întâi trebuie demolată gara
 STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Prea aproape de alt aeroport
 STR_300E_MUST_DEMOLISH_AIRPORT_FIRST                            :{WHITE}Mai întâi trebuie demolat aeroportul
 
-STR_3030_RENAME_STATION_LOADING                                 :Redenumeste statia
-STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Nu pot redenumi statia...
-STR_3032_RATINGS                                                :{BLACK}Ratinguri
-STR_3033_ACCEPTS                                                :{BLACK}Acceptã
-STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Ratingul serviciilor de transport local:
+STR_3030_RENAME_STATION_LOADING                                 :Redenumeşte staţia
+STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Nu pot redenumi staţia...
+STR_3032_RATINGS                                                :{BLACK}Evaluări
+STR_3033_ACCEPTS                                                :{BLACK}Acceptă
+STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Evaluarea serviciilor de transport local:
 
 ############ range for rating starts
 STR_3035_APPALLING                                              :Deplorabil
-STR_3036_VERY_POOR                                              :Foarte scãzut
+STR_3036_VERY_POOR                                              :Foarte scăzut
 STR_3037_POOR                                                   :Slab
 STR_3038_MEDIOCRE                                               :Mediocru
 STR_3039_GOOD                                                   :Bun
@@ -1772,47 +1790,53 @@
 ############ range for rating ends
 
 STR_303D                                                        :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
-STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} nu mai acceptã {STRING}
-STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} nu mai acceptã {STRING} sau {STRING}
-STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} acceptã acum {STRING}
-STR_3041_NOW_ACCEPTS_AND                                        :{WHITE}{STATION} acceptã acum {STRING} si {STRING}
-STR_3042_BUS_STATION_ORIENTATION                                :{WHITE}Orientarea statiei
-STR_3043_TRUCK_STATION_ORIENT                                   :{WHITE}Orientarea statiei
-STR_3046_MUST_DEMOLISH_BUS_STATION                              :{WHITE}Mai intâi trebuie demolatã statia de autbuz
-STR_3047_MUST_DEMOLISH_TRUCK_STATION                            :{WHITE}Mai intâi trebuie demolatã platforma pentru camioane
-STR_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Statii
+STR_303E_NO_LONGER_ACCEPTS                                      :{WHITE}{STATION} nu mai acceptă {STRING}
+STR_303F_NO_LONGER_ACCEPTS_OR                                   :{WHITE}{STATION} nu mai acceptă {STRING} sau {STRING}
+STR_3040_NOW_ACCEPTS                                            :{WHITE}{STATION} acceptă acum {STRING}
+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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Staţi{P e i}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Nici una -
-STR_304B_SITE_UNSUITABLE                                        :{WHITE}...locatie nepotrivitã
+STR_304B_SITE_UNSUITABLE                                        :{WHITE}...locaţie nepotrivită
 STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK                              :{WHITE}Prea aproape de alt port
-STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Mai intai trebuie demolat portul
-STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Alege orientarea gãrii
-STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Alege numãrul de linii al gãrii
-STR_3050_SELECT_LENGTH_OF_RAILROAD                              :{BLACK}Alege lungimea liniilor gãrii
-STR_3051_SELECT_BUS_STATION_ORIENTATION                         :{BLACK}Alege orientarea statiei de autobuz
+STR_304D_MUST_DEMOLISH_DOCK_FIRST                               :{WHITE}Mai întâi trebuie demolat portul
+STR_304E_SELECT_RAILROAD_STATION                                :{BLACK}Alege orientarea gării
+STR_304F_SELECT_NUMBER_OF_PLATFORMS                             :{BLACK}Alege numărul de linii al gării
+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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Centreazã imaginea pe locatia statiei
-STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Afiseazã ratingurile statiei
-STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Schimbã numele statiei
-STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Afiseazã lista de încarcãturi acceptate
-STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Numele statiilor - clic pe un nume pentru a centra imaginea pe statia respectivã
-STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Alege tipul de aeroport
+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_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
+STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO                            :{BLACK}Afişează lista de încărcături acceptate
+STR_3057_STATION_NAMES_CLICK_ON                                 :{BLACK}Numele staţiilor - clic pe un nume pentru a centra imaginea pe staţia respectivă
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT                            :{BLACK}Alege tipul şi mărimea aeroportului
 STR_305C_0                                                      :{STATION} {STATIONFEATURES}
 STR_STATION_SIGN_TINY                                           :{TINYFONT}{STATION}
-STR_305E_RAILROAD_STATION                                       :Garã
+STR_305E_RAILROAD_STATION                                       :Gară
 STR_305F_AIRCRAFT_HANGAR                                        :Hangar
 STR_3060_AIRPORT                                                :Aeroport
-STR_3061_TRUCK_LOADING_AREA                                     :Platformã pentru camioane
-STR_3062_BUS_STATION                                            :Statie de autobuz
+STR_3061_TRUCK_LOADING_AREA                                     :Platformă pentru camioane
+STR_3062_BUS_STATION                                            :Staţie de autobuz
 STR_3063_SHIP_DOCK                                              :Port
-STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Aratã aria de acoperire a locatiei propuse
-STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}Nu arãta aria de acoperire a locatiei propuse
-STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Aratã aria de acoperire
+STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Arată aria de acoperire a locaţiei propuse
+STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}Nu arăta aria de acoperire a locaţiei propuse
+STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Aria de acoperire
 STR_3068_DOCK                                                   :{WHITE}Port
-STR_3069_BUOY                                                   :Balizã
-STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...balizã în cale
-STR_306C_STATION_TOO_SPREAD_OUT                                 :{WHITE}...statie prea mare
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED                         :{WHITE}...statii neuniforme dezactivat
+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_USE_CTRL_TO_SELECT_MORE                                     :{BLACK}Tine apãsat CTRL pentru a alege mai mult decât un obiect
 
 STR_UNDEFINED                                                   :(sir nedefinit)
@@ -1820,75 +1844,75 @@
 STR_STAT_CLASS_WAYP                                             :Punct itinerar
 
 ##id 0x3800
-STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Orientarea santierului naval
-STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...trebuie construit pe apã
-STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Nu pot construi un santier naval aici...
-STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Alege orientarea santierului naval
-STR_3804_WATER                                                  :Apã
-STR_3805_COAST_OR_RIVERBANK                                     :Mal/Coastã
-STR_3806_SHIP_DEPOT                                             :Santier naval
-STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...Nu pot construi pe apã
+STR_3800_SHIP_DEPOT_ORIENTATION                                 :{WHITE}Orientarea ÅŸantierului naval
+STR_3801_MUST_BE_BUILT_ON_WATER                                 :{WHITE}...trebuie construit pe apă
+STR_3802_CAN_T_BUILD_SHIP_DEPOT                                 :{WHITE}Nu pot construi un ÅŸantier naval aici...
+STR_3803_SELECT_SHIP_DEPOT_ORIENTATION                          :{BLACK}Alege orientarea ÅŸantierului naval
+STR_3804_WATER                                                  :Apă
+STR_3805_COAST_OR_RIVERBANK                                     :Mal/Coastă
+STR_3806_SHIP_DEPOT                                             :Åžantier naval
+STR_3807_CAN_T_BUILD_ON_WATER                                   :{WHITE}...Nu pot construi pe apă
 
 ##id 0x4000
-STR_4000_SAVE_GAME                                              :{WHITE}Salveazã joc
-STR_4001_LOAD_GAME                                              :{WHITE}Încarcã joc
-STR_4002_SAVE                                                   :{BLACK}Salveazã
-STR_4003_DELETE                                                 :{BLACK}Sterge
+STR_4000_SAVE_GAME                                              :{WHITE}Salvează joc
+STR_4001_LOAD_GAME                                              :{WHITE}Încarcă joc
+STR_4002_SAVE                                                   :{BLACK}Salvează
+STR_4003_DELETE                                                 :{BLACK}Åžterge
 STR_4004                                                        :{COMPANY}, {DATE_LONG}
-STR_4005_BYTES_FREE                                             :{BLACK}{COMMA} megabytes liberi
-STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Nu pot citi acest drive
-STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Salvarea jocului esuatã
-STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Stergerea jocului esuatã
-STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Încãrcarea jocului esuatã
-STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Lista de drive-uri, directoare si fisiere cu jocuri salvate
+STR_4005_BYTES_FREE                                             :{BLACK}{COMMA} megabyte{P "" s} liberi
+STR_4006_UNABLE_TO_READ_DRIVE                                   :{BLACK}Nu pot citi acest disc
+STR_4007_GAME_SAVE_FAILED                                       :{WHITE}Salvarea jocului eşuată
+STR_4008_UNABLE_TO_DELETE_FILE                                  :{WHITE}Ştergerea jocului eşuată
+STR_4009_GAME_LOAD_FAILED                                       :{WHITE}Încărcarea jocului eşuată
+STR_400A_LIST_OF_DRIVES_DIRECTORIES                             :{BLACK}Lista de discuri, directoare ÅŸi fiÅŸiere cu jocuri salvate
 STR_400B_CURRENTLY_SELECTED_NAME                                :{BLACK}Numele selectat pentru un joc salvat
-STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Sterge jocul salvat selectat
-STR_400D_SAVE_THE_CURRENT_GAME_USING                            :{BLACK}Salveazã cu numele selectat jocul curent
+STR_400C_DELETE_THE_CURRENTLY_SELECTED                          :{BLACK}Åžterge jocul salvat selectat
+STR_400D_SAVE_THE_CURRENT_GAME_USING                            :{BLACK}Salvează cu numele selectat jocul curent
 STR_400E_SELECT_NEW_GAME_TYPE                                   :{WHITE}Alege tipul noului joc
-STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Alege un scenariu (verde), joc predefinit (albastru) sau o hartã aleatoare
-STR_4010_GENERATE_RANDOM_NEW_GAME                               :Genereazã o hartã aleatoare
-STR_4011_LOAD_HEIGHTMAP                                         :{WHITE}Incarca harta inaltimilor
+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
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} în cale
 STR_4801                                                        :{WHITE}{INDUSTRY}
-STR_4802_COAL_MINE                                              :Minã de cãrbune
-STR_4803_POWER_STATION                                          :Termocentralã
-STR_4804_SAWMILL                                                :Exploatatie forestierã
-STR_4805_FOREST                                                 :Pãdure
-STR_4806_OIL_REFINERY                                           :Rafinãrie
-STR_4807_OIL_RIG                                                :Platformã petrolierã
-STR_4808_FACTORY                                                :Fabricã de conserve
+STR_4802_COAL_MINE                                              :Mină de cărbune
+STR_4803_POWER_STATION                                          :Termocentrală
+STR_4804_SAWMILL                                                :Exploataţie forestieră
+STR_4805_FOREST                                                 :Pădure
+STR_4806_OIL_REFINERY                                           :Rafinărie
+STR_4807_OIL_RIG                                                :Platformă petrolieră
+STR_4808_FACTORY                                                :Fabrică de conserve
 STR_4809_PRINTING_WORKS                                         :Tipografie
-STR_480A_STEEL_MILL                                             :Otelãrie
-STR_480B_FARM                                                   :Fermã
-STR_480C_COPPER_ORE_MINE                                        :Minã de cupru
-STR_480D_OIL_WELLS                                              :Sonde
-STR_480E_BANK                                                   :Bancã
+STR_480A_STEEL_MILL                                             :Oţelărie
+STR_480B_FARM                                                   :Fermă
+STR_480C_COPPER_ORE_MINE                                        :Mină de cupru
+STR_480D_OIL_WELLS                                              :Sonde de petrol
+STR_480E_BANK                                                   :Bancă
 STR_480F_FOOD_PROCESSING_PLANT                                  :Combinat alimentar
-STR_4810_PAPER_MILL                                             :Fabricã de hârtie
-STR_4811_GOLD_MINE                                              :Minã de aur
-STR_4812_BANK                                                   :Bancã
-STR_4813_DIAMOND_MINE                                           :Minã de diamante
-STR_4814_IRON_ORE_MINE                                          :Minã de fier
-STR_4815_FRUIT_PLANTATION                                       :Livadã
-STR_4816_RUBBER_PLANTATION                                      :Plantatie de cauciuc
+STR_4810_PAPER_MILL                                             :Fabrică de hârtie
+STR_4811_GOLD_MINE                                              :Mină de aur
+STR_4812_BANK                                                   :Bancă
+STR_4813_DIAMOND_MINE                                           :Mină de diamante
+STR_4814_IRON_ORE_MINE                                          :Mină de fier
+STR_4815_FRUIT_PLANTATION                                       :Livadă
+STR_4816_RUBBER_PLANTATION                                      :Plantaţie de cauciuc
 STR_4817_WATER_SUPPLY                                           :Rezervor
-STR_4818_WATER_TOWER                                            :Turn de apã
-STR_4819_FACTORY                                                :Fabricã de conserve
-STR_481A_FARM                                                   :Fermã
-STR_481B_LUMBER_MILL                                            :Fabricã de cherestea
-STR_481C_COTTON_CANDY_FOREST                                    :Pãdure de vatã de zahãr
-STR_481D_CANDY_FACTORY                                          :Fabricã de bomboane
-STR_481E_BATTERY_FARM                                           :Fermã de baterii
+STR_4818_WATER_TOWER                                            :Turn de apă
+STR_4819_FACTORY                                                :Fabrică de conserve
+STR_481A_FARM                                                   :Fermă
+STR_481B_LUMBER_MILL                                            :Fabrică de cherestea
+STR_481C_COTTON_CANDY_FOREST                                    :Pădure de vată de zahăr
+STR_481D_CANDY_FACTORY                                          :Fabrică de bomboane
+STR_481E_BATTERY_FARM                                           :Fermă de baterii
 STR_481F_COLA_WELLS                                             :Fântâni de cola
-STR_4820_TOY_SHOP                                               :Magazin de jucãrii
-STR_4821_TOY_FACTORY                                            :Fabricã de jucãrii
+STR_4820_TOY_SHOP                                               :Magazin de jucării
+STR_4821_TOY_FACTORY                                            :Fabrică de jucării
 STR_4822_PLASTIC_FOUNTAINS                                      :Fântâni de plastic
-STR_4823_FIZZY_DRINK_FACTORY                                    :Fabricã de sucuri
-STR_4824_BUBBLE_GENERATOR                                       :Generator de balonase
-STR_4825_TOFFEE_QUARRY                                          :Carierã de caramel
-STR_4826_SUGAR_MINE                                             :Minã de zahãr
+STR_4823_FIZZY_DRINK_FACTORY                                    :Fabrică de sucuri
+STR_4824_BUBBLE_GENERATOR                                       :Generator de balonaÅŸe
+STR_4825_TOFFEE_QUARRY                                          :Carieră de caramel
+STR_4826_SUGAR_MINE                                             :Mină de zahăr
 
 ############ range for requires starts
 STR_4827_REQUIRES                                               :{BLACK}Are nevoie de: {YELLOW}{STRING}
@@ -1896,75 +1920,75 @@
 STR_4829_REQUIRES                                               :{BLACK}Are nevoie de: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
-STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Productia luna trecutã:
+STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Producţia lunii trecute:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportat)
-STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centreazã imaginea pe locatia industriei
-STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Un nou obiectiv industrial ({STRING}) se construieste lângã {TOWN}!
-STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}O nouã {STRING} se planteazã lângã {TOWN}!
+STR_482C_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Centrează imaginea pe locaţia industriei
+STR_482D_NEW_UNDER_CONSTRUCTION                                 :{BLACK}{BIGFONT}Un nou obiectiv industrial ({STRING}) se construieşte lângă {TOWN}!
+STR_482E_NEW_BEING_PLANTED_NEAR                                 :{BLACK}{BIGFONT}O nouă {STRING} se plantează lângă {TOWN}!
 STR_482F_COST                                                   :{BLACK}Cost: {YELLOW}{CURRENCY}
 STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY                          :{WHITE}Acest tip de industrie nu se poate construi aici...
-STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...pãdurile pot fi plantate doar in zonele inzãpezite
-STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} anuntã inchiderea iminentã!
-STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Problemele de aprovizionare provoacã închiderea {INDUSTRY}!
-STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Lipsa de teren împãdurit provoacã închiderea {INDUSTRY}!
-STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} mãreste productia!
-STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Rezerve noi de cãrbune la {INDUSTRY}!{}Se asteaptã dublarea productiei!
-STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Rezerve noi de petrol la {INDUSTRY}!{}Se asteaptã dublarea productiei!
-STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Noile tehnologii folosite la {INDUSTRY} vor aduce dublarea productiei!
-STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}{INDUSTRY} scade productia cu 50%
-STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Insectele cauzeazã distrugeri masive la {INDUSTRY}!{}Productia scade cu 50%
-STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...se poate construi doar la marginea hãrtii
+STR_4831_FOREST_CAN_ONLY_BE_PLANTED                             :{WHITE}...pădurile pot fi plantate doar în zonele înzăpezite
+STR_4832_ANNOUNCES_IMMINENT_CLOSURE                             :{BLACK}{BIGFONT}{INDUSTRY} anunţă închidere iminentă!
+STR_4833_SUPPLY_PROBLEMS_CAUSE_TO                               :{BLACK}{BIGFONT}Problemele de aprovizionare provoacă închiderea {INDUSTRY}!
+STR_4834_LACK_OF_NEARBY_TREES_CAUSES                            :{BLACK}{BIGFONT}Lipsa de teren împădurit provoacă închiderea {INDUSTRY}!
+STR_4835_INCREASES_PRODUCTION                                   :{BLACK}{BIGFONT}{INDUSTRY} măreşte producţia!
+STR_4836_NEW_COAL_SEAM_FOUND_AT                                 :{BLACK}{BIGFONT}Rezerve noi de cărbune la {INDUSTRY}!{}Se preconizează dublarea producţiei!
+STR_4837_NEW_OIL_RESERVES_FOUND                                 :{BLACK}{BIGFONT}Rezerve noi de petrol la {INDUSTRY}!{}Se preconizează dublarea producţiei!
+STR_4838_IMPROVED_FARMING_METHODS                               :{BLACK}{BIGFONT}Noile tehnologii folosite la {INDUSTRY} vor aduce dublarea producţiei!
+STR_4839_PRODUCTION_DOWN_BY_50                                  :{BLACK}{BIGFONT}{INDUSTRY} scade producţia cu 50%
+STR_483A_INSECT_INFESTATION_CAUSES                              :{BLACK}{BIGFONT}Insectele cauzează distrugeri masive la {INDUSTRY}!{}Producţia scade cu 50%
+STR_483B_CAN_ONLY_BE_POSITIONED                                 :{WHITE}...se poate construi doar la marginea hărţii
 STR_INDUSTRY_PROD_GOUP                                          :{BLACK}{BIGFONT}Productia de {STRING} de la {INDUSTRY} creste cu {COMMA}%!
 STR_INDUSTRY_PROD_GODOWN                                        :{BLACK}{BIGFONT}Productia de {STRING} de la {INDUSTRY} scade cu {COMMA}%!
 
 ##id 0x5000
 STR_5000_TRAIN_IN_TUNNEL                                        :{WHITE}Tren în tunel
-STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Autovehicul în tunnel
+STR_5001_ROAD_VEHICLE_IN_TUNNEL                                 :{WHITE}Autovehicul în tunel
 STR_5003_ANOTHER_TUNNEL_IN_THE_WAY                              :{WHITE}Intersectare cu alt tunel
-STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Terenul de la celãlalt capãt al tunelului este imposibil de excavat
-STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Mai intâi trebuie demolat tunelul
-STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Mai intâi trebuie demolat podul
-STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Cele douã capete nu se pot situa în acelasi loc
-STR_5009_LEVEL_LAND_OR_WATER_REQUIRED                           :{WHITE}Sub pod trebuie sã existe teren nivelat
-STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Cele douã capete trebuie sã se situeze în linie
+STR_5005_UNABLE_TO_EXCAVATE_LAND                                :{WHITE}Terenul de la celălalt capăt al tunelului este imposibil de excavat
+STR_5006_MUST_DEMOLISH_TUNNEL_FIRST                             :{WHITE}Mai întâi trebuie demolat tunelul
+STR_5007_MUST_DEMOLISH_BRIDGE_FIRST                             :{WHITE}Mai întâi trebuie demolat podul
+STR_5008_CANNOT_START_AND_END_ON                                :{WHITE}Cele două capete nu se pot situa în acelaşi loc
+STR_5009_LEVEL_LAND_OR_WATER_REQUIRED                           :{WHITE}Sub pod trebuie să existe teren plat sau apă
+STR_500A_START_AND_END_MUST_BE_IN                               :{WHITE}Cele două capete trebuie să se situeze în linie
 STR_500B_SITE_UNSUITABLE_FOR_TUNNEL                             :{WHITE}Loc nepotrivit pentru intrarea într-un tunel
 STR_500D                                                        :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
-STR_500E_SUSPENSION_STEEL                                       :Suspensie (otel)
-STR_500F_GIRDER_STEEL                                           :Grindã (otel)
-STR_5010_CANTILEVER_STEEL                                       :Arc (otel)
+STR_500E_SUSPENSION_STEEL                                       :Suspensie (oţel)
+STR_500F_GIRDER_STEEL                                           :Grindă (oţel)
+STR_5010_CANTILEVER_STEEL                                       :Arc (oţel)
 STR_5011_SUSPENSION_CONCRETE                                    :Suspensie (beton)
 STR_5012_WOODEN                                                 :Lemn
 STR_5013_CONCRETE                                               :Beton
-STR_5014_TUBULAR_STEEL                                          :Tubular (otel)
+STR_5014_TUBULAR_STEEL                                          :Tubular (oţel)
 STR_BRIDGE_TUBULAR_SILICON                                      :Tubular (silicon)
 STR_5015_CAN_T_BUILD_BRIDGE_HERE                                :{WHITE}Nu pot construi pod aici...
 STR_5016_CAN_T_BUILD_TUNNEL_HERE                                :{WHITE}Nu pot construi tunel aici...
 STR_5017_RAILROAD_TUNNEL                                        :Tunel feroviar
 STR_5018_ROAD_TUNNEL                                            :Tunel rutier
-STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Pod feroviar suspendat din otel
-STR_501C_STEEL_GIRDER_RAIL_BRIDGE                               :Pod feroviar tip grindã din otel
-STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE                           :Pod feroviar tip arc din otel
+STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE                           :Pod feroviar suspendat din oţel
+STR_501C_STEEL_GIRDER_RAIL_BRIDGE                               :Pod feroviar tip grindă din oţel
+STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE                           :Pod feroviar tip arc din oţel
 STR_501E_REINFORCED_CONCRETE_SUSPENSION                         :Pod feroviar suspendat din beton
 STR_501F_WOODEN_RAIL_BRIDGE                                     :Pod feroviar din lemn
 STR_5020_CONCRETE_RAIL_BRIDGE                                   :Pod feroviar din beton
-STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Pod rutier suspendat din otel
-STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Pod rutier tip grindã din otel
-STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Pod rutier tip arc din otel
-STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Pod rutier suspendat din beton
+STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE                           :Pod rutier suspendat din oţel
+STR_5022_STEEL_GIRDER_ROAD_BRIDGE                               :Pod rutier tip grindă din oţel
+STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE                           :Pod rutier tip arc din oţel
+STR_5024_REINFORCED_CONCRETE_SUSPENSION                         :Pod rutier suspendat din beton armat
 STR_5025_WOODEN_ROAD_BRIDGE                                     :Pod rutier din lemn
 STR_5026_CONCRETE_ROAD_BRIDGE                                   :Pod rutier din beton
 STR_5027_TUBULAR_RAIL_BRIDGE                                    :Pod feroviar tubular
 STR_5028_TUBULAR_ROAD_BRIDGE                                    :Pod rutier tubular
 
 ##id 0x5800
-STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Obiect in cale
-STR_5801_TRANSMITTER                                            :Transmitãtor
+STR_5800_OBJECT_IN_THE_WAY                                      :{WHITE}Obiect în cale
+STR_5801_TRANSMITTER                                            :Transmiţător
 STR_5802_LIGHTHOUSE                                             :Far
 STR_5803_COMPANY_HEADQUARTERS                                   :Sediu companie
-STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...sediu de companie in cale
-STR_5805_COMPANY_OWNED_LAND                                     :Teren in posesia unei companii
-STR_5806_CAN_T_PURCHASE_THIS_LAND                               :{WHITE}Nu poti cumpãra teren aici...
-STR_5807_YOU_ALREADY_OWN_IT                                     :{WHITE}...este deja in posesia ta!
+STR_5804_COMPANY_HEADQUARTERS_IN                                :{WHITE}...sediu de companie în cale
+STR_5805_COMPANY_OWNED_LAND                                     :Teren în proprietatea unei companii
+STR_5806_CAN_T_PURCHASE_THIS_LAND                               :{WHITE}Nu poţi cumpăra teren aici...
+STR_5807_YOU_ALREADY_OWN_IT                                     :{WHITE}...este deja în proprietatea ta!
 
 
 ############ WARNING, using range 0x6000 for strings that are stored in the savegame
@@ -2011,6 +2035,8 @@
 STR_SV_STNAME_HELIPORT                                          :Heliportul {STRING}
 STR_SV_STNAME_FOREST                                            :Pãdurea {STRING}
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2018,53 +2044,53 @@
 STR_OPTIONS_SAVE_CHANGES                                        :{BLACK}Salveazã
 
 ############ range for difficulty levels starts
-STR_6801_EASY                                                   :{BLACK}Usor
+STR_6801_EASY                                                   :{BLACK}UÅŸor
 STR_6802_MEDIUM                                                 :{BLACK}Mediu
 STR_6803_HARD                                                   :{BLACK}Greu
-STR_6804_CUSTOM                                                 :{BLACK}Propriu
+STR_6804_CUSTOM                                                 :{BLACK}Personalizat
 ############ range for difficulty levels ends
 
 ############ range for difficulty settings starts
-STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Numãrul maxim de companii concurente: {ORANGE}{COMMA}
-STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Când intrã concurentii pe piatã: {ORANGE}{STRING}
-STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Numãrul de orase de pe hartã: {ORANGE}{STRING}
-STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Numãrul de obiective industriale: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Valoarea maximã a împrumutului initial: {ORANGE}{CURRENCY}
-STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Rata initialã a dobânzii: {ORANGE}{COMMA}%
+STR_6805_MAXIMUM_NO_COMPETITORS                                 :{LTBLUE}Numărul maxim de companii concurente: {ORANGE}{COMMA}
+STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Când intră concurenţii pe piaţă: {ORANGE}{STRING}
+STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Numărul de oraşe de pe hartă: {ORANGE}{STRING}
+STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Numărul de obiective industriale: {ORANGE}{STRING}
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Valoarea maximă a împrumutului iniţial: {ORANGE}{CURRENCY}
+STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Rata iniţială a dobânzii: {ORANGE}{COMMA}%
 STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Costul de exploatare al vehiculelor: {ORANGE}{STRING}
-STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Viteza de constructie a concurentilor: {ORANGE}{STRING}
-STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Gradul de inteligentã al concurentilor: {ORANGE}{STRING}
-STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Defectiunile vehiculelor: {ORANGE}{STRING}
-STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Multiplicarea veniturilor subventionate: {ORANGE}{STRING}
-STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Costul constructiilor: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Viteza de construcţie a concurenţilor: {ORANGE}{STRING}
+STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Gradul de inteligenţă al concurenţilor: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS                                     :{LTBLUE}Defecţiunile vehiculelor: {ORANGE}{STRING}
+STR_680F_SUBSIDY_MULTIPLIER                                     :{LTBLUE}Multiplicatorul pentru veniturile subvenţionate: {ORANGE}{STRING}
+STR_6810_COST_OF_CONSTRUCTION                                   :{LTBLUE}Costul construcţiilor: {ORANGE}{STRING}
 STR_6811_TERRAIN_TYPE                                           :{LTBLUE}Tipul de teren: {ORANGE}{STRING}
-STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Volumul de apã pe hartã: {ORANGE}{STRING}
+STR_6812_QUANTITY_OF_SEA_LAKES                                  :{LTBLUE}Volumul de apă pe hartă: {ORANGE}{STRING}
 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}Reactia autoritãtilor la modificãrea mediului: {ORANGE}{STRING}
+STR_16816_CITY_APPROVAL                                         :{LTBLUE}Reacţia autorităţilor la modificarea mediului: {ORANGE}{STRING}
 ############ range for difficulty settings ends
 
 STR_26816_NONE                                                  :zero
 STR_NUM_VERY_LOW                                                :Foarte putine
-STR_6816_LOW                                                    :scãzut
+STR_6816_LOW                                                    :scăzut
 STR_6817_NORMAL                                                 :normal
 STR_6818_HIGH                                                   :ridicat
 STR_6819                                                        :{BLACK}{SMALLLEFTARROW}
 STR_681A                                                        :{BLACK}{SMALLRIGHTARROW}
-STR_681B_VERY_SLOW                                              :foarte incet
-STR_681C_SLOW                                                   :Incet
+STR_681B_VERY_SLOW                                              :foarte încet
+STR_681C_SLOW                                                   :încet
 STR_681D_MEDIUM                                                 :mediu
 STR_681E_FAST                                                   :repede
 STR_681F_VERY_FAST                                              :foarte repede
 STR_VERY_LOW                                                    :foarte scãzut
-STR_6820_LOW                                                    :scãzut
+STR_6820_LOW                                                    :scăzut
 STR_6821_MEDIUM                                                 :mediu
 STR_6822_HIGH                                                   :ridicat
 STR_6823_NONE                                                   :deloc
 STR_6824_REDUCED                                                :rare
-STR_6825_NORMAL                                                 :frecventã normalã
-STR_6826_X1_5                                                   :x1.5
+STR_6825_NORMAL                                                 :frecvenţă normală
+STR_6826_X1_5                                                   :x1,5
 STR_6827_X2                                                     :x2
 STR_6828_X3                                                     :x3
 STR_6829_X4                                                     :x4
@@ -2072,45 +2098,45 @@
 STR_682B_FLAT                                                   :plat
 STR_682C_HILLY                                                  :deluros
 STR_682D_MOUNTAINOUS                                            :muntos
-STR_682E_STEADY                                                 :stabilã
-STR_682F_FLUCTUATING                                            :fluctuantã
+STR_682E_STEADY                                                 :stabilă
+STR_682F_FLUCTUATING                                            :fluctuantă
 STR_6830_IMMEDIATE                                              :imediat
-STR_6831_3_MONTHS_AFTER_PLAYER                                  :la 3 luni dupã jucãtor
-STR_6832_6_MONTHS_AFTER_PLAYER                                  :la 6 luni dupã jucãtor
-STR_6833_9_MONTHS_AFTER_PLAYER                                  :la 9 luni dupã jucãtor
-STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :la capãt de linie si în garã
-STR_6835_AT_END_OF_LINE_ONLY                                    :doar la capãt de linie
+STR_6831_3_MONTHS_AFTER_PLAYER                                  :la 3 luni după jucător
+STR_6832_6_MONTHS_AFTER_PLAYER                                  :la 6 luni după jucător
+STR_6833_9_MONTHS_AFTER_PLAYER                                  :la 9 luni după jucător
+STR_6834_AT_END_OF_LINE_AND_AT_STATIONS                         :la capăt de linie şi în gară
+STR_6835_AT_END_OF_LINE_ONLY                                    :doar la capăt de linie
 STR_6836_OFF                                                    :inactiv
 STR_6837_ON                                                     :activ
-STR_6838_SHOW_HI_SCORE_CHART                                    :{BLACK}Afiseazã clasamentul celor mai bune punctaje
-STR_6839_PERMISSIVE                                             :permisivã
-STR_683A_TOLERANT                                               :tolerantã
-STR_683B_HOSTILE                                                :ostilã
+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ă
 
 ##id 0x7000
 STR_7000                                                        :
 STR_7001                                                        :{WHITE}{COMPANY} {BLACK}{PLAYERNAME}
-STR_7002_PLAYER                                                 :(Jucãtorul {COMMA})
-STR_7004_NEW_FACE                                               :{BLACK}Schimbã foto
+STR_7002_PLAYER                                                 :(Jucătorul {COMMA})
+STR_7004_NEW_FACE                                               :{BLACK}Schimbă poza
 STR_7005_COLOR_SCHEME                                           :{BLACK}Culoare
 STR_7006_COLOR_SCHEME                                           :{GOLD}Culoare:
 STR_7007_NEW_COLOR_SCHEME                                       :{WHITE}Alege noua culoare
-STR_7008_COMPANY_NAME                                           :{BLACK}Nume companie
-STR_7009_PRESIDENT_NAME                                         :{BLACK}Presedinte
+STR_7008_COMPANY_NAME                                           :{BLACK}Numele companiei
+STR_7009_PRESIDENT_NAME                                         :{BLACK}Numele preÅŸedintelui
 STR_700A_COMPANY_NAME                                           :Noul nume al companiei
-STR_700B_PRESIDENT_S_NAME                                       :Numele noului presedinte
+STR_700B_PRESIDENT_S_NAME                                       :Noul nume al preÅŸedintelui
 STR_700C_CAN_T_CHANGE_COMPANY_NAME                              :{WHITE}Nu pot schimba numele companiei...
-STR_700D_CAN_T_CHANGE_PRESIDENT                                 :{WHITE}Nu pot schimba numele presedintelui...
-STR_700E_FINANCES                                               :{WHITE}Situatia financiarã a companiei {COMPANY} {BLACK}{PLAYERNAME}
+STR_700D_CAN_T_CHANGE_PRESIDENT                                 :{WHITE}Nu pot schimba numele preÅŸedintelui...
+STR_700E_FINANCES                                               :{WHITE}Situaţia financiară a companiei {COMPANY} {BLACK}{PLAYERNAME}
 STR_700F_EXPENDITURE_INCOME                                     :{WHITE}Cheltuieli/Venituri
 STR_7010                                                        :{WHITE}{NUM}
-STR_7011_CONSTRUCTION                                           :{GOLD}Constructii
+STR_7011_CONSTRUCTION                                           :{GOLD}Construcţii
 STR_7012_NEW_VEHICLES                                           :{GOLD}Vehicule noi
 STR_7013_TRAIN_RUNNING_COSTS                                    :{GOLD}Costuri trenuri
 STR_7014_ROAD_VEH_RUNNING_COSTS                                 :{GOLD}Costuri autovehicule
 STR_7015_AIRCRAFT_RUNNING_COSTS                                 :{GOLD}Costuri aeronave
 STR_7016_SHIP_RUNNING_COSTS                                     :{GOLD}Costuri nave
-STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Întretinere proprietãti
+STR_7017_PROPERTY_MAINTENANCE                                   :{GOLD}Întreţinere proprietăţi
 STR_7018_TRAIN_INCOME                                           :{GOLD}Venituri trenuri
 STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Venituri autovehicule
 STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Venituri aeronave
@@ -2125,67 +2151,67 @@
 STR_CURRCOMPACT                                                 :{CURRCOMPACT64}
 STR_7024                                                        :{COMMA}
 STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Graficul profitului din operare
-STR_7026_BANK_BALANCE                                           :{WHITE}Balantã curentã
+STR_7026_BANK_BALANCE                                           :{WHITE}Balanţă curentă
 STR_7027_LOAN                                                   :{WHITE}Credite
 STR_MAX_LOAN                                                    :{WHITE}Limita credite:  {BLACK}{CURRENCY64}
 STR_7028                                                        :{BLACK}{CURRENCY64}
-STR_7029_BORROW                                                 :{BLACK}Împrumutã {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
-STR_702A_REPAY                                                  :{BLACK}Plãteste înapoi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
+STR_7029_BORROW                                                 :{BLACK}Împrumută {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
+STR_702A_REPAY                                                  :{BLACK}Plăteşte înapoi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
 STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...creditul maxim permis este de {CURRENCY}
-STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Nu mai poti imprumuta bani...
-STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...nu ai nici un credit de plãtit
+STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Nu mai poţi împrumuta bani...
+STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...nu ai nici un credit de plătit
 STR_702E_REQUIRED                                               :{WHITE}...ai nevoie de {CURRENCY}
-STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Nu poti plãti creditul...
+STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Nu poţi plăti creditul...
 STR_INSUFFICIENT_FUNDS                                          :{WHITE}Nu poti dona din banii împrumutati de bancã...
-STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Alege o nouã fotografie a presedintelui
-STR_7031_CHANGE_THE_COMPANY_VEHICLE                             :{BLACK}Schimbã culoarea care îti reprezintã compania
-STR_7032_CHANGE_THE_PRESIDENT_S                                 :{BLACK}Schimbã numele presedintelui
-STR_7033_CHANGE_THE_COMPANY_NAME                                :{BLACK}Schimbã numele companiei
-STR_7034_CLICK_ON_SELECTED_NEW_COLOR                            :{BLACK}Clic pe culoarea selectatã
-STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Împrumutã o nouã sumã de bani
-STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Plãteste inapoi o parte din credite
-STR_7037_PRESIDENT                                              :{WHITE}{PLAYERNAME}{}{GOLD}(Presedinte)
-STR_7038_INAUGURATED                                            :{GOLD}Anul înfiintãrii: {WHITE}{NUM}
+STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Alege o nouă poză a preşedintelui
+STR_7031_CHANGE_THE_COMPANY_VEHICLE                             :{BLACK}Schimbă culoarea care îţi reprezintă compania
+STR_7032_CHANGE_THE_PRESIDENT_S                                 :{BLACK}Schimbă numele preşedintelui
+STR_7033_CHANGE_THE_COMPANY_NAME                                :{BLACK}Schimbă numele companiei
+STR_7034_CLICK_ON_SELECTED_NEW_COLOR                            :{BLACK}Clic pe culoarea dorită
+STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Împrumută o nouă sumă de bani
+STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Plăteşte înapoi o parte din credite
+STR_7037_PRESIDENT                                              :{WHITE}{PLAYERNAME}{}{GOLD}(PreÅŸedinte)
+STR_7038_INAUGURATED                                            :{GOLD}Anul înfiinţării: {WHITE}{NUM}
 STR_7039_VEHICLES                                               :{GOLD}Vehicule:
 STR_TRAINS                                                      :{WHITE}{COMMA} tren{P "" uri}
 STR_ROAD_VEHICLES                                               :{WHITE}{COMMA} autovehicul{P "" e}
 STR_AIRCRAFT                                                    :{WHITE}{COMMA} aeronav{P ã e}
 STR_SHIPS                                                       :{WHITE}{COMMA} nav{P ã e}
 STR_7042_NONE                                                   :{WHITE}Nici unul
-STR_7043_FACE_SELECTION                                         :{WHITE}Alegerea fotografiei
-STR_7044_MALE                                                   :{BLACK}Bãrbat
+STR_7043_FACE_SELECTION                                         :{WHITE}Alegerea pozei
+STR_7044_MALE                                                   :{BLACK}Bărbat
 STR_7045_FEMALE                                                 :{BLACK}Femeie
-STR_7046_NEW_FACE                                               :{BLACK}Foto nouã
-STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Anuleazã alegerea unei noi fotografii
-STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Acceptã fotografia selectatã
-STR_7049_SELECT_MALE_FACES                                      :{BLACK}Alege figurã masculinã
-STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Alege figurã femininã
-STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Genereazã foto aleatoare
+STR_7046_NEW_FACE                                               :{BLACK}Poză nouă
+STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Anulează alegerea unei noi poze
+STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Acceptă poza selectată
+STR_7049_SELECT_MALE_FACES                                      :{BLACK}Alege figură masculină
+STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Alege figură feminină
+STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Generează poză aleatoare
 STR_704C_KEY                                                    :{BLACK}Legenda
-STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Afiseazã legenda graficelor
+STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Afişează legenda graficelor
 STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Legenda graficelor
-STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Clic aici pentru a comuta afisarea informatiilor despre companie
-STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Unitãti de marfã livratã
-STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Ratingul performantelor companiilor (rating maxim=1000)
+STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Clic aici pentru a comuta afişarea informaţiilor despre companie
+STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Unităţi de marfă livrate
+STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Evaluarea performanţelor companiilor (maxim=1000)
 STR_7052_COMPANY_VALUES                                         :{WHITE}Valorile companiilor
 STR_7053_COMPANY_LEAGUE_TABLE                                   :{WHITE}Clasamentul companiilor
 STR_7054                                                        :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME} '{STRING}'
 STR_7055                                                        :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME}  '{STRING}'
 STR_7056_TRANSPORT_COMPANY_IN_TROUBLE                           :{BLACK}{BIGFONT}Companie de transport cu probleme!
-STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} va fi vândutã dacã situatia nu se va îmbunãtãti curând!
-STR_7058_PRESIDENT                                              :{BLACK}{PLAYERNAME}{}(Presedinte)
-STR_7059_TRANSPORT_COMPANY_MERGER                               :{BLACK}{BIGFONT}Fuziune între companiile de transport!
-STR_705A_HAS_BEEN_SOLD_TO_FOR                                   :{BLACK}{BIGFONT}{COMPANY} a fost vândutã companiei {COMPANY} la pretul de {CURRENCY}!
-STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT                         :{WHITE}Cãutãm o companie de transport care sã preia societatea noastrã {}{}Doriti sã cumpãrati {COMPANY} la pretul de {CURRENCY}?
+STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED                           :{BLACK}{BIGFONT}{COMPANY} va fi vândută dacă situaţia financiară nu se va îmbunătăţi curând!
+STR_7058_PRESIDENT                                              :{BLACK}{PLAYERNAME}{}(PreÅŸedinte)
+STR_7059_TRANSPORT_COMPANY_MERGER                               :{BLACK}{BIGFONT}Fuziune între companii de transport!
+STR_705A_HAS_BEEN_SOLD_TO_FOR                                   :{BLACK}{BIGFONT}{COMPANY} a fost vândută companiei {COMPANY} la preţul de {CURRENCY}!
+STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT                         :{WHITE}Căutăm o companie de transport care să preia societatea noastră {}{}Doriţi să cumpăraţi {COMPANY} la preţul de {CURRENCY}?
 STR_705C_BANKRUPT                                               :{BLACK}{BIGFONT}Faliment!
-STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}Compania {COMPANY} a fost închisã si toate activele au fost valorificate de creditori!
-STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}A apãrut o nouã companie!
-STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} si-a stabilit sediul lângã {TOWN}!
-STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Nu pot cumpãra compania...
-STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Preturile transportului de cãlãtori si mãrfuri
+STR_705D_HAS_BEEN_CLOSED_DOWN_BY                                :{BLACK}{BIGFONT}Compania {COMPANY} a fost închisă şi toate activele au fost valorificate de creditori!
+STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED                         :{BLACK}{BIGFONT}A apărut o nouă companie!
+STR_705F_STARTS_CONSTRUCTION_NEAR                               :{BLACK}{BIGFONT}{COMPANY} şi-a stabilit sediul lângă {TOWN}!
+STR_7060_CAN_T_BUY_COMPANY                                      :{WHITE}Nu pot cumpăra compania...
+STR_7061_CARGO_PAYMENT_RATES                                    :{WHITE}Preţurile transportului de călători şi mărfuri
 STR_7062_DAYS_IN_TRANSIT                                        :{BLACK}{TINYFONT}Zile în tranzit
-STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Plata pentru livrarea a 10 unitãti (sau 10,000 de litri) de marfã pe o distantã de 20 de pãtrãtele
-STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Comutator pentru afisarea graficului pentru marfã
+STR_7063_PAYMENT_FOR_DELIVERING                                 :{BLACK}{TINYFONT}Plata pentru livrarea a 10 unităţi (sau 10.000 de litri) de marfă pe o distanţă de 20 de pătrăţele
+STR_7064_TOGGLE_GRAPH_FOR_CARGO                                 :{BLACK}Comutator pentru afişarea graficului pentru marfă
 STR_7065                                                        :{BLACK}{TINYFONT}{STRING}
 STR_7066_ENGINEER                                               :Inginer
 STR_7067_TRAFFIC_MANAGER                                        :Manager de trafic
@@ -2194,10 +2220,10 @@
 STR_706A_DIRECTOR                                               :Director
 STR_706B_CHIEF_EXECUTIVE                                        :Director executiv
 STR_706C_CHAIRMAN                                               :Director general
-STR_706D_PRESIDENT                                              :Presedinte
+STR_706D_PRESIDENT                                              :PreÅŸedinte
 STR_706E_TYCOON                                                 :Magnat
-STR_706F_BUILD_HQ                                               :{BLACK}Constr. sediu
-STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Construieste/aratã sediul companiei
+STR_706F_BUILD_HQ                                               :{BLACK}ConstruieÅŸte sediu
+STR_7070_BUILD_COMPANY_HEADQUARTERS                             :{BLACK}Construieşte sau arată sediul companiei
 STR_RELOCATE_COMPANY_HEADQUARTERS                               :{BLACK}Muta sediul companiei (costa 1% din valoarea companiei)
 STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS                       :{WHITE}Nu pot construi sediul...
 STR_7072_VIEW_HQ                                                :{BLACK}Vezi sediul
@@ -2205,20 +2231,20 @@
 STR_COMPANY_PASSWORD                                            :{BLACK}Parola
 STR_COMPANY_PASSWORD_TOOLTIP                                    :{BLACK}Protejeaza-ti compania cu o parola pentru a preveni accesul neautorizat.
 STR_SET_COMPANY_PASSWORD                                        :Alege parola companiei
-STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Recesiune mondialã!{}{}Expertii financiari se tem de ceea ce e mai rãu odatã cu prãbusirea economicã!
-STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Recesiunea s-a încheiat!{}{}Cresterea comertului dã încredere industriei, iar economia se redreseazã!
-STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Comutator pentru mãrimea ferestrei
+STR_7073_WORLD_RECESSION_FINANCIAL                              :{BIGFONT}{BLACK}Recesiune mondială!{}{}Experţii financiari se tem de ceea ce e mai rău odată cu prăbuşirea economică!
+STR_7074_RECESSION_OVER_UPTURN_IN                               :{BIGFONT}{BLACK}Recesiunea s-a încheiat!{}{}Creşterea comerţului dă încredere industriei, iar economia se redresează!
+STR_7075_TOGGLE_LARGE_SMALL_WINDOW                              :{BLACK}Comutator pentru mărimea ferestrei
 STR_7076_COMPANY_VALUE                                          :{GOLD}Valoarea companiei: {WHITE}{CURRENCY64}
-STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Cumpãrã 25% din companie
-STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Vinde 25% din companie
-STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Cumpãrã 25% din actiunile aceste companii
-STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}Vinde 25% din actiunile aceste companii
-STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}Nu pot cumpãra 25% din aceastã companie...
-STR_707C_CAN_T_SELL_25_SHARE_IN                                 :{WHITE}Nu pot vinde 25% din aceastã companie...
-STR_707D_OWNED_BY                                               :{WHITE}({COMMA}% detinute de {COMPANY})
-STR_707E_OWNED_BY_OWNED_BY                                      :{WHITE}({COMMA}% detinute de {COMPANY}{}   {COMMA}% detinute de {COMPANY})
-STR_707F_HAS_BEEN_TAKEN_OVER_BY                                 :{BLACK}{BIGFONT}{COMPANY} a fost preluatã de {COMPANY}!
-STR_7080_PROTECTED                                              :{WHITE}Aceasta companie inca nu vinde actiuni...
+STR_7077_BUY_25_SHARE_IN_COMPANY                                :{BLACK}Cumpără 25% din acţiunile companiei
+STR_7078_SELL_25_SHARE_IN_COMPANY                               :{BLACK}Vinde 25% din acţiunile companiei
+STR_7079_BUY_25_SHARE_IN_THIS_COMPANY                           :{BLACK}Cumpără 25% din acţiunile acestei companii
+STR_707A_SELL_25_SHARE_IN_THIS_COMPANY                          :{BLACK}Vinde 25% din acţiunile acestei companii
+STR_707B_CAN_T_BUY_25_SHARE_IN_THIS                             :{WHITE}Nu pot cumpăra 25% din acţiunile acestei companii...
+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_707E_OWNED_BY_OWNED_BY                                      :{WHITE}({COMMA}% deţinute de {COMPANY}{}   {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_LIVERY_DEFAULT                                              :Uniforma standard
 STR_LIVERY_STEAM                                                :Motor cu abur
@@ -2228,9 +2254,9 @@
 STR_LIVERY_MAGLEV                                               :Motor Maglev
 STR_LIVERY_DMU                                                  :DMU
 STR_LIVERY_EMU                                                  :EMU
-STR_LIVERY_PASSENGER_WAGON_STEAM                                :Trasura de pasageri (Aburi)
-STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Trasura de pasageri (Diesel)
-STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Trasura de pasageri (Electrica)
+STR_LIVERY_PASSENGER_WAGON_STEAM                                :Vagon de călători (Aburi)
+STR_LIVERY_PASSENGER_WAGON_DIESEL                               :Vagon de călători (Diesel)
+STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :Vagon de călători (Electric)
 STR_LIVERY_FREIGHT_WAGON                                        :Vagon de marfa
 STR_LIVERY_BUS                                                  :Autobus
 STR_LIVERY_TRUCK                                                :Camion
@@ -2277,60 +2303,60 @@
 STR_8018_SH_40_ELECTRIC                                         :SH '40' (Electric)
 STR_8019_T_I_M_ELECTRIC                                         :'T.I.M.' (Electric)
 STR_801A_ASIASTAR_ELECTRIC                                      :'AsiaStar' (Electric)
-STR_801B_PASSENGER_CAR                                          :Vagon pentru cãlãtori
-STR_801C_MAIL_VAN                                               :Vagon pentru postã
-STR_801D_COAL_CAR                                               :Vagon pentru cãrbuni
-STR_801E_OIL_TANKER                                             :Cisternã pentru petrol
+STR_801B_PASSENGER_CAR                                          :Vagon pentru călători
+STR_801C_MAIL_VAN                                               :Vagon pentru poştă
+STR_801D_COAL_CAR                                               :Vagon pentru cărbuni
+STR_801E_OIL_TANKER                                             :Cisternă pentru petrol
 STR_801F_LIVESTOCK_VAN                                          :Vagon pentru animale
 STR_8020_GOODS_VAN                                              :Vagon pentru bunuri
 STR_8021_GRAIN_HOPPER                                           :Vagon pentru cereale
 STR_8022_WOOD_TRUCK                                             :Vagon pentru lemne
 STR_8023_IRON_ORE_HOPPER                                        :Vagon pentru minereu de fier
-STR_8024_STEEL_TRUCK                                            :Vagon pentru otel
+STR_8024_STEEL_TRUCK                                            :Vagon pentru oţel
 STR_8025_ARMORED_VAN                                            :Vagon blindat
 STR_8026_FOOD_VAN                                               :Vagon pentru alimente
 STR_8027_PAPER_TRUCK                                            :Vagon pentru hârtie
 STR_8028_COPPER_ORE_HOPPER                                      :Vagon pentru minereu de cupru
-STR_8029_WATER_TANKER                                           :Cisternã pentru apã
+STR_8029_WATER_TANKER                                           :Cisternă pentru apă
 STR_802A_FRUIT_TRUCK                                            :Vagon penru fructe
 STR_802B_RUBBER_TRUCK                                           :Vagon pentru cauciuc
-STR_802C_SUGAR_TRUCK                                            :Vagon pentru zahãr
-STR_802D_COTTON_CANDY_HOPPER                                    :Vagon pentru vatã de zahãr
+STR_802C_SUGAR_TRUCK                                            :Vagon pentru zahăr
+STR_802D_COTTON_CANDY_HOPPER                                    :Vagon pentru vată de zahăr
 STR_802E_TOFFEE_HOPPER                                          :Vagon pentru caramel
-STR_802F_BUBBLE_VAN                                             :Vagon pentru balonase
-STR_8030_COLA_TANKER                                            :Cisternã pentru cola
+STR_802F_BUBBLE_VAN                                             :Vagon pentru balonaÅŸe
+STR_8030_COLA_TANKER                                            :Cisternă pentru cola
 STR_8031_CANDY_VAN                                              :Vagon pentru bomboane
-STR_8032_TOY_VAN                                                :Vagon pentru jucãrii
+STR_8032_TOY_VAN                                                :Vagon pentru jucării
 STR_8033_BATTERY_TRUCK                                          :Vagon pentru baterii
 STR_8034_FIZZY_DRINK_TRUCK                                      :Vagon pentru sucuri
 STR_8035_PLASTIC_TRUCK                                          :Vagon pentru plastic
 STR_8036_X2001_ELECTRIC                                         :'X2001' (Electric)
 STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Millennium Z1' (Electric)
 STR_8038_WIZZOWOW_Z99                                           :Wizzowow Z99
-STR_8039_PASSENGER_CAR                                          :Vagon pentru cãlãtori
-STR_803A_MAIL_VAN                                               :Vagon pentru postã
-STR_803B_COAL_CAR                                               :Vagon pentru cãrbuni
-STR_803C_OIL_TANKER                                             :Cisternã pentru petrol
+STR_8039_PASSENGER_CAR                                          :Vagon pentru călători
+STR_803A_MAIL_VAN                                               :Vagon pentru poştă
+STR_803B_COAL_CAR                                               :Vagon pentru cărbuni
+STR_803C_OIL_TANKER                                             :Cisternă pentru petrol
 STR_803D_LIVESTOCK_VAN                                          :Vagon pentru animale
 STR_803E_GOODS_VAN                                              :Vagon pentru bunuri
 STR_803F_GRAIN_HOPPER                                           :Vagon pentru cereale
 STR_8040_WOOD_TRUCK                                             :Vagon pentru lemne
 STR_8041_IRON_ORE_HOPPER                                        :Vagon pentru minereu de fier
-STR_8042_STEEL_TRUCK                                            :Vagon pentru otel
+STR_8042_STEEL_TRUCK                                            :Vagon pentru oţel
 STR_8043_ARMORED_VAN                                            :Vagon blindat
 STR_8044_FOOD_VAN                                               :Vagon pentru alimente
 STR_8045_PAPER_TRUCK                                            :Vagon pentru hârtie
 STR_8046_COPPER_ORE_HOPPER                                      :Vagon pentru minereu de cupru
-STR_8047_WATER_TANKER                                           :Cisternã pentru apã
+STR_8047_WATER_TANKER                                           :Cisternă pentru apă
 STR_8048_FRUIT_TRUCK                                            :Vagon pentru fructe
 STR_8049_RUBBER_TRUCK                                           :Vagon pentru cauciuc
-STR_804A_SUGAR_TRUCK                                            :Vagon pentru zahãr
-STR_804B_COTTON_CANDY_HOPPER                                    :Vagon pentru vatã de zahãr
+STR_804A_SUGAR_TRUCK                                            :Vagon pentru zahăr
+STR_804B_COTTON_CANDY_HOPPER                                    :Vagon pentru vată de zahăr
 STR_804C_TOFFEE_HOPPER                                          :Vagon pentru caramel
-STR_804D_BUBBLE_VAN                                             :Vagon pentru balonase
-STR_804E_COLA_TANKER                                            :Cisternã pentru cola
+STR_804D_BUBBLE_VAN                                             :Vagon pentru balonaÅŸe
+STR_804E_COLA_TANKER                                            :Cisternă pentru cola
 STR_804F_CANDY_VAN                                              :Vagon pentru bomboane
-STR_8050_TOY_VAN                                                :Vagon pentru jucãrii
+STR_8050_TOY_VAN                                                :Vagon pentru jucării
 STR_8051_BATTERY_TRUCK                                          :Vagon pentru baterii
 STR_8052_FIZZY_DRINK_TRUCK                                      :Vagon pentru sucuri
 STR_8053_PLASTIC_TRUCK                                          :Vagon pentru plastic
@@ -2339,30 +2365,30 @@
 STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Lev3 'Pegasus' (Electric)
 STR_8057_LEV4_CHIMAERA_ELECTRIC                                 :Lev4 'Chimaera' (Electric)
 STR_8058_WIZZOWOW_ROCKETEER                                     :Wizzowow Rocketeer
-STR_8059_PASSENGER_CAR                                          :Vagon pentru cãlãtori
-STR_805A_MAIL_VAN                                               :Vagon pentru postã
-STR_805B_COAL_CAR                                               :Vagon pentru cãrbuni
-STR_805C_OIL_TANKER                                             :Cisternã pentru petrol
+STR_8059_PASSENGER_CAR                                          :Vagon pentru călători
+STR_805A_MAIL_VAN                                               :Vagon pentru poştă
+STR_805B_COAL_CAR                                               :Vagon pentru cărbuni
+STR_805C_OIL_TANKER                                             :Cisternă pentru petrol
 STR_805D_LIVESTOCK_VAN                                          :Vagon pentru animale
 STR_805E_GOODS_VAN                                              :Vagon pentru bunuri
 STR_805F_GRAIN_HOPPER                                           :Vagon pentru cereale
 STR_8060_WOOD_TRUCK                                             :Vagon pentru lemne
 STR_8061_IRON_ORE_HOPPER                                        :Vagon pentru minereu de fier
-STR_8062_STEEL_TRUCK                                            :Vagon pentru otel
+STR_8062_STEEL_TRUCK                                            :Vagon pentru oţel
 STR_8063_ARMORED_VAN                                            :Vagon blindat
 STR_8064_FOOD_VAN                                               :Vagon pentru alimente
 STR_8065_PAPER_TRUCK                                            :Vagon pentru hârtie
 STR_8066_COPPER_ORE_HOPPER                                      :Vagon pentru minereu de cupru
-STR_8067_WATER_TANKER                                           :Cisternã pentru apã
+STR_8067_WATER_TANKER                                           :Cisternă pentru apă
 STR_8068_FRUIT_TRUCK                                            :Vagon pentru fructe
 STR_8069_RUBBER_TRUCK                                           :Vagon pentru cauciuc
-STR_806A_SUGAR_TRUCK                                            :Vagon pentru zahãr
-STR_806B_COTTON_CANDY_HOPPER                                    :Vagon pentru vatã de zahãr
+STR_806A_SUGAR_TRUCK                                            :Vagon pentru zahăr
+STR_806B_COTTON_CANDY_HOPPER                                    :Vagon pentru vată de zahăr
 STR_806C_TOFFEE_HOPPER                                          :Vagon pentru caramel
-STR_806D_BUBBLE_VAN                                             :Vagon pentru balonase
-STR_806E_COLA_TANKER                                            :Cisternã pentru cola
+STR_806D_BUBBLE_VAN                                             :Vagon pentru balonaÅŸe
+STR_806E_COLA_TANKER                                            :Cisternă pentru cola
 STR_806F_CANDY_VAN                                              :Vagon pentru bomboane
-STR_8070_TOY_VAN                                                :Vagon pentru jucãrii
+STR_8070_TOY_VAN                                                :Vagon pentru jucării
 STR_8071_BATTERY_TRUCK                                          :Vagon pentru baterii
 STR_8072_FIZZY_DRINK_TRUCK                                      :Vagon pentru sucuri
 STR_8073_PLASTIC_TRUCK                                          :Vagon pentru plastic
@@ -2373,18 +2399,18 @@
 STR_8078_PLODDYPHUT_MKI_BUS                                     :Autobuz Ploddyphut MkI
 STR_8079_PLODDYPHUT_MKII_BUS                                    :Autobuz Ploddyphut MkII
 STR_807A_PLODDYPHUT_MKIII_BUS                                   :Autobuz Ploddyphut MkIII
-STR_807B_BALOGH_COAL_TRUCK                                      :Camion pentru cãrbuni Balogh
-STR_807C_UHL_COAL_TRUCK                                         :Camion pentru cãrbuni Uhl
-STR_807D_DW_COAL_TRUCK                                          :Camion pentru cãrbuni DW
-STR_807E_MPS_MAIL_TRUCK                                         :Camion postal MPS
-STR_807F_REYNARD_MAIL_TRUCK                                     :Camion postal Reynard
-STR_8080_PERRY_MAIL_TRUCK                                       :Camion postal Perry
-STR_8081_MIGHTYMOVER_MAIL_TRUCK                                 :Camion postal MightyMover
-STR_8082_POWERNAUGHT_MAIL_TRUCK                                 :Camion postal Powernaught
-STR_8083_WIZZOWOW_MAIL_TRUCK                                    :Camion postal Wizzowow
-STR_8084_WITCOMBE_OIL_TANKER                                    :Cisternã pentru petrol Witcombe
-STR_8085_FOSTER_OIL_TANKER                                      :Cisternã pentru petrol Foster
-STR_8086_PERRY_OIL_TANKER                                       :Cisternã pentru petrol Perry
+STR_807B_BALOGH_COAL_TRUCK                                      :Camion pentru cărbuni Balogh
+STR_807C_UHL_COAL_TRUCK                                         :Camion pentru cărbuni Uhl
+STR_807D_DW_COAL_TRUCK                                          :Camion pentru cărbuni DW
+STR_807E_MPS_MAIL_TRUCK                                         :Camion poÅŸtal MPS
+STR_807F_REYNARD_MAIL_TRUCK                                     :Camion poÅŸtal Reynard
+STR_8080_PERRY_MAIL_TRUCK                                       :Camion poÅŸtal Perry
+STR_8081_MIGHTYMOVER_MAIL_TRUCK                                 :Camion poÅŸtal MightyMover
+STR_8082_POWERNAUGHT_MAIL_TRUCK                                 :Camion poÅŸtal Powernaught
+STR_8083_WIZZOWOW_MAIL_TRUCK                                    :Camion poÅŸtal Wizzowow
+STR_8084_WITCOMBE_OIL_TANKER                                    :Cisternă pentru petrol Witcombe
+STR_8085_FOSTER_OIL_TANKER                                      :Cisternă pentru petrol Foster
+STR_8086_PERRY_OIL_TANKER                                       :Cisternă pentru petrol Perry
 STR_8087_TALBOTT_LIVESTOCK_VAN                                  :Camion pentru animale Talbott
 STR_8088_UHL_LIVESTOCK_VAN                                      :Camion pentru animale Uhl
 STR_8089_FOSTER_LIVESTOCK_VAN                                   :Camion pentru animale Foster
@@ -2400,9 +2426,9 @@
 STR_8093_MPS_IRON_ORE_TRUCK                                     :Camion pentru fier MPS
 STR_8094_UHL_IRON_ORE_TRUCK                                     :Camion pentru fier Uhl
 STR_8095_CHIPPY_IRON_ORE_TRUCK                                  :Camion pentru fier Chippy
-STR_8096_BALOGH_STEEL_TRUCK                                     :Camion pentru otel Balogh
-STR_8097_UHL_STEEL_TRUCK                                        :Camion pentru otel Uhl
-STR_8098_KELLING_STEEL_TRUCK                                    :Camion pentru otel Kelling
+STR_8096_BALOGH_STEEL_TRUCK                                     :Camion pentru oţel Balogh
+STR_8097_UHL_STEEL_TRUCK                                        :Camion pentru oţel Uhl
+STR_8098_KELLING_STEEL_TRUCK                                    :Camion pentru oţel Kelling
 STR_8099_BALOGH_ARMORED_TRUCK                                   :Camion blindat Balogh
 STR_809A_UHL_ARMORED_TRUCK                                      :Camion blindat Uhl
 STR_809B_FOSTER_ARMORED_TRUCK                                   :Camion blindat Foster
@@ -2415,56 +2441,56 @@
 STR_80A2_MPS_COPPER_ORE_TRUCK                                   :Camion pentru cupru MPS
 STR_80A3_UHL_COPPER_ORE_TRUCK                                   :Camion pentru cupru Uhl
 STR_80A4_GOSS_COPPER_ORE_TRUCK                                  :Camion pentru cupru Goss
-STR_80A5_UHL_WATER_TANKER                                       :Cisternã pentru apã Uhl
-STR_80A6_BALOGH_WATER_TANKER                                    :Cisternã pentru apã Balogh
-STR_80A7_MPS_WATER_TANKER                                       :Cisternã pentru apã MPS
+STR_80A5_UHL_WATER_TANKER                                       :Cisternă pentru apă Uhl
+STR_80A6_BALOGH_WATER_TANKER                                    :Cisternă pentru apă Balogh
+STR_80A7_MPS_WATER_TANKER                                       :Cisternă pentru apă MPS
 STR_80A8_BALOGH_FRUIT_TRUCK                                     :Camion pentru fructe Balogh
 STR_80A9_UHL_FRUIT_TRUCK                                        :Camion pentru fructe Uhl
 STR_80AA_KELLING_FRUIT_TRUCK                                    :Camion pentru fructe Kelling
 STR_80AB_BALOGH_RUBBER_TRUCK                                    :Camion pentru cauciuc Balogh
 STR_80AC_UHL_RUBBER_TRUCK                                       :Camion pentru cauciuc Uhl
 STR_80AD_RMT_RUBBER_TRUCK                                       :Camion pentru cauciuc RMT
-STR_80AE_MIGHTYMOVER_SUGAR_TRUCK                                :Camion pt. zahãr MightyMover
-STR_80AF_POWERNAUGHT_SUGAR_TRUCK                                :Camion pt. zahãr Powernaught
-STR_80B0_WIZZOWOW_SUGAR_TRUCK                                   :Camion pentru zahãr Wizzowow
-STR_80B1_MIGHTYMOVER_COLA_TRUCK                                 :Cola Camion MightyMover
-STR_80B2_POWERNAUGHT_COLA_TRUCK                                 :Cola Camion Powernaught
-STR_80B3_WIZZOWOW_COLA_TRUCK                                    :Cola Camion Wizzowow
-STR_80B4_MIGHTYMOVER_COTTON_CANDY                               :Camion pt. vatã zahãr MightyMover
-STR_80B5_POWERNAUGHT_COTTON_CANDY                               :Camion pt. vatã zahãr Powernaught
-STR_80B6_WIZZOWOW_COTTON_CANDY_TRUCK                            :Camion pt. vatã zahãr Wizzowow
-STR_80B7_MIGHTYMOVER_TOFFEE_TRUCK                               :Camion pt. caramel MightyMover
-STR_80B8_POWERNAUGHT_TOFFEE_TRUCK                               :Camion pt. caramel Powernaught
+STR_80AE_MIGHTYMOVER_SUGAR_TRUCK                                :Camion pentru zahăr MightyMover
+STR_80AF_POWERNAUGHT_SUGAR_TRUCK                                :Camion pentru zahăr Powernaught
+STR_80B0_WIZZOWOW_SUGAR_TRUCK                                   :Camion pentru zahăr Wizzowow
+STR_80B1_MIGHTYMOVER_COLA_TRUCK                                 :Camion pentru cola MightyMover
+STR_80B2_POWERNAUGHT_COLA_TRUCK                                 :Camion pentru cola Powernaught
+STR_80B3_WIZZOWOW_COLA_TRUCK                                    :Camion pentru cola Wizzowow
+STR_80B4_MIGHTYMOVER_COTTON_CANDY                               :Camion pentru vată de zahăr MightyMover
+STR_80B5_POWERNAUGHT_COTTON_CANDY                               :Camion pentru vată de zahăr Powernaught
+STR_80B6_WIZZOWOW_COTTON_CANDY_TRUCK                            :Camion pentru vată de zahăr Wizzowow
+STR_80B7_MIGHTYMOVER_TOFFEE_TRUCK                               :Camion pentru caramel MightyMover
+STR_80B8_POWERNAUGHT_TOFFEE_TRUCK                               :Camion pentru caramel Powernaught
 STR_80B9_WIZZOWOW_TOFFEE_TRUCK                                  :Camion pentru caramel Wizzowow
-STR_80BA_MIGHTYMOVER_TOY_VAN                                    :Camion pt. jucãrii MightyMover
-STR_80BB_POWERNAUGHT_TOY_VAN                                    :Camion pt. jucãrii Powernaught
-STR_80BC_WIZZOWOW_TOY_VAN                                       :Camion pentru jucãrii Wizzowow
-STR_80BD_MIGHTYMOVER_CANDY_TRUCK                                :Camion pt. bomboane MightyMover
-STR_80BE_POWERNAUGHT_CANDY_TRUCK                                :Camion pt. bomboane Powernaught
+STR_80BA_MIGHTYMOVER_TOY_VAN                                    :Camion pentru jucării MightyMover
+STR_80BB_POWERNAUGHT_TOY_VAN                                    :Camion pentru jucării Powernaught
+STR_80BC_WIZZOWOW_TOY_VAN                                       :Camion pentru jucării Wizzowow
+STR_80BD_MIGHTYMOVER_CANDY_TRUCK                                :Camion pentru bomboane MightyMover
+STR_80BE_POWERNAUGHT_CANDY_TRUCK                                :Camion pentru bomboane Powernaught
 STR_80BF_WIZZOWOW_CANDY_TRUCK                                   :Camion pentru bomboane Wizzowow
-STR_80C0_MIGHTYMOVER_BATTERY_TRUCK                              :Camion pt. baterii MightyMover
-STR_80C1_POWERNAUGHT_BATTERY_TRUCK                              :Camion pt. baterii Powernaught
+STR_80C0_MIGHTYMOVER_BATTERY_TRUCK                              :Camion pentru baterii MightyMover
+STR_80C1_POWERNAUGHT_BATTERY_TRUCK                              :Camion pentru baterii Powernaught
 STR_80C2_WIZZOWOW_BATTERY_TRUCK                                 :Camion pentru baterii Wizzowow
-STR_80C3_MIGHTYMOVER_FIZZY_DRINK                                :Camion pt. sucuri MightyMover
-STR_80C4_POWERNAUGHT_FIZZY_DRINK                                :Camion pt. sucuri Powernaught
+STR_80C3_MIGHTYMOVER_FIZZY_DRINK                                :Camion pentru sucuri MightyMover
+STR_80C4_POWERNAUGHT_FIZZY_DRINK                                :Camion pentru sucuri Powernaught
 STR_80C5_WIZZOWOW_FIZZY_DRINK_TRUCK                             :Camion pentru sucuri Wizzowow
-STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :Camion pt. plastic MightyMover
-STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Camion pt. plastic Powernaught
+STR_80C6_MIGHTYMOVER_PLASTIC_TRUCK                              :Camion pentru plastic MightyMover
+STR_80C7_POWERNAUGHT_PLASTIC_TRUCK                              :Camion pentru plastic Powernaught
 STR_80C8_WIZZOWOW_PLASTIC_TRUCK                                 :Camion pentru plastic Wizzowow
-STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :Camion pt. balonase MightyMover
-STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Camion pt. balonase Powernaught
-STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Camion pentru balonase Wizzowow
+STR_80C9_MIGHTYMOVER_BUBBLE_TRUCK                               :Camion pentru balonaÅŸe MightyMover
+STR_80CA_POWERNAUGHT_BUBBLE_TRUCK                               :Camion pentru balonaÅŸe Powernaught
+STR_80CB_WIZZOWOW_BUBBLE_TRUCK                                  :Camion pentru balonaÅŸe Wizzowow
 STR_80CC_MPS_OIL_TANKER                                         :Tanc petrolier MPS
 STR_80CD_CS_INC_OIL_TANKER                                      :Tanc petrolier CS-Inc.
-STR_80CE_MPS_PASSENGER_FERRY                                    :Vas de pasageri MPS
-STR_80CF_FFP_PASSENGER_FERRY                                    :Vas de pasageri FFP
-STR_80D0_BAKEWELL_300_HOVERCRAFT                                :Vas de pasageri Bakewell 300
-STR_80D1_CHUGGER_CHUG_PASSENGER                                 :Vas de pasageri Chugger-Chug
-STR_80D2_SHIVERSHAKE_PASSENGER_FERRY                            :Vas de pasageri Shivershake
-STR_80D3_YATE_CARGO_SHIP                                        :Navã de marfã Yate Cargo
-STR_80D4_BAKEWELL_CARGO_SHIP                                    :Navã de marfã Bakewell
-STR_80D5_MIGHTYMOVER_CARGO_SHIP                                 :Navã de marfã Mightymover
-STR_80D6_POWERNAUT_CARGO_SHIP                                   :Navã de marfã Powernaut
+STR_80CE_MPS_PASSENGER_FERRY                                    :Feribot de călători MPS
+STR_80CF_FFP_PASSENGER_FERRY                                    :Feribot de călători FFP
+STR_80D0_BAKEWELL_300_HOVERCRAFT                                :Aeroglisor Bakewell 300
+STR_80D1_CHUGGER_CHUG_PASSENGER                                 :Feribot de călători Chugger-Chug
+STR_80D2_SHIVERSHAKE_PASSENGER_FERRY                            :Feribot de călători Shivershake
+STR_80D3_YATE_CARGO_SHIP                                        :Navă de marfă Yate
+STR_80D4_BAKEWELL_CARGO_SHIP                                    :Navă de marfă Bakewell
+STR_80D5_MIGHTYMOVER_CARGO_SHIP                                 :Navă de marfă Mightymover
+STR_80D6_POWERNAUT_CARGO_SHIP                                   :Navă de marfă Powernaut
 STR_80D7_SAMPSON_U52                                            :Sampson U52
 STR_80D8_COLEMAN_COUNT                                          :Coleman Count
 STR_80D9_FFP_DART                                               :FFP Dart
@@ -2506,37 +2532,37 @@
 STR_80FD_TRICARIO_HELICOPTER                                    :Elicopter Tricario
 STR_80FE_GURU_X2_HELICOPTER                                     :Elicopter Guru X2
 STR_80FF_POWERNAUT_HELICOPTER                                   :Elicopter Powernaut
-STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Mesaj de la producãtorul de vehicule
+STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE                       :{WHITE}Mesaj de la producătorul de vehicule
 STR_8101_WE_HAVE_JUST_DESIGNED_A                                :{GOLD}Am creat un nou tip de {STRING}. Ati fi interesati de folosirea exclusivã pentru un an a acestui vehicul, astfel ca noi sa putem observa rezultatele înaintea lansãrii oficiale?
-STR_8102_RAILROAD_LOCOMOTIVE                                    :vehicul feroviar
+STR_8102_RAILROAD_LOCOMOTIVE                                    :locomotivă
 STR_8103_ROAD_VEHICLE                                           :autovehicul
-STR_8104_AIRCRAFT                                               :aeronavã
-STR_8105_SHIP                                                   :navã
-STR_8106_MONORAIL_LOCOMOTIVE                                    :vehicul monorail
-STR_8107_MAGLEV_LOCOMOTIVE                                      :vehicul maglev
+STR_8104_AIRCRAFT                                               :aeronavă
+STR_8105_SHIP                                                   :navă
+STR_8106_MONORAIL_LOCOMOTIVE                                    :locomotivă monoşină
+STR_8107_MAGLEV_LOCOMOTIVE                                      :locomotivă maglev
 
 ##id 0x8800
 STR_8800_TRAIN_DEPOT                                            :{WHITE}Depoul {TOWN}
-STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cetãtenii sãrbãtoresc {}sosirea primului tren la {STATION}!
+STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cetăţenii sărbătoresc {}sosirea primului tren la {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{STRING} (Detalii)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Tren în drum
 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} (Transferã si preia încãrcãtura)
-STR_8808_GO_TO_UNLOAD                                           :Mergi la {STATION} (Descarcã)
-STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Mergi la {STATION} (Transferã si lasã descãrcat)
-STR_880A_GO_TO_LOAD                                             :Mergi la {STATION} (Încarcã)
-STR_880B_GO_TO_TRANSFER_LOAD                                    :Mergi la {STATION} (Transferã si încarcã 100%)
-STR_880C_GO_NON_STOP_TO                                         :Mergi non-stop la {STATION}
+STR_8807_GO_TO_TRANSFER                                         :Mergi la {STATION} (Transferă şi preia încărcătura)
+STR_8808_GO_TO_UNLOAD                                           :Mergi la {STATION} (Descarcă)
+STR_8809_GO_TO_TRANSFER_UNLOAD                                  :Mergi la {STATION} (Transferă şi lasă descărcat)
+STR_880A_GO_TO_LOAD                                             :Mergi la {STATION} (Încarcă)
+STR_880B_GO_TO_TRANSFER_LOAD                                    :Mergi la {STATION} (Transferă şi încarcă 100%)
+STR_880C_GO_NON_STOP_TO                                         :Mergi fără oprire la {STATION}
 STR_880D_GO_TO_NON_STOP_TRANSFER                                :Mergi non-stop la {STATION} (Transferã si ia încãrcãtura)
-STR_880E_GO_NON_STOP_TO_UNLOAD                                  :Mergi non-stop la {STATION} (Descarcã)
-STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD                         :Mergi non-stop la {STATION} (Transferã si lasã descãrcat)
-STR_8810_GO_NON_STOP_TO_LOAD                                    :Mergi non-stop la {STATION} (Încarcã)
-STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD                           :Mergi non-stop la {STATION} (Transferã si încarcã 100%)
+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} (Transferă şi lasă descărcat)
+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} (Transferă şi încarcă 100%)
 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 non-stop la Depoul {TOWN}
+STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT                             :Mergi fără oprire la Depoul {TOWN}
 STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT                             :Non-stop pt. service la Depoul {TOWN}
 
 STR_HEADING_FOR_TRAIN_DEPOT                                     :{ORANGE}Merge la Depoul {TOWN}
@@ -2550,65 +2576,65 @@
 STR_8812_EMPTY                                                  :{LTBLUE}Gol
 STR_8813_FROM                                                   :{LTBLUE}{CARGO} de la {STATION}
 STR_FROM_MULT                                                   :{LTBLUE}{CARGO} de la {STATION} (x{NUM})
-STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Trenul {COMMA} asteaptã în depou
+STR_8814_TRAIN_IS_WAITING_IN_DEPOT                              :{WHITE}Trenul {COMMA} aşteaptă în depou
 STR_8815_NEW_VEHICLES                                           :{BLACK}Vehicule noi
 STR_8816                                                        :{BLACK}-
 STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Tren prea lung
-STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Trenurile pot fi modificate doar când se aflã într-un depou
-STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Trenuri
+STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Trenurile pot fi modificate doar când staţionează într-un depou
+STR_881B_TRAINS                                                 :{WHITE}{COMPANY} - {COMMA} Tren{P "" uri}
 
 STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Noi vehicule feroviare
 STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Noi Vehicule Electrice pe Sine
-STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Noi vehicule monorail
+STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Noi vehicule monoşină
 STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Noi vehicule maglev
 STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Vehicule pe sine
 
-STR_881F_BUILD_VEHICLE                                          :{BLACK}Cumpãrã vehicul
+STR_881F_BUILD_VEHICLE                                          :{BLACK}Cumpără vehicul
 STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Cloneazã vehiculul
 STR_CLONE_ROAD_VEHICLE_INFO                                     :{BLACK}Acest buton va crea o copie a autovehiculului. Control+click pentru comenzi comune
 STR_CLONE_ROAD_VEHICLE_DEPOT_INFO                               :{BLACK}Acest buton va crea o copie a autovehiculului. Apasã acest buton, apoi fã click pe un autovehicul de pe hartã. Control+click pentru a-i da ordine comune
 STR_CLONE_TRAIN                                                 :{BLACK}Cloneazã trenul
 STR_CLONE_TRAIN_INFO                                            :{BLACK}Acest buton va crea o copie a întregului tren. Control+click pentru comenzi comune
 STR_CLONE_TRAIN_DEPOT_INFO                                      :{BLACK}Acest buton va crea o copie a întregului tren. Apasã acest buton, apoi fã click pe un tren de pe hartã. Control+click pentru a-i da ordine comune
-STR_8820_RENAME                                                 :{BLACK}Redenumeste
+STR_8820_RENAME                                                 :{BLACK}RedenumeÅŸte
 STR_8823_SKIP                                                   :{BLACK}Sãri peste
-STR_8824_DELETE                                                 :{BLACK}Sterge
-STR_8825_NON_STOP                                               :{BLACK}Non-stop
+STR_8824_DELETE                                                 :{BLACK}Åžterge
+STR_8825_NON_STOP                                               :{BLACK}Fără oprire
 STR_8826_GO_TO                                                  :{BLACK}Mergi la
-STR_8827_FULL_LOAD                                              :{BLACK}Full-load
-STR_8828_UNLOAD                                                 :{BLACK}Descãrcare
+STR_8827_FULL_LOAD                                              :{BLACK}Încarcă 100%
+STR_8828_UNLOAD                                                 :{BLACK}Descarcă
 STR_REFIT                                                       :{BLACK}Rearanjeaza
 STR_REFIT_TIP                                                   :{BLACK}Alege tipul de marfa pentru rearanjare. Control+click pt a anula rearanjarea
 STR_REFIT_ORDER                                                 :(Rearanjeaza in {STRING})
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Comenzi)
-STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Sfârsitul comenzilor - -
+STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Sfârşitul comenzilor - -
 STR_FULLLOAD_OR_SERVICE                                         :{SKIP}{SKIP}{STRING}
 STR_SERVICE                                                     :{BLACK}Service
 STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE                           :{WHITE}Nu pot construi vehiculul...
-STR_882C_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Cumpãrat: {LTBLUE}{NUM}{BLACK} Valoare: {LTBLUE}{CURRENCY}
+STR_882C_BUILT_VALUE                                            :{LTBLUE}{STRING}{BLACK}   Cumpărat: {LTBLUE}{NUM}{BLACK} Valoare: {LTBLUE}{CURRENCY}
 STR_882D_VALUE                                                  :{LTBLUE}{STRING}{BLACK}   Valoare: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
-STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Încarcã / Descarcã
+STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Încărcare / Descărcare
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Trenul trebuie oprit intr-un depou
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Nu pot trimite trenul la depou...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Nu mai este loc pentru comenzi
 STR_8832_TOO_MANY_ORDERS                                        :{WHITE}Prea multe comenzi
-STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Nu pot adãuga o comandã nouã...
-STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Nu pot sterge aceastã comandã...
-STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Nu pot modifica aceastã comandã...
+STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Nu pot adăuga o comandă nouă...
+STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Nu pot şterge această comandă...
+STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Nu pot modifica această comandă...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Nu pot muta vehiculul...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Al doilea vagon+motor va avea mereu aceeasi destinatie ca si primul
 STR_8838_N_A                                                    :N/A{SKIP}
 STR_8839_CAN_T_SELL_RAILROAD_VEHICLE                            :{WHITE}Nu pot vinde vehiculul...
-STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Nu pot gãsi un drum spre un depou local
+STR_883A_UNABLE_TO_FIND_ROUTE_TO                                :{WHITE}Nu pot găsi un drum spre un depou local
 STR_883B_CAN_T_STOP_START_TRAIN                                 :{WHITE}Nu pot opri-porni trenul...
-STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Intervalul pt. service: {LTBLUE}{COMMA}zile{BLACK}   Ultimul service: {LTBLUE}{DATE_LONG}
+STR_883C_SERVICING_INTERVAL_DAYS                                :{BLACK}Intervalul pentru întreţinere: {LTBLUE}{COMMA}zile{BLACK}   Ultima întreţinere: {LTBLUE}{DATE_LONG}
 STR_SERVICING_INTERVAL_PERCENT                                  :{BLACK}Intervalul de service: {LTBLUE}{COMMA}%{BLACK}   Ultimul service: {LTBLUE}{DATE_LONG}
-STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trenuri - apasã aici pentru informatii despre trenuri
-STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Cumpãrã trenuri noi (necesitã un depou)
-STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trenuri - clic pe tren pentru informatii, mutã vehiculele pentru adaugare scoatere din tren
-STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}Construieste un nou vehicul feroviar
-STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Mutã un vehicul aici pentru a-l vinde
+STR_883D_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trenuri - apasă aici pentru informaţii despre trenuri
+STR_883E_BUILD_NEW_TRAINS_REQUIRES                              :{BLACK}Cumpără trenuri noi (necesită un depou)
+STR_883F_TRAINS_CLICK_ON_TRAIN_FOR                              :{BLACK}Trenuri - clic pe tren pentru informaţii, mută vehiculele pentru adăugare-scoatere din tren
+STR_8840_BUILD_NEW_TRAIN_VEHICLE                                :{BLACK}ConstruieÅŸte un nou vehicul feroviar
+STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE                             :{BLACK}Mută un vehicul aici pentru a-l vinde
 STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Centreazã imaginea pe locatia depoului
 STR_8843_TRAIN_VEHICLE_SELECTION                                :{BLACK}Lista de selectie a componentelor trenului - clic pe vehicule pt. informatii
 STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN                            :{BLACK}Cumpãrã vehiculul selectat
@@ -2627,9 +2653,8 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Lista de comenzi - clic pe comandã pentru a o selecta
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sãri peste comanda curentã si treci la urmãtoarea
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Sterge comanda selectatã
-STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Mergi non-stop pânã la destinatia din comanda selectatã
+STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Circulă fără oprire până la destinaţia selectată
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Introdu o comandã înaintea celei selectate sau adaugã o comandã la sfârsitul listei
 STR_8857_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Forteazã trenul sã astepte la destinatia selectatã pânã la umplerea la capacitate maximã
 STR_8858_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Forteazã trenul sã descarce marfa la destinatia selectatã
@@ -2712,6 +2737,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_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...
@@ -2730,8 +2757,8 @@
 STR_ROAD_SELECT_TYPE_OF_CARGO_FOR                               :{BLACK}Alege tipul de marfa pentru transport cu autovehiculul
 
 ##id 0x9800
-STR_9800_DOCK_CONSTRUCTION                                      :Constructii navale
-STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Constructie port
+STR_9800_DOCK_CONSTRUCTION                                      :Construcţii navale
+STR_9801_DOCK_CONSTRUCTION                                      :{WHITE}Construcţie port
 STR_9802_CAN_T_BUILD_DOCK_HERE                                  :{WHITE}Nu pot construi port aici...
 STR_9803_SHIP_DEPOT                                             :{WHITE}Santierul Naval {TOWN}
 STR_9804_NEW_SHIPS                                              :{BLACK}Nave noi
@@ -2798,7 +2825,7 @@
 STR_9841_CAN_T_REFIT_SHIP                                       :{WHITE}Nu pot schimba tipul navei...
 STR_9842_REFITTABLE                                             :(suportã alte mãrfuri)
 STR_GO_TO_SHIP_DEPOT                                            :Mergi la Santierul Naval {TOWN}
-SERVICE_AT_SHIP_DEPOT                                           :Service la Santierul Naval {TOWN}
+SERVICE_AT_SHIP_DEPOT                                           :Întreţinere la şantierul naval {TOWN}
 
 ##id 0xA000
 STR_A000_AIRPORTS                                               :{WHITE}Airoporturi
@@ -2833,7 +2860,7 @@
 STR_A01A_CAPACITY                                               :{BLACK}Capacitate: {LTBLUE}{CARGO}
 STR_A01B_AIRCRAFT_MUST_BE_STOPPED                               :{WHITE}Aeronava trebuie sã se afle într-un hangar
 STR_A01C_CAN_T_SELL_AIRCRAFT                                    :{WHITE}Nu pot vinde aeronava...
-STR_A01D_AIRPORT_CONSTRUCTION                                   :Constructie aeroport
+STR_A01D_AIRPORT_CONSTRUCTION                                   :Construcţie aeroport
 STR_A01E_BUILD_AIRPORT                                          :{BLACK}Constr. aeroport
 STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT                             :{BLACK}Aeronavã - clic pe aeronavã pentru informatii
 STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES                            :{BLACK}Cumpãrã o nouã aeronavã (necesitã un aeroport)
@@ -2870,7 +2897,7 @@
 STR_A041_NEW_CAPACITY_COST_OF_REFIT                             :{BLACK}Noua capacitate: {GOLD}{STRING}{}{BLACK}Costul transformãrii: {GOLD}{CURRENCY}
 STR_A042_CAN_T_REFIT_AIRCRAFT                                   :{WHITE}Nu pot schimba tipul de încãrcãturã...
 STR_GO_TO_AIRPORT_HANGAR                                        :Mergi la Hangarul {STATION}
-SERVICE_AT_AIRPORT_HANGAR                                       :Service la Hangarul {STATION}
+SERVICE_AT_AIRPORT_HANGAR                                       :Întreţinere la hangarul {STATION}
 
 ##id 0xB000
 STR_B000_ZEPPELIN_DISASTER_AT                                   :{BLACK}{BIGFONT}Accident de zepelin la{STATION}!
@@ -2996,6 +3023,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Esti pe cale sa vinzi toate vehiculele din depou. Esti sigur?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Tip incorect de depou
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Vinde toate trenurile din the depou
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Vinde toate autovehiculele din depou
@@ -3186,3 +3214,25 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Comuta transparenta pentru construibile, precum statii, depouri, indicatoare si linii electrificate
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Comuta transparenta pentru poduri
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Comuta transparenta pentru structuri ca farurile si antenele - poate in viitor, pentru efect
+
+##### Mass Order
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Toate trenurile
+STR_GROUP_ALL_ROADS                                             :Toate autovehiculele
+STR_GROUP_ALL_SHIPS                                             :Toate navele
+STR_GROUP_ALL_AIRCRAFTS                                         :Toate aeronavele
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Tren{P "" uri}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Autovehicul{P "" e}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Nav{P a e}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Aeronav{P a e}
+
+
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Profit anul acesta: {GREEN}{CURRENCY} {BLACK}(anul trecut: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit anul acesta: {RED}{CURRENCY} {BLACK}(anul trecut: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Profit anul acesta: {GREEN}{CURRENCY} {BLACK}(anul trecut: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Profit anul acesta: {RED}{CURRENCY} {BLACK}(anul trecut: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/russian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/russian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case m f n p
 ##gender m f n p
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Край карты
@@ -1100,6 +1102,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :не иÑпользовать
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}СкороÑÑ‚ÑŒ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾Ð±Ð·Ð¾Ñ€Ð° прокруткой колеÑа мыши: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Ðвтопауза в начале игры: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}ИÑпользовать раÑширенный ÑпиÑок транÑпорта: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}МакÑимальное количеÑтво поездов на игрока: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}МакÑимальное количеÑтво автотранÑпорта на игрока: {ORANGE}{STRING}
@@ -1133,6 +1136,15 @@
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Разрешить торговлю акциÑми других компаний
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}При уÑтановке Ñветофоров линией, Ñтавить кажд{P 1 ую ые ые}: {ORANGE}{STRING} клет{P 1 ку ки ок}
 STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Строить Ñемафоры Ñтарого ÑтилÑ: {ORANGE}до {STRING} года
+
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}РаÑположение дорог "не Ñтроить дороги" не дейÑтвительно в редакторе Ñценариев
+STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}РаÑположение дорог у городов: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :не Ñтроить дороги
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :Ñтарый алгоритм
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :улучшенный алгоритм
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :решёткой 2x2
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :решёткой 3x3
+
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Положение главной панели инÑтрументов: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Ñлева
 STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :в центре
@@ -2004,6 +2016,8 @@
 STR_SV_STNAME_HELIPORT                                          :Площадка {STRING}
 STR_SV_STNAME_FOREST                                            :Ð›ÐµÑ {STRING}
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2043,6 +2057,7 @@
 ############ range for difficulty settings ends
 
 STR_26816_NONE                                                  :Ðет
+STR_NUM_VERY_LOW                                                :Очень низкое
 STR_6816_LOW                                                    :Ðизкое
 STR_6817_NORMAL                                                 :Среднее
 STR_6818_HIGH                                                   :Большое
@@ -2630,7 +2645,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Показать вмеÑтимоÑÑ‚ÑŒ вагонов
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Показать общую вмеÑтимоÑÑ‚ÑŒ поезда по типам грузов
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Показ ÑпиÑка заданий - щелкните Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ. ЕÑли зажать CTRL - обзор Ñтанции.
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}ПропуÑтить текущее задание и перейти к Ñледующему
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Удалить выделенное задание
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Ехать по выбранному заданию без оÑтановок
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Ð’Ñтавить новое задание перед выделенным, или в конец ÑпиÑка
@@ -3115,6 +3129,8 @@
 STR_START_DATE_QUERY_CAPT                                       :{WHITE}Изменить год начала игры
 STR_HEIGHTMAP_SCALE_WARNING_CAPTION                             :{WHITE}Выход за пределы доÑтупных значений
 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}
@@ -3187,3 +3203,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Переключить прозрачноÑÑ‚ÑŒ зданий, которые можно Ñтроить игроком. Ðапример -- Ñтанции, депо, точки пути и Ñтолбы Ð´Ð»Ñ ÑлектричеÑтва.
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Переключить прозрачноÑÑ‚ÑŒ моÑтов
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Переключить прозрачноÑÑ‚ÑŒ зданий, вроде антенн и маÑков.
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Группа {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Ð’Ñе поезда
+STR_GROUP_ALL_ROADS                                             :ВеÑÑŒ автотранÑпорт
+STR_GROUP_ALL_SHIPS                                             :Ð’Ñе корабли
+STR_GROUP_ALL_AIRCRAFTS                                         :Ð’Ñе Ñамолёты
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Добавить Ñ Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ заданиÑми
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Удалить вÑех
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} поезд{P "" а ов}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} автомашин{P а ы ""}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} корабл{P ÑŒ Ñ ÐµÐ¹}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Ñамолёт{P "" а ов}
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Переименовать группу
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Заменить транÑпорт в группе "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Ðе могу Ñоздать группу...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Ðе могу удалить группу...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Ðе могу переименовать группу...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Ðе могу удалить веÑÑŒ транÑпорт Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Ðе могу добавить транÑпорт в группу...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Ðе могу добавить транÑпорт Ñ Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ заданиÑми в группу...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Группы - Щёлкните группу Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑпиÑке
+STR_GROUP_CREATE_TIP                                            :{BLACK}Создать группу
+STR_GROUP_DELETE_TIP                                            :{BLACK}Удалить выбранную группу
+STR_GROUP_RENAME_TIP                                            :{BLACK}Переименовать выбранную группу
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Ð’ зажатом ÑоÑтоÑнии защищает группу от вÑеобщей автозамены
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Прибыль Ñтот год: {GREEN}{CURRENCY} {BLACK}(прошлый год: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибыль Ñтот год: {RED}{CURRENCY} {BLACK}(прошлый год: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибыль за год: {GREEN}{CURRENCY} {BLACK}(прошлый год: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Прибыль за год: {RED}{CURRENCY} {BLACK}(прошлый год: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/simplified_chinese.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/simplified_chinese.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2616,7 +2616,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}显示列车的è¿è½½èƒ½åŠ›
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}æ ¹æ®ä¸åŒçš„挂车ç§ç±»æ˜¾ç¤ºç›¸åº”的总è¿åŠ›
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}调度列表 - å•å‡»ä¸€ä¸ªè°ƒåº¦æŒ‡ä»¤å¯ä»¥ä½¿ä¹‹é«˜äº®åŒ–. CTRL + å•å‡»å¯ä»¥å°†è§†ç‚¹ç§»åŠ¨åˆ°ç›¸åº”的车站
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}跳过的当å‰çš„调度指令并直接执行下一æ¡
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}删除高亮的调度命令
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}命令é“车在高亮的指令对应的车站ä¸åœè½¦
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}在调度列表的结尾或高亮项目的å‰é¢å¢žåŠ ä¸€æ¡æ–°æŒ‡ä»¤
--- a/src/lang/slovak.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/slovak.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case g
 ##gender m z s
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Za okrajom mapy
@@ -1110,6 +1112,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Novy globalny algoritmus hladania cesty (NPF namiesto NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Váhový násobok pre nákladné vlaky: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Povolit prejazdné zastávky na mestských cestách: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Povolit stavbu oddelených staníc: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Vzdy povolit stavbu malych letisk: {ORANGE}{STRING}
 
@@ -1150,6 +1153,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Automaticke opravy vrtulnikov v heliporte: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Otvarat panel uprav terenu s panelom stavby trati, ciest, ... : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Pri posuvani mapy mysou posuvat opacnym smerom: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Plynulé posúvanie pohladu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Zobrazit info o rozmerom pri vystavbe: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Zobrazit farebne schemy spolocnosti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Ziadne
@@ -1457,6 +1461,30 @@
 STR_NETWORK_LANG_ENGLISH                                        :Anglicky
 STR_NETWORK_LANG_GERMAN                                         :Nemecky
 STR_NETWORK_LANG_FRENCH                                         :Francuzsky
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazílsky
+STR_NETWORK_LANG_BULGARIAN                                      :Bulharsky
+STR_NETWORK_LANG_CHINESE                                        :Cinsky
+STR_NETWORK_LANG_CZECH                                          :Cesky
+STR_NETWORK_LANG_DANISH                                         :Dánsky
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Fínsky
+STR_NETWORK_LANG_HUNGARIAN                                      :Madarsky
+STR_NETWORK_LANG_ICELANDIC                                      :Islandsky
+STR_NETWORK_LANG_ITALIAN                                        :Taliansky
+STR_NETWORK_LANG_JAPANESE                                       :Japonsky
+STR_NETWORK_LANG_KOREAN                                         :Kórejsky
+STR_NETWORK_LANG_LITHUANIAN                                     :Litovksy
+STR_NETWORK_LANG_NORWEGIAN                                      :Nórsky
+STR_NETWORK_LANG_POLISH                                         :Polsky
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugalsky
+STR_NETWORK_LANG_ROMANIAN                                       :Rumunsky
+STR_NETWORK_LANG_RUSSIAN                                        :Rusky
+STR_NETWORK_LANG_SLOVAK                                         :Slovensky
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovinsky
+STR_NETWORK_LANG_SPANISH                                        :Spanielsky
+STR_NETWORK_LANG_SWEDISH                                        :Svédsky
+STR_NETWORK_LANG_TURKISH                                        :Turecky
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrajinsky
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Sietova hra - lobby
@@ -1650,6 +1678,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Zeleznicne kolaje s pre-signalmi
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Zeleznicne kolaje s exit-signalmi
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Zeleznicne kolaje s combo-signalmi
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Železnicné kolaje s normálnymi a pre-signálmi
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Železnicné kolaje s normálnymi a exit-signálmi
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Železnicné kolaje s normálnymi a combo-signálmi
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Železnicné kolaje s pre- a exit-signálmi
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Železnicné kolaje s pre- a combo-signálmi
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Železnicné kolaje s exit- a combo-signálmi
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Je potrebné najprv odstránit železnicnú stanicu
 
 
 
@@ -1657,13 +1692,21 @@
 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}Vystavba cesty
+STR_1802_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Orientacia garaze
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Vystavba cesty
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Postavit cast cesty
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Postavit garaz (na vyroby a opravy automobilov)
@@ -2076,6 +2119,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliport
 STR_SV_STNAME_FOREST                                            :{STRING} Les
 
+STR_SV_GROUP_NAME                                               :{GROUP}
 
 ############ end of savegame specific region!
 
@@ -2693,7 +2737,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Zoznam prikazov - kliknut na prikaz pre oznacenie
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Vynechat aktualny prikaz - preskocit na dalsi
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Vymazat oznaceny prikaz
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Oznaceny prikaz bude prevedeny bez zastavenia
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Vlozit novy prikaz pred oznaceny prikaz, alebo na koniec zoznamu
@@ -3255,6 +3298,7 @@
 
 ##### Mass Order
 STR_GROUP_NAME_FORMAT                                           :Skupina {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
 STR_GROUP_ALL_TRAINS                                            :VÅ¡etky vlaky
 STR_GROUP_ALL_ROADS                                             :Všetky cestné vozidlá
 STR_GROUP_ALL_SHIPS                                             :VÅ¡etky lode
@@ -3263,7 +3307,12 @@
 STR_GROUP_ADD_SHARED_VEHICLE                                    :Pridat zdielané vozidlá
 STR_GROUP_REMOVE_ALL_VEHICLES                                   :Odstránit všetky vozidlá
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Vlak{P "" y ov}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Vozid{P lo lá ied}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Lod{P "" e í}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Lietad{P lo lá iel}
 STR_GROUP_RENAME_CAPTION                                        :{BLACK}Premenovat skupinu
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Nahradit vozidlá skupiny "{GROUP}"
 
 STR_GROUP_CAN_T_CREATE                                          :{WHITE}Nie je možné vytvorit skupinu ...
 STR_GROUP_CAN_T_DELETE                                          :{WHITE}Nie je možné zrušit túto skupinu ...
--- a/src/lang/slovenian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/slovenian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 8
 ##case r d t
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}ÄŒez rob zemljevida
@@ -1088,6 +1090,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Novo skupno iskanje poti (NPF, prevlada NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Koeficient teže tovora za simulacijo težkih vlakov: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Dovoli prehodne postaje na cestah v lasti mest: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Dovoli gradnjo združljivih postaj: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Vedno dovoli majhna letaliÅ¡Äa: {ORANGE}{STRING}
 
@@ -1128,6 +1131,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Avtomatski servis helikopterjev na pristajaliÅ¡Äu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Pripni orodje za teren k orodju za gradnjo cest/železnic itd.: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Obrni smer premika okna: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Gladek premik pogleda: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Prikaz merilnega nasveta med uporabo gradbenih orodij: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Prikaz znakov podjetij: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Brez
@@ -1140,6 +1144,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Izklopljeno
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Hitrost premika s kolescem miške: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Avtomatsko pavziraj ob zagonu nove igre: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Uporabi napreden seznam vozil: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}NajveÄ vlakov na igralca: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}NajveÄ cestnih vozil na igralca: {ORANGE}{STRING}
@@ -1434,6 +1439,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Angleški
 STR_NETWORK_LANG_GERMAN                                         :Nemški
 STR_NETWORK_LANG_FRENCH                                         :Francoski
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazilski
+STR_NETWORK_LANG_BULGARIAN                                      :Bolgarski
+STR_NETWORK_LANG_CHINESE                                        :Kitajski
+STR_NETWORK_LANG_CZECH                                          :Češki
+STR_NETWORK_LANG_DANISH                                         :Danski
+STR_NETWORK_LANG_DUTCH                                          :Nizozemski
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finski
+STR_NETWORK_LANG_HUNGARIAN                                      :Madžarski
+STR_NETWORK_LANG_ICELANDIC                                      :Islandski
+STR_NETWORK_LANG_ITALIAN                                        :Italijanski
+STR_NETWORK_LANG_JAPANESE                                       :Japonski
+STR_NETWORK_LANG_KOREAN                                         :Korejski
+STR_NETWORK_LANG_LITHUANIAN                                     :Litvijski
+STR_NETWORK_LANG_NORWEGIAN                                      :Norveški
+STR_NETWORK_LANG_POLISH                                         :Poljski
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugalski
+STR_NETWORK_LANG_ROMANIAN                                       :Romunski
+STR_NETWORK_LANG_RUSSIAN                                        :Ruski
+STR_NETWORK_LANG_SLOVAK                                         :Slovaški
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovenski
+STR_NETWORK_LANG_SPANISH                                        :Å panski
+STR_NETWORK_LANG_SWEDISH                                        :Å vedski
+STR_NETWORK_LANG_TURKISH                                        :Turški
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrajinski
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Seje veÄigralskih iger
@@ -1627,6 +1657,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Železniški tiri s pred-signali
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Železniški tiri z izhodnimi signali
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Železniški tiri s kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Tiri z normalnimi in uvodnimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Tiri z normalnimi in izhodnimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Tiri z normalnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Tiri z uvodnimi in izhodnimi signali
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Tiri z uvodnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Tiri z izhodnimi in kombiniranimi signali
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Najprej moraš odstraniti železniško postajo
 
 
 
@@ -1634,22 +1671,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Smer garaže
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Gradnja ceste
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Gradnja tramvaj proge
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Zgradi cestni odsek
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Zgradi odsek proge
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Zgradi cestni most
+STR_180F_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_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_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Izberi smer garaže
+STR_1813_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
@@ -1657,6 +1711,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Cestno/železniÅ¡ko križiÅ¡Äe
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Ni mogoÄa odstranitev avtobusne postaje...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Ni mogoÄa odstranitev tovorne postaje...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}NemogoÄa odstranitev potniÅ¡ke tramvaj postaje...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}NemogoÄa odstranitev tovorne tramvaj postaje...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Mesta
@@ -1821,8 +1877,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Postaj{P a i e ""}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Brez -
@@ -1834,6 +1894,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_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
@@ -2091,6 +2153,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} PristajaliÅ¡Äe
 STR_SV_STNAME_FOREST                                            :{STRING} Gozd
 
+STR_SV_GROUP_NAME                                               :{GROUP}
 
 ############ end of savegame specific region!
 
@@ -2320,6 +2383,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :majhno letalo
 STR_LIVERY_LARGE_PLANE                                          :Veliko letalo
+STR_LIVERY_PASSENGER_TRAM                                       :Potniški tramvaj
+STR_LIVERY_FREIGHT_TRAM                                         :Tovorni tramvaj
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Prikaz glavnih barvnih shem
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Prikaz barvnih shem vlakov
@@ -2677,6 +2742,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Ni mogoÄe vstaviti nov ukaz ...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Ni mogoÄe izbrisati ukaza ...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Ni mogoÄe spreminjati ukaza ...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}NemogoÄ preskok trenutnega ukaza...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}NemogoÄ preskok na izbran ukaz...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Ni mogoÄe premakniti vozila ...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}Zadnja lokomotiva vedno sledi prvi
 STR_8838_N_A                                                    :Ni na voljo{SKIP}
@@ -2708,7 +2775,7 @@
 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_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 trenuten ukaz in izvrÅ¡i naslednjega
+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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}OznaÄi izbran ukaz kot brez-postanka
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Vstavi nov ukaz pred izbranega ali pa ga dodaj na koncu seznama
@@ -2793,6 +2860,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_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 ...
@@ -3077,6 +3146,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Pripravljaš se na prodajo vseh vozil v garaži. Zagotovo?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :NapaÄna vrsta garaže
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Prodaj vse vlake v garaži
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Prodaj vsa vestna vozila v garaži
@@ -3269,9 +3339,39 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Prozoren ali navaden pogled struktur kot so antene, svetilniki...
 
 ##### Mass Order
-
+STR_GROUP_NAME_FORMAT                                           :Skupina {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Vsi vlaki
+STR_GROUP_ALL_ROADS                                             :Vsa cestna vozila
+STR_GROUP_ALL_SHIPS                                             :Vse ladje
+STR_GROUP_ALL_AIRCRAFTS                                         :Vsa letala
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Vsa izmenljiva vozila
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Odstrani vsa vozila
 
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Vlak{P "" a i ov}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Cestn{P o i a ih} Vozil{P o i a ""}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Lad{P ja ji je ij}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Letal{P o i a ""}
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Preimenuj eno skupino
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Zamenjaj Vozila v "{GROUP}"
 
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}NemogoÄe ustvariti skupino...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}NemogoÄe brisanje te skupine...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}NemogoÄe preimenovanje skupine...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}NemogoÄa odstranitev vseh vozil iz te skupine...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}NemogoÄe dodati vozilo v to skupino...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}NemogoÄe dodati izmenljivo vozilo v to skupino...
 
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Skupine - Klikni na skupino za seznam vseh vozil v skupini
+STR_GROUP_CREATE_TIP                                            :{BLACK}Klikni za ustvarit skupino
+STR_GROUP_DELETE_TIP                                            :{BLACK}Izbriši izbrano skupino
+STR_GROUP_RENAME_TIP                                            :{BLACK}Preimenuj izbrano skupino
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klikni za zaÅ¡Äito skupine pred sploÅ¡no samoobnovo
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}DobiÄek letos: {GREEN}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}DobiÄek letos: {RED}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}DobiÄek letos: {GREEN}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}DobiÄek letos: {RED}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
 
 ########
--- a/src/lang/spanish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/spanish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2630,7 +2630,6 @@
 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_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
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Hacer la orden resaltada sin parada
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Añadir nueva orden antes de la orden resaltada, o añadirla al final de la lista
--- a/src/lang/swedish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/swedish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode sv_SE
 ##plural 0
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Utanför kanten
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ny globalt sätt att hitta rutt (NPF, åsidosätter NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Godsfaktor för att simulera tunga tåg: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Tillåt genomfarts-stop på stadsägda vägar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Tillåt byggande av närliggande stationer: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Tillåt alltid små flygplatser: {ORANGE}{STRING}
 
@@ -1086,6 +1089,7 @@
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Serva helikoptrar vid landningplattor automatiskt: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Koppla landskapsverktyget till övriga verktygsfält: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_REVERSE_SCROLLING                            :{LTBLUE}Omvänd scrollriktning: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Mjuk skrollning av vy: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MEASURE_TOOLTIP                              :{LTBLUE}Visa måtthjälptext vid användning av byggverktyg: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Visa färgschema för företag: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Inga
@@ -1586,6 +1590,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :Järnväg med för-signaler
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :Järnväg med utgående signaler
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :Järnväg med kombinerade signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Järnväg med normala signaler och för-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Järnväg med normala signaler och utfarts-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Järnväg med normala signaler och kombo-signaler
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Järnväg med för- och utfarts-signaler
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Järnväg med för- och kombo-signaler
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Järnväg med utfards-signaler och kombo-signaler
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Måste ta bort tågstationen först
 
 
 
@@ -1593,22 +1604,39 @@
 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_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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Riktning för bussgarage
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Bygg väg
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Spårvagnskonstruktion
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Bygg väg
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Bygg spårvagnssektion
 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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Bygg vägbro
+STR_180F_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_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_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_1814_ROAD                                                   :Väg
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Väg med gatubelysning
 STR_1816_TREE_LINED_ROAD                                        :Väg med träd
@@ -1616,6 +1644,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Väg-/Järnvägskorsning
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Kan inte ta bort busstation...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kan inte ta bort lastbilsstation...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Kan inte ta bort passagerar-spårvagnsstation...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Kan inte ta bort frakt-spårvagnsstation...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Städer
@@ -1779,8 +1809,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Station{P "" er}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Inga -
@@ -1792,6 +1826,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_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
@@ -2242,6 +2278,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Litet flygplan
 STR_LIVERY_LARGE_PLANE                                          :Stort Flygplan
+STR_LIVERY_PASSENGER_TRAM                                       :Passagerarspårvagn
+STR_LIVERY_FREIGHT_TRAM                                         :Fraktspårvagn
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Visa generellt färgschema
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Visa färgscheman för tåg
@@ -2630,7 +2668,6 @@
 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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Orderlista - klicka på order för att markera det
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Skippa nuvararande order och börja med nästa
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Ta bort markerad order
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Gör markerad order non-stop
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Infoga ny order före markerad order, eller lägg till i slutet av listan
@@ -2715,6 +2752,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_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...
@@ -2999,6 +3038,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Du är på väg att sälja alla fordon i depån. Är du säker?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Felaktig depå-typ
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Sälj alla tåg i depån
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Sälj alla vägfordon i depån
--- a/src/lang/traditional_chinese.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/traditional_chinese.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode zh_TW
 ##plural 1
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}超越版圖邊緣
@@ -1046,6 +1048,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}新路徑æœå°‹æ¼”算法 (NPF 將覆蓋 NTP):{ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}貨物é‡é‡ç³»æ•¸ï¼Œä»¥æ¨¡æ“¬è¼ƒé‡åˆ—車:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}å¯åœ¨éŽ®å…§èˆˆå»ºè·¯é‚Šè»Šç«™ï¼š{ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}容許興建相鄰車站: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}æ°¸é å¯ä»¥èˆˆå»ºå°åž‹æ©Ÿå ´ï¼š{ORANGE}{STRING}
 
@@ -1098,6 +1101,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :關閉
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}滾輪地圖æ²å‹•é€Ÿåº¦ï¼š {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}自動在開始新éŠæˆ²æ™‚æš«åœï¼š{ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}使用進階載具å單: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}æ¯ä½çŽ©å®¶å¯æ“有列車數目:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}æ¯ä½çŽ©å®¶å¯æ“有車輛數目:{ORANGE}{STRING}
@@ -1585,6 +1589,7 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :有入å£è™ŸèªŒçš„éµè»Œ
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :有出å£è™ŸèªŒçš„éµè»Œ
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :有綜åˆè™ŸèªŒçš„éµè»Œ
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}必須先移除ç«è»Šç«™
 
 
 
@@ -1592,22 +1597,38 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}必須先移除é“è·¯
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}é“路施工中
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}鋪設é“è·¯
+STR_1802_TRAMWAY_CONSTRUCTION                                   :{WHITE}鋪設電車軌
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}é¸æ“‡é“路橋樑
 STR_1804_CAN_T_BUILD_ROAD_HERE                                  :{WHITE}ä¸èƒ½åœ¨æ­¤é‹ªè¨­é“è·¯...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE                               :{WHITE}ä¸å¯ä»¥åœ¨é€™è£é‹ªè¨­é›»è»Šè»Œ...
 STR_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}ä¸èƒ½å¾žæ­¤ç§»é™¤é“è·¯...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}ä¸å¯ä»¥ç§»é™¤é€™è£çš„電車軌...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}車庫方å‘
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}電車
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}ä¸èƒ½åœ¨æ­¤å»ºç¯‰è»Šåº«...
+STR_1807_CAN_T_BUILD_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_180A_ROAD_CONSTRUCTION                                      :鋪設é“è·¯
+STR_180A_TRAMWAY_CONSTRUCTION                                   :鋪設電車軌
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}鋪設一段公路
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}興建電車站
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}建築車庫 (用來製造與維護公路車輛)
+STR_180C_BUILD_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}建築公路橋樑
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}架設電車橋
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}建築公路隧é“
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}é–‹é…電車隧é“
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}切æ›å»ºç¯‰/移除公路
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}鋪設電車軌開關
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}é¸æ“‡è»Šåº«æ–¹å‘
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}é¸æ“‡é›»è»Šç¶­ä¿®å» æ–¹å‘
 STR_1814_ROAD                                                   :公路
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :有路燈的公路
 STR_1816_TREE_LINED_ROAD                                        :有行é“樹的公路
@@ -1615,6 +1636,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :公路/éµé“平交é“
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}ä¸èƒ½å¾žé€™é‚Šç§»é™¤å…¬è»Šç«™...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}ä¸èƒ½å¾žé€™é‚Šç§»é™¤è²¨é‹ç«™...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}ä¸å¯ç§»é™¤è¼‰å®¢é›»è»Šç«™...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}ä¸å¯ç§»é™¤è¼‰è²¨é›»è»Šç«™...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}城鎮
@@ -1778,8 +1801,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} 座車站
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- ç„¡ -
@@ -1791,6 +1818,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}將主視野帶到車站ä½ç½®
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}顯示車站評價
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}變更車站å稱
@@ -2011,6 +2040,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} ç›´å‡æ©Ÿå ´
 STR_SV_STNAME_FOREST                                            :{STRING} 森林
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2627,7 +2658,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}顯示車輛的容é‡
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}顯示列車的總容é‡ï¼Œç…§è²¨ç‰©åˆ†é¡ž
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}指令清單 - 點é¸æŒ‡ä»¤å¯é¸æ“‡ã€‚æŒ‰ä½ CTRL 點é¸å¯è·³åˆ°è»Šç«™ä½ç½®
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}è·³éŽç›®å‰æŒ‡ä»¤ï¼Œç¹¼çºŒä¸‹å€‹æŒ‡ä»¤
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}刪除é¸å®šæŒ‡ä»¤
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}使é¸å®šçš„指令中途ä¸åœ
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}在é¸å®šçš„指令å‰æ’入新指令,或在最後新增指令
@@ -3186,3 +3216,40 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}å°‡é€æ˜Žåº¦å¥—用於建物,如車站ã€å» æ£šã€è·¯æ¨™åŠé›»ç·š
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}å°‡é€æ˜Žåº¦å¥—用於橋樑
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}å°‡é€æ˜Žåº¦å¥—用於設施,如燈塔ã€å¤©ç·šå¡”ç­‰
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :群組 {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :所有列車
+STR_GROUP_ALL_ROADS                                             :所有車輛
+STR_GROUP_ALL_SHIPS                                             :所有船舶
+STR_GROUP_ALL_AIRCRAFTS                                         :所有飛機
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :加入共用載具
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :移除所有載具
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} 列車
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} 車輛
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} 船舶
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} 飛機
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}為群組é‡æ–°å‘½å
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}ç½®æ› "{GROUP}" 載具
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}ä¸èƒ½å»ºç«‹ç¾¤çµ„...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}ä¸èƒ½ç§»é™¤ç¾¤çµ„...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}ä¸èƒ½é‡æ–°å‘½å群組...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}ä¸èƒ½å¾žç¾¤çµ„移除所有載具...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}ä¸èƒ½åŠ å…¥è¼‰å…·åˆ°é€™ç¾¤çµ„...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}ä¸èƒ½åŠ å…¥å…±ç”¨è¼‰å…·åˆ°é€™ç¾¤çµ„...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}群組 - 單擊群組以顯示載具åå–®
+STR_GROUP_CREATE_TIP                                            :{BLACK}單擊建立群組
+STR_GROUP_DELETE_TIP                                            :{BLACK}移除é¸æ“‡ç¾¤çµ„
+STR_GROUP_RENAME_TIP                                            :{BLACK}為群組é‡æ–°å‘½å
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}本年盈餘: {GREEN}{CURRENCY} {BLACK}(去年: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}本年盈餘:{RED}{CURRENCY} {BLACK}(去年: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}本年盈餘: {GREEN}{CURRENCY} {BLACK}(去年: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}本年盈餘: {RED}{CURRENCY} {BLACK}(去年:{RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/turkish.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/turkish.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -3,6 +3,8 @@
 ##isocode tr_TR
 ##plural 1
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Harita kenarında
@@ -1590,20 +1592,34 @@
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Yol Yapımı
 STR_1803_SELECT_ROAD_BRIDGE                                     :{WHITE}Köprü Seç
 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_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_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}Garaj Yönü
+STR_1806_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_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_180A_ROAD_CONSTRUCTION                                      :Yol yapımı
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Tramvay yapımı
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Yol bölmesi yap
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}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_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Köprü yap
+STR_180F_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_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Yol yap/sil arasında geçiş yap
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Garaj yönünü seç
+STR_1813_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
@@ -1611,6 +1627,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Hemzemin geçit
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Otobüs durağı kaldırılamaz...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Kamyon durağı kaldırılamaz...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Yolcu tramvayı istasyonu kaldırılamıyor...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Yük tramvayı istasyonu kaldırılamıyor...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}Åžehirler
@@ -1774,8 +1792,11 @@
 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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} istasyonları
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- Yok -
@@ -2007,6 +2028,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliport
 STR_SV_STNAME_FOREST                                            :{STRING} Ormanı
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2042,6 +2065,7 @@
 ############ range for difficulty settings ends
 
 STR_26816_NONE                                                  :Hiç
+STR_NUM_VERY_LOW                                                :Çok az
 STR_6816_LOW                                                    :Düşük
 STR_6817_NORMAL                                                 :Normal
 STR_6818_HIGH                                                   :Yüksek
@@ -2234,6 +2258,8 @@
 STR_LIVERY_HELICOPTER                                           :Helikopter
 STR_LIVERY_SMALL_PLANE                                          :Küçük Uçak
 STR_LIVERY_LARGE_PLANE                                          :Büyük Uçak
+STR_LIVERY_PASSENGER_TRAM                                       :Yolcu Tramvayı
+STR_LIVERY_FREIGHT_TRAM                                         :Yük Tramvayı
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Genel renk şemalarını göster
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Tren renk düzenlerini göster
@@ -2622,7 +2648,6 @@
 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_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ı atlayıp sıradakine geç
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Seçili talimatı sil
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Seçili talimatı durmadan yap
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Seçili talimatın önüne ya da listenin sonuna komut ekle
@@ -3178,3 +3203,36 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}İstasyonlar, garajlar tershaneler vb. için şeffaflık
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Köprüler için şeffaflık
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Antenler ve deniz fenerleri için şeffaflık
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Grup {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :Bütün trenler
+STR_GROUP_ALL_ROADS                                             :Bütün arabalar
+STR_GROUP_ALL_SHIPS                                             :Bütün Gemiler
+STR_GROUP_ALL_AIRCRAFTS                                         :Bütün uçaklar
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Bütün paylaşılan araçlar
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :Bütün araçları çıkar
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} Tren
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} Araba
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} Gemi
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} Uçak
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Grubun ismini deÄŸiÅŸtir
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}"{GROUP}"  Araçlarını Değiştir
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Grup oluşturulamıyor...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Bu grup silinemiyor...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Grubun ismi deÄŸiÅŸtirilemiyor...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Bu gruptaki bütün araçlar çıkartılamıyor...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Araç bu gruba eklenemiyor...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Paylaşılan araçlar bu gruba eklenemiyor...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Gruplar - Gruba ait araçları listelemek için grubun üzerine tıklayın
+STR_GROUP_CREATE_TIP                                            :{BLACK}Grup oluşturmak için tıklayın
+STR_GROUP_DELETE_TIP                                            :{BLACK}Seçili grubu sil
+STR_GROUP_RENAME_TIP                                            :{BLACK}Seçili grubun ismini değiştir
+
+
+########
--- a/src/lang/ukrainian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/ukrainian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -5,6 +5,8 @@
 ##case r d z
 ##gender m f s mn
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}За межами карти
@@ -1172,6 +1174,7 @@
 STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL                          :{LTBLUE}Ðовий глобальний пошук шлÑху(NPF, заміÑÑ‚ÑŒ NTP): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}Множник ваги Ð´Ð»Ñ Ñ–Ð¼Ñ–Ñ‚Ð°Ñ†Ñ–Ñ— важких потÑгів: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}Дозволити безпереÑадкові зупинки на муніципальних дорогах: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}Дозволити будувати Ñуміжні Ñтанції: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_SMALL_AIRPORTS                               :{LTBLUE}Будувати малі аеропорти можна завжди: {ORANGE}{STRING}
 
@@ -1212,6 +1215,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_MEASURE_TOOLTIP                              :{LTBLUE}Показувати розміри будівництва в підказці: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES                                     :{LTBLUE}Показати кольори компаній: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LIVERIES_NONE                                :Жодна
@@ -1224,6 +1228,7 @@
 STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :Відкл.
 STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}ШвидкіÑÑ‚ÑŒ прокрутки колеÑом миші: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Ðвтоматично Ñтавити паузу при Ñтарті нової гри: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}ВикориÑтовувати покращений ÑпиÑок транÑпорту: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}МакÑ. поїздів у гравцÑ: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}МакÑ. авто у гравцÑ: {ORANGE}{STRING}
@@ -1518,6 +1523,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :ÐнглійÑька
 STR_NETWORK_LANG_GERMAN                                         :Ðімецька
 STR_NETWORK_LANG_FRENCH                                         :Французька
+STR_NETWORK_LANG_BRAZILIAN                                      :БразильÑька
+STR_NETWORK_LANG_BULGARIAN                                      :БолгарÑька
+STR_NETWORK_LANG_CHINESE                                        :КитайÑька
+STR_NETWORK_LANG_CZECH                                          :ЧеÑька
+STR_NETWORK_LANG_DANISH                                         :ДатÑька
+STR_NETWORK_LANG_DUTCH                                          :Ðімецька
+STR_NETWORK_LANG_ESPERANTO                                      :ЕÑперанто
+STR_NETWORK_LANG_FINNISH                                        :ФінÑька
+STR_NETWORK_LANG_HUNGARIAN                                      :УгорÑька
+STR_NETWORK_LANG_ICELANDIC                                      :ІÑландÑька
+STR_NETWORK_LANG_ITALIAN                                        :ІталійÑька
+STR_NETWORK_LANG_JAPANESE                                       :ЯпонÑька
+STR_NETWORK_LANG_KOREAN                                         :КорейÑька
+STR_NETWORK_LANG_LITHUANIAN                                     :ЛитовÑька
+STR_NETWORK_LANG_NORWEGIAN                                      :Ðорвезька
+STR_NETWORK_LANG_POLISH                                         :ПольÑькаÑ
+STR_NETWORK_LANG_PORTUGUESE                                     :ПортугальÑька
+STR_NETWORK_LANG_ROMANIAN                                       :РумунÑька
+STR_NETWORK_LANG_RUSSIAN                                        :РоÑійÑька
+STR_NETWORK_LANG_SLOVAK                                         :Словацька
+STR_NETWORK_LANG_SLOVENIAN                                      :СловенÑька
+STR_NETWORK_LANG_SPANISH                                        :ІÑпанÑька
+STR_NETWORK_LANG_SWEDISH                                        :ШведÑька
+STR_NETWORK_LANG_TURKISH                                        :Турецька
+STR_NETWORK_LANG_UKRAINIAN                                      :УкраїнÑька
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Multiplayer game lobby
@@ -1711,6 +1741,13 @@
 STR_RAILROAD_TRACK_WITH_PRESIGNALS                              :ÐšÐ¾Ð»Ñ–Ñ Ð· вхідними Ñигналами
 STR_RAILROAD_TRACK_WITH_EXITSIGNALS                             :ÐšÐ¾Ð»Ñ–Ñ Ð· вихідними Ñигналами
 STR_RAILROAD_TRACK_WITH_COMBOSIGNALS                            :ÐšÐ¾Ð»Ñ–Ñ Ð· комбінованими Ñигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS                       :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð·Ñ– звичайним та пре-Ñигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS                      :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð·Ñ– звичайним та вихід-Ñигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS                     :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð·Ñ– звичайним та комбо-Ñигналами
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS                         :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð· пре- та вихід-Ñигналами
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS                        :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð· пре- та комбо-Ñигналами
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS                       :Залізнична ÐºÐ¾Ð»Ñ–Ñ Ð· вихід- та комбо-Ñигналами
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST                           :{WHITE}Спочатку потрібно знеÑти залізничну Ñтанцію
 
 
 
@@ -1718,22 +1755,39 @@
 STR_1801_MUST_REMOVE_ROAD_FIRST                                 :{WHITE}Спочатку зруйнуйте дорогу
 STR_ROAD_WORKS_IN_PROGRESS                                      :{WHITE}Дорога ремонтуєтьÑÑ
 STR_1802_ROAD_CONSTRUCTION                                      :{WHITE}Будівництво дороги
+STR_1802_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_1805_CAN_T_REMOVE_ROAD_FROM                                 :{WHITE}Ðеможливо прибрати дорогу звідÑи...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM                              :{WHITE}Ðе можна прибрати трамвайну колію звідÑи...
 STR_1806_ROAD_DEPOT_ORIENTATION                                 :{WHITE}ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð´ÐµÐ¿Ð¾
+STR_1806_TRAM_DEPOT_ORIENTATION                                 :{WHITE}ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ‚Ñ€Ð°Ð¼Ð²Ð°Ð¹Ð½Ð¾Ð³Ð¾ депо
 STR_1807_CAN_T_BUILD_ROAD_VEHICLE                               :{WHITE}Ðеможливо будувати депо тут...
+STR_1807_CAN_T_BUILD_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_180A_ROAD_CONSTRUCTION                                      :Будувати дороги
+STR_180A_TRAMWAY_CONSTRUCTION                                   :Будівництво трамвайної колії
 STR_180B_BUILD_ROAD_SECTION                                     :{BLACK}Будувати дорогу
+STR_180B_BUILD_TRAMWAY_SECTION                                  :{BLACK}Будувати трамвайну колію
 STR_180C_BUILD_ROAD_VEHICLE_DEPOT                               :{BLACK}Будувати автомобільне депо
+STR_180C_BUILD_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_180F_BUILD_ROAD_BRIDGE                                      :{BLACK}Будувати міÑÑ‚
+STR_180F_BUILD_TRAMWAY_BRIDGE                                   :{BLACK}Побудувати трамвайний міÑÑ‚
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Будувати тунель
+STR_1810_BUILD_TRAMWAY_TUNNEL                                   :{BLACK}Побудувати трамвайний тунель
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Будувати/зруйнувати дорогу
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                       :{BLACK}Будувати/демонтувати колію
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Виберіть Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð´ÐµÐ¿Ð¾
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT                              :{BLACK}Виберіть орієнтацію трамвайного депо
 STR_1814_ROAD                                                   :Дорога
 STR_1815_ROAD_WITH_STREETLIGHTS                                 :Дорога з вуличними ліхтарÑми
 STR_1816_TREE_LINED_ROAD                                        :Дорога з наÑадженнÑми
@@ -1741,6 +1795,8 @@
 STR_1818_ROAD_RAIL_LEVEL_CROSSING                               :Залізничний переїзд
 STR_CAN_T_REMOVE_BUS_STATION                                    :{WHITE}Ðе можна знеÑти автобуÑну Ñтанцію...
 STR_CAN_T_REMOVE_TRUCK_STATION                                  :{WHITE}Ðе можна знеÑти грузову Ñтанцію...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION                         :{WHITE}Ðе можна знеÑти паÑажирÑьку трамвайну Ñтанцію...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION                             :{WHITE}Ðе можна знеÑти вантажну трамвайну Ñтанцію...
 
 ##id 0x2000
 STR_2000_TOWNS                                                  :{WHITE}МіÑта
@@ -1904,8 +1960,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_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_3048_STATIONS                                               :{WHITE}{COMPANY} - {COMMA} Ñтанці{P Ñ Ñ— й}
 STR_3049_0                                                      :{YELLOW}{STATION} {STATIONFEATURES}
 STR_304A_NONE                                                   :{YELLOW}- нема -
@@ -1917,6 +1977,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_3053_CENTER_MAIN_VIEW_ON_STATION                            :{BLACK}Показати Ñтанцію в центрі екрану
 STR_3054_SHOW_STATION_RATINGS                                   :{BLACK}Показати рейтинг Ñтанції
 STR_3055_CHANGE_NAME_OF_STATION                                 :{BLACK}Перейменувати Ñтанцію
@@ -2174,6 +2236,8 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} ГелМайданчик
 STR_SV_STNAME_FOREST                                            :{STRING} ЛіÑ
 
+STR_SV_GROUP_NAME                                               :{GROUP}
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2402,6 +2466,8 @@
 STR_LIVERY_HELICOPTER                                           :Гелікоптер
 STR_LIVERY_SMALL_PLANE                                          :Малий літак
 STR_LIVERY_LARGE_PLANE                                          :Великий літак
+STR_LIVERY_PASSENGER_TRAM                                       :ПаÑажирÑький трамвай
+STR_LIVERY_FREIGHT_TRAM                                         :Вантажний трамвай
 
 STR_LIVERY_GENERAL_TIP                                          :{BLACK}Показати оÑновні кольорові Ñхеми
 STR_LIVERY_TRAIN_TIP                                            :{BLACK}Показати кольорову Ñхему поїздів
@@ -2759,6 +2825,8 @@
 STR_8833_CAN_T_INSERT_NEW_ORDER                                 :{WHITE}Ðеможливо додати наказ...
 STR_8834_CAN_T_DELETE_THIS_ORDER                                :{WHITE}Ðеможливо видалити наказ...
 STR_8835_CAN_T_MODIFY_THIS_ORDER                                :{WHITE}Ðеможливо змінити наказ...
+STR_CAN_T_SKIP_ORDER                                            :{WHITE}Ðе можна пропуÑтити цей наказ...
+STR_CAN_T_SKIP_TO_ORDER                                         :{WHITE}Ðе можна перейти до цього наказу...
 STR_8837_CAN_T_MOVE_VEHICLE                                     :{WHITE}Ðеможливо переміÑтити транÑпорт...
 STR_REAR_ENGINE_FOLLOW_FRONT_ERROR                              :{WHITE}задній потÑг зажди Ñлідує  follow its front counterpart!!!
 STR_8838_N_A                                                    :немає{SKIP}
@@ -2790,7 +2858,7 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Показати міÑткіÑÑ‚ÑŒ кожного вагону
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Показати загальну міÑткіÑÑ‚ÑŒ поїзда, розділену за типом вантажу
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Маршрутний лиÑÑ‚ - клікніть на завданні Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ вибору. CTRL + клік показати Ñтанцію
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}ПропуÑтити це завданнÑ, перейти до наÑтупного
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}ПропуÑтити поточний наказ, Ñ– виконувати наÑтупний. CTRL + клік переходить до вибраного наказу
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Видалити виділене завданнÑ
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Ðе зупинÑтиÑÑ Ð½Ð° відміченій Ñтанції
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Ð’Ñтавити новий пункт перед відміченим або додати в кінець
@@ -2875,6 +2943,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_9031_ROAD_VEHICLE_CRASH_DRIVER                              :{BLACK}{BIGFONT}ÐваріÑ!{}Водій загинув при зіткненні авто з поїздом
 STR_9032_ROAD_VEHICLE_CRASH_DIE                                 :{BLACK}{BIGFONT}ÐваріÑ!{}{COMMA} загинуло при зіткненні авто з поїздом
 STR_9033_CAN_T_MAKE_VEHICLE_TURN                                :{WHITE}Ðеможливо розвернути авто...
@@ -3159,6 +3229,7 @@
 
 ### depot strings
 STR_DEPOT_SELL_CONFIRMATION_TEXT                                :{YELLOW}Ви впевнені, що хочете продати уÑÑ– машини в депо?
+STR_DEPOT_WRONG_DEPOT_TYPE                                      :Ðеправильний тип депо
 
 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP                             :{BLACK}Продати вÑÑ– поїзди з депо
 STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP                           :{BLACK}Продати вÑÑ– автомобілі з депо
@@ -3349,3 +3420,41 @@
 STR_TRANSPARENT_BUILDINGS_DESC                                  :{BLACK}Переключити прозоріÑÑ‚ÑŒ Ð´Ð»Ñ Ñпоруд, таких Ñк Ñтанції, депо, ЛЕП тощо
 STR_TRANSPARENT_BRIDGES_DESC                                    :{BLACK}Переключити прозоріÑÑ‚ÑŒ Ð´Ð»Ñ Ð¼Ð¾Ñтів
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Переключити прозоріÑÑ‚ÑŒ Ð´Ð»Ñ Ñпоруд, таких Ñк маÑки та антенни (може, потім)
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT                                           :Група {COMMA}
+STR_GROUP_TINY_NAME                                             :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS                                            :УÑÑ– поїзди
+STR_GROUP_ALL_ROADS                                             :УÑÑ– авто
+STR_GROUP_ALL_SHIPS                                             :УÑÑ– кораблі
+STR_GROUP_ALL_AIRCRAFTS                                         :УÑÑ– літаки
+STR_GROUP_TINY_NUM                                              :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE                                    :Добавити Ñпільний транÑпорт
+STR_GROUP_REMOVE_ALL_VEHICLES                                   :ПозбутиÑÑ Ð²Ñього транÑпорту
+
+STR_GROUP_TRAINS_CAPTION                                        :{WHITE}{GROUP} - {COMMA} поїзд{P "" и ів}
+STR_GROUP_ROADVEH_CAPTION                                       :{WHITE}{GROUP} - {COMMA} автомобіл{P ь і ів}
+STR_GROUP_SHIPS_CAPTION                                         :{WHITE}{GROUP} - {COMMA} кораб{P ель лі лів}
+STR_GROUP_AIRCRAFTS_CAPTION                                     :{WHITE}{GROUP} - {COMMA} літак{P "" и ів}
+STR_GROUP_RENAME_CAPTION                                        :{BLACK}Перейменувати групу
+STR_GROUP_REPLACE_CAPTION                                       :{WHITE}Замінити транÑпорт групи "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE                                          :{WHITE}Ðе можна Ñтворити групу...
+STR_GROUP_CAN_T_DELETE                                          :{WHITE}Ðе можна Ñтерти групу...
+STR_GROUP_CAN_T_RENAME                                          :{WHITE}Ðе можна перейменувати групу...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES                             :{WHITE}Ðе можна позбутиÑÑ Ð²Ñього транÑпорту цієї групи...
+STR_GROUP_CAN_T_ADD_VEHICLE                                     :{WHITE}Ðе можна додати цей транÑпорт у групу...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE                              :{WHITE}Ðе можна додати Ñпільний транÑпорт у групу...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP                               :{BLACK}Групи - клікніть на групі, щоб побачити ÑпиÑок транÑпорту цієї групи
+STR_GROUP_CREATE_TIP                                            :{BLACK}Клікніть, щоб Ñтворити групу
+STR_GROUP_DELETE_TIP                                            :{BLACK}Стерти вибрану групу
+STR_GROUP_RENAME_TIP                                            :{BLACK}Перейменувати вибрану групу
+STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Клікніть, щоб захиÑтити групу від глобальної автозаміни
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR                        :{TINYFONT}{BLACK}Прибуток цього року: {GREEN}{CURRENCY} {BLACK}(торік: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибуток цього року: {RED}{CURRENCY} {BLACK}(торік: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR                         :{TINYFONT}{BLACK}Прибуток цього року: {GREEN}{CURRENCY} {BLACK}(торік: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR                          :{TINYFONT}{BLACK}Прибуток цього року: {RED}{CURRENCY} {BLACK}(торік: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/unfinished/afrikaans.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -2473,7 +2473,6 @@
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Wys kapasiteite van elke voertuig
 STR_8852_SHOW_TOTAL_CARGO                                       :{BLACK}Wys totaale kapasitiet van trein, verdeel by vrag tipe
 STR_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Opdraglys - kliek op 'n opdrag om dit te beklemtoon. CTRL + kliek senter op stasie
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}Sprong die huidige opdrag, en begin die volgende
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}Uitwis die beklemtoonde opdrag
 STR_8855_MAKE_THE_HIGHLIGHTED_ORDER                             :{BLACK}Maak die beklemtoonde opdrag deurgaande
 STR_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Invoeg 'n nuwe opdrag voor die beklemtoonde opdrag, of byvoeg na einde van lys
--- a/src/lang/unfinished/croatian.txt	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/lang/unfinished/croatian.txt	Wed Jun 13 12:05:56 2007 +0000
@@ -4,6 +4,8 @@
 ##plural 6
 ##gender male female middle
 
+#
+
 ##id 0x0000
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Izvan rubova karte
@@ -723,6 +725,7 @@
 STR_028D_PLACE_LIGHTHOUSE                                       :{BLACK}Postavi svjetionik
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}Postavi odaÅ¡iljaÄ
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}Odredi pustinjsko podruÄje.{}Pritisni i drži CTRL za uklanjanje
+STR_CREATE_LAKE                                                 :
 STR_0290_DELETE                                                 :{BLACK}Obriši
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}Obriši ovaj grad u cjelosti
 STR_0292_SAVE_SCENARIO                                          :Spremi scenarij
@@ -797,10 +800,14 @@
 STR_02DE_MAP_OF_WORLD                                           :Karta svijeta
 STR_EXTRA_VIEW_PORT                                             :Dodatni pogled
 STR_SIGN_LIST                                                   :Popis znakova
+STR_TRANSPARENCY_OPTIONS                                        :Opcije prozirnosti
 STR_02DF_TOWN_DIRECTORY                                         :Direktorij gradova
 STR_TOWN_POPULATION                                             :{BLACK}Svjetska populacija: {COMMA}
 STR_EXTRA_VIEW_PORT_TITLE                                       :{WHITE}Pogled {COMMA}
 STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN                                :{BLACK}Kopiraj u pogled
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT                             :{BLACK}Kopiraj lokaciju globalnog pogleda na ovaj mini pogled
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW                                :{BLACK}Zalijepi iz mini pogleda
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT                             :{BLACK}Zalijepi lokaciju ovog mini pogleda na globalni pogled
 
 STR_02E0_CURRENCY_UNITS                                         :{BLACK}NovÄane jedinice
 STR_02E1                                                        :{BLACK}{SKIP}{STRING}
@@ -1024,7 +1031,9 @@
 STR_CONFIG_PATCHES_BUILDXTRAIND                                 :{LTBLUE}Dopusti izgadnju industrija koje proizvode sirovine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MULTIPINDTOWN                                :{LTBLUE}Dopusti viÅ¡e sliÄnih industrija po gradu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SAMEINDCLOSE                                 :{LTBLUE}Moguće je graditi spojene industrije iste vrste: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Uvijek prikaži dugi datum u statusnoj traci: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Prikaži znakove na strani po kojoj se vozi: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Prikaži financijski prozor na kraju godine: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Dozvoli potkupljivanje gradskih vlasti: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}NeujednaÄene stanice: {ORANGE}{STRING}
 
@@ -1044,7 +1053,9 @@
 STR_CONFIG_PATCHES_INVISIBLE_TREES                              :{LTBLUE}Nevidljivo drveće (sa prozirnim građevinama): {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL                      :Izvorno
+STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS                 :TerraGenesis
 STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE                        :{LTBLUE}Maksimalna udaljenost Rafinerija nafte od ruba {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN                         :{LTBLUE}Grubost terena (samo TerraGenesis) : {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH             :Vrlo glatko
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH                  :Glatko
 STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH                   :Grubo
@@ -1059,8 +1070,16 @@
 STR_CONFIG_PATCHES_STATION_SPREAD                               :{LTBLUE}Maksimalna raširenost stanice: {ORANGE}{STRING} {RED}Pozor: Visoka vrijednost usporuje igru
 STR_CONFIG_PATCHES_SERVICEATHELIPAD                             :{LTBLUE}Automatski servisiraj helikoptere na heliodromima: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR                       :{LTBLUE}Poveži alatnu traku za krajolik sa alatnim trakama za željeznicu/ceste/vodu/zraÄne luke: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING                             :{LTBLUE}Glatko skrolanje kroz mini pogled: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES_NONE                                :Ništa
 STR_CONFIG_PATCHES_LIVERIES_OWN                                 :Vlastita tvrtka
 STR_CONFIG_PATCHES_LIVERIES_ALL                                 :Sve tvrtke
+STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM                             :Zumiraj kartu
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL                           :Skrolaj kartom
+STR_CONFIG_PATCHES_SCROLLWHEEL_OFF                              :IskljuÄeno
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER                       :{LTBLUE}Brzina kotaÄića za skrolanje: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME                            :{LTBLUE}Automatski pauziraj kad pokrećeš novu igru: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS                       :{LTBLUE}Koristi naprednu listu vozila: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Maksimalan broj vlakova po igraÄu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAX_ROADVEH                                  :{LTBLUE}Maximalan broj cestovnih vozila po igraÄu: {ORANGE}{STRING}
@@ -1083,16 +1102,32 @@
 STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED                    :{LTBLUE}Pretpostavljeni period servisiranja aviona: {ORANGE}onemogućeno
 STR_CONFIG_PATCHES_SERVINT_SHIPS                                :{LTBLUE}Pretpostavljeni period servisiranja brodova: {ORANGE}{STRING} dana/%
 STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED                       :{LTBLUE}Pretpostavljeni period servisiranja brodova: {ORANGE}onemogućeno
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS                             :{LTBLUE}UkljuÄi ograniÄenje brzine za vagone: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_DISABLE_ELRAILS                              :{LTBLUE}Onemogući elektriÄne traÄnice: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_COLORED_NEWS_YEAR                            :{LTBLUE}Vijesti u boji pojavljuju se: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STARTING_YEAR                                :{LTBLUE}PoÄetna godina: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ENDING_YEAR                                  :{LTBLUE}Završna godina: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}UkljuÄi teÄnu ekonomiju (viÅ¡e manjih izazova)
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Dopusti kupovanje udjela drugih tvrtki
+STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automatski izgradi semafore prije: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :nema više cesta
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :inicijalno
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :bolje ceste
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 mreža
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 mreža
+
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Položaj glavne alatne trake: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Lijevo
 STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Sredina
 STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Desno
+STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Brzina rasta gradova: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :Ništa
+STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Sporo
+STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Normalno
+STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Brzo
+STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Vrlo brzo
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}SuÄelje
 STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Izgradnja
@@ -1130,6 +1165,8 @@
 STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Ide prema {WAYPOINT}
 STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Ide prema {WAYPOINT}, {VELOCITY}
 
+STR_GO_TO_WAYPOINT                                              :Idi preko {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Idi non-stop preko {WAYPOINT}
 
 STR_WAYPOINTNAME_CITY                                           : Čvorište{TOWN}
 STR_WAYPOINTNAME_CITY_SERIAL                                    :Čvorište {TOWN} #{COMMA}
@@ -1168,6 +1205,7 @@
 STR_TREES_RANDOM_TYPE_TIP                                       :{BLACK}Stavi drveće nasumiÄnog tipa
 
 STR_CANT_BUILD_CANALS                                           :{WHITE}Ovdje ne možeš graditi kanale...
+STR_BUILD_CANALS_TIP                                            :{BLACK}Izgradi kanale.
 STR_LANDINFO_CANAL                                              :Kanal
 
 
@@ -1321,6 +1359,31 @@
 STR_NETWORK_LANG_ENGLISH                                        :Engleski
 STR_NETWORK_LANG_GERMAN                                         :NjemaÄki
 STR_NETWORK_LANG_FRENCH                                         :Francuski
+STR_NETWORK_LANG_BRAZILIAN                                      :Brazilski
+STR_NETWORK_LANG_BULGARIAN                                      :Bugarski
+STR_NETWORK_LANG_CHINESE                                        :Kineski
+STR_NETWORK_LANG_CZECH                                          :Češki
+STR_NETWORK_LANG_DANISH                                         :Danski
+STR_NETWORK_LANG_DUTCH                                          :Nizozemski
+STR_NETWORK_LANG_ESPERANTO                                      :Esperanto
+STR_NETWORK_LANG_FINNISH                                        :Finski
+STR_NETWORK_LANG_HUNGARIAN                                      :Mađarski
+STR_NETWORK_LANG_ICELANDIC                                      :Islandski
+STR_NETWORK_LANG_ITALIAN                                        :Talijanski
+STR_NETWORK_LANG_JAPANESE                                       :Japanski
+STR_NETWORK_LANG_KOREAN                                         :Korejski
+STR_NETWORK_LANG_LITHUANIAN                                     :Litavski
+STR_NETWORK_LANG_NORWEGIAN                                      :Norveški
+STR_NETWORK_LANG_POLISH                                         :Poljski
+STR_NETWORK_LANG_PORTUGUESE                                     :Portugalski
+STR_NETWORK_LANG_ROMANIAN                                       :Rumunjski
+STR_NETWORK_LANG_RUSSIAN                                        :Ruski
+STR_NETWORK_LANG_SLOVAK                                         :SlovaÄki
+STR_NETWORK_LANG_SLOVENIAN                                      :Slovenski
+STR_NETWORK_LANG_SPANISH                                        :Å panjolski
+STR_NETWORK_LANG_SWEDISH                                        :Å vedski
+STR_NETWORK_LANG_TURKISH                                        :Turski
+STR_NETWORK_LANG_UKRAINIAN                                      :Ukrajinski
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Predvorje multiplayer igre
@@ -1939,6 +2002,7 @@
 STR_SV_STNAME_HELIPORT                                          :{STRING} Heliodrom
 STR_SV_STNAME_FOREST                                            :{STRING} Å uma
 
+
 ############ end of savegame specific region!
 
 ##id 0x6800
@@ -2415,7 +2479,7 @@
 STR_884D_INCREASE_SERVICING_INTERVAL                            :{BLACK}Povećaj servisni interval
 STR_884E_DECREASE_SERVICING_INTERVAL                            :{BLACK}Smanji servisni interval
 STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED                          :{BLACK}Pokaži detalje prevoženog tereta
-STR_8853_SKIP_THE_CURRENT_ORDER                                 :{BLACK}PreskoÄi trenutnu naredbu i poÄni sa sljedećom
+STR_8853_SKIP_THE_CURRENT_ORDER                                 :
 STR_8854_DELETE_THE_HIGHLIGHTED                                 :{BLACK}ObriÅ¡i oznaÄenu naredbu
 STR_SERVICE_HINT                                                :{BLACK}PreskoÄi ovu narudžbu osim ako servis nije potreban
 STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER                        :{BLACK}Trošak: {CURRENCY} Težina: {WEIGHT_S}{}Brzina: {VELOCITY} Snaga: {POWER}{}Troškovi održavanja: {CURRENCY}/god{}Kapacitet: {CARGO}
@@ -2909,3 +2973,12 @@
 ########
 
 STR_FEEDER_CARGO_VALUE                                          :{BLACK}Prebaci novac: {LTBLUE}{CURRENCY}
+
+
+##### Mass Order
+
+
+
+
+
+########
--- a/src/livery.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/livery.h	Wed Jun 13 12:05:56 2007 +0000
@@ -38,6 +38,10 @@
 	LS_SMALL_PLANE,
 	LS_LARGE_PLANE,
 
+	/* Trams (appear on Road Vehicles tab) */
+	LS_PASSENGER_TRAM,
+	LS_FREIGHT_TRAM,
+
 	LS_END
 };
 
--- a/src/main_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/main_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -30,6 +30,7 @@
 #include "waypoint.h"
 #include "variables.h"
 #include "train.h"
+#include "roadveh.h"
 #include "unmovable_map.h"
 #include "string.h"
 #include "screenshot.h"
@@ -58,6 +59,21 @@
 extern bool GenerateTowns();
 
 
+void CcGiveMoney(bool success, TileIndex tile, uint32 p1, uint32 p2)
+{
+	if (!success) return;
+
+	char msg[20];
+	/* Inform the player of this action */
+	snprintf(msg, sizeof(msg), "%d", p1);
+
+	if (!_network_server) {
+		SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg);
+	} else {
+		NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, NETWORK_SERVER_INDEX);
+	}
+}
+
 void HandleOnEditText(const char *str)
 {
 	int id = _rename_id;
@@ -75,21 +91,11 @@
 	case 3: { // Give money, you can only give money in excess of loan
 		const Player *p = GetPlayer(_current_player);
 		int32 money = min(p->money64 - p->current_loan, atoi(str) / _currency->rate);
-		char msg[20];
 
 		money = clamp(money, 0, 20000000); // Clamp between 20 million and 0
 
 		/* Give 'id' the money, and substract it from ourself */
-		if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS))) break;
-
-		/* Inform the player of this action */
-		snprintf(msg, sizeof(msg), "%d", money);
-
-		if (!_network_server) {
-			SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg);
-		} else {
-			NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg, NETWORK_SERVER_INDEX);
-		}
+		DoCommandP(0, money, id, CcGiveMoney, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS));
 	} break;
 #endif /* ENABLE_NETWORK */
 		default: NOT_REACHED();
@@ -844,7 +850,7 @@
 	int dis = -1;
 
 	FOR_ALL_VEHICLES(v) {
-		if (v->type == VEH_ROAD) CLRBIT(dis, v->owner);
+		if (v->type == VEH_ROAD && IsRoadVehFront(v)) CLRBIT(dis, v->owner);
 	}
 	PopupMainPlayerToolbMenu(w, 332, 14, dis);
 }
@@ -889,6 +895,8 @@
 
 			WP(w,vp_d).scrollpos_x += vp->virtual_width >> 1;
 			WP(w,vp_d).scrollpos_y += vp->virtual_height >> 1;
+			WP(w,vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x;
+			WP(w,vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y;
 			break;
 		case ZOOM_OUT:
 			if (vp->zoom == ZOOM_LVL_MAX) return false;
@@ -896,6 +904,8 @@
 
 			WP(w,vp_d).scrollpos_x -= vp->virtual_width >> 1;
 			WP(w,vp_d).scrollpos_y -= vp->virtual_height >> 1;
+			WP(w,vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x;
+			WP(w,vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y;
 
 			vp->virtual_width <<= 1;
 			vp->virtual_height <<= 1;
@@ -930,14 +940,15 @@
 static void ToolbarBuildRailClick(Window *w)
 {
 	const Player *p = GetPlayer(_local_player);
-	Window *w2;
-	w2 = PopupMainToolbMenu(w, 19, STR_1015_RAILROAD_CONSTRUCTION, RAILTYPE_END, ~p->avail_railtypes);
+	Window *w2 = PopupMainToolbMenu(w, 19, STR_1015_RAILROAD_CONSTRUCTION, RAILTYPE_END, ~p->avail_railtypes);
 	WP(w2, menu_d).sel_index = _last_built_railtype;
 }
 
 static void ToolbarBuildRoadClick(Window *w)
 {
-	Window *w2 = PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 1, 0);
+	const Player *p = GetPlayer(_local_player);
+	/* The standard road button is *always* available */
+	Window *w2 = PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 2, ~(p->avail_roadtypes | 1));
 	WP(w2, menu_d).sel_index = _last_built_roadtype;
 }
 
@@ -1057,7 +1068,7 @@
 
 		pt = GetTileZoomCenterWindow(in,w);
 		if (pt.x != -1) {
-			ScrollWindowTo(pt.x, pt.y, w);
+			ScrollWindowTo(pt.x, pt.y, w, true);
 
 			DoZoomInOutWindow(in ? ZOOM_IN : ZOOM_OUT, w);
 		}
@@ -1131,7 +1142,7 @@
 
 static void PlaceProc_RockyArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_RockyArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_ROCKS);
 }
 
 static void PlaceProc_LightHouse(TileIndex tile)
@@ -1158,12 +1169,12 @@
 
 static void PlaceProc_DesertArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DesertArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT);
 }
 
 static void PlaceProc_WaterArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_WaterArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_WATER);
 }
 
 static const Widget _scen_edit_land_gen_widgets[] = {
@@ -1382,8 +1393,15 @@
 
 	case WE_PLACE_MOUSEUP:
 		if (e->we.place.pt.x != -1) {
-			if (e->we.place.select_method == VPM_X_AND_Y) // dragged actions
-				GUIPlaceProcDragXY(e);
+			switch (e->we.place.select_proc) {
+				case DDSP_CREATE_ROCKS:
+				case DDSP_CREATE_DESERT:
+				case DDSP_CREATE_WATER:
+				case DDSP_LEVEL_AREA:
+				case DDSP_DEMOLISH_AREA:
+					GUIPlaceProcDragXY(e);
+					break;
+			}
 		}
 		break;
 
@@ -2430,6 +2448,8 @@
 
 			WP(w, vp_d).scrollpos_x += ScaleByZoom(e->we.scroll.delta.x, vp->zoom);
 			WP(w, vp_d).scrollpos_y += ScaleByZoom(e->we.scroll.delta.y, vp->zoom);
+			WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x;
+			WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y;
 		} break;
 
 		case WE_MOUSEWHEEL:
--- a/src/misc_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/misc_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -239,6 +239,7 @@
 	"",
 	"  Michael Blunck - Pre-Signals and Semaphores © 2003",
 	"  George - Canal/Lock graphics © 2003-2004",
+	"  David Dallaston - Tram tracks",
 	"  Marcin Grzegorczyk - Foundations for Tracks on Slopes",
 	"  All Translators - Who made OpenTTD a truly international game",
 	"  Bug Reporters - Without whom OpenTTD would still be full of bugs!",
@@ -382,7 +383,7 @@
 	} break;
 
 	case WE_PLACE_OBJ:
-		VpStartPlaceSizing(e->we.place.tile, VPM_X_AND_Y_LIMITED, GUI_PlaceProc_None);
+		VpStartPlaceSizing(e->we.place.tile, VPM_X_AND_Y_LIMITED, DDSP_PLANT_TREES);
 		VpSetPlaceSizingLimit(20);
 		break;
 
@@ -391,7 +392,7 @@
 		return;
 
 	case WE_PLACE_MOUSEUP:
-		if (e->we.place.pt.x != -1) {
+		if (e->we.place.pt.x != -1 && e->we.place.select_proc == DDSP_PLANT_TREES) {
 			DoCommandP(e->we.place.tile, _tree_to_plant, e->we.place.starttile, NULL,
 				CMD_PLANT_TREE | CMD_AUTO | CMD_MSG(STR_2805_CAN_T_PLANT_TREE_HERE));
 		}
--- a/src/network/core/config.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/network/core/config.h	Wed Jun 13 12:05:56 2007 +0000
@@ -46,7 +46,7 @@
 	 */
 	NETWORK_MAX_GRF_COUNT         =   55,
 
-	NETWORK_NUM_LANGUAGES         =    4, ///< Number of known languages (to the network protocol) + 1 for 'any'.
+	NETWORK_NUM_LANGUAGES         =   29, ///< Number of known languages (to the network protocol) + 1 for 'any'.
 	/**
 	 * The number of landscapes in OpenTTD.
 	 * This number must be equal to NUM_LANDSCAPE, but as this number is used
--- a/src/network/network.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/network/network.h	Wed Jun 13 12:05:56 2007 +0000
@@ -76,12 +76,38 @@
 	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
 };
 
-// language ids for server_lang and client_lang
+/* Language ids for server_lang and client_lang. Do NOT modify the order. */
 enum NetworkLanguage {
-	NETLANG_ANY     = 0,
-	NETLANG_ENGLISH = 1,
-	NETLANG_GERMAN  = 2,
-	NETLANG_FRENCH  = 3,
+	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;
--- a/src/network/network_data.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/network/network_data.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -30,65 +30,61 @@
 // Prepare a DoCommand to be send over the network
 void NetworkSend_Command(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback)
 {
-	CommandPacket *c = MallocT<CommandPacket>(1);
-	byte temp_callback;
+	CommandPacket c;
 
-	c->player = _local_player;
-	c->next = NULL;
-	c->tile = tile;
-	c->p1 = p1;
-	c->p2 = p2;
-	c->cmd = cmd;
-	c->callback = 0;
+	c.player = _local_player;
+	c.next   = NULL;
+	c.tile   = tile;
+	c.p1     = p1;
+	c.p2     = p2;
+	c.cmd    = cmd;
 
-	temp_callback = 0;
+	c.callback = 0;
+	while (c.callback < _callback_table_count && _callback_table[c.callback] != callback) {
+		c.callback++;
+	}
 
-	while (temp_callback < _callback_table_count && _callback_table[temp_callback] != callback)
-		temp_callback++;
-	if (temp_callback == _callback_table_count) {
+	if (c.callback == _callback_table_count) {
 		DEBUG(net, 0, "Unknown callback. (Pointer: %p) No callback sent", callback);
-		temp_callback = 0; /* _callback_table[0] == NULL */
+		c.callback = 0; // _callback_table[0] == NULL
 	}
 
+	ttd_strlcpy(c.text, (_cmd_text != NULL) ? _cmd_text : "", lengthof(c.text));
+
 	if (_network_server) {
-		// We are the server, so set the command to be executed next possible frame
-		c->frame = _frame_counter_max + 1;
-	} else {
-		c->frame = 0; // The client can't tell which frame, so just make it 0
-	}
-
-	ttd_strlcpy(c->text, (_cmd_text != NULL) ? _cmd_text : "", lengthof(c->text));
+		/* If we are the server, we queue the command in our 'special' queue.
+		 *   In theory, we could execute the command right away, but then the
+		 *   client on the server can do everything 1 tick faster than others.
+		 *   So to keep the game fair, we delay the command with 1 tick
+		 *   which gives about the same speed as most clients.
+		 */
+		c.frame = _frame_counter_max + 1;
 
-	if (_network_server) {
-		// If we are the server, we queue the command in our 'special' queue.
-		//   In theory, we could execute the command right away, but then the
-		//   client on the server can do everything 1 tick faster than others.
-		//   So to keep the game fair, we delay the command with 1 tick
-		//   which gives about the same speed as most clients.
-		NetworkTCPSocketHandler *cs;
-
-		// And we queue it for delivery to the clients
-		FOR_ALL_CLIENTS(cs) {
-			if (cs->status > STATUS_AUTH) NetworkAddCommandQueue(cs, c);
+		CommandPacket *new_cp = MallocT<CommandPacket>(1);
+		*new_cp = c;
+		if (_local_command_queue == NULL) {
+			_local_command_queue = new_cp;
+		} else {
+			/* Find last packet */
+			CommandPacket *cp = _local_command_queue;
+			while (cp->next != NULL) cp = cp->next;
+			cp->next = new_cp;
 		}
 
-		// Only the server gets the callback, because clients should not get them
-		c->callback = temp_callback;
-		if (_local_command_queue == NULL) {
-			_local_command_queue = c;
-		} else {
-			// Find last packet
-			CommandPacket *cp = _local_command_queue;
-			while (cp->next != NULL) cp = cp->next;
-			cp->next = c;
+		/* Only the local client (in this case, the server) gets the callback */
+		c.callback = 0;
+		/* And we queue it for delivery to the clients */
+		NetworkTCPSocketHandler *cs;
+		FOR_ALL_CLIENTS(cs) {
+			if (cs->status > STATUS_AUTH) NetworkAddCommandQueue(cs, &c);
 		}
-
 		return;
 	}
 
-	// Clients send their command to the server and forget all about the packet
-	c->callback = temp_callback;
-	SEND_COMMAND(PACKET_CLIENT_COMMAND)(c);
+	c.frame = 0; // The client can't tell which frame, so just make it 0
+
+	/* Clients send their command to the server and forget all about the packet */
+	SEND_COMMAND(PACKET_CLIENT_COMMAND)(&c);
 }
 
 // Execute a DoCommand we received from the network
--- a/src/network/network_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/network/network_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -85,13 +85,18 @@
 	INVALID_STRING_ID
 };
 
-static const StringID _language_dropdown[] = {
-	STR_NETWORK_LANG_ANY,
-	STR_NETWORK_LANG_ENGLISH,
-	STR_NETWORK_LANG_GERMAN,
-	STR_NETWORK_LANG_FRENCH,
-	INVALID_STRING_ID
-};
+static StringID _language_dropdown[NETLANG_COUNT + 1] = {STR_NULL};
+
+void SortNetworkLanguages() {
+	/* Init the strings */
+	if (_language_dropdown[0] == STR_NULL) {
+		for (int i = 0; i < NETLANG_COUNT; i++) _language_dropdown[i] = STR_NETWORK_LANG_ANY + i;
+		_language_dropdown[NETLANG_COUNT] = INVALID_STRING_ID;
+	}
+
+	/* Sort the strings (we don't move 'any' and the 'invalid' one) */
+	qsort(&_language_dropdown[1], NETLANG_COUNT - 1, sizeof(StringID), &StringIDSorter);
+}
 
 enum {
 	NET_PRC__OFFSET_TOP_WIDGET          = 54,
@@ -342,7 +347,7 @@
 			DrawString(x, y, STR_NETWORK_CLIENTS, 2);
 			y += 10;
 
-			SetDParam(0, _language_dropdown[sel->info.server_lang]);
+			SetDParam(0, STR_NETWORK_LANG_ANY + sel->info.server_lang);
 			DrawString(x, y, STR_NETWORK_LANGUAGE, 2); // server language
 			y += 10;
 
@@ -609,7 +614,7 @@
 		SetDParam( 9, _players_dropdown[_network_game_info.clients_max]);
 		SetDParam(11, _players_dropdown[_network_game_info.companies_max]);
 		SetDParam(13, _players_dropdown[_network_game_info.spectators_max]);
-		SetDParam(15, _language_dropdown[_network_game_info.server_lang]);
+		SetDParam(15, STR_NETWORK_LANG_ANY + _network_game_info.server_lang);
 		DrawWindowWidgets(w);
 
 		GfxFillRect(11, 63, 258, 215, 0xD7);
@@ -679,9 +684,17 @@
 		case 13: case 14: /* Number of Spectators */
 			ShowDropDownMenu(w, _players_dropdown, _network_game_info.spectators_max, 14, 0, 0);
 			break;
-		case 15: case 16: /* Language */
-			ShowDropDownMenu(w, _language_dropdown, _network_game_info.server_lang, 16, 0, 0);
+		case 15: case 16: { /* 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) {
+					sel = i;
+					break;
+				}
+			}
+			ShowDropDownMenu(w, _language_dropdown, sel, 16, 0, 0);
 			break;
+		}
 		case 17: /* Start game */
 			_is_network_server = true;
 
@@ -715,7 +728,9 @@
 			case 10: _network_game_info.clients_max    = e->we.dropdown.index;        break;
 			case 12: _network_game_info.companies_max  = e->we.dropdown.index;        break;
 			case 14: _network_game_info.spectators_max = e->we.dropdown.index;        break;
-			case 16: _network_game_info.server_lang    = e->we.dropdown.index;        break;
+			case 16:
+				_network_game_info.server_lang = _language_dropdown[e->we.dropdown.index] - STR_NETWORK_LANG_ANY;
+				break;
 		}
 
 		SetWindowDirty(w);
--- a/src/network/network_server.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/network/network_server.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -832,8 +832,6 @@
 	const NetworkClientInfo *ci;
 	byte callback;
 
-	CommandPacket *cp = MallocT<CommandPacket>(1);
-
 	// The client was never joined.. so this is impossible, right?
 	//  Ignore the packet, give the client a warning, and close his connection
 	if (cs->status < STATUS_DONE_MAP || cs->has_quit) {
@@ -841,6 +839,7 @@
 		return;
 	}
 
+	CommandPacket *cp = MallocT<CommandPacket>(1);
 	cp->player = (Owner)p->Recv_uint8();
 	cp->cmd    = p->Recv_uint32();
 	cp->p1     = p->Recv_uint32();
@@ -850,7 +849,10 @@
 
 	callback = p->Recv_uint8();
 
-	if (cs->has_quit) return;
+	if (cs->has_quit) {
+		free(cp);
+		return;
+	}
 
 	ci = DEREF_CLIENT_INFO(cs);
 
@@ -858,11 +860,13 @@
 	if (!IsValidCommand(cp->cmd)) {
 		IConsolePrintF(_icolour_err, "WARNING: invalid command from client %d (IP: %s).", ci->client_index, GetPlayerIP(ci));
 		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
+		free(cp);
 		return;
 	}
 
 	if (!CheckCommandFlags(cp, ci)) {
 		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_KICKED);
+		free(cp);
 		return;
 	}
 
@@ -874,6 +878,7 @@
 		IConsolePrintF(_icolour_err, "WARNING: player %d (IP: %s) tried to execute a command as player %d, kicking...",
 		               ci->client_playas + 1, GetPlayerIP(ci), cp->player + 1);
 		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_PLAYER_MISMATCH);
+		free(cp);
 		return;
 	}
 
@@ -885,6 +890,7 @@
 	if (cp->cmd == CMD_PLAYER_CTRL) {
 		if (cp->p1 != 0) {
 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_CHEATER);
+			free(cp);
 			return;
 		}
 
--- a/src/newgrf.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -74,12 +74,8 @@
 /* Used by Action 0x06 to preload a pseudo sprite and modify its content */
 static byte *_preload_sprite = NULL;
 
-/* Set if any vehicle is loaded which uses 2cc (two company colours) */
-bool _have_2cc = false;
-
-/* Set if there are any newhouses loaded. */
-bool _have_newhouses = false;
-
+/* Indicates which are the newgrf features currently loaded ingame */
+uint8 _loaded_newgrf_features;
 
 enum GrfDataType {
 	GDT_SOUND,
@@ -132,6 +128,9 @@
 /* Contains the GRF ID of the owner of a vehicle if it has been reserved */
 static uint32 _grm_engines[TOTAL_NUM_ENGINES];
 
+/* Contains the GRF ID of the owner of a cargo if it has been reserved */
+static uint32 _grm_cargos[NUM_CARGO];
+
 /** DEBUG() function dedicated to newGRF debugging messages
  * Function is essentialy the same as DEBUG(grf, severity, ...) with the
  * addition of file:line information when parsing grf files.
@@ -539,7 +538,7 @@
 		case 0x27: // Miscellaneous flags
 			FOR_EACH_OBJECT {
 				ei[i].misc_flags = grf_load_byte(&buf);
-				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
+				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 			}
 			break;
 
@@ -661,7 +660,7 @@
 		case 0x1C: // Miscellaneous flags
 			FOR_EACH_OBJECT {
 				ei[i].misc_flags = grf_load_byte(&buf);
-				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
+				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 			}
 			break;
 
@@ -772,7 +771,7 @@
 		case 0x17: // Miscellaneous flags
 			FOR_EACH_OBJECT {
 				ei[i].misc_flags = grf_load_byte(&buf);
-				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
+				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 			}
 			break;
 
@@ -888,7 +887,7 @@
 		case 0x17: // Miscellaneous flags
 			FOR_EACH_OBJECT {
 				ei[i].misc_flags = grf_load_byte(&buf);
-				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
+				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 			}
 			break;
 
@@ -1297,7 +1296,7 @@
 				 * FinaliseHouseArray() for more details. */
 				if (housespec[i]->min_date < 1930) housespec[i]->min_date = 1930;
 			}
-			_have_newhouses = true;
+			SETBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES);
 			break;
 
 		case 0x09: // Building flags
@@ -2505,7 +2504,7 @@
 
 			/* Don't tell me you don't love duplicated code! */
 			if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
-				grfmsg(1, "FeatureMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping",
+				grfmsg(1, "VehicleMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping",
 				       groupid, _cur_grffile->spritegroups_count);
 				continue;
 			}
@@ -2897,6 +2896,14 @@
 			replace = SPR_CANALS_BASE + 5;
 			break;
 
+		case 0x09: // One way graphics
+			if (num != 6) {
+				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 != 256) {
 				grfmsg(1, "GraphicsNew: 2CC colour maps sprite count must be 256, skipping");
@@ -2905,6 +2912,14 @@
 			replace = SPR_2CCMAP_BASE;
 			break;
 
+		case 0x0B: // tramways
+			if (num != 113) {
+				grfmsg(1, "GraphicsNew: Tramway graphics sprite count must be 113, skipping");
+				return;
+			}
+			replace = SPR_TRAMWAY_BASE;
+			break;
+
 		case 0x0D: // Coast graphics
 			if (num != 16) {
 				grfmsg(1, "GraphicsNew: Coast graphics sprite count must be 16, skipping");
@@ -2932,6 +2947,7 @@
 		default:
 			grfmsg(2, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring)",
 					type, num);
+			_skip_sprites = num;
 			return;
 	}
 
@@ -2971,8 +2987,14 @@
 		case 0x83: // current climate, 0=temp, 1=arctic, 2=trop, 3=toyland
 			return _opt.landscape;
 
-		case 0x84: // GRF loading stage
-			return (_cur_stage > GLS_INIT) | ((_cur_stage == GLS_ACTIVATION) << 9);
+		case 0x84: { // GRF loading stage
+			uint32 res = 0;
+
+			if (_cur_stage > GLS_INIT) SETBIT(res, 0);
+			if (_cur_stage == GLS_RESERVE) SETBIT(res, 8);
+			if (_cur_stage == GLS_ACTIVATION) SETBIT(res, 9);
+			return res;
+		}
 
 		case 0x85: // TTDPatch flags, only for bit tests
 			if (cond_val == NULL) {
@@ -3255,7 +3277,7 @@
 		_skip_sprites = -1;
 
 		/* If an action 8 hasn't been encountered yet, disable the grf. */
-		if (_cur_stage != GLS_RESERVE && _cur_grfconfig->status != GCS_ACTIVATED) _cur_grfconfig->status = GCS_DISABLED;
+		if (_cur_grfconfig->status != GCS_ACTIVATED) _cur_grfconfig->status = GCS_DISABLED;
 	}
 }
 
@@ -3305,7 +3327,7 @@
 
 	_cur_grffile->grfid = grfid;
 	_cur_grffile->grf_version = version;
-	_cur_grfconfig->status = _cur_stage < GLS_ACTIVATION ? GCS_INITIALISED : GCS_ACTIVATED;
+	_cur_grfconfig->status = _cur_stage < GLS_RESERVE ? GCS_INITIALISED : GCS_ACTIVATED;
 
 	/* Do swap the GRFID for displaying purposes since people expect that */
 	DEBUG(grf, 1, "GRFInfo: Loaded GRFv%d set %08lX - %s", version, BSWAP32(grfid), name);
@@ -3412,8 +3434,8 @@
 
 	/* Skip the error until the activation stage unless bit 7 of the severity
 	 * is set. */
-	if (!HASBIT(severity, 7) && _cur_stage < GLS_ACTIVATION) {
-		grfmsg(7, "GRFLoadError: Skipping non-fatal GRFLoadError in stage 1");
+	if (!HASBIT(severity, 7) && _cur_stage == GLS_INIT) {
+		grfmsg(7, "GRFLoadError: Skipping non-fatal GRFLoadError in stage %d", _cur_stage);
 		return;
 	}
 	CLRBIT(severity, 7);
@@ -3529,6 +3551,54 @@
 }
 
 
+static uint32 PerformGRM(uint32 *grm, uint16 num_ids, uint16 count, uint8 op, uint8 target, const char *type)
+{
+	uint start = 0;
+	uint size  = 0;
+
+	if (op == 6) {
+		/* Return GRFID of set that reserved ID */
+		return grm[_cur_grffile->param[target]];
+	}
+
+	/* With an operation of 2 or 3, we want to reserve a specific block of IDs */
+	if (op == 2 || op == 3) start = _cur_grffile->param[target];
+
+	for (uint i = start; i < num_ids; i++) {
+		if (grm[i] == 0) {
+			size++;
+		} else {
+			if (op == 2 || op == 3) break;
+			start = i + 1;
+			size = 0;
+		}
+
+		if (size == count) break;
+	}
+
+	if (size == count) {
+		/* Got the slot... */
+		if (op == 0 || op == 3) {
+			grfmsg(2, "ParamSet: GRM: Reserving %d %s at %d", count, type, start);
+			for (uint i = 0; i < count; i++) grm[start + i] = _cur_grffile->grfid;
+		}
+		return start;
+	}
+
+	/* Unable to allocate */
+	if (op != 4 && op != 5) {
+		/* Deactivate GRF */
+		grfmsg(0, "ParamSet: GRM: Unable to allocate %d %s, deactivating", count, type);
+		_cur_grfconfig->status = GCS_DISABLED;
+		_skip_sprites = -1;
+		return UINT_MAX;
+	}
+
+	grfmsg(1, "ParamSet: GRM: Unable to allocate %d %s", count, type);
+	return UINT_MAX;
+}
+
+
 /* Action 0x0D */
 static void ParamSet(byte *buf, int len)
 {
@@ -3599,55 +3669,9 @@
 						case 0x01: // Road Vehicles
 						case 0x02: // Ships
 						case 0x03: // Aircraft
-						{
-							uint start = 0;
-							uint size  = 0;
-							uint shift = _vehshifts[feature];
-
-							if (op == 6) {
-								/* Return GRFID of set that reserved ID */
-								src1 = _grm_engines[shift + _cur_grffile->param[target]];
-								break;
-							}
-
-							/* With an operation of 2 or 3, we want to reserve a specific block of IDs */
-							if (op == 2 || op == 3) start = _cur_grffile->param[target];
-
-							for (uint i = start; i < _vehcounts[feature]; i++) {
-								if (_grm_engines[shift + i] == 0) {
-									size++;
-								} else {
-									if (op == 2 || op == 3) break;
-									start = i + 1;
-									size = 0;
-								}
-
-								if (size == count) break;
-							}
-
-							if (size == count) {
-								/* Got the slot... */
-								if (op == 0 || op == 3) {
-									grfmsg(2, "ParamSet: GRM: Reserving %d vehicles at %d", count, start);
-									for (uint i = 0; i < count; i++) _grm_engines[shift + start + i] = _cur_grffile->grfid;
-								}
-								src1 = start;
-							} else {
-								/* Unable to allocate */
-								if (op != 4 && op != 5) {
-									/* Deactivate GRF */
-									grfmsg(0, "ParamSet: GRM: Unable to allocate %d vehicles, deactivating", count);
-									_cur_grfconfig->status = GCS_DISABLED;
-
-									_skip_sprites = -1;
-									return;
-								}
-
-								grfmsg(1, "ParamSet: GRM: Unable to allocate %d vehicles", count);
-								src1 = UINT_MAX;
-							}
+							src1 = PerformGRM(&_grm_engines[_vehshifts[feature]], _vehcounts[feature], count, op, target, "vehicles");
+							if (_skip_sprites == -1) return;
 							break;
-						}
 
 						case 0x08: // General sprites
 							switch (op) {
@@ -3676,6 +3700,11 @@
 							}
 							break;
 
+						case 0x0B: // Cargo
+							src1 = PerformGRM(_grm_cargos, NUM_CARGO, count, op, target, "cargos");
+							if (_skip_sprites == -1) return;
+							break;
+
 						default: grfmsg(1, "ParamSet: GRM: Unsupported feature 0x%X", feature); return;
 					}
 				}
@@ -4237,10 +4266,10 @@
 	                   |                                        (1 << 0x11)  // autoreplace
 	                   |                                        (1 << 0x12)  // autoslope
 	                   |                                        (0 << 0x13)  // followvehicle
-	                   |                                        (0 << 0x14)  // trams
+	                   |                                        (1 << 0x14)  // trams
 	                   |                                        (0 << 0x15)  // enhancetunnels
-	                   |                                        (0 << 0x16)  // shortrvs
-	                   |                                        (0 << 0x17)  // articulatedrvs
+	                   |                                        (1 << 0x16)  // shortrvs
+	                   |                                        (1 << 0x17)  // articulatedrvs
 	                   |                                        (1 << 0x1E); // variablerunningcosts
 }
 
@@ -4289,13 +4318,70 @@
 
 	for (file = _first_grffile; file != NULL; file = file->next) {
 		if (file->housespec == NULL) continue;
-		for (i = 0; i < HOUSE_MAX; i++) free(file->housespec[i]);
+		for (i = 0; i < HOUSE_MAX; i++) {
+			free(file->housespec[i]);
+		}
 
 		free(file->housespec);
 		file->housespec = NULL;
 	}
 }
 
+static void ResetCustomIndustries()
+{
+	GRFFile *file;
+
+	for (file = _first_grffile; file != NULL; file = file->next) {
+		uint i;
+		/* We are verifiying both tiles and industries specs loaded from the grf file
+		 * First, let's deal with industryspec */
+		if (file->industryspec != NULL) {
+
+			for (i = 0; i < NUM_INDUSTRYTYPES; i++) {
+				IndustrySpec *ind = file->industryspec[i];
+
+				if (ind != NULL) {
+					/* We need to remove the sounds array */
+					if (HASBIT(ind->cleanup_flag, CLEAN_RANDOMSOUNDS)) {
+						free((void*)ind->random_sounds);
+					}
+
+					/* We need to remove the tiles layouts */
+					if (HASBIT(ind->cleanup_flag, CLEAN_TILELSAYOUT) && ind->table != NULL) {
+						for (int j = 0; j < ind->num_table; j++) {
+							/* remove the individual layouts */
+							if (ind->table[j] != NULL) {
+								free((IndustryTileTable*)ind->table[j]);
+							}
+						}
+						/* remove the layouts pointers */
+						free((IndustryTileTable**)ind->table);
+						ind->table = NULL;
+					}
+
+					free(ind);
+					ind = NULL;
+				}
+			}
+
+			free(file->industryspec);
+			file->industryspec = NULL;
+		}
+
+		if (file->indtspec != NULL) {
+			for (i = 0; i < NUM_INDUSTRYTILES; i++) {
+				if (file->indtspec[i] != NULL) {
+					free(file->indtspec[i]);
+					file->indtspec[i] = NULL;
+				}
+			}
+
+			free(file->indtspec);
+			file->indtspec = NULL;
+		}
+	}
+}
+
 static void ResetNewGRF()
 {
 	GRFFile *next;
@@ -4304,6 +4390,7 @@
 		next = f->next;
 
 		free(f->filename);
+		free(f->cargo_list);
 		free(f);
 	}
 
@@ -4342,6 +4429,7 @@
 
 	/* Reset GRM reservations */
 	memset(&_grm_engines, 0, sizeof(_grm_engines));
+	memset(&_grm_cargos, 0, sizeof(_grm_cargos));
 
 	/* Unload sprite group data */
 	UnloadWagonOverrides();
@@ -4360,6 +4448,10 @@
 	ResetCustomHouses();
 	ResetHouses();
 
+	/* Reset the industries structures*/
+	ResetCustomIndustries();
+	ResetIndustries();
+
 	/* Reset station classes */
 	ResetStationClasses();
 	ResetCustomStations();
@@ -4383,8 +4475,9 @@
 	_misc_grf_features = 0;
 	_traininfo_vehicle_pitch = 0;
 	_traininfo_vehicle_width = 29;
-	_have_2cc = false;
-	_have_newhouses = false;
+
+	_loaded_newgrf_features = 0;
+
 	_signal_base = 0;
 	_coast_base = 0;
 
@@ -4669,7 +4762,7 @@
 		/* 0x05 */ { SkipAct5, SkipAct5,  SkipAct5,        SkipAct5,       SkipAct5,          GraphicsNew, },
 		/* 0x06 */ { NULL,     NULL,      NULL,            CfgApply,       CfgApply,          CfgApply, },
 		/* 0x07 */ { NULL,     NULL,      NULL,            NULL,           SkipIf,            SkipIf, },
-		/* 0x08 */ { ScanInfo, NULL,      NULL,            GRFInfo,        NULL,              GRFInfo, },
+		/* 0x08 */ { ScanInfo, NULL,      NULL,            GRFInfo,        GRFInfo,           GRFInfo, },
 		/* 0x09 */ { NULL,     NULL,      NULL,            SkipIf,         SkipIf,            SkipIf, },
 		/* 0x0A */ { SkipActA, SkipActA,  SkipActA,        SkipActA,       SkipActA,          SpriteReplace, },
 		/* 0x0B */ { NULL,     NULL,      NULL,            GRFLoadError,   GRFLoadError,      GRFLoadError, },
@@ -4738,6 +4831,7 @@
 	if (stage != GLS_FILESCAN && stage != GLS_SAFETYSCAN && stage != GLS_LABELSCAN) {
 		_cur_grffile = GetFileByFilename(filename);
 		if (_cur_grffile == NULL) error("File '%s' lost in cache.\n", filename);
+		if (stage == GLS_RESERVE && config->status != GCS_INITIALISED) return;
 		if (stage == GLS_ACTIVATION && config->status != GCS_INITIALISED) return;
 	}
 
@@ -4807,6 +4901,13 @@
 
 static void AfterLoadGRFs()
 {
+	/* Update the bitmasks for the vehicle lists */
+	Player *p;
+	FOR_ALL_PLAYERS(p) {
+		p->avail_railtypes = GetPlayerRailtypes(p->index);
+		p->avail_roadtypes = GetPlayerRoadtypes(p->index);
+	}
+
 	/* Pre-calculate all refit masks after loading GRF files. */
 	CalculateRefitMasks();
 
@@ -4842,11 +4943,13 @@
 			if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue;
 
 			/* @todo usererror() */
-			if (!FileExists(c->full_path)) error("NewGRF file is missing '%s'", c->filename);
+			if (!FioCheckFileExists(c->full_path)) error("NewGRF file is missing '%s'", c->filename);
 
 			if (stage == GLS_LABELSCAN) InitNewGRFFile(c, _cur_spriteid);
 			LoadNewGRFFile(c, slot++, stage);
-			if (stage == GLS_ACTIVATION) {
+			if (stage == GLS_RESERVE) {
+				if (c->status == GCS_ACTIVATED) c->status = GCS_INITIALISED;
+			} else if (stage == GLS_ACTIVATION) {
 				ClearTemporaryNewGRFData();
 				BuildCargoTranslationMap();
 				DEBUG(sprite, 2, "LoadNewGRF: Currently %i sprites are loaded", _cur_spriteid);
--- a/src/newgrf.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf.h	Wed Jun 13 12:05:56 2007 +0000
@@ -10,6 +10,7 @@
 #include "newgrf_config.h"
 #include "helpers.hpp"
 #include "cargotype.h"
+#include "industry.h"
 
 enum GrfLoadingStage {
 	GLS_FILESCAN,
@@ -69,6 +70,8 @@
 
 	StationSpec **stations;
 	HouseSpec **housespec;
+	IndustrySpec **industryspec;
+	IndustryTileSpec **indtspec;
 
 	uint32 param[0x80];
 	uint param_end;  ///< one more than the highest set parameter
@@ -84,8 +87,15 @@
 
 extern SpriteID _signal_base;
 extern SpriteID _coast_base;
-extern bool _have_2cc;
-extern bool _have_newhouses;
+
+enum GRFLoadedFeatures {
+	GRFLOADED_2CC,             // Set if any vehicle is loaded which uses 2cc (two company colours).
+	GRFLOADED_NEWHOUSES,       // Set if there are any newhouses loaded.
+	GRFLOADED_NEWINDUSTRIES,   // Set if there are any newindustries loaded.
+};
+
+/* Indicates which are the newgrf features currently loaded ingame */
+extern uint8 _loaded_newgrf_features;
 
 void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage);
 void LoadNewGRF(uint load_index, uint file_index);
--- a/src/newgrf_commons.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_commons.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -6,6 +6,8 @@
 
 #include "stdafx.h"
 #include "openttd.h"
+#include "variables.h"
+#include "landscape.h"
 #include "town.h"
 #include "industry.h"
 #include "newgrf.h"
@@ -148,3 +150,97 @@
 		entity_overrides[i] = invalid_ID;
 	}
 }
+
+/** Method to find an entity ID and to mark it as reserved for the Industry to be included.
+ * @param grf_local_id ID used by the grf file for pre-installation work (equivalent of TTDPatch's setid
+ * @param grfid ID of the current grf file
+ * @param substitute_id industry from which data has been copied
+ * @return a free entity id (slotid) if ever one has been found, or Invalid_ID marker otherwise
+ */
+uint16 IndustryOverrideManager::AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id)
+{
+	/* This entity hasn't been defined before, so give it an ID now. */
+	for (uint16 id = 0; id < max_new_entities; id++) {
+		/* Get the real live industry */
+		const IndustrySpec *inds = GetIndustrySpec(id);
+
+		/* This industry must be one that is not available(enabled), mostly because of climate.
+		 * And it must not already be used by a grf (grffile == NULL).
+		 * So reseve this slot here, as it is the chosen one */
+		if (!inds->enabled && inds->grf_prop.grffile == NULL) {
+			EntityIDMapping *map = &mapping_ID[id];
+
+			if (map->entity_id == 0 && map->grfid == 0) {
+				/* winning slot, mark it as been used */
+				map->entity_id     = grf_local_id;
+				map->grfid         = grfid;
+				map->substitute_id = substitute_id;
+				return id;
+			}
+		}
+	}
+
+	return invalid_ID;
+}
+
+/** Method to install the new indistry data in its proper slot
+ * The slot assigment is internal of this method, since it requires
+ * checking what is available
+ * @param inds Industryspec that comes from the grf decoding process
+ */
+void IndustryOverrideManager::SetEntitySpec(const IndustrySpec *inds)
+{
+	/* First step : We need to find if this industry is already specified in the savegame data */
+	IndustryType ind_id = this->GetID(inds->grf_prop.local_id, inds->grf_prop.grffile->grfid);
+
+	if (ind_id == invalid_ID) { // not found?  So this is the introduction of a new industry
+		/* Second step is dealing with the override. */
+		if (inds->grf_prop.override != invalid_ID && _industry_specs[inds->grf_prop.override].grf_prop.override == invalid_ID) {
+			/* this is an override, which means it will take the place of the industry it is
+			 * designed to replace. Before we conclude that the override is allowed,
+			* we first need to verify that the slot is not holding another override
+			* If it's the case,it will be considered as a normal substitute */
+			ind_id = inds->grf_prop.override;
+		} else {
+			/* It has already been overriden, so you've lost your place old boy.
+			 * Or it is a simple substitute.
+			 * In both case, we need to find a free available slot */
+			ind_id = this->AddEntityID(inds->grf_prop.local_id, inds->grf_prop.grffile->grfid, inds->grf_prop.subst_id);
+		}
+	}
+
+	if (ind_id == invalid_ID) {
+		grfmsg(1, "Industry.SetEntitySpec: Too many industries allocated. Ignoring.");
+		return;
+	}
+
+	/* Now that we know we can use the given id, copy the spech to its final destination*/
+	memcpy(&_industry_specs[ind_id], inds, sizeof(*inds));
+	/* and mark it as usable*/
+	_industry_specs[ind_id].enabled = true;
+}
+
+/** Function used by houses (and soon industries) to get information
+ * on type of "terrain" the tile it is queries sits on.
+ * @param tile TileIndex of the tile been queried
+ * @return value corresponding to the grf expected format:
+ *         Terrain type: 0 normal, 1 desert, 2 rainforest, 4 on or above snowline */
+uint32 GetTerrainType(TileIndex tile)
+{
+	switch (_opt.landscape) {
+		case LT_TROPIC: return GetTropicZone(tile) == TROPICZONE_DESERT ? 1 : 2;
+		case LT_ARCTIC: return GetTileZ(tile) >= GetSnowLine() ? 4 : 0;
+		default:        return 0;
+	}
+}
+
+TileIndex GetNearbyTile(byte parameter, TileIndex tile)
+{
+	int8 x = GB(parameter, 0, 4);
+	int8 y = GB(parameter, 4, 4);
+
+	if (x >= 8) x -= 16;
+	if (y >= 8) y -= 16;
+
+	return tile + TileDiffXY(x, y);
+}
--- a/src/newgrf_commons.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_commons.h	Wed Jun 13 12:05:56 2007 +0000
@@ -35,7 +35,6 @@
 
 	uint16 invalid_ID;       ///< ID used to dected invalid entities;
 
-	virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
 public:
 	EntityIDMapping *mapping_ID; ///< mapping of ids from grf files.  Public out of convenience
 
@@ -46,6 +45,7 @@
 	void ResetMapping();
 
 	void Add(uint8 local_id, uint entity_type);
+	virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
 
 	uint16 GetSubstituteID(byte entity_id);
 	uint16 GetID(uint8 grf_local_id, uint32 grfid);
@@ -59,11 +59,27 @@
 class HouseOverrideManager : public OverrideManagerBase
 {
 public:
-	HouseOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {};
+	HouseOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
+			OverrideManagerBase(offset, maximum, invalid) {};
 	void SetEntitySpec(const HouseSpec *hs);
 };
 
 
+struct IndustrySpec;
+class IndustryOverrideManager : public OverrideManagerBase
+{
+	public:
+		IndustryOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
+				OverrideManagerBase(offset, maximum, invalid) {};
+
+		virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
+		void SetEntitySpec(const IndustrySpec *inds);
+};
+
 extern HouseOverrideManager _house_mngr;
+extern IndustryOverrideManager _industry_mngr;
+
+uint32 GetTerrainType(TileIndex tile);
+TileIndex GetNearbyTile(byte parameter, TileIndex tile);
 
 #endif /* NEWGRF_COMMONS_H */
--- a/src/newgrf_config.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_config.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -40,7 +40,7 @@
 	size_t len;
 
 	/* open the file */
-	f = fopen(config->full_path, "rb");
+	f = FioFOpenFile(config->full_path);
 	if (f == NULL) return false;
 
 	/* calculate md5sum */
@@ -59,13 +59,14 @@
 /* Find the GRFID and calculate the md5sum */
 bool FillGRFDetails(GRFConfig *config, bool is_static)
 {
-	if (!FileExists(config->full_path)) {
+	if (!FioCheckFileExists(config->full_path)) {
 		config->status = GCS_NOT_FOUND;
 		return false;
 	}
 
 	if (config->filename == NULL) {
-		config->filename = strdup(strrchr(config->full_path, PATHSEPCHAR) + 1);
+		const char *t = strrchr(config->full_path, PATHSEPCHAR);
+		config->filename = strdup(t != NULL ? t + 1 : config->full_path);
 	}
 
 	/* Find and load the Action 8 information */
@@ -278,7 +279,7 @@
 extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb);
 
 /* Scan a path for NewGRFs */
-static uint ScanPath(const char *path)
+static uint ScanPath(const char *path, int basepath_length)
 {
 	uint num = 0;
 	struct stat sb;
@@ -299,7 +300,7 @@
 			/* Directory */
 			if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue;
 			AppendPathSeparator(filename, lengthof(filename));
-			num += ScanPath(filename);
+			num += ScanPath(filename, basepath_length);
 		} else if (sb.st_mode & S_IFREG) {
 			/* File */
 			char *ext = strrchr(filename, '.');
@@ -309,7 +310,7 @@
 			if (strcasecmp(ext, ".grf") != 0) continue;
 
 			GRFConfig *c = CallocT<GRFConfig>(1);
-			c->full_path = strdup(filename);
+			c->full_path = strdup(filename + basepath_length);
 
 			bool added = true;
 			if (FillGRFDetails(c, false)) {
@@ -360,8 +361,10 @@
 	ClearGRFConfigList(&_all_grfs);
 
 	DEBUG(grf, 1, "Scanning for NewGRFs");
-	num  = ScanPath(_paths.data_dir);
-	num += ScanPath(_paths.second_data_dir);
+	num  = ScanPath(_paths.data_dir, strlen(_paths.data_dir));
+	if (_paths.second_data_dir != NULL) {
+		num += ScanPath(_paths.second_data_dir, strlen(_paths.second_data_dir));
+	}
 	DEBUG(grf, 1, "Scan complete, found %d files", num);
 }
 
--- a/src/newgrf_engine.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_engine.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -507,7 +507,7 @@
 	switch (variable) {
 		case 0x40: // Get length of consist
 		case 0x41: // Get length of same consecutive wagons
-			if (v->type != VEH_TRAIN) return 1;
+			if (!v->HasFront()) return 1;
 
 			{
 				const Vehicle* u;
@@ -528,16 +528,19 @@
 			}
 
 		case 0x42: { // Consist cargo information
-			/* XXX Missing support for common refit cycle and property 25 */
 			const Vehicle *u;
 			byte cargo_classes = 0;
-			uint common_cargo_best = 0;
-			uint common_cargos[NUM_CARGO];
+			uint8 common_cargo_best = 0;
+			uint8 common_cargos[NUM_CARGO];
+			uint8 common_subtype_best = 0;
+			uint8 common_subtypes[256];
 			byte user_def_data = 0;
 			CargoID common_cargo_type = CT_PASSENGERS;
+			uint8 common_subtype = 0;
 
 			/* Reset our arrays */
 			memset(common_cargos, 0, sizeof(common_cargos));
+			memset(common_subtypes, 0, sizeof(common_subtypes));
 
 			for (u = v; u != NULL; u = u->next) {
 				/* Skip empty engines */
@@ -546,6 +549,7 @@
 				cargo_classes |= GetCargo(u->cargo_type)->classes;
 				common_cargos[u->cargo_type]++;
 				user_def_data |= RailVehInfo(u->engine_type)->user_def_data;
+				common_subtypes[u->cargo_subtype]++;
 			}
 
 			/* Pick the most common cargo type */
@@ -556,7 +560,14 @@
 				}
 			}
 
-			return cargo_classes | (common_cargo_type << 8) | (user_def_data << 24);
+			for (uint i = 0; i < lengthof(common_subtypes); i++) {
+				if (common_subtypes[i] > common_subtype_best) {
+					common_subtype_best = common_subtypes[i];
+					common_subtype = i;
+				}
+			}
+
+			return cargo_classes | (common_cargo_type << 8) | (common_subtype << 16) | (user_def_data << 24);
 		}
 
 		case 0x43: // Player information
@@ -819,7 +830,7 @@
 	res->ResolveReal   = &VehicleResolveReal;
 
 	res->u.vehicle.self   = v;
-	res->u.vehicle.parent = (v != NULL && v->type == VEH_TRAIN) ? GetFirstVehicleInChain(v) : v;
+	res->u.vehicle.parent = (v != NULL && v->HasFront()) ? GetFirstVehicleInChain(v) : v;
 
 	res->u.vehicle.self_type = engine_type;
 
--- a/src/newgrf_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -186,8 +186,9 @@
 						GRFConfig *c = CallocT<GRFConfig>(1);
 						*c = *src;
 						c->filename = strdup(src->filename);
-						if (src->name != NULL) c->name = strdup(src->name);
-						if (src->info != NULL) c->info = strdup(src->info);
+						if (src->full_path != NULL) c->full_path = strdup(src->full_path);
+						if (src->name      != NULL) c->name      = strdup(src->name);
+						if (src->info      != NULL) c->info      = strdup(src->info);
 						c->next = NULL;
 
 						/* Append GRF config to configuration list */
--- a/src/newgrf_house.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_house.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -83,7 +83,7 @@
 {
 	HouseClassID class_id = GetHouseSpecs(house_id)->class_id;
 
-	if (!_have_newhouses) return;
+	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 
 	/* If there are 255 buildings of this type in this town, there are also
 	 * at least that many houses of the same class in the town, and
@@ -111,7 +111,7 @@
 {
 	HouseClassID class_id = GetHouseSpecs(house_id)->class_id;
 
-	if (!_have_newhouses) return;
+	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 
 	if (t->building_counts.id_count[house_id] > 0) t->building_counts.id_count[house_id]--;
 	if (_building_counts.id_count[house_id] > 0)   _building_counts.id_count[house_id]--;
@@ -129,7 +129,7 @@
  */
 void AfterLoadCountBuildings()
 {
-	if (!_have_newhouses) return;
+	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 
 	for (TileIndex t = 0; t < MapSize(); t++) {
 		if (!IsTileType(t, MP_HOUSE)) continue;
@@ -169,15 +169,6 @@
 	return map_class_count << 24 | town_class_count << 16 | map_id_count << 8 | town_id_count;
 }
 
-static uint32 GetTerrainType(TileIndex tile)
-{
-	switch (_opt.landscape) {
-		case LT_TROPIC: return GetTropicZone(tile) == TROPICZONE_DESERT ? 1 : 2;
-		case LT_ARCTIC: return GetTileZ(tile) >= GetSnowLine() ? 4 : 0;
-		default:        return 0;
-	}
-}
-
 static uint32 GetGRFParameter(HouseID house_id, byte parameter)
 {
 	const HouseSpec *hs = GetHouseSpecs(house_id);
@@ -187,6 +178,16 @@
 	return file->param[parameter];
 }
 
+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;
+
+	return GetTileType(tile) << 24 | (TileHeight(tile) * 8) << 16 | tile_type << 8 | GetTileSlope(tile, NULL);
+}
+
 /**
  * HouseGetVariable():
  *
@@ -238,20 +239,7 @@
 		}
 
 		/* Land info for nearby tiles. */
-		case 0x62: {
-			int8 x = GB(parameter, 0, 4);
-			int8 y = GB(parameter, 4, 4);
-			byte tile_type;
-
-			if (x >= 8) x -= 16;
-			if (y >= 8) y -= 16;
-
-			tile += TileDiffXY(x, y);
-
-			tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
-
-			return GetTileType(tile) << 24 | (TileHeight(tile) * 8) << 16 | tile_type << 8 | GetTileSlope(tile, NULL);
-		}
+		case 0x62: return GetNearbyTileInformation(parameter, tile);
 
 		/* Read GRF parameter */
 		case 0x7F: return GetGRFParameter(object->u.house.house_id, parameter);
--- a/src/newgrf_house.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_house.h	Wed Jun 13 12:05:56 2007 +0000
@@ -8,22 +8,6 @@
 #include "town.h"
 
 /**
- * Maps a house id stored on the map to a GRF file.
- * House IDs are stored on the map, so there needs to be a way to tie them to
- * GRF files. An array of HouseIDMapping structs is saved with the savegame so
- * that house GRFs can be loaded in a different order, or removed safely. The
- * index in the array is the house ID stored on the map.
- *
- * The substitute ID is the ID of an original house that should be used instead
- * if the GRF containing the new house is not available.
- */
-struct HouseIDMapping {
-	uint32 grfid;          ///< The GRF ID of the file this house belongs to
-	uint8  house_id;       ///< The house ID within the GRF file
-	uint8  substitute_id;  ///< The (original) house ID to use if this GRF is not available
-};
-
-/**
  * Makes class IDs unique to each GRF file.
  * Houses can be assigned class IDs which are only comparable within the GRF
  * file they were defined in. This mapping ensures that if two houses have the
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/newgrf_industries.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,225 @@
+/* $Id$ */
+
+/** @file newgrf_industries.cpp */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "debug.h"
+#include "functions.h"
+#include "macros.h"
+#include "industry.h"
+#include "newgrf.h"
+#include "newgrf_callbacks.h"
+#include "newgrf_spritegroup.h"
+#include "newgrf_industries.h"
+#include "newgrf_commons.h"
+
+/* 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
+ * translated when the idustry spec is set. */
+IndustryOverrideManager _industry_mngr(NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE);
+
+/**
+ * Finds the distance for the closest tile with water/land given a tile
+ * @param tile  the tile to find the distance too
+ * @param water whether to find water or land
+ * @note FAILS when an industry should be seen as water
+ */
+static uint GetClosestWaterDistance(TileIndex tile, bool water)
+{
+	TileIndex t;
+	uint best_dist;
+	for (t = 1; t < MapSize(); t++) {
+		if (IsTileType(t, MP_WATER) == water) break;
+	}
+	best_dist = DistanceManhattan(tile, t);
+
+	for (; t < MapSize(); t++) {
+		uint dist = DistanceManhattan(tile, t);
+		if (dist < best_dist) {
+			if (IsTileType(t, MP_WATER) == water) best_dist = dist;
+		} else {
+			/* When the Y distance between the current row and the 'source' tile
+			 * is larger than the best distance, we've found the best distance */
+			if (TileY(t) - TileY(tile) > best_dist) return best_dist;
+			if (TileX(tile) > TileX(t)) {
+				/* We can safely skip this many tiles; from here all tiles have a
+				 * higher or equal distance than the best distance */
+				t |= MapMaxX();
+				continue;
+			} else {
+				/* We can safely skip this many tiles; up to here all tiles have a
+				 * higher or equal distance than the best distance */
+				t += best_dist - dist;
+				continue;
+			}
+		}
+	}
+
+	return best_dist;
+}
+
+/** This function implements the industries variables that newGRF defines.
+ * @param variable that is queried
+ * @param parameter unused
+ * @param available will return false if ever the variable asked for does not exist
+ * @param ind is of course the industry we are inquiring
+ * @return the value stored in the corresponding variable*/
+uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
+{
+	const Industry *industry = object->u.industry.ind;
+	TileIndex tile   = object->u.industry.tile;
+	const IndustrySpec *indspec = GetIndustrySpec(industry->type);
+
+	switch (variable) {
+		case 0x40:
+		case 0x41:
+		case 0x42: { // waiting cargo, but only if those two callback flags are set
+			uint16 callback = indspec->callback_flags;
+			if (callback & (CBM_IND_PRODUCTION_CARGO_ARRIVAL | callback & CBM_IND_PRODUCTION_256_TICKS)) {
+				return max(industry->cargo_waiting[variable - 0x40], (uint16)0x7FFF);
+			} else {
+				return 0;
+			}
+		}
+		/* TODO: somehow determine whether we're in water or not */
+		case 0x43: return GetClosestWaterDistance(tile, true); // Manhattan distance of closes dry/water tile
+
+		case 0x60: { /* Get industry ID at offset param */
+			/*The parameter of this variable is an offset from the northernmost tile of the industry:
+			 * the high nibble contains the Y offset, the low one the X offset; both are unsigned.
+			 * The high word of the return value is currently reserved, and the low word can be:
+			 * 00xxh if the tile is an industry tile and was defined in the current GRF with ID xx.
+			 * FFxxh if the tile is an industry tile of an old type, and has the ID xx.
+			 * FFFEh if the tile is an industry tile that was defined in another GRF file
+			 * FFFFh if the tile isn't an industry tile, or doesn't belong to the current industry */
+			return GetIndustry(GetNearbyTile(parameter, tile))->type;
+		}
+
+		case 0x61: return 0; // Get random tile bits at offset param
+
+		case 0x62: // Land info of nearby tiles
+		case 0x63: // Animation stage of nerby tiles
+		case 0x64: break; // Distance of nearest industry of given type
+		/* Get town zone and Manhattan distance of closest town */
+ 		case 0x65: return industry->town->GetRadiusGroup(tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
+		/* Get square of Euclidian distance of closes town */
+		case 0x66: return industry->town->GetRadiusGroup(tile) << 16 | min(DistanceSquare(tile, industry->town->xy), 0xFFFF);
+
+		/* Count of industry, distance of closest instance
+		 * format is rr(reserved) cc(count)  dddd(manhattan distance of closest sister)
+		 * A lot more should be done, since it has to check for local id, grf id etc...
+		 * let's just say it is a beginning ;) */
+		case 0x67: return GetIndustryTypeCount(industry->type) << 16 | 0;
+
+		/* Industry founder information.
+		 * 0x10 if randomly created or from a map pre-newindustry.
+		 * Else, the company who funded it */
+		case 0xA7: return 0x10;
+
+		case 0xB0: // Date when built since 1920 (in days)
+		case 0xB3: // Construction type
+		case 0xB4: break; // Date last cargo accepted since 1920 (in days)
+
+		/* Industry structure access*/
+		case 0x80: return industry->xy;
+		case 0x81: return GB(industry->xy, 8, 8);
+		/* Pointer to the town the industry is associated with */
+		case 0x82:
+		case 0x83:
+		case 0x84:
+		case 0x85: break; // not supported
+		case 0x86: return industry->width;
+		case 0x87: return industry->height;// xy dimensions
+		/*  */
+		case 0x88:
+		case 0x89: return indspec->produced_cargo[variable - 0x88];
+		case 0x8A: return industry->cargo_waiting[0];
+		case 0x8B: return GB(industry->cargo_waiting[0], 8, 8);
+		case 0x8C: return industry->cargo_waiting[1];
+		case 0x8D: return GB(industry->cargo_waiting[1], 8, 8);
+		case 0x8E:
+		case 0x8F: return industry->production_rate[variable - 0x8E];
+		case 0x90:
+		case 0x91:
+		case 0x92: return indspec->accepts_cargo[variable - 0x90];
+		case 0x93: return industry->prod_level;
+		/* amount of cargo produced so far THIS month. */
+		case 0x94: return industry->this_month_production[0];
+		case 0x95: return GB(industry->this_month_production[0], 8, 8);
+		case 0x96: return industry->this_month_production[1];
+		case 0x97: return GB(industry->this_month_production[1], 8, 8);
+		/* amount of cargo transported so far THIS month. */
+		case 0x98: return industry->this_month_transported[0];
+		case 0x99: return GB(industry->this_month_transported[0], 8, 8);
+		case 0x9A: return industry->this_month_transported[1];
+		case 0x9B: return GB(industry->this_month_transported[0], 8, 8);
+		/* fraction of cargo transported LAST month. */
+		case 0x9C:
+		case 0x9D: return industry->last_month_pct_transported[variable - 0x9C];
+		/* amount of cargo produced LAST month. */
+		case 0x9E: return industry->last_month_production[0];
+		case 0x9F: return GB(industry->last_month_production[0], 8, 8);
+		case 0xA0: return industry->last_month_production[1];
+		case 0xA1: return GB(industry->last_month_production[1], 8, 8);
+		/* amount of cargo transported last month. */
+		case 0xA2: return industry->last_month_transported[0];
+		case 0xA3: return GB(industry->last_month_transported[0], 8, 8);
+		case 0xA4: return industry->last_month_transported[1];
+		case 0xA5: return GB(industry->last_month_transported[0], 8, 8);
+
+		case 0xA6: return industry->type;
+
+		case 0xA8: return industry->random_color;
+		case 0xA9: return industry->last_prod_year; // capped?
+		case 0xAA: return industry->counter;
+		case 0xAB: return GB(industry->counter, 8, 8);
+		case 0xAC: return industry->was_cargo_delivered;
+	}
+
+	DEBUG(grf, 1, "Unhandled industry property 0x%X", variable);
+
+	*available = false;
+	return (uint32)-1;
+}
+
+static const SpriteGroup *IndustryResolveReal(const ResolverObject *object, const SpriteGroup *group)
+{
+	/* IndustryTile do not have 'real' groups */
+	return NULL;
+}
+
+static void NewIndustryResolver(ResolverObject *res, IndustryType ind_id, TileIndex tile, Industry *indus)
+{
+	res->GetRandomBits = NULL;//IndustryTileGetRandomBits;
+	res->GetTriggers   = NULL;//IndustryTileGetTriggers;
+	res->SetTriggers   = NULL;//IndustryTileSetTriggers;
+	res->GetVariable   = IndustryGetVariable;
+	res->ResolveReal   = IndustryResolveReal;
+
+	res->u.industry.tile = tile;
+	res->u.industry.ind  = indus;
+
+	res->callback        = 0;
+	res->callback_param1 = 0;
+	res->callback_param2 = 0;
+	res->last_value      = 0;
+	res->trigger         = 0;
+	res->reseed          = 0;
+}
+
+uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, TileIndex tile)
+{
+	ResolverObject object;
+	const SpriteGroup *group;
+
+	NewIndustryResolver(&object, industry->type, tile, industry);
+	object.callback = callback;
+	object.callback_param1 = param1;
+	object.callback_param2 = param2;
+
+	group = Resolve(GetIndustrySpec(industry->type)->grf_prop.spritegroup, &object);
+	if (group == NULL || group->type != SGT_CALLBACK) return CALLBACK_FAILED;
+
+	return group->g.callback.result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/newgrf_industries.h	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,14 @@
+/* $Id$ */
+
+/** @file newgrf_industries.h */
+
+#ifndef NEWGRF_INDUSTRIES_H
+#define NEWGRF_INDUSTRIES_H
+
+#include "industry.h"
+#include "newgrf_spritegroup.h"
+
+uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available);
+uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, TileIndex tile);
+
+#endif /* NEWGRF_INDUSTRIES_H */
--- a/src/newgrf_spritegroup.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_spritegroup.h	Wed Jun 13 12:05:56 2007 +0000
@@ -6,6 +6,7 @@
 #define NEWGRF_SPRITEGROUP_H
 
 #include "town.h"
+#include "industry.h"
 
 struct SpriteGroup;
 
@@ -197,6 +198,10 @@
 			HouseID house_id;
 		} house;
 		struct {
+			TileIndex tile;
+			Industry *ind;
+		} industry;
+		struct {
 			const struct CargoSpec *cs;
 		} cargo;
 	} u;
--- a/src/newgrf_station.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/newgrf_station.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -15,6 +15,7 @@
 #include "station_map.h"
 #include "newgrf.h"
 #include "newgrf_callbacks.h"
+#include "newgrf_commons.h"
 #include "newgrf_station.h"
 #include "newgrf_spritegroup.h"
 #include "date.h"
@@ -307,7 +308,7 @@
 	uint i;
 
 	for (i = 0; i < lengthof(x_dir); i++, dir++, diagdir++) {
-		uint32 ts = GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL);
+		uint32 ts = GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0);
 		if (ts != 0) {
 			/* If there is any track on the tile, set the bit in the second byte */
 			SETBIT(res, i + 8);
@@ -388,10 +389,7 @@
 		/* Calculated station variables */
 		case 0x40: return GetPlatformInfoHelper(tile, false, false, false);
 		case 0x41: return GetPlatformInfoHelper(tile, true,  false, false);
-		case 0x42: // Terrain and rail type
-			return ((_opt.landscape == LT_ARCTIC && GetTileZ(tile) > GetSnowLine()) ? 4 : 0) |
-			       (_opt.landscape == LT_TROPIC ? GetTropicZone(tile) : 0) |
-			       (GetRailType(tile) << 8);
+		case 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8);
 		case 0x43: return st->owner; // Station owner
 		case 0x44: return 2;         // PBS status
 		case 0x45: return GetRailContinuationInfo(tile);
--- a/src/npf.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/npf.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -357,7 +357,7 @@
 				 * encounter, if it is red */
 
 				/* Is this a presignal exit or combo? */
-				SignalType sigtype = GetSignalType(tile);
+				SignalType sigtype = GetSignalType(tile, TrackdirToTrack(trackdir));
 				if (sigtype == SIGTYPE_EXIT || sigtype == SIGTYPE_COMBO) {
 					/* Penalise exit and combo signals differently (heavier) */
 					cost += _patches.npf_rail_firstred_exit_penalty;
@@ -523,6 +523,7 @@
 	uint32 ts;
 	TrackdirBits trackdirbits;
 	TransportType type = (TransportType)aystar->user_data[NPF_TYPE];
+	uint subtype = aystar->user_data[NPF_SUB_TYPE];
 	bool override_dst_check = false;
 	/* Initialize to 0, so we can jump out (return) somewhere an have no neighbours */
 	aystar->num_neighbours = 0;
@@ -622,7 +623,7 @@
 		 * the back */
 		ts = TrackdirToTrackdirBits(DiagdirToDiagTrackdir(ReverseDiagDir(exitdir)));
 	} else {
-		ts = GetTileTrackStatus(dst_tile, type);
+		ts = GetTileTrackStatus(dst_tile, type, subtype);
 	}
 	trackdirbits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK); /* Filter out signal status and the unused bits */
 
@@ -670,7 +671,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, 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, RailTypeMask railtypes, uint reverse_penalty)
 {
 	int r;
 	NPFFoundTargetData result;
@@ -709,6 +710,7 @@
 
 	/* Initialize user_data */
 	_npf_aystar.user_data[NPF_TYPE] = type;
+	_npf_aystar.user_data[NPF_SUB_TYPE] = sub_type;
 	_npf_aystar.user_data[NPF_OWNER] = owner;
 	_npf_aystar.user_data[NPF_RAILTYPES] = railtypes;
 
@@ -728,7 +730,7 @@
 	return result;
 }
 
-NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
 {
 	AyStarNode start1;
 	AyStarNode start2;
@@ -742,15 +744,15 @@
 	start2.direction = trackdir2;
 	start2.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR;
 
-	return NPFRouteInternal(&start1, (IsValidTile(tile2) ? &start2 : NULL), target, NPFFindStationOrTile, NPFCalcStationOrTileHeuristic, type, owner, railtypes, 0);
+	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, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
 {
-	return NPFRouteToStationOrTileTwoWay(tile, trackdir, INVALID_TILE, INVALID_TRACKDIR, target, type, owner, 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, Owner owner, RailTypeMask railtypes, uint reverse_penalty)
+NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes, uint reverse_penalty)
 {
 	AyStarNode start1;
 	AyStarNode start2;
@@ -766,15 +768,15 @@
 
 	/* perform a breadth first search. Target is NULL,
 	 * since we are just looking for any depot...*/
-	return NPFRouteInternal(&start1, (IsValidTile(tile2) ? &start2 : NULL), NULL, NPFFindDepot, NPFCalcZero, type, owner, railtypes, reverse_penalty);
+	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, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes)
 {
-	return NPFRouteToDepotBreadthFirstTwoWay(tile, trackdir, INVALID_TILE, INVALID_TRACKDIR, type, owner, railtypes, 0);
+	return NPFRouteToDepotBreadthFirstTwoWay(tile, trackdir, INVALID_TILE, INVALID_TRACKDIR, type, sub_type, owner, railtypes, 0);
 }
 
-NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, Owner owner, RailTypeMask railtypes)
+NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask 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
@@ -823,6 +825,7 @@
 
 	/* Initialize user_data */
 	_npf_aystar.user_data[NPF_TYPE] = type;
+	_npf_aystar.user_data[NPF_SUB_TYPE] = sub_type;
 	_npf_aystar.user_data[NPF_OWNER] = owner;
 
 	/* Initialize Start Node */
--- a/src/npf.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/npf.h	Wed Jun 13 12:05:56 2007 +0000
@@ -46,6 +46,7 @@
 /* Indices into AyStar.userdata[] */
 enum {
 	NPF_TYPE = 0,  ///< Contains a TransportTypes value
+	NPF_SUB_TYPE,  ///< Contains the sub transport type
 	NPF_OWNER,     ///< Contains an Owner value
 	NPF_RAILTYPES, ///< Contains a bitmask the compatible RailTypes of the engine when NPF_TYPE == TRANSPORT_RAIL. Unused otherwise.
 };
@@ -76,28 +77,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, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask 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, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, NPFFindStationOrTileData* target, TransportType type, uint sub_type, Owner owner, RailTypeMask 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, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToDepotBreadthFirst(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask 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, Owner owner, RailTypeMask railtypes, uint reverse_penalty);
+NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, TileIndex tile2, Trackdir trackdir2, TransportType type, uint sub_type, Owner owner, RailTypeMask 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, Owner owner, RailTypeMask railtypes);
+NPFFoundTargetData NPFRouteToDepotTrialError(TileIndex tile, Trackdir trackdir, TransportType type, uint sub_type, Owner owner, RailTypeMask railtypes);
 
 void NPFFillWithOrderData(NPFFindStationOrTileData* fstd, Vehicle* v);
 
--- a/src/oldloader.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/oldloader.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -665,18 +665,18 @@
 
 	OCL_SVAR(  OC_UINT8, Industry, prod_level ),
 
-	OCL_SVAR( OC_UINT16, Industry, last_mo_production[0] ),
-	OCL_SVAR( OC_UINT16, Industry, last_mo_production[1] ),
-	OCL_SVAR( OC_UINT16, Industry, last_mo_transported[0] ),
-	OCL_SVAR( OC_UINT16, Industry, last_mo_transported[1] ),
+	OCL_SVAR( OC_UINT16, Industry, this_month_production[0] ),
+	OCL_SVAR( OC_UINT16, Industry, this_month_production[1] ),
+	OCL_SVAR( OC_UINT16, Industry, this_month_transported[0] ),
+	OCL_SVAR( OC_UINT16, Industry, this_month_transported[1] ),
 
-	OCL_SVAR(  OC_UINT8, Industry, pct_transported[0] ),
-	OCL_SVAR(  OC_UINT8, Industry, pct_transported[1] ),
+	OCL_SVAR(  OC_UINT8, Industry, last_month_pct_transported[0] ),
+	OCL_SVAR(  OC_UINT8, Industry, last_month_pct_transported[1] ),
 
-	OCL_SVAR( OC_UINT16, Industry, total_production[0] ),
-	OCL_SVAR( OC_UINT16, Industry, total_production[1] ),
-	OCL_SVAR( OC_UINT16, Industry, total_transported[0] ),
-	OCL_SVAR( OC_UINT16, Industry, total_transported[1] ),
+	OCL_SVAR( OC_UINT16, Industry, last_month_production[0] ),
+	OCL_SVAR( OC_UINT16, Industry, last_month_production[1] ),
+	OCL_SVAR( OC_UINT16, Industry, last_month_transported[0] ),
+	OCL_SVAR( OC_UINT16, Industry, last_month_transported[1] ),
 
 	OCL_SVAR(  OC_UINT8, Industry, type ),
 	OCL_SVAR(  OC_UINT8, Industry, owner ),
--- a/src/openttd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/openttd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -64,6 +64,7 @@
 #include "newgrf_commons.h"
 #include "player_face.h"
 #include "group.h"
+#include "blitter/blitter.hpp"
 
 #include "bridge_map.h"
 #include "clear_map.h"
@@ -85,6 +86,8 @@
 extern Player* DoStartupNewPlayer(bool is_ai);
 extern void ShowOSErrorBox(const char *buf);
 
+const char *_default_blitter = "8bpp-optimzed";
+
 /* TODO: usrerror() for errors which are not of an internal nature but
  * caused by the user, i.e. missing files or fatal configuration errors.
  * Post-0.4.0 since Celestar doesn't want this in SVN before. --pasky */
@@ -159,6 +162,7 @@
 		"  -v drv              = Set video driver (see below)\n"
 		"  -s drv              = Set sound driver (see below) (param bufsize,hz)\n"
 		"  -m drv              = Set music driver (see below)\n"
+		"  -b drv              = Set the blitter to use (see below)\n"
 		"  -r res              = Set resolution (for instance 800x600)\n"
 		"  -h                  = Display this help text\n"
 		"  -t year             = Set starting year\n"
@@ -183,6 +187,9 @@
 
 	p = GetDriverList(p, lastof(buf));
 
+	/* List the blitters */
+	p = BlitterFactoryBase::GetBlittersInfo(p, lastof(buf));
+
 	/* ShowInfo put output to stderr, but version information should go
 	 * to stdout; this is the only exception */
 #if !defined(WIN32) && !defined(WIN64)
@@ -350,7 +357,7 @@
 {
 	int i;
 	const char *optformat;
-	char musicdriver[32], sounddriver[32], videodriver[32];
+	char musicdriver[32], sounddriver[32], videodriver[32], blitter[32];
 	int resolution[2] = {0, 0};
 	Year startyear = INVALID_YEAR;
 	uint generation_seed = GENERATE_NEW_SEED;
@@ -364,7 +371,7 @@
 	uint16 dedicated_port = 0;
 #endif /* ENABLE_NETWORK */
 
-	musicdriver[0] = sounddriver[0] = videodriver[0] = '\0';
+	musicdriver[0] = sounddriver[0] = videodriver[0] = blitter[0] = '\0';
 
 	_game_mode = GM_MENU;
 	_switch_mode = SM_MENU;
@@ -376,7 +383,7 @@
 	 *   a letter means: it accepts that param (e.g.: -h)
 	 *   a ':' behind it means: it need a param (e.g.: -m<driver>)
 	 *   a '::' behind it means: it can optional have a param (e.g.: -d<debug>) */
-	optformat = "m:s:v:hD::n::eit:d::r:g::G:c:xl:"
+	optformat = "m:s:v:b:hD::n::eit:d::r:g::G:c:xl:"
 #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32)
 		"f"
 #endif
@@ -389,6 +396,7 @@
 		case 'm': ttd_strlcpy(musicdriver, mgo.opt, sizeof(musicdriver)); break;
 		case 's': ttd_strlcpy(sounddriver, mgo.opt, sizeof(sounddriver)); break;
 		case 'v': ttd_strlcpy(videodriver, mgo.opt, sizeof(videodriver)); break;
+		case 'b': ttd_strlcpy(blitter, mgo.opt, sizeof(blitter)); break;
 #if defined(ENABLE_NETWORK)
 		case 'D':
 			strcpy(musicdriver, "null");
@@ -461,6 +469,7 @@
 	if (!StrEmpty(musicdriver)) ttd_strlcpy(_ini_musicdriver, musicdriver, sizeof(_ini_musicdriver));
 	if (!StrEmpty(sounddriver)) ttd_strlcpy(_ini_sounddriver, sounddriver, sizeof(_ini_sounddriver));
 	if (!StrEmpty(videodriver)) ttd_strlcpy(_ini_videodriver, videodriver, sizeof(_ini_videodriver));
+	if (StrEmpty(blitter)) ttd_strlcpy(blitter, _default_blitter, sizeof(blitter));
 	if (resolution[0] != 0) { _cur_resolution[0] = resolution[0]; _cur_resolution[1] = resolution[1]; }
 	if (startyear != INVALID_YEAR) _patches_newgame.starting_year = startyear;
 	if (generation_seed != GENERATE_NEW_SEED) _patches_newgame.generation_seed = generation_seed;
@@ -500,6 +509,9 @@
 	/* Initialize game palette */
 	GfxInitPalettes();
 
+	DEBUG(misc, 1, "Loading blitter '%s'...", blitter);
+	if (BlitterFactoryBase::SelectBlitter(blitter) == NULL)
+		error("Failed to select requested blitter '%s'; does it exist?", blitter);
 	DEBUG(driver, 1, "Loading drivers...");
 	LoadDriver(SOUND_DRIVER, _ini_sounddriver);
 	LoadDriver(MUSIC_DRIVER, _ini_musicdriver);
@@ -991,8 +1003,8 @@
 		Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
 		assert(w);
 
-		WP(w,vp_d).scrollpos_x += ScaleByZoom(x, w->viewport->zoom);
-		WP(w,vp_d).scrollpos_y += ScaleByZoom(y, w->viewport->zoom);
+		WP(w,vp_d).dest_scrollpos_x += ScaleByZoom(x, w->viewport->zoom);
+		WP(w,vp_d).dest_scrollpos_y += ScaleByZoom(y, w->viewport->zoom);
 	}
 }
 
@@ -1284,6 +1296,8 @@
 
 	WP(w,vp_d).scrollpos_x = _saved_scrollpos_x;
 	WP(w,vp_d).scrollpos_y = _saved_scrollpos_y;
+	WP(w,vp_d).dest_scrollpos_x = _saved_scrollpos_x;
+	WP(w,vp_d).dest_scrollpos_y = _saved_scrollpos_y;
 
 	vp = w->viewport;
 	vp->zoom = _saved_scrollpos_zoom;
@@ -1444,6 +1458,7 @@
 
 	if (CheckSavegameVersion(61)) {
 		/* Added the RoadType */
+		bool old_bridge = CheckSavegameVersion(42);
 		for (TileIndex t = 0; t < map_size; t++) {
 			switch(GetTileType(t)) {
 				case MP_STREET:
@@ -1468,7 +1483,9 @@
 					break;
 
 				case MP_TUNNELBRIDGE:
-					if ((IsTunnel(t) ? GetTunnelTransportType(t) : GetBridgeTransportType(t)) == TRANSPORT_ROAD) {
+					/* Middle part of "old" bridges */
+					if (old_bridge && IsBridgeTile(t) && HASBIT(_m[t].m5, 6)) break;
+					if ((IsTunnel(t) ? GetTunnelTransportType(t) : (old_bridge ? (TransportType)GB(_m[t].m5, 1, 2) : GetBridgeTransportType(t))) == TRANSPORT_ROAD) {
 						SetRoadTypes(t, ROADTYPES_ROAD);
 					}
 					break;
@@ -1659,10 +1676,10 @@
 				case MP_RAILWAY:
 					if (HasSignals(t)) {
 						/* convert PBS signals to combo-signals */
-						if (HASBIT(_m[t].m2, 2)) SetSignalType(t, SIGTYPE_COMBO);
+						if (HASBIT(_m[t].m2, 2)) SetSignalType(t, TRACK_X, SIGTYPE_COMBO);
 
 						/* move the signal variant back */
-						SetSignalVariant(t, HASBIT(_m[t].m2, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC);
+						SetSignalVariant(t, TRACK_X, HASBIT(_m[t].m2, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC);
 						CLRBIT(_m[t].m2, 3);
 					}
 
@@ -1716,7 +1733,10 @@
 
 	if (CheckSavegameVersion(34)) FOR_ALL_PLAYERS(p) ResetPlayerLivery(p);
 
-	FOR_ALL_PLAYERS(p) p->avail_railtypes = GetPlayerRailtypes(p->index);
+	FOR_ALL_PLAYERS(p) {
+		p->avail_railtypes = GetPlayerRailtypes(p->index);
+		p->avail_roadtypes = GetPlayerRoadtypes(p->index);
+	}
 
 	if (!CheckSavegameVersion(27)) AfterLoadStations();
 
@@ -1773,7 +1793,7 @@
 		FOR_ALL_INDUSTRIES(i) {
 			uint j;
 
-			if (i->type == IT_FARM || i->type == IT_FARM_2) {
+			if (GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_PLANT_ON_BUILT) {
 				for (j = 0; j != 50; j++) PlantRandomFarmField(i);
 			}
 		}
@@ -1993,6 +2013,18 @@
 		_opt.diff.number_towns++;
 	}
 
+	if (CheckSavegameVersion(64)) {
+		/* copy the signal type/variant and move signal states bits */
+		for (TileIndex t = 0; t < map_size; t++) {
+			if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
+				SetSignalStates(t, GB(_m[t].m2, 4, 4));
+				SetSignalVariant(t, INVALID_TRACK, GetSignalVariant(t, TRACK_X));
+				SetSignalType(t, INVALID_TRACK, GetSignalType(t, TRACK_X));
+				CLRBIT(_m[t].m2, 7);
+			}
+		}
+	}
+
 	/* Recalculate */
 	Group *g;
 	FOR_ALL_GROUPS(g) {
@@ -2006,7 +2038,7 @@
 		}
 	}
 
-	if (CheckSavegameVersion(62)) {
+	if (CheckSavegameVersion(65)) {
 		Town *t;
 		FOR_ALL_TOWNS(t) t->SetActivity(1);
 	}
--- a/src/openttd.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/openttd.h	Wed Jun 13 12:05:56 2007 +0000
@@ -311,7 +311,8 @@
 typedef int32 ClearTileProc(TileIndex tile, byte flags);
 typedef void GetAcceptedCargoProc(TileIndex tile, AcceptedCargo res);
 typedef void GetTileDescProc(TileIndex tile, TileDesc *td);
-/* GetTileTrackStatusProcs return a value that contains the possible tracks
+/**
+ * GetTileTrackStatusProcs return a value that contains the possible tracks
  * that can be taken on a given tile by a given transport. The return value is
  * composed as follows: 0xaabbccdd. ccdd and aabb are bitmasks of trackdirs,
  * where bit n corresponds to trackdir n. ccdd are the trackdirs that are
@@ -329,8 +330,12 @@
  * are a track, the fourth bit is the direction. these give 12 (or 14)
  * possible options: 0-5 and 8-13, so we need 14 bits for a trackdir bitmask
  * above.
+ * @param tile     the tile to get the track status from
+ * @param mode     the mode of transportation
+ * @param sub_mode used to differentiate between different kinds within the mode
+ * @return the above mentions track status information
  */
-typedef uint32 GetTileTrackStatusProc(TileIndex tile, TransportType mode);
+typedef uint32 GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode);
 typedef void GetProducedCargoProc(TileIndex tile, CargoID *b);
 typedef void ClickTileProc(TileIndex tile);
 typedef void AnimateTileProc(TileIndex tile);
--- a/src/order_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/order_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -557,29 +557,27 @@
 	return 0;
 }
 
-/** Goto next order of order-list.
+/** Goto order of order-list.
  * @param tile unused
  * @param flags operation to perform
  * @param p1 The ID of the vehicle which order is skipped
- * @param p2 unused
+ * @param p2 the selected order to which we want to skip
  */
-int32 CmdSkipOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+int32 CmdSkipToOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	Vehicle *v;
 	VehicleID veh_id = p1;
+	VehicleOrderID sel_ord = p2;
 
 	if (!IsValidVehicleID(veh_id)) return CMD_ERROR;
 
 	v = GetVehicle(veh_id);
 
-	if (!CheckOwnership(v->owner)) return CMD_ERROR;
+	if (!CheckOwnership(v->owner) || sel_ord == v->cur_order_index ||
+			sel_ord >= v->num_orders || v->num_orders < 2) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		/* Goto next order */
-		VehicleOrderID b = v->cur_order_index + 1;
-		if (b >= v->num_orders) b = 0;
-
-		v->cur_order_index = b;
+		v->cur_order_index = sel_ord;
 
 		if (v->type == VEH_ROAD) ClearSlot(v);
 
@@ -600,6 +598,91 @@
 	return 0;
 }
 
+/**
+ * Move an order inside the orderlist
+ * @param tile unused
+ * @param p1 the ID of the vehicle
+ * @param p2 order to move and target
+ *           bit 0-15  : the order to move
+ *           bit 16-31 : the target order
+ * @note The target order will move one place down in the orderlist
+ *  if you move the order upwards else it'll move it one place down
+ */
+int32 CmdMoveOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+{
+	VehicleID veh = p1;
+	VehicleOrderID moving_order = GB(p2,  0, 16);
+	VehicleOrderID target_order = GB(p2, 16, 16);
+
+	if (!IsValidVehicleID(veh)) return CMD_ERROR;
+
+	Vehicle *v = GetVehicle(veh);
+	if (!CheckOwnership(v->owner)) return CMD_ERROR;
+
+	/* Don't make senseless movements */
+	if (moving_order >= v->num_orders || target_order >= v->num_orders ||
+			moving_order == target_order || v->num_orders <= 1)
+		return CMD_ERROR;
+
+	Order *moving_one = GetVehicleOrder(v, moving_order);
+	/* Don't move an empty order */
+	if (moving_one == NULL) return CMD_ERROR;
+
+	if (flags & DC_EXEC) {
+		/* Take the moving order out of the pointer-chain */
+		Order *one_before = GetVehicleOrder(v, moving_order - 1);
+		Order *one_past = GetVehicleOrder(v, moving_order + 1);
+
+		if (one_before == NULL) {
+			/* First order edit */
+			v->orders = moving_one->next;
+		} else {
+			one_before->next = moving_one->next;
+		}
+
+		/* Insert the moving_order again in the pointer-chain */
+		one_before = GetVehicleOrder(v, target_order - 1);
+		one_past = GetVehicleOrder(v, target_order);
+
+		moving_one->next = one_past;
+
+		if (one_before == NULL) {
+			/* first order edit */
+			SwapOrders(v->orders, moving_one);
+			v->orders->next = moving_one;
+		} else {
+			one_before->next = moving_one;
+		}
+
+		/* Update shared list */
+		Vehicle *u = GetFirstVehicleFromSharedList(v);
+
+		DeleteOrderWarnings(u);
+
+		for (; u != NULL; u = u->next_shared) {
+			/* Update the first order */
+			if (u->orders != v->orders) u->orders = v->orders;
+
+			/* Update the current order */
+			if (u->cur_order_index == moving_order) {
+				u->cur_order_index = target_order;
+			} else if(u->cur_order_index > moving_order && u->cur_order_index <= target_order) {
+				u->cur_order_index--;
+			} else if(u->cur_order_index < moving_order && u->cur_order_index >= target_order) {
+				u->cur_order_index++;
+			}
+
+			assert(v->orders == u->orders);
+			/* Update any possible open window of the vehicle */
+			InvalidateVehicleOrder(u);
+		}
+
+		/* Make sure to rebuild the whole list */
+		RebuildVehicleLists();
+	}
+
+	return 0;
+}
 
 /** Modify an order in the orderlist of a vehicle.
  * @param tile unused
--- a/src/order_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/order_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -44,6 +44,13 @@
 	ORDER_WIDGET_RESIZE,
 };
 
+/**
+ * Return the memorised selected order.
+ *
+ * @param w current window
+ * @return the memorised order if it is a vaild one
+ *  else return the number of orders
+ */
 static int OrderGetSel(const Window *w)
 {
 	const Vehicle *v = GetVehicle(w->window_number);
@@ -52,6 +59,33 @@
 	return (num >= 0 && num < v->num_orders) ? num : v->num_orders;
 }
 
+/**
+ * Calculate the selected order.
+ * The calculation is based on the relative (to the window) y click position and
+ *  the position of the scrollbar.
+ *
+ * @param w current window
+ * @param y Y-value of the click relative to the window origin
+ * @param v current vehicle
+ * @return the new selected order if the order is valid else return that
+ *  an invalid one has been selected.
+ */
+static int GetOrderFromOrderWndPt(Window *w, int y, const Vehicle *v)
+{
+	/*
+	 * Calculation description:
+	 * 15 = 14 (w->widget[ORDER_WIDGET_ORDER_LIST].top) + 1 (frame-line)
+	 * 10 = order text hight
+	 */
+	int sel = (y - 15) / 10;
+
+	if ((uint)sel >= w->vscroll.cap) return INVALID_ORDER;
+
+	sel += w->vscroll.pos;
+
+	return (sel <= v->num_orders && sel >= 0) ? sel : INVALID_ORDER;
+}
+
 static StringID StationOrderStrings[] = {
 	STR_8806_GO_TO,
 	STR_8807_GO_TO_TRANSFER,
@@ -93,7 +127,7 @@
 
 	if (v->owner == _local_player) {
 		/* skip */
-		SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders == 0);
+		SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders <= 1);
 
 		/* delete */
 		SetWindowWidgetDisabledState(w, ORDER_WIDGET_DELETE,
@@ -320,9 +354,9 @@
 {
 	if (u->type != v->type) return false;
 
-	if (u->type == VEH_TRAIN && !IsFrontEngine(u)) {
+	if (u->HasFront() && !u->IsPrimaryVehicle()) {
 		u = GetFirstVehicleInChain(u);
-		if (!IsFrontEngine(u)) return false;
+		if (!u->IsPrimaryVehicle()) return false;
 	}
 
 	// v is vehicle getting orders. Only copy/clone orders if vehicle doesn't have any orders yet
@@ -356,6 +390,12 @@
 	}
 }
 
+/**
+ * Handle the click on the goto button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 static void OrderClick_Goto(Window *w, const Vehicle *v)
 {
 	InvalidateWidget(w, ORDER_WIDGET_GOTO);
@@ -368,36 +408,86 @@
 	}
 }
 
+/**
+ * Handle the click on the full load button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 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));
 }
 
+/**
+ * Handle the click on the unload button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 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));
 }
 
+/**
+ * Handle the click on the nonstop button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 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));
 }
 
+/**
+ * Handle the click on the transfer button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 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));
 }
 
+/**
+ * Handle the click on the skip button.
+ * If ctrl is pressed skip to selected order.
+ *  Else skip to current order + 1
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 static void OrderClick_Skip(Window *w, const Vehicle *v)
 {
-	DoCommandP(v->tile, v->index, 0, NULL, CMD_SKIP_ORDER);
+	/* Don't skip when there's nothing to skip */
+	if (_ctrl_pressed && v->cur_order_index == OrderGetSel(w)) return;
+
+	DoCommandP(v->tile, v->index, _ctrl_pressed ? OrderGetSel(w) : ((v->cur_order_index + 1) % v->num_orders),
+			NULL, CMD_SKIP_TO_ORDER | CMD_MSG(_ctrl_pressed ? STR_CAN_T_SKIP_TO_ORDER : STR_CAN_T_SKIP_ORDER));
 }
 
+/**
+ * Handle the click on the unload button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 static void OrderClick_Delete(Window *w, const Vehicle *v)
 {
 	DoCommandP(v->tile, v->index, OrderGetSel(w), NULL, CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER));
 }
 
+/**
+ * Handle the click on the refit button.
+ * If ctrl is pressed cancel refitting.
+ *  Else show the refit window.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
 static void OrderClick_Refit(Window *w, const Vehicle *v)
 {
 	if (_ctrl_pressed) {
@@ -410,6 +500,12 @@
 
 typedef void OnButtonVehClick(Window *w, const Vehicle *v);
 
+/**
+ * Keycode function mapping.
+ *
+ * @see _order_keycodes[]
+ * @note Keep them allways in sync with _order_keycodes[]!
+ */
 static OnButtonVehClick* const _order_button_proc[] = {
 	OrderClick_Skip,
 	OrderClick_Delete,
@@ -451,14 +547,14 @@
 		break;
 
 	case WE_CLICK: {
-		Vehicle *v = GetVehicle(w->window_number);
+		const Vehicle *v = GetVehicle(w->window_number);
 		switch (e->we.click.widget) {
 		case ORDER_WIDGET_ORDER_LIST: {
-			int sel = (e->we.click.pt.y - 15) / 10;
+			ResetObjectToPlace();
 
-			if ((uint)sel >= w->vscroll.cap) return;
+			int sel = GetOrderFromOrderWndPt(w, e->we.click.pt.y, v);
 
-			sel += w->vscroll.pos;
+			if (sel == INVALID_ORDER) return;
 
 			if (_ctrl_pressed && sel < v->num_orders) {
 				const Order *ord = GetVehicleOrder(v, sel);
@@ -473,10 +569,21 @@
 
 				if (xy != 0) ScrollMainWindowToTile(xy);
 				return;
+			} else {
+				if (sel == WP(w,order_d).sel) {
+					/* Deselect clicked order */
+					WP(w,order_d).sel = -1;
+				} else {
+					/* Select clicked order */
+					WP(w,order_d).sel = sel;
+
+					if (v->owner == _local_player) {
+						/* Activate drag and drop */
+						SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, 4, w);
+					}
+				}
 			}
 
-			if (sel == WP(w,order_d).sel) sel = -1;
-			WP(w,order_d).sel = sel;
 			SetWindowDirty(w);
 		} break;
 
@@ -516,6 +623,31 @@
 		}
 	} break;
 
+	case WE_DRAGDROP: {
+		const Vehicle *v = GetVehicle(w->window_number);
+
+		switch (e->we.click.widget) {
+			case ORDER_WIDGET_ORDER_LIST: {
+				int from_order = OrderGetSel(w);
+				int to_order = GetOrderFromOrderWndPt(w, e->we.dragdrop.pt.y, v);
+
+				if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > v->num_orders || to_order == INVALID_ORDER || to_order > v->num_orders) &&
+						DoCommandP(v->tile, v->index, from_order | (to_order << 16), NULL, CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) {
+					WP(w, order_d).sel = -1;
+				}
+
+				break;
+			}
+
+			case ORDER_WIDGET_DELETE:
+				OrderClick_Delete(w, v);
+				break;
+		}
+
+		ResetObjectToPlace();
+		break;
+	}
+
 	case WE_KEYPRESS: {
 		Vehicle *v = GetVehicle(w->window_number);
 		uint i;
@@ -589,23 +721,32 @@
 	}
 }
 
+/**
+ * Widget definition for player train orders
+ */
 static const Widget _orders_train_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   398,     0,    13, STR_8829_ORDERS,         STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_RB,      14,     0,   386,    14,    75, 0x0,                     STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   387,   398,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    52,    76,    87, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,    53,   105,    76,    87, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   106,   158,    76,    87, STR_8825_NON_STOP,       STR_8855_MAKE_THE_HIGHLIGHTED_ORDER},
-{    WWT_TEXTBTN,   RESIZE_TB,      14,   159,   211,    76,    87, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   212,   264,    76,    87, STR_FULLLOAD_OR_SERVICE, STR_NULL},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   265,   319,    76,    87, STR_8828_UNLOAD,         STR_8858_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   265,   319,    76,    87, STR_REFIT,               STR_REFIT_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   372,    76,    87, STR_886F_TRANSFER,       STR_886D_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHIMGBTN,   RESIZE_TB,      14,   373,   386,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP},
-{      WWT_PANEL,   RESIZE_RTB,     14,   387,   386,    76,    87, 0x0,                     STR_NULL},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   387,   398,    76,    87, 0x0,                     STR_RESIZE_BUTTON},
-{   WIDGETS_END},
+	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},               // ORDER_WIDGET_CLOSEBOX
+	{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   398,     0,    13, STR_8829_ORDERS,         STR_018C_WINDOW_TITLE_DRAG_THIS},     // ORDER_WIDGET_CAPTION
+
+	{      WWT_PANEL,   RESIZE_RB,      14,     0,   386,    14,    75, 0x0,                     STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   387,   398,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
+
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    52,    76,    87, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,    53,   105,    76,    87, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   106,   158,    76,    87, STR_8825_NON_STOP,       STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_NON_STOP
+	{    WWT_TEXTBTN,   RESIZE_TB,      14,   159,   211,    76,    87, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
+	{ 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_PUSHIMGBTN,   RESIZE_TB,      14,   373,   386,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
+
+	{      WWT_PANEL,   RESIZE_RTB,     14,   387,   386,    76,    87, 0x0,                     STR_NULL},                            // ORDER_WIDGET_RESIZE_BAR
+
+	{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   387,   398,    76,    87, 0x0,                     STR_RESIZE_BUTTON},                   // ORDER_WIDGET_RESIZE
+	{   WIDGETS_END},
 };
 
 static const WindowDesc _orders_train_desc = {
@@ -616,23 +757,32 @@
 	OrdersWndProc
 };
 
+/**
+ * Widget definition for player orders (!train)
+ */
 static const Widget _orders_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   409,     0,    13, STR_8829_ORDERS,         STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_RB,      14,     0,   397,    14,    75, 0x0,                     STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   398,   409,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    63,    76,    87, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,    64,   128,    76,    87, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},
-{      WWT_EMPTY,   RESIZE_TB,      14,     0,     0,    76,    87, 0x0,                     0x0},
-{    WWT_TEXTBTN,   RESIZE_TB,      14,   129,   192,    76,    87, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   193,   256,    76,    87, STR_FULLLOAD_OR_SERVICE, STR_NULL},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   257,   319,    76,    87, STR_8828_UNLOAD,         STR_8858_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   257,   319,    76,    87, STR_REFIT,               STR_REFIT_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   320,   383,    76,    87, STR_886F_TRANSFER,       STR_886D_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHIMGBTN,   RESIZE_TB,      14,   384,   397,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP},
-{      WWT_PANEL,   RESIZE_RTB,     14,   397,   396,    76,    87, 0x0,                     STR_NULL},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   398,   409,    76,    87, 0x0,                     STR_RESIZE_BUTTON},
-{   WIDGETS_END},
+	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},               // ORDER_WIDGET_CLOSEBOX
+	{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   409,     0,    13, STR_8829_ORDERS,         STR_018C_WINDOW_TITLE_DRAG_THIS},     // ORDER_WIDGET_CAPTION
+
+	{      WWT_PANEL,   RESIZE_RB,      14,     0,   397,    14,    75, 0x0,                     STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   398,   409,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
+
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    63,    76,    87, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
+	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,    64,   128,    76,    87, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
+	{      WWT_EMPTY,   RESIZE_TB,      14,     0,     0,    76,    87, 0x0,                     0x0},                                 // ORDER_WIDGET_NON_STOP
+	{    WWT_TEXTBTN,   RESIZE_TB,      14,   129,   192,    76,    87, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
+	{ 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_PUSHIMGBTN,   RESIZE_TB,      14,   384,   397,    76,    87, SPR_SHARED_ORDERS_ICON,  STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
+
+	{      WWT_PANEL,   RESIZE_RTB,     14,   397,   396,    76,    87, 0x0,                     STR_NULL},                            // ORDER_WIDGET_RESIZE_BAR
+
+	{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   398,   409,    76,    87, 0x0,                     STR_RESIZE_BUTTON},                   // ORDER_WIDGET_RESIZE
+	{   WIDGETS_END},
 };
 
 static const WindowDesc _orders_desc = {
@@ -643,20 +793,32 @@
 	OrdersWndProc
 };
 
+/**
+ * Widget definition for competitor orders
+ */
 static const Widget _other_orders_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,        STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   331,     0,    13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_RB,      14,     0,   319,    14,    75, 0x0,             STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   320,   331,    14,    75, 0x0,             STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{      WWT_PANEL,   RESIZE_RTB,     14,     0,   319,    76,    87, 0x0,             STR_NULL},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   320,   331,    76,    87, 0x0,             STR_RESIZE_BUTTON},
-{   WIDGETS_END},
+	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,        STR_018B_CLOSE_WINDOW},               // ORDER_WIDGET_CLOSEBOX
+	{    WWT_CAPTION,   RESIZE_RIGHT,   14,    11,   331,     0,    13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS},     // ORDER_WIDGET_CAPTION
+
+	{      WWT_PANEL,   RESIZE_RB,      14,     0,   319,    14,    75, 0x0,             STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   320,   331,    14,    75, 0x0,             STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
+
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_SKIP
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_DELETE
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_NON_STOP
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_GOTO
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_FULL_LOAD
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_UNLOAD
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_REFIT
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_TRANSFER
+
+	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_SHARED_ORDER_LIST
+
+	{      WWT_PANEL,   RESIZE_RTB,     14,     0,   319,    76,    87, 0x0,             STR_NULL},                            // ORDER_WIDGET_RESIZE_BAR
+
+	{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   320,   331,    76,    87, 0x0,             STR_RESIZE_BUTTON},                   // ORDER_WIDGET_RESIZE
+	{   WIDGETS_END},
 };
 
 static const WindowDesc _other_orders_desc = {
--- a/src/pathfind.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/pathfind.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -153,7 +153,7 @@
 	if (++tpf->rd.cur_length > 50)
 		return;
 
-	bits = GetTileTrackStatus(tile, tpf->tracktype);
+	bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
 	bits = (byte)((bits | (bits >> 8)) & _bits_mask[direction]);
 	if (bits == 0)
 		return;
@@ -322,7 +322,7 @@
 
 	tpf->rd.cur_length++;
 
-	bits = GetTileTrackStatus(tile, tpf->tracktype);
+	bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
 
 	if ((byte)bits != tpf->var2) {
 		bits &= _tpfmode1_and[direction];
@@ -363,7 +363,7 @@
 	direction = ReverseDiagDir(direction);
 	tile += TileOffsByDiagDir(direction);
 
-	bits = GetTileTrackStatus(tile, tpf->tracktype);
+	bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
 	bits |= (bits >> 8);
 
 	if ( (byte)bits != tpf->var2) {
@@ -388,7 +388,7 @@
 	} while (bits != 0);
 }
 
-void FollowTrack(TileIndex tile, uint16 flags, DiagDirection direction, TPFEnumProc *enum_proc, TPFAfterProc *after_proc, void *data)
+void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection direction, TPFEnumProc *enum_proc, TPFAfterProc *after_proc, void *data)
 {
 	TrackPathFinder tpf;
 
@@ -411,6 +411,7 @@
 
 
 	tpf.tracktype = (TransportType)(flags & 0xFF);
+	tpf.sub_type = sub_type;
 
 	if (HASBIT(flags, 11)) {
 		tpf.rd.pft_var6 = 0xFF;
@@ -783,7 +784,7 @@
 			if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) {
 				/* We found a tile which is not a normal railway tile.
 				 * Determine which tracks that exist on this tile. */
-				uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL) & _tpfmode1_and[direction];
+				uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _tpfmode1_and[direction];
 				bits = TrackdirBitsToTrackBits((TrackdirBits)(ts & TRACKDIR_BIT_MASK));
 
 				/* Check that the tile contains exactly one track */
--- a/src/pathfind.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/pathfind.h	Wed Jun 13 12:05:56 2007 +0000
@@ -57,6 +57,8 @@
 	TrackdirByte the_dir;
 
 	TransportTypeByte tracktype;
+	uint sub_type;
+
 	byte var2;
 	bool disable_tile_hash;
 	bool hasbit_13;
@@ -67,7 +69,7 @@
 	TrackPathFinderLink links[0x400]; ///< hopefully, this is enough.
 };
 
-void FollowTrack(TileIndex tile, uint16 flags, DiagDirection direction, TPFEnumProc* enum_proc, TPFAfterProc* after_proc, void* data);
+void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection direction, TPFEnumProc* enum_proc, TPFAfterProc* after_proc, void* data);
 
 struct FindLengthOfTunnelResult {
 	TileIndex tile;
--- a/src/player.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/player.h	Wed Jun 13 12:05:56 2007 +0000
@@ -168,6 +168,7 @@
 	Livery livery[LS_END];
 	byte player_money_fraction;
 	byte avail_railtypes;
+	byte avail_roadtypes;
 	byte block_preview;
 	PlayerByte index;
 
@@ -248,6 +249,7 @@
 }
 
 byte GetPlayerRailtypes(PlayerID p);
+byte GetPlayerRoadtypes(PlayerID p);
 
 /** Finds out if a Player has a certain railtype available */
 static inline bool HasRailtypeAvail(const Player *p, RailType Railtype)
--- a/src/player_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/player_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -17,6 +17,7 @@
 #include "economy.h"
 #include "network/network.h"
 #include "variables.h"
+#include "roadveh.h"
 #include "train.h"
 #include "aircraft.h"
 #include "date.h"
@@ -277,13 +278,14 @@
 	LC_ROAD, LC_ROAD,
 	LC_SHIP, LC_SHIP,
 	LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT,
+	LC_ROAD, LC_ROAD,
 };
 
 /* Number of liveries in each class, used to determine the height of the livery window */
 static const byte livery_height[] = {
 	1,
 	11,
-	2,
+	4,
 	2,
 	3,
 };
@@ -323,7 +325,7 @@
 	switch (e->event) {
 		case WE_CREATE:
 			LowerWindowWidget(w, WP(w, livery_d).livery_class + 2);
-			if (!_have_2cc) {
+			if (!HASBIT(_loaded_newgrf_features, GRFLOADED_2CC)) {
 				HideWindowWidget(w, 11);
 				HideWindowWidget(w, 12);
 			}
@@ -365,7 +367,7 @@
 					DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour1), 152, y);
 					DrawString(165, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour1, sel ? 0xC : 2);
 
-					if (_have_2cc) {
+					if (HASBIT(_loaded_newgrf_features, GRFLOADED_2CC)) {
 						DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour2), 277, y);
 						DrawString(290, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour2, sel ? 0xC : 2);
 					}
@@ -648,7 +650,7 @@
 		if (v->owner == player) {
 			switch (v->type) {
 				case VEH_TRAIN:    if (IsFrontEngine(v)) train++; break;
-				case VEH_ROAD:     road++; break;
+				case VEH_ROAD:     if (IsRoadVehFront(v)) road++; break;
 				case VEH_AIRCRAFT: if (IsNormalAircraft(v)) air++; break;
 				case VEH_SHIP:     ship++; break;
 				default: break;
@@ -793,7 +795,7 @@
 				}
 
 				case PCW_WIDGET_COLOR_SCHEME: {
-					Window *wf = AllocateWindowDescFront(_have_2cc ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
+					Window *wf = AllocateWindowDescFront(HASBIT(_loaded_newgrf_features, GRFLOADED_2CC) ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
 					if (wf != NULL) {
 						wf->caption_color = wf->window_number;
 						WP(wf, livery_d).livery_class = LC_OTHER;
--- a/src/players.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/players.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -193,9 +193,17 @@
 
 	p->yearly_expenses[0][_yearly_expenses_type] += cost;
 
-	if (HASBIT(1<<7|1<<8|1<<9|1<<10, _yearly_expenses_type)) {
+	if (HASBIT(1 << EXPENSES_TRAIN_INC    |
+	           1 << EXPENSES_ROADVEH_INC  |
+	           1 << EXPENSES_AIRCRAFT_INC |
+	           1 << EXPENSES_SHIP_INC, _yearly_expenses_type)) {
 		p->cur_economy.income -= cost;
-	} else if (HASBIT(1<<2|1<<3|1<<4|1<<5|1<<6|1<<11, _yearly_expenses_type)) {
+	} 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, _yearly_expenses_type)) {
 		p->cur_economy.expenses -= cost;
 	}
 
@@ -472,6 +480,7 @@
 	p->share_owners[0] = p->share_owners[1] = p->share_owners[2] = p->share_owners[3] = PLAYER_SPECTATOR;
 
 	p->avail_railtypes = GetPlayerRailtypes(p->index);
+	p->avail_roadtypes = GetPlayerRoadtypes(p->index);
 	p->inaugurated_year = _cur_year;
 	p->face = ConvertFromOldPlayerFace(Random());
 
@@ -609,6 +618,24 @@
 	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;
@@ -1260,9 +1287,16 @@
 	}
 
 	/* Write each livery entry. */
-	for (i = 0; i < LS_END; i++) {
+	int num_liveries = CheckSavegameVersion(63) ? 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) {
+		/* 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];
+	}
 }
 
 static void Save_PLYR()
--- a/src/rail.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/rail.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -13,21 +13,21 @@
 /* Maps a trackdir to the bit that stores its status in the map arrays, in the
  * direction along with the trackdir */
 extern const byte _signal_along_trackdir[] = {
-	0x80, 0x80, 0x80, 0x20, 0x40, 0x10, 0, 0,
-	0x40, 0x40, 0x40, 0x10, 0x80, 0x20
+	0x8, 0x8, 0x8, 0x2, 0x4, 0x1, 0, 0,
+	0x4, 0x4, 0x4, 0x1, 0x8, 0x2
 };
 
 /* Maps a trackdir to the bit that stores its status in the map arrays, in the
  * direction against the trackdir */
 extern const byte _signal_against_trackdir[] = {
-	0x40, 0x40, 0x40, 0x10, 0x80, 0x20, 0, 0,
-	0x80, 0x80, 0x80, 0x20, 0x40, 0x10
+	0x4, 0x4, 0x4, 0x1, 0x8, 0x2, 0, 0,
+	0x8, 0x8, 0x8, 0x2, 0x4, 0x1
 };
 
 /* Maps a Track to the bits that store the status of the two signals that can
  * be present on the given track */
 extern const byte _signal_on_track[] = {
-	0xC0, 0xC0, 0xC0, 0x30, 0xC0, 0x30
+	0xC, 0xC, 0xC, 0x3, 0xC, 0x3
 };
 
 /* Maps a diagonal direction to the all trackdirs that are connected to any
--- a/src/rail_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/rail_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -206,20 +206,17 @@
 		}
 
 		/* no special foundation */
-		if ((~_valid_tileh_slopes[0][tileh] & rail_bits) == 0)
+		if ((~_valid_tileh_slopes[0][tileh] & rail_bits) == 0) {
 			return 0;
+		} else if (!_patches.build_on_slopes || _is_old_ai_player) {
+			return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
+		}
 
 		if ((~_valid_tileh_slopes[1][tileh] & rail_bits) == 0 || ( // whole tile is leveled up
 					(rail_bits == TRACK_BIT_X || rail_bits == TRACK_BIT_Y) &&
 					(tileh == SLOPE_W || tileh == SLOPE_S || tileh == SLOPE_E || tileh == SLOPE_N)
 				)) { // partly up
-			if (existing != 0) {
-				return 0;
-			} else if (!_patches.build_on_slopes || _is_old_ai_player) {
-				return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
-			} else {
-				return _eco->GetPrice(CEconomy::TERRAFORM);
-			}
+			return (existing != 0) ? 0 : _eco->GetPrice(CEconomy::TERRAFORM);
 		}
 	}
 	return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
@@ -301,6 +298,12 @@
 				RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM);
 				switch (roadtypes) {
 					default: break;
+					case ROADTYPES_TRAM:
+						/* Tram crossings must always have road. */
+						SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
+						roadtypes |= ROADTYPES_ROAD;
+						break;
+
 					case ROADTYPES_ROADTRAM: if (road == tram) break;
 						/* FALL THROUGH */
 					case ROADTYPES_ROADHWAY: // Road and highway are incompatible in this case
@@ -692,7 +695,7 @@
 		/* build new signals */
 		cost = _eco->GetPrice(CEconomy::BUILD_SIGNALS);
 	} else {
-		if (p2 != 0 && sigvar != GetSignalVariant(tile)) {
+		if (p2 != 0 && sigvar != GetSignalVariant(tile, track)) {
 			/* convert signals <-> semaphores */
 			cost = _eco->GetPrice(CEconomy::BUILD_SIGNALS) + _eco->GetPrice(CEconomy::REMOVE_SIGNALS);
 		} else {
@@ -705,22 +708,24 @@
 		if (!HasSignals(tile)) {
 			/* there are no signals at all on this tile yet */
 			SetHasSignals(tile, true);
-			_m[tile].m2 |= 0xF0;              // all signals are on
-			_m[tile].m3 &= ~0xF0;             // no signals built by default
-			SetSignalType(tile, SIGTYPE_NORMAL);
-			SetSignalVariant(tile, sigvar);
+			SetSignalStates(tile, 0xF); // all signals are on
+			SetPresentSignals(tile, 0); // no signals built by default
+			SetSignalType(tile, track, SIGTYPE_NORMAL);
+			SetSignalVariant(tile, track, sigvar);
 		}
 
 		if (p2 == 0) {
 			if (!HasSignalOnTrack(tile, track)) {
 				/* build new signals */
-				_m[tile].m3 |= SignalOnTrack(track);
+				SetPresentSignals(tile, GetPresentSignals(tile) | SignalOnTrack(track));
+				SetSignalType(tile, track, SIGTYPE_NORMAL);
+				SetSignalVariant(tile, track, sigvar);
 			} else {
 				if (pre_signal) {
 					/* cycle between normal -> pre -> exit -> combo -> ... */
-					SignalType type = GetSignalType(tile);
+					SignalType type = GetSignalType(tile, track);
 
-					SetSignalType(tile, type == SIGTYPE_COMBO ? SIGTYPE_NORMAL : (SignalType)(type + 1));
+					SetSignalType(tile, track, type == SIGTYPE_COMBO ? SIGTYPE_NORMAL : (SignalType)(type + 1));
 				} else {
 					CycleSignalSide(tile, track);
 				}
@@ -728,9 +733,8 @@
 		} else {
 			/* If CmdBuildManySignals is called with copying signals, just copy the
 			 * direction of the first signal given as parameter by CmdBuildManySignals */
-			_m[tile].m3 &= ~SignalOnTrack(track);
-			_m[tile].m3 |= p2 & SignalOnTrack(track);
-			SetSignalVariant(tile, sigvar);
+			SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | (p2 & SignalOnTrack(track)));
+			SetSignalVariant(tile, track, sigvar);
 		}
 
 		MarkTileDirtyByTile(tile);
@@ -784,11 +788,11 @@
 
 	/* copy the signal-style of the first rail-piece if existing */
 	if (HasSignals(tile)) {
-		signals = _m[tile].m3 & SignalOnTrack(track);
+		signals = GetPresentSignals(tile) & SignalOnTrack(track);
 		if (signals == 0) signals = SignalOnTrack(track); /* Can this actually occur? */
 
 		/* copy signal/semaphores style (independent of CTRL) */
-		semaphores = GetSignalVariant(tile) != SIG_ELECTRIC;
+		semaphores = GetSignalVariant(tile, track) != SIG_ELECTRIC;
 	} else { // no signals exist, drag a two-way signal stretch
 		signals = SignalOnTrack(track);
 	}
@@ -874,13 +878,13 @@
 
 	/* Do it? */
 	if (flags & DC_EXEC) {
-		_m[tile].m3 &= ~SignalOnTrack(track);
+		SetPresentSignals(tile, GetPresentSignals(tile) & ~SignalOnTrack(track));
 
 		/* removed last signal from tile? */
-		if (GB(_m[tile].m3, 4, 4) == 0) {
-			SB(_m[tile].m2, 4, 4, 0);
+		if (GetPresentSignals(tile) == 0) {
+			SetSignalStates(tile, 0);
 			SetHasSignals(tile, false);
-			SetSignalVariant(tile, SIG_ELECTRIC); // remove any possible semaphores
+			SetSignalVariant(tile, INVALID_TRACK, SIG_ELECTRIC); // remove any possible semaphores
 		}
 
 		SetSignalsOnBothDir(tile, track);
@@ -1091,7 +1095,7 @@
 
 #include "table/track_land.h"
 
-static void DrawSingleSignal(TileIndex tile, byte condition, uint image, uint pos)
+static void DrawSingleSignal(TileIndex tile, Track track, byte condition, uint image, uint pos)
 {
 	bool side = (_opt.road_side != 0) && _patches.signal_side;
 	static const Point SignalPositions[2][12] = {
@@ -1128,10 +1132,10 @@
 	/* _signal_base is set by our NewGRF Action 5 loader. If it is 0 then we
 	 * just draw the standard signals, else we get the offset from _signal_base
 	 * and draw that sprite. All the signal sprites are loaded sequentially. */
-	if (_signal_base == 0 || (GetSignalType(tile) == 0 && GetSignalVariant(tile) == SIG_ELECTRIC)) {
-		sprite = SignalBase[side][GetSignalVariant(tile)][GetSignalType(tile)] + image + condition;
+	if (_signal_base == 0 || (GetSignalType(tile, track) == SIGTYPE_NORMAL && GetSignalVariant(tile, track) == SIG_ELECTRIC)) {
+		sprite = SignalBase[side][GetSignalVariant(tile, track)][GetSignalType(tile, track)] + image + condition;
 	} else {
-		sprite = _signal_base + (GetSignalType(tile) - 1) * 16 + GetSignalVariant(tile) * 64 + image + condition;
+		sprite = _signal_base + (GetSignalType(tile, track) - 1) * 16 + GetSignalVariant(tile, track) * 64 + image + condition;
 	}
 
 	AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, 10, GetSlopeZ(x,y));
@@ -1301,33 +1305,33 @@
 
 static void DrawSignals(TileIndex tile, TrackBits rails)
 {
-#define MAYBE_DRAW_SIGNAL(x,y,z) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, GetSingleSignalState(tile, x), y - 0x4FB, z)
+#define MAYBE_DRAW_SIGNAL(x,y,z,t) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, t, GetSingleSignalState(tile, x), y - 0x4FB, z)
 
 	if (!(rails & TRACK_BIT_Y)) {
 		if (!(rails & TRACK_BIT_X)) {
 			if (rails & TRACK_BIT_LEFT) {
-				MAYBE_DRAW_SIGNAL(2, 0x509, 0);
-				MAYBE_DRAW_SIGNAL(3, 0x507, 1);
+				MAYBE_DRAW_SIGNAL(2, 0x509, 0, TRACK_LEFT);
+				MAYBE_DRAW_SIGNAL(3, 0x507, 1, TRACK_LEFT);
 			}
 			if (rails & TRACK_BIT_RIGHT) {
-				MAYBE_DRAW_SIGNAL(0, 0x509, 2);
-				MAYBE_DRAW_SIGNAL(1, 0x507, 3);
+				MAYBE_DRAW_SIGNAL(0, 0x509, 2, TRACK_RIGHT);
+				MAYBE_DRAW_SIGNAL(1, 0x507, 3, TRACK_RIGHT);
 			}
 			if (rails & TRACK_BIT_UPPER) {
-				MAYBE_DRAW_SIGNAL(3, 0x505, 4);
-				MAYBE_DRAW_SIGNAL(2, 0x503, 5);
+				MAYBE_DRAW_SIGNAL(3, 0x505, 4, TRACK_UPPER);
+				MAYBE_DRAW_SIGNAL(2, 0x503, 5, TRACK_UPPER);
 			}
 			if (rails & TRACK_BIT_LOWER) {
-				MAYBE_DRAW_SIGNAL(1, 0x505, 6);
-				MAYBE_DRAW_SIGNAL(0, 0x503, 7);
+				MAYBE_DRAW_SIGNAL(1, 0x505, 6, TRACK_LOWER);
+				MAYBE_DRAW_SIGNAL(0, 0x503, 7, TRACK_LOWER);
 			}
 		} else {
-			MAYBE_DRAW_SIGNAL(3, 0x4FB, 8);
-			MAYBE_DRAW_SIGNAL(2, 0x4FD, 9);
+			MAYBE_DRAW_SIGNAL(3, 0x4FB, 8, TRACK_X);
+			MAYBE_DRAW_SIGNAL(2, 0x4FD, 9, TRACK_X);
 		}
 	} else {
-		MAYBE_DRAW_SIGNAL(3, 0x4FF, 10);
-		MAYBE_DRAW_SIGNAL(2, 0x501, 11);
+		MAYBE_DRAW_SIGNAL(3, 0x4FF, 10, TRACK_Y);
+		MAYBE_DRAW_SIGNAL(2, 0x501, 11, TRACK_Y);
 	}
 }
 
@@ -1511,11 +1515,12 @@
 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, TrackdirToTrack(trackdir))) {
+	if (HasSignalOnTrack(tile, track)) {
 		if (HasSignalOnTrackdir(tile, ReverseTrackdir(trackdir))) {
 			/* yes, add the signal to the list of signals */
 			if (ssd->cur != NUM_SSD_ENTRY) {
@@ -1525,10 +1530,10 @@
 			}
 
 			/* remember if this block has a presignal. */
-			ssd->has_presignal |= IsPresignalEntry(tile);
+			ssd->has_presignal |= IsPresignalEntry(tile, track);
 		}
 
-		if (HasSignalOnTrackdir(tile, trackdir) && IsPresignalExit(tile)) {
+		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)
@@ -1666,14 +1671,15 @@
 	for (i = 0; i != ssd->cur; i++) {
 		TileIndex tile = ssd->tile[i];
 		byte bit = SignalAgainstTrackdir(ssd->bit[i]);
-		uint16 m2 = _m[tile].m2;
+		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)) {
+		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) && HasSignalOnTrackdir(tile, ssd->bit[i])) {
+			if (IsPresignalExit(tile, track) && HasSignalOnTrackdir(tile, ssd->bit[i])) {
 				ex--;
 				if (GetSignalStateByTrackdir(tile, ssd->bit[i]) != SIGNAL_STATE_RED) exfree--;
 			}
@@ -1686,14 +1692,14 @@
 		if (ssd->stop) {
 make_red:
 			/* turn red */
-			if ((bit & m2) == 0) continue;
+			if ((bit & signals) == 0) continue;
 		} else {
 			/* turn green */
-			if ((bit & m2) != 0) continue;
+			if ((bit & signals) != 0) continue;
 		}
 
 		/* Update signals on the other side of this exit-combo signal; it changed. */
-		if (IsPresignalExit(tile)) {
+		if (IsPresignalExit(tile, track)) {
 			if (ssd->cur_stack != NUM_SSD_STACK) {
 				ssd->next_tile[ssd->cur_stack] = tile;
 				ssd->next_dir[ssd->cur_stack] = _dir_from_track[ssd->bit[i]];
@@ -1704,7 +1710,7 @@
 		}
 
 		/* it changed, so toggle it */
-		_m[tile].m2 = m2 ^ bit;
+		SetSignalStates(tile, signals ^ bit);
 		MarkTileDirtyByTile(tile);
 	}
 }
@@ -1722,7 +1728,7 @@
 		ssd.cur = ssd.presignal_exits = ssd.presignal_exits_free = 0;
 		ssd.has_presignal = false;
 
-		FollowTrack(tile, 0xC000 | TRANSPORT_RAIL, direction, SetSignalsEnumProc, SetSignalsAfterProc, &ssd);
+		FollowTrack(tile, 0xC000 | TRANSPORT_RAIL, 0, direction, SetSignalsEnumProc, SetSignalsAfterProc, &ssd);
 		ChangeSignalStates(&ssd);
 
 		/* remember the result only for the first iteration. */
@@ -1914,7 +1920,7 @@
 }
 
 
-static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	if (mode != TRANSPORT_RAIL) return 0;
 
@@ -1928,11 +1934,8 @@
 
 		case RAIL_TILE_SIGNALS: {
 			uint32 ret = GetTrackBits(tile) * 0x101;
-			byte a;
-			uint16 b;
-
-			a = _m[tile].m3;
-			b = _m[tile].m2;
+			byte a = GetPresentSignals(tile);
+			uint b = GetSignalStates(tile);
 
 			b &= a;
 
@@ -1940,13 +1943,13 @@
 			 * direction), we pretend them to be green. (So if
 			 * signals are only one way, the other way will
 			 * implicitely become `red' */
-			if ((a & 0xC0) == 0) b |= 0xC0;
-			if ((a & 0x30) == 0) b |= 0x30;
+			if ((a & 0xC) == 0) b |= 0xC;
+			if ((a & 0x3) == 0) b |= 0x3;
 
-			if ((b & 0x80) == 0) ret |= 0x10070000;
-			if ((b & 0x40) == 0) ret |= 0x07100000;
-			if ((b & 0x20) == 0) ret |= 0x20080000;
-			if ((b & 0x10) == 0) ret |= 0x08200000;
+			if ((b & 0x8) == 0) ret |= 0x10070000;
+			if ((b & 0x4) == 0) ret |= 0x07100000;
+			if ((b & 0x2) == 0) ret |= 0x20080000;
+			if ((b & 0x1) == 0) ret |= 0x08200000;
 
 			return ret;
 		}
@@ -1974,14 +1977,34 @@
 			break;
 
 		case RAIL_TILE_SIGNALS: {
-			const StringID signal_type[] = {
-				STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS,
-				STR_RAILROAD_TRACK_WITH_PRESIGNALS,
-				STR_RAILROAD_TRACK_WITH_EXITSIGNALS,
-				STR_RAILROAD_TRACK_WITH_COMBOSIGNALS
+			const StringID signal_type[4][4] = {
+				{
+					STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS,
+					STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS,
+					STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS,
+					STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS
+				},
+				{
+					STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS,
+					STR_RAILROAD_TRACK_WITH_PRESIGNALS,
+					STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS,
+					STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS
+				},
+				{
+					STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS,
+					STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS,
+					STR_RAILROAD_TRACK_WITH_EXITSIGNALS,
+					STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS
+				},
+				{
+					STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS,
+					STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS,
+					STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS,
+					STR_RAILROAD_TRACK_WITH_COMBOSIGNALS
+				}
 			};
 
-			td->str = signal_type[GetSignalType(tile)];
+			td->str = signal_type[GetSignalType(tile, TRACK_UPPER)][GetSignalType(tile, TRACK_LOWER)];
 			break;
 		}
 
--- a/src/rail_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/rail_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -72,7 +72,7 @@
 
 static void PlaceRail_NE(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_FIX_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_RAIL_NE);
 }
 
 static void PlaceRail_E(TileIndex tile)
@@ -83,12 +83,12 @@
 
 static void PlaceRail_NW(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_FIX_X, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_RAIL_NW);
 }
 
 static void PlaceRail_AutoRail(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_RAILDIRS, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_RAILDIRS, DDSP_PLACE_AUTORAIL);
 }
 
 static void PlaceExtraDepotRail(TileIndex tile, uint16 extra)
@@ -151,13 +151,13 @@
 static void PlaceRail_Station(TileIndex tile)
 {
 	if (_remove_button_clicked) {
-		VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_RemoveFromStation);
+		VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_REMOVE_STATION);
 	} else if (_railstation.dragdrop) {
-		VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, GUI_PlaceProc_None);
+		VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_BUILD_STATION);
 		VpSetPlaceSizingLimit(_patches.station_spread);
 	} else {
 		DoCommandP(tile,
-				_railstation.orientation | (_railstation.numtracks << 8) | (_railstation.platlength << 16),
+				_railstation.orientation | (_railstation.numtracks << 8) | (_railstation.platlength << 16) | (_ctrl_pressed << 24),
 				_cur_railtype | (_railstation.station_class << 8) | (_railstation.station_type << 16), CcStation,
 				CMD_BUILD_RAILROAD_STATION | CMD_NO_WATER | CMD_AUTO | CMD_MSG(STR_100F_CAN_T_BUILD_RAILROAD_STATION));
 	}
@@ -165,39 +165,34 @@
 
 static void GenericPlaceSignals(TileIndex tile)
 {
-	byte trackstat;
-	uint i;
-
-	trackstat = (byte)GetTileTrackStatus(tile, TRANSPORT_RAIL);
+	TrackBits trackbits = (TrackBits)GB(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0), 0, 6);
 
-	if (trackstat & TRACK_BIT_VERT) // N-S direction
-		trackstat = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
-
-	if (trackstat & TRACK_BIT_HORZ) // E-W direction
-		trackstat = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER;
-
-	// Lookup the bit index
-	i = 0;
-	if (trackstat != 0) {
-		for (; !(trackstat & 1); trackstat >>= 1) i++;
+	if (trackbits & TRACK_BIT_VERT) { // N-S direction
+		trackbits = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
 	}
 
+	if (trackbits & TRACK_BIT_HORZ) { // E-W direction
+		trackbits = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER;
+	}
+
+	Track track = TrackBitsToTrack(trackbits);
+
 	if (!_remove_button_clicked) {
-		uint32 p1 = GB(i, 0, 3);
+		uint32 p1 = track;
 		SB(p1, 3, 1, _ctrl_pressed);
 		SB(p1, 4, 1, _cur_year < _patches.semaphore_build_before);
 
 		DoCommandP(tile, p1, 0, CcPlaySound1E,
 			CMD_BUILD_SIGNALS | CMD_AUTO | CMD_MSG(STR_1010_CAN_T_BUILD_SIGNALS_HERE));
 	} else {
-		DoCommandP(tile, i, 0, CcPlaySound1E,
+		DoCommandP(tile, track, 0, CcPlaySound1E,
 			CMD_REMOVE_SIGNALS | CMD_AUTO | CMD_MSG(STR_1013_CAN_T_REMOVE_SIGNALS_FROM));
 	}
 }
 
 static void PlaceRail_Bridge(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_OR_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
 }
 
 void CcBuildRailTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2)
@@ -223,12 +218,12 @@
 
 static void PlaceRail_ConvertRail(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_ConvertRailArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CONVERT_RAIL);
 }
 
 static void PlaceRail_AutoSignals(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_SIGNALDIRS, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_SIGNALDIRS, DDSP_BUILD_SIGNALS);
 }
 
 
@@ -501,13 +496,13 @@
 			TileIndex start_tile = e->we.place.starttile;
 			TileIndex end_tile = e->we.place.tile;
 
-			switch (e->we.place.select_method) {
-				case VPM_X_OR_Y:
+			switch (e->we.place.select_proc) {
+				case DDSP_BUILD_BRIDGE:
 					ResetObjectToPlace();
 					ShowBuildBridgeWindow(start_tile, end_tile, _cur_railtype);
 					break;
 
-				case VPM_RAILDIRS: {
+				case DDSP_PLACE_AUTORAIL: {
 					bool old = _remove_button_clicked;
 					if (_ctrl_pressed) _remove_button_clicked = true;
 					HandleAutodirPlacement();
@@ -515,30 +510,29 @@
 					break;
 				}
 
-				case VPM_SIGNALDIRS:
+				case DDSP_BUILD_SIGNALS:
 					HandleAutoSignalPlacement();
 					break;
 
-				case VPM_X_AND_Y:
-					if (GUIPlaceProcDragXY(e)) break;
-
-					switch (e->we.place.select_proc) {
-						case GUI_PlaceProc_RemoveFromStation:
-							DoCommandP(end_tile, start_tile, 0, CcPlaySound1E, CMD_REMOVE_FROM_RAILROAD_STATION | CMD_MSG(STR_CANT_REMOVE_PART_OF_STATION));
-							break;
-
-						case GUI_PlaceProc_ConvertRailArea:
-							DoCommandP(end_tile, start_tile, _cur_railtype, CcPlaySound10, CMD_CONVERT_RAIL | CMD_MSG(STR_CANT_CONVERT_RAIL));
-							break;
-					}
+				case DDSP_DEMOLISH_AREA:
+					GUIPlaceProcDragXY(e);
 					break;
 
-				case VPM_X_AND_Y_LIMITED:
+				case DDSP_REMOVE_STATION:
+					DoCommandP(end_tile, start_tile, 0, CcPlaySound1E, CMD_REMOVE_FROM_RAILROAD_STATION | CMD_MSG(STR_CANT_REMOVE_PART_OF_STATION));
+					break;
+
+				case DDSP_CONVERT_RAIL:
+					DoCommandP(end_tile, start_tile, _cur_railtype, CcPlaySound10, CMD_CONVERT_RAIL | CMD_MSG(STR_CANT_CONVERT_RAIL));
+					break;
+
+				case DDSP_BUILD_STATION:
 					HandleStationPlacement(start_tile, end_tile);
 					break;
 
-				default:
-					DoRailroadTrack(e->we.place.select_method == VPM_FIX_Y ? TRACK_X : TRACK_Y);
+				case DDSP_PLACE_RAIL_NE:
+				case DDSP_PLACE_RAIL_NW:
+					DoRailroadTrack(e->we.place.select_proc == DDSP_PLACE_RAIL_NE ? TRACK_X : TRACK_Y);
 					break;
 			}
 		}
@@ -666,7 +660,7 @@
 	if (!_railstation.orientation) Swap(w, h);
 
 	DoCommandP(TileXY(sx, sy),
-			_railstation.orientation | (w << 8) | (h << 16),
+			_railstation.orientation | (w << 8) | (h << 16) | (_ctrl_pressed << 24),
 			_cur_railtype | (_railstation.station_class << 8) | (_railstation.station_type << 16), CcStation,
 			CMD_BUILD_RAILROAD_STATION | CMD_NO_WATER | CMD_AUTO | CMD_MSG(STR_100F_CAN_T_BUILD_RAILROAD_STATION));
 }
@@ -756,7 +750,7 @@
 			old_dpi = _cur_dpi;
 			_cur_dpi = &tmp_dpi;
 			if (!DrawStationTile(32, 16, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) {
-				StationPickerDrawSprite(32, 16, _cur_railtype, 2);
+				StationPickerDrawSprite(32, 16, _cur_railtype, INVALID_ROADTYPE, 2);
 			}
 			_cur_dpi = old_dpi;
 		}
@@ -766,7 +760,7 @@
 			old_dpi = _cur_dpi;
 			_cur_dpi = &tmp_dpi;
 			if (!DrawStationTile(32, 16, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) {
-				StationPickerDrawSprite(32, 16, _cur_railtype, 3);
+				StationPickerDrawSprite(32, 16, _cur_railtype, INVALID_ROADTYPE, 3);
 			}
 			_cur_dpi = old_dpi;
 		}
--- a/src/rail_map.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/rail_map.h	Wed Jun 13 12:05:56 2007 +0000
@@ -207,33 +207,35 @@
 	SIGTYPE_COMBO   = 3  ///< presignal inter-block
 };
 
-static inline SignalType GetSignalType(TileIndex t)
-{
-	assert(GetRailTileType(t) == RAIL_TILE_SIGNALS);
-	return (SignalType)GB(_m[t].m2, 0, 2);
-}
-
-static inline void SetSignalType(TileIndex t, SignalType s)
+static inline SignalType GetSignalType(TileIndex t, Track track)
 {
 	assert(GetRailTileType(t) == RAIL_TILE_SIGNALS);
-	SB(_m[t].m2, 0, 2, s);
+	byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 0;
+	return (SignalType)GB(_m[t].m2, pos, 2);
 }
 
-static inline bool IsPresignalEntry(TileIndex t)
+static inline void SetSignalType(TileIndex t, Track track, SignalType s)
 {
-	return GetSignalType(t) == SIGTYPE_ENTRY || GetSignalType(t) == SIGTYPE_COMBO;
+	assert(GetRailTileType(t) == RAIL_TILE_SIGNALS);
+	byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 0;
+	SB(_m[t].m2, pos, 2, s);
+	if (track == INVALID_TRACK) SB(_m[t].m2, 4, 2, s);
 }
 
-static inline bool IsPresignalExit(TileIndex t)
+static inline bool IsPresignalEntry(TileIndex t, Track track)
 {
-	return GetSignalType(t) == SIGTYPE_EXIT || GetSignalType(t) == SIGTYPE_COMBO;
+	return GetSignalType(t, track) == SIGTYPE_ENTRY || GetSignalType(t, track) == SIGTYPE_COMBO;
+}
+
+static inline bool IsPresignalExit(TileIndex t, Track track)
+{
+	return GetSignalType(t, track) == SIGTYPE_EXIT || GetSignalType(t, track) == SIGTYPE_COMBO;
 }
 
 static inline void CycleSignalSide(TileIndex t, Track track)
 {
 	byte sig;
-	byte pos = 6;
-	if (track == TRACK_LOWER || track == TRACK_RIGHT) pos = 4;
+	byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 6;
 
 	sig = GB(_m[t].m3, pos, 2);
 	if (--sig == 0) sig = 3;
@@ -246,19 +248,17 @@
 	SIG_SEMAPHORE = 1  ///< Old-fashioned semaphore signal
 };
 
-static inline SignalVariant GetSignalVariant(TileIndex t)
+static inline SignalVariant GetSignalVariant(TileIndex t, Track track)
 {
-	return (SignalVariant)GB(_m[t].m2, 2, 1);
+	byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 6 : 2;
+	return (SignalVariant)GB(_m[t].m2, pos, 1);
 }
 
-static inline void SetSignalVariant(TileIndex t, SignalVariant v)
+static inline void SetSignalVariant(TileIndex t, Track track, SignalVariant v)
 {
-	SB(_m[t].m2, 2, 1, v);
-}
-
-static inline bool IsSignalPresent(TileIndex t, byte signalbit)
-{
-	return HASBIT(_m[t].m3, signalbit + 4);
+	byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 6 : 2;
+	SB(_m[t].m2, pos, 1, v);
+	if (track == INVALID_TRACK) SB(_m[t].m2, 6, 1, v);
 }
 
 /** These are states in which a signal can be. Currently these are only two, so
@@ -270,11 +270,67 @@
 	SIGNAL_STATE_GREEN = 1, ///< The signal is green
 };
 
+/**
+ * Set the states of the signals (Along/AgainstTrackDir)
+ * @param tile  the tile to set the states for
+ * @param state the new state
+ */
+static inline void SetSignalStates(TileIndex tile, uint state)
+{
+	SB(_m[tile].m4, 4, 4, state);
+}
+
+/**
+ * Set the states of the signals (Along/AgainstTrackDir)
+ * @param tile  the tile to set the states for
+ * @param state the new state
+ */
+static inline uint GetSignalStates(TileIndex tile)
+{
+	return GB(_m[tile].m4, 4, 4);
+}
+
+/**
+ * Get the state of a single signal
+ * @param t         the tile to get the signal state for
+ * @param signalbit the signal
+ * @return the state of the signal
+ */
 static inline SignalState GetSingleSignalState(TileIndex t, byte signalbit)
 {
-	return (SignalState)HASBIT(_m[t].m2, signalbit + 4);
+	return (SignalState)HASBIT(GetSignalStates(t), signalbit);
 }
 
+/**
+ * Set whether the given signals are present (Along/AgainstTrackDir)
+ * @param tile    the tile to set the present signals for
+ * @param signals the signals that have to be present
+ */
+static inline void SetPresentSignals(TileIndex tile, uint signals)
+{
+	SB(_m[tile].m3, 4, 4, signals);
+}
+
+/**
+ * Get whether the given signals are present (Along/AgainstTrackDir)
+ * @param tile the tile to get the present signals for
+ * @return the signals that are present
+ */
+static inline uint GetPresentSignals(TileIndex tile)
+{
+	return GB(_m[tile].m3, 4, 4);
+}
+
+/**
+ * Checks whether the given signals is present
+ * @param t         the tile to check on
+ * @param signalbit the signal
+ * @return true if and only if the signal is present
+ */
+static inline bool IsSignalPresent(TileIndex t, byte signalbit)
+{
+	return HASBIT(GetPresentSignals(t), signalbit);
+}
 
 /**
  * Checks for the presence of signals (either way) on the given track on the
@@ -285,7 +341,7 @@
 	assert(IsValidTrack(track));
 	return
 		GetRailTileType(tile) == RAIL_TILE_SIGNALS &&
-		(_m[tile].m3 & SignalOnTrack(track)) != 0;
+		(GetPresentSignals(tile) & SignalOnTrack(track)) != 0;
 }
 
 /**
@@ -300,7 +356,7 @@
 	assert (IsValidTrackdir(trackdir));
 	return
 		GetRailTileType(tile) == RAIL_TILE_SIGNALS &&
-		_m[tile].m3 & SignalAlongTrackdir(trackdir);
+		GetPresentSignals(tile) & SignalAlongTrackdir(trackdir);
 }
 
 /**
@@ -313,7 +369,7 @@
 {
 	assert(IsValidTrackdir(trackdir));
 	assert(HasSignalOnTrack(tile, TrackdirToTrack(trackdir)));
-	return _m[tile].m2 & SignalAlongTrackdir(trackdir) ?
+	return GetSignalStates(tile) & SignalAlongTrackdir(trackdir) ?
 		SIGNAL_STATE_GREEN : SIGNAL_STATE_RED;
 }
 
--- a/src/road.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/road.h	Wed Jun 13 12:05:56 2007 +0000
@@ -43,7 +43,7 @@
  */
 static inline bool IsValidRoadType(RoadType rt)
 {
-	return rt == ROADTYPE_ROAD;
+	return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM;
 }
 
 /**
@@ -53,7 +53,7 @@
  */
 static inline bool AreValidRoadTypes(RoadTypes rts)
 {
-	return rts == ROADTYPES_ROAD;
+	return HASBIT(rts, ROADTYPE_ROAD) || HASBIT(rts, ROADTYPE_TRAM);
 }
 
 /**
@@ -115,4 +115,6 @@
  */
 bool CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, Owner owner, bool *edge_road, RoadType rt);
 
+void DrawTramCatenary(TileInfo *ti, RoadBits tram);
+
 #endif /* ROAD_H */
--- a/src/road_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/road_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -13,6 +13,7 @@
 #include "table/sprites.h"
 #include "table/strings.h"
 #include "functions.h"
+#include "window.h"
 #include "map.h"
 #include "landscape.h"
 #include "tile.h"
@@ -27,6 +28,8 @@
 #include "yapf/yapf.h"
 #include "depot.h"
 #include "newgrf.h"
+#include "station_map.h"
+#include "tunnel_map.h"
 
 
 static uint CountRoadBits(RoadBits r)
@@ -49,8 +52,11 @@
 
 	if (_game_mode == GM_EDITOR || remove == ROAD_NONE) return true;
 
-	/* Only do the special processing for actual players. */
-	if (!IsValidPlayer(_current_player)) return true;
+	/* Water can always flood and towns can always remove "normal" road pieces.
+	 * Towns are not be allowed to remove non "normal" road pieces, like tram
+	 * tracks as that would result in trams that cannot turn. */
+	if (_current_player == OWNER_WATER ||
+			(rt == ROADTYPE_ROAD && !IsValidPlayer(_current_player))) return true;
 
 	/* Only do the special processing if the road is owned
 	 * by a town */
@@ -94,6 +100,11 @@
  * @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
  */
 int32 CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -109,9 +120,28 @@
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
 	RoadType rt = (RoadType)GB(p1, 4, 2);
-	if (!IsTileType(tile, MP_STREET) || !IsValidRoadType(rt)) return CMD_ERROR;
+	if (!IsValidRoadType(rt)) return CMD_ERROR;
 
-	Owner owner = GetRoadOwner(tile, rt);
+	Owner owner;
+	switch (GetTileType(tile)) {
+		case MP_STREET:
+			owner = GetRoadOwner(tile, rt);
+			break;
+
+		case MP_STATION:
+			if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
+			owner = GetTileOwner(tile);
+			break;
+
+		case MP_TUNNELBRIDGE:
+			if ((IsTunnel(tile) && GetTunnelTransportType(tile) != TRANSPORT_ROAD) ||
+					(IsBridge(tile) && GetBridgeTransportType(tile) != TRANSPORT_ROAD)) return CMD_ERROR;
+			owner = GetTileOwner(tile);
+			break;
+
+		default:
+			return CMD_ERROR;
+	}
 
 	if (owner == OWNER_TOWN && _game_mode != GM_EDITOR) {
 		t = GetTownByTile(tile);
@@ -132,6 +162,38 @@
 	 * removal allowance depends on difficulty setting */
 	if (!CheckforTownRating(flags, t, ROAD_REMOVE)) return CMD_ERROR;
 
+	if (!IsTileType(tile, MP_STREET)) {
+		/* If it's the last roadtype, just clear the whole tile */
+		if (rts == RoadTypeToRoadTypes(rt)) return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+
+		int32 cost;
+		if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+			TileIndex other_end = IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile);
+			/* Pay for *every* tile of the bridge or tunnel */
+			cost = (DistanceManhattan(IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile), tile) + 1) * _eco->GetPrice(CEconomy::REMOVE_ROAD);
+			if (flags & DC_EXEC) {
+				SetRoadTypes(other_end, GetRoadTypes(other_end) & ~RoadTypeToRoadTypes(rt));
+				SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt));
+
+				/* Mark tiles diry that have been repaved */
+				MarkTileDirtyByTile(tile);
+				MarkTileDirtyByTile(other_end);
+				if (IsBridge(tile)) {
+					TileIndexDiff delta = TileOffsByDiagDir(GetBridgeRampDirection(tile));
+
+					for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t);
+				}
+			}
+		} else {
+			cost = _eco->GetPrice(CEconomy::REMOVE_ROAD);
+			if (flags & DC_EXEC) {
+				SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt));
+				MarkTileDirtyByTile(tile);
+			}
+		}
+		return cost;
+	}
+
 	switch (GetRoadTileType(tile)) {
 		case ROAD_TILE_NORMAL: {
 			RoadBits present = GetRoadBits(tile, rt);
@@ -162,6 +224,10 @@
 						SetRoadTypes(tile, rts);
 					}
 				} else {
+					/* When bits are removed, you *always* end up with something that
+					 * is not a complete straight road tile. However, trams do not have
+					 * onewayness, so they cannot remove it either. */
+					if (rt != ROADTYPE_TRAM) SetDisallowedRoadDirections(tile, DRD_NONE);
 					SetRoadBits(tile, present, rt);
 					MarkTileDirtyByTile(tile);
 				}
@@ -174,6 +240,10 @@
 				return CMD_ERROR;
 			}
 
+			/* 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 (flags & DC_EXEC) {
 				if (rt == ROADTYPE_ROAD) {
 					ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
@@ -273,6 +343,7 @@
  * @param flags operation to perform
  * @param p1 bit 0..3 road pieces to build (RoadBits)
  *           bit 4..5 road type
+ *           bit 6..7 disallowed directions to toggle
  * @param p2 the town that is building the road (0 if not applicable)
  */
 int32 CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -280,6 +351,7 @@
 	int32 cost = 0;
 	int32 ret;
 	RoadBits existing = ROAD_NONE;
+	RoadBits all_bits = ROAD_NONE;
 	Slope tileh;
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
@@ -293,25 +365,47 @@
 	RoadType rt = (RoadType)GB(p1, 4, 2);
 	if (!IsValidRoadType(rt)) return CMD_ERROR;
 
+	DisallowedRoadDirections toggle_drd = (DisallowedRoadDirections)GB(p1, 6, 2);
+
 	tileh = GetTileSlope(tile, NULL);
 
 	switch (GetTileType(tile)) {
 		case MP_STREET:
 			switch (GetRoadTileType(tile)) {
-				case ROAD_TILE_NORMAL:
+				case ROAD_TILE_NORMAL: {
 					if (HasRoadWorks(tile)) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
+					if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
+
+					all_bits = GetAllRoadBits(tile);
 					if (!HASBIT(GetRoadTypes(tile), rt)) break;
 
 					existing = GetRoadBits(tile, rt);
+					RoadBits merged = existing | pieces;
+					bool crossing = (merged != ROAD_X && merged != ROAD_Y);
+					if (rt != ROADTYPE_TRAM && (GetDisallowedRoadDirections(tile) != DRD_NONE || toggle_drd != DRD_NONE) && crossing) {
+						/* Junctions cannot be one-way */
+						return_cmd_error(STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION);
+					}
 					if ((existing & pieces) == pieces) {
+						/* We only want to set the (dis)allowed road directions */
+						if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM && GetRoadOwner(tile, ROADTYPE_ROAD) == _current_player) {
+							if (crossing) return_cmd_error(STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION);
+
+							/* Ignore half built tiles */
+							if (flags & DC_EXEC && rt != ROADTYPE_TRAM && (existing == ROAD_X || existing == ROAD_Y)) {
+								SetDisallowedRoadDirections(tile, GetDisallowedRoadDirections(tile) ^ toggle_drd);
+								MarkTileDirtyByTile(tile);
+							}
+							return 0;
+						}
 						return_cmd_error(STR_1007_ALREADY_BUILT);
 					}
-					if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
-					break;
+				} break;
 
 				case ROAD_TILE_CROSSING:
 					if (HASBIT(GetRoadTypes(tile), rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
-					if (pieces & ComplementRoadBits(GetCrossingRoadBits(tile))) goto do_clear;
+					all_bits = GetCrossingRoadBits(tile);
+					if (pieces & ComplementRoadBits(all_bits)) goto do_clear;
 					break;
 
 				default:
@@ -353,13 +447,29 @@
 
 			if (flags & DC_EXEC) {
 				YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile)));
-				MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt), p2);
+				/* 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);
 				MarkTileDirtyByTile(tile);
 			}
 			/** @todo should be more expensive */
-			return _eco->GetPrice(CEconomy::BUILD_ROAD) * 2;
+			return _eco->GetPrice(CEconomy::BUILD_ROAD) * (rt == ROADTYPE_ROAD ? 2 : 4);
 		}
 
+		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 */
+			if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
+			break;
+
+		case MP_TUNNELBRIDGE:
+			if ((IsTunnel(tile) && GetTunnelTransportType(tile) != TRANSPORT_ROAD) ||
+					(IsBridge(tile) && GetBridgeTransportType(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 (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
+			break;
+
 		default:
 do_clear:;
 			ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -367,13 +477,16 @@
 			cost += ret;
 	}
 
-	ret = CheckRoadSlope(tileh, &pieces, existing);
-	/* Return an error if we need to build a foundation (ret != 0) but the
-	 * current patch-setting is turned off (or stupid AI@work) */
-	if (CmdFailed(ret) || (ret != 0 && (!_patches.build_on_slopes || _is_old_ai_player)))
-		return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
-
-	cost += ret;
+	if (all_bits != pieces) {
+		/* Check the foundation/slopes when adding road/tram bits */
+		ret = CheckRoadSlope(tileh, &pieces, all_bits | existing);
+		/* Return an error if we need to build a foundation (ret != 0) but the
+		 * current patch-setting is turned off (or stupid AI@work) */
+		if (CmdFailed(ret) || (ret != 0 && (!_patches.build_on_slopes || _is_old_ai_player))) {
+			return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
+		}
+		cost += ret;
+	}
 
 	if (IsTileType(tile, MP_STREET)) {
 		/* Don't put the pieces that already exist */
@@ -384,16 +497,51 @@
 		cost += (CountRoadBits(pieces) - 1) * _eco->GetPrice(CEconomy::BUILD_ROAD);
 	}
 
+	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+		/* Pay for *every* tile of the bridge or tunnel */
+		cost *= DistanceManhattan(IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile), tile);
+	}
 
 	if (flags & DC_EXEC) {
-		if (IsTileType(tile, MP_STREET)) {
-			if (existing == ROAD_NONE) {
+		switch (GetTileType(tile)) {
+			case MP_STREET: {
+				RoadTileType rtt = GetRoadTileType(tile);
+				if (existing == ROAD_NONE || rtt == ROAD_TILE_CROSSING) {
+					SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt));
+					SetRoadOwner(tile, rt, _current_player);
+				}
+				if (rtt != ROAD_TILE_CROSSING) SetRoadBits(tile, existing | pieces, rt);
+			} break;
+
+			case MP_TUNNELBRIDGE: {
+				TileIndex other_end = IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile);
+
+				SetRoadTypes(other_end, GetRoadTypes(other_end) | RoadTypeToRoadTypes(rt));
 				SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt));
-				SetRoadOwner(tile, rt, _current_player);
-			}
-			SetRoadBits(tile, existing | pieces, rt);
-		} else {
-			MakeRoadNormal(tile, pieces, RoadTypeToRoadTypes(rt), p2, _current_player, _current_player, _current_player);
+
+				/* Mark tiles diry that have been repaved */
+				MarkTileDirtyByTile(other_end);
+				MarkTileDirtyByTile(tile);
+				if (IsBridge(tile)) {
+					TileIndexDiff delta = TileOffsByDiagDir(GetBridgeRampDirection(tile));
+
+					for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t);
+				}
+			} break;
+
+			case MP_STATION:
+				SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt));
+				break;
+
+			default:
+				MakeRoadNormal(tile, pieces, RoadTypeToRoadTypes(rt), p2, _current_player, _current_player, _current_player);
+				break;
+		}
+
+		if (rt != ROADTYPE_TRAM && IsTileType(tile, MP_STREET) && GetRoadTileType(tile) == ROAD_TILE_NORMAL) {
+			existing |= pieces;
+			SetDisallowedRoadDirections(tile, (existing == ROAD_X || existing == ROAD_Y) ?
+					GetDisallowedRoadDirections(tile) ^ toggle_drd : DRD_NONE);
 		}
 
 		MarkTileDirtyByTile(tile);
@@ -441,11 +589,15 @@
  * - p2 = (bit 1) - end tile starts in the 2nd half of tile (p2 & 2)
  * - p2 = (bit 2) - direction: 0 = along x-axis, 1 = along y-axis (p2 & 4)
  * - p2 = (bit 3 + 4) - road type
+ * - p2 = (bit 5) - set road direction
  */
 int32 CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	TileIndex start_tile, tile;
 	int32 cost, ret;
+	bool had_bridge = false;
+	bool had_success = false;
+	DisallowedRoadDirections drd = DRD_NORTHBOUND;
 
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
@@ -465,8 +617,16 @@
 		start_tile = end_tile;
 		end_tile = t;
 		p2 ^= IS_INT_INSIDE(p2 & 3, 1, 3) ? 3 : 0;
+		drd = DRD_SOUTHBOUND;
 	}
 
+	/* On the X-axis, we have to swap the initial bits, so they
+	 * will be interpreted correctly in the GTTS. Futhermore
+	 * when you just 'click' on one tile to build them. */
+	if (HASBIT(p2, 2) == (start_tile == end_tile)) drd ^= DRD_BOTH;
+	/* No disallowed direction bits have to be toggled */
+	if (!HASBIT(p2, 5)) drd = DRD_NONE;
+
 	cost = 0;
 	tile = start_tile;
 	/* Start tile is the small number. */
@@ -476,12 +636,21 @@
 		if (tile == end_tile && !HASBIT(p2, 1)) bits &= ROAD_NW | ROAD_NE;
 		if (tile == start_tile && HASBIT(p2, 0)) bits &= ROAD_SE | ROAD_SW;
 
-		ret = DoCommand(tile, rt << 4 | bits, 0, flags, CMD_BUILD_ROAD);
+		ret = DoCommand(tile, drd << 6 | rt << 4 | bits, 0, flags, CMD_BUILD_ROAD);
 		if (CmdFailed(ret)) {
 			if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
 			_error_message = INVALID_STRING_ID;
 		} else {
-			cost += ret;
+			had_success = true;
+			/* Only pay for the upgrade on one side of the bridge */
+			if (IsBridgeTile(tile)) {
+				if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
+					cost += ret;
+				}
+				had_bridge = true;
+			} else {
+				cost += ret;
+			}
 		}
 
 		if (tile == end_tile) break;
@@ -489,7 +658,7 @@
 		tile += HASBIT(p2, 2) ? TileDiffXY(0, 1) : TileDiffXY(1, 0);
 	}
 
-	return (cost == 0) ? CMD_ERROR : cost;
+	return !had_success ? CMD_ERROR : cost;
 }
 
 /** Remove a long piece of road.
@@ -627,19 +796,36 @@
 			    ((flags & DC_AI_BUILDING) && IsTileOwner(tile, OWNER_TOWN)) ||
 			    !(flags & DC_AUTO)
 				) {
-				return DoCommand(tile, b, 0, flags, CMD_REMOVE_ROAD);
+				RoadTypes rts = GetRoadTypes(tile);
+				int32 ret = 0;
+				for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
+					if (HASBIT(rts, rt)) {
+						int32 tmp_ret = DoCommand(tile, rt << 4 | GetRoadBits(tile, rt), 0, flags, CMD_REMOVE_ROAD);
+						if (CmdFailed(tmp_ret)) return tmp_ret;
+						ret += tmp_ret;
+					}
+				}
+				return ret;
 			}
 			return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST);
 		}
 #undef M
 
 		case ROAD_TILE_CROSSING: {
-			int32 ret;
+			RoadTypes rts = GetRoadTypes(tile);
+			int32 ret = 0;
 
 			if (flags & DC_AUTO) return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST);
 
-			ret = DoCommand(tile, GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
-			if (CmdFailed(ret)) return CMD_ERROR;
+			/* Must iterate over the roadtypes in a reverse manner because
+			 * tram tracks must be removed before the road bits. */
+			for (RoadType rt = ROADTYPE_HWAY; rt >= ROADTYPE_ROAD; rt--) {
+				if (HASBIT(rts, rt)) {
+					int32 tmp_ret = DoCommand(tile, 1 << 6 | rt << 4 | GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
+					if (CmdFailed(tmp_ret)) return tmp_ret;
+					ret += tmp_ret;
+				}
+			}
 
 			if (flags & DC_EXEC) {
 				DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -721,19 +907,74 @@
 }
 
 /**
+ * Draws the catenary for the given tile
+ * @param ti   information about the tile (slopes, height etc)
+ * @param tram the roadbits for the tram
+ */
+void DrawTramCatenary(TileInfo *ti, RoadBits tram)
+{
+	/* Don't draw the catenary under a low bridge */
+	if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !HASBIT(_transparent_opt, TO_BUILDINGS)) {
+		uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
+
+		if (height <= GetTileMaxZ(ti->tile) + TILE_HEIGHT) return;
+	}
+
+	SpriteID front;
+	SpriteID back;
+
+	if (ti->tileh != SLOPE_FLAT) {
+		back  = SPR_TRAMWAY_BACK_WIRES_SLOPED  + _road_sloped_sprites[ti->tileh - 1];
+		front = SPR_TRAMWAY_FRONT_WIRES_SLOPED + _road_sloped_sprites[ti->tileh - 1];
+	} else {
+		back  = SPR_TRAMWAY_BASE + _road_backpole_sprites_1[tram];
+		front = SPR_TRAMWAY_BASE + _road_frontwire_sprites_1[tram];
+	}
+
+	SpriteID pal = PAL_NONE;
+	if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
+		SETBIT(front, PALETTE_MODIFIER_TRANSPARENT);
+		SETBIT(back,  PALETTE_MODIFIER_TRANSPARENT);
+		pal = PALETTE_TO_TRANSPARENT;
+	}
+
+	AddSortableSpriteToDraw(back,  pal, ti->x, ti->y, 16, 16, 0x1F, ti->z);
+	AddSortableSpriteToDraw(front, pal, ti->x, ti->y, 16, 16, 0x1F, ti->z);
+}
+
+/**
+ * Draws details on/around the road
+ * @param img the sprite to draw
+ * @param ti  the tile to draw on
+ * @param dx  the offset from the top of the BB of the tile
+ * @param dy  the offset from the top of the BB of the tile
+ * @param h   the height of the sprite to draw
+ */
+static void DrawRoadDetail(SpriteID img, TileInfo *ti, int dx, int dy, int h)
+{
+	int x = ti->x | dx;
+	int y = ti->y | dy;
+	byte z = ti->z;
+	if (ti->tileh != SLOPE_FLAT) z = GetSlopeZ(x, y);
+	AddSortableSpriteToDraw(img, PAL_NONE, x, y, 2, 2, h, z);
+}
+
+/**
  * Draw ground sprite and road pieces
  * @param ti TileInfo
  */
 static void DrawRoadBits(TileInfo* ti)
 {
 	RoadBits road = GetRoadBits(ti->tile, ROADTYPE_ROAD);
+	RoadBits tram = GetRoadBits(ti->tile, ROADTYPE_TRAM);
+
 	const DrawRoadTileStruct *drts;
 	SpriteID image = 0;
 	SpriteID pal = PAL_NONE;
 	Roadside roadside;
 
 	if (ti->tileh != SLOPE_FLAT) {
-		int foundation = GetRoadFoundation(ti->tileh, road);
+		int foundation = GetRoadFoundation(ti->tileh, road | tram);
 
 		if (foundation != 0) DrawFoundation(ti, foundation);
 
@@ -742,7 +983,7 @@
 		if (ti->tileh != SLOPE_FLAT) image = _road_sloped_sprites[ti->tileh - 1] + 0x53F;
 	}
 
-	if (image == 0) image = _road_tile_sprites_1[road];
+	if (image == 0) image = _road_tile_sprites_1[road != ROAD_NONE ? road : tram];
 
 	roadside = GetRoadside(ti->tile);
 
@@ -759,22 +1000,40 @@
 
 	DrawGroundSprite(image, pal);
 
+	if (road != ROAD_NONE) {
+		DisallowedRoadDirections drd = GetDisallowedRoadDirections(ti->tile);
+		if (drd != DRD_NONE) {
+			DrawRoadDetail(SPR_ONEWAY_BASE + drd - 1 + ((road == ROAD_X) ? 0 : 3), ti, 8, 8, 0);
+		}
+	}
+
+	/* For tram we overlay the road graphics with either tram tracks only
+	 * (when there is actual road beneath the trams) or with tram tracks
+	 * and some dirts which hides the road graphics */
+	if (tram != ROAD_NONE) {
+		if (ti->tileh != SLOPE_FLAT) {
+			image = _road_sloped_sprites[ti->tileh - 1] + SPR_TRAMWAY_SLOPED_OFFSET;
+		} else {
+			image = _road_tile_sprites_1[tram] - SPR_ROAD_Y;
+		}
+		image += (road == ROAD_NONE) ? SPR_TRAMWAY_TRAM : SPR_TRAMWAY_OVERLAY;
+		DrawGroundSprite(image, pal);
+	}
+
 	if (HasRoadWorks(ti->tile)) {
 		/* Road works */
-		DrawGroundSprite(road & ROAD_X ? SPR_EXCAVATION_X : SPR_EXCAVATION_Y, PAL_NONE);
+		DrawGroundSprite((road | tram) & ROAD_X ? SPR_EXCAVATION_X : SPR_EXCAVATION_Y, PAL_NONE);
 		return;
 	}
 
+	if (tram != ROAD_NONE) DrawTramCatenary(ti, tram);
+
 	/* Return if full detail is disabled, or we are zoomed fully out. */
 	if (!HASBIT(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return;
 
 	/* Draw extra details. */
 	for (drts = _road_display_table[roadside][road]; drts->image != 0; drts++) {
-		int x = ti->x | drts->subcoord_x;
-		int y = ti->y | drts->subcoord_y;
-		byte z = ti->z;
-		if (ti->tileh != SLOPE_FLAT) z = GetSlopeZ(x, y);
-		AddSortableSpriteToDraw(drts->image, PAL_NONE, x, y, 2, 2, 0x10, z);
+		DrawRoadDetail(drts->image, ti, drts->subcoord_x, drts->subcoord_y, 0x10);
 	}
 }
 
@@ -808,6 +1067,10 @@
 			}
 
 			DrawGroundSprite(image, pal);
+			if (HASBIT(GetRoadTypes(ti->tile), ROADTYPE_TRAM)) {
+				DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal);
+				DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile));
+			}
 			if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
 			break;
 		}
@@ -822,7 +1085,12 @@
 
 			palette = PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile));
 
-			dts =  &_road_depot[GetRoadDepotDirection(ti->tile)];
+			if (HASBIT(GetRoadTypes(ti->tile), ROADTYPE_TRAM)) {
+				dts =  &_tram_depot[GetRoadDepotDirection(ti->tile)];
+			} else {
+				dts =  &_road_depot[GetRoadDepotDirection(ti->tile)];
+			}
+
 			DrawGroundSprite(dts->ground_sprite, PAL_NONE);
 
 			for (dtss = dts->seq; dtss->image != 0; dtss++) {
@@ -854,7 +1122,7 @@
 void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt)
 {
 	SpriteID palette = PLAYER_SPRITE_COLOR(_local_player);
-	const DrawTileSprites* dts =  &_road_depot[dir];
+	const DrawTileSprites* dts = (rt == ROADTYPE_TRAM) ? &_tram_depot[dir] : &_road_depot[dir];
 	const DrawTileSeqStruct* dtss;
 
 	x += 33;
@@ -1017,9 +1285,8 @@
 	0x0, 0x0, 0x0, 0x10, 0x0, 0x2, 0x8, 0x1A, 0x0, 0x4, 0x1, 0x15, 0x20, 0x26, 0x29, 0x3F,
 };
 
-static uint32 GetTileTrackStatus_Road(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode)
 {
-	RoadType rt = ROADTYPE_ROAD;
 
 	switch (mode) {
 		case TRANSPORT_RAIL:
@@ -1027,10 +1294,14 @@
 			return GetCrossingRailBits(tile) * 0x101;
 
 		case TRANSPORT_ROAD:
-			if (!HASBIT(GetRoadTypes(tile), rt)) return 0;
+			if ((GetRoadTypes(tile) & sub_mode) == 0) return 0;
 			switch (GetRoadTileType(tile)) {
-				case ROAD_TILE_NORMAL:
-					return HasRoadWorks(tile) ? 0 : _road_trackbits[GetRoadBits(tile, rt)] * 0x101;
+				case ROAD_TILE_NORMAL: {
+					RoadType rt = (RoadType)FindFirstBit(sub_mode);
+					const uint drd_to_multiplier[DRD_END] = { 0x101, 0x100, 0x1, 0x0 };
+					uint multiplier = drd_to_multiplier[rt == ROADTYPE_TRAM ? DRD_NONE : GetDisallowedRoadDirections(tile)];
+					return HasRoadWorks(tile) ? 0 : _road_trackbits[GetRoadBits(tile, rt)] * multiplier;
+				}
 
 				case ROAD_TILE_CROSSING: {
 					uint32 r = AxisToTrackBits(GetCrossingRoadAxis(tile)) * 0x101;
@@ -1071,8 +1342,12 @@
 	}
 }
 
-static const byte _roadveh_enter_depot_unk0[4] = {
-	8, 9, 0, 1
+/**
+ * Given the direction the road depot is pointing, this is the direction the
+ * vehicle should be travelling in in order to enter the depot.
+ */
+static const byte _roadveh_enter_depot_dir[4] = {
+	TRACKDIR_X_SW, TRACKDIR_Y_NW, TRACKDIR_X_NE, TRACKDIR_Y_SE
 };
 
 static uint32 VehicleEnter_Road(Vehicle *v, TileIndex tile, int x, int y)
@@ -1090,8 +1365,14 @@
 		case ROAD_TILE_DEPOT:
 			if (v->type == VEH_ROAD &&
 					v->u.road.frame == 11 &&
-					_roadveh_enter_depot_unk0[GetRoadDepotDirection(tile)] == v->u.road.state) {
-				VehicleEnterDepot(v);
+					_roadveh_enter_depot_dir[GetRoadDepotDirection(tile)] == v->u.road.state) {
+				v->u.road.state = RVSB_IN_DEPOT;
+				v->vehstatus |= VS_HIDDEN;
+				v->direction = ReverseDir(v->direction);
+				if (v->next == NULL) VehicleEnterDepot(v);
+				v->tile = tile;
+
+				InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 				return VETSB_ENTERED_WORMHOLE;
 			}
 			break;
@@ -1105,7 +1386,13 @@
 static void ChangeTileOwner_Road(TileIndex tile, PlayerID old_player, PlayerID new_player)
 {
 	if (GetRoadTileType(tile) == ROAD_TILE_DEPOT) {
-		DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
+		if (GetTileOwner(tile) == old_player) {
+			if (new_player == PLAYER_SPECTATOR) {
+				DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
+			} else {
+				SetTileOwner(tile, new_player);
+			}
+		}
 		return;
 	}
 
@@ -1114,15 +1401,17 @@
 
 		if (GetRoadOwner(tile, rt) == old_player) {
 			SetRoadOwner(tile, rt, new_player == PLAYER_SPECTATOR ? OWNER_NONE : new_player);
-
-			if (rt == ROADTYPE_TRAM) {
-				DoCommand(tile, ROADTYPE_TRAM << 4 | GetRoadBits(tile, ROADTYPE_ROAD), 0, DC_EXEC, CMD_REMOVE_ROAD);
-			}
 		}
 	}
 
 	if (IsLevelCrossing(tile)) {
-		MakeRoadNormal(tile, GetCrossingRoadBits(tile), GetRoadTypes(tile), GetTownIndex(tile), GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY));
+		if (GetTileOwner(tile) == old_player) {
+			if (new_player == PLAYER_SPECTATOR) {
+				MakeRoadNormal(tile, GetCrossingRoadBits(tile), GetRoadTypes(tile), GetTownIndex(tile), GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY));
+			} else {
+				SetTileOwner(tile, new_player);
+			}
+		}
 	}
 }
 
--- a/src/road_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/road_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -24,8 +24,7 @@
 #include "station.h"
 
 
-static void ShowBusStationPicker();
-static void ShowTruckStationPicker();
+static void ShowRVStationPicker(RoadStop::Type rs);
 static void ShowRoadDepotPicker();
 
 static bool _remove_button_clicked;
@@ -45,18 +44,18 @@
 static void PlaceRoad_NE(TileIndex tile)
 {
 	_place_road_flag = (_tile_fract_coords.y >= 8) + 4;
-	VpStartPlaceSizing(tile, VPM_FIX_X, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_NE);
 }
 
 static void PlaceRoad_NW(TileIndex tile)
 {
 	_place_road_flag = (_tile_fract_coords.x >= 8) + 0;
-	VpStartPlaceSizing(tile, VPM_FIX_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_NW);
 }
 
 static void PlaceRoad_Bridge(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_OR_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
 }
 
 
@@ -70,6 +69,49 @@
 	}
 }
 
+/** Structure holding information per roadtype for several functions */
+struct RoadTypeInfo {
+	StringID err_build_road;        ///< Building a normal piece of road
+	StringID err_remove_road;       ///< Removing a normal piece of road
+	StringID err_depot;             ///< Building a depot
+	StringID err_build_station[2];  ///< Building a bus or truck station
+	StringID err_remove_station[2]; ///< Removing of a bus or truck station
+
+	StringID picker_title[2];       ///< Title for the station picker for bus or truck stations
+	StringID picker_tooltip[2];     ///< Tooltip for the station picker for bus or truck stations
+
+	SpriteID cursor_nesw;           ///< Cursor for building NE and SW bits
+	SpriteID cursor_nwse;           ///< Cursor for building NW and SE bits
+};
+
+/** What errors/cursors must be shown for several types of roads */
+static const RoadTypeInfo _road_type_infos[] = {
+	{
+		STR_1804_CAN_T_BUILD_ROAD_HERE,
+		STR_1805_CAN_T_REMOVE_ROAD_FROM,
+		STR_1807_CAN_T_BUILD_ROAD_VEHICLE,
+		{ STR_1808_CAN_T_BUILD_BUS_STATION,        STR_1809_CAN_T_BUILD_TRUCK_STATION },
+		{ STR_CAN_T_REMOVE_BUS_STATION,            STR_CAN_T_REMOVE_TRUCK_STATION     },
+		{ STR_3042_BUS_STATION_ORIENTATION,        STR_3043_TRUCK_STATION_ORIENT      },
+		{ STR_3051_SELECT_BUS_STATION_ORIENTATION, STR_3052_SELECT_TRUCK_LOADING_BAY  },
+
+		SPR_CURSOR_ROAD_NESW,
+		SPR_CURSOR_ROAD_NWSE,
+	},
+	{
+		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 },
+
+		SPR_CURSOR_TRAMWAY_NESW,
+		SPR_CURSOR_TRAMWAY_NWSE,
+	},
+};
+
 static void PlaceRoad_Tunnel(TileIndex tile)
 {
 	DoCommandP(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, CcBuildRoadTunnel, CMD_BUILD_TUNNEL | CMD_AUTO | CMD_MSG(STR_5016_CAN_T_BUILD_TUNNEL_HERE));
@@ -100,7 +142,7 @@
 
 static void PlaceRoad_Depot(TileIndex tile)
 {
-	DoCommandP(tile, _cur_roadtype << 2 | _road_depot_orientation, 0, CcRoadDepot, CMD_BUILD_ROAD_DEPOT | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1807_CAN_T_BUILD_ROAD_VEHICLE));
+	DoCommandP(tile, _cur_roadtype << 2 | _road_depot_orientation, 0, CcRoadDepot, CMD_BUILD_ROAD_DEPOT | CMD_AUTO | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_depot));
 }
 
 static void PlaceRoadStop(TileIndex tile, uint32 p2, uint32 cmd)
@@ -117,24 +159,24 @@
 static void PlaceRoad_BusStation(TileIndex tile)
 {
 	if (_remove_button_clicked) {
-		DoCommandP(tile, 0, RoadStop::BUS, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(STR_CAN_T_REMOVE_BUS_STATION));
+		DoCommandP(tile, 0, RoadStop::BUS, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[RoadStop::BUS]));
 	} else {
-		PlaceRoadStop(tile, ROADTYPES_ROAD << 2 | RoadStop::BUS, CMD_BUILD_ROAD_STOP | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1808_CAN_T_BUILD_BUS_STATION));
+		PlaceRoadStop(tile, (_ctrl_pressed << 5) | RoadTypeToRoadTypes(_cur_roadtype) << 2 | RoadStop::BUS, CMD_BUILD_ROAD_STOP | CMD_AUTO | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_station[RoadStop::BUS]));
 	}
 }
 
 static void PlaceRoad_TruckStation(TileIndex tile)
 {
 	if (_remove_button_clicked) {
-		DoCommandP(tile, 0, RoadStop::TRUCK, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(STR_CAN_T_REMOVE_TRUCK_STATION));
+		DoCommandP(tile, 0, RoadStop::TRUCK, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_station[RoadStop::TRUCK]));
 	} else {
-		PlaceRoadStop(tile, ROADTYPES_ROAD << 2 | RoadStop::TRUCK, CMD_BUILD_ROAD_STOP | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1809_CAN_T_BUILD_TRUCK_STATION));
+		PlaceRoadStop(tile, (_ctrl_pressed << 5) | RoadTypeToRoadTypes(_cur_roadtype) << 2 | RoadStop::TRUCK, CMD_BUILD_ROAD_STOP | CMD_AUTO | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_station[RoadStop::TRUCK]));
 	}
 }
 
 static void PlaceRoad_DemolishArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_None);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
 }
 
 
@@ -155,12 +197,12 @@
 
 static void BuildRoadClick_NE(Window *w)
 {
-	HandlePlacePushButton(w, RTW_ROAD_X, SPR_CURSOR_ROAD_NESW, 1, PlaceRoad_NE);
+	HandlePlacePushButton(w, RTW_ROAD_X, _road_type_infos[_cur_roadtype].cursor_nesw, 1, PlaceRoad_NE);
 }
 
 static void BuildRoadClick_NW(Window *w)
 {
-	HandlePlacePushButton(w, RTW_ROAD_Y, SPR_CURSOR_ROAD_NWSE, 1, PlaceRoad_NW);
+	HandlePlacePushButton(w, RTW_ROAD_Y, _road_type_infos[_cur_roadtype].cursor_nwse, 1, PlaceRoad_NW);
 }
 
 
@@ -178,13 +220,13 @@
 static void BuildRoadClick_BusStation(Window *w)
 {
 	if (_game_mode == GM_EDITOR) return;
-	if (HandlePlacePushButton(w, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, 1, PlaceRoad_BusStation)) ShowBusStationPicker();
+	if (HandlePlacePushButton(w, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, 1, PlaceRoad_BusStation)) ShowRVStationPicker(RoadStop::BUS);
 }
 
 static void BuildRoadClick_TruckStation(Window *w)
 {
 	if (_game_mode == GM_EDITOR) return;
-	if (HandlePlacePushButton(w, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, 1, PlaceRoad_TruckStation)) ShowTruckStationPicker();
+	if (HandlePlacePushButton(w, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, 1, PlaceRoad_TruckStation)) ShowRVStationPicker(RoadStop::TRUCK);
 }
 
 static void BuildRoadClick_Bridge(Window *w)
@@ -271,12 +313,12 @@
 		break;
 
 	case WE_PLACE_DRAG:
-		switch (e->we.place.select_method) {
-			case VPM_FIX_X:
+		switch (e->we.place.select_proc) {
+			case DDSP_PLACE_ROAD_NE:
 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.y & 8) >> 2);
 				break;
 
-			case VPM_FIX_Y:
+			case DDSP_PLACE_ROAD_NW:
 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.x & 8) >> 2);
 				break;
 		}
@@ -289,21 +331,22 @@
 			TileIndex start_tile = e->we.place.starttile;
 			TileIndex end_tile = e->we.place.tile;
 
-			switch (e->we.place.select_method) {
-				case VPM_X_OR_Y:
+			switch (e->we.place.select_proc) {
+				case DDSP_BUILD_BRIDGE:
 					ResetObjectToPlace();
 					ShowBuildBridgeWindow(start_tile, end_tile, 0x80 | RoadTypeToRoadTypes(_cur_roadtype));
 					break;
 
-				case VPM_X_AND_Y:
+				case DDSP_DEMOLISH_AREA:
 					DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
 					break;
 
-				default:
-					DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3), CcPlaySound1D,
+				case DDSP_PLACE_ROAD_NE:
+				case DDSP_PLACE_ROAD_NW:
+					DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3) | _ctrl_pressed << 5, CcPlaySound1D,
 						_remove_button_clicked ?
-						CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1805_CAN_T_REMOVE_ROAD_FROM) :
-						CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1804_CAN_T_BUILD_ROAD_HERE));
+						CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_road) :
+						CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_road));
 					break;
 			}
 		}
@@ -312,7 +355,7 @@
 	case WE_PLACE_PRESIZE: {
 		TileIndex tile = e->we.place.tile;
 
-		DoCommand(tile, 0x200 | _cur_roadtype, 0, DC_AUTO, CMD_BUILD_TUNNEL);
+		DoCommand(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, DC_AUTO, CMD_BUILD_TUNNEL);
 		VpSetPresizeRange(tile, _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile);
 		break;
 	}
@@ -348,13 +391,39 @@
 	BuildRoadToolbWndProc
 };
 
+static const Widget _build_tramway_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   205,     0,    13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
+{  WWT_STICKYBOX,   RESIZE_NONE,     7,   206,   217,     0,    13, 0x0,                        STR_STICKY_BUTTON},
+
+{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_TRAMWAY_NW,         STR_180B_BUILD_TRAMWAY_SECTION},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_TRAMWAY_NE,         STR_180B_BUILD_TRAMWAY_SECTION},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_ROAD_DEPOT,         STR_180C_BUILD_TRAM_VEHICLE_DEPOT},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_BUS_STATION,        STR_180D_BUILD_PASSENGER_TRAM_STATION},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   131,    14,    35, SPR_IMG_TRUCK_BAY,          STR_180E_BUILD_CARGO_TRAM_STATION},
+
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   132,   173,    14,    35, SPR_IMG_BRIDGE,             STR_180F_BUILD_TRAMWAY_BRIDGE},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   174,   195,    14,    35, SPR_IMG_ROAD_TUNNEL,        STR_1810_BUILD_TRAMWAY_TUNNEL},
+{     WWT_IMGBTN,   RESIZE_NONE,     7,   196,   217,    14,    35, SPR_IMG_REMOVE,             STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS},
+{   WIDGETS_END},
+};
+
+static const WindowDesc _build_tramway_desc = {
+	WDP_ALIGN_TBR, 22, 218, 36,
+	WC_BUILD_TOOLBAR, WC_NONE,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
+	_build_tramway_widgets,
+	BuildRoadToolbWndProc
+};
+
 void ShowBuildRoadToolbar(RoadType roadtype)
 {
 	if (!IsValidPlayer(_current_player)) return;
 	_cur_roadtype = roadtype;
 
 	DeleteWindowById(WC_BUILD_TOOLBAR, 0);
-	Window *w = AllocateWindowDesc(&_build_road_desc);
+	Window *w = AllocateWindowDesc(roadtype == ROADTYPE_ROAD ? &_build_road_desc : &_build_tramway_desc);
 	if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);
 }
 
@@ -385,6 +454,7 @@
 
 void ShowBuildRoadScenToolbar()
 {
+	_cur_roadtype = ROADTYPE_ROAD;
 	AllocateWindowDescFront(&_build_road_scen_desc, 0);
 }
 
@@ -435,6 +505,17 @@
 {   WIDGETS_END},
 };
 
+static const Widget _build_tram_depot_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   139,     0,    13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
+{      WWT_PANEL,   RESIZE_NONE,     7,     0,   139,    14,   121, 0x0,                             STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                             STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
+{   WIDGETS_END},
+};
+
 static const WindowDesc _build_road_depot_desc = {
 	WDP_AUTO, WDP_AUTO, 140, 122,
 	WC_BUILD_DEPOT, WC_BUILD_TOOLBAR,
@@ -443,15 +524,29 @@
 	BuildRoadDepotWndProc
 };
 
+static const WindowDesc _build_tram_depot_desc = {
+	WDP_AUTO, WDP_AUTO, 140, 122,
+	WC_BUILD_DEPOT, WC_BUILD_TOOLBAR,
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
+	_build_tram_depot_widgets,
+	BuildRoadDepotWndProc
+};
+
 static void ShowRoadDepotPicker()
 {
-	AllocateWindowDesc(&_build_road_depot_desc);
+	AllocateWindowDesc(_cur_roadtype == ROADTYPE_ROAD ? &_build_road_depot_desc : &_build_tram_depot_desc);
 }
 
 static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
 	case WE_CREATE:
+		/* Trams don't have non-drivethrough stations */
+		if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
+			_road_station_picker_orientation = DIAGDIR_END;
+		}
+		SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM, 3, 4, 5, 6, WIDGET_LIST_END);
+
 		LowerWindowWidget(w, _road_station_picker_orientation + 3);
 		LowerWindowWidget(w, _station_show_coverage + 9);
 		break;
@@ -472,15 +567,15 @@
 
 		image = (w->window_class == WC_BUS_STATION) ? GFX_BUS_BASE : GFX_TRUCK_BASE;
 
-		StationPickerDrawSprite(103, 35, RAILTYPE_BEGIN, image);
-		StationPickerDrawSprite(103, 85, RAILTYPE_BEGIN, image + 1);
-		StationPickerDrawSprite(35, 85, RAILTYPE_BEGIN, image + 2);
-		StationPickerDrawSprite(35, 35, RAILTYPE_BEGIN, image + 3);
+		StationPickerDrawSprite(103, 35, RAILTYPE_BEGIN, ROADTYPE_ROAD, image);
+		StationPickerDrawSprite(103, 85, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 1);
+		StationPickerDrawSprite(35, 85, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 2);
+		StationPickerDrawSprite(35, 35, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 3);
 
 		image = (w->window_class == WC_BUS_STATION) ? GFX_BUS_BASE_EXT : GFX_TRUCK_BASE_EXT;
 
-		StationPickerDrawSprite(171, 35, RAILTYPE_BEGIN, image);
-		StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, image + 1);
+		StationPickerDrawSprite(171, 35, RAILTYPE_BEGIN, _cur_roadtype, image);
+		StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, _cur_roadtype, image + 1);
 
 		DrawStationCoverageAreaText(2, 146,
 			((w->window_class == WC_BUS_STATION) ? (1 << CT_PASSENGERS) : ~(1 << CT_PASSENGERS)),
@@ -522,62 +617,38 @@
 	}
 }
 
-static const Widget _bus_station_picker_widgets[] = {
+static const Widget _rv_station_picker_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                         STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   206,     0,    13, STR_3042_BUS_STATION_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
+{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   206,     0,    13, STR_NULL,                         STR_018C_WINDOW_TITLE_DRAG_THIS},
 {      WWT_PANEL,   RESIZE_NONE,     7,     0,   206,    14,   176, 0x0,                              STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
-{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    17,    66, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
-{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    69,   118, 0x0,                              STR_3051_SELECT_BUS_STATION_ORIENTATION},
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                              STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                              STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                              STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                              STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    17,    66, 0x0,                              STR_NULL},
+{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    69,   118, 0x0,                              STR_NULL},
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    10,    69,   133,   144, STR_02DB_OFF,                     STR_3065_DON_T_HIGHLIGHT_COVERAGE},
 {    WWT_TEXTBTN,   RESIZE_NONE,    14,    70,   129,   133,   144, STR_02DA_ON,                      STR_3064_HIGHLIGHT_COVERAGE_AREA},
 {      WWT_LABEL,   RESIZE_NONE,     7,     0,   139,   120,   133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL},
 {   WIDGETS_END},
 };
 
-static const WindowDesc _bus_station_picker_desc = {
+static const WindowDesc _rv_station_picker_desc = {
 	WDP_AUTO, WDP_AUTO, 207, 177,
 	WC_BUS_STATION, WC_BUILD_TOOLBAR,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_bus_station_picker_widgets,
+	_rv_station_picker_widgets,
 	RoadStationPickerWndProc
 };
 
-static void ShowBusStationPicker()
+static void ShowRVStationPicker(RoadStop::Type rs)
 {
-	AllocateWindowDesc(&_bus_station_picker_desc);
-}
+	Window *w = AllocateWindowDesc(&_rv_station_picker_desc);
+	if (w == NULL) return;
 
-static const Widget _truck_station_picker_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                         STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   206,     0,    13, STR_3043_TRUCK_STATION_ORIENT,    STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   206,    14,   176, 0x0,                              STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    17,    66, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    69,   118, 0x0,                              STR_3052_SELECT_TRUCK_LOADING_BAY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    10,    69,   133,   144, STR_02DB_OFF,                     STR_3065_DON_T_HIGHLIGHT_COVERAGE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,    70,   129,   133,   144, STR_02DA_ON,                      STR_3064_HIGHLIGHT_COVERAGE_AREA},
-{      WWT_LABEL,   RESIZE_NONE,     7,     0,   139,   120,   133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL},
-{   WIDGETS_END},
-};
-
-static const WindowDesc _truck_station_picker_desc = {
-	WDP_AUTO, WDP_AUTO, 207, 177,
-	WC_TRUCK_STATION, WC_BUILD_TOOLBAR,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_truck_station_picker_widgets,
-	RoadStationPickerWndProc
-};
-
-static void ShowTruckStationPicker()
-{
-	AllocateWindowDesc(&_truck_station_picker_desc);
+	w->window_class = (rs == RoadStop::BUS) ? WC_BUS_STATION : WC_TRUCK_STATION;
+	w->widget[1].data = _road_type_infos[_cur_roadtype].picker_title[rs];
+	for (uint i = 3; i < 9; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
 }
 
 void InitializeRoadGui()
--- a/src/road_map.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/road_map.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -55,7 +55,7 @@
 		return TRACK_BIT_NONE;
 	}
 
-	r = GetTileTrackStatus(tile, TRANSPORT_ROAD);
+	r = GetTileTrackStatus(tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(rt));
 
 	return (TrackBits)(byte)(r | (r >> 8));
 }
--- a/src/road_map.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/road_map.h	Wed Jun 13 12:05:56 2007 +0000
@@ -89,14 +89,24 @@
 			switch (rt) {
 				default: NOT_REACHED();
 				case ROADTYPE_ROAD: return (Owner)GB( _m[t].m1, 0, 5);
-				case ROADTYPE_TRAM: return (Owner)GB( _m[t].m5, 0, 5);
+				case ROADTYPE_TRAM: {
+					/* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
+					 * to OWNER_TOWN makes it use one bit less */
+					Owner o = (Owner)GB( _m[t].m5, 0, 4);
+					return o == OWNER_TOWN ? OWNER_NONE : o;
+				}
 				case ROADTYPE_HWAY: return (Owner)GB(_me[t].m7, 0, 5);
 			}
 		case ROAD_TILE_CROSSING:
 			switch (rt) {
 				default: NOT_REACHED();
 				case ROADTYPE_ROAD: return (Owner)GB( _m[t].m4, 0, 5);
-				case ROADTYPE_TRAM: return (Owner)GB( _m[t].m5, 0, 5);
+				case ROADTYPE_TRAM: {
+					/* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
+					 * to OWNER_TOWN makes it use one bit less */
+					Owner o = (Owner)GB( _m[t].m5, 0, 4);
+					return o == OWNER_TOWN ? OWNER_NONE : o;
+				}
 				case ROADTYPE_HWAY: return (Owner)GB(_me[t].m7, 0, 5);
 			}
 		case ROAD_TILE_DEPOT: return GetTileOwner(t);
@@ -113,7 +123,7 @@
 			switch (rt) {
 				default: NOT_REACHED();
 				case ROADTYPE_ROAD: SB( _m[t].m1, 0, 5, o); break;
-				case ROADTYPE_TRAM: SB( _m[t].m5, 0, 5, o); break;
+				case ROADTYPE_TRAM: SB( _m[t].m5, 0, 4, o == OWNER_NONE ? OWNER_TOWN : o); break;
 				case ROADTYPE_HWAY: SB(_me[t].m7, 0, 5, o); break;
 			}
 			break;
@@ -121,7 +131,9 @@
 			switch (rt) {
 				default: NOT_REACHED();
 				case ROADTYPE_ROAD: SB( _m[t].m4, 0, 5, o); break;
-				case ROADTYPE_TRAM: SB( _m[t].m5, 0, 5, o); break;
+				/* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
+				 * to OWNER_TOWN makes it use one bit less */
+				case ROADTYPE_TRAM: SB( _m[t].m5, 0, 4, o == OWNER_NONE ? OWNER_TOWN : o); break;
 				case ROADTYPE_HWAY: SB(_me[t].m7, 0, 5, o); break;
 			}
 			break;
@@ -129,6 +141,39 @@
 	}
 }
 
+/** Which directions are disallowed ? */
+enum DisallowedRoadDirections {
+	DRD_NONE,       ///< None of the directions are disallowed
+	DRD_SOUTHBOUND, ///< All southbound traffic is disallowed
+	DRD_NORTHBOUND, ///< All northbound traffic is disallowed
+	DRD_BOTH,       ///< All directions are disallowed
+	DRD_END
+};
+DECLARE_ENUM_AS_BIT_SET(DisallowedRoadDirections);
+
+/**
+ * Gets the disallowed directions
+ * @param t the tile to get the directions from
+ * @return the disallowed directions
+ */
+static inline DisallowedRoadDirections GetDisallowedRoadDirections(TileIndex t)
+{
+	assert(GetRoadTileType(t) == ROAD_TILE_NORMAL);
+	return (DisallowedRoadDirections)GB(_m[t].m5, 4, 2);
+}
+
+/**
+ * Sets the disallowed directions
+ * @param t   the tile to set the directions for
+ * @param drd the disallowed directions
+ */
+static inline void SetDisallowedRoadDirections(TileIndex t, DisallowedRoadDirections drd)
+{
+	assert(GetRoadTileType(t) == ROAD_TILE_NORMAL);
+	assert(drd < DRD_END);
+	SB(_m[t].m5, 4, 2, drd);
+}
+
 static inline Axis GetCrossingRoadAxis(TileIndex t)
 {
 	assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
@@ -267,7 +312,8 @@
 	_m[t].m2 = town;
 	_m[t].m3 = 0;
 	_m[t].m4 = (HASBIT(rot, ROADTYPE_TRAM) ? bits : 0) << 4 | (HASBIT(rot, ROADTYPE_ROAD) ? bits : 0);
-	_m[t].m5 = ROAD_TILE_NORMAL << 6 | tram;
+	_m[t].m5 = ROAD_TILE_NORMAL << 6;
+	SetRoadOwner(t, ROADTYPE_TRAM, tram);
 	SB(_m[t].m6, 2, 4, HASBIT(rot, ROADTYPE_HWAY) ? bits : 0);
 	_me[t].m7 = rot << 5 | hway;
 }
@@ -280,7 +326,8 @@
 	_m[t].m2 = town;
 	_m[t].m3 = rat;
 	_m[t].m4 = roaddir << 6 | road;
-	_m[t].m5 = ROAD_TILE_CROSSING << 6 | tram;
+	_m[t].m5 = ROAD_TILE_CROSSING << 6;
+	SetRoadOwner(t, ROADTYPE_TRAM, tram);
 	SB(_m[t].m6, 2, 4, 0);
 	_me[t].m7 = rot << 5 | hway;
 }
--- a/src/roadveh.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/roadveh.h	Wed Jun 13 12:05:56 2007 +0000
@@ -8,6 +8,42 @@
 #include "vehicle.h"
 
 
+enum RoadVehicleSubType {
+	RVST_FRONT,
+	RVST_ARTIC_PART,
+};
+
+static inline bool IsRoadVehFront(const Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	return v->subtype == RVST_FRONT;
+}
+
+static inline void SetRoadVehFront(Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	v->subtype = RVST_FRONT;
+}
+
+static inline bool IsRoadVehArticPart(const Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	return v->subtype == RVST_ARTIC_PART;
+}
+
+static inline void SetRoadVehArticPart(Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	v->subtype = RVST_ARTIC_PART;
+}
+
+static inline bool RoadVehHasArticPart(const Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	return v->next != NULL && IsRoadVehArticPart(v->next);
+}
+
+
 static inline bool IsRoadVehInDepot(const Vehicle* v)
 {
 	assert(v->type == VEH_ROAD);
@@ -43,6 +79,12 @@
 	void UpdateDeltaXY(Direction direction);
 	ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_ROADVEH_INC : EXPENSES_ROADVEH_RUN; }
 	WindowClass GetVehicleListWindowClass() const { return WC_ROADVEH_LIST; }
+	bool IsPrimaryVehicle() const { return IsRoadVehFront(this); }
+	bool HasFront() const { return true; }
 };
 
+byte GetRoadVehLength(const Vehicle *v);
+
+void RoadVehUpdateCache(Vehicle *v);
+
 #endif /* ROADVEH_H */
--- a/src/roadveh_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/roadveh_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -27,6 +27,7 @@
 #include "tunnel_map.h"
 #include "bridge_map.h"
 #include "vehicle_gui.h"
+#include "articulated_vehicles.h"
 #include "newgrf_callbacks.h"
 #include "newgrf_engine.h"
 #include "newgrf_text.h"
@@ -89,7 +90,7 @@
 	int image;
 
 	if (is_custom_sprite(img)) {
-		image = GetCustomVehicleSprite(v, direction);
+		image = GetCustomVehicleSprite(v, (Direction)(direction + 4 * IS_CUSTOM_SECONDHEAD_SPRITE(img)));
 		if (image != 0) return image;
 		img = orig_road_vehicle_info[v->engine_type - ROAD_ENGINES_INDEX].image_index;
 	}
@@ -120,6 +121,35 @@
 	return ((_eco->GetPrice(CEconomy::ROADVEH_BASE) >> 3) * GetEngineProperty(engine_type, 0x11, RoadVehInfo(engine_type)->base_cost)) >> 5;
 }
 
+byte GetRoadVehLength(const Vehicle *v)
+{
+	byte length = 8;
+
+	uint16 veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
+	if (veh_len != CALLBACK_FAILED) {
+		length -= clamp(veh_len, 0, 7);
+	}
+
+	return length;
+}
+
+void RoadVehUpdateCache(Vehicle *v)
+{
+	assert(v->type == VEH_ROAD);
+	assert(IsRoadVehFront(v));
+
+	for (Vehicle *u = v; u != NULL; u = u->next) {
+		/* Update the v->first cache. */
+		if (u->first == NULL) u->first = v;
+
+		/* Update the 'first engine' */
+		u->u.road.first_engine = (v == u) ? INVALID_ENGINE : v->engine_type;
+
+		/* Update the length of the vehicle. */
+		u->u.road.cached_veh_length = GetRoadVehLength(u);
+	}
+}
+
 /** Build a road vehicle.
  * @param tile tile of depot where road vehicle is built
  * @param flags operation to perform
@@ -145,8 +175,19 @@
 	if (!IsTileDepotType(tile, TRANSPORT_ROAD)) return CMD_ERROR;
 	if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
 
-	v = AllocateVehicle();
-	if (v == NULL) return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
+	if (HASBIT(GetRoadTypes(tile), ROADTYPE_TRAM) != HASBIT(EngInfo(p1)->misc_flags, EF_ROAD_TRAM)) return_cmd_error(STR_DEPOT_WRONG_DEPOT_TYPE);
+
+	uint num_vehicles = 1 + CountArticulatedParts(p1);
+
+	/* Allow for the front and up to 10 articulated parts. */
+	Vehicle *vl[11];
+	memset(&vl, 0, sizeof(vl));
+
+	if (!AllocateVehicles(vl, num_vehicles)) {
+		return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
+	}
+
+	v = vl[0];
 
 	/* find the first free roadveh id */
 	unit_num = HASBIT(p2, 0) ? 0 : GetFreeUnitNumber(VEH_ROAD);
@@ -160,7 +201,7 @@
 		const RoadVehicleInfo *rvi = RoadVehInfo(p1);
 
 		v->unitnumber = unit_num;
-		v->direction = INVALID_DIR;
+		v->direction = DiagDirToDir(GetRoadDepotDirection(tile));
 		v->owner = _current_player;
 
 		v->tile = tile;
@@ -207,12 +248,20 @@
 		v = new (v) RoadVehicle();
 		v->cur_image = 0xC15;
 		v->random_bits = VehicleRandomBits();
+		SetRoadVehFront(v);
+
+		v->u.road.roadtype = HASBIT(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
+		v->u.road.compatible_roadtypes = RoadTypeToRoadTypes(v->u.road.roadtype);
+		v->u.road.cached_veh_length = GetRoadVehLength(v);
 
 		v->vehicle_flags = 0;
 		if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE);
 
+		v->first = NULL;
 		v->cargo_cap = GetVehicleProperty(v, 0x0F, rvi->capacity);
 
+		AddArticulatedParts(vl, VEH_ROAD);
+
 		VehiclePositionChanged(v);
 
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
@@ -258,6 +307,7 @@
 		}
 
 		v->vehstatus ^= VS_STOPPED;
+		v->cur_speed = 0;
 		InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 	}
@@ -279,6 +329,18 @@
 	DEBUG(ms, 3, "Clearing slot at 0x%X", rs->xy);
 }
 
+static bool CheckRoadVehInDepotStopped(const Vehicle *v)
+{
+	TileIndex tile = v->tile;
+
+	if (!IsTileDepotType(tile, TRANSPORT_ROAD) || !(v->vehstatus & VS_STOPPED)) return false;
+
+	for (; v != NULL; v = v->next) {
+		if (v->u.road.state != RVSB_IN_DEPOT || v->tile != tile) return false;
+	}
+	return true;
+}
+
 /** Sell a road vehicle.
  * @param tile unused
  * @param flags operation to perform
@@ -297,7 +359,7 @@
 
 	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 
-	if (!IsRoadVehInDepotStopped(v)) {
+	if (!CheckRoadVehInDepotStopped(v)) {
 		return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
 	}
 
@@ -353,7 +415,7 @@
 		/* See where we are now */
 		Trackdir trackdir = GetVehicleTrackdir(v);
 
-		ftd = NPFRouteToDepotBreadthFirst(v->tile, trackdir, TRANSPORT_ROAD, v->owner, INVALID_RAILTYPE);
+		ftd = NPFRouteToDepotBreadthFirst(v->tile, trackdir, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE);
 		if (ftd.best_bird_dist == 0) {
 			return GetDepotByTile(ftd.node.tile); /* Target found */
 		} else {
@@ -368,7 +430,7 @@
 
 		/* search in all directions */
 		for (DiagDirection i = DIAGDIR_BEGIN; i != DIAGDIR_END; i++) {
-			FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, i, EnumRoadSignalFindDepot, NULL, &rfdd);
+			FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, v->u.road.compatible_roadtypes, i, EnumRoadSignalFindDepot, NULL, &rfdd);
 		}
 
 		if (rfdd.best_length == (uint)-1) return NULL;
@@ -469,6 +531,7 @@
 	if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
 
 	if (v->vehstatus & VS_STOPPED ||
+			v->u.road.roadtype == ROADTYPE_TRAM ||
 			v->u.road.crashed_ctr != 0 ||
 			v->breakdown_ctr != 0 ||
 			v->u.road.overtaking != 0 ||
@@ -478,6 +541,8 @@
 		return CMD_ERROR;
 	}
 
+	if (IsTileType(v->tile, MP_STREET) && GetRoadTileType(v->tile) == ROAD_TILE_NORMAL && GetDisallowedRoadDirections(v->tile) != DRD_NONE) return CMD_ERROR;
+
 	if (IsTunnelTile(v->tile) && DirToDiagDir(v->direction) == GetTunnelDirection(v->tile)) return CMD_ERROR;
 	if (IsBridgeTile(v->tile) && DirToDiagDir(v->direction) == GetBridgeRampDirection(v->tile)) return CMD_ERROR;
 
@@ -527,8 +592,12 @@
 	rs->FreeBay(HASBIT(v->u.road.state, RVS_USING_SECOND_BAY));
 }
 
-static void RoadVehDelete(Vehicle *v)
+static void DeleteLastRoadVeh(Vehicle *v)
 {
+	Vehicle *u = v;
+	for (; v->next != NULL; v = v->next) u = v;
+	u->next = NULL;
+
 	DeleteWindowById(WC_VEHICLE_VIEW, v->index);
 
 	RebuildVehicleLists();
@@ -565,13 +634,15 @@
 		DIRDIFF_45LEFT, DIRDIFF_SAME, DIRDIFF_SAME, DIRDIFF_45RIGHT
 	};
 
-	uint32 r = Random();
+	do {
+		uint32 r = Random();
 
-	v->direction = ChangeDir(v->direction, delta[r & 3]);
-	BeginVehicleMove(v);
-	v->UpdateDeltaXY(v->direction);
-	v->cur_image = GetRoadVehImage(v, v->direction);
-	SetRoadVehPosition(v, v->x_pos, v->y_pos);
+		v->direction = ChangeDir(v->direction, delta[r & 3]);
+		BeginVehicleMove(v);
+		v->UpdateDeltaXY(v->direction);
+		v->cur_image = GetRoadVehImage(v, v->direction);
+		SetRoadVehPosition(v, v->x_pos, v->y_pos);
+	} while ((v = v->next) != NULL);
 }
 
 static void RoadVehIsCrashed(Vehicle *v)
@@ -581,8 +652,8 @@
 		CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE);
 	} else if (v->u.road.crashed_ctr <= 45) {
 		if ((v->tick_counter & 7) == 0) RoadVehSetRandomDirection(v);
-	} else if (v->u.road.crashed_ctr >= 2220) {
-		RoadVehDelete(v);
+	} else if (v->u.road.crashed_ctr >= 2220 && !(v->tick_counter & 0x1F)) {
+		DeleteLastRoadVeh(v);
 	}
 }
 
@@ -600,18 +671,22 @@
 
 static void RoadVehCrash(Vehicle *v)
 {
-	uint16 pass;
+	uint16 pass = 1;
 
 	v->u.road.crashed_ctr++;
-	v->vehstatus |= VS_CRASHED;
+
+	for (Vehicle *u = v; u != NULL; u = u->next) {
+		if (IsCargoInClass(u->cargo_type, CC_PASSENGERS)) pass += u->cargo_count;
+
+		u->vehstatus |= VS_CRASHED;
+
+		MarkAllViewportsDirty(u->left_coord, u->top_coord, u->right_coord + 1, u->bottom_coord + 1);
+	}
+
 	ClearSlot(v);
 
 	InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
 
-	pass = 1;
-	if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo_count;
-	v->cargo_count = 0;
-
 	SetDParam(0, pass);
 	AddNewsItem(
 		(pass == 1) ?
@@ -627,16 +702,18 @@
 
 static void RoadVehCheckTrainCrash(Vehicle *v)
 {
-	TileIndex tile;
-
-	if (v->u.road.state == RVSB_WORMHOLE) return;
+	for (Vehicle *u = v; u != NULL; u = u->next) {
+		if (u->u.road.state == RVSB_WORMHOLE) continue;
 
-	tile = v->tile;
+		TileIndex tile = u->tile;
 
-	if (!IsLevelCrossingTile(tile)) return;
+		if (!IsLevelCrossingTile(tile)) continue;
 
-	if (VehicleFromPos(tile, v, EnumCheckRoadVehCrashTrain) != NULL)
-		RoadVehCrash(v);
+		if (VehicleFromPos(tile, u, EnumCheckRoadVehCrashTrain) != NULL) {
+			RoadVehCrash(v);
+			return;
+		}
+	}
 }
 
 static void HandleBrokenRoadVeh(Vehicle *v)
@@ -722,11 +799,14 @@
 				IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK
 			);
 
+			TileIndex dest = INVALID_TILE;
 			if (rs != NULL) {
-				TileIndex dest = rs->xy;
-				uint mindist = DistanceManhattan(v->tile, rs->xy);
+				uint mindist = MAX_UVALUE(uint);
 
-				for (rs = rs->next; rs != NULL; rs = rs->next) {
+				for (; rs != NULL; rs = rs->next) {
+					/* The vehicle cannot go to this roadstop */
+					if ((GetRoadTypes(rs->xy) & v->u.road.compatible_roadtypes) == ROADTYPES_NONE) continue;
+
 					uint dist = DistanceManhattan(v->tile, rs->xy);
 
 					if (dist < mindist) {
@@ -734,7 +814,10 @@
 						dest = rs->xy;
 					}
 				}
-				v->dest_tile = dest;
+			}
+
+			if (dest != INVALID_TILE) {
+					v->dest_tile = dest;
 			} else {
 				/* There is no stop left at the station, so don't even TRY to go there */
 				v->cur_order_index++;
@@ -783,11 +866,11 @@
 	short y_diff = v->y_pos - rvf->y;
 
 	return
-		rvf->veh != v &&
 		v->type == VEH_ROAD &&
 		!IsRoadVehInDepot(v) &&
 		myabs(v->z_pos - rvf->veh->z_pos) < 6 &&
 		v->direction == rvf->dir &&
+		GetFirstVehicleInChain(rvf->veh) != GetFirstVehicleInChain(v) &&
 		(dist_x[v->direction] >= 0 || (x_diff > dist_x[v->direction] && x_diff <= 0)) &&
 		(dist_x[v->direction] <= 0 || (x_diff < dist_x[v->direction] && x_diff >= 0)) &&
 		(dist_y[v->direction] >= 0 || (y_diff > dist_y[v->direction] && y_diff <= 0)) &&
@@ -833,7 +916,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(
-				STR_902F_CITIZENS_CELEBRATE_FIRST,
+				v->u.road.roadtype == ROADTYPE_ROAD ? STR_902F_CITIZENS_CELEBRATE_FIRST : STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM,
 				flags,
 				v->index,
 				0);
@@ -847,7 +930,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(
-				STR_9030_CITIZENS_CELEBRATE_FIRST,
+				v->u.road.roadtype == ROADTYPE_ROAD ? STR_9030_CITIZENS_CELEBRATE_FIRST : STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM,
 				flags,
 				v->index,
 				0
@@ -933,7 +1016,7 @@
 {
 	uint32 bits;
 
-	bits = GetTileTrackStatus(od->tile, TRANSPORT_ROAD) & 0x3F;
+	bits = GetTileTrackStatus(od->tile, TRANSPORT_ROAD, od->v->u.road.compatible_roadtypes) & 0x3F;
 
 	if (!(od->tilebits & bits) || (bits & 0x3C) || (bits & 0x3F3F0000))
 		return true;
@@ -954,12 +1037,18 @@
 		return;
 	}
 
+	/* Trams can't overtake other trams */
+	if (v->u.road.roadtype == ROADTYPE_TRAM) return;
+
+	/* For now, articulated road vehicles can't overtake anything. */
+	if (RoadVehHasArticPart(v)) return;
+
 	if (v->direction != u->direction || !(v->direction & 1)) return;
 
 	/* Check if vehicle is in a road stop, depot, tunnel or bridge or not on a straight road */
 	if (v->u.road.state >= RVSB_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->u.road.state & RVSB_TRACKDIR_MASK))) return;
 
-	tt = GetTileTrackStatus(v->tile, TRANSPORT_ROAD) & 0x3F;
+	tt = GetTileTrackStatus(v->tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes) & 0x3F;
 	if ((tt & 3) == 0) return;
 	if ((tt & 0x3C) != 0) return;
 
@@ -1030,11 +1119,11 @@
 	return false;
 }
 
-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, uint sub_type, Owner owner, RailTypeMask railtypes)
 {
 
 	void* perf = NpfBeginInterval();
-	NPFFoundTargetData ret = NPFRouteToStationOrTile(tile, trackdir, target, type, owner, railtypes);
+	NPFFoundTargetData ret = NPFRouteToStationOrTile(tile, trackdir, target, type, sub_type, owner, railtypes);
 	int t = NpfEndInterval(perf);
 	DEBUG(yapf, 4, "[NPFR] %d us - %d rounds - %d open - %d closed -- ", t, 0, _aystar_stats_open_size, _aystar_stats_closed_size);
 	return ret;
@@ -1056,12 +1145,12 @@
 	FindRoadToChooseData frd;
 	Trackdir best_track;
 
-	uint32 r  = GetTileTrackStatus(tile, TRANSPORT_ROAD);
+	uint32 r  = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
 	TrackdirBits signal    = (TrackdirBits)GB(r, 16, 16);
 	TrackdirBits trackdirs = (TrackdirBits)GB(r,  0, 16);
 
 	if (IsTileType(tile, MP_STREET)) {
-		if (GetRoadTileType(tile) == ROAD_TILE_DEPOT && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir)) {
+		if (GetRoadTileType(tile) == ROAD_TILE_DEPOT && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir || (GetRoadTypes(tile) & v->u.road.compatible_roadtypes) == 0)) {
 			/* Road depot owned by another player or with the wrong orientation */
 			trackdirs = TRACKDIR_BIT_NONE;
 		}
@@ -1131,7 +1220,7 @@
 		trackdir = DiagdirToDiagTrackdir(enterdir);
 		//debug("Finding path. Enterdir: %d, Trackdir: %d", enterdir, trackdir);
 
-		ftd = PerfNPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_ROAD, v->owner, INVALID_RAILTYPE);
+		ftd = PerfNPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE);
 		if (ftd.best_trackdir == INVALID_TRACKDIR) {
 			/* We are already at our target. Just do something
 			 * @todo: maybe display error?
@@ -1181,7 +1270,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, _road_pf_directions[i], EnumRoadTrackFindDist, NULL, &frd);
+				FollowTrack(tile, 0x2000 | 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;
@@ -1214,7 +1303,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->owner, INVALID_RAILTYPE).best_path_dist;
+		dist = NPFRouteToStationOrTile(v->tile, trackdir, &fstd, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE).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;
@@ -1249,7 +1338,95 @@
 	15, 15, 11, 11
 };
 
-static void RoadVehController(Vehicle *v)
+static bool RoadVehLeaveDepot(Vehicle *v, bool first)
+{
+	/* Don't leave if not all the wagons are in the depot. */
+	for (const Vehicle *u = v; u != NULL; u = u->next) {
+		if (u->u.road.state != RVSB_IN_DEPOT || u->tile != v->tile) return false;
+	}
+
+	DiagDirection dir = GetRoadDepotDirection(v->tile);
+	v->direction = DiagDirToDir(dir);
+
+	Trackdir tdir = _roadveh_depot_exit_trackdir[dir];
+	const RoadDriveEntry *rdp = _road_drive_data[v->u.road.roadtype][(_opt.road_side << RVS_DRIVE_SIDE) + tdir];
+
+	int x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF);
+	int y = TileY(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].y & 0xF);
+
+	if (first) {
+		if (RoadVehFindCloseTo(v, x, y, v->direction) != NULL) return true;
+
+		VehicleServiceInDepot(v);
+
+		StartRoadVehSound(v);
+
+		/* Vehicle is about to leave a depot */
+		v->cur_speed = 0;
+	}
+
+	BeginVehicleMove(v);
+
+	v->vehstatus &= ~VS_HIDDEN;
+	v->u.road.state = tdir;
+	v->u.road.frame = RVC_DEPOT_START_FRAME;
+
+	v->cur_image = GetRoadVehImage(v, v->direction);
+	v->UpdateDeltaXY(v->direction);
+	SetRoadVehPosition(v,x,y);
+
+	InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
+
+	return true;
+}
+
+static Trackdir FollowPreviousRoadVehicle(const Vehicle *v, const Vehicle *prev, TileIndex tile, DiagDirection entry_dir)
+{
+	if (prev->tile == v->tile) {
+		/* If the previous vehicle is on the same tile as this vehicle is
+		 * then it must have reversed. */
+		return _road_reverse_table[entry_dir];
+	}
+
+	byte prev_state = prev->u.road.state;
+	Trackdir dir;
+
+	if (prev_state == RVSB_WORMHOLE || prev_state == RVSB_IN_DEPOT) {
+		DiagDirection diag_dir = INVALID_DIAGDIR;
+
+		if (IsTunnelTile(tile)) {
+			diag_dir = GetTunnelDirection(tile);
+		} else if (IsBridgeTile(tile)) {
+			diag_dir = GetBridgeRampDirection(tile);
+		} else if (IsTileType(tile, MP_STREET) && GetRoadTileType(tile) == ROAD_TILE_DEPOT) {
+			diag_dir = ReverseDiagDir(GetRoadDepotDirection(tile));
+		}
+
+		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) {
+		dir = (Trackdir)prev_state;
+	} else {
+		return INVALID_TRACKDIR;
+	}
+
+	/* Do some sanity checking. */
+	static const RoadBits required_roadbits[] = {
+		ROAD_X,            ROAD_Y,            ROAD_NW | ROAD_NE, ROAD_SW | ROAD_SE,
+		ROAD_NW | ROAD_SW, ROAD_NE | ROAD_SE, ROAD_X,            ROAD_Y
+	};
+	RoadBits required = required_roadbits[dir & 0x07];
+
+	if ((required & GetAnyRoadBits(tile, v->u.road.roadtype)) == ROAD_NONE) {
+		dir = INVALID_TRACKDIR;
+	}
+
+	return dir;
+}
+
+static bool IndividualRoadVehicleController(Vehicle *v, const Vehicle *prev)
 {
 	Direction new_dir;
 	Direction old_dir;
@@ -1257,74 +1434,6 @@
 	int x,y;
 	uint32 r;
 
-	/* decrease counters */
-	v->tick_counter++;
-	if (v->u.road.reverse_ctr != 0) v->u.road.reverse_ctr--;
-
-	/* handle crashed */
-	if (v->u.road.crashed_ctr != 0) {
-		RoadVehIsCrashed(v);
-		return;
-	}
-
-	RoadVehCheckTrainCrash(v);
-
-	/* road vehicle has broken down? */
-	if (v->breakdown_ctr != 0) {
-		if (v->breakdown_ctr <= 2) {
-			HandleBrokenRoadVeh(v);
-			return;
-		}
-		v->breakdown_ctr--;
-	}
-
-	if (v->vehstatus & VS_STOPPED) return;
-
-	ProcessRoadVehOrder(v);
-	v->HandleLoading();
-
-	if (v->current_order.type == OT_LOADING) return;
-
-	if (IsRoadVehInDepot(v)) {
-		/* Vehicle is about to leave a depot */
-		DiagDirection dir;
-		const RoadDriveEntry* rdp;
-		Trackdir tdir;
-
-		v->cur_speed = 0;
-
-		dir = GetRoadDepotDirection(v->tile);
-		v->direction = DiagDirToDir(dir);
-
-		tdir = _roadveh_depot_exit_trackdir[dir];
-		rdp = _road_drive_data[(_opt.road_side << RVS_DRIVE_SIDE) + tdir];
-
-		x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF);
-		y = TileY(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].y & 0xF);
-
-		if (RoadVehFindCloseTo(v, x, y, v->direction) != NULL) return;
-
-		VehicleServiceInDepot(v);
-
-		StartRoadVehSound(v);
-
-		BeginVehicleMove(v);
-
-		v->vehstatus &= ~VS_HIDDEN;
-		v->u.road.state = tdir;
-		v->u.road.frame = RVC_DEPOT_START_FRAME;
-
-		v->cur_image = GetRoadVehImage(v, v->direction);
-		v->UpdateDeltaXY(v->direction);
-		SetRoadVehPosition(v,x,y);
-
-		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
-		return;
-	}
-
-	/* Check if vehicle needs to proceed, return if it doesn't */
-	if (!RoadVehAccelerate(v)) return;
-
 	if (v->u.road.overtaking != 0)  {
 		if (++v->u.road.overtaking_ctr >= 35)
 			/* If overtaking just aborts at a random moment, we can have a out-of-bound problem,
@@ -1335,6 +1444,11 @@
 			}
 	}
 
+	/* If this vehicle is in a depot and we've reached this point it must be
+	 * one of the articulated parts. It will stay in the depot until activated
+	 * by the previous vehicle in the chain when it gets to the right place. */
+	if (IsRoadVehInDepot(v)) return true;
+
 	/* Save old vehicle position to use at end of move to set viewport area dirty */
 	BeginVehicleMove(v);
 
@@ -1345,7 +1459,7 @@
 		const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
 		if (u != NULL && u->cur_speed < v->cur_speed) {
 			v->cur_speed = u->cur_speed;
-			return;
+			return false;
 		}
 
 		if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && HASBIT(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
@@ -1353,55 +1467,82 @@
 			v->cur_image = GetRoadVehImage(v, v->direction);
 			v->UpdateDeltaXY(v->direction);
 			SetRoadVehPosition(v,gp.x,gp.y);
-			return;
+			return true;
 		}
 
 		v->x_pos = gp.x;
 		v->y_pos = gp.y;
 		VehiclePositionChanged(v);
 		if (!(v->vehstatus & VS_HIDDEN)) EndVehicleMove(v);
-		return;
+		return true;
 	}
 
 	/* Get move position data for next frame.
 	 * For a drive-through road stop use 'straight road' move data.
 	 * In this case v->u.road.state is masked to give the road stop entry direction. */
-	rd = _road_drive_data[(
+	rd = _road_drive_data[v->u.road.roadtype][(
 		(HASBIT(v->u.road.state, RVS_IN_DT_ROAD_STOP) ? v->u.road.state & RVSB_ROAD_STOP_TRACKDIR_MASK : v->u.road.state) +
 		(_opt.road_side << RVS_DRIVE_SIDE)) ^ v->u.road.overtaking][v->u.road.frame + 1];
 
 	if (rd.x & RDE_NEXT_TILE) {
 		TileIndex tile = v->tile + TileOffsByDiagDir(rd.x & 3);
-		Trackdir dir = RoadFindPathToDest(v, tile, (DiagDirection)(rd.x & 3));
+		Trackdir dir;
 		uint32 r;
 		Direction newdir;
 		const RoadDriveEntry *rdp;
 
+		if (IsRoadVehFront(v)) {
+			/* If this is the front engine, look for the right path. */
+			dir = RoadFindPathToDest(v, tile, (DiagDirection)(rd.x & 3));
+		} else {
+			dir = FollowPreviousRoadVehicle(v, prev, tile, (DiagDirection)(rd.x & 3));
+		}
+
 		if (dir == INVALID_TRACKDIR) {
+			if (!IsRoadVehFront(v)) error("!Disconnecting road vehicle.");
 			v->cur_speed = 0;
-			return;
+			return false;
 		}
 
 again:
 		if (IsReversingRoadTrackdir(dir)) {
 			/* Turning around */
-			tile = v->tile;
+			if (v->u.road.roadtype == ROADTYPE_TRAM) {
+				RoadBits needed; // The road bits the tram needs to be able to turn around
+				switch (dir) {
+					default: NOT_REACHED();
+					case TRACKDIR_RVREV_NE: needed = ROAD_SW; break;
+					case TRACKDIR_RVREV_SE: needed = ROAD_NW; break;
+					case TRACKDIR_RVREV_SW: needed = ROAD_NE; break;
+					case TRACKDIR_RVREV_NW: needed = ROAD_SE; break;
+				}
+				if (!IsTileType(tile, MP_STREET) || GetRoadTileType(tile) != ROAD_TILE_NORMAL || HasRoadWorks(tile) || (needed & GetRoadBits(tile, ROADTYPE_TRAM)) == ROAD_NONE) {
+					/* The tram cannot turn here */
+					v->cur_speed = 0;
+					return false;
+				}
+			} else if (IsTileType(v->tile, MP_STREET) && GetRoadTileType(v->tile) == ROAD_TILE_NORMAL && GetDisallowedRoadDirections(v->tile) != DRD_NONE) {
+				v->cur_speed = 0;
+				return false;
+			} else {
+				tile = v->tile;
+			}
 		}
 
 		/* Get position data for first frame on the new tile */
-		rdp = _road_drive_data[(dir + (_opt.road_side << RVS_DRIVE_SIDE)) ^ v->u.road.overtaking];
+		rdp = _road_drive_data[v->u.road.roadtype][(dir + (_opt.road_side << RVS_DRIVE_SIDE)) ^ v->u.road.overtaking];
 
 		x = TileX(tile) * TILE_SIZE + rdp[RVC_DEFAULT_START_FRAME].x;
 		y = TileY(tile) * TILE_SIZE + rdp[RVC_DEFAULT_START_FRAME].y;
 
 		newdir = RoadVehGetSlidingDirection(v, x, y);
-		if (RoadVehFindCloseTo(v, x, y, newdir) != NULL) return;
+		if (IsRoadVehFront(v) && RoadVehFindCloseTo(v, x, y, newdir) != NULL) return false;
 
 		r = VehicleEnterTile(v, tile, x, y);
 		if (HASBIT(r, VETS_CANNOT_ENTER)) {
 			if (!IsTileType(tile, MP_TUNNELBRIDGE)) {
 				v->cur_speed = 0;
-				return;
+				return false;
 			}
 			/* Try an about turn to re-enter the previous tile */
 			dir = _road_reverse_table[rd.x & 3];
@@ -1413,7 +1554,7 @@
 				/* New direction is trying to turn vehicle around.
 				 * We can't turn at the exit of a road stop so wait.*/
 				v->cur_speed = 0;
-				return;
+				return false;
 			}
 			if (IsRoadStop(v->tile)) {
 				RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile));
@@ -1441,7 +1582,7 @@
 		v->cur_image = GetRoadVehImage(v, newdir);
 		v->UpdateDeltaXY(v->direction);
 		RoadZPosAffectSpeed(v, SetRoadVehPosition(v, x, y));
-		return;
+		return true;
 	}
 
 	if (rd.x & RDE_TURNED) {
@@ -1453,21 +1594,21 @@
 
 		if (dir == INVALID_TRACKDIR) {
 			v->cur_speed = 0;
-			return;
+			return false;
 		}
 
-		rdp = _road_drive_data[(_opt.road_side << RVS_DRIVE_SIDE) + dir];
+		rdp = _road_drive_data[v->u.road.roadtype][(_opt.road_side << RVS_DRIVE_SIDE) + dir];
 
 		x = TileX(v->tile) * TILE_SIZE + rdp[RVC_TURN_AROUND_START_FRAME].x;
 		y = TileY(v->tile) * TILE_SIZE + rdp[RVC_TURN_AROUND_START_FRAME].y;
 
 		newdir = RoadVehGetSlidingDirection(v, x, y);
-		if (RoadVehFindCloseTo(v, x, y, newdir) != NULL) return;
+		if (IsRoadVehFront(v) && RoadVehFindCloseTo(v, x, y, newdir) != NULL) return false;
 
 		r = VehicleEnterTile(v, v->tile, x, y);
 		if (HASBIT(r, VETS_CANNOT_ENTER)) {
 			v->cur_speed = 0;
-			return;
+			return false;
 		}
 
 		v->u.road.state = dir;
@@ -1481,7 +1622,18 @@
 		v->cur_image = GetRoadVehImage(v, newdir);
 		v->UpdateDeltaXY(v->direction);
 		RoadZPosAffectSpeed(v, SetRoadVehPosition(v, x, y));
-		return;
+		return true;
+	}
+
+	/* This vehicle is not in a wormhole and it hasn't entered a new tile. If
+	 * it's on a depot tile, check if it's time to activate the next vehicle in
+	 * the chain yet. */
+	if (v->next != NULL &&
+			IsTileType(v->tile, MP_STREET) && GetRoadTileType(v->tile) == ROAD_TILE_DEPOT) {
+
+		if (v->u.road.frame == v->u.road.cached_veh_length + RVC_DEPOT_START_FRAME) {
+			RoadVehLeaveDepot(v->next, false);
+		}
 	}
 
 	/* Calculate new position for the vehicle */
@@ -1490,15 +1642,16 @@
 
 	new_dir = RoadVehGetSlidingDirection(v, x, y);
 
-	if (!IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) {
+	if (IsRoadVehFront(v) && !IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) {
 		/* Vehicle is not in a road stop.
 		 * Check for another vehicle to overtake */
 		Vehicle* u = RoadVehFindCloseTo(v, x, y, new_dir);
 
 		if (u != NULL) {
+			v->cur_speed = u->cur_speed;
 			/* There is a vehicle in front overtake it if possible */
 			if (v->u.road.overtaking == 0) RoadVehCheckOvertake(v, u);
-			return;
+			return false;
 		}
 	}
 
@@ -1514,7 +1667,7 @@
 			/* Note, return here means that the frame counter is not incremented
 			 * for vehicles changing direction in a road stop. This causes frames to
 			 * be repeated. (XXX) Is this intended? */
-			return;
+			return true;
 		}
 	}
 
@@ -1523,12 +1676,12 @@
 	 * and it's the correct type of stop (bus or truck) and the frame equals the stop frame...
 	 * (the station test and stop type test ensure that other vehicles, using the road stop as
 	 * a through route, do not stop) */
-	if ((IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END) &&
+	if (IsRoadVehFront(v) && ((IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END) &&
 			_road_veh_data_1[v->u.road.state - RVSB_IN_ROAD_STOP + (_opt.road_side << RVS_DRIVE_SIDE)] == v->u.road.frame) ||
 			(IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_DT_ROAD_STOP, RVSB_IN_DT_ROAD_STOP_END) &&
 			v->current_order.dest == GetStationIndex(v->tile) &&
 			GetRoadStopType(v->tile) == (IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK) &&
-			v->u.road.frame == RVC_DRIVE_THROUGH_STOP_FRAME)) {
+			v->u.road.frame == RVC_DRIVE_THROUGH_STOP_FRAME))) {
 
 		RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile));
 		Station* st = GetStationByTile(v->tile);
@@ -1558,7 +1711,7 @@
 
 						v->u.road.frame++;
 						RoadZPosAffectSpeed(v, SetRoadVehPosition(v, x, y));
-						return;
+						return true;
 					}
 				}
 			}
@@ -1570,7 +1723,7 @@
 			RoadVehArrivesAt(v, st);
 			v->BeginLoading();
 
-			return;
+			return false;
 		}
 
 		/* Vehicle is ready to leave a bay in a road stop */
@@ -1578,7 +1731,7 @@
 			if (rs->IsEntranceBusy()) {
 				/* Road stop entrance is busy, so wait as there is nowhere else to go */
 				v->cur_speed = 0;
-				return;
+				return false;
 			}
 			v->current_order.Free();
 			ClearSlot(v);
@@ -1621,7 +1774,7 @@
 	r = VehicleEnterTile(v, v->tile, x, y);
 	if (HASBIT(r, VETS_CANNOT_ENTER)) {
 		v->cur_speed = 0;
-		return;
+		return false;
 	}
 
 	/* Move to next frame unless vehicle arrived at a stop position
@@ -1631,6 +1784,47 @@
 	v->cur_image = GetRoadVehImage(v, v->direction);
 	v->UpdateDeltaXY(v->direction);
 	RoadZPosAffectSpeed(v, SetRoadVehPosition(v, x, y));
+	return true;
+}
+
+static void RoadVehController(Vehicle *v)
+{
+	/* decrease counters */
+	v->tick_counter++;
+	if (v->u.road.reverse_ctr != 0) v->u.road.reverse_ctr--;
+
+	/* handle crashed */
+	if (v->u.road.crashed_ctr != 0) {
+		RoadVehIsCrashed(v);
+		return;
+	}
+
+	RoadVehCheckTrainCrash(v);
+
+	/* road vehicle has broken down? */
+	if (v->breakdown_ctr != 0) {
+		if (v->breakdown_ctr <= 2) {
+			HandleBrokenRoadVeh(v);
+			return;
+		}
+		v->breakdown_ctr--;
+	}
+
+	if (v->vehstatus & VS_STOPPED) return;
+
+	ProcessRoadVehOrder(v);
+	v->HandleLoading();
+
+	if (v->current_order.type == OT_LOADING) return;
+
+	if (IsRoadVehInDepot(v) && RoadVehLeaveDepot(v, true)) return;
+
+	/* Check if vehicle needs to proceed, return if it doesn't */
+	if (!RoadVehAccelerate(v)) return;
+
+	for (Vehicle *prev = NULL; v != NULL; prev = v, v = v->next) {
+		if (!IndividualRoadVehicleController(v, prev)) break;
+	}
 }
 
 static void AgeRoadVehCargo(Vehicle *v)
@@ -1642,7 +1836,8 @@
 void RoadVeh_Tick(Vehicle *v)
 {
 	AgeRoadVehCargo(v);
-	RoadVehController(v);
+
+	if (IsRoadVehFront(v)) RoadVehController(v);
 }
 
 static void CheckIfRoadVehNeedsService(Vehicle *v)
@@ -1700,6 +1895,8 @@
 {
 	int32 cost;
 
+	if (!IsRoadVehFront(v)) return;
+
 	if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
 	if (v->u.road.blocked_ctr == 0) CheckVehicleBreakdown(v);
 
@@ -1824,7 +2021,7 @@
 	v = GetVehicle(p1);
 
 	if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
-	if (!IsRoadVehInDepotStopped(v)) return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
+	if (!CheckRoadVehInDepotStopped(v)) return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
 
 	if (new_cid >= NUM_CARGO || !CanRefitTo(v->engine_type, new_cid)) return CMD_ERROR;
 
--- a/src/roadveh_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/roadveh_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -11,6 +11,7 @@
 #include "table/strings.h"
 #include "window.h"
 #include "gui.h"
+#include "strings.h"
 #include "vehicle.h"
 #include "viewport.h"
 #include "command.h"
@@ -18,22 +19,61 @@
 #include "vehicle_gui.h"
 #include "newgrf_engine.h"
 
-void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection)
+static inline int RoadVehLengthToPixels(int length)
 {
-	SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
-	DrawSprite(GetRoadVehImage(v, DIR_W), pal, x + 14, y + 6);
+	return (length * 28) / 8;
+}
 
-	if (v->index == selection) {
-		DrawFrameRect(x - 1, y - 1, x + 28, y + 12, 15, FR_BORDERONLY);
-	}
+void DrawRoadVehImage(const Vehicle *v, int x, int y, int count, VehicleID selection)
+{
+	int dx = 0;
+
+	/* Road vehicle lengths are measured in eighths of the standard length, so
+	 * count is the number of standard vehicles that should be drawn. If it is
+	 * 0, we draw enough vehicles for 10 standard vehicle lengths. */
+	int max_length = (count == 0) ? 80 : count * 8;
+
+	do {
+		int length = v->u.road.cached_veh_length;
+
+		if (dx + length > 0 && dx <= max_length) {
+			SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
+			DrawSprite(GetRoadVehImage(v, DIR_W), pal, x + 14 + RoadVehLengthToPixels(dx), y + 6);
+
+			if (v->index == selection) {
+				DrawFrameRect(x - 1, y - 1, x + 28, y + 12, 15, FR_BORDERONLY);
+			}
+		}
+
+		dx += length;
+		v = v->next;
+	} while (v != NULL && dx < max_length);
 }
 
 static void RoadVehDetailsWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
+	case WE_CREATE: {
+		const Vehicle *v = GetVehicle(w->window_number);
+
+		if (!RoadVehHasArticPart(v)) break;
+
+		/* Draw the text under the vehicle instead of next to it, minus the
+		 * height already allocated for the cargo of the first vehicle. */
+		uint height_extension = 15 - 11;
+
+		/* Add space for the cargo amount for each part. */
+		do {
+			height_extension += 11;
+		} while ((v = v->next) != NULL);
+
+		ResizeWindow(w, 0, height_extension);
+	} break;
+
 	case WE_PAINT: {
 		const Vehicle *v = GetVehicle(w->window_number);
 		StringID str;
+		uint y_offset = RoadVehHasArticPart(v) ? 15 :0;
 
 		SetWindowWidgetDisabledState(w, 2, v->owner != _local_player);
 		/* disable service-scroller when interval is set to disabled */
@@ -76,37 +116,81 @@
 			DrawString(2, 45, STR_9010_RELIABILITY_BREAKDOWNS, 0);
 		}
 
-		/* Draw service interval text */
-		{
-			SetDParam(0, v->service_interval);
-			SetDParam(1, v->date_of_last_service);
-			DrawString(13, 102, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
-		}
-
-		DrawRoadVehImage(v, 3, 57, INVALID_VEHICLE);
+		DrawRoadVehImage(v, 3, 57, 0, INVALID_VEHICLE);
 
 		SetDParam(0, GetCustomEngineName(v->engine_type));
 		SetDParam(1, v->build_year);
 		SetDParam(2, v->value);
-		DrawString(34, 57, STR_9011_BUILT_VALUE, 0);
-
-		SetDParam(0, v->cargo_type);
-		SetDParam(1, v->cargo_cap);
-		DrawString(34, 67, STR_9012_CAPACITY, 0);
+		DrawString(34, 57 + y_offset, STR_9011_BUILT_VALUE, 0);
 
-		str = STR_8812_EMPTY;
-		if (v->cargo_count != 0) {
+		if (RoadVehHasArticPart(v)) {
+			AcceptedCargo max_cargo;
+			char capacity[512];
+
+			memset(max_cargo, 0, sizeof(max_cargo));
+
+			for (const Vehicle *u = v; u != NULL; u = u->next) {
+				max_cargo[u->cargo_type] += u->cargo_cap;
+			}
+
+			GetString(capacity, STR_ARTICULATED_RV_CAPACITY, lastof(capacity));
+
+			bool first = true;
+			for (CargoID i = 0; i < NUM_CARGO; i++) {
+				if (max_cargo[i] > 0) {
+					char buffer[128];
+
+					SetDParam(0, i);
+					SetDParam(1, max_cargo[i]);
+					GetString(buffer, STR_BARE_CARGO, lastof(buffer));
+
+					if (!first) strecat(capacity, ", ", lastof(capacity));
+					strecat(capacity, buffer, lastof(capacity));
+				}
+			}
+
+			SetDParamStr(0, capacity);
+			DrawStringTruncated(34, 67 + y_offset, STR_JUST_STRING, 0, w->width - 34);
+
+			for (const Vehicle *u = v; u != NULL; u = u->next) {
+				str = STR_8812_EMPTY;
+				if (u->cargo_count != 0) {
+					SetDParam(0, u->cargo_type);
+					SetDParam(1, u->cargo_count);
+					SetDParam(2, u->cargo_source);
+					str = STR_8813_FROM;
+				}
+				DrawString(34, 78 + y_offset, str, 0);
+
+				y_offset += 11;
+			}
+
+			y_offset -= 11;
+		} else {
 			SetDParam(0, v->cargo_type);
-			SetDParam(1, v->cargo_count);
-			SetDParam(2, v->cargo_source);
-			str = STR_8813_FROM;
+			SetDParam(1, v->cargo_cap);
+			DrawString(34, 67 + y_offset, STR_9012_CAPACITY, 0);
+
+			str = STR_8812_EMPTY;
+			if (v->cargo_count != 0) {
+				SetDParam(0, v->cargo_type);
+				SetDParam(1, v->cargo_count);
+				SetDParam(2, v->cargo_source);
+				str = STR_8813_FROM;
+			}
+			DrawString(34, 78 + y_offset, str, 0);
 		}
-		DrawString(34, 78, str, 0);
 
 		/* Draw Transfer credits text */
 		SetDParam(0, v->cargo_feeder_share);
-		DrawString(34, 89, STR_FEEDER_CARGO_VALUE, 0);
+		DrawString(34, 90 + y_offset, STR_FEEDER_CARGO_VALUE, 0);
 
+		/* Draw service interval text */
+		{
+			SetDParam(0, v->service_interval);
+			SetDParam(1, v->date_of_last_service);
+			DrawString(13, 102 + y_offset, _patches.servint_ispercent ? STR_SERVICING_INTERVAL_PERCENT : STR_883C_SERVICING_INTERVAL_DAYS, 0);
+		}
 	} break;
 
 	case WE_CLICK: {
@@ -151,10 +235,10 @@
 {    WWT_CAPTION,   RESIZE_NONE,    14,    11,   339,     0,    13, STR_900C_DETAILS, STR_018C_WINDOW_TITLE_DRAG_THIS},
 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   340,   379,     0,    13, STR_01AA_NAME,    STR_902E_NAME_ROAD_VEHICLE},
 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   379,    14,    55, 0x0,              STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,    14,     0,   379,    56,   100, 0x0,              STR_NULL},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    10,   101,   106, STR_0188,         STR_884D_INCREASE_SERVICING_INTERVAL},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    10,   107,   112, STR_0189,         STR_884E_DECREASE_SERVICING_INTERVAL},
-{      WWT_PANEL,   RESIZE_NONE,    14,    11,   379,   101,   112, 0x0,              STR_NULL},
+{      WWT_PANEL,   RESIZE_BOTTOM,  14,     0,   379,    56,   100, 0x0,              STR_NULL},
+{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    10,   101,   106, STR_0188,         STR_884D_INCREASE_SERVICING_INTERVAL},
+{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,    10,   107,   112, STR_0189,         STR_884E_DECREASE_SERVICING_INTERVAL},
+{      WWT_PANEL,   RESIZE_TB,      14,    11,   379,   101,   112, 0x0,              STR_NULL},
 {   WIDGETS_END},
 };
 
@@ -192,7 +276,7 @@
 		bool is_localplayer = v->owner == _local_player;
 
 		SetWindowWidgetDisabledState(w,  7, !is_localplayer);
-		SetWindowWidgetDisabledState(w,  8, !is_localplayer);
+		SetWindowWidgetDisabledState(w,  8, !is_localplayer || v->u.road.roadtype == ROADTYPE_TRAM);
 		SetWindowWidgetDisabledState(w, 11, !is_localplayer);
 		/* Disable refit button if vehicle not refittable */
 		SetWindowWidgetDisabledState(w, 12, !is_localplayer ||
--- a/src/saveload.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/saveload.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -29,7 +29,7 @@
 #include <setjmp.h>
 #include <list>
 
-extern const uint16 SAVEGAME_VERSION = 62;
+extern const uint16 SAVEGAME_VERSION = 65;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
--- a/src/saveload.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/saveload.h	Wed Jun 13 12:05:56 2007 +0000
@@ -202,7 +202,7 @@
 #define SLE_CONDNULL(length, from, to) SLE_CONDARR(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_CONFIG_NO, length, from, to)
 
 /* Translate values ingame to different values in the savegame and vv */
-#define SLE_WRITEBYTE(base, variable, game_value, file_value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, game_value, file_value)
+#define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value)
 /* Load common code and put it into each struct (currently only for vehicles */
 #define SLE_INCLUDE(base, variable, include_index) SLE_GENERAL(SL_INCLUDE, base, variable, 0, 0, include_index, 0)
 
--- a/src/settings.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/settings.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -46,6 +46,7 @@
 #include "gfx.h"
 #include "fontcache.h"
 #endif
+#include "spritecache.h"
 
 /** The patch values that are used for new games and/or modified in config file */
 Patches _patches_newgame;
@@ -1238,7 +1239,7 @@
 #endif /* WIN32 */
 
 static const SettingDescGlobVarList _misc_settings[] = {
-	SDTG_MMANY("display_opt",     SLE_UINT8, S, 0, _display_opt,       (DO_SHOW_TOWN_NAMES|DO_SHOW_STATION_NAMES|DO_SHOW_SIGNS|DO_FULL_ANIMATION|DO_FULL_DETAIL|DO_WAYPOINTS), "SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS", STR_NULL, NULL),
+	SDTG_MMANY("display_opt",     SLE_UINT8, S, 0, _display_opt,       (1 << DO_SHOW_TOWN_NAMES | 1 << DO_SHOW_STATION_NAMES | 1 << DO_SHOW_SIGNS | 1 << DO_FULL_ANIMATION | 1 << DO_FULL_DETAIL | 1 << DO_WAYPOINTS), "SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION||FULL_DETAIL|WAYPOINTS", STR_NULL, NULL),
 	 SDTG_BOOL("news_ticker_sound",          S, 0, _news_ticker_sound,     true,    STR_NULL, NULL),
 	 SDTG_BOOL("fullscreen",                 S, 0, _fullscreen,           false,    STR_NULL, NULL),
 	  SDTG_STR("videodriver",      SLE_STRB,C|S,0, _ini_videodriver,       NULL,    STR_NULL, NULL),
@@ -1257,6 +1258,7 @@
 	  SDTG_VAR("medium_size",      SLE_UINT, S, 0, _freetype.medium_size, 10, 0, 72, 0, STR_NULL, NULL),
 	  SDTG_VAR("large_size",       SLE_UINT, S, 0, _freetype.large_size,  16, 0, 72, 0, STR_NULL, NULL),
 #endif
+	  SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size,     4, 1, 64, 0, STR_NULL, NULL),
 	  SDTG_END()
 };
 
@@ -1284,7 +1286,7 @@
 	  SDTG_VAR("max_spectators",       SLE_UINT8, S, 0, _network_game_info.spectators_max, 10, 0, 10,   0, STR_NULL, NULL),
 	  SDTG_VAR("restart_game_year",    SLE_INT32, S,D0, _network_restart_game_year,    0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
 	  SDTG_VAR("min_players",          SLE_UINT8, S, 0, _network_min_players,               0, 0, 10,   0, STR_NULL, NULL),
-	SDTG_OMANY("server_lang",          SLE_UINT8, S, 0, _network_game_info.server_lang,     0, 3, "ANY|ENGLISH|GERMAN|FRENCH", 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_END()
 };
 #endif /* ENABLE_NETWORK */
@@ -1329,6 +1331,7 @@
 	SDT_BOOL(Patches, show_finances,                 S, 0,  true,        STR_CONFIG_PATCHES_SHOWFINANCES,          NULL),
 	SDT_BOOL(Patches, autoscroll,                    S, 0, false,        STR_CONFIG_PATCHES_AUTOSCROLL,            NULL),
 	SDT_BOOL(Patches, reverse_scroll,                S, 0, false,        STR_CONFIG_PATCHES_REVERSE_SCROLLING,     NULL),
+	SDT_BOOL(Patches, smooth_scroll,                 S, 0, false,        STR_CONFIG_PATCHES_SMOOTH_SCROLLING,      NULL),
 	SDT_BOOL(Patches, measure_tooltip,               S, 0, false,        STR_CONFIG_PATCHES_MEASURE_TOOLTIP,       NULL),
 	 SDT_VAR(Patches, errmsg_duration,    SLE_UINT8, S, 0,  5, 0, 20, 0, STR_CONFIG_PATCHES_ERRMSG_DURATION,       NULL),
 	 SDT_VAR(Patches, toolbar_pos,        SLE_UINT8, S,MS,  0, 0,  2, 0, STR_CONFIG_PATCHES_TOOLBAR_POS,           v_PositionMainToolbar),
@@ -1403,6 +1406,7 @@
 	SDT_BOOL(Patches, modified_catchment,      0, 0,  true,        STR_CONFIG_PATCHES_CATCHMENT,          NULL),
 	SDT_CONDBOOL(Patches, gradual_loading, 40, SL_MAX_VERSION, 0, 0,  true, STR_CONFIG_PATCHES_GRADUAL_LOADING,    NULL),
 	SDT_CONDBOOL(Patches, road_stop_on_town_road, 47, SL_MAX_VERSION, 0, 0, false, STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD, NULL),
+	SDT_CONDBOOL(Patches, adjacent_stations,      62, SL_MAX_VERSION, 0, 0, true,  STR_CONFIG_PATCHES_ADJACENT_STATIONS, NULL),
 
 	/***************************************************************************/
 	/* Economy section of the GUI-configure patches window */
--- a/src/settings_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/settings_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -66,6 +66,21 @@
 	return buf;
 }
 
+static StringID _town_names[SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 2] = {STR_NULL};
+
+void SortTownGeneratorNames()
+{
+	int nb_town_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1;
+	/* Init the strings */
+	if (_town_names[0] == STR_NULL) {
+		for (int i = 0; i < nb_town_names; i++) _town_names[i] = STR_TOWNNAME_ORIGINAL_ENGLISH + i;
+		_town_names[nb_town_names] = INVALID_STRING_ID;
+	}
+
+	/* Sort the strings */
+	qsort(&_town_names[0], nb_town_names, sizeof(StringID), &StringIDSorter);
+}
+
 static int GetCurRes()
 {
 	int i;
@@ -136,8 +151,14 @@
 			ShowDropDownMenu(w, _driveside_dropdown, _opt_ptr->road_side, 11, i, 0);
 		} return;
 		case 13: case 14: { /* Setup townname dropdown */
-			int i = _opt_ptr->town_name;
-			ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ORIGINAL_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, 14, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i), 0);
+			uint sel = 0;
+			for (uint i = 0; i < lengthof(_town_names) - 1; i++) {
+				if (_town_names[i] == STR_TOWNNAME_ORIGINAL_ENGLISH + _opt_ptr->town_name) {
+					sel = i;
+					break;
+				}
+			}
+			ShowDropDownMenu(w, _town_names, sel, 14, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << sel), 0);
 			return;
 		}
 		case 16: case 17: /* Setup autosave dropdown */
@@ -193,7 +214,7 @@
 			break;
 		case 14: /* Town names */
 			if (_game_mode == GM_MENU) {
-				_opt_ptr->town_name = e->we.dropdown.index;
+				_opt_ptr->town_name = _town_names[e->we.dropdown.index] - STR_TOWNNAME_ORIGINAL_ENGLISH;
 				InvalidateWindow(WC_GAME_OPTIONS, 0);
 			}
 			break;
@@ -587,6 +608,7 @@
 	"show_finances",
 	"autoscroll",
 	"reverse_scroll",
+	"smooth_scroll",
 	"errmsg_duration",
 	"toolbar_pos",
 	"measure_tooltip",
@@ -629,6 +651,7 @@
 	"modified_catchment",
 	"gradual_loading",
 	"road_stop_on_town_road",
+	"adjacent_stations",
 };
 
 static const char *_patches_economy[] = {
--- a/src/ship.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ship.h	Wed Jun 13 12:05:56 2007 +0000
@@ -45,6 +45,7 @@
 	ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_SHIP_INC : EXPENSES_SHIP_RUN; }
 	WindowClass GetVehicleListWindowClass() const { return WC_SHIPS_LIST; }
 	void PlayLeaveStationSound() const;
+	bool IsPrimaryVehicle() const { return true; }
 };
 
 #endif /* SHIP_H */
--- a/src/ship_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/ship_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -43,7 +43,7 @@
 
 static TrackBits GetTileShipTrackStatus(TileIndex tile)
 {
-	uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER);
+	uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
 	return TrackdirBitsToTrackBits((TrackdirBits)(TRACKDIR_BIT_MASK & (r | r >> 8)));
 }
 
@@ -114,7 +114,7 @@
 	if (_patches.new_pathfinding_all) {
 		NPFFoundTargetData ftd;
 		Trackdir trackdir = GetVehicleTrackdir(v);
-		ftd = NPFRouteToDepotTrialError(v->tile, trackdir, TRANSPORT_WATER, v->owner, INVALID_RAILTYPE);
+		ftd = NPFRouteToDepotTrialError(v->tile, trackdir, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPE);
 		if (ftd.best_bird_dist == 0) {
 			best_depot = GetDepotByTile(ftd.node.tile); /* Found target */
 		} else {
@@ -479,7 +479,7 @@
 		pfs.best_bird_dist = (uint)-1;
 		pfs.best_length = (uint)-1;
 
-		FollowTrack(tile, 0x3800 | TRANSPORT_WATER, (DiagDirection)_ship_search_directions[i][dir], (TPFEnumProc*)ShipTrackFollower, NULL, &pfs);
+		FollowTrack(tile, 0x3800 | TRANSPORT_WATER, 0, (DiagDirection)_ship_search_directions[i][dir], (TPFEnumProc*)ShipTrackFollower, NULL, &pfs);
 
 		if (best_track != INVALID_TRACK) {
 			if (pfs.best_bird_dist != 0) {
@@ -514,7 +514,7 @@
 {
 
 	void* perf = NpfBeginInterval();
-	NPFFoundTargetData ret = NPFRouteToStationOrTile(tile, trackdir, target, type, owner, railtypes);
+	NPFFoundTargetData ret = NPFRouteToStationOrTile(tile, trackdir, target, type, 0, owner, railtypes);
 	int t = NpfEndInterval(perf);
 	DEBUG(yapf, 4, "[NPFW] %d us - %d rounds - %d open - %d closed -- ", t, 0, _aystar_stats_open_size, _aystar_stats_closed_size);
 	return ret;
@@ -597,7 +597,7 @@
 
 static TrackBits GetAvailShipTracks(TileIndex tile, int dir)
 {
-	uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER);
+	uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
 	return (TrackBits)((r | r >> 8) & _ship_sometracks[dir]);
 }
 
--- a/src/signs.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/signs.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -64,11 +64,14 @@
  */
 static void MarkSignDirty(Sign *si)
 {
+	/* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
+		*  and there is no way for us to know which is the biggest. So make the
+		*  biggest area dirty, and we are safe for sure. */
 	MarkAllViewportsDirty(
 		si->sign.left - 6,
 		si->sign.top  - 3,
-		si->sign.left + ScaleByZoom(si->sign.width_1 + 12, _cur_dpi->zoom),
-		si->sign.top  + ScaleByZoom(12, _cur_dpi->zoom));
+		si->sign.left + ScaleByZoom(si->sign.width_1 + 12, ZOOM_LVL_MAX),
+		si->sign.top  + ScaleByZoom(12, ZOOM_LVL_MAX));
 }
 
 /**
--- a/src/smallmap_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/smallmap_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -146,7 +146,7 @@
 	/* Add each name */
 	for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) {
 		indsp = GetIndustrySpec(i);
-		if (HASBIT(indsp->climate_availability, _opt.landscape)) {
+		if (indsp->enabled) {
 			_legend_from_industries[j].legend = indsp->name;
 			_legend_from_industries[j].colour = indsp->map_colour;
 			_legend_from_industries[j].col_break = (j % 6) == 0;  // break is performed on the 7th item
@@ -430,7 +430,7 @@
 			break;
 
 		case MP_INDUSTRY:
-			bits = GetIndustryType(tile) == IT_FOREST ? MKCOLOR(0xD0D0D0D0) : MKCOLOR(0xB5B5B5B5);
+			bits = GetIndustrySpec(GetIndustryByTile(tile)->type)->check_proc == CHECK_FOREST ? MKCOLOR(0xD0D0D0D0) : MKCOLOR(0xB5B5B5B5);
 			break;
 
 		case MP_TREES:
@@ -806,8 +806,8 @@
 					_left_button_clicked = false;
 
 					pt = RemapCoords(WP(w,smallmap_d).scroll_x, WP(w,smallmap_d).scroll_y, 0);
-					WP(w2, vp_d).scrollpos_x = pt.x + ((_cursor.pos.x - w->left + 2) << 4) - (w2->viewport->virtual_width >> 1);
-					WP(w2, vp_d).scrollpos_y = pt.y + ((_cursor.pos.y - w->top - 16) << 4) - (w2->viewport->virtual_height >> 1);
+					WP(w2, vp_d).dest_scrollpos_x = pt.x + ((_cursor.pos.x - w->left + 2) << 4) - (w2->viewport->virtual_width >> 1);
+					WP(w2, vp_d).dest_scrollpos_y = pt.y + ((_cursor.pos.y - w->top - 16) << 4) - (w2->viewport->virtual_height >> 1);
 
 					SetWindowDirty(w);
 				} break;
@@ -986,8 +986,8 @@
 			int y = WP(w, vp_d).scrollpos_y;
 
 			/* set this view to same location. Based on the center, adjusting for zoom */
-			WP(w2, vp_d).scrollpos_x =  x - (w2->viewport->virtual_width -  w->viewport->virtual_width) / 2;
-			WP(w2, vp_d).scrollpos_y =  y - (w2->viewport->virtual_height - w->viewport->virtual_height) / 2;
+			WP(w2, vp_d).dest_scrollpos_x =  x - (w2->viewport->virtual_width -  w->viewport->virtual_width) / 2;
+			WP(w2, vp_d).dest_scrollpos_y =  y - (w2->viewport->virtual_height - w->viewport->virtual_height) / 2;
 		} break;
 
 		case 8: { /* inverse location button (move this view to same spot as main view) 'Copy Location' */
@@ -995,8 +995,8 @@
 			int x = WP(w2, const vp_d).scrollpos_x;
 			int y = WP(w2, const vp_d).scrollpos_y;
 
-			WP(w, vp_d).scrollpos_x =  x + (w2->viewport->virtual_width -  w->viewport->virtual_width) / 2;
-			WP(w, vp_d).scrollpos_y =  y + (w2->viewport->virtual_height - w->viewport->virtual_height) / 2;
+			WP(w, vp_d).dest_scrollpos_x =  x + (w2->viewport->virtual_width -  w->viewport->virtual_width) / 2;
+			WP(w, vp_d).dest_scrollpos_y =  y + (w2->viewport->virtual_height - w->viewport->virtual_height) / 2;
 		} break;
 		}
 		break;
@@ -1018,6 +1018,8 @@
 
 			WP(w, vp_d).scrollpos_x += ScaleByZoom(e->we.scroll.delta.x, vp->zoom);
 			WP(w, vp_d).scrollpos_y += ScaleByZoom(e->we.scroll.delta.y, vp->zoom);
+			WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x;
+			WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y;
 		} break;
 
 		case WE_MOUSEWHEEL:
@@ -1062,5 +1064,7 @@
 		y = WP(v, vp_d).scrollpos_y;
 		WP(w, vp_d).scrollpos_x = x + (v->viewport->virtual_width  - (294)) / 2;
 		WP(w, vp_d).scrollpos_y = y + (v->viewport->virtual_height - (214)) / 2;
+		WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x;
+		WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y;
 	}
 }
--- a/src/sound.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/sound.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -152,7 +152,7 @@
 }
 
 
-static const byte _vol_factor_by_zoom[] = {255, 190, 134, 87, 49};
+static const byte _vol_factor_by_zoom[] = {255, 190, 134, 87};
 assert_compile(lengthof(_vol_factor_by_zoom) == ZOOM_LVL_END);
 
 static const byte _sound_base_vol[] = {
--- a/src/spritecache.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/spritecache.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -11,10 +11,11 @@
 #include "table/sprites.h"
 #include "fileio.h"
 #include "helpers.hpp"
+#include "spriteloader/grf.hpp"
+#include "blitter/blitter.hpp"
 
-#ifndef SPRITE_CACHE_SIZE
-# define SPRITE_CACHE_SIZE 2*1024*1024
-#endif /* SPRITE_CACHE_SIZE */
+/* Default of 4MB spritecache */
+uint _sprite_cache_size = 4;
 
 
 struct SpriteCache {
@@ -115,12 +116,11 @@
 	return GetSpriteCache(id)->file_pos != 0;
 }
 
-static void* AllocSprite(size_t);
+void* AllocSprite(size_t);
 
 static void* ReadSprite(SpriteCache *sc, SpriteID id)
 {
-	uint num;
-	byte type;
+	uint32 file_pos = sc->file_pos;
 
 	DEBUG(sprite, 9, "Load sprite %d", id);
 
@@ -129,54 +129,33 @@
 
 		/* SPR_IMG_QUERY is a BIG FAT RED ? */
 		id = SPR_IMG_QUERY;
-		sc = GetSpriteCache(SPR_IMG_QUERY);
+		file_pos = GetSpriteCache(SPR_IMG_QUERY)->file_pos;
 	}
 
-	FioSeekToFile(sc->file_pos);
+	FioSeekToFile(file_pos);
 
-	num  = FioReadWord();
-	type = FioReadByte();
+	/* Read the size and type */
+	int num  = FioReadWord();
+	byte type = FioReadByte();
+	/* Type 0xFF indicates either a colormap or some other non-sprite info */
 	if (type == 0xFF) {
-		byte* dest = (byte*)AllocSprite(num);
+		byte *dest = (byte *)AllocSprite(num);
 
 		sc->ptr = dest;
 		FioReadBlock(dest, num);
 
 		return dest;
-	} else {
-		uint height = FioReadByte();
-		uint width  = FioReadWord();
-		Sprite* sprite;
-		byte* dest;
-
-		num = (type & 0x02) ? width * height : num - 8;
-		sprite = (Sprite*)AllocSprite(sizeof(*sprite) + num);
-		sc->ptr = sprite;
-		sprite->info   = type;
-		sprite->height = (id != 142) ? height : 10; // Compensate for a TTD bug
-		sprite->width  = width;
-		sprite->x_offs = FioReadWord();
-		sprite->y_offs = FioReadWord();
+	}
 
-		dest = sprite->data;
-		while (num > 0) {
-			int8 i = FioReadByte();
+	SpriteLoaderGrf sprite_loader;
+	SpriteLoader::Sprite sprite;
 
-			if (i >= 0) {
-				num -= i;
-				for (; i > 0; --i) *dest++ = FioReadByte();
-			} else {
-				const byte* rel = dest - (((i & 7) << 8) | FioReadByte());
+	if (!sprite_loader.LoadSprite(&sprite, 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);
 
-				i = -(i >> 3);
-				num -= i;
-
-				for (; i > 0; --i) *dest++ = *rel++;
-			}
-		}
-
-		return sprite;
-	}
+	return sc->ptr;
 }
 
 
@@ -347,7 +326,7 @@
 	}
 }
 
-static void* AllocSprite(size_t mem_req)
+void* AllocSprite(size_t mem_req)
 {
 	mem_req += sizeof(MemBlock);
 
@@ -408,10 +387,10 @@
 void GfxInitSpriteMem()
 {
 	/* initialize sprite cache heap */
-	if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(SPRITE_CACHE_SIZE);
+	if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(_sprite_cache_size * 1024 * 1024);
 
 	/* A big free block */
-	_spritecache_ptr->size = (SPRITE_CACHE_SIZE - sizeof(MemBlock)) | S_FREE_MASK;
+	_spritecache_ptr->size = ((_sprite_cache_size * 1024 * 1024) - sizeof(MemBlock)) | S_FREE_MASK;
 	/* Sentinel block (identified by size == 0) */
 	NextBlock(_spritecache_ptr)->size = 0;
 
--- a/src/spritecache.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/spritecache.h	Wed Jun 13 12:05:56 2007 +0000
@@ -6,7 +6,6 @@
 #define SPRITECACHE_H
 
 struct Sprite {
-	byte info;
 	byte height;
 	uint16 width;
 	int16 x_offs;
@@ -14,6 +13,8 @@
 	byte data[VARARRAY_SIZE];
 };
 
+extern uint _sprite_cache_size;
+
 const void *GetRawSprite(SpriteID sprite);
 bool SpriteExists(SpriteID sprite);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/grf.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,96 @@
+#include "../stdafx.h"
+#include "../gfx.h"
+#include "../fileio.h"
+#include "../debug.h"
+#include "grf.hpp"
+
+bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos)
+{
+	/* Open the right file and go to the correct position */
+	FioSeekToFile(file_pos);
+
+	/* Read the size and type */
+	int num = FioReadWord();
+	byte type = FioReadByte();
+
+	/* Type 0xFF indicates either a colormap or some other non-sprite info; we do not handle them here */
+	if (type == 0xFF) return false;
+
+	sprite->height = FioReadByte();
+	sprite->width  = FioReadWord();
+	sprite->x_offs = FioReadWord();
+	sprite->y_offs = FioReadWord();
+
+	/* 0x02 indicates it is a compressed sprite, so we can't rely on 'num' to be valid.
+	 *  In case it is uncompressed, the size is 'num' - 8 (header-size). */
+	num = (type & 0x02) ? sprite->width * sprite->height : num - 8;
+
+	/* XXX -- We should use a pre-located memory segment for this, malloc/free is pretty expensive */
+	byte *dest_orig = MallocT<byte>(num);
+	byte *dest = dest_orig;
+
+	/* Read the file, which has some kind of compression */
+	while (num > 0) {
+		int8 code = FioReadByte();
+
+		if (code >= 0) {
+			/* Plain bytes to read */
+			int size = (code == 0) ? 0x80 : code;
+			num -= size;
+			for (; size > 0; size--) {
+				*dest = FioReadByte();
+				dest++;
+			}
+		} else {
+			/* Copy bytes from earlier in the sprite */
+			const uint data_offset = ((code & 7) << 8) | FioReadByte();
+			int size = -(code >> 3);
+			num -= size;
+			for (; size > 0; size--) {
+				*dest = *(dest - data_offset);
+				dest++;
+			}
+		}
+	}
+
+	assert(num == 0);
+
+	sprite->data = CallocT<SpriteLoader::CommonPixel>(sprite->width * sprite->height);
+
+	/* When there are transparency pixels, this format has an other trick.. decode it */
+	if (type & 0x08) {
+		for (int y = 0; y < sprite->height; y++) {
+			bool last_item = false;
+			/* Look up in the header-table where the real data is stored for this row */
+			int offset = (dest_orig[y * 2 + 1] << 8) | dest_orig[y * 2];
+			/* Go to that row */
+			dest = &dest_orig[offset];
+
+			do {
+				SpriteLoader::CommonPixel *data;
+				/* Read the header:
+				 *  0 .. 14  - length
+				 *  15       - last_item
+				 *  16 .. 31 - transparency bytes */
+				last_item  = ((*dest) & 0x80) != 0;
+				int length =  (*dest++) & 0x7F;
+				int skip   =   *dest++;
+
+				data = &sprite->data[y * sprite->width + skip];
+
+				for (int x = 0; x < length; x++) {
+					data->m = *dest;
+					dest++;
+					data++;
+				}
+			} while (!last_item);
+		}
+	} else {
+		dest = dest_orig;
+		for (int i = 0; i < sprite->width * sprite->height; i++)
+			sprite->data[i].m = dest[i];
+	}
+
+	free(dest_orig);
+	return true;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/grf.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,18 @@
+/* $Id$ */
+
+/** @file grf.hpp */
+
+#ifndef SPRITELOADER_GRF_HPP
+#define SPRITELOADER_GRF_HPP
+
+#include "spriteloader.hpp"
+
+class SpriteLoaderGrf : public SpriteLoader {
+public:
+	/**
+	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
+	 */
+	bool LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos);
+};
+
+#endif /* SPRITELOADER_GRF_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/spriteloader.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -0,0 +1,34 @@
+/* $Id$ */
+
+/** @file spriteloader.hpp */
+
+#ifndef SPRITELOADER_HPP
+#define SPRITELOADER_HPP
+
+class SpriteLoader {
+public:
+	struct CommonPixel {
+		uint8 r;  ///< Red-channel
+		uint8 g;  ///< Green-channel
+		uint8 b;  ///< Blue-channel
+		uint8 a;  ///< Alpha-channel
+		uint8 m;  ///< Remap-channel
+	};
+
+	struct Sprite {
+		uint16 height;                   ///< Height of the sprite
+		uint16 width;                    ///< Width of the sprite
+		int16 x_offs;                    ///< The x-offset of where the sprite will be drawn
+		int16 y_offs;                    ///< The y-offset of where the sprite will be drawn
+		SpriteLoader::CommonPixel *data; ///< The sprite itself
+	};
+
+	/**
+	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
+	 */
+	virtual bool LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos) = 0;
+
+	virtual ~SpriteLoader() { }
+};
+
+#endif /* SPRITELOADER_HPP */
--- a/src/station.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/station.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -122,15 +122,18 @@
 	if (sign.width_1 != 0) {
 		InvalidateWindowWidget(WC_STATION_VIEW, index, 1);
 
+		/* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
+		 *  and there is no way for us to know which is the biggest. So make the
+		 *  biggest area dirty, and we are safe for sure. */
 		MarkAllViewportsDirty(
 			sign.left - 6,
 			sign.top,
-			sign.left + ScaleByZoom(sign.width_1 + 12, _cur_dpi->zoom),
-			sign.top + ScaleByZoom(12, _cur_dpi->zoom));
+			sign.left + ScaleByZoom(sign.width_1 + 12, ZOOM_LVL_MAX),
+			sign.top + ScaleByZoom(12, ZOOM_LVL_MAX));
 	}
 }
 
-void Station::MarkTilesDirty() const
+void Station::MarkTilesDirty(bool cargo_change) const
 {
 	TileIndex tile = train_tile;
 	int w, h;
@@ -138,6 +141,15 @@
 	/* XXX No station is recorded as 0, not INVALID_TILE... */
 	if (tile == 0) return;
 
+	/* cargo_change is set if we're refreshing the tiles due to cargo moving
+	 * around. */
+	if (cargo_change) {
+		/* Don't waste time updating if there are no custom station graphics
+		 * that might change. Even if there are custom graphics, they might
+		 * not change. Unfortunately we have no way of telling. */
+		if (this->num_specs == 0) return;
+	}
+
 	for (h = 0; h < trainst_h; h++) {
 		for (w = 0; w < trainst_w; w++) {
 			if (TileBelongsToRailStation(tile)) {
--- a/src/station.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/station.h	Wed Jun 13 12:05:56 2007 +0000
@@ -10,6 +10,7 @@
 #include "oldpool.h"
 #include "sprite.h"
 #include "tile.h"
+#include "road.h"
 #include "newgrf_station.h"
 #include <list>
 
@@ -181,7 +182,7 @@
 
 	void AddFacility(byte new_facility_bit, TileIndex facil_xy);
 	void MarkDirty() const;
-	void MarkTilesDirty() const;
+	void MarkTilesDirty(bool cargo_change) const;
 	bool TileBelongsToRailStation(TileIndex tile) const;
 	uint GetPlatformLength(TileIndex tile, DiagDirection dir) const;
 	uint GetPlatformLength(TileIndex tile) const;
@@ -271,7 +272,7 @@
 
 
 const DrawTileSprites *GetStationTileLayout(byte gfx);
-void StationPickerDrawSprite(int x, int y, RailType railtype, int image);
+void StationPickerDrawSprite(int x, int y, RailType railtype, RoadType roadtype, int image);
 
 RoadStop * GetRoadStopByTile(TileIndex tile, RoadStop::Type type);
 uint GetNumRoadStops(const Station* st, RoadStop::Type type);
--- a/src/station_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/station_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -30,6 +30,7 @@
 #include "sprite.h"
 #include "depot.h"
 #include "train.h"
+#include "roadveh.h"
 #include "water_map.h"
 #include "industry_map.h"
 #include "newgrf_callbacks.h"
@@ -615,7 +616,7 @@
 
 // Tries to clear the given area. Returns the cost in case of success.
 // Or an error code if it failed.
-int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station)
+int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true)
 {
 	int32 cost = 0;
 	int allowed_z = -1;
@@ -678,7 +679,7 @@
 					return_cmd_error(STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING);
 				}
 			}
-		} else {
+		} else if (check_clear) {
 			int32 ret = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 			if (CmdFailed(ret)) return ret;
 			cost += ret;
@@ -794,6 +795,7 @@
  * - p1 = (bit  0)    - orientation (Axis)
  * - p1 = (bit  8-15) - number of tracks
  * - p1 = (bit 16-23) - platform length
+ * - p1 = (bit 24)    - allow stations directly adjacent to other stations.
  * @param p2 various bitstuffed elements
  * - p2 = (bit  0- 3) - railtype (p2 & 0xF)
  * - p2 = (bit  8-15) - custom station class
@@ -838,9 +840,33 @@
 	if (CmdFailed(ret)) return ret;
 	int32 cost = ret + (numtracks * _eco->GetPrice(CEconomy::TRAIN_STATION_TRACK) + _eco->GetPrice(CEconomy::TRAIN_STATION_LENGTH)) * plat_len;
 
-	// Make sure there are no similar stations around us.
-	Station *st = GetStationAround(tile_org, w_org, h_org, est);
-	if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	Station *st = NULL;
+	bool check_surrounding = true;
+
+	if (_patches.adjacent_stations) {
+		if (est != INVALID_STATION) {
+			if (HASBIT(p1, 24)) {
+				/* You can't build an adjacent station over the top of one that
+				 * already exists. */
+				return_cmd_error(STR_MUST_REMOVE_RAILWAY_STATION_FIRST);
+			} else {
+				/* Extend the current station, and don't check whether it will
+				 * be near any other stations. */
+				st = GetStation(est);
+				check_surrounding = false;
+			}
+		} else {
+			/* There's no station here. Don't check the tiles surrounding this
+			 * one if the player wanted to build an adjacent station. */
+			if (HASBIT(p1, 24)) check_surrounding = false;
+		}
+	}
+
+	if (check_surrounding) {
+		// Make sure there are no similar stations around us.
+		st = GetStationAround(tile_org, w_org, h_org, est);
+		if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	}
 
 	// See if there is a deleted station close to us.
 	if (st == NULL) st = GetClosestStationFromTile(tile_org);
@@ -953,7 +979,7 @@
 			tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
 		} while (--numtracks);
 
-		st->MarkTilesDirty();
+		st->MarkTilesDirty(false);
 		UpdateStationVirtCoordDirty(st);
 		UpdateStationAcceptance(st, false);
 		RebuildStationLists();
@@ -1080,7 +1106,7 @@
 			// now we need to make the "spanned" area of the railway station smaller if we deleted something at the edges.
 			// we also need to adjust train_tile.
 			MakeRailwayStationAreaSmaller(st);
-			st->MarkTilesDirty();
+			st->MarkTilesDirty(false);
 			UpdateStationSignCoord(st);
 
 			// if we deleted the whole station, delete the train facility.
@@ -1215,6 +1241,7 @@
  * @param p2 bit 0: 0 for Bus stops, 1 for truck stops
  *           bit 1: 0 for normal, 1 for drive-through
  *           bit 2..4: the roadtypes
+ *           bit 5: allow stations directly adjacent to other stations.
  */
 int32 CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
@@ -1222,41 +1249,50 @@
 	bool is_drive_through = HASBIT(p2, 1);
 	bool build_over_road  = is_drive_through && IsTileType(tile, MP_STREET) && GetRoadTileType(tile) == ROAD_TILE_NORMAL;
 	bool town_owned_road  = build_over_road && IsTileOwner(tile, OWNER_TOWN);
-	Owner cur_owner = _current_player;
 	RoadTypes rts = (RoadTypes)GB(p2, 2, 3);
 
 	if (rts == ROADTYPES_NONE || HASBIT(rts, ROADTYPE_HWAY)) return CMD_ERROR;
 
+	/* Trams only have drive through stops */
+	if (!is_drive_through && HASBIT(rts, ROADTYPE_TRAM)) return CMD_ERROR;
+
 	/* Saveguard the parameters */
 	if (!IsValidDiagDirection((DiagDirection)p1)) return CMD_ERROR;
 	/* If it is a drive-through stop check for valid axis */
 	if (is_drive_through && !IsValidAxis((Axis)p1)) return CMD_ERROR;
 	/* Road bits in the wrong direction */
 	if (build_over_road && (GetAllRoadBits(tile) & ((Axis)p1 == AXIS_X ? ROAD_Y : ROAD_X)) != 0) return_cmd_error(STR_DRIVE_THROUGH_ERROR_DIRECTION);
+
+	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
+
+	if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) return CMD_ERROR;
+
+	int32 cost = 0;
+
 	/* Not allowed to build over this road */
 	if (build_over_road) {
 		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;
-		if (!IsTileOwner(tile, OWNER_TOWN) && !CheckOwnership(GetRoadOwner(tile, ROADTYPE_ROAD)) && !CheckOwnership(GetRoadOwner(tile, ROADTYPE_TRAM))) 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! */
-		if (rts != GetRoadTypes(tile) && rts != ROADTYPES_ROADTRAM) return CMD_ERROR;
+		rts |= cur_rts;
 	}
-
-	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
-
-	if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile))
-		return CMD_ERROR;
-
-	if (build_over_road) flags ^= DC_AUTO;
-
-	if (town_owned_road) _current_player = OWNER_TOWN;
-	int32 ret = CheckFlatLandBelow(tile, 1, 1, flags, is_drive_through ? 5 << p1 : 1 << p1, NULL);
-	_current_player = cur_owner;
-	if (CmdFailed(ret)) return ret;
-	int32 cost = build_over_road ? 0 : ret; // Don't add cost of clearing road when overbuilding
-
-	Station *st = GetStationAround(tile, 1, 1, INVALID_STATION);
-	if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	cost = CheckFlatLandBelow(tile, 1, 1, flags, is_drive_through ? 5 << p1 : 1 << p1, NULL, !build_over_road);
+	if (CmdFailed(cost)) return cost;
+
+	Station *st = NULL;
+
+	if (!_patches.adjacent_stations || !HASBIT(p2, 5)) {
+		st = GetStationAround(tile, 1, 1, INVALID_STATION);
+		if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	}
 
 	/* Find a station close to us */
 	if (st == NULL) st = GetClosestStationFromTile(tile);
@@ -1406,20 +1442,11 @@
 
 	/* If the stop was a drive-through stop replace the road */
 	if ((flags & DC_EXEC) && !CmdFailed(ret) && is_drive_through) {
-		uint index = 0;
-		Owner cur_owner = _current_player;
-
-		if (is_towns_road) {
-			index = ClosestTownFromTile(tile, (uint)-1)->index;
-			_current_player = OWNER_TOWN;
-		}
-		if (HASBIT(rts, ROADTYPE_ROAD)) {
-			DoCommand(tile, ROADTYPE_ROAD << 4 | road_bits, index, DC_EXEC, CMD_BUILD_ROAD);
-		}
-		if (HASBIT(rts, ROADTYPE_TRAM)) {
-			DoCommand(tile, ROADTYPE_TRAM << 4 | road_bits, index, DC_EXEC, CMD_BUILD_ROAD);
-		}
-		_current_player = cur_owner;
+		/* Rebuild the drive throuhg road stop. As a road stop can only be
+		 * removed by the owner of the roadstop, _current_player is the
+		 * owner of the road stop. */
+		MakeRoadNormal(tile, road_bits, rts, is_towns_road ? ClosestTownFromTile(tile, (uint)-1)->index : 0,
+				is_towns_road ? OWNER_TOWN : _current_player, _current_player, _current_player);
 	}
 
 	return ret;
@@ -1521,7 +1548,7 @@
  * @param tile tile where airport will be built
  * @param flags operation to perform
  * @param p1 airport type, @see airport.h
- * @param p2 unused
+ * @param p2 (bit 0) - allow airports directly adjacent to other airports.
  */
 int32 CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
@@ -1559,8 +1586,12 @@
 	if (CmdFailed(ret)) return ret;
 	int32 cost = ret;
 
-	Station *st = GetStationAround(tile, w, h, INVALID_STATION);
-	if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	Station *st = NULL;
+
+	if (!_patches.adjacent_stations || !HASBIT(p2, 0)) {
+		st = GetStationAround(tile, w, h, INVALID_STATION);
+		if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	}
 
 	/* Find a station close to us */
 	if (st == NULL) st = GetClosestStationFromTile(tile);
@@ -1805,7 +1836,7 @@
 /** Build a dock/haven.
  * @param tile tile where dock will be built
  * @param flags operation to perform
- * @param p1 unused
+ * @param p1 (bit 0) - allow docks directly adjacent to other docks.
  * @param p2 unused
  */
 int32 CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -1847,10 +1878,14 @@
 	}
 
 	/* middle */
-	Station *st = GetStationAround(
-		tile + ToTileIndexDiff(_dock_tileoffs_chkaround[direction]),
-		_dock_w_chk[direction], _dock_h_chk[direction], INVALID_STATION);
-	if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	Station *st = NULL;
+
+	if (!_patches.adjacent_stations || !HASBIT(p1, 0)) {
+		st = GetStationAround(
+				tile + ToTileIndexDiff(_dock_tileoffs_chkaround[direction]),
+				_dock_w_chk[direction], _dock_h_chk[direction], INVALID_STATION);
+		if (st == CHECK_STATIONS_ERR) return CMD_ERROR;
+	}
 
 	/* Find a station close to us */
 	if (st == NULL) st = GetClosestStationFromTile(tile);
@@ -1945,7 +1980,15 @@
 static void DrawTile_Station(TileInfo *ti)
 {
 	const DrawTileSprites *t = NULL;
-	RailType railtype = GetRailType(ti->tile);
+	RailType railtype;
+	RoadTypes roadtypes;
+	if (IsRailwayStation(ti->tile)) {
+		railtype = GetRailType(ti->tile);
+		roadtypes = ROADTYPES_NONE;
+	} else {
+		roadtypes = GetRoadTypes(ti->tile);
+		railtype = RAILTYPE_BEGIN;
+	}
 	const RailtypeInfo *rti = GetRailTypeInfo(railtype);
 	uint32 relocation = 0;
 	const Station *st = NULL;
@@ -2004,6 +2047,12 @@
 
 	if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
 
+	if (HASBIT(roadtypes, ROADTYPE_TRAM)) {
+		Axis axis = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? AXIS_X : AXIS_Y;
+		DrawGroundSprite((HASBIT(roadtypes, ROADTYPE_ROAD) ? SPR_TRAMWAY_OVERLAY : SPR_TRAMWAY_TRAM) + (axis ^ 1), PAL_NONE);
+		DrawTramCatenary(ti, axis == AXIS_X ? ROAD_X : ROAD_Y);
+	}
+
 	if (IsBuoyTile(ti->tile) && (ti->z != 0 || !IsTileOwner(ti->tile, OWNER_WATER))) DrawCanalWater(ti->tile);
 
 	const DrawTileSeqStruct *dtss;
@@ -2038,7 +2087,7 @@
 	}
 }
 
-void StationPickerDrawSprite(int x, int y, RailType railtype, int image)
+void StationPickerDrawSprite(int x, int y, RailType railtype, RoadType roadtype, int image)
 {
 	const RailtypeInfo *rti = GetRailTypeInfo(railtype);
 	SpriteID pal = PLAYER_SPRITE_COLOR(_local_player);
@@ -2047,6 +2096,10 @@
 	SpriteID img = t->ground_sprite;
 	DrawSprite(img + rti->total_offset, HASBIT(img, PALETTE_MODIFIER_COLOR) ? pal : PAL_NONE, x, y);
 
+	if (roadtype == ROADTYPE_TRAM) {
+		DrawSprite(SPR_TRAMWAY_TRAM + (t->ground_sprite == SPR_ROAD_PAVED_STRAIGHT_X ? 1 : 0), PAL_NONE, x, y);
+	}
+
 	const DrawTileSeqStruct *dtss;
 	foreach_draw_tile_seq(dtss, t->seq) {
 		Point pt = RemapCoords(dtss->delta_x, dtss->delta_y, dtss->delta_z);
@@ -2091,7 +2144,7 @@
 }
 
 
-static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	switch (mode) {
 		case TRANSPORT_RAIL:
@@ -2113,7 +2166,7 @@
 			break;
 
 		case TRANSPORT_ROAD:
-			if (IsRoadStopTile(tile)) {
+			if ((GetRoadTypes(tile) & sub_mode) != 0 && IsRoadStopTile(tile)) {
 				return AxisToTrackBits(DiagDirToAxis(GetRoadStopDir(tile))) * 0x101;
 			}
 			break;
@@ -2228,7 +2281,7 @@
 		}
 	} else if (v->type == VEH_ROAD) {
 		if (v->u.road.state < RVSB_IN_ROAD_STOP && !IsReversingRoadTrackdir((Trackdir)v->u.road.state) && v->u.road.frame == 0) {
-			if (IsRoadStop(tile)) {
+			if (IsRoadStop(tile) && IsRoadVehFront(v)) {
 				/* Attempt to allocate a parking bay in a road stop */
 				RoadStop *rs = GetRoadStopByTile(tile, GetRoadStopType(tile));
 
@@ -2432,7 +2485,7 @@
 	st->goods[type].enroute_from = st->index;
 	st->goods[type].enroute_from_xy = st->xy;
 	InvalidateWindow(WC_STATION_VIEW, st->index);
-	st->MarkTilesDirty();
+	st->MarkTilesDirty(true);
 }
 
 /** Rename a station
@@ -2701,8 +2754,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(STR_3047_MUST_DEMOLISH_TRUCK_STATION);
-			case STATION_BUS:     return_cmd_error(STR_3046_MUST_DEMOLISH_BUS_STATION);
+			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_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:
--- a/src/stdafx.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/stdafx.h	Wed Jun 13 12:05:56 2007 +0000
@@ -196,6 +196,7 @@
  * call to the same function and is not thread- or reentrancy-safe */
 #if !defined(STRGEN)
 # if defined(WIN32) || defined(WIN64)
+char *getcwd(char *buf, size_t size);
 #  include <tchar.h>
 /* XXX - WinCE without MSVCRT doesn't support wfopen, so it seems */
 #  if !defined(WINCE)
--- a/src/strings.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/strings.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -1101,6 +1101,9 @@
 	}
 }
 
+extern void SortNetworkLanguages();
+extern void SortTownGeneratorNames();
+
 bool ReadLanguagePack(int lang_index)
 {
 	int tot_count, i;
@@ -1156,6 +1159,8 @@
 
 	_dynlang.curr = lang_index;
 	SetCurrentGrfLangID(_langpack->isocode);
+	SortNetworkLanguages();
+	SortTownGeneratorNames();
 	return true;
 }
 
@@ -1191,6 +1196,18 @@
 	return strcmp(cmp1->file, cmp2->file);
 }
 
+int CDECL StringIDSorter(const void *a, const void *b)
+{
+	const StringID va = *(const StringID*)a;
+	const StringID vb = *(const StringID*)b;
+	char stra[512];
+	char strb[512];
+	GetString(stra, va, lastof(stra));
+	GetString(strb, vb, lastof(strb));
+
+	return strcmp(stra, strb);
+}
+
 /**
  * Checks whether the given language is already found.
  * @param langs    languages we've found so fa
--- a/src/strings.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/strings.h	Wed Jun 13 12:05:56 2007 +0000
@@ -16,4 +16,6 @@
 bool ReadLanguagePack(int index);
 void InitializeLanguagePacks();
 
+int CDECL StringIDSorter(const void *a, const void *b);
+
 #endif /* STRINGS_H */
--- a/src/table/ai_rail.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/ai_rail.h	Wed Jun 13 12:05:56 2007 +0000
@@ -567,8 +567,32 @@
 	{1, 0, {0, 0}}
 };
 
+static const AiDefaultBlockData _airportdata_ai_3[] = {
+	MKAIR(3, 0, 0),
+	{1, 0, {0, 0}},
+};
+
+static const AiDefaultBlockData _airportdata_ai_4[] = {
+	MKAIR(4, 0, 0),
+	{1, 0, {0, 0}},
+};
+
+static const AiDefaultBlockData _airportdata_ai_5[] = {
+	MKAIR(5, 0, 0),
+	{1, 0, {0, 0}},
+};
+
+static const AiDefaultBlockData _airportdata_ai_7[] = {
+	MKAIR(7, 0, 0),
+	{1, 0, {0, 0}}
+};
+
 static const AiDefaultBlockData * const _airport_default_block_data[] = {
+	_airportdata_ai_7, // intercontinental airport
+	_airportdata_ai_4, // international airport
+	_airportdata_ai_3, // metropolitan airport
 	_airportdata_ai_0, // city airport
+	_airportdata_ai_5, // commuter airport
 	_airportdata_ai_1, // country airport
 	NULL
 };
--- a/src/table/build_industry.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/build_industry.h	Wed Jun 13 12:05:56 2007 +0000
@@ -1133,10 +1133,9 @@
 
 #define MI(tbl, sndc, snd, d, 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), d, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m,            \
-	 {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, sndc, snd, 0, 0, 0, 0}
-
-static const IndustrySpec _industry_specs[] = {
+	 {tbl, lengthof(tbl), d, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m,            \
+	 {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
+	 sndc, snd, 0, 0, true, {0, 0, NULL, NULL, INVALID_INDUSTRYTYPE}}
 	/* Format:
 	   tile table                              count and sounds table
 	   cost multiplier                         appear chances(4ingame, 4random)  map colour
@@ -1147,8 +1146,9 @@
 	   industry behaviours
 	   industry name                           building text
 	   messages : Closure                      production up                      production down   */
+static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
 	MI(_tile_table_coal_mine,                  0, NULL,
-	   210,                                    2, 3, 0, 0,    8, 8, 0, 0,        215,
+	   1680,                                   2, 3, 0, 0,    8, 8, 0, 0,        215,
 	   IT_POWER_STATION,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_COAL,       15, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1158,7 +1158,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4836_NEW_COAL_SEAM_FOUND_AT,   STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_power_station,              0, NULL,
-	   30,                                     2, 2, 0, 0,    5, 5, 0, 0,        184,
+	   240,                                    2, 2, 0, 0,    5, 5, 0, 0,        184,
 	   IT_COAL_MINE,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_INVALID,     0, CT_INVALID,       0, 5,
 	   CT_COAL,        0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1168,7 +1168,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_sawmill,                    1, _sawmill_sounds,
-	   28,                                     2, 0, 0, 0,    5, 0, 0, 0,        194,
+	   224,                                    2, 0, 0, 0,    5, 0, 0, 0,        194,
 	   IT_FOREST,         IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_GOODS,       0, CT_INVALID,       0, 5,
 	   CT_WOOD,      256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1178,7 +1178,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_forest,                     0, NULL,
-	   200,                                    3, 4, 0, 0,    5, 5, 0, 0,         86,
+	   1600,                                   3, 4, 0, 0,    5, 5, 0, 0,         86,
 	   IT_SAWMILL,        IT_PAPER_MILL,       IT_INVALID,       CHECK_FOREST,
 	   CT_WOOD,       13, CT_INVALID,       0, 30,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1188,7 +1188,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_oil_refinery,               0, NULL,
-	   31,                                     2, 2, 2, 0,    4, 4, 4, 0,        191,
+	   244,                                    2, 2, 2, 0,    4, 4, 4, 0,        191,
 	   IT_OIL_RIG,        IT_INVALID,          IT_INVALID,       CHECK_REFINERY,
 	   CT_GOODS,       0, CT_INVALID,       0, 5,
 	   CT_OIL,       256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1198,7 +1198,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_oil_rig,                    0, NULL,
-	   240,                                    6, 0, 0, 0,    0, 0, 0, 0,        152,
+	   1920,                                   6, 0, 0, 0,    0, 0, 0, 0,        152,
 	   IT_OIL_REFINERY,   IT_INVALID,          IT_INVALID,       CHECK_OIL_RIG,
 	   CT_OIL,        15, CT_PASSENGERS,    2, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1208,7 +1208,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4837_NEW_OIL_RESERVES_FOUND,   STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_factory,                    1, _factory_sounds,
-	   26,                                     2, 0, 0, 0,    5, 0, 0, 0,        174,
+	   208,                                    2, 0, 0, 0,    5, 0, 0, 0,        174,
 	   IT_FARM,           IT_STEEL_MILL,       IT_INVALID,       CHECK_NOTHING,
 	   CT_GOODS,       0, CT_INVALID,       0, 5,
 	   CT_LIVESTOCK, 256, CT_GRAIN ,      256, CT_STEEL,    256,
@@ -1218,7 +1218,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_printing_works,             1, _factory_sounds,
-	   26,                                     0, 2, 0, 0,    0, 5, 0, 0,        174,
+	   208,                                    0, 2, 0, 0,    0, 5, 0, 0,        174,
 	   IT_PAPER_MILL,     IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_GOODS,       0, CT_INVALID,       0, 5,
 	   CT_PAPER,     256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1228,7 +1228,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_steel_mill,                 0, NULL,
-	   27,                                     2, 0, 0, 0,    5, 0, 0, 0,         10,
+	   215,                                    2, 0, 0, 0,    5, 0, 0, 0,         10,
 	   IT_IRON_MINE,      IT_FACTORY,          IT_INVALID,       CHECK_NOTHING,
 	   CT_STEEL,       0, CT_INVALID,       0, 5,
 	   CT_IRON_ORE,  256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1238,7 +1238,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_farm,                       3, _farm_sounds,
-	   250,                                    2, 4, 0, 0,    9, 9, 0, 0,         48,
+	   2000,                                   2, 4, 0, 0,    9, 9, 0, 0,         48,
 	   IT_FACTORY,        IT_FOOD_PROCESS,     IT_INVALID,       CHECK_FARM,
 	   CT_GRAIN,      10, CT_LIVESTOCK,    10, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1248,7 +1248,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_copper_mine,                0, NULL,
-	   205,                                    0, 0, 3, 0,    0, 0, 4, 0,         10,
+	   1640,                                   0, 0, 3, 0,    0, 0, 4, 0,         10,
 	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_COPPER_ORE, 10, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1257,7 +1257,8 @@
 	   STR_480C_COPPER_ORE_MINE,               STR_482D_NEW_UNDER_CONSTRUCTION,
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
-	MI(_tile_table_oil_well,                   0, NULL,               220,              0, 5, 3, 0,    4, 5, 5, 0,        152,
+	MI(_tile_table_oil_well,                   0, NULL,
+	   1760,                                   0, 5, 3, 0,    4, 5, 5, 0,        152,
 	   IT_OIL_REFINERY,   IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_OIL,        12, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1267,7 +1268,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4837_NEW_OIL_RESERVES_FOUND,   STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_bank,                       0, NULL,
-	   193,                                    7, 0, 0, 0,    0, 0, 0, 0,         15,
+	   1544,                                   7, 0, 0, 0,    0, 0, 0, 0,         15,
 	   IT_BANK_TEMP,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_VALUABLES,   6, CT_INVALID,       0, 5,
 	   CT_VALUABLES,   0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1277,7 +1278,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_food_process,               0, NULL,
-	   26,                                     0, 2, 2, 0,    0, 3, 4, 0,         55,
+	   206,                                    0, 2, 2, 0,    0, 3, 4, 0,         55,
 	   IT_FRUIT_PLANTATION, IT_FARM,           IT_FARM_2,        CHECK_NOTHING,
 	   CT_FOOD,        0, CT_INVALID,       0, 5,
 	   CT_FRUIT,     256, CT_MAIZE,       256, CT_INVALID,     0,
@@ -1287,7 +1288,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_paper_mill,                 1, _sawmill_sounds,
-	   28,                                     0, 2, 0, 0,    0, 5, 0, 0,         10,
+	   227,                                    0, 2, 0, 0,    0, 5, 0, 0,         10,
 	   IT_FOREST,         IT_PRINTING_WORKS,   IT_INVALID,       CHECK_NOTHING,
 	   CT_PAPER,       0, CT_INVALID,       0, 5,
 	   CT_WOOD,      256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1297,7 +1298,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_gold_mine,                  0, NULL,
-	   208,                                    0, 3, 0, 0,    0, 4, 0, 0,        194,
+	   1664,                                   0, 3, 0, 0,    0, 4, 0, 0,        194,
 	   IT_BANK_TROPIC_ARCTIC, IT_INVALID,      IT_INVALID,       CHECK_NOTHING,
 	   CT_GOLD,        7, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1307,7 +1308,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_bank2,                      0, NULL,
-	   19,                                     0, 3, 3, 0,    0, 6, 5, 0,         15,
+	   151,                                    0, 3, 3, 0,    0, 6, 5, 0,         15,
 	   IT_GOLD_MINE,      IT_DIAMOND_MINE,     IT_INVALID,       CHECK_NOTHING,
 	   CT_INVALID,     0, CT_INVALID,       0, 5,
 	   CT_GOLD,      256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1317,7 +1318,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_diamond_mine,               0, NULL,
-	   213,                                    0, 0, 3, 0,    0, 0, 4, 0,        184,
+	   1704,                                   0, 0, 3, 0,    0, 0, 4, 0,        184,
 	   IT_BANK_TROPIC_ARCTIC, IT_INVALID,      IT_INVALID,       CHECK_NOTHING,
 	   CT_DIAMONDS,    7, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1327,7 +1328,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_iron_mine,                  0, NULL,
-	   220,                                    2, 0, 0, 0,    5, 0, 0, 0,         55,
+	   1760,                                   2, 0, 0, 0,    5, 0, 0, 0,         55,
 	   IT_STEEL_MILL,     IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_IRON_ORE,   10, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1337,7 +1338,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_fruit_plantation,           0, NULL,
-	   225,                                    0, 0, 2, 0,    0, 0, 4, 0,         86,
+	   1800,                                   0, 0, 2, 0,    0, 0, 4, 0,         86,
 	   IT_FOOD_PROCESS,   IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 	   CT_FRUIT,      10, CT_INVALID,       0, 15,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1347,7 +1348,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_rubber_plantation,          0, NULL,
-	   218,                                    0, 0, 3, 0,    0, 0, 4, 0,         39,
+	   1744,                                   0, 0, 3, 0,    0, 0, 4, 0,         39,
 	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 	   CT_RUBBER,     10, CT_INVALID,       0, 15,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1357,7 +1358,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_water_supply,               0, NULL,
-	   199,                                    0, 0, 3, 0,    0, 0, 4, 0,         37,
+	   1592,                                   0, 0, 3, 0,    0, 0, 4, 0,         37,
 	   IT_WATER_TOWER,    IT_INVALID,          IT_INVALID,       CHECK_WATER,
 	   CT_WATER,      12, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1367,7 +1368,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_water_tower,                0, NULL,
-	   14,                                     0, 0, 4, 0,    0, 0, 8, 0,        208,
+	   115,                                    0, 0, 4, 0,    0, 0, 8, 0,        208,
 	   IT_WATER_SUPPLY,   IT_INVALID,          IT_INVALID,       CHECK_WATER,
 	   CT_INVALID,     0, CT_INVALID,       0, 5,
 	   CT_WATER,     256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1377,7 +1378,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_factory2,                   1, _factory_sounds,
-	   26,                                     0, 0, 2, 0,    0, 0, 4, 0,        174,
+	   208,                                     0, 0, 2, 0,    0, 0, 4, 0,        174,
 	   IT_RUBBER_PLANTATION, IT_COPPER_MINE,   IT_LUMBER_MILL,   CHECK_PLANTATION,
 	   CT_GOODS,       0, CT_INVALID,       0, 5,
 	   CT_RUBBER,    256, CT_COPPER_ORE,  256, CT_WOOD,      256,
@@ -1387,7 +1388,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_farm2,                      0, NULL,
-	   250,                                    0, 0, 1, 0,    0, 0, 2, 0,         48,
+	   2000,                                   0, 0, 1, 0,    0, 0, 2, 0,         48,
 	   IT_FOOD_PROCESS,   IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 	   CT_MAIZE,      11, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1397,7 +1398,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_lumber_mill,                0, NULL,
-	   17,                                     0, 0, 0, 0,    0, 0, 0, 0,        194,
+	   135,                                    0, 0, 0, 0,    0, 0, 0, 0,        194,
 	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_LUMBERMILL,
 	   CT_WOOD,        0, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1407,7 +1408,7 @@
 	   STR_4834_LACK_OF_NEARBY_TREES_CAUSES,   STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_cotton_candy,               0, NULL,
-	   195,                                    0, 0, 0, 3,    0, 0, 0, 5,         48,
+	   1560,                                   0, 0, 0, 3,    0, 0, 0, 5,         48,
 	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_COTTON_CANDY, 13, CT_INVALID,    0, 30,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1417,7 +1418,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_candy_factory,              0, NULL,
-	   26,                                     0, 0, 0, 3,    0, 0, 0, 5,        174,
+	   206,                                    0, 0, 0, 3,    0, 0, 0, 5,        174,
 	   IT_COTTON_CANDY,   IT_TOFFEE_QUARRY,    IT_SUGAR_MINE,    CHECK_NOTHING,
 	   CT_CANDY,       0, CT_INVALID,       0, 5,
 	   CT_SUGAR,     256, CT_TOFFEE,      256, CT_COTTON_CANDY, 256,
@@ -1427,7 +1428,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_battery_farm,               0, NULL,
-	   187,                                    0, 0, 0, 3,    0, 0, 0, 4,         39,
+	   1496,                                   0, 0, 0, 3,    0, 0, 0, 4,         39,
 	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_BATTERIES,  11, CT_INVALID,      0, 30,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1437,7 +1438,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
 	MI(_tile_table_cola_wells,                 0, NULL,
-	   193,                                    0, 0, 0, 3,    0, 0, 0, 5,         55,
+	   1544,                                   0, 0, 0, 3,    0, 0, 0, 5,         55,
 	   IT_FIZZY_DRINK_FACTORY, IT_INVALID,     IT_INVALID,       CHECK_NOTHING,
 	   CT_COLA,       12, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1447,7 +1448,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_toy_shop,                   0, NULL,
-	   17,                                     0, 0, 0, 3,    0, 0, 0, 4,        208,
+	   133,                                    0, 0, 0, 3,    0, 0, 0, 4,        208,
 	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_INVALID,     0, CT_INVALID,       0, 5,
 	   CT_TOYS,      256, CT_INVALID,       0, CT_INVALID,     0,
@@ -1457,7 +1458,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_toy_factory,                0, NULL,
-	   20,                                     0, 0, 0, 3,    0, 0, 0, 5,          10,
+	   163,                                    0, 0, 0, 3,    0, 0, 0, 5,          10,
 	   IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM,  IT_TOY_SHOP,     CHECK_NOTHING,
 	   CT_TOYS,        0, CT_INVALID,       0, 5,
 	   CT_PLASTIC,   256, CT_BATTERIES,   256, CT_INVALID,     0,
@@ -1467,7 +1468,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_plastic_fountain,           1, _plastic_mine_sounds,
-	   192,                                    0, 0, 0, 3,    0, 0, 0, 5,         37,
+	   1536,                                   0, 0, 0, 3,    0, 0, 0, 5,         37,
 	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_PLASTIC,    14, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1477,7 +1478,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_fizzy_drink,                0, NULL,
-	   22,                                     0, 0, 0, 3,    0, 0, 0, 4,        184,
+	   177,                                    0, 0, 0, 3,    0, 0, 0, 4,        184,
 	   IT_COLA_WELLS,     IT_BUBBLE_GENERATOR, IT_INVALID,       CHECK_NOTHING,
 	   CT_FIZZY_DRINKS, 0, CT_INVALID,      0, 5,
 	   CT_COLA,       256, CT_BUBBLES,    256, CT_INVALID,     0,
@@ -1487,7 +1488,7 @@
 	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_bubble_generator,           0, NULL,
-	   203,                                    0, 0, 0, 3,    0, 0, 0, 5,        152,
+	   1624,                                   0, 0, 0, 3,    0, 0, 0, 5,        152,
 	   IT_FIZZY_DRINK_FACTORY, IT_INVALID,     IT_INVALID,       CHECK_BUBBLEGEN,
 	   CT_BUBBLES,    13, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1497,7 +1498,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_toffee_quarry,              0, NULL,
-	   213,                                    0, 0, 0, 3,    0, 0, 0, 5,        194,
+	   1704,                                   0, 0, 0, 3,    0, 0, 0, 5,        194,
 	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_TOFFEE,     10, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1507,7 +1508,7 @@
 	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
 	MI(_tile_table_sugar_mine,                 0, NULL,
-	   210,                                    0, 0, 0, 2,    0, 0, 0, 4,         15,
+	   1680,                                   0, 0, 0, 2,    0, 0, 0, 4,         15,
 	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 	   CT_SUGAR,      11, CT_INVALID,       0, 5,
 	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
@@ -1519,262 +1520,265 @@
 #undef MI
 
 /** Writes the properties of an industry tile into the IndustryTileSpec struct.
- * @param c1 first type of cargo accepted for this tile
- * @param c2 second cargo
- * @param c3 and third cargo. Those three are in an array
- * @param s1 slope refused upon choosing a place to build
- * @param a1 animation frame on production
- * @param a2 next frame of animation
- * @param a3 chooses between animation or construction state
+ * @param ca1 acceptance of first cargo
+ * @param c1  first type of cargo accepted for this tile
+ * @param ca2 acceptance of second cargo
+ * @param c2  second cargo
+ * @param ca3 acceptance of third cargo
+ * @param c3  and third cargo. Those three are in an array
+ * @param s1  slope refused upon choosing a place to build
+ * @param a1  animation frame on production
+ * @param a2  next frame of animation
+ * @param a3  chooses between animation or construction state
  */
-#define MT(c1, c2, c3, sl, a1, a2, a3) {{c1, c2, c3}, sl, a1, a2, a3}
-static const IndustryTileSpec _industry_tile_specs[] = {
+#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, true, {0, 0, NULL, NULL, 0}}
+static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
 	/* Coal Mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Power Station */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_COAL,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_COAL,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Sawmill */
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Forest Artic, temperate */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,               17,  INDUTILE_NOANIM,   false), ///< Chopping forest
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               16,   false), ///< Growing forest
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,                   17,  INDUSTRYTILE_NOANIM,   false), ///< Chopping forest
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,                   16,   false), ///< Growing forest
 
 	/* Oil refinery */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_OIL,        SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_OIL,        SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* oil Rig */
-	MT(CT_INVALID,      CT_INVALID,   CT_PASSENGERS, SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_MAIL,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_PASSENGERS, SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_MAIL,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Oil Wells artic, temperate */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true ),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true ),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true ),
 
 	/* Farm tropic, arctic and temperate */
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Factory temperate */
-	MT(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_GRAIN,        8,  CT_STEEL,     8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_GRAIN,        8,  CT_STEEL,     8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_GRAIN,        8,  CT_STEEL,     8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_GRAIN,        8,  CT_STEEL,     8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Printing works */
-	MT(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_PAPER,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_PAPER,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_PAPER,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_PAPER,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Copper ore mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true ),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Steel mill */
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_IRON_ORE,   SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Bank temperate*/
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_E,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_S,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_VALUABLES,  SLOPE_E,      INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(1,  CT_PASSENGERS,   0,  CT_INVALID,   8,  CT_VALUABLES,  SLOPE_S,      INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
-	MT(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_MAIZE,        0,  CT_INVALID,   8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_MAIZE,        0,  CT_INVALID,   8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_MAIZE,        0,  CT_INVALID,   8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_MAIZE,        0,  CT_INVALID,   8,  CT_LIVESTOCK,  SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Paper mill */
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WOOD,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Gold mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  true ),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Bank Sub Arctic */
-	MT(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_E,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_S,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_GOLD,       SLOPE_E,      INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_GOLD,       SLOPE_S,      INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Diamond mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Iron ore Mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Fruit plantation */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Rubber plantation */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Water supply */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Water tower */
-	MT(CT_INVALID,      CT_INVALID,   CT_WATER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_WATER,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Factory (sub-tropical) */
-	MT(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_COPPER_ORE,   8,  CT_WOOD,      8,  CT_RUBBER,     SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COPPER_ORE,   8,  CT_WOOD,      8,  CT_RUBBER,     SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COPPER_ORE,   8,  CT_WOOD,      8,  CT_RUBBER,     SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COPPER_ORE,   8,  CT_WOOD,      8,  CT_RUBBER,     SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Lumber mill */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Candyfloss forest */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,              130,   INDUTILE_NOANIM,  false), ///< Chopping candyfloss
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               129,  false), ///< Growing candyfloss
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,                  130,   INDUSTRYTILE_NOANIM,  false), ///< Chopping candyfloss
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,                   129,  false), ///< Growing candyfloss
 
 	/* Sweet factory */
-	MT(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_COTTON_CANDY, 8,  CT_TOFFEE,    8,  CT_SUGAR,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COTTON_CANDY, 8,  CT_TOFFEE,    8,  CT_SUGAR,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COTTON_CANDY, 8,  CT_TOFFEE,    8,  CT_SUGAR,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_COTTON_CANDY, 8,  CT_TOFFEE,    8,  CT_SUGAR,      SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Batter farm */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,              136,   INDUTILE_NOANIM,  false), ///< Reaping batteries
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               135,  false), ///< Growing batteries
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,                  136,   INDUSTRYTILE_NOANIM,  false), ///< Reaping batteries
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,                   135,  false), ///< Growing batteries
 
 	/* Cola wells */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Toy shop */
-	MT(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_TOYS,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_TOYS,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_TOYS,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   8,  CT_TOYS,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Toy factory */
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BATTERIES,    0,  CT_INVALID,   8,  CT_PLASTIC,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Plastic Fountain */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Fizzy drink factory */
-	MT(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(8,  CT_BUBBLES,      0,  CT_INVALID,   8,  CT_COLA,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BUBBLES,      0,  CT_INVALID,   8,  CT_COLA,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BUBBLES,      0,  CT_INVALID,   8,  CT_COLA,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(8,  CT_BUBBLES,      0,  CT_INVALID,   8,  CT_COLA,       SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Bubble generator */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Toffee quarry */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 
 	/* Sugar mine */
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
-	MT(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
+	MT(0,  CT_INVALID,      0,  CT_INVALID,   0,  CT_INVALID,    SLOPE_STEEP,  INDUSTRYTILE_NOANIM,   INDUSTRYTILE_NOANIM,  false),
 };
 #undef MT
 
--- a/src/table/files.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/files.h	Wed Jun 13 12:05:56 2007 +0000
@@ -59,8 +59,11 @@
 	{ "autorail.grf",  { 0xed, 0x44, 0x7f, 0xbb, 0x19, 0x44, 0x48, 0x4c, 0x07, 0x8a, 0xb1, 0xc1, 0x5c, 0x12, 0x3a, 0x60 } },
 	{ "canalsw.grf",   { 0x13, 0x9c, 0x98, 0xcf, 0xb8, 0x7c, 0xd7, 0x1f, 0xca, 0x34, 0xa5, 0x6b, 0x65, 0x31, 0xec, 0x0f } },
 	{ "elrailsw.grf",  { 0x4f, 0xf9, 0xac, 0x79, 0x50, 0x28, 0x9b, 0xe2, 0x15, 0x30, 0xa8, 0x1e, 0xd5, 0xfd, 0xe1, 0xda } },
-	{ "openttd.grf",   { 0x85, 0x4f, 0xf6, 0xb5, 0xd2, 0xf7, 0xbc, 0x1e, 0xb9, 0xdc, 0x44, 0xef, 0x35, 0x5f, 0x64, 0x9b } },
+	{ "openttd.grf",   { 0x20, 0x64, 0x4a, 0xf6, 0x75, 0x26, 0x5b, 0x92, 0xbb, 0x6f, 0x8d, 0x0e, 0x34, 0x7e, 0xa6, 0xe3 } },
 	{ "trkfoundw.grf", { 0x12, 0x33, 0x3f, 0xa3, 0xd1, 0x86, 0x8b, 0x04, 0x53, 0x18, 0x9c, 0xee, 0xf9, 0x2d, 0xf5, 0x95 } },
 	{ "roadstops.grf", { 0x8c, 0xd9, 0x45, 0x21, 0x28, 0x82, 0x96, 0x45, 0x33, 0x22, 0x7a, 0xb9, 0x0d, 0xf3, 0x67, 0x4a } },
 	{ "group.grf",     { 0xe8, 0x52, 0x5f, 0x1c, 0x3e, 0xf9, 0x91, 0x9d, 0x0f, 0x70, 0x8c, 0x8a, 0x21, 0xa4, 0xc7, 0x02 } },
+	{ "tramtrkw.grf",  { 0x83, 0x0a, 0xf4, 0x9f, 0x29, 0x10, 0x48, 0xfd, 0x76, 0xe9, 0xda, 0xac, 0x5d, 0xa2, 0x30, 0x45 } },
+	{ "oneway.grf",    { 0xbb, 0xc6, 0xa3, 0xb2, 0xb3, 0xa0, 0xc9, 0x3c, 0xc9, 0xee, 0x24, 0x7c, 0xb6, 0x51, 0x74, 0x63 } },
+	{ "flags.grf",     { 0xa1, 0xd7, 0x72, 0x75, 0x0e, 0x81, 0x86, 0x0e, 0xc9, 0xcd, 0xc2, 0x57, 0xb2, 0x19, 0xe1, 0x0c } },
 };
--- a/src/table/industry_land.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/industry_land.h	Wed Jun 13 12:05:56 2007 +0000
@@ -42,7 +42,7 @@
 #define M(s1, p1, s2, p2, sx, sy, w, h, dz, p) { { s1, p1 }, { s2, p2 }, sx, sy, w - 1, h - 1, dz, p }
 
 /** Structure for industry tiles drawing */
-static const DrawBuildingsTileStruct _industry_draw_tile_data[NUM_INDUSTRY_GFXES * 4] = {
+static const DrawBuildingsTileStruct _industry_draw_tile_data[NEW_INDUSTRYTILEOFFSET * 4] = {
 	M(     0xf54, PAL_NONE,      0x7db, PAL_NONE,  7,  0,  9,  9,  10, 0),
 	M(     0xf54, PAL_NONE,      0x7dc, PAL_NONE,  7,  0,  9,  9,  30, 0),
 	M(     0xf54, PAL_NONE,      0x7dd, PAL_NONE,  7,  0,  9,  9,  30, 0),
--- a/src/table/road_land.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/road_land.h	Wed Jun 13 12:05:56 2007 +0000
@@ -32,6 +32,35 @@
 	{ 0xA4A, PAL_NONE, _road_depot_NW }
 };
 
+static const DrawTileSeqStruct _tram_depot_NE[] = {
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x35 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE, 0, 15, 16, 1)
+	TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _tram_depot_SE[] = {
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x31, PAL_NONE, 0, 0, 1, 16)
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x32 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE, 15, 0, 1, 16)
+	TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _tram_depot_SW[] = {
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x33, PAL_NONE, 0, 0, 16, 1)
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x34 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE, 0, 15, 16, 1)
+	TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _tram_depot_NW[] = {
+	TILE_SEQ_LINE(SPR_TRAMWAY_BASE + 0x36 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE, 15, 0, 1, 16)
+	TILE_SEQ_END()
+};
+
+static const DrawTileSprites _tram_depot[] = {
+	{ 0xA4A, PAL_NONE, _tram_depot_NE },
+	{ 0xA4A, PAL_NONE, _tram_depot_SE },
+	{ 0xA4A, PAL_NONE, _tram_depot_SW },
+	{ 0xA4A, PAL_NONE, _tram_depot_NW }
+};
+
 #undef TILE_SEQ_BEGIN
 #undef TILE_SEQ_LINE
 #undef TILE_SEQ_END
@@ -42,7 +71,13 @@
   0x543, 0x53C, 0x535, 0x538, 0x53D, 0x537, 0x53A, 0x536
 };
 
+static const SpriteID _road_frontwire_sprites_1[16] = {
+	0, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x43, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x3F, 0x37, 0x37, 0x37
+};
 
+static const SpriteID _road_backpole_sprites_1[16] = {
+	0, 0x38, 0x39, 0x40, 0x38, 0x38, 0x43, 0x3E, 0x39, 0x41, 0x39, 0x3C, 0x42, 0x3B, 0x3D, 0x3A
+};
 
 #define MAKELINE(a, b, c) { a, b, c },
 #define ENDLINE { 0, 0, 0 }
--- a/src/table/roadveh.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/roadveh.h	Wed Jun 13 12:05:56 2007 +0000
@@ -1011,7 +1011,7 @@
 	{RDE_NEXT_TILE | DIAGDIR_SE, 0}
 };
 
-static const RoadDriveEntry * const _road_drive_data[] = {
+static const RoadDriveEntry * const _road_road_drive_data[] = {
 	_roadveh_drive_data_0,
 	_roadveh_drive_data_1,
 	_roadveh_drive_data_2,
@@ -1077,3 +1077,386 @@
 	NULL,
 	NULL,
 };
+
+static const RoadDriveEntry _roadveh_tram_turn_ne_0[] = {
+	{15, 5},
+	{14, 5},
+	{13, 5},
+	{12, 5},
+	{11, 5},
+	{10, 5},
+	{ 9, 5},
+	{ 8, 5},
+	{ 7, 5},
+	{ 6, 5},
+	{ 5, 5},
+	{ 4, 5},
+	{ 3, 5},
+	{ 2, 5},
+	{ 1, 5},
+	{ 0, 5},
+	{ 0, 6},
+	{ 0, 7},
+	{ 0, 8},
+	{ 0, 9},
+	{ 1, 9},
+	{ 2, 9},
+	{ 3, 9},
+	{ 4, 9},
+	{ 5, 9},
+	{ 6, 9},
+	{ 7, 9},
+	{ 8, 9},
+	{ 9, 9},
+	{10, 9},
+	{11, 9},
+	{12, 9},
+	{13, 9},
+	{14, 9},
+	{15, 9},
+	{RDE_NEXT_TILE | DIAGDIR_SW, 0}
+};
+
+static const RoadDriveEntry _roadveh_tram_turn_ne_1[] = {
+	{15, 9},
+	{14, 9},
+	{13, 9},
+	{12, 9},
+	{11, 9},
+	{10, 9},
+	{ 9, 9},
+	{ 8, 9},
+	{ 7, 9},
+	{ 6, 9},
+	{ 5, 9},
+	{ 4, 9},
+	{ 3, 9},
+	{ 2, 9},
+	{ 1, 9},
+	{ 0, 9},
+	{ 0, 8},
+	{ 0, 7},
+	{ 0, 6},
+	{ 0, 5},
+	{ 1, 5},
+	{ 2, 5},
+	{ 3, 5},
+	{ 4, 5},
+	{ 5, 5},
+	{ 6, 5},
+	{ 7, 5},
+	{ 8, 5},
+	{ 9, 5},
+	{10, 5},
+	{11, 5},
+	{12, 5},
+	{13, 5},
+	{14, 5},
+	{15, 5},
+	{RDE_NEXT_TILE | DIAGDIR_SW, 0}
+};
+
+static const RoadDriveEntry _roadveh_tram_turn_se_0[] = {
+	{5,  0},
+	{5,  1},
+	{5,  2},
+	{5,  3},
+	{5,  4},
+	{5,  5},
+	{5,  6},
+	{5,  7},
+	{5,  8},
+	{5,  9},
+	{5, 10},
+	{5, 11},
+	{5, 12},
+	{5, 13},
+	{5, 14},
+	{5, 15},
+	{6, 15},
+	{7, 15},
+	{8, 15},
+	{9, 15},
+	{9, 14},
+	{9, 13},
+	{9, 12},
+	{9, 11},
+	{9, 10},
+	{9,  9},
+	{9,  8},
+	{9,  7},
+	{9,  6},
+	{9,  5},
+	{9,  4},
+	{9,  3},
+	{9,  2},
+	{9,  1},
+	{9,  0},
+	{RDE_NEXT_TILE | DIAGDIR_NW, 0}
+};
+
+static const RoadDriveEntry _roadveh_tram_turn_se_1[] = {
+	{9,  0},
+	{9,  1},
+	{9,  2},
+	{9,  3},
+	{9,  4},
+	{9,  5},
+	{9,  6},
+	{9,  7},
+	{9,  8},
+	{9,  9},
+	{9, 10},
+	{9, 11},
+	{9, 12},
+	{9, 13},
+	{9, 14},
+	{9, 15},
+	{8, 15},
+	{7, 15},
+	{6, 15},
+	{5, 15},
+	{5, 14},
+	{5, 13},
+	{5, 12},
+	{5, 11},
+	{5, 10},
+	{5,  9},
+	{5,  8},
+	{5,  7},
+	{5,  6},
+	{5,  5},
+	{5,  4},
+	{5,  3},
+	{5,  2},
+	{5,  1},
+	{5,  0},
+	{RDE_NEXT_TILE | DIAGDIR_NW, 0}
+};
+
+static const RoadDriveEntry _roadveh_tram_turn_sw_0[] = {
+	{ 0, 9},
+	{ 1, 9},
+	{ 2, 9},
+	{ 3, 9},
+	{ 4, 9},
+	{ 5, 9},
+	{ 6, 9},
+	{ 7, 9},
+	{ 8, 9},
+	{ 9, 9},
+	{10, 9},
+	{11, 9},
+	{12, 9},
+	{13, 9},
+	{14, 9},
+	{15, 9},
+	{15, 8},
+	{15, 7},
+	{15, 6},
+	{15, 5},
+	{14, 5},
+	{13, 5},
+	{12, 5},
+	{11, 5},
+	{10, 5},
+	{ 9, 5},
+	{ 8, 5},
+	{ 7, 5},
+	{ 6, 5},
+	{ 5, 5},
+	{ 4, 5},
+	{ 3, 5},
+	{ 2, 5},
+	{ 1, 5},
+	{ 0, 5},
+	{RDE_NEXT_TILE | DIAGDIR_NE, 0}
+};
+static const RoadDriveEntry _roadveh_tram_turn_sw_1[] = {
+	{ 0, 5},
+	{ 1, 5},
+	{ 2, 5},
+	{ 3, 5},
+	{ 4, 5},
+	{ 5, 5},
+	{ 6, 5},
+	{ 7, 5},
+	{ 8, 5},
+	{ 9, 5},
+	{10, 5},
+	{11, 5},
+	{12, 5},
+	{13, 5},
+	{14, 5},
+	{15, 5},
+	{15, 6},
+	{15, 7},
+	{15, 8},
+	{15, 9},
+	{14, 9},
+	{13, 9},
+	{12, 9},
+	{11, 9},
+	{10, 9},
+	{ 9, 9},
+	{ 8, 9},
+	{ 7, 9},
+	{ 6, 9},
+	{ 5, 9},
+	{ 4, 9},
+	{ 3, 9},
+	{ 2, 9},
+	{ 1, 9},
+	{ 0, 9},
+	{RDE_NEXT_TILE | DIAGDIR_NE, 0}
+};
+
+static const RoadDriveEntry _roadveh_tram_turn_nw_0[] = {
+	{9, 15},
+	{9, 14},
+	{9, 13},
+	{9, 12},
+	{9, 11},
+	{9, 10},
+	{9,  9},
+	{9,  8},
+	{9,  7},
+	{9,  6},
+	{9,  5},
+	{9,  4},
+	{9,  3},
+	{9,  2},
+	{9,  1},
+	{9,  0},
+	{8,  0},
+	{7,  0},
+	{6,  0},
+	{5,  0},
+	{5,  1},
+	{5,  2},
+	{5,  3},
+	{5,  4},
+	{5,  5},
+	{5,  6},
+	{5,  7},
+	{5,  8},
+	{5,  9},
+	{5, 10},
+	{5, 11},
+	{5, 12},
+	{5, 13},
+	{5, 14},
+	{5, 15},
+	{RDE_NEXT_TILE | DIAGDIR_SE, 0}
+};
+static const RoadDriveEntry _roadveh_tram_turn_nw_1[] = {
+	{5, 15},
+	{5, 14},
+	{5, 13},
+	{5, 12},
+	{5, 11},
+	{5, 10},
+	{5,  9},
+	{5,  8},
+	{5,  7},
+	{5,  6},
+	{5,  5},
+	{5,  4},
+	{5,  3},
+	{5,  2},
+	{5,  1},
+	{5,  0},
+	{6,  0},
+	{7,  0},
+	{8,  0},
+	{9,  0},
+	{9,  1},
+	{9,  2},
+	{9,  3},
+	{9,  4},
+	{9,  5},
+	{9,  6},
+	{9,  7},
+	{9,  8},
+	{9,  9},
+	{9, 10},
+	{9, 11},
+	{9, 12},
+	{9, 13},
+	{9, 14},
+	{9, 15},
+	{RDE_NEXT_TILE | DIAGDIR_SE, 0}
+};
+
+static const RoadDriveEntry * const _road_tram_drive_data[] = {
+	_roadveh_drive_data_0,
+	_roadveh_drive_data_1,
+	_roadveh_drive_data_2,
+	_roadveh_drive_data_3,
+	_roadveh_drive_data_4,
+	_roadveh_drive_data_5,
+	_roadveh_tram_turn_ne_0,
+	_roadveh_tram_turn_se_0,
+	_roadveh_drive_data_8,
+	_roadveh_drive_data_9,
+	_roadveh_drive_data_10,
+	_roadveh_drive_data_11,
+	_roadveh_drive_data_12,
+	_roadveh_drive_data_13,
+	_roadveh_tram_turn_sw_0,
+	_roadveh_tram_turn_nw_0,
+	_roadveh_drive_data_16,
+	_roadveh_drive_data_17,
+	_roadveh_drive_data_18,
+	_roadveh_drive_data_19,
+	_roadveh_drive_data_20,
+	_roadveh_drive_data_21,
+	_roadveh_tram_turn_ne_1,
+	_roadveh_tram_turn_se_1,
+	_roadveh_drive_data_24,
+	_roadveh_drive_data_25,
+	_roadveh_drive_data_26,
+	_roadveh_drive_data_27,
+	_roadveh_drive_data_28,
+	_roadveh_drive_data_29,
+	_roadveh_tram_turn_sw_1,
+	_roadveh_tram_turn_nw_1,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+};
+
+static const RoadDriveEntry * const * const _road_drive_data[2] = {
+	_road_road_drive_data,
+	_road_tram_drive_data,
+};
--- a/src/table/sprites.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/table/sprites.h	Wed Jun 13 12:05:56 2007 +0000
@@ -25,7 +25,7 @@
  * All sprites which are described here are referenced only one to a handful of times
  * throughout the code. When introducing new sprite enums, use meaningful names.
  * Don't be lazy and typing, and only use abbrevations when their meaning is clear or
- * the length of the enum would get out of hand. In that case EXPLAIN THE ABBREVATION
+ * the length of the enum would get out of hand. In that case EXPLAIN THE ABBREVATION
  * IN THIS FILE, and perhaps add some comments in the code where it is used.
  * Now, don't whine about this being too much typing work if the enums are like
  * 30 characters in length. If your editor doen't help you simplifying your work,
@@ -47,7 +47,7 @@
 	SPR_ASCII_SPACE_BIG   = 450,
 
 	/* Extra graphic spritenumbers */
-	OPENTTD_SPRITES_COUNT = 116, // number of gfx-sprites in openttd.grf
+	OPENTTD_SPRITES_COUNT = 112, // number of gfx-sprites in openttd.grf
 	SPR_SIGNALS_BASE  = 4896,
 	SPR_CANALS_BASE   = SPR_SIGNALS_BASE + 486,
 	SPR_SLOPES_BASE   = SPR_CANALS_BASE + 70,
@@ -62,44 +62,43 @@
 	SPR_PIN_DOWN      = SPR_OPENTTD_BASE + 56,
 	SPR_BOX_EMPTY     = SPR_OPENTTD_BASE + 59,
 	SPR_BOX_CHECKED   = SPR_OPENTTD_BASE + 60,
-	SPR_WINDOW_RESIZE = SPR_OPENTTD_BASE + 86,   // resize icon
-	SPR_HOUSE_ICON    = SPR_OPENTTD_BASE + 93,
+	SPR_WINDOW_RESIZE = SPR_OPENTTD_BASE + 82,   // resize icon
+	SPR_HOUSE_ICON    = SPR_OPENTTD_BASE + 89,
 	// arrow icons pointing in all 4 directions
-	SPR_ARROW_DOWN    = SPR_OPENTTD_BASE + 87,
-	SPR_ARROW_UP      = SPR_OPENTTD_BASE + 88,
-	SPR_ARROW_LEFT    = SPR_OPENTTD_BASE + 89,
-	SPR_ARROW_RIGHT   = SPR_OPENTTD_BASE + 90,
+	SPR_ARROW_DOWN    = SPR_OPENTTD_BASE + 83,
+	SPR_ARROW_UP      = SPR_OPENTTD_BASE + 84,
+	SPR_ARROW_LEFT    = SPR_OPENTTD_BASE + 85,
+	SPR_ARROW_RIGHT   = SPR_OPENTTD_BASE + 86,
 
 	SPR_LARGE_SMALL_WINDOW = 682,
 
 	/* Clone vehicles stuff */
-	SPR_CLONE_TRAIN    = SPR_OPENTTD_BASE + 91,
-	SPR_CLONE_ROADVEH  = SPR_OPENTTD_BASE + 108,
-	SPR_CLONE_SHIP     = SPR_OPENTTD_BASE + 110,
-	SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 112,
+	SPR_CLONE_TRAIN    = SPR_OPENTTD_BASE + 87,
+	SPR_CLONE_ROADVEH  = SPR_OPENTTD_BASE + 104,
+	SPR_CLONE_SHIP     = SPR_OPENTTD_BASE + 106,
+	SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 108,
 
-	SPR_SELL_TRAIN        = SPR_OPENTTD_BASE + 95,
-	SPR_SELL_ROADVEH      = SPR_OPENTTD_BASE + 96,
-	SPR_SELL_SHIP         = SPR_OPENTTD_BASE + 97,
-	SPR_SELL_AIRCRAFT     = SPR_OPENTTD_BASE + 98,
-	SPR_SELL_ALL_TRAIN    = SPR_OPENTTD_BASE + 99,
-	SPR_SELL_ALL_ROADVEH  = SPR_OPENTTD_BASE + 100,
-	SPR_SELL_ALL_SHIP     = SPR_OPENTTD_BASE + 101,
-	SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 102,
-	SPR_REPLACE_TRAIN     = SPR_OPENTTD_BASE + 103,
-	SPR_REPLACE_ROADVEH   = SPR_OPENTTD_BASE + 104,
-	SPR_REPLACE_SHIP      = SPR_OPENTTD_BASE + 105,
-	SPR_REPLACE_AIRCRAFT  = SPR_OPENTTD_BASE + 106,
-	SPR_SELL_CHAIN_TRAIN  = SPR_OPENTTD_BASE + 107,
+	SPR_SELL_TRAIN        = SPR_OPENTTD_BASE + 91,
+	SPR_SELL_ROADVEH      = SPR_OPENTTD_BASE + 92,
+	SPR_SELL_SHIP         = SPR_OPENTTD_BASE + 93,
+	SPR_SELL_AIRCRAFT     = SPR_OPENTTD_BASE + 94,
+	SPR_SELL_ALL_TRAIN    = SPR_OPENTTD_BASE + 95,
+	SPR_SELL_ALL_ROADVEH  = SPR_OPENTTD_BASE + 96,
+	SPR_SELL_ALL_SHIP     = SPR_OPENTTD_BASE + 97,
+	SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 98,
+	SPR_REPLACE_TRAIN     = SPR_OPENTTD_BASE + 99,
+	SPR_REPLACE_ROADVEH   = SPR_OPENTTD_BASE + 100,
+	SPR_REPLACE_SHIP      = SPR_OPENTTD_BASE + 101,
+	SPR_REPLACE_AIRCRAFT  = SPR_OPENTTD_BASE + 102,
+	SPR_SELL_CHAIN_TRAIN  = SPR_OPENTTD_BASE + 103,
 
-	SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 114,
+	SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 110,
 
-	SPR_WARNING_SIGN      = SPR_OPENTTD_BASE + 115, // warning sign (shown if there are any newgrf errors)
+	SPR_WARNING_SIGN      = SPR_OPENTTD_BASE + 111, // warning sign (shown if there are any newgrf errors)
 
 	/* Network GUI sprites */
 	SPR_SQUARE = SPR_OPENTTD_BASE + 20,     // colored square (used for newgrf compatibility)
 	SPR_LOCK = SPR_OPENTTD_BASE + 19,       // lock icon (for password protected servers)
-	SPR_FLAGS_BASE = SPR_OPENTTD_BASE + 82, // start of the flags block (in same order as enum NetworkLanguage)
 
 	SPR_AIRPORTX_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITES_COUNT, // The sprites used for other airport angles
 	SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE,
@@ -150,6 +149,30 @@
 	SPR_GROUP_REPLACE_OFF_SHIP     = SPR_GROUP_BASE + 18,
 	SPR_GROUP_REPLACE_OFF_AIRCRAFT = SPR_GROUP_BASE + 19,
 
+	/* Tramway sprites */
+	SPR_TRAMWAY_BASE                 = SPR_GROUP_BASE + 20,
+	SPR_TRAMWAY_OVERLAY              = SPR_TRAMWAY_BASE + 4,
+	SPR_TRAMWAY_TRAM                 = SPR_TRAMWAY_BASE + 27,
+	SPR_TRAMWAY_SLOPED_OFFSET        = 11,
+	SPR_TRAMWAY_BUS_STOP_DT_Y_W      = SPR_TRAMWAY_BASE + 25,
+	SPR_TRAMWAY_BUS_STOP_DT_Y_E      = SPR_TRAMWAY_BASE + 23,
+	SPR_TRAMWAY_BUS_STOP_DT_X_W      = SPR_TRAMWAY_BASE + 24,
+	SPR_TRAMWAY_BUS_STOP_DT_X_E      = SPR_TRAMWAY_BASE + 26,
+	SPR_TRAMWAY_PAVED_STRAIGHT_Y     = SPR_TRAMWAY_BASE + 46,
+	SPR_TRAMWAY_PAVED_STRAIGHT_X     = SPR_TRAMWAY_BASE + 47,
+	SPR_TRAMWAY_BACK_WIRES_STRAIGHT  = SPR_TRAMWAY_BASE + 55,
+	SPR_TRAMWAY_FRONT_WIRES_STRAIGHT = SPR_TRAMWAY_BASE + 56,
+	SPR_TRAMWAY_BACK_WIRES_SLOPED    = SPR_TRAMWAY_BASE + 72,
+	SPR_TRAMWAY_FRONT_WIRES_SLOPED   = SPR_TRAMWAY_BASE + 68,
+	SPR_TRAMWAY_TUNNEL_WIRES         = SPR_TRAMWAY_BASE + 80,
+	SPR_TRAMWAY_BRIDGE               = SPR_TRAMWAY_BASE + 107,
+
+	/* One way road sprites */
+	SPR_ONEWAY_BASE = SPR_TRAMWAY_BASE + 113,
+
+	/* Flags sprites (in same order as enum NetworkLanguage) */
+	SPR_FLAGS_BASE = SPR_ONEWAY_BASE + 6,
+
 	/* Manager face sprites */
 	SPR_GRADIENT = 874, // background gradient behind manager face
 
@@ -1178,6 +1201,8 @@
 	SPR_IMG_BRIDGE        = 2594,
 	SPR_IMG_ROAD_TUNNEL   = 2429,
 	SPR_IMG_REMOVE        = 714,
+	SPR_IMG_TRAMWAY_NW    = SPR_TRAMWAY_BASE + 0,
+	SPR_IMG_TRAMWAY_NE    = SPR_TRAMWAY_BASE + 1,
 
 	/* rail_gui.c */
 	SPR_IMG_RAIL_NS    = 1251,
@@ -1294,16 +1319,18 @@
 	/* road cursors */
 	SPR_CURSOR_ROAD_NESW      = 1311,
 	SPR_CURSOR_ROAD_NWSE      = 1312,
+	SPR_CURSOR_TRAMWAY_NESW   = SPR_TRAMWAY_BASE + 2,
+	SPR_CURSOR_TRAMWAY_NWSE   = SPR_TRAMWAY_BASE + 3,
 
 	SPR_CURSOR_ROAD_DEPOT     = 1297,
 	SPR_CURSOR_BUS_STATION    = 2725,
 	SPR_CURSOR_TRUCK_STATION  = 2726,
 	SPR_CURSOR_ROAD_TUNNEL    = 2433,
 
-	SPR_CURSOR_CLONE_TRAIN    = SPR_OPENTTD_BASE +  92,
-	SPR_CURSOR_CLONE_ROADVEH  = SPR_OPENTTD_BASE + 109,
-	SPR_CURSOR_CLONE_SHIP     = SPR_OPENTTD_BASE + 111,
-	SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 113,
+	SPR_CURSOR_CLONE_TRAIN    = SPR_OPENTTD_BASE +  88,
+	SPR_CURSOR_CLONE_ROADVEH  = SPR_OPENTTD_BASE + 105,
+	SPR_CURSOR_CLONE_SHIP     = SPR_OPENTTD_BASE + 107,
+	SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 109
 };
 
 /// Animation macro in table/animcursors.h (_animcursors[])
--- a/src/terraform_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/terraform_gui.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -105,19 +105,19 @@
 	TileIndex end_tile = e->we.place.tile;
 
 	switch (e->we.place.select_proc) {
-		case GUI_PlaceProc_DemolishArea:
+		case DDSP_DEMOLISH_AREA:
 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
 			break;
-		case GUI_PlaceProc_LevelArea:
+		case DDSP_LEVEL_AREA:
 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO);
 			break;
-		case GUI_PlaceProc_RockyArea:
+		case DDSP_CREATE_ROCKS:
 			GenerateRockyArea(end_tile, start_tile);
 			break;
-		case GUI_PlaceProc_DesertArea:
+		case DDSP_CREATE_DESERT:
 			GenerateDesertArea(end_tile, start_tile);
 			break;
-		case GUI_PlaceProc_WaterArea:
+		case DDSP_CREATE_WATER:
 			DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
 			break;
 		default:
@@ -141,7 +141,7 @@
 
 void PlaceProc_DemolishArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DemolishArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
 }
 
 static void PlaceProc_RaiseLand(TileIndex tile)
@@ -162,7 +162,7 @@
 
 void PlaceProc_LevelLand(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_LevelArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_LEVEL_AREA);
 }
 
 static void TerraformClick_Lower(Window *w)
@@ -244,8 +244,13 @@
 		break;
 
 	case WE_PLACE_MOUSEUP:
-		if (e->we.place.pt.x != -1 && e->we.place.select_method == VPM_X_AND_Y) {
-			GUIPlaceProcDragXY(e);
+		if (e->we.place.pt.x != -1) {
+			switch (e->we.place.select_proc) {
+				case DDSP_DEMOLISH_AREA:
+				case DDSP_LEVEL_AREA:
+					GUIPlaceProcDragXY(e);
+					break;
+			}
 		}
 		break;
 
--- a/src/texteff.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/texteff.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -353,7 +353,6 @@
 
 		case ZOOM_LVL_OUT_4X:
 		case ZOOM_LVL_OUT_8X:
-		case ZOOM_LVL_OUT_16X:
 			break;
 
 		default: NOT_REACHED();
--- a/src/town_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/town_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -559,7 +559,7 @@
 	td->owner = OWNER_TOWN;
 }
 
-static uint32 GetTileTrackStatus_Town(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Town(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	/* not used */
 	return 0;
@@ -1092,7 +1092,7 @@
 		do {
 			byte bridge_type = RandomRange(MAX_BRIDGES - 1);
 			if (CheckBridge_Stuff(bridge_type, bridge_len)) {
-				if (!CmdFailed(DoCommand(tile, tmptile, 0x8000 + bridge_type, DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE)))
+				if (!CmdFailed(DoCommand(tile, tmptile, bridge_type | ((0x80 | ROADTYPES_ROAD) << 8), DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE)))
 					_grow_town_result = -1;
 
 				/* obviously, if building any bridge would fail, there is no need to try other bridge-types */
@@ -1665,7 +1665,7 @@
 		for (i = 0; i < HOUSE_MAX; i++) {
 			hs = GetHouseSpecs(i);
 			if ((~hs->building_availability & bitmask) == 0 && hs->enabled) {
-				if (_have_newhouses) {
+				if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 					probability_max += hs->probability;
 					cumulative_probs[num] = probability_max;
 				}
@@ -1674,7 +1674,7 @@
 		}
 
 		for (;;) {
-			if (_have_newhouses) {
+			if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 				uint r = RandomRange(probability_max);
 				for (i = 0; i < num; i++) if (cumulative_probs[i] >= r) break;
 
@@ -1685,7 +1685,7 @@
 
 			hs = GetHouseSpecs(house);
 
-			if (_have_newhouses) {
+			if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 				if (hs->override != 0) hs = GetHouseSpecs(hs->override);
 
 				if ((hs->extra_flags & BUILDING_IS_HISTORICAL) && !_generating_world) continue;
--- a/src/train.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/train.h	Wed Jun 13 12:05:56 2007 +0000
@@ -31,6 +31,7 @@
  */
 static inline bool IsFrontEngine(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Front);
 }
 
@@ -39,6 +40,7 @@
  */
 static inline void SetFrontEngine(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Front);
 }
 
@@ -47,6 +49,7 @@
  */
 static inline void ClearFrontEngine(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Front);
 }
 
@@ -56,6 +59,7 @@
  */
 static inline bool IsArticulatedPart(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Articulated_Part);
 }
 
@@ -64,6 +68,7 @@
  */
 static inline void SetArticulatedPart(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Articulated_Part);
 }
 
@@ -72,6 +77,7 @@
  */
 static inline void ClearArticulatedPart(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Articulated_Part);
 }
 
@@ -81,6 +87,7 @@
  */
 static inline bool IsTrainWagon(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Wagon);
 }
 
@@ -89,6 +96,7 @@
  */
 static inline void SetTrainWagon(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Wagon);
 }
 
@@ -97,6 +105,7 @@
  */
 static inline void ClearTrainWagon(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Wagon);
 }
 
@@ -106,6 +115,7 @@
  */
 static inline bool IsTrainEngine(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Engine);
 }
 
@@ -114,6 +124,7 @@
  */
 static inline void SetTrainEngine(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Engine);
 }
 
@@ -122,6 +133,7 @@
  */
 static inline void ClearTrainEngine(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Engine);
 }
 
@@ -131,6 +143,7 @@
  */
 static inline bool IsFreeWagon(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Free_Wagon);
 }
 
@@ -139,6 +152,7 @@
  */
 static inline void SetFreeWagon(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Free_Wagon);
 }
 
@@ -147,6 +161,7 @@
  */
 static inline void ClearFreeWagon(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Free_Wagon);
 }
 
@@ -156,6 +171,7 @@
  */
 static inline bool IsMultiheaded(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return HASBIT(v->subtype, Train_Multiheaded);
 }
 
@@ -164,6 +180,7 @@
  */
 static inline void SetMultiheaded(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	SETBIT(v->subtype, Train_Multiheaded);
 }
 
@@ -172,6 +189,7 @@
  */
 static inline void ClearMultiheaded(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	CLRBIT(v->subtype, Train_Multiheaded);
 }
 
@@ -181,6 +199,7 @@
  */
 static inline bool EngineHasArticPart(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	return (v->next != NULL && IsArticulatedPart(v->next));
 }
 
@@ -201,6 +220,7 @@
  */
 static inline Vehicle *GetLastEnginePart(Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	while (EngineHasArticPart(v)) v = GetNextArticPart(v);
 	return v;
 }
@@ -211,6 +231,7 @@
  */
 static inline Vehicle *GetNextVehicle(const Vehicle *v)
 {
+	assert(v->type == VEH_TRAIN);
 	while (EngineHasArticPart(v)) v = GetNextArticPart(v);
 
 	/* v now contains the last artic part in the engine */
@@ -249,6 +270,8 @@
 	ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_TRAIN_INC : EXPENSES_TRAIN_RUN; }
 	WindowClass GetVehicleListWindowClass() const { return WC_TRAINS_LIST; }
 	void PlayLeaveStationSound() const;
+	bool IsPrimaryVehicle() const { return IsFrontEngine(this); }
+	bool HasFront() const { return true; }
 };
 
 #endif /* TRAIN_H */
--- a/src/train_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/train_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -15,6 +15,7 @@
 #include "tile.h"
 #include "tunnel_map.h"
 #include "vehicle.h"
+#include "articulated_vehicles.h"
 #include "command.h"
 #include "pathfind.h"
 #include "npf.h"
@@ -501,75 +502,6 @@
 	DrawSprite(image, pal, x, y);
 }
 
-uint CountArticulatedParts(EngineID engine_type)
-{
-	if (!HASBIT(EngInfo(engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return 0;
-
-	uint i;
-	for (i = 1; i < 10; i++) {
-		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL);
-		if (callback == CALLBACK_FAILED || callback == 0xFF) break;
-	}
-
-	return i - 1;
-}
-
-static void AddArticulatedParts(Vehicle **vl)
-{
-	const Vehicle *v = vl[0];
-	Vehicle *u = vl[0];
-
-	if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
-
-	for (uint i = 1; i < 10; i++) {
-		uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, v);
-		if (callback == CALLBACK_FAILED || callback == 0xFF) return;
-
-		/* Attempt to use pre-allocated vehicles until they run out. This can happen
-		 * if the callback returns different values depending on the cargo type. */
-		u->next = vl[i];
-		if (u->next == NULL) u->next = AllocateVehicle();
-		if (u->next == NULL) return;
-
-		u = u->next;
-
-		EngineID engine_type = GB(callback, 0, 7);
-		bool flip_image = HASBIT(callback, 7);
-		const RailVehicleInfo *rvi_artic = RailVehInfo(engine_type);
-
-		/* get common values from first engine */
-		u->direction = v->direction;
-		u->owner = v->owner;
-		u->tile = v->tile;
-		u->x_pos = v->x_pos;
-		u->y_pos = v->y_pos;
-		u->z_pos = v->z_pos;
-		u->u.rail.track = v->u.rail.track;
-		u->u.rail.railtype = v->u.rail.railtype;
-		u->build_year = v->build_year;
-		u->vehstatus = v->vehstatus & ~VS_STOPPED;
-		u->u.rail.first_engine = v->engine_type;
-
-		/* get more settings from rail vehicle info */
-		u->spritenum = rvi_artic->image_index;
-		if (flip_image) u->spritenum++;
-		u->cargo_type = rvi_artic->cargo_type;
-		u->cargo_subtype = 0;
-		u->cargo_cap = rvi_artic->capacity;
-		u->max_speed = 0;
-		u->max_age = 0;
-		u->engine_type = engine_type;
-		u->value = 0;
-		u = new (u) Train();
-		u->subtype = 0;
-		SetArticulatedPart(u);
-		u->cur_image = 0xAC2;
-		u->random_bits = VehicleRandomBits();
-
-		VehiclePositionChanged(u);
-	}
-}
-
 static int32 CmdBuildRailWagon(EngineID engine, TileIndex tile, uint32 flags)
 {
 	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
@@ -619,8 +551,10 @@
 			v->u.rail.track = TRACK_BIT_DEPOT;
 			v->vehstatus = VS_HIDDEN | VS_DEFPAL;
 
+			v = new (v) Train();
 			v->subtype = 0;
 			SetTrainWagon(v);
+
 			if (u != NULL) {
 				u->next = v;
 			} else {
@@ -637,13 +571,12 @@
 			v->u.rail.railtype = rvi->railtype;
 
 			v->build_year = _cur_year;
-			v = new (v) Train();
 			v->cur_image = 0xAC2;
 			v->random_bits = VehicleRandomBits();
 
 			v->group_id = DEFAULT_GROUP;
 
-			AddArticulatedParts(vl);
+			AddArticulatedParts(vl, VEH_TRAIN);
 
 			_new_vehicle_id = v->index;
 
@@ -693,6 +626,7 @@
 	u->z_pos = v->z_pos;
 	u->u.rail.track = TRACK_BIT_DEPOT;
 	u->vehstatus = v->vehstatus & ~VS_STOPPED;
+	u = new (u) Train();
 	u->subtype = 0;
 	SetMultiheaded(u);
 	u->spritenum = v->spritenum + 1;
@@ -705,7 +639,6 @@
 	u->build_year = v->build_year;
 	if (building) v->value >>= 1;
 	u->value = v->value;
-	u = new (u) Train();
 	u->cur_image = 0xAC2;
 	u->random_bits = VehicleRandomBits();
 	VehiclePositionChanged(u);
@@ -822,7 +755,7 @@
 				vl[0]->u.rail.other_multiheaded_part = vl[1];
 				vl[1]->u.rail.other_multiheaded_part = vl[0];
 			} else {
-				AddArticulatedParts(vl);
+				AddArticulatedParts(vl, VEH_TRAIN);
 			}
 
 			TrainConsistChanged(v);
@@ -906,6 +839,7 @@
 	Vehicle *u;
 	for (u = first; GetNextVehicle(u) != v; u = GetNextVehicle(u)) {}
 	GetLastEnginePart(u)->next = GetNextVehicle(v);
+	v->first = NULL; // we shouldn't point to the old first, since the vehicle isn't in that chain anymore
 	return first;
 }
 
@@ -1017,39 +951,6 @@
 		dst_head = NULL;
 	}
 
-	if (dst != NULL && IsMultiheaded(dst) && !IsTrainEngine(dst) && IsTrainWagon(src)) {
-		/* We are moving a wagon to the rear part of a multiheaded engine */
-		if (dst->next == NULL) {
-			/* It's the last one, so we will add the wagon just before the rear engine */
-			dst = GetPrevVehicleInChain(dst);
-			/* Now if the vehicle we want to link to is the vehicle itself, drop out */
-			if (dst == src) return CMD_ERROR;
-			/* if dst is NULL, it means that dst got a rear multiheaded engine as first engine. We can't use that */
-			if (dst == NULL) return CMD_ERROR;
-		} else {
-			/* there are more units on this train, so we will add the wagon after the next one*/
-			dst = dst->next;
-		}
-	}
-
-	if (IsTrainEngine(src) && dst_head != NULL) {
-		/* we need to make sure that we didn't place it between a pair of multiheaded engines */
-		Vehicle *engine = NULL;
-
-		for (Vehicle *u = dst_head; u != NULL; u = u->next) {
-			if (IsTrainEngine(u) && IsMultiheaded(u) && u->u.rail.other_multiheaded_part != NULL) {
-				engine = u;
-			}
-			if (engine != NULL && engine->u.rail.other_multiheaded_part == u) {
-				engine = NULL;
-			}
-			if (u == dst) {
-				if (engine != NULL) dst = engine->u.rail.other_multiheaded_part;
-				break;
-			}
-		}
-	}
-
 	if (IsMultiheaded(src) && !IsTrainEngine(src)) return_cmd_error(STR_REAR_ENGINE_FOLLOW_FRONT_ERROR);
 
 	/* when moving all wagons, we can't have the same src_head and dst_head */
@@ -1207,26 +1108,6 @@
 			src->u.rail.other_multiheaded_part->first = NULL;
 		}
 
-		if (HASBIT(p2, 0) && src_head != NULL && src_head != src) {
-			/* if we stole a rear multiheaded engine, we better give it back to the front end */
-			Vehicle *engine = NULL, *u;
-			for (u = src_head; u != NULL; u = u->next) {
-				if (IsMultiheaded(u)) {
-					if (IsTrainEngine(u)) {
-						engine = u;
-						continue;
-					}
-					/* we got the rear engine to match with the front one */
-					engine = NULL;
-				}
-			}
-			if (engine != NULL && engine->u.rail.other_multiheaded_part != NULL) {
-				AddWagonToConsist(engine->u.rail.other_multiheaded_part, engine);
-				/* previous line set the front engine to the old front. We need to clear that */
-				engine->u.rail.other_multiheaded_part->first = NULL;
-			}
-		}
-
 		/* If there is an engine behind first_engine we moved away, it should become new first_engine
 		 * To do this, CmdMoveRailVehicle must be called once more
 		 * we can't loop forever here because next time we reach this line we will have a front engine */
@@ -1324,6 +1205,9 @@
  */
 int32 CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
+	/* Check if we deleted a vehicle window */
+	Window *w = NULL;
+
 	if (!IsValidVehicleID(p1) || p2 > 2) return CMD_ERROR;
 
 	Vehicle *v = GetVehicle(p1);
@@ -1344,7 +1228,8 @@
 
 	if (flags & DC_EXEC) {
 		if (v == first && IsFrontEngine(first)) {
-			DeleteWindowById(WC_VEHICLE_VIEW, first->index);
+			w = FindWindowById(WC_VEHICLE_VIEW, first->index);
+			if (w != NULL) DeleteWindow(w);
 		}
 		InvalidateWindow(WC_VEHICLE_DEPOT, first->tile);
 		RebuildVehicleLists();
@@ -1411,7 +1296,8 @@
 					first->prev_shared = NULL;
 					first->next_shared = NULL;
 
-					if (IsLocalPlayer()) ShowTrainViewWindow(new_f);
+					/* If we deleted a window then open a new one for the 'new' train */
+					if (IsLocalPlayer() && w != NULL) ShowTrainViewWindow(new_f);
 				}
 			}
 
@@ -1467,6 +1353,15 @@
 
 						if (rear != NULL) {
 							cost -= rear->value;
+
+							/* If this is a multiheaded vehicle with nothing
+							 * between the parts, tmp will be pointing to the
+							 * rear part, which is unlinked from the train and
+							 * deleted here. However, because tmp has already
+							 * been set it needs to be updated now so that the
+							 * loop never sees the rear part. */
+							if (tmp == rear) tmp = GetNextVehicle(tmp);
+
 							if (flags & DC_EXEC) {
 								first = UnlinkWagon(rear, first);
 								DeleteDepotHighlightOfVehicle(rear);
@@ -1937,7 +1832,7 @@
 		Trackdir trackdir_rev = ReverseTrackdir(GetVehicleTrackdir(last));
 
 		assert(trackdir != INVALID_TRACKDIR);
-		NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, last->tile, trackdir_rev, TRANSPORT_RAIL, v->owner, v->u.rail.compatible_railtypes, NPF_INFINITE_PENALTY);
+		NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, last->tile, trackdir_rev, TRANSPORT_RAIL, 0, v->owner, v->u.rail.compatible_railtypes, NPF_INFINITE_PENALTY);
 		if (ftd.best_bird_dist == 0) {
 			/* Found target */
 			tfdd.tile = ftd.node.tile;
@@ -2302,7 +2197,7 @@
 		Trackdir trackdir = GetVehicleTrackdir(v);
 		assert(trackdir != 0xff);
 
-		NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_RAIL, v->owner, v->u.rail.compatible_railtypes);
+		NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_RAIL, 0, v->owner, v->u.rail.compatible_railtypes);
 
 		if (ftd.best_trackdir == 0xff) {
 			/* We are already at our target. Just do something
@@ -2412,7 +2307,7 @@
 		assert(trackdir != 0xff);
 		assert(trackdir_rev != 0xff);
 
-		ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, last->tile, trackdir_rev, &fstd, TRANSPORT_RAIL, v->owner, v->u.rail.compatible_railtypes);
+		ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, last->tile, trackdir_rev, &fstd, TRANSPORT_RAIL, 0, v->owner, v->u.rail.compatible_railtypes);
 		if (ftd.best_bird_dist != 0) {
 			/* We didn't find anything, just keep on going straight ahead */
 			reverse_best = false;
@@ -2777,7 +2672,7 @@
 			v != tcc->v_skip &&
 			v->type == VEH_TRAIN &&
 			v->u.rail.track != TRACK_BIT_DEPOT &&
-			myabs(v->z_pos - tcc->v->z_pos) <= 6 &&
+			myabs(v->z_pos - tcc->v->z_pos) < 6 &&
 			myabs(v->x_pos - tcc->v->x_pos) < 6 &&
 			myabs(v->y_pos - tcc->v->y_pos) < 6) {
 		return v;
@@ -2920,7 +2815,7 @@
 
 				/* Get the status of the tracks in the new tile and mask
 				 * away the bits that aren't reachable. */
-				uint32 ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL) & _reachable_tracks[enterdir];
+				uint32 ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL, 0) & _reachable_tracks[enterdir];
 
 				/* Combine the from & to directions.
 				 * Now, the lower byte contains the track status, and the byte at bit 16 contains
@@ -3265,7 +3160,7 @@
 	/* Calculate next tile */
 	tile += TileOffsByDiagDir(dir);
 	// determine the track status on the next tile.
-	uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL) & _reachable_tracks[dir];
+	uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _reachable_tracks[dir];
 
 	/* Calc position within the current tile ?? */
 	uint x = v->x_pos & 0xF;
--- a/src/tree_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/tree_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -648,7 +648,7 @@
 	/* not used */
 }
 
-static uint32 GetTileTrackStatus_Trees(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Trees(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	return 0;
 }
--- a/src/tunnelbridge_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/tunnelbridge_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -304,6 +304,9 @@
 		cost = (bridge_len + 1) * _eco->GetPrice(CEconomy::CLEAR_BRIDGE); // The cost of clearing the current bridge.
 		replace_bridge = true;
 		replaced_bridge_type = GetBridgeType(tile_start);
+
+		/* Do not remove road types when upgrading a bridge */
+		roadtypes |= GetRoadTypes(tile_start);
 	} else {
 		/* Build a new bridge. */
 
@@ -859,6 +862,39 @@
 }
 
 /**
+ * Draws the trambits over an already drawn (lower end) of a bridge.
+ * @param x       the x of the bridge
+ * @param y       the y of the bridge
+ * @param z       the z of the bridge
+ * @param offset  number representing whether to level or sloped and the direction
+ * @param overlay do we want to still see the road?
+ */
+static void DrawBridgeTramBits(int x, int y, byte z, int offset, bool overlay)
+{
+	static const SpriteID tram_offsets[2][6] = { { 107, 108, 109, 110, 111, 112 }, { 4, 5, 15, 16, 17, 18 } };
+	static const SpriteID back_offsets[6]    =   {  95,  95,  99, 102, 100, 101 };
+	static const SpriteID front_offsets[6]   =   {  97,  98, 103, 106, 104, 105 };
+
+	static const uint size_x[6] = { 11, 16, 16, 16, 16, 16 };
+	static const uint size_y[6] = { 16, 11, 16, 16, 16, 16 };
+
+	AddSortableSpriteToDraw(SPR_TRAMWAY_BASE + tram_offsets[overlay][offset], PAL_NONE, x, y, size_x[offset], size_y[offset], offset >= 2 ? 1 : 0, z);
+
+	SpriteID front = SPR_TRAMWAY_BASE + front_offsets[offset];
+	SpriteID back  = SPR_TRAMWAY_BASE + back_offsets[offset];
+	SpriteID pal   = PAL_NONE;
+	if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
+		SETBIT(front, PALETTE_MODIFIER_TRANSPARENT);
+		SETBIT(back,  PALETTE_MODIFIER_TRANSPARENT);
+		pal = PALETTE_TO_TRANSPARENT;
+	}
+
+	AddSortableSpriteToDraw(back,  pal, x, y, size_x[offset], size_y[offset], 0, z);
+	/* For sloped sprites the bounding box needs to be higher, as the pylons stop on a higher point */
+	AddSortableSpriteToDraw(front, pal, x, y, size_x[offset], size_y[offset], offset >= 2 ? 0x30 : 0x10, z);
+}
+
+/**
  * Draws a tunnel of bridge tile.
  * For tunnels, this is rather simple, as you only needa draw the entrance.
  * Bridges are a bit more complex. base_offset is where the sprite selection comes into play
@@ -887,7 +923,17 @@
 
 		image += GetTunnelDirection(ti->tile) * 2;
 		DrawGroundSprite(image, PAL_NONE);
-		if (GetTunnelTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
+		if (GetTunnelTransportType(ti->tile) == TRANSPORT_ROAD) {
+			DiagDirection dir = GetTunnelDirection(ti->tile);
+			RoadTypes rts = GetRoadTypes(ti->tile);
+
+			if (HASBIT(rts, ROADTYPE_TRAM)) {
+				static const SpriteID tunnel_sprites[2][4] = { { 28, 78, 79, 27 }, {  5, 76, 77,  4 } };
+
+				DrawGroundSprite(SPR_TRAMWAY_BASE + tunnel_sprites[rts - ROADTYPES_TRAM][dir], PAL_NONE);
+				AddSortableSpriteToDraw(SPR_TRAMWAY_TUNNEL_WIRES + dir, PAL_NONE, ti->x, ti->y, 16, 16, 16, (byte)ti->z);
+			}
+		} else if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
 			DrawCatenary(ti);
 		}
 
@@ -927,10 +973,6 @@
 			DrawGroundSprite(SPR_FLAT_SNOWY_TILE + _tileh_to_sprite[ti->tileh], PAL_NONE);
 		}
 
-		if (GetBridgeTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
-			DrawCatenary(ti);
-		}
-
 		image = psid->sprite;
 
 		/* draw ramp */
@@ -945,9 +987,27 @@
 		 * it doesn't disappear behind it
 		 */
 		AddSortableSpriteToDraw(
-			image, pal, ti->x, ti->y, 16, 16, ti->tileh == SLOPE_FLAT ? 1 : 8, ti->z
+			image, pal, ti->x, ti->y, 16, 16, ti->tileh == SLOPE_FLAT ? 0 : 8, ti->z
 		);
 
+		if (GetBridgeTransportType(ti->tile) == TRANSPORT_ROAD) {
+			RoadTypes rts = GetRoadTypes(ti->tile);
+
+			if (HASBIT(rts, ROADTYPE_TRAM)) {
+				uint offset = GetBridgeRampDirection(ti->tile);
+				uint z = ti->z;
+				if (ti->tileh != SLOPE_FLAT) {
+					offset = (offset + 1) & 1;
+					z += TILE_HEIGHT;
+				} else {
+					offset += 2;
+				}
+				DrawBridgeTramBits(ti->x, ti->y, z, offset, HASBIT(rts, ROADTYPE_ROAD));
+			}
+		} else if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
+			DrawCatenary(ti);
+		}
+
 		DrawBridgeMiddle(ti);
 	}
 }
@@ -1023,7 +1083,8 @@
 
 	x = ti->x;
 	y = ti->y;
-	z = GetBridgeHeight(rampsouth) - 3;
+	uint bridge_z = GetBridgeHeight(rampsouth);
+	z = bridge_z - 3;
 
 	image = psid->sprite;
 	if (HASBIT(_transparent_opt, TO_BRIDGES)) {
@@ -1048,6 +1109,16 @@
 		pal = psid->pal;
 	}
 
+	if (GetBridgeTransportType(rampsouth) == TRANSPORT_ROAD) {
+		RoadTypes rts = GetRoadTypes(rampsouth);
+
+		if (HASBIT(rts, ROADTYPE_TRAM)) {
+			DrawBridgeTramBits(x, y, bridge_z, axis ^ 1, HASBIT(rts, ROADTYPE_ROAD));
+		}
+	} else if (GetRailType(rampsouth) == RAILTYPE_ELECTRIC) {
+		DrawCatenary(ti);
+	}
+
 	/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
 	if (axis == AXIS_X) {
 		y += 12;
@@ -1057,8 +1128,6 @@
 		if (image & SPRITE_MASK) AddSortableSpriteToDraw(image, pal, x, y, 1, 16, 0x28, z);
 	}
 
-	if (GetRailType(rampsouth) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
-
 	psid++;
 	if (ti->z + 5 == z) {
 		/* draw poles below for small bridges */
@@ -1236,13 +1305,15 @@
 }
 
 
-static uint32 GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	if (IsTunnel(tile)) {
 		if (GetTunnelTransportType(tile) != mode) return 0;
+		if (GetTunnelTransportType(tile) == TRANSPORT_ROAD && (GetRoadTypes(tile) & sub_mode) == 0) return 0;
 		return AxisToTrackBits(DiagDirToAxis(GetTunnelDirection(tile))) * 0x101;
 	} else {
 		if (GetBridgeTransportType(tile) != mode) return 0;
+		if (GetBridgeTransportType(tile) == TRANSPORT_ROAD && (GetRoadTypes(tile) & sub_mode) == 0) return 0;
 		return AxisToTrackBits(DiagDirToAxis(GetBridgeRampDirection(tile))) * 0x101;
 	}
 }
@@ -1254,7 +1325,14 @@
 	if (new_player != PLAYER_SPECTATOR) {
 		SetTileOwner(tile, new_player);
 	} else {
-		DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
+		if (CmdFailed(DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
+			/* When clearing the bridge/tunnel failed there are still vehicles on/in
+			 * the bridge/tunnel. As all *our* vehicles are already removed, they
+			 * must be of another owner. Therefor this must be a road bridge/tunnel.
+			 * In that case we can safely reassign the ownership to OWNER_NONE. */
+			assert((IsTunnel(tile) ? GetTunnelTransportType(tile) : GetBridgeTransportType(tile)) == TRANSPORT_ROAD);
+			SetTileOwner(tile, OWNER_NONE);
+		}
 	}
 }
 
@@ -1349,7 +1427,7 @@
 	} else if (IsBridge(tile)) { // XXX is this necessary?
 		DiagDirection dir;
 
-		if (v->type == VEH_ROAD || (v->type == VEH_TRAIN && IsFrontEngine(v))) {
+		if (v->HasFront() && v->IsPrimaryVehicle()) {
 			/* modify speed of vehicle */
 			uint16 spd = _bridge[GetBridgeType(tile)].speed;
 
--- a/src/unix.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/unix.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -87,8 +87,11 @@
 	if (FiosIsRoot(path)) {
 		snprintf(filename, lengthof(filename), "%s:%s", path, ent->d_name);
 	} else // XXX - only next line!
+#else
+	assert(path[strlen(path) - 1] == PATHSEPCHAR);
+	if (strlen(path) > 2) assert(path[strlen(path) - 2] != PATHSEPCHAR);
 #endif
-	snprintf(filename, lengthof(filename), "%s" PATHSEP "%s", path, ent->d_name);
+	snprintf(filename, lengthof(filename), "%s%s", path, ent->d_name);
 
 	return stat(filename, sb) == 0;
 }
--- a/src/unmovable_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/unmovable_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -73,7 +73,7 @@
 	MarkTileDirtyByTile(tile + TileDiffXY(1, 1));
 }
 
-extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station);
+extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true);
 
 /** Build or relocate the HQ. This depends if the HQ is already built or not
  * @param tile tile where the HQ will be built or relocated to
@@ -320,7 +320,7 @@
 }
 
 
-static uint32 GetTileTrackStatus_Unmovable(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Unmovable(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	return 0;
 }
--- a/src/variables.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/variables.h	Wed Jun 13 12:05:56 2007 +0000
@@ -114,6 +114,7 @@
 	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
@@ -122,6 +123,7 @@
 	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
--- a/src/vehicle.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/vehicle.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -230,17 +230,26 @@
 
 		v->first = NULL;
 		if (v->type == VEH_TRAIN) v->u.rail.first_engine = INVALID_ENGINE;
+		if (v->type == VEH_ROAD)  v->u.road.first_engine = INVALID_ENGINE;
 	}
 
 	FOR_ALL_VEHICLES(v) {
-		if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v)))
+		if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
 			TrainConsistChanged(v);
+		} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
+			RoadVehUpdateCache(v);
+		}
 	}
 
 	FOR_ALL_VEHICLES(v) {
 		switch (v->type) {
+			case VEH_ROAD:
+				v->cur_image = GetRoadVehImage(v, v->direction);
+				v->u.road.roadtype = HASBIT(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
+				v->u.road.compatible_roadtypes = RoadTypeToRoadTypes(v->u.road.roadtype);
+				break;
+
 			case VEH_TRAIN: v->cur_image = GetTrainImage(v, v->direction); break;
-			case VEH_ROAD: v->cur_image = GetRoadVehImage(v, v->direction); break;
 			case VEH_SHIP: v->cur_image = GetShipImage(v, v->direction); break;
 			case VEH_AIRCRAFT:
 				if (IsNormalAircraft(v)) {
@@ -493,7 +502,7 @@
 {
 	Vehicle *u;
 
-	FOR_ALL_VEHICLES(u) if (u->type == VEH_TRAIN && u->next == v) return u;
+	FOR_ALL_VEHICLES(u) if (u->type == v->type && u->next == v) return u;
 
 	return NULL;
 }
@@ -526,10 +535,14 @@
 	Vehicle* u;
 
 	assert(v != NULL);
-	assert(v->type == VEH_TRAIN);
+	assert(v->type == VEH_TRAIN || v->type == VEH_ROAD);
 
 	if (v->first != NULL) {
-		if (IsFrontEngine(v->first) || IsFreeWagon(v->first)) return v->first;
+		if (v->type == VEH_TRAIN) {
+			if (IsFrontEngine(v->first) || IsFreeWagon(v->first)) return v->first;
+		} else {
+			if (IsRoadVehFront(v->first)) return v->first;
+		}
 
 		DEBUG(misc, 0, "v->first cache faulty. We shouldn't be here, rebuilding cache!");
 	}
@@ -543,8 +556,10 @@
 	while ((u = GetPrevVehicleInChain_bruteforce(v)) != NULL) v = u;
 
 	/* Set the first pointer of all vehicles in that chain to the first wagon */
-	if (IsFrontEngine(v) || IsFreeWagon(v))
+	if ((v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) ||
+			(v->type == VEH_ROAD && IsRoadVehFront(v))) {
 		for (u = (Vehicle *)v; u != NULL; u = u->next) u->first = (Vehicle *)v;
+	}
 
 	return (Vehicle*)v;
 }
@@ -567,9 +582,8 @@
 		case VEH_TRAIN:
 			return !IsArticulatedPart(v) && // tenders and other articulated parts
 			(!IsMultiheaded(v) || IsTrainEngine(v)); // rear parts of multiheaded engines
-		case VEH_ROAD:
-		case VEH_SHIP:
-			return true;
+		case VEH_ROAD: return IsRoadVehFront(v);
+		case VEH_SHIP: return true;
 		default: return false; // Only count player buildable vehicles
 	}
 }
@@ -585,7 +599,7 @@
 		if (v->owner == _local_player) InvalidateAutoreplaceWindow(v->engine_type);
 
 		if (IsValidGroupID(v->group_id)) GetGroup(v->group_id)->num_engines[v->engine_type]--;
-		if (v->type != VEH_TRAIN || IsFrontEngine(v)) DecreaseGroupNumVehicle(v->group_id);
+		if (v->IsPrimaryVehicle()) DecreaseGroupNumVehicle(v->group_id);
 	}
 
 	DeleteVehicleNews(v->index, INVALID_STRING_ID);
@@ -604,14 +618,25 @@
 	/* Now remove any artic part. This will trigger an other
 	 *  destroy vehicle, which on his turn can remove any
 	 *  other artic parts. */
-	if (EngineHasArticPart(v)) DeleteVehicle(v->next);
+	if ((v->type == VEH_TRAIN && EngineHasArticPart(v)) || (v->type == VEH_ROAD && RoadVehHasArticPart(v))) {
+		DeleteVehicle(v->next);
+	}
 }
 
+/**
+ * Deletes all vehicles in a chain.
+ * @param v The first vehicle in the chain.
+ *
+ * @warning This function is not valid for any vehicle containing articulated
+ * parts.
+ */
 void DeleteVehicleChain(Vehicle *v)
 {
+	assert(v->type != VEH_TRAIN && v->type != VEH_ROAD);
+
 	do {
 		Vehicle *u = v;
-		v = GetNextVehicle(v);
+		v = v->next;
 		DeleteVehicle(u);
 	} while (v != NULL);
 }
@@ -691,6 +716,7 @@
 			case VEH_SHIP:
 				if (v->type == VEH_TRAIN && IsTrainWagon(v)) continue;
 				if (v->type == VEH_AIRCRAFT && v->subtype != AIR_HELICOPTER) continue;
+				if (v->type == VEH_ROAD && !IsRoadVehFront(v)) continue;
 
 				v->motion_counter += (v->direction & 1) ? (v->cur_speed * 3) / 4 : v->cur_speed;
 				/* Play a running sound if the motion counter passes 256 (Do we not skip sounds?) */
@@ -1789,7 +1815,7 @@
 	v = v_front;
 
 	do {
-		if (IsMultiheaded(v) && !IsTrainEngine(v)) {
+		if (v->type == VEH_TRAIN && IsMultiheaded(v) && !IsTrainEngine(v)) {
 			/* we build the rear ends of multiheaded trains with the front ones */
 			continue;
 		}
@@ -1811,7 +1837,14 @@
 			if (v->type == VEH_TRAIN && !IsFrontEngine(v)) {
 				/* this s a train car
 				 * add this unit to the end of the train */
-				DoCommand(0, (w_rear->index << 16) | w->index, 1, flags, CMD_MOVE_RAIL_VEHICLE);
+				int32 result = DoCommand(0, (w_rear->index << 16) | w->index, 1, flags, CMD_MOVE_RAIL_VEHICLE);
+				if (CmdFailed(result)) {
+					/* The train can't be joined to make the same consist as the original.
+					 * Sell what we already made (clean up) and return an error.           */
+					DoCommand(w_front->tile, w_front->index, 1, flags, GetCmdSellVeh(w_front));
+					DoCommand(w_front->tile, w->index,       1, flags, GetCmdSellVeh(w));
+					return result; // return error and the message returned from CMD_MOVE_RAIL_VEHICLE
+				}
 			} else {
 				/* this is a front engine or not a train. It need orders */
 				w_front = w;
@@ -1855,6 +1888,8 @@
 
 				if (w->type == VEH_TRAIN && EngineHasArticPart(w)) {
 					w = GetNextArticPart(w);
+				} else if (w->type == VEH_ROAD && RoadVehHasArticPart(w)) {
+					w = w->next;
 				} else {
 					break;
 				}
@@ -1865,9 +1900,17 @@
 					total_cost += GetRefitCost(v->engine_type);
 				}
 			}
-		} while (v->type == VEH_TRAIN && EngineHasArticPart(v) && (v = GetNextArticPart(v)) != NULL);
-
-		if (flags & DC_EXEC) w = GetNextVehicle(w);
+
+			if (v->type == VEH_TRAIN && EngineHasArticPart(v)) {
+				v = GetNextArticPart(v);
+			} else if (v->type == VEH_ROAD && RoadVehHasArticPart(v)) {
+				v = v->next;
+			} else {
+				break;
+			}
+		} while (v != NULL);
+
+		if ((flags & DC_EXEC) && v->type == VEH_TRAIN) w = GetNextVehicle(w);
 	} while (v->type == VEH_TRAIN && (v = GetNextVehicle(v)) != NULL);
 
 	/* Since we can't estimate the cost of cloning a vehicle accurately we must
@@ -1943,7 +1986,7 @@
 
 		case VEH_ROAD:
 			FOR_ALL_VEHICLES(v) {
-				if (v->tile == tile && v->type == VEH_ROAD && IsRoadVehInDepot(v)) {
+				if (v->tile == tile && v->type == VEH_ROAD && IsRoadVehInDepot(v) && IsRoadVehFront(v)) {
 					if (*engine_count == *engine_list_length) ExtendVehicleListSize((const Vehicle***)engine_list, engine_list_length, 25);
 					(*engine_list)[(*engine_count)++] = v;
 				}
@@ -1992,16 +2035,13 @@
 */
 uint GenerateVehicleSortList(const Vehicle ***sort_list, uint16 *length_of_array, VehicleType type, PlayerID owner, uint32 index, uint16 window_type)
 {
-	const byte subtype = (type != VEH_AIRCRAFT) ? (byte)Train_Front : (byte)AIR_AIRCRAFT;
 	uint n = 0;
 	const Vehicle *v;
 
 	switch (window_type) {
 		case VLW_STATION_LIST: {
 			FOR_ALL_VEHICLES(v) {
-				if (v->type == type && (
-					(type == VEH_TRAIN && IsFrontEngine(v)) ||
-					(type != VEH_TRAIN && v->subtype <= subtype))) {
+				if (v->type == type && v->IsPrimaryVehicle()) {
 					const Order *order;
 
 					FOR_VEHICLE_ORDERS(v, order) {
@@ -2034,9 +2074,7 @@
 
 		case VLW_STANDARD: {
 			FOR_ALL_VEHICLES(v) {
-				if (v->type == type && v->owner == owner && (
-					(type == VEH_TRAIN && IsFrontEngine(v)) ||
-					(type != VEH_TRAIN && v->subtype <= subtype))) {
+				if (v->type == type && v->owner == owner && v->IsPrimaryVehicle()) {
 					/* TODO find a better estimate on the total number of vehicles for current player */
 					if (n == *length_of_array) ExtendVehicleListSize(sort_list, length_of_array, GetNumVehicles()/4);
 					(*sort_list)[n++] = v;
@@ -2047,9 +2085,7 @@
 
 		case VLW_DEPOT_LIST: {
 			FOR_ALL_VEHICLES(v) {
-				if (v->type == type && (
-					(type == VEH_TRAIN && IsFrontEngine(v)) ||
-					(type != VEH_TRAIN && v->subtype <= subtype))) {
+				if (v->type == type && v->IsPrimaryVehicle()) {
 					const Order *order;
 
 					FOR_VEHICLE_ORDERS(v, order) {
@@ -2066,10 +2102,8 @@
 
  		case VLW_GROUP_LIST:
 			FOR_ALL_VEHICLES(v) {
-				if (v->type == type && (
-							(type == VEH_TRAIN && IsFrontEngine(v)) ||
-							(type != VEH_TRAIN && v->subtype <= subtype)
-						) && v->owner == owner && v->group_id == index) {
+				if (v->type == type && v->IsPrimaryVehicle() &&
+						v->owner == owner && v->group_id == index) {
 					if (n == *length_of_array) ExtendVehicleListSize(sort_list, length_of_array, GetNumVehicles() / 4);
 
 					(*sort_list)[n++] = v;
@@ -2151,7 +2185,7 @@
 
 		case VEH_ROAD:
 			InvalidateWindowClasses(WC_ROADVEH_LIST);
-			v->u.road.state = RVSB_IN_DEPOT;
+			if (!IsRoadVehFront(v)) v = GetFirstVehicleInChain(v);
 			break;
 
 		case VEH_SHIP:
@@ -2515,7 +2549,13 @@
 			case VEH_ROAD: {
 				const RoadVehicleInfo *rvi = RoadVehInfo(engine_type);
 				if (cargo_type == CT_INVALID) cargo_type = rvi->cargo_type;
-				scheme = IsCargoInClass(cargo_type, CC_PASSENGERS) ? LS_BUS : LS_TRUCK;
+				if (HASBIT(EngInfo(engine_type)->misc_flags, EF_ROAD_TRAM)) {
+					/* Tram */
+					scheme = IsCargoInClass(cargo_type, CC_PASSENGERS) ? LS_PASSENGER_TRAM : LS_FREIGHT_TRAM;
+				} else {
+					/* Bus or truck */
+					scheme = IsCargoInClass(cargo_type, CC_PASSENGERS) ? LS_BUS : LS_TRUCK;
+				}
 				break;
 			}
 
@@ -2584,7 +2624,7 @@
 {
 	if (v->type == VEH_TRAIN) {
 		return GetEngineColourMap(
-			(v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ?
+			(v->u.rail.first_engine != INVALID_ENGINE && (UsesWagonOverride(v) || (IsArticulatedPart(v) && RailVehInfo(v->engine_type)->railveh_type != RAILVEH_WAGON))) ?
 				v->u.rail.first_engine : v->engine_type,
 			v->owner, v->u.rail.first_engine, v);
 	}
@@ -2703,7 +2743,7 @@
 
 
 static const SaveLoad _train_desc[] = {
-	SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN, 0), // Train type. VEH_TRAIN in mem, 0 in file.
+	SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN),
 	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, crash_anim_pos),         SLE_UINT16),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, force_proceed),          SLE_UINT8),
@@ -2721,7 +2761,7 @@
 };
 
 static const SaveLoad _roadveh_desc[] = {
-	SLE_WRITEBYTE(Vehicle, type, VEH_ROAD, 1), // Road type. VEH_ROAD in mem, 1 in file.
+	SLE_WRITEBYTE(Vehicle, type, VEH_ROAD),
 	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, state),          SLE_UINT8),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, frame),          SLE_UINT8),
@@ -2741,7 +2781,7 @@
 };
 
 static const SaveLoad _ship_desc[] = {
-	SLE_WRITEBYTE(Vehicle, type, VEH_SHIP, 2), // Ship type. VEH_SHIP in mem, 2 in file.
+	SLE_WRITEBYTE(Vehicle, type, VEH_SHIP),
 	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
 	SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleShip, state), SLE_UINT8),
 
@@ -2752,7 +2792,7 @@
 };
 
 static const SaveLoad _aircraft_desc[] = {
-	SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT, 3), // Aircraft type. VEH_AIRCRAFT in mem, 3 in file.
+	SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT),
 	SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, crashed_counter), SLE_UINT16),
 	    SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, pos),             SLE_UINT8),
@@ -2771,7 +2811,7 @@
 };
 
 static const SaveLoad _special_desc[] = {
-	SLE_WRITEBYTE(Vehicle,type,VEH_SPECIAL, 4),
+	SLE_WRITEBYTE(Vehicle, type, VEH_SPECIAL),
 
 	    SLE_VAR(Vehicle, subtype,       SLE_UINT8),
 
@@ -2799,7 +2839,7 @@
 };
 
 static const SaveLoad _disaster_desc[] = {
-	SLE_WRITEBYTE(Vehicle, type, VEH_DISASTER, 5),
+	SLE_WRITEBYTE(Vehicle, type, VEH_DISASTER),
 
 	    SLE_REF(Vehicle, next,          REF_VEHICLE_OLD),
 
@@ -2870,7 +2910,8 @@
 			error("Vehicles: failed loading savegame: too many vehicles");
 
 		v = GetVehicle(index);
-		SlObject(v, (SaveLoad*)_veh_descs[SlReadByte()]);
+		VehicleType vtype = (VehicleType)SlReadByte();
+		SlObject(v, (SaveLoad*)_veh_descs[vtype]);
 
 		switch (v->type) {
 			case VEH_TRAIN:    v = new (v) Train();           break;
@@ -2952,7 +2993,7 @@
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
 
-	GetStation(this->last_station_visited)->MarkTilesDirty();
+	GetStation(this->last_station_visited)->MarkTilesDirty(true);
 	this->MarkDirty();
 }
 
--- a/src/vehicle.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/vehicle.h	Wed Jun 13 12:05:56 2007 +0000
@@ -8,6 +8,7 @@
 #include "oldpool.h"
 #include "order.h"
 #include "rail.h"
+#include "road.h"
 
 /** The returned bits of VehicleEnterTile. */
 enum VehicleEnterTileStatus {
@@ -188,6 +189,11 @@
 	byte reverse_ctr;
 	struct RoadStop *slot;
 	byte slot_age;
+	EngineID first_engine;
+	byte cached_veh_length;
+
+	RoadType roadtype;
+	RoadTypes compatible_roadtypes;
 };
 
 struct VehicleSpecial {
@@ -395,6 +401,17 @@
 	 * Play the sound associated with leaving the station
 	 */
 	virtual void PlayLeaveStationSound() const {}
+
+	/**
+	 * Whether this is the primary vehicle in the chain.
+	 */
+	virtual bool IsPrimaryVehicle() const { return false; }
+
+	/**
+	 * Whether this vehicle understands the concept of a front engine, so
+	 * basically, if GetFirstVehicleInChain() can be called for it.
+	 */
+	virtual bool HasFront() const { return false; }
 };
 
 /**
--- a/src/vehicle_gui.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/vehicle_gui.h	Wed Jun 13 12:05:56 2007 +0000
@@ -51,7 +51,7 @@
 int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number);
 
 void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip, VehicleID selection);
-void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection);
+void DrawRoadVehImage(const Vehicle *v, int x, int y, int count, VehicleID selection);
 void DrawShipImage(const Vehicle *v, int x, int y, VehicleID selection);
 void DrawAircraftImage(const Vehicle *v, int x, int y, VehicleID selection);
 
@@ -75,7 +75,7 @@
 {
 	switch (v->type) {
 		case VEH_TRAIN:    DrawTrainImage(v, x, y, count, skip, selection); break;
-		case VEH_ROAD:     DrawRoadVehImage(v, x, y, selection);            break;
+		case VEH_ROAD:     DrawRoadVehImage(v, x, y, count, selection);     break;
 		case VEH_SHIP:     DrawShipImage(v, x, y, selection);               break;
 		case VEH_AIRCRAFT: DrawAircraftImage(v, x, y, selection);           break;
 		default: NOT_REACHED();
--- a/src/viewport.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/viewport.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -23,6 +23,7 @@
 #include "waypoint.h"
 #include "variables.h"
 #include "train.h"
+#include "roadveh.h"
 
 #define VIEWPORT_DRAW_MEM (65536 * 2)
 
@@ -183,6 +184,9 @@
 
 	WP(w, vp_d).scrollpos_x = pt.x;
 	WP(w, vp_d).scrollpos_y = pt.y;
+	WP(w, vp_d).dest_scrollpos_x = pt.x;
+	WP(w, vp_d).dest_scrollpos_y = pt.y;
+
 	w->viewport = vp;
 	vp->virtual_left = 0;//pt.x;
 	vp->virtual_top = 0;//pt.y;
@@ -855,9 +859,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 }
@@ -928,9 +929,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 }
@@ -1001,9 +999,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 }
@@ -1074,9 +1069,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 }
@@ -1386,6 +1378,25 @@
 		/* Center of the viewport is hot spot */
 		x = WP(w,vp_d).scrollpos_x + vp->virtual_width / 2;
 		y = WP(w,vp_d).scrollpos_y + vp->virtual_height / 2;
+
+		int dest_x = WP(w,vp_d).dest_scrollpos_x + vp->virtual_width / 2;
+		int dest_y = WP(w,vp_d).dest_scrollpos_y + vp->virtual_height / 2;
+
+		int delta_x = dest_x - x;
+		int delta_y = dest_y - y;
+
+		if (delta_x != 0 || delta_y != 0) {
+			if (_patches.smooth_scroll) {
+				int max_scroll = ScaleByMapSize1D(512);
+				/* Not at our desired positon yet... */
+				x += clamp(delta_x / 8, -max_scroll, max_scroll);
+				y += clamp(delta_y / 8, -max_scroll, max_scroll);
+			} else {
+				x = dest_x;
+				y = dest_y;
+			}
+		}
+
 		/* Convert viewport coordinates to map coordinates
 		 * Calculation is scaled by 4 to avoid rounding errors */
 		vx = -x + y * 2;
@@ -1559,9 +1570,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 
@@ -1620,9 +1628,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 
@@ -1681,9 +1686,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 
@@ -1742,9 +1744,6 @@
 			}
 			break;
 
-		case ZOOM_LVL_OUT_16X:
-			break;
-
 		default: NOT_REACHED();
 	}
 
@@ -1766,12 +1765,18 @@
 	ShowTrainViewWindow(v);
 }
 
+static void SafeShowRoadVehViewWindow(const Vehicle *v)
+{
+	if (!IsRoadVehFront(v)) v = GetFirstVehicleInChain(v);
+	ShowRoadVehViewWindow(v);
+}
+
 static void Nop(const Vehicle *v) {}
 
 typedef void OnVehicleClickProc(const Vehicle *v);
 static OnVehicleClickProc* const _on_vehicle_click_proc[] = {
 	SafeShowTrainViewWindow,
-	ShowRoadVehViewWindow,
+	SafeShowRoadVehViewWindow,
 	ShowShipViewWindow,
 	ShowAircraftViewWindow,
 	Nop, // Special vehicles
@@ -1841,26 +1846,31 @@
 
 
 /* scrolls the viewport in a window to a given location */
-bool ScrollWindowTo(int x , int y, Window *w)
+bool ScrollWindowTo(int x , int y, Window *w, bool instant)
 {
 	Point pt;
 
 	pt = MapXYZToViewport(w->viewport, x, y, GetSlopeZ(x, y));
 	WP(w, vp_d).follow_vehicle = INVALID_VEHICLE;
 
-	if (WP(w, vp_d).scrollpos_x == pt.x && WP(w, vp_d).scrollpos_y == pt.y)
+	if (WP(w, vp_d).dest_scrollpos_x == pt.x && WP(w, vp_d).dest_scrollpos_y == pt.y)
 		return false;
 
-	WP(w, vp_d).scrollpos_x = pt.x;
-	WP(w, vp_d).scrollpos_y = pt.y;
+	if (instant) {
+		WP(w, vp_d).scrollpos_x = pt.x;
+		WP(w, vp_d).scrollpos_y = pt.y;
+	}
+
+	WP(w, vp_d).dest_scrollpos_x = pt.x;
+	WP(w, vp_d).dest_scrollpos_y = pt.y;
 	return true;
 }
 
 
-bool ScrollMainWindowTo(int x, int y)
+bool ScrollMainWindowTo(int x, int y, bool instant)
 {
 	Window *w;
-	bool res = ScrollWindowTo(x, y, FindWindowById(WC_MAIN_WINDOW, 0));
+	bool res = ScrollWindowTo(x, y, FindWindowById(WC_MAIN_WINDOW, 0), instant);
 
 	/* If a user scrolls to a tile (via what way what so ever) and already is on
 	 *  that tile (e.g.: pressed twice), move the smallmap to that location,
@@ -1877,9 +1887,9 @@
 }
 
 
-bool ScrollMainWindowToTile(TileIndex tile)
+bool ScrollMainWindowToTile(TileIndex tile, bool instant)
 {
-	return ScrollMainWindowTo(TileX(tile) * TILE_SIZE + TILE_SIZE / 2, TileY(tile) * TILE_SIZE + TILE_SIZE / 2);
+	return ScrollMainWindowTo(TileX(tile) * TILE_SIZE + TILE_SIZE / 2, TileY(tile) * TILE_SIZE + TILE_SIZE / 2, instant);
 }
 
 void SetRedErrorSquare(TileIndex tile)
--- a/src/water_cmd.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/water_cmd.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -23,6 +23,7 @@
 #include "depot.h"
 #include "vehicle_gui.h"
 #include "train.h"
+#include "roadveh.h"
 #include "water_map.h"
 #include "newgrf.h"
 #include "newgrf_canal.h"
@@ -641,21 +642,13 @@
 	if (!(v->vehstatus & VS_CRASHED)) {
 		uint16 pass = 0;
 
-		if (v->type == VEH_ROAD) { // flood bus/truck
-			pass = 1; // driver
-			if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo_count;
-
-			v->vehstatus |= VS_CRASHED;
-			v->u.road.crashed_ctr = 2000; // max 2220, disappear pretty fast
-			RebuildVehicleLists();
-		} else if (v->type == VEH_TRAIN) {
+		if (v->type == VEH_TRAIN || v->type == VEH_ROAD) {
 			Vehicle *u;
 
 			v = GetFirstVehicleInChain(v);
 			u = v;
-			if (IsFrontEngine(v)) pass = 4; // driver
 
-			/* crash all wagons, and count passangers */
+			/* crash all wagons, and count passengers */
 			BEGIN_ENUM_WAGONS(v)
 				if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo_count;
 				v->vehstatus |= VS_CRASHED;
@@ -663,7 +656,15 @@
 			END_ENUM_WAGONS(v)
 
 			v = u;
-			v->u.rail.crash_anim_pos = 4000; // max 4440, disappear pretty fast
+
+			if (v->type == VEH_TRAIN) {
+				if (IsFrontEngine(v)) pass += 4; // driver
+				v->u.rail.crash_anim_pos = 4000; // max 4440, disappear pretty fast
+			} else {
+				if (IsRoadVehFront(v)) pass += 1; // driver
+				v->u.road.crashed_ctr = 2000; // max 2220, disappear pretty fast
+			}
+
 			RebuildVehicleLists();
 		} else {
 			return;
@@ -725,7 +726,7 @@
 	}
 }
 
-static uint32 GetTileTrackStatus_Water(TileIndex tile, TransportType mode)
+static uint32 GetTileTrackStatus_Water(TileIndex tile, TransportType mode, uint sub_mode)
 {
 	static const byte coast_tracks[] = {0, 32, 4, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0};
 
--- a/src/win32.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/win32.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -946,16 +946,30 @@
 }
 #endif
 
-void DetermineBasePaths(const char *exe)
+char *getcwd(char *buf, size_t size)
 {
-	_paths.personal_dir = _paths.game_data_dir = MallocT<char>(MAX_PATH);
-	_paths.second_data_dir = NULL;
 #if defined(UNICODE)
 	TCHAR path[MAX_PATH];
 	GetCurrentDirectory(MAX_PATH - 1, path);
-	convert_from_fs(path, _paths.personal_dir, MAX_PATH);
+	convert_from_fs(path, buf, size);
 #else
-	GetCurrentDirectory(MAX_PATH - 1, _paths.personal_dir);
+	GetCurrentDirectory(size, buf);
+#endif
+	return buf;
+}
+
+extern char *BuildWithFullPath(const char *dir);
+
+void DetermineBasePaths(const char *exe)
+{
+	_paths.personal_dir = MallocT<char>(MAX_PATH);
+	getcwd(_paths.personal_dir, MAX_PATH);
+
+	_paths.game_data_dir = BuildWithFullPath(GAME_DATA_DIR);
+#if defined(SECOND_DATA_DIR)
+	_paths.second_data_dir = BuildWithFullPath(SECOND_DATA_DIR);
+#else
+	_paths.second_data_dir = NULL;
 #endif
 
 	_paths.personal_dir[0] = toupper(_paths.personal_dir[0]);
--- a/src/window.h	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/window.h	Wed Jun 13 12:05:56 2007 +0000
@@ -404,6 +404,8 @@
 	VehicleID follow_vehicle;
 	int32 scrollpos_x;
 	int32 scrollpos_y;
+	int32 dest_scrollpos_x;
+	int32 dest_scrollpos_y;
 };
 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(vp_d));
 
@@ -412,6 +414,8 @@
 	VehicleID follow_vehicle;
 	int32 scrollpos_x;
 	int32 scrollpos_y;
+	int32 dest_scrollpos_x;
+	int32 dest_scrollpos_y;
 	byte data_1;
 	byte data_2;
 	byte data_3;
@@ -422,6 +426,8 @@
 	uint16 follow_vehicle;
 	int32 scrollpos_x;
 	int32 scrollpos_y;
+	int32 dest_scrollpos_x;
+	int32 dest_scrollpos_y;
 	NewsItem *ni;
 };
 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(news_d));
--- a/src/yapf/follow_track.hpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/yapf/follow_track.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -45,7 +45,7 @@
 	{
 		m_old_tile = old_tile;
 		m_old_td = old_td;
-		assert((GetTileTrackStatus(m_old_tile, TT()) & TrackdirToTrackdirBits(m_old_td)) != 0);
+		assert((GetTileTrackStatus(m_old_tile, TT(), m_veh->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(m_old_td)) != 0);
 		m_exitdir = TrackdirToExitdir(m_old_td);
 		if (EnteredDepot()) return true;
 		if (!CanExitOldTile()) return false;
@@ -114,7 +114,7 @@
 		if (IsRailTT() && GetTileType(m_new_tile) == MP_RAILWAY && IsPlainRailTile(m_new_tile)) {
 			m_new_td_bits = (TrackdirBits)(GetTrackBits(m_new_tile) * 0x101);
 		} else {
-			uint32 ts = GetTileTrackStatus(m_new_tile, TT());
+			uint32 ts = GetTileTrackStatus(m_new_tile, TT(), m_veh->u.road.compatible_roadtypes);
 			m_new_td_bits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
 		}
 		return (m_new_td_bits != TRACKDIR_BIT_NONE);
--- a/src/yapf/yapf_costrail.hpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/yapf/yapf_costrail.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -121,7 +121,7 @@
 						Yapf().m_stopped_on_first_two_way_signal = true;
 						return -1;
 					}
-					SignalType sig_type = GetSignalType(tile);
+					SignalType sig_type = GetSignalType(tile, TrackdirToTrack(trackdir));
 					n.m_last_red_signal_type = sig_type;
 					n.flags_u.flags_s.m_last_signal_was_red = true;
 
--- a/src/yapf/yapf_destrail.hpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/yapf/yapf_destrail.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -113,7 +113,7 @@
 			default:
 				m_destTile = v->dest_tile;
 				m_dest_station_id = INVALID_STATION;
-				m_destTrackdirs = (TrackdirBits)(GetTileTrackStatus(v->dest_tile, TRANSPORT_RAIL) & TRACKDIR_BIT_MASK);
+				m_destTrackdirs = (TrackdirBits)(GetTileTrackStatus(v->dest_tile, TRANSPORT_RAIL, 0) & TRACKDIR_BIT_MASK);
 				break;
 		}
 		CYapfDestinationRailBase::SetDestination(v);
--- a/src/yapf/yapf_road.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/yapf/yapf_road.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -268,14 +268,14 @@
 		// our source tile will be the next vehicle tile (should be the given one)
 		TileIndex src_tile = tile;
 		// get available trackdirs on the start tile
-		uint ts = GetTileTrackStatus(tile, TRANSPORT_ROAD);
+		uint ts = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
 		TrackdirBits src_trackdirs = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
 		// select reachable trackdirs only
 		src_trackdirs &= DiagdirReachesTrackdirs(enterdir);
 
 		// get available trackdirs on the destination tile
 		TileIndex dest_tile = v->dest_tile;
-		uint dest_ts = GetTileTrackStatus(dest_tile, TRANSPORT_ROAD);
+		uint dest_ts = GetTileTrackStatus(dest_tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
 		TrackdirBits dest_trackdirs = (TrackdirBits)(dest_ts & TRACKDIR_BIT_MASK);
 
 		// set origin and destination nodes
@@ -320,7 +320,7 @@
 
 		// set destination tile, trackdir
 		//   get available trackdirs on the destination tile
-		uint dest_ts = GetTileTrackStatus(dst_tile, TRANSPORT_ROAD);
+		uint dest_ts = GetTileTrackStatus(dst_tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
 		TrackdirBits dst_td_bits = (TrackdirBits)(dest_ts & TRACKDIR_BIT_MASK);
 		Yapf().SetDestination(dst_tile, dst_td_bits);
 
@@ -345,7 +345,7 @@
 		// set origin (tile, trackdir)
 		TileIndex src_tile = v->tile;
 		Trackdir src_td = GetVehicleTrackdir(v);
-		if ((GetTileTrackStatus(src_tile, TRANSPORT_ROAD) & TrackdirToTrackdirBits(src_td)) == 0) {
+		if ((GetTileTrackStatus(src_tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(src_td)) == 0) {
 			// sometimes the roadveh is not on the road (it resides on non-existing track)
 			// how should we handle that situation?
 			return false;
@@ -438,7 +438,7 @@
 {
 	TileIndex tile = v->tile;
 	Trackdir trackdir = GetVehicleTrackdir(v);
-	if ((GetTileTrackStatus(tile, TRANSPORT_ROAD) & TrackdirToTrackdirBits(trackdir)) == 0)
+	if ((GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes) & TrackdirToTrackdirBits(trackdir)) == 0)
 		return NULL;
 
 	// handle the case when our vehicle is already in the depot tile
--- a/src/yapf/yapf_ship.cpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/yapf/yapf_ship.cpp	Wed Jun 13 12:05:56 2007 +0000
@@ -26,7 +26,7 @@
 	 *  and adds it to the open list by calling Yapf().AddNewNode(n) */
 	inline void PfFollowNode(Node& old_node)
 	{
-		TrackFollower F;
+		TrackFollower F(Yapf().GetVehicle());
 		if (F.Follow(old_node.m_key.m_tile, old_node.m_key.m_td))
 			Yapf().AddMultipleNodes(&old_node, F);
 	}
@@ -53,7 +53,7 @@
 		// convert origin trackdir to TrackdirBits
 		TrackdirBits trackdirs = TrackdirToTrackdirBits(trackdir);
 		// get available trackdirs on the destination tile
-		TrackdirBits dest_trackdirs = (TrackdirBits)(GetTileTrackStatus(v->dest_tile, TRANSPORT_WATER) & TRACKDIR_BIT_MASK);
+		TrackdirBits dest_trackdirs = (TrackdirBits)(GetTileTrackStatus(v->dest_tile, TRANSPORT_WATER, 0) & TRACKDIR_BIT_MASK);
 
 		// create pathfinder instance
 		Tpf pf;
--- a/src/zoom.hpp	Wed Jun 13 11:45:14 2007 +0000
+++ b/src/zoom.hpp	Wed Jun 13 12:05:56 2007 +0000
@@ -11,7 +11,6 @@
 	ZOOM_LVL_OUT_2X,
 	ZOOM_LVL_OUT_4X,
 	ZOOM_LVL_OUT_8X,
-	ZOOM_LVL_OUT_16X,
 	ZOOM_LVL_END,
 
 	/* Here we define in which zoom viewports are */
@@ -25,10 +24,10 @@
 	ZOOM_LVL_ROADVEH  = ZOOM_LVL_NORMAL,
 	ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL,
 
-	ZOOM_LVL_DETAIL   = ZOOM_LVL_OUT_2X, //! All zoomlevels below or equal to this, will result in details on the screen, like road-work, ...
+	ZOOM_LVL_DETAIL   = ZOOM_LVL_OUT_2X, ///< All zoomlevels below or equal to this, will result in details on the screen, like road-work, ...
 
 	ZOOM_LVL_MIN      = ZOOM_LVL_NORMAL,
-	ZOOM_LVL_MAX      = ZOOM_LVL_OUT_16X,
+	ZOOM_LVL_MAX      = ZOOM_LVL_OUT_8X,
 };
 
 extern ZoomLevel _saved_scrollpos_zoom;
@@ -37,14 +36,14 @@
 {
 	if (zoom == ZOOM_LVL_NORMAL) return value;
 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
-	return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> izoom;
+	return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom;
 }
 
 static inline int UnScaleByZoom(int value, ZoomLevel zoom)
 {
 	if (zoom == ZOOM_LVL_NORMAL) return value;
 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
-	return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << izoom;
+	return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom;
 }
 
 #endif /* ZOOM_HPP */