(svn r12896) [NoAI] -Sync: with trunk r12824:r12895. noai
authorrubidium
Fri, 25 Apr 2008 15:20:48 +0000
branchnoai
changeset 10355 ee4b5f7a5bf2
parent 10353 adf5a495f0e2
child 10358 73d8177db39e
(svn r12896) [NoAI] -Sync: with trunk r12824:r12895.
bin/ai/regression/regression.txt
config.lib
projects/generate
projects/generate.vbs
projects/openttd_vs80.vcproj
projects/openttd_vs90.vcproj
source.list
src/ai/ai_threads.cpp
src/aircraft.h
src/autoreplace_gui.cpp
src/build_vehicle_gui.cpp
src/core/overflowsafe_type.hpp
src/direction_func.h
src/economy.cpp
src/elrail.cpp
src/engine.cpp
src/fios.cpp
src/fios.h
src/gfx_type.h
src/group_cmd.cpp
src/industry_cmd.cpp
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/estonian.txt
src/lang/french.txt
src/lang/icelandic.txt
src/lang/italian.txt
src/lang/russian.txt
src/lang/slovak.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/swedish.txt
src/lang/traditional_chinese.txt
src/lang/ukrainian.txt
src/lang/unfinished/latvian.txt
src/misc/autocopyptr.hpp
src/misc/autoptr.hpp
src/misc_gui.cpp
src/newgrf.cpp
src/newgrf_engine.cpp
src/newgrf_engine.h
src/newgrf_house.cpp
src/newgrf_industrytiles.cpp
src/newgrf_station.cpp
src/news_gui.cpp
src/oldpool.h
src/oldpool_func.h
src/openttd.cpp
src/order_cmd.cpp
src/players.cpp
src/rail.h
src/rail_cmd.cpp
src/road_cmd.cpp
src/roadveh.h
src/ship.h
src/ship_cmd.cpp
src/signs.cpp
src/station.cpp
src/station_cmd.cpp
src/toolbar_gui.cpp
src/town.h
src/town_cmd.cpp
src/train.h
src/train_cmd.cpp
src/tunnelbridge_cmd.cpp
src/unix.cpp
src/vehicle.cpp
src/vehicle_base.h
src/vehicle_gui.h
src/water_cmd.cpp
src/waypoint.cpp
--- a/bin/ai/regression/regression.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/bin/ai/regression/regression.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -9,21 +9,21 @@
  abs( 21): 21
 
 --AIBase--
-  Rand():       -561136928
-  Rand():       1884901916
-  Rand():       -1202945897
+  Rand():       -71599500
+  Rand():       -625161313
+  Rand():       -38326422
   RandRange(0): 0
   RandRange(0): 0
   RandRange(0): 0
   RandRange(1): 0
   RandRange(1): 0
   RandRange(1): 0
-  RandRange(2): 0
+  RandRange(2): 1
   RandRange(2): 0
   RandRange(2): 1
-  RandRange(9): 2
+  RandRange(9): 0
+  RandRange(9): 0
   RandRange(9): 5
-  RandRange(9): 4
   Chance(1, 2): true
   Chance(1, 2): true
   Chance(1, 2): true
@@ -239,144 +239,144 @@
     1098 => 4768614
     1099 => 4772957
   Randomize ListDump:
-    1 => -619704336
-    2 => 1166439751
-    1000 => -914833827
-    1001 => -1215386906
-    1002 => -1069187552
-    1003 => 112127200
-    1004 => 1050904874
-    1005 => -429346856
-    1006 => -608971312
-    1007 => 1169222927
-    1008 => 1369657072
-    1009 => 767111199
-    1010 => 1904874981
-    1011 => 161085759
-    1012 => 271771856
-    1013 => -533081029
-    1014 => -1409657365
-    1015 => 1563875660
-    1016 => 1113935053
-    1017 => 792268145
-    1018 => -70442569
-    1019 => -547592946
-    1020 => -778640532
-    1021 => -1375060615
-    1022 => 318449191
-    1023 => -190171711
-    1024 => 178940318
-    1025 => 442765623
-    1026 => 313145543
-    1027 => -458470184
-    1028 => -1297320844
-    1029 => 2091522683
-    1030 => 529678468
-    1031 => 548268055
-    1032 => -9350756
-    1033 => -1719797748
-    1034 => -1837545138
-    1035 => 794565562
-    1036 => 465317634
-    1037 => -1928623851
-    1038 => -330437837
-    1039 => -956974293
-    1040 => 976574875
-    1041 => -1888843242
-    1042 => -2005628326
-    1043 => -1562648047
-    1044 => -868060600
-    1045 => -403788235
-    1046 => 367414207
-    1047 => 681820797
-    1048 => -1197099260
-    1049 => -650879767
-    1051 => 941556066
-    1052 => -36585116
-    1053 => -988001222
-    1054 => -1407695456
-    1055 => 1569591207
-    1056 => 1434294956
-    1057 => -879654590
-    1058 => 6511542
-    1059 => -270940883
-    1060 => 1646156529
-    1061 => 1457378902
-    1062 => -1703288615
-    1063 => -1530193095
-    1064 => 1852649127
-    1065 => -1071976838
-    1066 => 372901081
-    1067 => 934187143
-    1068 => -516975589
-    1069 => -1086784819
-    1070 => 1484112318
-    1071 => -2061433623
-    1072 => -1787587249
-    1073 => 1528388260
-    1074 => 658189461
-    1075 => 2114811864
-    1076 => 949664695
-    1077 => -1569338881
-    1078 => 880833979
-    1079 => 883721763
-    1080 => 632697644
-    1081 => 1556076896
-    1082 => -1316111879
-    1083 => -1721672483
-    1084 => -1693824167
-    1085 => 1135419548
-    1086 => -1387302877
-    1087 => 1713624705
-    1088 => 492025163
-    1089 => 1559280427
-    1090 => 703894820
-    1091 => -1626847649
-    1092 => 1977038480
-    1093 => -1644526188
-    1094 => -640385428
-    1095 => -726109663
-    1096 => -106206677
-    1097 => 291310901
-    1098 => 647492868
-    1099 => 421056347
+    1 => 5934189
+    2 => -1761272564
+    1000 => 998881475
+    1001 => 409666838
+    1002 => -948603759
+    1003 => -1581773722
+    1004 => 2104319151
+    1005 => 64634822
+    1006 => -671738360
+    1007 => 1178243491
+    1008 => 1680605747
+    1009 => 2067858917
+    1010 => -1906406406
+    1011 => -1795626673
+    1012 => 375391239
+    1013 => -494815434
+    1014 => -2138911669
+    1015 => -218170941
+    1016 => -2145147030
+    1017 => -1889805802
+    1018 => -188719086
+    1019 => 254262262
+    1020 => -1432258301
+    1021 => 753450495
+    1022 => 202826571
+    1023 => 203856518
+    1024 => 2033066803
+    1025 => -1217026074
+    1026 => 177237636
+    1027 => -1862680832
+    1028 => -809506802
+    1029 => 799054729
+    1030 => -870842760
+    1031 => 1235706796
+    1032 => 1805577366
+    1033 => -529149597
+    1034 => -1160496110
+    1035 => -2112828300
+    1036 => 1031472271
+    1037 => -1067512395
+    1038 => -1670717046
+    1039 => -1893761951
+    1040 => -1937566705
+    1041 => 875192026
+    1042 => -799929174
+    1043 => 429626413
+    1044 => -821285437
+    1045 => 1670322612
+    1046 => 1925605331
+    1047 => 1705170599
+    1048 => -256175309
+    1049 => 651753684
+    1051 => -1710121819
+    1052 => 1155454929
+    1053 => 461431108
+    1054 => -2028561436
+    1055 => 1977157906
+    1056 => -54636091
+    1057 => -669496035
+    1058 => -959189089
+    1059 => -1081705818
+    1060 => 935048341
+    1061 => 1848058144
+    1062 => 682657049
+    1063 => 9406967
+    1064 => -98686165
+    1065 => -64824797
+    1066 => 1365042371
+    1067 => 1754819174
+    1068 => 933840019
+    1069 => 1577578402
+    1070 => 420566759
+    1071 => -1872469035
+    1072 => -697881323
+    1073 => 1091027235
+    1074 => 1001969154
+    1075 => 315466472
+    1076 => 840435208
+    1077 => 2010662021
+    1078 => -1784655975
+    1079 => 1413073566
+    1080 => -841240668
+    1081 => 103625484
+    1082 => -1658507510
+    1083 => -102091421
+    1084 => 1464728002
+    1085 => 1049162075
+    1086 => 769281991
+    1087 => 384138993
+    1088 => -2064287113
+    1089 => -931746111
+    1090 => -358850804
+    1091 => 978513867
+    1092 => -1756292659
+    1093 => 73085820
+    1094 => 284986576
+    1095 => 1908549801
+    1096 => 1031985888
+    1097 => -216278913
+    1098 => 988268067
+    1099 => -618655226
   KeepTop(10):
-    1 => -619704336
-    2 => 1166439751
-    1000 => -914833827
-    1001 => -1215386906
-    1002 => -1069187552
-    1003 => 112127200
-    1004 => 1050904874
-    1005 => -429346856
-    1006 => -608971312
-    1007 => 1169222927
+    1 => 5934189
+    2 => -1761272564
+    1000 => 998881475
+    1001 => 409666838
+    1002 => -948603759
+    1003 => -1581773722
+    1004 => 2104319151
+    1005 => 64634822
+    1006 => -671738360
+    1007 => 1178243491
   KeepBottom(8):
-    1000 => -914833827
-    1001 => -1215386906
-    1002 => -1069187552
-    1003 => 112127200
-    1004 => 1050904874
-    1005 => -429346856
-    1006 => -608971312
-    1007 => 1169222927
+    1000 => 998881475
+    1001 => 409666838
+    1002 => -948603759
+    1003 => -1581773722
+    1004 => 2104319151
+    1005 => 64634822
+    1006 => -671738360
+    1007 => 1178243491
   RemoveBottom(2):
-    1000 => -914833827
-    1001 => -1215386906
-    1002 => -1069187552
-    1003 => 112127200
-    1004 => 1050904874
-    1005 => -429346856
+    1000 => 998881475
+    1001 => 409666838
+    1002 => -948603759
+    1003 => -1581773722
+    1004 => 2104319151
+    1005 => 64634822
   RemoveTop(2):
-    1002 => -1069187552
-    1003 => 112127200
-    1004 => 1050904874
-    1005 => -429346856
+    1002 => -948603759
+    1003 => -1581773722
+    1004 => 2104319151
+    1005 => 64634822
   RemoveList({1003, 1004}):
-    1002 => -1069187552
-    1005 => -429346856
+    1002 => -948603759
+    1005 => 64634822
   KeepList({1003, 1004, 1005}):
-    1005 => -429346856
+    1005 => 64634822
   AddList({1005, 4000, 4001, 4002}):
     1005 => 1005
     4000 => 4000
@@ -812,7 +812,7 @@
   SetCompanyName():     false
   GetLastErrorString(): ERR_NAME_IS_NOT_UNIQUE
   GetCompanyName():            Regression
-  GetPresidentName():          I. Campbell
+  GetPresidentName():          I. O'Donnell
   SetPresidentName():          true
   GetPresidentName():          Regression AI
   GetCompanyValue():           0
@@ -5435,7 +5435,7 @@
   GetName(0):               Benville Airport
   GetLocation(1):           29253
   GetLocation(1000):        -1
-  GetStationID(33411):      3
+  GetStationID(33411):      2
   GetStationID(34411):      65535
   GetCargoWaiting(0, 0):    0
   GetCargoWaiting(1000, 0): -1
@@ -5447,14 +5447,14 @@
 --StationList--
   Count():             2
   Location ListDump:
-    4 => 33421
-    3 => 33411
+    3 => 33421
+    2 => 33411
   CargoWaiting(0) ListDump:
-    4 => 0
     3 => 0
+    2 => 0
   CargoWaiting(1) ListDump:
-    4 => 0
     3 => 0
+    2 => 0
 
 --TileList--
   Count():             0
@@ -6373,23 +6373,23 @@
 --StationList_Vehicle--
   Count():             2
   Location ListDump:
-    4 => 33421
-    3 => 33411
+    3 => 33421
+    2 => 33411
   CargoWaiting(0) ListDump:
-    4 => 0
-    3 => 0
-  CargoWaiting(1) ListDump:
-    4 => 0
     3 => 0
+    2 => 0
+  CargoWaiting(1) ListDump:
+    3 => 0
+    2 => 0
   CargoRating(1) ListDump:
-    4 => 69
     3 => 69
+    2 => 69
   DistanceManhattanToTile(30000) ListDump:
-    4 => 106
-    3 => 96
+    3 => 106
+    2 => 96
   DistanceSquareToTile(30000) ListDump:
-    4 => 8818
-    3 => 7058
+    3 => 8818
+    2 => 7058
 
 --VehicleList_Station--
   Count():             1
@@ -6412,24 +6412,11 @@
         IsValidSubsidy():     true
         IsAwarded():          false
         GetAwardedTo():       9
-        GetExpireDate():      712619
-        SourceIsTown():       false
-        GetSource():          54
-        DestionationIsTown(): false
-        GetDestionation():    66
-        GetCargoType():       6
-  GetNextEvent:          instance
-    GetEventType:        3
-      EventName:         SubsidyOffer
-      --Subsidy (1) --
-        IsValidSubsidy():     true
-        IsAwarded():          false
-        GetAwardedTo():       9
         GetExpireDate():      712647
         SourceIsTown():       true
-        GetSource():          0
+        GetSource():          24
         DestionationIsTown(): true
-        GetDestionation():    16
+        GetDestionation():    21
         GetCargoType():       0
   IsEventWaiting:        false
 ERROR: We've got a suicidal AI for player 1
--- a/config.lib	Fri Apr 25 07:06:57 2008 +0000
+++ b/config.lib	Fri Apr 25 15:20:48 2008 +0000
@@ -419,11 +419,11 @@
 
 	detect_awk
 
+	detect_os
+
 	check_build
 	check_host
 
-	detect_os
-
 # We might enable universal builds always on OSX targets.. but currently we don't
 #	if [ "$enable_universal" = "1" ]  && [ "$os" != "OSX" ]; then
 	if [ "$enable_universal" = "1" ]; then
@@ -1353,13 +1353,26 @@
 }
 
 check_build() {
-	check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
+	if [ "$os" = "FREEBSD" ]; then
+		# FreeBSD's C compiler does not support dump machine.
+		# However, removing C support is not possible because PSP must be linked with the C compiler.
+		check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
+	else
+		check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
+	fi
 }
 
 check_host() {
 	# By default the host is the build
 	if [ -z "$host" ]; then host="$build"; fi
-	check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
+
+	if [ "$os" = "FREEBSD" ]; then
+		# FreeBSD's C compiler does not support dump machine.
+		# However, removing C support is not possible because PSP must be linked with the C compiler.
+		check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
+	else
+		check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
+	fi
 }
 
 check_cxx_build() {
--- a/projects/generate	Fri Apr 25 07:06:57 2008 +0000
+++ b/projects/generate	Fri Apr 25 15:20:48 2008 +0000
@@ -56,7 +56,7 @@
 }
 
 grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h' | sort > tmp.headers.source.list
-find "$ROOT_DIR/src" -iname "*.h*" -and -not -iname "*svn*" -and -not -iname "*.hpp.sq" | sed "s@$ROOT_DIR/src/@@" | sort > tmp.headers.src
+find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s@$ROOT_DIR/src/@@" | sort > tmp.headers.src
 if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then
 	echo "The following headers are missing in source.list and not in /src/ or vice versa."
 	diff tmp.headers.source.list tmp.headers.src | grep '[<>]' | sort
--- a/projects/generate.vbs	Fri Apr 25 07:06:57 2008 +0000
+++ b/projects/generate.vbs	Fri Apr 25 15:20:48 2008 +0000
@@ -52,12 +52,12 @@
 
 	' pattern for files to keep
 	Set rekeep = New RegExp
-	rekeep.Pattern = "\.h"
+	rekeep.Pattern = "\.h(pp)?$"
 	rekeep.Global = True
 
 	' pattern for files to exclude
 	Set reskip = New RegExp
-	reskip.Pattern = "\.svn|\.hpp\.sq"
+	reskip.Pattern = "\.svn"
 	reskip.Global = True
 
 	For Each file in dir.Files
--- a/projects/openttd_vs80.vcproj	Fri Apr 25 07:06:57 2008 +0000
+++ b/projects/openttd_vs80.vcproj	Fri Apr 25 15:20:48 2008 +0000
@@ -2828,14 +2828,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\misc\autocopyptr.hpp"
-				>
-			</File>
-			<File
-				RelativePath=".\..\src\misc\autoptr.hpp"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\misc\binaryheap.hpp"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj	Fri Apr 25 07:06:57 2008 +0000
+++ b/projects/openttd_vs90.vcproj	Fri Apr 25 15:20:48 2008 +0000
@@ -2825,14 +2825,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\misc\autocopyptr.hpp"
-				>
-			</File>
-			<File
-				RelativePath=".\..\src\misc\autoptr.hpp"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\misc\binaryheap.hpp"
 				>
 			</File>
--- a/source.list	Fri Apr 25 07:06:57 2008 +0000
+++ b/source.list	Fri Apr 25 15:20:48 2008 +0000
@@ -660,8 +660,6 @@
 
 # Misc
 misc/array.hpp
-misc/autocopyptr.hpp
-misc/autoptr.hpp
 misc/binaryheap.hpp
 misc/blob.hpp
 misc/countedobj.cpp
--- a/src/ai/ai_threads.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/ai/ai_threads.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -14,8 +14,6 @@
 #include "ai_threads.h"
 #include "api/ai_controller.hpp"
 #include "api/ai_object.hpp"
-#include "../misc/autoptr.hpp"
-#include "../misc/countedptr.hpp"
 #include <map>
 
 class AIFiber : public SimpleCountedObject {
--- a/src/aircraft.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/aircraft.h	Fri Apr 25 15:20:48 2008 +0000
@@ -117,7 +117,6 @@
 	void MarkDirty();
 	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); }
 	SpriteID GetImage(Direction direction) const;
 	int GetDisplaySpeed() const { return this->cur_speed * 10 / 16; }
--- a/src/autoreplace_gui.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/autoreplace_gui.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -51,16 +51,20 @@
 };
 
 enum ReplaceVehicleWindowWidgets {
-	RVW_WIDGET_LEFT_DETAILS = 3,
+	RVW_WIDGET_LEFT_MATRIX = 3,
+	RVW_WIDGET_LEFT_SCROLLBAR,
+	RVW_WIDGET_RIGHT_MATRIX,
+	RVW_WIDGET_RIGHT_SCROLLBAR,
+	RVW_WIDGET_LEFT_DETAILS,
+	RVW_WIDGET_RIGHT_DETAILS,
+
+	/* Button row */
 	RVW_WIDGET_START_REPLACE,
 	RVW_WIDGET_INFO_TAB,
 	RVW_WIDGET_STOP_REPLACE,
-	RVW_WIDGET_LEFT_MATRIX,
-	RVW_WIDGET_LEFT_SCROLLBAR,
-	RVW_WIDGET_RIGHT_MATRIX,
-	RVW_WIDGET_RIGHT_SCROLLBAR,
-	RVW_WIDGET_RIGHT_DETAILS,
+	RVW_WIDGET_RESIZE,
 
+	/* Train only widgets */
 	RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE,
 	RVW_WIDGET_TRAIN_FLUFF_LEFT,
 	RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN,
@@ -258,7 +262,7 @@
 }
 
 
-void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count, GroupID selected_group);
+void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, int count_location, GroupID selected_group);
 
 static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
 {
@@ -354,7 +358,7 @@
 				EngineID end    = min((i == 0 ? w->vscroll.cap : w->vscroll2.cap) + start, EngList_Count(&list));
 
 				/* Do the actual drawing */
-				DrawEngineList((VehicleType)w->window_number, w->widget[widget].left + 2, w->widget[widget].top + 1, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0, selected_group);
+				DrawEngineList((VehicleType)w->window_number, w->widget[widget].left + 2, w->widget[widget].top + 1, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0 ? w->widget[RVW_WIDGET_LEFT_MATRIX].right - 2 : 0, selected_group);
 
 				/* Also draw the details if an engine is selected */
 				if (WP(w, replaceveh_d).sel_engine[i] != INVALID_ENGINE) {
@@ -439,12 +443,29 @@
 		} break;
 
 		case WE_RESIZE:
+		{
 			w->vscroll.cap  += e->we.sizing.diff.y / (int)w->resize.step_height;
 			w->vscroll2.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
 
-			w->widget[RVW_WIDGET_LEFT_MATRIX].data  = (w->vscroll.cap  << 8) + 1;
-			w->widget[RVW_WIDGET_RIGHT_MATRIX].data = (w->vscroll2.cap << 8) + 1;
-			break;
+			Widget *widget = w->widget;
+
+			widget[RVW_WIDGET_LEFT_MATRIX].data = widget[RVW_WIDGET_RIGHT_MATRIX].data = (w->vscroll2.cap << 8) + 1;
+
+			if (e->we.sizing.diff.x != 0) {
+				/* We changed the width of the window so we have to resize the lists.
+				 * Because ResizeButtons() makes each widget the same size it can't be used on the lists
+				 * because then the lists would have the same size as the scrollbars.
+				 * Instead we use it on the detail panels.
+				 * Afterwards we use the new location of the detail panels (the middle of the window)
+				 * to place the lists.
+				 * This way the lists will have equal size while keeping the width of the scrollbars unchanged. */
+				ResizeButtons(w, RVW_WIDGET_LEFT_DETAILS, RVW_WIDGET_RIGHT_DETAILS);
+				widget[RVW_WIDGET_RIGHT_MATRIX].left    = widget[RVW_WIDGET_RIGHT_DETAILS].left;
+				widget[RVW_WIDGET_LEFT_SCROLLBAR].right = widget[RVW_WIDGET_LEFT_DETAILS].right;
+				widget[RVW_WIDGET_LEFT_SCROLLBAR].left  = widget[RVW_WIDGET_LEFT_SCROLLBAR].right - 11;
+				widget[RVW_WIDGET_LEFT_MATRIX].right    = widget[RVW_WIDGET_LEFT_SCROLLBAR].left - 1;
+			}
+		} break;
 
 		case WE_INVALIDATE_DATA:
 			if (_rebuild_left_list) WP(w, replaceveh_d).update_left = true;
@@ -459,116 +480,92 @@
 	}
 }
 
-static const Widget _replace_rail_vehicle_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,       STR_STICKY_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   126,   227, 0x0,            STR_NULL},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   240,   251, STR_REPLACE_VEHICLES_START, STR_REPLACE_HELP_START_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,   139,   316,   228,   239, 0x0,            STR_REPLACE_HELP_REPLACE_INFO_TAB},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   240,   251, STR_REPLACE_VEHICLES_STOP,  STR_REPLACE_HELP_STOP_BUTTON},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   125, 0x801,          STR_REPLACE_HELP_LEFT_ARRAY},
-{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   125, STR_NULL,       STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   125, 0x801,          STR_REPLACE_HELP_RIGHT_ARRAY},
-{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   125, STR_NULL,       STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   126,   227, 0x0,            STR_NULL},
-// train specific stuff
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   228,   239, STR_REPLACE_ENGINE_WAGON_SELECT,       STR_REPLACE_ENGINE_WAGON_SELECT_HELP},  // widget 12
-{      WWT_PANEL,     RESIZE_TB,    14,   139,   153,   240,   251, 0x0,            STR_NULL},
-{   WWT_DROPDOWN,     RESIZE_TB,    14,   154,   289,   240,   251, 0x0,            STR_REPLACE_HELP_RAILTYPE},
-{      WWT_PANEL,     RESIZE_TB,    14,   290,   305,   240,   251, 0x0,            STR_NULL},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   317,   455,   228,   239, STR_REPLACE_REMOVE_WAGON,       STR_REPLACE_REMOVE_WAGON_HELP},
-// end of train specific stuff
-{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   240,   251, STR_NULL,       STR_RESIZE_BUTTON},
-{   WIDGETS_END},
-};
+static const Widget _replace_vehicle_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE,      STR_018C_WINDOW_TITLE_DRAG_THIS},
+{  WWT_STICKYBOX,     RESIZE_LR,    14,   444,   455,     0,    13, STR_NULL,                        STR_STICKY_BUTTON},
 
-static const Widget _replace_road_vehicle_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                    STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE,  STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,                    STR_STICKY_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   126,   217, 0x0,                         STR_NULL},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   218,   229, STR_REPLACE_VEHICLES_START,  STR_REPLACE_HELP_START_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,   139,   305,   218,   229, 0x0,                         STR_REPLACE_HELP_REPLACE_INFO_TAB},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   218,   229, STR_REPLACE_VEHICLES_STOP,   STR_REPLACE_HELP_STOP_BUTTON},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   125, 0x801,                       STR_REPLACE_HELP_LEFT_ARRAY},
-{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   125, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   125, 0x801,                       STR_REPLACE_HELP_RIGHT_ARRAY},
-{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   125, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   126,   217, 0x0,                         STR_NULL},
-{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   218,   229, STR_NULL,                    STR_RESIZE_BUTTON},
-{   WIDGETS_END},
-};
+{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,    13, 0x1,                             STR_REPLACE_HELP_LEFT_ARRAY},
+{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,    13, STR_NULL,                        STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{     WWT_MATRIX,    RESIZE_LRB,    14,   228,   443,    14,    13, 0x1,                             STR_REPLACE_HELP_RIGHT_ARRAY},
+{ WWT_SCROLL2BAR,    RESIZE_LRB,    14,   444,   455,    14,    13, STR_NULL,                        STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,    14,   105, 0x0,                             STR_NULL},
+{      WWT_PANEL,    RESIZE_RTB,    14,   228,   455,    14,   105, 0x0,                             STR_NULL},
 
-static const Widget _replace_ship_aircraft_vehicle_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                    STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE,  STR_018C_WINDOW_TITLE_DRAG_THIS},
-{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,                    STR_STICKY_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   110,   201, 0x0,                         STR_NULL},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   202,   213, STR_REPLACE_VEHICLES_START,  STR_REPLACE_HELP_START_BUTTON},
-{      WWT_PANEL,     RESIZE_TB,    14,   139,   305,   202,   213, 0x0,                         STR_REPLACE_HELP_REPLACE_INFO_TAB},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   202,   213, STR_REPLACE_VEHICLES_STOP,   STR_REPLACE_HELP_STOP_BUTTON},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   109, 0x401,                       STR_REPLACE_HELP_LEFT_ARRAY},
-{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   109, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   109, 0x401,                       STR_REPLACE_HELP_RIGHT_ARRAY},
-{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   109, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   110,   201, 0x0,                         STR_NULL},
-{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   202,   213, STR_NULL,                    STR_RESIZE_BUTTON},
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   106,   117, STR_REPLACE_VEHICLES_START,      STR_REPLACE_HELP_START_BUTTON},
+{      WWT_PANEL,    RESIZE_RTB,    14,   139,   305,   106,   117, 0x0,                             STR_REPLACE_HELP_REPLACE_INFO_TAB},
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   306,   443,   106,   117, STR_REPLACE_VEHICLES_STOP,       STR_REPLACE_HELP_STOP_BUTTON},
+{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   444,   455,   106,   117, STR_NULL,                        STR_RESIZE_BUTTON},
+
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   128,   139, STR_REPLACE_ENGINE_WAGON_SELECT, STR_REPLACE_ENGINE_WAGON_SELECT_HELP},
+{      WWT_PANEL,     RESIZE_TB,    14,   139,   153,   128,   139, 0x0,                             STR_NULL},
+{   WWT_DROPDOWN,    RESIZE_RTB,    14,   154,   289,   128,   139, 0x0,                             STR_REPLACE_HELP_RAILTYPE},
+{      WWT_PANEL,   RESIZE_LRTB,    14,   290,   305,   128,   139, 0x0,                             STR_NULL},
+{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   306,   443,   128,   139, STR_REPLACE_REMOVE_WAGON,        STR_REPLACE_REMOVE_WAGON_HELP},
 {   WIDGETS_END},
 };
 
 static const WindowDesc _replace_rail_vehicle_desc = {
-	WDP_AUTO, WDP_AUTO, 456, 252, 456, 252,
+	WDP_AUTO, WDP_AUTO, 456, 140, 456, 140,
 	WC_REPLACE_VEHICLE, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_replace_rail_vehicle_widgets,
+	_replace_vehicle_widgets,
 	ReplaceVehicleWndProc
 };
 
-static const WindowDesc _replace_road_vehicle_desc = {
-	WDP_AUTO, WDP_AUTO, 456, 230, 456, 230,
+static const WindowDesc _replace_vehicle_desc = {
+	WDP_AUTO, WDP_AUTO, 456, 118, 456, 118,
 	WC_REPLACE_VEHICLE, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_replace_road_vehicle_widgets,
-	ReplaceVehicleWndProc
-};
-
-static const WindowDesc _replace_ship_aircraft_vehicle_desc = {
-	WDP_AUTO, WDP_AUTO, 456, 214, 456, 214,
-	WC_REPLACE_VEHICLE, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_replace_ship_aircraft_vehicle_widgets,
+	_replace_vehicle_widgets,
 	ReplaceVehicleWndProc
 };
 
 
 void ShowReplaceGroupVehicleWindow(GroupID id_g, VehicleType vehicletype)
 {
-	Window *w;
-
 	DeleteWindowById(WC_REPLACE_VEHICLE, vehicletype);
+	Window *w = vehicletype == VEH_TRAIN ? AllocateWindowDescFront(&_replace_rail_vehicle_desc, VEH_TRAIN)
+										 : AllocateWindowDescFront(&_replace_vehicle_desc, vehicletype);
 
-	switch (vehicletype) {
-		default: NOT_REACHED();
-		case VEH_TRAIN:
-			w = AllocateWindowDescFront(&_replace_rail_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 8;
-			w->resize.step_height = 14;
-			WP(w, replaceveh_d).wagon_btnstate = true;
-			break;
-		case VEH_ROAD:
-			w = AllocateWindowDescFront(&_replace_road_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 8;
-			w->resize.step_height = 14;
-			break;
-		case VEH_SHIP:
-		case VEH_AIRCRAFT:
-			w = AllocateWindowDescFront(&_replace_ship_aircraft_vehicle_desc, vehicletype);
-			w->vscroll.cap  = 4;
-			w->resize.step_height = 24;
-			break;
+	w->resize.step_height = GetVehicleListHeight(vehicletype);
+	w->vscroll.cap = w->resize.step_height == 14 ? 8 : 4;
+
+	Widget *widget = w->widget;
+	widget[RVW_WIDGET_LEFT_MATRIX].data = widget[RVW_WIDGET_RIGHT_MATRIX].data = (w->vscroll.cap << 8) + 1;
+
+	if (vehicletype == VEH_TRAIN) {
+		WP(w, replaceveh_d).wagon_btnstate = true;
+		/* The train window is bigger so we will move some of the widgets to fit the new size.
+		 * We will start by moving the resize button to the lower right corner.                 */
+		widget[RVW_WIDGET_RESIZE].top         = widget[RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE].top;
+		widget[RVW_WIDGET_RESIZE].bottom      = widget[RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE].bottom;
+		widget[RVW_WIDGET_STOP_REPLACE].right = widget[RVW_WIDGET_RESIZE].right;
+
+		/* The detail panel is one line taller for trains so we will move some of the widgets one line (10 pixels) down. */
+		widget[RVW_WIDGET_LEFT_DETAILS].bottom  += 10;
+		widget[RVW_WIDGET_RIGHT_DETAILS].bottom += 10;
+		for (int i = RVW_WIDGET_START_REPLACE; i < RVW_WIDGET_RESIZE; i++) {
+			widget[i].top    += 10;
+			widget[i].bottom += 10;
+		}
+	} else {
+		/* Since it's not a train we will hide the train only widgets. */
+		w->SetWidgetsHiddenState(true,
+								 RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE,
+								 RVW_WIDGET_TRAIN_FLUFF_LEFT,
+								 RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN,
+								 RVW_WIDGET_TRAIN_FLUFF_RIGHT,
+								 RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE,
+								 WIDGET_LIST_END);
 	}
 
+	ResizeWindow(w, 0, w->resize.step_height * w->vscroll.cap);
+
+	/* Set the minimum window size to the current window size */
+	w->resize.width  = w->width;
+	w->resize.height = w->height;
+
 	w->caption_color = _local_player;
 	WP(w, replaceveh_d).sel_group = id_g;
 	w->vscroll2.cap = w->vscroll.cap;   // these two are always the same
--- a/src/build_vehicle_gui.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/build_vehicle_gui.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -935,9 +935,9 @@
  * @param min where to start in the list
  * @param max where in the list to end
  * @param selected_id what engine to highlight as selected, if any
- * @param show_count Display the number of vehicles (used by autoreplace)
+ * @param count_location Offset to print the engine count (used by autoreplace). 0 means it's off
  */
-void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count, GroupID selected_group)
+void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, int count_location, GroupID selected_group)
 {
 	byte step_size = GetVehicleListHeight(type);
 	byte x_offset = 0;
@@ -977,10 +977,10 @@
 
 		SetDParam(0, engine);
 		DrawString(x + x_offset, y, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK);
-		DrawVehicleEngine(type, x, y + y_offset, engine, (show_count && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_player));
-		if (show_count) {
+		DrawVehicleEngine(type, x, y + y_offset, engine, (count_location != 0 && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_player));
+		if (count_location != 0) {
 			SetDParam(0, num_engines);
-			DrawStringRightAligned(213, y + (GetVehicleListHeight(type) == 14 ? 3 : 8), STR_TINY_BLACK, TC_FROMSTRING);
+			DrawStringRightAligned(count_location, y + (GetVehicleListHeight(type) == 14 ? 3 : 8), STR_TINY_BLACK, TC_FROMSTRING);
 		}
 	}
 }
@@ -1000,7 +1000,7 @@
 
 	DrawWindowWidgets(w);
 
-	DrawEngineList(bv->vehicle_type, w->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, w->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
+	DrawEngineList(bv->vehicle_type, w->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, w->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, 0, DEFAULT_GROUP);
 
 	if (bv->sel_engine != INVALID_ENGINE) {
 		const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
--- a/src/core/overflowsafe_type.hpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/core/overflowsafe_type.hpp	Fri Apr 25 15:20:48 2008 +0000
@@ -139,9 +139,9 @@
 template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator / (uint  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return (OverflowSafeInt<T, T_MAX, T_MIN>)a / (int)b; }
 
 /* Sometimes we got byte operator OverflowSafeInt instead of vice versa. Handle that properly */
-template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator + (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return b + a; }
-template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator - (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return -b + a; }
-template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator * (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return b * a; }
+template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator + (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return b + (uint)a; }
+template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator - (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return -b + (uint)a; }
+template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator * (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return b * (uint)a; }
 template <class T, int64 T_MAX, int64 T_MIN> FORCEINLINE OverflowSafeInt<T, T_MAX, T_MIN> operator / (byte  a, OverflowSafeInt<T, T_MAX, T_MIN> b) { return (OverflowSafeInt<T, T_MAX, T_MIN>)a / (int)b; }
 
 typedef OverflowSafeInt<int64, INT64_MAX, INT64_MIN> OverflowSafeInt64;
--- a/src/direction_func.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/direction_func.h	Fri Apr 25 15:20:48 2008 +0000
@@ -168,6 +168,22 @@
 }
 
 /**
+ * Converts an Axis to a Direction
+ *
+ * This function returns the Direction which
+ * belongs to the axis. As 2 directions are mapped to an axis
+ * this function returns the one which points to south,
+ * either south-west (on X axis) or south-east (on Y axis)
+ *
+ * @param a The axis
+ * @return The direction pointed to south
+ */
+static inline Direction AxisToDirection(Axis a)
+{
+	return (Direction)(5 - 2 * a);
+}
+
+/**
  * Convert an axis and a flag for north/south into a DiagDirection
  * @param xy axis to convert
  * @param ns north -> 0, south -> 1
--- a/src/economy.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/economy.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -1793,7 +1793,7 @@
 	}
 
 	if (result != 0) {
-		InvalidateWindow(v->GetVehicleListWindowClass(), v->owner);
+		InvalidateWindow(GetWindowClassForVehicleType(v->type), v->owner);
 		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 
 		st->MarkTilesDirty(true);
--- a/src/elrail.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/elrail.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -217,8 +217,6 @@
 	byte OverridePCP = 0;
 	byte PPPpreferred[DIAGDIR_END];
 	byte PPPallowed[DIAGDIR_END];
-	DiagDirection i;
-	Track t;
 
 	/* Find which rail bits are present, and select the override points.
 	 * We don't draw a pylon:
@@ -232,10 +230,10 @@
 
 	AdjustTileh(ti->tile, &tileh[TS_HOME]);
 
-	for (i = DIAGDIR_NE; i < DIAGDIR_END; i++) {
+	for (DiagDirection i = DIAGDIR_NE; i < DIAGDIR_END; i++) {
 		TileIndex neighbour = ti->tile + TileOffsByDiagDir(i);
 		Foundation foundation = FOUNDATION_NONE;
-		int k;
+		byte elevation = GetPCPElevation(ti->tile, i);
 
 		/* Here's one of the main headaches. GetTileSlope does not correct for possibly
 		 * existing foundataions, so we do have to do that manually later on.*/
@@ -245,7 +243,7 @@
 
 		/* If the neighboured tile does not smoothly connect to the current tile (because of a foundation),
 		 * we have to draw all pillars on the current tile. */
-		if (GetPCPElevation(ti->tile, i) != GetPCPElevation(neighbour, ReverseDiagDir(i))) trackconfig[TS_NEIGHBOUR] = TRACK_BIT_NONE;
+		if (elevation != GetPCPElevation(neighbour, ReverseDiagDir(i))) trackconfig[TS_NEIGHBOUR] = TRACK_BIT_NONE;
 
 		isflat[TS_NEIGHBOUR] = ((trackconfig[TS_NEIGHBOUR] & (TRACK_BIT_HORZ | TRACK_BIT_VERT)) != 0);
 
@@ -254,7 +252,7 @@
 
 		/* We cycle through all the existing tracks at a PCP and see what
 		 * PPPs we want to have, or may not have at all */
-		for (k = 0; k < NUM_TRACKS_AT_PCP; k++) {
+		for (uint k = 0; k < NUM_TRACKS_AT_PCP; k++) {
 			/* Next to us, we have a bridge head, don't worry about that one, if it shows away from us */
 			if (TrackSourceTile[i][k] == TS_NEIGHBOUR &&
 			    IsBridgeTile(neighbour) &&
@@ -276,8 +274,10 @@
 		}
 
 		/* Deactivate all PPPs if PCP is not used */
-		PPPpreferred[i] *= HasBit(PCPstatus, i);
-		PPPallowed[i] *= HasBit(PCPstatus, i);
+		if (!HasBit(PCPstatus, i)) {
+			PPPpreferred[i] = 0;
+			PPPallowed[i] = 0;
+		}
 
 		/* A station is always "flat", so adjust the tileh accordingly */
 		if (IsTileType(neighbour, MP_STATION)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
@@ -290,8 +290,8 @@
 
 		ApplyFoundationToSlope(foundation, &tileh[TS_NEIGHBOUR]);
 
-	/* Half tile slopes coincide only with horizontal/vertical track.
-	 * Faking a flat slope results in the correct sprites on positions. */
+		/* Half tile slopes coincide only with horizontal/vertical track.
+		 * Faking a flat slope results in the correct sprites on positions. */
 		if (IsHalftileSlope(tileh[TS_NEIGHBOUR])) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
 
 		AdjustTileh(neighbour, &tileh[TS_NEIGHBOUR]);
@@ -300,8 +300,9 @@
 		 * Delete the PCP if this is the case. */
 		/* Level means that the slope is the same, or the track is flat */
 		if (tileh[TS_HOME] == tileh[TS_NEIGHBOUR] || (isflat[TS_HOME] && isflat[TS_NEIGHBOUR])) {
-			for (k = 0; k < NUM_IGNORE_GROUPS; k++)
+			for (uint k = 0; k < NUM_IGNORE_GROUPS; k++) {
 				if (PPPpreferred[i] == IgnoredPCP[k][tlg][i]) ClrBit(PCPstatus, i);
+			}
 		}
 
 		/* Now decide where we draw our pylons. First try the preferred PPPs, but they may not exist.
@@ -321,7 +322,7 @@
 		}
 
 		if (PPPallowed[i] != 0 && HasBit(PCPstatus, i) && !HasBit(OverridePCP, i)) {
-			for (k = 0; k < DIR_END; k++) {
+			for (Direction k = DIR_BEGIN; k < DIR_END; k++) {
 				byte temp = PPPorder[i][GetTLG(ti->tile)][k];
 
 				if (HasBit(PPPallowed[i], temp)) {
@@ -336,8 +337,8 @@
 					}
 
 					AddSortableSpriteToDraw(pylon_sprites[temp], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE,
-							GetPCPElevation(ti->tile, i),
-							IsTransparencySet(TO_CATENARY), -1, -1);
+						elevation, IsTransparencySet(TO_CATENARY), -1, -1);
+
 					break; /* We already have drawn a pylon, bail out */
 				}
 			}
@@ -352,7 +353,7 @@
 	}
 
 	/* Drawing of pylons is finished, now draw the wires */
-	for (t = TRACK_BEGIN; t < TRACK_END; t++) {
+	for (Track t = TRACK_BEGIN; t < TRACK_END; t++) {
 		if (HasBit(trackconfig[TS_HOME], t)) {
 			if (IsTunnelTile(ti->tile)) break; // drawn together with tunnel-roof (see DrawCatenaryOnTunnel())
 			byte PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) +
@@ -377,8 +378,13 @@
 	}
 }
 
-static void DrawCatenaryOnBridge(const TileInfo *ti)
+void DrawCatenaryOnBridge(const TileInfo *ti)
 {
+	if (_patches.disable_elrails) return;
+
+	/* Do not draw catenary if it is invisible */
+	if (IsInvisibilitySet(TO_CATENARY)) return;
+
 	TileIndex end = GetSouthernBridgeEnd(ti->tile);
 	TileIndex start = GetOtherBridgeEnd(end);
 
@@ -437,14 +443,6 @@
 	/* Do not draw catenary if it is invisible */
 	if (IsInvisibilitySet(TO_CATENARY)) return;
 
-	if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile)) {
-		TileIndex head = GetNorthernBridgeEnd(ti->tile);
-
-		if (GetTunnelBridgeTransportType(head) == TRANSPORT_RAIL && HasCatenary(GetRailType(head))) {
-			DrawCatenaryOnBridge(ti);
-		}
-	}
-
 	switch (GetTileType(ti->tile)) {
 		case MP_RAILWAY:
 			if (IsRailDepot(ti->tile)) {
--- a/src/engine.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/engine.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -15,7 +15,6 @@
 #include "aircraft.h"
 #include "newgrf_cargo.h"
 #include "group.h"
-#include "misc/autoptr.hpp"
 #include "strings_func.h"
 #include "gfx_func.h"
 #include "functions.h"
@@ -513,19 +512,15 @@
 		return CommandCost();
 	}
 
-	er = new EngineRenew(old_engine, new_engine);
-	if (er == NULL) return CMD_ERROR;
-	AutoPtrT<EngineRenew> er_auto_delete = er;
-
+	if (!EngineRenew::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		er = new EngineRenew(old_engine, new_engine);
 		er->group_id = group;
 
 		/* Insert before the first element */
 		er->next = (EngineRenew *)(*erl);
 		*erl = (EngineRenewList)er;
-
-		er_auto_delete.Detach();
 	}
 
 	return CommandCost();
--- a/src/fios.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/fios.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -108,50 +108,54 @@
  * @return a string if we have given a file as a target, otherwise NULL */
 char *FiosBrowseTo(const FiosItem *item)
 {
-	char *s;
 	char *path = _fios_path;
 
 	switch (item->type) {
+		case FIOS_TYPE_DRIVE:
 #if defined(WINCE)
-	case FIOS_TYPE_DRIVE: sprintf(path, PATHSEP ""); break;
+			sprintf(path, PATHSEP "");
 #elif defined(WIN32) || defined(__OS2__)
-	case FIOS_TYPE_DRIVE: sprintf(path, "%c:" PATHSEP, item->title[0]); break;
+			sprintf(path, "%c:" PATHSEP, item->title[0]);
 #endif
-
-	case FIOS_TYPE_PARENT:
-		/* Check for possible NULL ptr (not required for UNIXes, but AmigaOS-alikes) */
-		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';
-#endif
-		break;
+		/* Fallthrough */
+		case FIOS_TYPE_INVALID:
+			break;
 
-	case FIOS_TYPE_DIR:
-		strcat(path, item->name);
-		strcat(path, PATHSEP);
-		break;
-
-	case FIOS_TYPE_DIRECT:
-		sprintf(path, "%s", item->name);
-		break;
+		case FIOS_TYPE_PARENT: {
+			/* Check for possible NULL ptr (not required for UNIXes, but AmigaOS-alikes) */
+			char *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';
+#endif
+			break;
+		}
 
-	case FIOS_TYPE_FILE:
-	case FIOS_TYPE_OLDFILE:
-	case FIOS_TYPE_SCENARIO:
-	case FIOS_TYPE_OLD_SCENARIO:
-	case FIOS_TYPE_PNG:
-	case FIOS_TYPE_BMP:
-	{
-		static char str_buffr[512];
-		snprintf(str_buffr, lengthof(str_buffr), "%s%s", path, item->name);
-		return str_buffr;
-	}
+		case FIOS_TYPE_DIR:
+			strcat(path, item->name);
+			strcat(path, PATHSEP);
+			break;
+
+		case FIOS_TYPE_DIRECT:
+			sprintf(path, "%s", item->name);
+			break;
+
+		case FIOS_TYPE_FILE:
+		case FIOS_TYPE_OLDFILE:
+		case FIOS_TYPE_SCENARIO:
+		case FIOS_TYPE_OLD_SCENARIO:
+		case FIOS_TYPE_PNG:
+		case FIOS_TYPE_BMP:
+		{
+			static char str_buffr[512];
+			snprintf(str_buffr, lengthof(str_buffr), "%s%s", path, item->name);
+			return str_buffr;
+		}
 	}
 
 	return NULL;
@@ -208,13 +212,13 @@
 #endif
 }
 
-typedef byte fios_getlist_callback_proc(int mode, const char *filename, const char *ext, char *title);
+typedef FiosType fios_getlist_callback_proc(SaveLoadDialogMode mode, const char *filename, const char *ext, char *title);
 
 /** Create a list of the files in a directory, according to some arbitrary rule.
  *  @param mode The mode we are in. Some modes don't allow 'parent'.
  *  @param callback_proc The function that is called where you need to do the filtering.
  *  @return Return the list of files. */
-static FiosItem *FiosGetFileList(int mode, fios_getlist_callback_proc *callback_proc)
+static FiosItem *FiosGetFileList(SaveLoadDialogMode mode, fios_getlist_callback_proc *callback_proc)
 {
 	struct stat sb;
 	struct dirent *dirent;
@@ -277,7 +281,7 @@
 			if ((t = strrchr(d_name, '.')) == NULL) continue;
 			fios_title[0] = '\0'; // reset the title;
 
-			byte type = callback_proc(mode, d_name, t, fios_title);
+			FiosType type = callback_proc(mode, d_name, t, fios_title);
 			if (type != FIOS_TYPE_INVALID) {
 				fios = FiosAlloc();
 				fios->mtime = sb.st_mtime;
@@ -313,7 +317,7 @@
  * @see FiosGetFileList
  * @see FiosGetSavegameList
  */
-static byte FiosGetSavegameListCallback(int mode, const char *file, const char *ext, char *title)
+static FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title)
 {
 	/* Show savegame files
 	 * .SAV OpenTTD saved game
@@ -339,16 +343,16 @@
  * @return A pointer to an array of FiosItem representing all the files to be shown in the save/load dialog.
  * @see FiosGetFileList
  */
-FiosItem *FiosGetSavegameList(int mode)
+FiosItem *FiosGetSavegameList(SaveLoadDialogMode mode)
 {
-	static char *_fios_save_path = NULL;
+	static char *fios_save_path = NULL;
 
-	if (_fios_save_path == NULL) {
-		_fios_save_path = MallocT<char>(MAX_PATH);
-		FioGetDirectory(_fios_save_path, MAX_PATH, SAVE_DIR);
+	if (fios_save_path == NULL) {
+		fios_save_path = MallocT<char>(MAX_PATH);
+		FioGetDirectory(fios_save_path, MAX_PATH, SAVE_DIR);
 	}
 
-	_fios_path = _fios_save_path;
+	_fios_path = fios_save_path;
 
 	return FiosGetFileList(mode, &FiosGetSavegameListCallback);
 }
@@ -363,7 +367,7 @@
  * @see FiosGetFileList
  * @see FiosGetScenarioList
  */
-static byte FiosGetScenarioListCallback(int mode, const char *file, const char *ext, char *title)
+static FiosType FiosGetScenarioListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title)
 {
 	/* Show scenario files
 	 * .SCN OpenTTD style scenario file
@@ -387,22 +391,22 @@
  * @return A pointer to an array of FiosItem representing all the files to be shown in the save/load dialog.
  * @see FiosGetFileList
  */
-FiosItem *FiosGetScenarioList(int mode)
+FiosItem *FiosGetScenarioList(SaveLoadDialogMode mode)
 {
-	static char *_fios_scn_path = NULL;
+	static char *fios_scn_path = NULL;
 
 	/* Copy the default path on first run or on 'New Game' */
-	if (_fios_scn_path == NULL) {
-		_fios_scn_path = MallocT<char>(MAX_PATH);
-		FioGetDirectory(_fios_scn_path, MAX_PATH, SCENARIO_DIR);
+	if (fios_scn_path == NULL) {
+		fios_scn_path = MallocT<char>(MAX_PATH);
+		FioGetDirectory(fios_scn_path, MAX_PATH, SCENARIO_DIR);
 	}
 
-	_fios_path = _fios_scn_path;
+	_fios_path = fios_scn_path;
 
 	return FiosGetFileList(mode, &FiosGetScenarioListCallback);
 }
 
-static byte FiosGetHeightmapListCallback(int mode, const char *file, const char *ext, char *title)
+static FiosType FiosGetHeightmapListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title)
 {
 	/* Show heightmap files
 	 * .PNG PNG Based heightmap files
@@ -419,16 +423,16 @@
 }
 
 /* Get a list of Heightmaps */
-FiosItem *FiosGetHeightmapList(int mode)
+FiosItem *FiosGetHeightmapList(SaveLoadDialogMode mode)
 {
-	static char *_fios_hmap_path = NULL;
+	static char *fios_hmap_path = NULL;
 
-	if (_fios_hmap_path == NULL) {
-		_fios_hmap_path = MallocT<char>(MAX_PATH);
-		FioGetDirectory(_fios_hmap_path, MAX_PATH, HEIGHTMAP_DIR);
+	if (fios_hmap_path == NULL) {
+		fios_hmap_path = MallocT<char>(MAX_PATH);
+		FioGetDirectory(fios_hmap_path, MAX_PATH, HEIGHTMAP_DIR);
 	}
 
-	_fios_path = _fios_hmap_path;
+	_fios_path = fios_hmap_path;
 
 	return FiosGetFileList(mode, &FiosGetHeightmapListCallback);
 }
--- a/src/fios.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/fios.h	Fri Apr 25 15:20:48 2008 +0000
@@ -42,23 +42,23 @@
 	FT_HEIGHTMAP, ///< heightmap file
 };
 
-enum {
-	FIOS_TYPE_DRIVE        =   0,
-	FIOS_TYPE_PARENT       =   1,
-	FIOS_TYPE_DIR          =   2,
-	FIOS_TYPE_FILE         =   3,
-	FIOS_TYPE_OLDFILE      =   4,
-	FIOS_TYPE_SCENARIO     =   5,
-	FIOS_TYPE_OLD_SCENARIO =   6,
-	FIOS_TYPE_DIRECT       =   7,
-	FIOS_TYPE_PNG          =   8,
-	FIOS_TYPE_BMP          =   9,
-	FIOS_TYPE_INVALID      = 255,
+enum FiosType {
+	FIOS_TYPE_DRIVE,
+	FIOS_TYPE_PARENT,
+	FIOS_TYPE_DIR,
+	FIOS_TYPE_FILE,
+	FIOS_TYPE_OLDFILE,
+	FIOS_TYPE_SCENARIO,
+	FIOS_TYPE_OLD_SCENARIO,
+	FIOS_TYPE_DIRECT,
+	FIOS_TYPE_PNG,
+	FIOS_TYPE_BMP,
+	FIOS_TYPE_INVALID = 255,
 };
 
 /* Deals with finding savegames */
 struct FiosItem {
-	byte type;
+	FiosType type;
 	uint64 mtime;
 	char title[64];
 	char name[256 - 12 - 64];
@@ -82,11 +82,11 @@
 void ShowSaveLoadDialog(SaveLoadDialogMode mode);
 
 /* Get a list of savegames */
-FiosItem *FiosGetSavegameList(int mode);
+FiosItem *FiosGetSavegameList(SaveLoadDialogMode mode);
 /* Get a list of scenarios */
-FiosItem *FiosGetScenarioList(int mode);
+FiosItem *FiosGetScenarioList(SaveLoadDialogMode mode);
 /* Get a list of Heightmaps */
-FiosItem *FiosGetHeightmapList(int mode);
+FiosItem *FiosGetHeightmapList(SaveLoadDialogMode mode);
 /* Free the list of savegames */
 void FiosFreeSavegameList();
 /* Browse to. Returns a filename w/path if we reached a file. */
--- a/src/gfx_type.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/gfx_type.h	Fri Apr 25 15:20:48 2008 +0000
@@ -164,7 +164,7 @@
 	int left, top, right, bottom;
 };
 
-enum {
+enum Colours {
 	COLOUR_DARK_BLUE,
 	COLOUR_PALE_GREEN,
 	COLOUR_PINK,
@@ -180,7 +180,9 @@
 	COLOUR_ORANGE,
 	COLOUR_BROWN,
 	COLOUR_GREY,
-	COLOUR_WHITE
+	COLOUR_WHITE,
+	COLOUR_END,
+	INVALID_COLOUR = 0xFF
 };
 
 /** Colour of the strings, see _string_colormap in table/palettes.h or docs/ottd-colourtext-palette.png */
--- a/src/group_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/group_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -12,7 +12,6 @@
 #include "train.h"
 #include "aircraft.h"
 #include "vehicle_gui.h"
-#include "misc/autoptr.hpp"
 #include "strings_func.h"
 #include "functions.h"
 #include "window_func.h"
@@ -71,18 +70,6 @@
 }
 
 
-static WindowClass GetWCForVT(VehicleType vt)
-{
-	switch (vt) {
-		default:
-		case VEH_TRAIN:    return WC_TRAINS_LIST;
-		case VEH_ROAD:     return WC_ROADVEH_LIST;
-		case VEH_SHIP:     return WC_SHIPS_LIST;
-		case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
-	}
-}
-
-
 /**
  * Create a new vehicle group.
  * @param tile unused
@@ -94,20 +81,14 @@
 	VehicleType vt = (VehicleType)p1;
 	if (!IsPlayerBuildableVehicleType(vt)) return CMD_ERROR;
 
-	AutoPtrT<Group> g_auto_delete;
-
-	Group *g = new Group(_current_player);
-	if (g == NULL) return CMD_ERROR;
-
-	g_auto_delete = g;
+	if (!Group::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		Group *g = new Group(_current_player);
 		g->replace_protection = false;
 		g->vehicle_type = vt;
 
-		InvalidateWindowData(GetWCForVT(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
-
-		g_auto_delete.Detach();
+		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -156,7 +137,7 @@
 		DeleteWindowById(WC_REPLACE_VEHICLE, g->vehicle_type);
 		delete g;
 
-		InvalidateWindowData(GetWCForVT(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -198,7 +179,7 @@
 		/* Assign the new one */
 		g->name = strdup(_cmd_text);
 
-		InvalidateWindowData(GetWCForVT(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -247,7 +228,7 @@
 
 		/* Update the Replace Vehicle Windows */
 		InvalidateWindow(WC_REPLACE_VEHICLE, v->type);
-		InvalidateWindowData(GetWCForVT(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -283,7 +264,7 @@
 			}
 		}
 
-		InvalidateWindowData(GetWCForVT(type), (type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -319,7 +300,7 @@
 			}
 		}
 
-		InvalidateWindowData(GetWCForVT(type), (type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
@@ -344,7 +325,7 @@
 	if (flags & DC_EXEC) {
 		g->replace_protection = HasBit(p2, 0);
 
-		InvalidateWindowData(GetWCForVT(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
 	}
 
 	return CommandCost();
--- a/src/industry_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/industry_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -26,7 +26,6 @@
 #include "newgrf_industries.h"
 #include "newgrf_industrytiles.h"
 #include "newgrf_callbacks.h"
-#include "misc/autoptr.hpp"
 #include "autoslope.h"
 #include "transparency.h"
 #include "water.h"
@@ -1033,6 +1032,9 @@
 
 			if (cut) ChopLumberMillTrees(i);
 		}
+
+		TriggerIndustry(i, INDUSTRY_TRIGGER_INDUSTRY_TICK);
+		StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
 	}
 }
 
@@ -1054,8 +1056,6 @@
 	if (_game_mode == GM_EDITOR) return;
 
 	FOR_ALL_INDUSTRIES(i) {
-		TriggerIndustry(i, INDUSTRY_TRIGGER_INDUSTRY_TICK);
-		StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
 		ProduceIndustryGoods(i);
 	}
 }
@@ -1591,17 +1591,19 @@
 	if (!CheckIfIndustryIsAllowed(tile, type, t)) return NULL;
 	if (!CheckSuitableIndustryPos(tile)) return NULL;
 
-	Industry *i = new Industry(tile);
-	if (i == NULL) return NULL;
-	AutoPtrT<Industry> i_auto_delete = i;
+	if (!Industry::CanAllocateItem()) return NULL;
 
 	if (flags & DC_EXEC) {
+		Industry *i = new Industry(tile);
 		if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
 		DoCreateNewIndustry(i, tile, type, it, itspec_index, t, OWNER_NONE);
-		i_auto_delete.Detach();
+
+		return i;
 	}
 
-	return i;
+	/* We need to return a non-NULL pointer to tell we have created an industry.
+	 * However, we haven't created a real one (no DC_EXEC), so return a fake one. */
+	return GetIndustry(0);
 }
 
 /** Build/Fund an industry
--- a/src/lang/brazilian_portuguese.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/brazilian_portuguese.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -19,6 +19,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} vindo de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Aceita: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Aceita: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Suprimentos: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :{G=m}Passageiros
 STR_0010_COAL                                                   :{G=m}Carvão
@@ -378,6 +379,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Velocidade máxima
 STR_SORT_BY_MODEL                                               :Modelo
 STR_SORT_BY_VALUE                                               :Valor
+STR_SORT_BY_LENGTH                                              :Tamanho
 STR_SORT_BY_FACILITY                                            :Tipo de estação
 STR_SORT_BY_WAITING                                             :Valor da carga aguardando
 STR_SORT_BY_RATING_MAX                                          :Taxa de Carga
@@ -1162,7 +1164,7 @@
 STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Ativar economia regular (alterações menores)
 STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Permite comprar ações de outras empresas
 STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
-STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automaticamente constroi semáforos anteriores: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Construir sinaleiros até: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI                            :{LTBLUE}Ativar interface de sinais: {ORANGE}{STRING}
 
 STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}O layout de cidade "sem mais estradas" não é válido no editor
@@ -1363,6 +1365,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Nome do jogo
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Idioma, versão do servidor, etc.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Clique num jogo da lista para o selecionar
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}O servidor que você entrou última vez:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Clique para selecionar o servidor que você jogou da última vez
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Localizar servidor
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Pesquisar por um servidor na rede
@@ -2652,6 +2656,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro trem chega a {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detalhes)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Trem no caminho
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Vá para
+STR_ORDER_GO_NON_STOP_TO                                        :Vá não parando para
+STR_ORDER_GO_VIA                                                :Vá via
+STR_ORDER_GO_NON_STOP_VIA                                       :Vá não parando via
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Carregar se disponível
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Full load all cargo
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Carregar completamente qualquer carga
+STR_ORDER_DROP_NO_LOADING                                       :Não carregando
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Descarregar se aceito
+STR_ORDER_DROP_UNLOAD                                           :Descarregar tudo
+STR_ORDER_DROP_TRANSFER                                         :Transferir
+STR_ORDER_DROP_NO_UNLOADING                                     :Não descarregar
+STR_ORDER_FULL_LOAD                                             :(Carregar totalmente)
+STR_ORDER_FULL_LOAD_ANY                                         :(Carregar totalmente qualquer carga)
+STR_ORDER_NO_LOAD                                               :(Não carregando)
+STR_ORDER_UNLOAD                                                :(Descarregar e carregar)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Descarregar e aguardar carga completa)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Descarregar e aguardar por qualquer tipo de carga completa)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Descarregar e sair vazio)
+STR_ORDER_TRANSFER                                              :(Transferir e carregar)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Transferir e aguardar por carga completa)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Transferir e aguardar por qualquer tipo de carga completa)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Transferir e sair vazio)
+STR_ORDER_NO_UNLOAD                                             :(Não descarregar e carregar)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Não descarregar e aguardar carga completa)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Não descarregar e aguardar por qualquer tipo de carga completa)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Altera a instrução de paradas da ordem selecionada
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Altera a instrução de carregamento da ordem selecionada
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Altera a instrução de descargas da ordem selecionada
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Inserir ordem avançada
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Ir para depósito mais próximo
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Ir para hangar mais próximo
+STR_ORDER_NEAREST_DEPOT                                         :mais próximo
+STR_ORDER_NEAREST_HANGAR                                        :hangar mais próximo
+STR_ORDER_SERVICE_AT                                            :Manutenção no
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Manutenção sem parada no
+STR_ORDER_TRAIN_DEPOT                                           :Deósito de Trem
+STR_ORDER_ROAD_DEPOT                                            :Depósito de Veículos
+STR_ORDER_SHIP_DEPOT                                            :Depósito de Navios
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Hangar
+
+STR_ORDER_CONDITIONAL                                           :Pulo de ordem condicional
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Dados do veículo no qual se basear para pular ordem
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Como comprarar os dados do veículo com o valor fornecido
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}O valor a comparar com os dados do veículo
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Digite o valor a ser comparado
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Percentual carregado
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Confiabilidade
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Velocidade máxima
+STR_ORDER_CONDITIONAL_AGE                                       :Idade (anos)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Necessia de manutenção
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Sempre
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :é igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :é não igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :é menor que
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :é menor ou igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :é maior que
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :é maior ou igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :é verdadeiro
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :é falso
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Saltar para a ordem {COMMA}
+STR_CONDITIONAL_NUM                                             :Saltar para a ordem {COMMA} quando {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Saltar para a ordem {COMMA} quando {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Viajar (não progamado)
 STR_TIMETABLE_TRAVEL_FOR                                        :Viajar para {STRING}
@@ -2709,6 +2783,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valor: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Carregando / descarregando
+STR_LEAVING                                                     :{LTBLUE}Saindo
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}O trem deve estar parado dentro do depósito
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Impossível enviar o trem para o depósito...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Não há espaço para mais ordens
@@ -3338,6 +3413,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Alternar transparência para estruturas como faróis e antenas, talvez no futuro para efeitos visuais
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Alternar transparência para catenária. CTRL+click para travar.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Altera transparência para os indicadores de carga
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Definir objetos invisíveis ao invés de transparente
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3453,7 +3529,7 @@
 ############ signal GUI
 STR_SIGNAL_SELECTION                                            :{WHITE}Seleção de Sinais
 STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE                           :{WHITE}Impossível converter sinais aqui...
-STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP                             :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para manter trens de colidirem nas malhas ferroviárias com mais de um trem.
+STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP                             :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para impedir trens de colidirem nas malhas ferroviárias com mais de um trem.
 STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TIP                            :{BLACK}Sinal de Entrada (semáforo){}Verde contanto que haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, fica vermelho.
 STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TIP                             :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de sinais combo ou de entrada.
 STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TIP                            :{BLACK}Sinal combo (semáforo){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações.
--- a/src/lang/bulgarian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/bulgarian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} на път от {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Приема: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Приема: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Запаси: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Пътници
 STR_0010_COAL                                                   :Въглища
@@ -379,6 +380,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Максимална скорост
 STR_SORT_BY_MODEL                                               :Модел
 STR_SORT_BY_VALUE                                               :Цена
+STR_SORT_BY_LENGTH                                              :Дължина
 STR_SORT_BY_FACILITY                                            :Вид на гарата
 STR_SORT_BY_WAITING                                             :Цена на чакащият товар
 STR_SORT_BY_RATING_MAX                                          :Рейтинг на товара
@@ -1173,6 +1175,7 @@
 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 мрежа
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :без определено
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Позиция на лента за инструменти: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Ляво
@@ -2652,6 +2655,61 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Хората празнуват . . .{}Първи влак пристигна на {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Подробности)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Влак на пътя
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Отиди до
+STR_ORDER_GO_NON_STOP_TO                                        :Отиди без спиране до
+STR_ORDER_GO_VIA                                                :Отиди чрез
+STR_ORDER_GO_NON_STOP_VIA                                       :Отиди без спиране чрез
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Натовари ако е вазможно
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Напълно нотовари всичкиат товар
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Напълно нотовари какъвто и да е товар
+STR_ORDER_DROP_NO_LOADING                                       :Ненатаваряй
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Разтовари ако позволено
+STR_ORDER_DROP_UNLOAD                                           :Разтовари взичко
+STR_ORDER_DROP_TRANSFER                                         :Смени
+STR_ORDER_DROP_NO_UNLOADING                                     :Неразтаваряй
+STR_ORDER_FULL_LOAD                                             :(Напълно натовари)
+STR_ORDER_FULL_LOAD_ANY                                         :(Напълно натовари какъвто и да е товар)
+STR_ORDER_NO_LOAD                                               :(Ненатоваряй)
+STR_ORDER_UNLOAD                                                :(Ненатоваряй и вземи товар)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Разтовари и чакай за пълен товар)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Разтовари и чакай за какъвто и да е пълен товар)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Разтовари и потегли празен)
+STR_ORDER_TRANSFER                                              :(Смени и вземи товар)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Смени и чакай за пълен товар)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Смени и чакай за какъвто и да е пълен товар)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Смени и потегли празен)
+STR_ORDER_NO_UNLOAD                                             :(Неразтоваряй и вземи товар)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Неразтоваряй и чакай за пълен товар)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Неразтоваряй и чакай за какъвто и да е пълен товар)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Промени начинат на спиране на осветената заповед
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Промени начинат на натоваряне на осветената заповед
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Промени начинат на разтоваряне на осветената заповед
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Отиди до най-близкото депо
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Отиди до най-близкият хангар
+STR_ORDER_NEAREST_DEPOT                                         :най-близкото депо
+STR_ORDER_NEAREST_HANGAR                                        :най-близкият хангар
+STR_ORDER_TRAIN_DEPOT                                           :Депо за влакове
+STR_ORDER_ROAD_DEPOT                                            :Депо за пътни превозни средства
+STR_ORDER_SHIP_DEPOT                                            :Депо за кораби
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} хангар
+
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Максимална скорост
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Винаги
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :е равно на
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :не е равно на
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :е по-малко от
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :е по-малко или равно на
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :е повече от
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :е повече или равно на
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :е правилно
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :е неправилно
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Патувай (без разписание)
 STR_TIMETABLE_TRAVEL_FOR                                        :Патувай за {STRING}
@@ -2709,6 +2767,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Цена: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Товарене/ Разтоварване
+STR_LEAVING                                                     :{LTBLUE}Напуска
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Влакът трябва да бъде спрян в депото
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Не може да пратиш влака в депото...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Няма повече място за още заповеди
@@ -3338,6 +3397,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Използвай прозрачност за сгради като фарове и антени, може би в бъдеще за украси
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Активирай прозрачност за висящите. CTRL+клик за фиксиране.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Вклучи прозрачност за товарещи указатели
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Направи обектите невидими вместо прозрачни
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/catalan.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/catalan.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -18,6 +18,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} en ruta des de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepta: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Provisions: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Passatgers
 STR_0010_COAL                                                   :Carbó
@@ -377,6 +378,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Veloc. Màxima
 STR_SORT_BY_MODEL                                               :Model
 STR_SORT_BY_VALUE                                               :Valor
+STR_SORT_BY_LENGTH                                              :Llargada
 STR_SORT_BY_FACILITY                                            :Tipus de estació
 STR_SORT_BY_WAITING                                             :Valor de espera de càrrega
 STR_SORT_BY_RATING_MAX                                          :Rati de càrrega
@@ -1362,6 +1364,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Nom del joc
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Idioma, versió de servidor, etc.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Clica en un joc de la llista per triar-lo
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}El servidor en el que has entrat per darrera vegada:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Clica per seleccionar al servidor en el que has jugat per darrera vegada:
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Busca servidor
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Cercant un servidor a la xarxa
@@ -2651,6 +2655,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Celebració popular . . .{} Arribada del 1er. tren a {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detalls)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Tren en el camí
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Ves a
+STR_ORDER_GO_NON_STOP_TO                                        :Ves sense parar a
+STR_ORDER_GO_VIA                                                :Ves via
+STR_ORDER_GO_NON_STOP_VIA                                       :Ves sense parar via
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Carrega si està disponible
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Carrega del tot totes les càrregues
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Carrega del tot qualsevol càrrega
+STR_ORDER_DROP_NO_LOADING                                       :No carreguis
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Descarrega si s'accepta
+STR_ORDER_DROP_UNLOAD                                           :Descarrega tot
+STR_ORDER_DROP_TRANSFER                                         :Transfereix
+STR_ORDER_DROP_NO_UNLOADING                                     :No descarreguis
+STR_ORDER_FULL_LOAD                                             :(Càrrega completa)
+STR_ORDER_FULL_LOAD_ANY                                         :(Càrrega completa de qualsevol càrrega)
+STR_ORDER_NO_LOAD                                               :(No carregar)
+STR_ORDER_UNLOAD                                                :(Descarrega i agafa la càrrega)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Descarrega i espera carregar del tot)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Descarrega i espera una càrrega completa qualsevol)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Descarrega i deixa buit)
+STR_ORDER_TRANSFER                                              :(Transfereix i agafa càrrega)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Transfereix i espera una càrrega completa)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Transfereix i espera qualsevol càrrega completa)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Transfereix i deixa buit)
+STR_ORDER_NO_UNLOAD                                             :(No descarreguis i agafa càrrega)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(No descarreguis i espera carregar del tot)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(No descarreguis i espera carregar del tot de qualsevol càrrega)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Canvia el comportament de parada de l'ordre remarcada
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Canvia el comportament de càrrega de l'ordre remarcada
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Canvia el comportament de descàrrega de l'ordre remarcada
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Insereix una ordre avançada
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Ves al dipòsit més proper
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Ves a l'hangar més proper
+STR_ORDER_NEAREST_DEPOT                                         :el més proper
+STR_ORDER_NEAREST_HANGAR                                        :l'hangar més proper
+STR_ORDER_SERVICE_AT                                            :Revisió a
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Revisió sense parar a
+STR_ORDER_TRAIN_DEPOT                                           :Cotxeres de tren
+STR_ORDER_ROAD_DEPOT                                            :Cotxera de Vehicles
+STR_ORDER_SHIP_DEPOT                                            :Drassanes
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Hangar
+
+STR_ORDER_CONDITIONAL                                           :Ordre de salt condicionada
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Dades del vehicle on basar el salt a
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Com comparar les dades del vehicle al valor donat
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}El valor amb el que comparar de les dades del vehicle
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Introdueix el valor amb el que comparar
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Percentatge de càrrega
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Fiabilitat
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Velocitat màxima
+STR_ORDER_CONDITIONAL_AGE                                       :Antiguitat del vehicle (anys)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Necessita revisió
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Sempre
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :és igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :no és igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :és més petit que
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :és més petit o igual que
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :és més gran que
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :és més gran o igual que
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :és verdader
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :és fals
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :salta a l'ordre {COMMA}
+STR_CONDITIONAL_NUM                                             :Salta a l'ordre {COMMA} quan {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Salta a l'ordre {COMMA} quan {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Viatge (fora d'horari)
 STR_TIMETABLE_TRAVEL_FOR                                        :Viatge a {STRING}
@@ -2708,6 +2782,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valor: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Carregant / Descarregant
+STR_LEAVING                                                     :{LTBLUE}Deixant
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}El tren s'ha de parar dins de la cotxera
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}No pots enviar el tren a cotxeres...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}No hi ha més espai per ordres
@@ -3337,6 +3412,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Activa/Desactiva transparència de les estructures com ara fars i antenes
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Commuta la transparència de la catenària. CTRL+clic per bloquejar.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Activa/Desactiva la transparència pels indicadors de carregament
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Mostra els objectes invisibles enlloc de transparents
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/czech.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/czech.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} na cestě z{NBSP}{STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Přijímá: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Přijímá: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Poskytuje: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :cestující
 STR_000F_PASSENGERS.big                                         :Cestující
@@ -231,7 +232,7 @@
 STR_00CD_3                                                      :{BLACK}3
 STR_00CE_4                                                      :{BLACK}4
 STR_00CF_5                                                      :{BLACK}5
-STR_00D0_NOTHING                                                :Nic
+STR_00D0_NOTHING                                                :nic
 STR_00D1_DARK_BLUE                                              :Tmavomodrá
 STR_00D2_PALE_GREEN                                             :Světlezelená
 STR_00D3_PINK                                                   :Růžová
@@ -435,6 +436,7 @@
 STR_SORT_BY_MAX_SPEED                                           :max. rychlosti
 STR_SORT_BY_MODEL                                               :modelu
 STR_SORT_BY_VALUE                                               :hodnoty
+STR_SORT_BY_LENGTH                                              :délky
 STR_SORT_BY_FACILITY                                            :druhu stanice
 STR_SORT_BY_WAITING                                             :množství čekajícího nákladu
 STR_SORT_BY_RATING_MAX                                          :hodnocení přepravy
@@ -976,7 +978,7 @@
 STR_CURR_ITL                                                    :Italská lira (ITL)
 STR_CURR_NLG                                                    :Holandský gulden (NLG)
 STR_CURR_NOK                                                    :Norská koruna (NOK)
-STR_CURR_PLN                                                    :Polský złotý (PLN)
+STR_CURR_PLN                                                    :Polský zlotý (PLN)
 STR_CURR_ROL                                                    :Rumunský lei (ROL)
 STR_CURR_RUR                                                    :Ruský rubl (RUR)
 STR_CURR_SIT                                                    :Slovinský tolar (SIT)
@@ -1019,8 +1021,8 @@
 STR_MONTH_NOV                                                   :Listopad
 STR_MONTH_DEC                                                   :Prosinec
 
-STR_HEADING_FOR_STATION                                         :{LTBLUE}Mířím do {STATION}
-STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Mířím do {STATION}, {VELOCITY}
+STR_HEADING_FOR_STATION                                         :{LTBLUE}Míří do {STATION}
+STR_HEADING_FOR_STATION_VEL                                     :{LTBLUE}Míří do {STATION}, {VELOCITY}
 STR_NO_ORDERS                                                   :{LTBLUE}Bez příkazů
 STR_NO_ORDERS_VEL                                               :{LTBLUE}Bez příkazů, {VELOCITY}
 
@@ -1229,6 +1231,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :lepší silnice
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :mřížka 2x2
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :mřížka 3x3
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :náhodně
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Umístění hlavní lišty: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :vlevo
@@ -1292,8 +1295,8 @@
 STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Změnit datum: {ORANGE}{DATE_SHORT}
 STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Povolit změnu produkce průmyslu: {ORANGE}{STRING}
 
-STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Mířím do {WAYPOINT}
-STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Mířím do {WAYPOINT}, {VELOCITY}
+STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Míří do {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Míří do {WAYPOINT}, {VELOCITY}
 
 STR_GO_TO_WAYPOINT                                              :Jet přes {WAYPOINT}
 STR_GO_NON_STOP_TO_WAYPOINT                                     :Jet bez zastávky přes {WAYPOINT}
@@ -1408,6 +1411,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Jméno hráče:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Podle tohoto jména tě ostatní hráči poznají
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}Zadej své jméno
 STR_NETWORK_CONNECTION                                          :{BLACK}Připojení:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Vyber si mezi hrou na internetu nebo v místní síti
 
@@ -1418,6 +1422,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Název hry
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Jazyk, verze serveru, atd.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Hru vybereš kliknutím do seznamu
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}Naposledy navštívený server:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Kliknutím vybereš server, kde jsi hrál(a) naposledy
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Najít server
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Hledat server v síti
@@ -1451,6 +1457,7 @@
 
 STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Jméno hry:
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Jméno hry se zobrazí ostatním hráčům v menu, kde si vybírají sitovou hru
+STR_NETWORK_NEW_GAME_NAME_OSKTITLE                              :{BLACK}Zadej jméno této síťové hry
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}Nastavit heslo
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Svoji hru si můžeš ochránit heslem, když nechceš, aby se ti do ni hlásili jiní lidé
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Vyber mapu:
@@ -1478,35 +1485,42 @@
 STR_NETWORK_LOAD_GAME_TIP                                       :{BLACK}Pokračovat ve dříve uložené hře pro více hráčů (ujisti se, že se připojuješ na správného hráče)
 
 ############ Leave those lines in this order!!
-STR_NETWORK_LANG_ANY                                            :Jakýkoli
-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
+STR_NETWORK_LANG_ANY                                            :jakýkoli
+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
+STR_NETWORK_LANG_AFRIKAANS                                      :afrikánština
+STR_NETWORK_LANG_CROATIAN                                       :chorvatština
+STR_NETWORK_LANG_CATALAN                                        :katalánština
+STR_NETWORK_LANG_ESTONIAN                                       :estonština
+STR_NETWORK_LANG_GALICIAN                                       :galicijština
+STR_NETWORK_LANG_GREEK                                          :řečtina
+STR_NETWORK_LANG_LATVIAN                                        :lotyština
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Vstupní místnost do multiplayerové hry
@@ -1605,6 +1619,7 @@
 STR_NETWORK_CHAT_TO_CLIENT                                      :[Osobní] pro {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[Všichni] :
 STR_NETWORK_CHAT_ALL                                            :[Všichni] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_OSKTITLE                                       :{BLACK}Zadej zprávu
 STR_NETWORK_NAME_CHANGE                                         :si změnil jméno na
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE}Server ukončil relaci
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE}Server se restartuje...{}Počkejte prosím...
@@ -1746,7 +1761,7 @@
 STR_BUILD_TRAMWAY_BRIDGE                                        :{BLACK}Postavit tramvajový most
 STR_1810_BUILD_ROAD_TUNNEL                                      :{BLACK}Postavit silniční tunel
 STR_BUILD_TRAMWAY_TUNNEL                                        :{BLACK}Postavit tramvajový tunel
-STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Povolit / zakázat jednosměrné silnice
+STR_TOGGLE_ONE_WAY_ROAD                                         :{BLACK}Stavět / nestavět jednosměrné silnice
 STR_1811_TOGGLE_BUILD_REMOVE_FOR                                :{BLACK}Přepnout stavba / odstranění silnice
 STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS                            :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě
 STR_1813_SELECT_ROAD_VEHICLE_DEPOT                              :{BLACK}Výběr orientace garáže
@@ -2008,6 +2023,7 @@
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Zvolit scénář (zelená), přednastavenou hru (modrá), nebo novou náhodnou hru
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Vytvořit novou náhodnou hru
 STR_LOAD_HEIGHTMAP                                              :{WHITE}Nahrát výškovou mapu
+STR_SAVE_OSKTITLE                                               :{BLACK}Zadej jméno pro uloženou hru
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} v cestě
@@ -2322,8 +2338,8 @@
 STR_SHIPS                                                       :{WHITE}{COMMA} lo{P ď dě dí}
 STR_7042_NONE                                                   :{WHITE}Nic
 STR_7043_FACE_SELECTION                                         :{WHITE}Volba tváře
-STR_7044_MALE                                                   :{BLACK}Mužské
-STR_7045_FEMALE                                                 :{BLACK}Ženské
+STR_7044_MALE                                                   :{BLACK}Mužská
+STR_7045_FEMALE                                                 :{BLACK}Ženská
 STR_7046_NEW_FACE                                               :{BLACK}Nový obličej
 STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Zrušit volbu nového obličeje
 STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Potvrdit výběr obličeje
@@ -2703,6 +2719,52 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První vlak dorazil do {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}V cestě je vlak
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Jet do
+STR_ORDER_GO_NON_STOP_TO                                        :Jet bez zastavení do
+STR_ORDER_GO_VIA                                                :Jet přes
+STR_ORDER_GO_NON_STOP_VIA                                       :Jet bez zastavení přes
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Pokud možno naložit
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Plně naložit vším
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Plně naložit čímkoli
+STR_ORDER_DROP_NO_LOADING                                       :Nenakládat
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Vyložit vyžadovaný náklad
+STR_ORDER_DROP_UNLOAD                                           :Vyložit vše
+STR_ORDER_DROP_TRANSFER                                         :Přeložit
+STR_ORDER_DROP_NO_UNLOADING                                     :Nevykládat
+STR_ORDER_FULL_LOAD                                             :(plně naložit)
+STR_ORDER_FULL_LOAD_ANY                                         :(plně naložit cokoli)
+STR_ORDER_NO_LOAD                                               :(nenakládat)
+STR_ORDER_UNLOAD                                                :(vyložit a hned naložit)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(vyložit a plně naložit)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(vyložit a plně naložit čímkoli)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(vyložit a nechat prázdné)
+STR_ORDER_TRANSFER                                              :(přeložit a hned naložit)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(přeložit a plně naložit)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(přeložit a plně naložit čímkoli)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(přeložit a nechat prázdné)
+STR_ORDER_NO_UNLOAD                                             :(nevykládat a hned naložit)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(nevykládat a plně naložit)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(nevykládat a plně naložit čímkoli)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Ovlivnit zastavení u vybraného příkazu
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Ovlivnit nakládání u vybraného příkazu
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Ovlivnit vykládání u vybraného příkazu
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Jet do nejbližšího depa
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Jet do nejbližšího hangáru
+STR_ORDER_NEAREST_DEPOT                                         :nebližšího
+STR_ORDER_NEAREST_HANGAR                                        :nejbližší hangár
+STR_ORDER_SERVICE_AT                                            :Údržba v
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Údržba bez zastavení v
+STR_ORDER_TRAIN_DEPOT                                           :železničním depu
+STR_ORDER_ROAD_DEPOT                                            :silničním depu
+STR_ORDER_SHIP_DEPOT                                            :lodním depu
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} hangár
+
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Jet do (mimo jízdní řád)
 STR_TIMETABLE_TRAVEL_FOR                                        :Jet do {STRING}
@@ -2750,6 +2812,8 @@
 STR_REFIT_ORDER                                                 :(Přestavět na {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Jízdní řád
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Přepnout na jízdní řád
+STR_ORDER_VIEW                                                  :{BLACK}Příkazy
+STR_ORDER_VIEW_TOOLTIP                                          :{BLACK}Přepnout na zobrazení příkazů
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Příkazy)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Konec příkazů - -
 STR_SERVICE                                                     :{BLACK}Údržba
@@ -2758,6 +2822,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Hodnota: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Nakládání / vykládání
+STR_LEAVING                                                     :{LTBLUE}Odjíždí
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Vlak musí stát v depu
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Nelze poslat vlak do depa...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Nedostatek prostoru na příkazy
@@ -2865,7 +2930,7 @@
 STR_900C_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
 STR_900D_AGE_RUNNING_COST_YR                                    :{BLACK}Stáří: {LTBLUE}{STRING}{BLACK}   Cena provozu: {LTBLUE}{CURRENCY} ročně
 STR_900E_MAX_SPEED                                              :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY}
-STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Příjem tento rok: {LTBLUE}{CURRENCY}  (minulý rok): {CURRENCY})
+STR_900F_PROFIT_THIS_YEAR_LAST_YEAR                             :{BLACK}Příjem tento rok: {LTBLUE}{CURRENCY}  (minulý rok: {CURRENCY})
 STR_9010_RELIABILITY_BREAKDOWNS                                 :{BLACK}Spolehlivost: {LTBLUE}{COMMA}%  {BLACK}Poruch od posledního servisu: {LTBLUE}{COMMA}
 STR_9011_BUILT_VALUE                                            :{LTBLUE}{ENGINE}{BLACK}   Koupen: {LTBLUE}{NUM}{BLACK} Cena: {LTBLUE}{CURRENCY}
 STR_9012_CAPACITY                                               :{BLACK}Kapacita: {LTBLUE}{CARGO}
@@ -2873,8 +2938,8 @@
 STR_9014_CAN_T_SELL_ROAD_VEHICLE                                :{WHITE}Nemohu prodat silniční vozidlo...
 STR_9015_CAN_T_STOP_START_ROAD_VEHICLE                          :{WHITE}Nemohu zastavit/rozjet silniční vozidlo...
 STR_9016_ROAD_VEHICLE_IS_WAITING                                :{WHITE}Silniční vozidlo {COMMA} čeká v garáži
-STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Mířím do garáže {TOWN}
-STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Mířím do garáže {TOWN}, {VELOCITY}
+STR_HEADING_FOR_ROAD_DEPOT                                      :{ORANGE}Míří do garáže {TOWN}
+STR_HEADING_FOR_ROAD_DEPOT_VEL                                  :{ORANGE}Míří do garáže {TOWN}, {VELOCITY}
 STR_HEADING_FOR_ROAD_DEPOT_SERVICE                              :{LTBLUE}Údržba v silničním depu {TOWN}
 STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL                          :{LTBLUE}Údržba v silničním depu {TOWN}, {VELOCITY}
 STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT                            :{WHITE}Nemohu poslat silniční vozidlo do garáže...
@@ -2947,7 +3012,7 @@
 STR_9819_CAN_T_SEND_SHIP_TO_DEPOT                               :{WHITE}Nelze poslat loď do depa...
 STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT                             :{WHITE}Nemohu najít místní depo
 STR_HEADING_FOR_SHIP_DEPOT                                      :{ORANGE}Jedu do depa {TOWN}
-STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Mířím do depa {TOWN}, {VELOCITY}
+STR_HEADING_FOR_SHIP_DEPOT_VEL                                  :{ORANGE}Míří do depa {TOWN}, {VELOCITY}
 STR_HEADING_FOR_SHIP_DEPOT_SERVICE                              :{LTBLUE}Údržba v lodním depu {TOWN}
 STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL                          :{LTBLUE}Údržba v lodním depu {TOWN}, {VELOCITY}
 STR_981C_SHIP_IS_WAITING_IN_DEPOT                               :{WHITE}Loď {COMMA} čeká v depu
@@ -3294,6 +3359,7 @@
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Tvorba krajiny
 STR_RANDOM_SEED                                                 :{BLACK}Náhodné číslo:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Zde můžeš zadat seed
+STR_RANDOM_SEED_OSKTITLE                                        :{BLACK}Zadej náhodné číslo
 STR_LAND_GENERATOR                                              :{BLACK}Generátor krajiny:
 STR_TREE_PLACER                                                 :{BLACK}Sázení stromů:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Otočení výškové mapy:
@@ -3386,6 +3452,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti). Nastavení se zamkne CTRL+kliknutím.
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Změna průhlednosti elektrifikace. Nastavení se zamkne CTRL+kliknutím.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Přepnout průhlednost pro ukazatele naložení. Nastavení se zamkne CTRL+kliknutím.
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Objekty budou neviditelné, ne průhledné
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3441,6 +3508,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Na další signál
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Na předešlý signál
+STR_SIGN_OSKTITLE                                               :{BLACK}Zadej název pro značku
 
 ########
 
@@ -3513,3 +3581,8 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Snížit rozestup mezi signály
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Zvýšit rozestup mezi signály
 ########
+
+############ on screen keyboard
+STR_OSK_KEYBOARD_LAYOUT                                         :"+ěščřžýáíé=-\qwertyuiopú)asdfghjklů'  zxcvbnm,./ .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :~1234567890_+|QWERTYUIOP/(}}ASDFGHJKL:!  ZXCVBNM?:_ .
+########
--- a/src/lang/danish.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/danish.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -377,6 +377,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Tophastighed
 STR_SORT_BY_MODEL                                               :Model
 STR_SORT_BY_VALUE                                               :Værdi
+STR_SORT_BY_LENGTH                                              :Længde
 STR_SORT_BY_FACILITY                                            :Stationstype
 STR_SORT_BY_WAITING                                             :Værdi af ventende fragt
 STR_SORT_BY_RATING_MAX                                          :Fragtbedømmelse
@@ -1171,6 +1172,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :bedre veje
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 gitter
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 gitter
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :tilfældig
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Placering af værktøjslinje: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Venstre
@@ -1350,6 +1352,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Spiller navn:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Dette er det navn, som andre spillere vil kende dig ved
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}Indtast dit navn
 STR_NETWORK_CONNECTION                                          :{BLACK}Forbindelse:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Vælg mellem et internet baseret eller et lokalnet baseret spil
 
@@ -1449,6 +1452,10 @@
 STR_NETWORK_LANG_SWEDISH                                        :Svensk
 STR_NETWORK_LANG_TURKISH                                        :Tyrkisk
 STR_NETWORK_LANG_UKRAINIAN                                      :Ukrainsk
+STR_NETWORK_LANG_CROATIAN                                       :Kroatisk
+STR_NETWORK_LANG_GALICIAN                                       :Galicisk
+STR_NETWORK_LANG_GREEK                                          :Græsk
+STR_NETWORK_LANG_LATVIAN                                        :Lettisk
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Netværksspils lobby
@@ -1713,6 +1720,7 @@
 STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
 STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Det er nødvendigt at nedrive bygningen først
 STR_2005                                                        :{WHITE}{TOWN}
+STR_CITY                                                        :{WHITE}{TOWN} (by)
 STR_2006_POPULATION                                             :{BLACK}Indbyggere: {ORANGE}{COMMA}{BLACK}  Huse: {ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :Omdøb byen
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Kan ikke omdøbe byen...
@@ -2638,6 +2646,41 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første tog ankommer til {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detaljer)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Tog i vejen
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Gå til
+STR_ORDER_GO_NON_STOP_TO                                        :Gå uden stop til
+STR_ORDER_GO_VIA                                                :Gå via
+STR_ORDER_GO_NON_STOP_VIA                                       :Gå uden stop via
+STR_ORDER_DROP_UNLOAD                                           :Aflæs alt
+STR_ORDER_DROP_TRANSFER                                         :Overfør
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Overfør og efterlad tom)
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Gå til nærmeste depot
+STR_ORDER_NEAREST_DEPOT                                         :det nærmeste
+STR_ORDER_NEAREST_HANGAR                                        :den nærmeste hangar
+STR_ORDER_TRAIN_DEPOT                                           :Remise
+STR_ORDER_ROAD_DEPOT                                            :Værksted
+STR_ORDER_SHIP_DEPOT                                            :Skibsdok
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} hangar
+
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Pålidelighed
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Tophastighed
+STR_ORDER_CONDITIONAL_AGE                                       :Køretøjets alder (år)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Kræver service
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Altid
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :er lig med
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :er ikke lig med
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :er mindre end
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :er mindre eller lig med
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :er større end
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :er større eller lig med
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :er sand
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :er falsk
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Rejs (ikke iflg. køreplan)
 STR_TIMETABLE_TRAVEL_FOR                                        :Rejs i {STRING}
@@ -2685,6 +2728,7 @@
 STR_REFIT_ORDER                                                 :(Ombyg til {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Køreplan
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Skift til køreplan-visning
+STR_ORDER_VIEW                                                  :{BLACK}Ordrer
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Ordrer)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Slut på ordrer - -
 STR_SERVICE                                                     :{BLACK}Service
@@ -2693,6 +2737,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Værdi: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Læsser / Aflæsser
+STR_LEAVING                                                     :{LTBLUE}Forlader
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Toget skal være stoppet inde i en remise
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Kan ikke sende toget til remise...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Ikke mere plads til ordrer
@@ -3376,6 +3421,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Gå til næste skilt
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Gå til forrige skilt
+STR_SIGN_OSKTITLE                                               :{BLACK}Indtast et navn for skiltet
 
 ########
 
@@ -3448,3 +3494,8 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Formindsk træk-og-slip signaltæthed
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Forøg træk-og-slip signaltæthed
 ########
+
+############ on screen keyboard
+STR_OSK_KEYBOARD_LAYOUT                                         :`1234567890-=\qwertyuiop[]asdfghjkl;'  zxcvbnm,./ .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:"  ZXCVBNM<>? .
+########
--- a/src/lang/dutch.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/dutch.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -18,6 +18,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} opweg van {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepteert: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepteert: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Bied aan: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Passagiers
 STR_0010_COAL                                                   :Kolen
@@ -377,6 +378,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Maximale snelheid
 STR_SORT_BY_MODEL                                               :Model
 STR_SORT_BY_VALUE                                               :Waarde
+STR_SORT_BY_LENGTH                                              :Lengte
 STR_SORT_BY_FACILITY                                            :Station type
 STR_SORT_BY_WAITING                                             :Waarde van wachtende vracht
 STR_SORT_BY_RATING_MAX                                          :Vracht waardering
@@ -1362,6 +1364,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Naam van het spel
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Taal, serverversie, etc.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Klik op een spel uit de lijst om deze te selecteren
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}De server waarmee je het laatste verbonden was:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Klik om de server te selecteren waar je het laatste op hebt gespeeld
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Server zoeken
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Zoeken naar een netwerkserver
@@ -2651,6 +2655,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Inwoners feesten... {}Eerste trein arriveert in {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Details)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Trein in de weg
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Ga naar
+STR_ORDER_GO_NON_STOP_TO                                        :Ga non-stop naar
+STR_ORDER_GO_VIA                                                :Ga via
+STR_ORDER_GO_NON_STOP_VIA                                       :Ga non-stop via
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Laden wanneer beschikbaar
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Volledig laden
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Volledig en stoort vracht laden
+STR_ORDER_DROP_NO_LOADING                                       :Niet laden
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Ontladen wanneeer geaccepteerd
+STR_ORDER_DROP_UNLOAD                                           :Alles ontladen
+STR_ORDER_DROP_TRANSFER                                         :Transfer
+STR_ORDER_DROP_NO_UNLOADING                                     :Niet ontladen
+STR_ORDER_FULL_LOAD                                             :(Volledig laden)
+STR_ORDER_FULL_LOAD_ANY                                         :(Volledig laden een soort vracht)
+STR_ORDER_NO_LOAD                                               :(Niet laden)
+STR_ORDER_UNLOAD                                                :(Ontladen en vracht meenemen)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Ontladen en wacht tot volledig vol)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Ontladen en wacht tot een soort vracht vol)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Ontladen en vertrek leeg)
+STR_ORDER_TRANSFER                                              :(Transfer en neem vracht mee)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Transfer en wacht tot volledig vol)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Transfer en wacht tot een soort vol)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Transfer en vertrek leeg)
+STR_ORDER_NO_UNLOAD                                             :(Niet ontladen en neem vracht mee)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Niet ontladen en wacht tot volledig vol)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Niet ontladen en wacht tot een soort vol)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Verander het stop-gedrag van de geselecteerde order
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Verander het laad/gedrag van d geselecteerde order
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Verander het ontlaad/gedrag van de geselecteerde order
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Voeg een geadvanceerde order toe
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Ga naar dichtstbijzijnde depot
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Ga naar dichtstbijzijnde  hangaar
+STR_ORDER_NEAREST_DEPOT                                         :Het dichtstbijzijnde
+STR_ORDER_NEAREST_HANGAR                                        :De dichtstbijzijnde hangaar
+STR_ORDER_SERVICE_AT                                            :Onderhoud bij
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Onderhoud non-stop bij
+STR_ORDER_TRAIN_DEPOT                                           :Trein Depot
+STR_ORDER_ROAD_DEPOT                                            :Wagen Depot
+STR_ORDER_SHIP_DEPOT                                            :Schip dok
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Hangaar
+
+STR_ORDER_CONDITIONAL                                           :Conditionele order sprong
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Voertuig info voor basis springen wanneer
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Op welke manier vergelijken van de voertuiginfo bij de opgegeven waarde
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}De waarde waartegen het voertuig wordt vergeleken
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Geef waarde voor de vergelijking
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Laad percentage
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Betrouwbaarheid
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Maximum snelheid
+STR_ORDER_CONDITIONAL_AGE                                       :Voertuigleeftijd (jaren)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Heeft onderhoud nodig
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Altijd
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :is gelijk aan
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :is niet gelijjk aan
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :is minder dan
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :is minder of gelijk aan
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :is meer dan
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :is meer of gelijk aan
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :is waar
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :is niet waar
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Spring naar order {COMMA}
+STR_CONDITIONAL_NUM                                             :Spring naar order {COMMA} wanneer {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Spring naar order {COMMA} wanneer {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Reis (geen dienstregeling)
 STR_TIMETABLE_TRAVEL_FOR                                        :Reis naar {STRING}
@@ -2708,6 +2782,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Waarde: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}In- en uitladen
+STR_LEAVING                                                     :{LTBLUE}Vertrekt van
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Trein moet gestopt zijn in depot
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Kan trein niet naar depot sturen...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Geen ruimte meer voor orders
@@ -3337,6 +3412,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Wissel doorzichtigheid voor structuren zoals vuurtoren en antennes, in de toekomst misschien voor eyecandy
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Doorzichtigheid voor bovenleiding. CTRL+klik voor onthouden.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Schakel tussen doorzichtigheid voor laad indicatoren
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Zet object op onzichtbaar in plaats van doorzichtig
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/estonian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/estonian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -19,6 +19,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} teel jaamast {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Võtab vastu: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Võtab vastu: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Tarnib: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Reisijad
 STR_000F_PASSENGERS.g                                           :Reisijate
@@ -369,7 +370,7 @@
 STR_012D                                                        :{WHITE}{STRING}
 STR_012E_CANCEL                                                 :{BLACK}Loobu
 STR_012F_OK                                                     :{BLACK}OK
-STR_0130_RENAME                                                 :{BLACK}Nime muutmine
+STR_0130_RENAME                                                 :{BLACK}Nimevahetus
 STR_0131_TOO_MANY_NAMES_DEFINED                                 :{WHITE}Liiga palju määratletud nimesid
 STR_0132_CHOSEN_NAME_IN_USE_ALREADY                             :{WHITE}Valitud nimi on juba kasutusel
 
@@ -442,7 +443,7 @@
 ############ range for menu starts
 STR_0154_OPERATING_PROFIT_GRAPH                                 :Opereerimiskasumi graafik
 STR_0155_INCOME_GRAPH                                           :Tulugraafik
-STR_0156_DELIVERED_CARGO_GRAPH                                  :Kohaleviidud kauba graafik
+STR_0156_DELIVERED_CARGO_GRAPH                                  :Kaubavoo graafik
 STR_0157_PERFORMANCE_HISTORY_GRAPH                              :Tegevustulemuste graafik
 STR_0158_COMPANY_VALUE_GRAPH                                    :Firmaväärtuse graafik
 STR_0159_CARGO_PAYMENT_RATES                                    :Veotasude määrad
@@ -549,7 +550,7 @@
 STR_0189                                                        :{BLACK}{SMALLDOWNARROW}
 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_018C_WINDOW_TITLE_DRAG_THIS                                 :{BLACK}Akna pealkiri. Liigutamiseks lohista seda hiirega.
 STR_STICKY_BUTTON                                               :{BLACK}Keela selle akna sulgemine 'Sulge kõik aknad' nupu klõpsamisel
 STR_RESIZE_BUTTON                                               :{BLACK}Kliki ja venita, et akna suurust muuta
 STR_SAVELOAD_HOME_BUTTON                                        :{BLACK}Vajuta siia, et minna praegusesse vaikimisi valitud salvestamise/laadimise kausta
@@ -817,7 +818,7 @@
 STR_0286_MUST_BUILD_TOWN_FIRST                                  :{WHITE}...enne pead linna ehitama
 STR_0287_ONLY_ONE_ALLOWED_PER_TOWN                              :{WHITE}...iga linna kohta lubatud ainult üks
 STR_0288_PLANT_TREES                                            :{BLACK}Istuta puid
-STR_0289_PLACE_SIGN                                             :{BLACK}Paigalda silt
+STR_0289_PLACE_SIGN                                             :{BLACK}Sildi paigaldamine
 STR_028A_RANDOM_TREES                                           :{BLACK}Suvalised puud
 STR_028B_PLANT_TREES_RANDOMLY_OVER                              :{BLACK}Istutab puid suvaliselt üle kogu maa
 STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE                         :{BLACK}Loo maastikule kivised alad
@@ -952,10 +953,10 @@
 
 ############ range for menu starts
 STR_INDUSTRY_DIR                                                :Tööstuste nimistu
-STR_0313_FUND_NEW_INDUSTRY                                      :Rahasta uue tööstuse ehitamist
+STR_0313_FUND_NEW_INDUSTRY                                      :Uue tööstuse rahastamine
 ############ range ends here
 
-STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Rahasta uue tööstuse ehitamist
+STR_0314_FUND_NEW_INDUSTRY                                      :{WHITE}Uue tööstuse rahastamine
 STR_JUST_STRING                                                 :{STRING}
 STR_JUST_INT                                                    :{NUM}
 STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS                             :{WHITE}...saab ehitada ainult linnadesse
@@ -1271,6 +1272,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :paremad teed
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 võrgustik
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 võrgustik
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :suvaline
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Tööriistariba asukoht: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Vasakul
@@ -1399,7 +1401,7 @@
 STR_SELECT_STATION_CLASS_TIP                                    :{BLACK}Vali jaama klass mida tahad näidata
 STR_SELECT_STATION_TYPE_TIP                                     :{BLACK}Vali ehitatava jaama tüüp
 
-STR_FAST_FORWARD                                                :{BLACK}Mängu aja kiiresti edasi kerimine
+STR_FAST_FORWARD                                                :{BLACK}Mängu aja kiirendamine
 STR_MESSAGE_HISTORY                                             :{WHITE}Sõnumite ajalugu
 STR_MESSAGE_HISTORY_TIP                                         :{BLACK}Nimekiri hiljutistest uudistest
 STR_MESSAGES_DISABLE_ALL                                        :{BLACK}Lülita kõik välja
@@ -1450,6 +1452,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Mängija nimi:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Selle nime järgi tunnevad sind teised mängijad ära
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}Sisesta enda nimi
 STR_NETWORK_CONNECTION                                          :{BLACK}Ühendus:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Valik internetis ja kohalikus võrgus (LAN) toimuba mängu vahel
 
@@ -1493,6 +1496,7 @@
 
 STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Mängu nimi:
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Mängu nime näidatakse teistele mänijatele võrgumängu serverite nimekirjas
+STR_NETWORK_NEW_GAME_NAME_OSKTITLE                              :{BLACK}Sisesta võrgumängu nimi
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}Sea parool
 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:
@@ -1549,6 +1553,13 @@
 STR_NETWORK_LANG_SWEDISH                                        :Rootsi
 STR_NETWORK_LANG_TURKISH                                        :Türgi
 STR_NETWORK_LANG_UKRAINIAN                                      :Ukraina
+STR_NETWORK_LANG_AFRIKAANS                                      :Afrikaani
+STR_NETWORK_LANG_CROATIAN                                       :Horvaadi
+STR_NETWORK_LANG_CATALAN                                        :Katalaani
+STR_NETWORK_LANG_ESTONIAN                                       :Eesti
+STR_NETWORK_LANG_GALICIAN                                       :Galeegi
+STR_NETWORK_LANG_GREEK                                          :Kreeka
+STR_NETWORK_LANG_LATVIAN                                        :Läti
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Võrgumängu jututuba
@@ -1647,6 +1658,7 @@
 STR_NETWORK_CHAT_TO_CLIENT                                      :[Private] kohta {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[All] :
 STR_NETWORK_CHAT_ALL                                            :[All] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_OSKTITLE                                       :{BLACK}Sisesta tekst võrgus suhtlemiseks
 STR_NETWORK_NAME_CHANGE                                         :muutis oma nimeks
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} Server sulges sessiooni
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE} Server restardib...{}Palun oota...
@@ -1813,9 +1825,10 @@
 STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
 STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}Ehitis tuleb eelnevalt hävitada
 STR_2005                                                        :{WHITE}{TOWN}
+STR_CITY                                                        :{WHITE}{TOWN} (Linn)
 STR_2006_POPULATION                                             :{BLACK}Rahvaarv: {ORANGE}{COMMA}{BLACK}  Ehitisi: {ORANGE}{COMMA}
-STR_2007_RENAME_TOWN                                            :Linnanime muutmine
-STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Linnanime ei saa muuta...
+STR_2007_RENAME_TOWN                                            :Linna nime vahetamine
+STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}Linna nime ei saa vahetada...
 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
@@ -1909,7 +1922,7 @@
 ##id 0x2800
 STR_LANDSCAPING                                                 :Maapinna kujundamine
 STR_2800_PLANT_TREES                                            :Puude istutamine
-STR_2801_PLACE_SIGN                                             :Paigalda silt
+STR_2801_PLACE_SIGN                                             :Sildi paigaldamine
 STR_2802_TREES                                                  :{WHITE}Puud
 STR_2803_TREE_ALREADY_HERE                                      :{WHITE}...siin on juba puu olemas
 STR_2804_SITE_UNSUITABLE                                        :{WHITE}...ebasobiv koht
@@ -1943,8 +1956,8 @@
 STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT                           :{WHITE}Liiga lähedal teisele lennuväljale
 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_3030_RENAME_STATION_LOADING                                 :Jaama nime vahetamine
+STR_3031_CAN_T_RENAME_STATION                                   :{WHITE}Jaama nime ei saa vahetada...
 STR_3032_RATINGS                                                :{BLACK}Hinnangud
 STR_3033_ACCEPTS                                                :{BLACK}Võtab vastu
 STR_3034_LOCAL_RATING_OF_TRANSPORT                              :{BLACK}Kohaliku veoteenuse hinnang:
@@ -2002,7 +2015,7 @@
 STR_3063_SHIP_DOCK                                              :Laevasadam
 STR_3064_HIGHLIGHT_COVERAGE_AREA                                :{BLACK}Lülita sisse jaama mõjupiirkonna näitamine
 STR_3065_DON_T_HIGHLIGHT_COVERAGE                               :{BLACK}Lülita välja jaama mõjupiirkonna näitamine
-STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Näita mõjupiirkonda
+STR_3066_COVERAGE_AREA_HIGHLIGHT                                :{BLACK}Mõjupiirkonna näitamine
 STR_3068_DOCK                                                   :{WHITE}Sadam
 STR_3069_BUOY                                                   :Poi
 STR_306A_BUOY_IN_THE_WAY                                        :{WHITE}...poi on ees
@@ -2049,6 +2062,7 @@
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Vali valmis kaart (roheline), eelseadistatud mäng (sinine), või juhusliku kaardiga uus mäng
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Tekita suvaline kaart
 STR_LOAD_HEIGHTMAP                                              :{WHITE}Laadi kõrguskaart
+STR_SAVE_OSKTITLE                                               :{BLACK}Sisesta salvestatavale mängule nimi
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} on ees
@@ -2738,6 +2752,74 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Rahvas rõõmustab. . .{}{STATION} jaama saabus esimene rong!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (üksikasjad)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Rong on ees
+STR_ORDER_GO_TO                                                 :Mine
+STR_ORDER_GO_NON_STOP_TO                                        :Mine peatumata
+STR_ORDER_GO_VIA                                                :Mine läbi
+STR_ORDER_GO_NON_STOP_VIA                                       :Mine peatumata läbi
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Laadi, kui saadaval
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Laadi kõiki kaupu täis
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Laadi ühte kaupa täis
+STR_ORDER_DROP_NO_LOADING                                       :Mitte laadida
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Kui võetakse vastu, laadi maha
+STR_ORDER_DROP_UNLOAD                                           :Laadi kõik maha
+STR_ORDER_DROP_TRANSFER                                         :Laadi ümber
+STR_ORDER_DROP_NO_UNLOADING                                     :Mitte maha laadida
+STR_ORDER_FULL_LOAD                                             :(Laaditakse täis)
+STR_ORDER_FULL_LOAD_ANY                                         :(Ühte kaupa laaditakse täis)
+STR_ORDER_NO_LOAD                                               :(Ei laadita)
+STR_ORDER_UNLOAD                                                :(Laaditakse tühjaks ja laadung võetakse peale)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Laaditakse tühjaks ja oodatakse täislaadungit)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Laaditakse tühjaks ja oodatakse suvalist täislaadungit)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Laaditakse tühjaks ja jäetakse tühjaks)
+STR_ORDER_TRANSFER                                              :(Laaditakse ümber ja laadung võetakse peale)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Laaditakse ümber ja oodatakse täislaadungit)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Laaditakse ümber ja oodatakse suvalist täislaadungit)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Laaditakse ümber ja jäetakse tühjaks)
+STR_ORDER_NO_UNLOAD                                             :(Maha ei laadita ja laadung võetakse peale)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Maha ei laadita ja oodatakse täislaadungit)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Maha ei laadita ja oodatakse suvalist täislaadungit)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Valitud sihtpunktis peatumise protseduuri muutmine
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Valitud sihtpunktis pealelaadimise protseduuri muutmine
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Valitud sihtpunktis mahalaadimise protseduuri muutmine
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Täpsustatud käskluse lisamine
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Mine lähimasse depoosse
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Mine lähimasse angaari
+STR_ORDER_NEAREST_DEPOT                                         :lähim
+STR_ORDER_NEAREST_HANGAR                                        :lähim angaar
+STR_ORDER_SERVICE_AT                                            :Teenindamine
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Teenindamine ilma peatumata
+STR_ORDER_TRAIN_DEPOT                                           :rongidepoos
+STR_ORDER_ROAD_DEPOT                                            :sõidukidepoos
+STR_ORDER_SHIP_DEPOT                                            :laevadepoos
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} angaar
+
+STR_ORDER_CONDITIONAL                                           :Tinglik sihtpunkti vahetamine
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Sõiduki andmed, millel sihtpunkti vahetamine põhineb
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Kuidas sõiduki andmeid antud väärtusega võrreldakse
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Väärtus, millega sõiduki andmeid võrreldakse
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Sisesta väärtus, millega võrrelda
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Koorem prontsentides
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Tehnoseisund
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Tippkiirus
+STR_ORDER_CONDITIONAL_AGE                                       :Sõiduki vanus (aastates)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Vajab hooldust
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Alati
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :on võrdne
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :pole võrdne
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :on vähem, kui
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :on võrdne või vähem, kui
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :on rohkem, kui
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :on võrdne või rohkem, kui
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :on tõene
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :on väär
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Mine sihtpunkti {COMMA}
+STR_CONDITIONAL_NUM                                             :Mine sihtpunkti {COMMA}, kui {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Mine sihtpunkti{COMMA}, kui {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Sõitmine (sõiduplaanita)
 STR_TIMETABLE_TRAVEL_FOR                                        :Sõida {STRING}
@@ -2776,7 +2858,7 @@
 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
-STR_8820_RENAME                                                 :{BLACK}Nime muutmine
+STR_8820_RENAME                                                 :{BLACK}Nimevahetus
 STR_8823_SKIP                                                   :{BLACK}Jäta vahele
 STR_8824_DELETE                                                 :{BLACK}Kustuta
 STR_8826_GO_TO                                                  :{BLACK}Mine
@@ -2785,6 +2867,8 @@
 STR_REFIT_ORDER                                                 :(Taasseadista {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Sõiduplaan
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Näita sõiduplaani
+STR_ORDER_VIEW                                                  :{BLACK}Korraldused
+STR_ORDER_VIEW_TOOLTIP                                          :{BLACK}Lülita korralduste vaatesse
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (käsud)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Sihtpunktide lõpp - -
 STR_SERVICE                                                     :{BLACK}Hooldus
@@ -2793,6 +2877,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Väärtus: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Veose ümberlaadimine
+STR_LEAVING                                                     :{LTBLUE}Lahkub
 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
@@ -2819,7 +2904,7 @@
 STR_8842_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Keskenda põhivaade rongidepoo kohale
 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_8845_RENAME_TRAIN_VEHICLE_TYPE                              :{BLACK}Vaheta 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 sihtpunkte
 STR_8848_CENTER_MAIN_VIEW_ON_TRAIN                              :{BLACK}Vaate viimine rongi asukohale
@@ -2833,7 +2918,7 @@
 STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES                         :{BLACK}Näita täpsemat infot rongivagunite kohta
 STR_8851_SHOW_CAPACITIES_OF_EACH                                :{BLACK}Näita iga rongivaguni kandevõimet
 STR_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_8852_ORDERS_LIST_CLICK_ON_ORDER                             :{BLACK}Sihtpunktide nimekiri. Valimiseks klõpsa sihtpunktil. CTRL + klikk keskendab vaateakna jaama peale.
 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_8856_INSERT_A_NEW_ORDER_BEFORE                              :{BLACK}Lisa uus käsk nimekirja lõppu, või enne valitud käsku
@@ -2858,8 +2943,8 @@
 STR_8867_NAME_TRAIN                                             :{BLACK}Rongi nimi
 STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL                            :{BLACK}{BIGFONT}RONGIKOKKUPÕRGE!{}{COMMA} surid tules peale kokkusõitmist
 STR_8869_CAN_T_REVERSE_DIRECTION                                :{WHITE}Ei saa rongi ümber pöörata.
-STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Muuda rongivaguni tüübinime
-STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Raudteesõiduki tüübinime ei saa muuta...
+STR_886A_RENAME_TRAIN_VEHICLE_TYPE                              :{WHITE}Vaheta rongivaguni tüübinime
+STR_886B_CAN_T_RENAME_TRAIN_VEHICLE                             :{WHITE}Raudteesõiduki tüübinime ei saa vahetada...
 STR_CLEAR_TIME                                                  :{BLACK}Tühista aeg
 STR_RESET_LATENESS                                              :{BLACK}Tühista hilinemisloendur
 
@@ -2943,10 +3028,10 @@
 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}Nime muutmine
-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_9034_RENAME                                                 :{BLACK}Nimevahetus
+STR_9035_RENAME_ROAD_VEHICLE_TYPE                               :{BLACK}Vaheta mootorsõiduki tüübinime
+STR_9036_RENAME_ROAD_VEHICLE_TYPE                               :{WHITE}Vaheta mootorsõiduki tüübinime
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE                              :{WHITE}Mootorsõiduki tüübinime ei saa vahetada...
 
 STR_REFIT_ROAD_VEHICLE_TO_CARRY                                 :{BLACK}Seadista mootorsõidukit kandmaks teist tüüpi veost
 STR_REFIT_ROAD_VEHICLE                                          :{BLACK}Muuda mootorsõiduki seadistust
@@ -3009,10 +3094,10 @@
 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}Nime muutmine
-STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Nimeta laeva tüüp ümber
-STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Nimeta laeva tüüp ümber
-STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}Ei saa laeva tüüpi ümber nimetada...
+STR_9836_RENAME                                                 :{BLACK}Nimevahetus
+STR_9837_RENAME_SHIP_TYPE                                       :{BLACK}Laeva tüübinime vahetamine
+STR_9838_RENAME_SHIP_TYPE                                       :{WHITE}Laeva tüübinime vahetamine
+STR_9839_CAN_T_RENAME_SHIP_TYPE                                 :{WHITE}Laeva tüübinime ei saa vahetada...
 STR_983A_REFIT_CARGO_SHIP_TO_CARRY                              :{BLACK}Seadista laev ümber teise kaubatüübi jaoks
 STR_983B_REFIT                                                  :{WHITE}{VEHICLE} (Seadista ümber)
 STR_983C_REFIT_SHIP                                             :{BLACK}Seadista laev ümber
@@ -3080,10 +3165,10 @@
 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}
-STR_A037_RENAME                                                 :{BLACK}Nime muutmine
-STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Nimeta lennuki tüüp ümber
-STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Nimeta lennuki tüüp ümber
-STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}Ei saa lennuki tüüpi ümber nimetada...
+STR_A037_RENAME                                                 :{BLACK}Nimevahetus
+STR_A038_RENAME_AIRCRAFT_TYPE                                   :{BLACK}Lennuki tüübinime vahetamine
+STR_A039_RENAME_AIRCRAFT_TYPE                                   :{WHITE}Lennuki tüübinime vahetamine
+STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE                             :{WHITE}Lennuki tüübinime ei saa vahetada...
 STR_A03B_REFIT_AIRCRAFT_TO_CARRY                                :{BLACK}Seadista lennuk teistsuguse kauba kandmiseks ümber
 STR_A03C_REFIT                                                  :{WHITE}{VEHICLE} (Seadista ümber)
 STR_A03D_REFIT_AIRCRAFT                                         :{BLACK}Seadista lennuk ümber
@@ -3329,6 +3414,7 @@
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Maailma genereerimine
 STR_RANDOM_SEED                                                 :{BLACK}Juhuarv:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Klõpsa juhuarvu sisestamiseks
+STR_RANDOM_SEED_OSKTITLE                                        :{BLACK}Sisesta suvaline arv
 STR_LAND_GENERATOR                                              :{BLACK}Maa generaator:
 STR_TREE_PLACER                                                 :{BLACK}Puude algoritm:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Kõrgustekaardi pööre:
@@ -3421,6 +3507,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Vaheta läbipaistvust rajatistel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Õhuliinide läbipaistvuse vahetamine. CTRL-klahvi toel klõpsamine lukustab.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Vaheta laadimisnäidikute läbipaistvust
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Muuda esemed nähtamatuks, mitte läbipaistvaks
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3448,12 +3535,12 @@
 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_RENAME_CAPTION                                        :{BLACK}Grupi nime vahetamine
 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_RENAME                                          :{WHITE}Grupi nime ei saa vahetada...
 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...
@@ -3461,7 +3548,7 @@
 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_RENAME_TIP                                            :{BLACK}Valitud grupi nime vahetamine
 STR_GROUP_REPLACE_PROTECTION_TIP                                :{BLACK}Klõpsa, et seda üksust üldise iseväljavahetuse eest kaitsta
 
 STR_COMPANY_NAME                                                :{COMPANY}
@@ -3476,6 +3563,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Mine järgmise märgi juurde
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Mine eelmise märgi juurde
+STR_SIGN_OSKTITLE                                               :{BLACK}Sisesta sildile nimi
 
 ########
 
@@ -3548,3 +3636,8 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Vähenda signalisatsioonide sagedust lohistades
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Suurenda signalisatsioonide sagedust lohistades
 ########
+
+############ on screen keyboard
+STR_OSK_KEYBOARD_LAYOUT                                         :`1234567890-=\qwertyuiop[]asdfghjkl;'  zxcvbnm,./ .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:"  ZXCVBNM<>? .
+########
--- a/src/lang/french.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/french.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -19,6 +19,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} venant de {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepte: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepte: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Fournit: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Passagers
 STR_0010_COAL                                                   :Charbon
@@ -378,6 +379,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Vitesse maximum
 STR_SORT_BY_MODEL                                               :Modèle
 STR_SORT_BY_VALUE                                               :Valeur
+STR_SORT_BY_LENGTH                                              :Longueur
 STR_SORT_BY_FACILITY                                            :Type de station
 STR_SORT_BY_WAITING                                             :Marchandise en attente
 STR_SORT_BY_RATING_MAX                                          :Notation
@@ -1239,8 +1241,8 @@
 STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}En route pour {WAYPOINT}
 STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}En route pour {WAYPOINT}, {VELOCITY}
 
-STR_GO_TO_WAYPOINT                                              :Passant par {WAYPOINT}
-STR_GO_NON_STOP_TO_WAYPOINT                                     :Aller sans-arrêt via {WAYPOINT}
+STR_GO_TO_WAYPOINT                                              :Passer par {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Passer sans arrêt par {WAYPOINT}
 
 STR_WAYPOINTNAME_CITY                                           :Point de contrôle {TOWN}
 STR_WAYPOINTNAME_CITY_SERIAL                                    :Point de contrôle {TOWN} #{COMMA}
@@ -1363,6 +1365,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Nom de la partie
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Langue, version du serveur, etc.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Cliquer sur une partie de la liste pour la sélectionner
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}Le dernier serveur utilisé:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Cliquer pour choisir le dernier serveur utilisé
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Trouver un serveur
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Cherche sur le réseau un serveur
@@ -2652,6 +2656,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Les habitants célèbrent{}l'arrivée du premier train à {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Détails)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Train présent
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Aller à
+STR_ORDER_GO_NON_STOP_TO                                        :Aller sans arrêt à
+STR_ORDER_GO_VIA                                                :Passer par
+STR_ORDER_GO_NON_STOP_VIA                                       :Passer sans arrêt par
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Charger si possible
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Chargement complet
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Chargement complet par un seul type
+STR_ORDER_DROP_NO_LOADING                                       :Pas de chargement
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Décharger si accepté
+STR_ORDER_DROP_UNLOAD                                           :Décharger tout
+STR_ORDER_DROP_TRANSFER                                         :Transférer
+STR_ORDER_DROP_NO_UNLOADING                                     :Pas de déchargement
+STR_ORDER_FULL_LOAD                                             :(Charger complètement)
+STR_ORDER_FULL_LOAD_ANY                                         :(Charger complètement par un seul type)
+STR_ORDER_NO_LOAD                                               :(Pas de chargement)
+STR_ORDER_UNLOAD                                                :(Décharger)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Décharger et attendre pleine charge)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Décharger et attendre pleine charge par un seul type)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Décharger et laisser vide)
+STR_ORDER_TRANSFER                                              :(Transférer et charger)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Transférer et attendre pleine charge)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Transférer et attendre pleine charge par un seul type)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Transférer et laisser vide)
+STR_ORDER_NO_UNLOAD                                             :(Charger sans décharger)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Attendre pleine charge sans décharger)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Attendre pleine charge par un type sans décharger)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Modifier le comportement d'arrêt de l'ordre sélectionné
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Modifier le comportement de chargement de l'ordre sélectionné
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Modifier le comportement de déchargement de l'ordre sélectionné
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Insérer un ordre avancé
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Aller au dépôt le plus proche
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Aller au hangar le plus proche
+STR_ORDER_NEAREST_DEPOT                                         :le plus proche
+STR_ORDER_NEAREST_HANGAR                                        :hangar le plus proche
+STR_ORDER_SERVICE_AT                                            :Entretien au
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Entretien sans arrêt au
+STR_ORDER_TRAIN_DEPOT                                           :dépôt ferroviaire
+STR_ORDER_ROAD_DEPOT                                            :dépôt routier
+STR_ORDER_SHIP_DEPOT                                            :dépôt naval
+STR_GO_TO_DEPOT                                                 :{STRING} {2:STRING} de {1:TOWN}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {2:STRING} {1:STRING}
+STR_GO_TO_HANGAR                                                :{STRING} hangar de {STATION}
+
+STR_ORDER_CONDITIONAL                                           :Saut conditionnel d'ordre
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Données du véhicule servant de base au saut
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Comment comparer les données du véhicule à la valeur donnée
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}La valeur à comparer aux données du véhicule
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Entrer la valeur à comparer
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Pourcentage de chargement
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Fiabilité
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Vitesse maximum
+STR_ORDER_CONDITIONAL_AGE                                       :Âge du véhicule (années)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Entretien nécessaire
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Toujours
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :est égal à
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :n'est pas égal à
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :est inférieur à
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :est inférieur ou égal à
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :est supérieur à
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :est supérieur ou égal à
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :est vrai
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :est faux
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Sauter à l'ordre {COMMA}
+STR_CONDITIONAL_NUM                                             :Sauter à l'ordre {COMMA} quand {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Sauter à l'ordre {COMMA} quand {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Voyager (sans horaires)
 STR_TIMETABLE_TRAVEL_FOR                                        :Voyager pendant {STRING}
@@ -2709,6 +2783,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valeur: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Chargement/déchargement
+STR_LEAVING                                                     :{LTBLUE}Départ
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Le train doit être stoppé dans un dépôt
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Impossible d'envoyer le train au dépôt...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Plus de places pour les ordres
@@ -3338,6 +3413,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Transparence des structures telles que phares et antennes. Ctrl-clic pour vérouiller.
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Transparence des caténaires. Ctrl-clic pour vérouiller.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Transparence pour les indicateurs de chargement. Ctrl-clic pour vérouiller.
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Basculer transparence/invisibilité
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/icelandic.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/icelandic.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -1,7 +1,7 @@
 ##name Icelandic
 ##ownname Íslenska
 ##isocode is_IS
-##plural 0
+##plural 9
 ##gender karlkyn kvenkyn hvorugkyn
 
 #
--- a/src/lang/italian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/italian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} in viaggio da {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accetta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accetta: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Fornisce: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :{G=m}Passeggeri
 STR_0010_COAL                                                   :{G=m}Carbone
@@ -379,6 +380,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Velocità massima
 STR_SORT_BY_MODEL                                               :Modello
 STR_SORT_BY_VALUE                                               :Valore
+STR_SORT_BY_LENGTH                                              :Lunghezza
 STR_SORT_BY_FACILITY                                            :Tipo di stazione
 STR_SORT_BY_WAITING                                             :Merci in attesa
 STR_SORT_BY_RATING_MAX                                          :Valutazione servizi
@@ -1043,7 +1045,7 @@
 STR_CONFIG_PATCHES_LONGDATE                                     :{LTBLUE}Mostra sempre la data lunga nella barra di stato: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SIGNALSIDE                                   :{LTBLUE}Mostra i segnali sul lato di guida: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SHOWFINANCES                                 :{LTBLUE}Mostra la finestra delle finanze alla fine dell'anno: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}Gestisci la funzione 'non-stop' come in TTDPatch: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NEW_NONSTOP                                  :{LTBLUE}Gestisci la funzione 'no-stop' come in TTDPatch: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ROADVEH_QUEUE                                :{LTBLUE}Accodamento automezzi fuori da una stazione occupata: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_AUTOSCROLL                                   :{LTBLUE}Scorri la visuale quando il mouse è su un bordo: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BRIBE                                        :{LTBLUE}Consenti la corruzione dell'autorità locale: {ORANGE}{STRING}
@@ -1241,7 +1243,7 @@
 STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Diretto a {WAYPOINT}, {VELOCITY}
 
 STR_GO_TO_WAYPOINT                                              :Procedi attraverso {WAYPOINT}
-STR_GO_NON_STOP_TO_WAYPOINT                                     :Procedi non-stop attraverso {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT                                     :Procedi no-stop attraverso {WAYPOINT}
 
 STR_WAYPOINTNAME_CITY                                           :Waypoint di {TOWN}
 STR_WAYPOINTNAME_CITY_SERIAL                                    :Waypoint di {TOWN} #{COMMA}
@@ -1364,6 +1366,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Nome della partita
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Lingua, versione del server, etc.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Fare clic su una partita in elenco per selezionarla
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}L'ultimo server utilizzato.
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Fare clic per selezionare il server su cui si è giocato l'ultima volta
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Trova server
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Cerca un server sulla rete
@@ -2653,6 +2657,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}I cittadini festeggiano . . .{}Il primo treno arriva a {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Dettagli)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Treno di mezzo
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Vai a
+STR_ORDER_GO_NON_STOP_TO                                        :Vai non-stop a
+STR_ORDER_GO_VIA                                                :Procedi verso
+STR_ORDER_GO_NON_STOP_VIA                                       :Procedi non-stop verso
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Carica se possibile
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Attendi pieno carico
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Attendi qualsiasi carico
+STR_ORDER_DROP_NO_LOADING                                       :Non caricare
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Scarica se accettato
+STR_ORDER_DROP_UNLOAD                                           :Scarica tutto
+STR_ORDER_DROP_TRANSFER                                         :Trasferisci
+STR_ORDER_DROP_NO_UNLOADING                                     :Non scaricare
+STR_ORDER_FULL_LOAD                                             :(Attendi pieno carico)
+STR_ORDER_FULL_LOAD_ANY                                         :(Attendi qualsiasi carico)
+STR_ORDER_NO_LOAD                                               :(Non caricare)
+STR_ORDER_UNLOAD                                                :(Scarica)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Scarica e attendi pieno carico)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Scarica e attendi qualsiasi carico)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Scarica e parti vuoto)
+STR_ORDER_TRANSFER                                              :(Trasferisci e carica)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Trasferisci e attendi pieno carico)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Trasferisci e attendi qualsiasi carico)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Trasferisci e parti vuoto)
+STR_ORDER_NO_UNLOAD                                             :(Non scaricare e carica)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Non scaricare e attendi pieno carico)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Non scaricare e attendi qualsiasi carico)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Cambia la modalità di fermata alle stazioni intermedie relativa all'ordine selezionato
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Cambia la modalità di caricamento alla stazione indicata nell'ordine selezionato
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Cambia la modalità di scaricamento alla stazione indicata nell'ordine selezionato
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Inserisce un ordine avanzato
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Vai al deposito più vicino
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Vai all'hangar più vicino
+STR_ORDER_NEAREST_DEPOT                                         :più vicino
+STR_ORDER_NEAREST_HANGAR                                        :più vicino Hangar
+STR_ORDER_SERVICE_AT                                            :Manutenzione al
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Manutenzione no-stop al
+STR_ORDER_TRAIN_DEPOT                                           :Deposito ferroviario
+STR_ORDER_ROAD_DEPOT                                            :Deposito automezzi
+STR_ORDER_SHIP_DEPOT                                            :Deposito navale
+STR_GO_TO_DEPOT                                                 :{0:STRING} {2:STRING} di {1:TOWN}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING}l'Hangar di {STATION}
+
+STR_ORDER_CONDITIONAL                                           :Salto condizionale a ordine
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Dato del veicolo sul quale basare il salto
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Modalità di confronto del dato del veicolo con il valore inserito
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Valore col quale confrontare il dato del veicolo
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Inserire il valore da confrontare
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Percentuale di carico
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Affidabilità
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Velocità massima
+STR_ORDER_CONDITIONAL_AGE                                       :Età del veicolo (anni)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Manutenzione richiesta
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Sempre
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :è uguale a
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :è diverso da
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :è minore di
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :è minore o uguale a
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :è maggiore di
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :è maggiore o uguale a
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :è vero
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :è falso
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Salta all'ordine {COMMA}
+STR_CONDITIONAL_NUM                                             :Salta all'ordine {COMMA} se {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Salta all'ordine {COMMA} se {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Viaggia senza orario
 STR_TIMETABLE_TRAVEL_FOR                                        :Viaggia per {STRING}
@@ -2710,6 +2784,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valore: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Caricamento / Scaricamento
+STR_LEAVING                                                     :{LTBLUE}In partenza
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Il treno deve essere fermo in un deposito
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Impossibile mandare il treno al deposito...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Spazio per gli ordini terminato
@@ -3339,6 +3414,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Attiva/disattiva la trasparenza di strutture come fari e antenne. CTRL+clic per bloccare.
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Attiva/disattiva la trasparenza delle catenarie. CTRL+clic per bloccare.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento. CTRL+clic per bloccare.
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Rendi gli oggetti invisibili invece che trasparenti
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3394,7 +3470,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Va al cartello successivo
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Va al cartello precedente
-STR_SIGN_OSKTITLE                                               :{BLACK}Inserire il nome del cartello
+STR_SIGN_OSKTITLE                                               :{BLACK}Inserire il testo del cartello
 
 ########
 
@@ -3469,6 +3545,6 @@
 ########
 
 ############ on screen keyboard
-STR_OSK_KEYBOARD_LAYOUT                                         :\1234567890'ìùqwertyuiopè+asdfghjklòà  zxcvbnm,.- .
-STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :|!"£$%&/()=?^QWERTYUIOPé*§ASDFGHJKLç°  ZXCVBNM;:_ .
+STR_OSK_KEYBOARD_LAYOUT                                         :\1234567890'ì qwertyuiopè+asdfghjklòàù<zxcvbnm,.- .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :|!"£$%&/()=?^ QWERTYUIOPé*ASDFGHJKLç°§>ZXCVBNM;:_ .
 ########
--- a/src/lang/russian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/russian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} транзитом из {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Принимаются: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Принимаются: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Принимает: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Пассажиры
 STR_0010_COAL                                                   :Уголь
@@ -1173,6 +1174,7 @@
 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_TOWN_LAYOUT_RANDOM                           :случайно
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Положение главной панели инструментов: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :слева
@@ -1352,6 +1354,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Имя игрока:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Это имя, под которым вы представитесь другим игрокам
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}Введите ваше имя
 STR_NETWORK_CONNECTION                                          :{BLACK}Соединение:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Искать сервера в локальной сети, или в Интернете
 
@@ -1362,6 +1365,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Название игры
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Язык, версия сервера и т.п.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Выберите игру из списка
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}Последний сервер, к которому вы подключались:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Нажмите для выбора последнего сервера
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Обновить
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Обновить список серверов, которые сейчас есть в сети
@@ -1395,6 +1400,7 @@
 
 STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Название игры:
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}Название игры, которое игроки увидят в меню выбора сетевой игры
+STR_NETWORK_NEW_GAME_NAME_OSKTITLE                              :{BLACK}Введите ваше имя для сетевой игры
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}Установить пароль
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Защитите вашу игру паролем, если вы не хотите, чтобы к ней могли подключиться все желающие
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Выбор карты:
@@ -1556,6 +1562,7 @@
 STR_NETWORK_CHAT_TO_CLIENT                                      :[Лично] к {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[Всем] :
 STR_NETWORK_CHAT_ALL                                            :[Всем] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_OSKTITLE                                       :{BLACK}Введите текст для сетевого сообщения
 STR_NETWORK_NAME_CHANGE                                         :изменил свое имя на
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} Сервер закрыл сессию
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE} Сервер перезапускается...{}Пожалуйста, подождите...
@@ -1959,6 +1966,7 @@
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Выбрать сценарий(зеленый), предустановленную новую игру (синий) или случайную новую игру
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Сгенерировать случайную карту
 STR_LOAD_HEIGHTMAP                                              :{WHITE}Загруз. ЛАНДШАФТ
+STR_SAVE_OSKTITLE                                               :{BLACK}Введите имя сохраняемой игры
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} на пути
@@ -2659,6 +2667,74 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Жители празднуют!{}Первый поезд прибыл на станцию {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Детали)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Поезд мешает
+STR_ORDER_GO_TO                                                 :Идти на
+STR_ORDER_GO_NON_STOP_TO                                        :Идти без остановки на
+STR_ORDER_GO_VIA                                                :Идти через
+STR_ORDER_GO_NON_STOP_VIA                                       :Идти без остановки через
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Погрузить если доступно
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Полная загрузка всего груза
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Полная загрузка любым грузом
+STR_ORDER_DROP_NO_LOADING                                       :Не грузиться
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Разгузиться если груз принимается
+STR_ORDER_DROP_UNLOAD                                           :Выгрузить все
+STR_ORDER_DROP_TRANSFER                                         :Передать
+STR_ORDER_DROP_NO_UNLOADING                                     :Не разгружаться
+STR_ORDER_FULL_LOAD                                             :(Полн. погрузка)
+STR_ORDER_FULL_LOAD_ANY                                         :(Полная погрузка любым грузом)
+STR_ORDER_NO_LOAD                                               :(Не грузиться)
+STR_ORDER_UNLOAD                                                :(Разгрузка)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Разгрузиться и ждать полной загрузки)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Разгрузиться и ждать полной загрузки любым грузом)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Разгрузиться и уйти пустым)
+STR_ORDER_TRANSFER                                              :(Передать и забрать груз)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Передать и ждать полной загрузки)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Передать и ждать полной загрузки любым грузом)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Передать и уйти пустым)
+STR_ORDER_NO_UNLOAD                                             :(Не разгружаться и забрать груз)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Не разгружаться и ждать полной загрузки)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Не разгружать и ждать полной загрузки любым грузом)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Изменить способ остановки для выделенного задания
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Изменить способ погрузки для выделенного задания
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Изменить способ разгрузки для выделенного задания
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Добавить расширенное задание
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Идти к ближайшему депо
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Идти к ближайшему ангару
+STR_ORDER_NEAREST_DEPOT                                         :ближайший
+STR_ORDER_NEAREST_HANGAR                                        :ближайший ангар
+STR_ORDER_SERVICE_AT                                            :Обслуживание в
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Обслуживание без остановки в
+STR_ORDER_TRAIN_DEPOT                                           :Депо
+STR_ORDER_ROAD_DEPOT                                            :Гараже
+STR_ORDER_SHIP_DEPOT                                            :Доке
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} Ангар ({STATION})
+
+STR_ORDER_CONDITIONAL                                           :Условный переход к заданию
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Данные транспорта для перехода
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Как сравнивать данные транспорта с заданным значением
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Значение для сравнения с данными транспорта
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Введите значение для сравнения
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Процент погрузки
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Надежность
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Макс. скорость
+STR_ORDER_CONDITIONAL_AGE                                       :Возраст (лет)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Требуется обслуживание
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Всегда
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         : равно
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     : не равно
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      : Меньше чем
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :меньше или равно чем
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :больше чем
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :больше или равно чем
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :истина
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :ложь
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Перейти к заданию {COMMA}
+STR_CONDITIONAL_NUM                                             :Перейти к заданию {COMMA} когда {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Перейти к заданию {COMMA} когда {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Путешествует (не учитывается)
 STR_TIMETABLE_TRAVEL_FOR                                        :Идти до {STRING}
@@ -2706,6 +2782,8 @@
 STR_REFIT_ORDER                                                 :(Переоборуд. для {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Расписание
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Просмотр расписания
+STR_ORDER_VIEW                                                  :{BLACK}Задания
+STR_ORDER_VIEW_TOOLTIP                                          :{BLACK}Переключиться на просмотр заданий
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Задания)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Конец заданий - -
 STR_SERVICE                                                     :{BLACK}Обслуж.
@@ -2714,6 +2792,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Стоимость: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Разгрузка/Погрузка
+STR_LEAVING                                                     :{LTBLUE}Отъезжает
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Поезд должен быть остановлен в депо
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Невозможно отправить поезд в депо...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Нет больше места для заданий
@@ -3250,6 +3329,7 @@
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Создание мира
 STR_RANDOM_SEED                                                 :{BLACK}Начальное число:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Ландшафт генерируется псевдослучайно, число - опорная точка в последовательности случайных чисел.
+STR_RANDOM_SEED_OSKTITLE                                        :{BLACK}Введите случайное число
 STR_LAND_GENERATOR                                              :{BLACK}Генератор ландш.:
 STR_TREE_PLACER                                                 :{BLACK}Генератор лесов:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Поворот РЕЛЬЕФА:
@@ -3342,6 +3422,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Переключить прозрачность зданий, вроде антенн и маяков.
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Переключить прозрачность контактной сети. Ctrl-щелчок - запрет изменений.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Переключить прозрачность для индикаторов загрузки
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Сделать объекты не прозрачными а невидимыми
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3397,6 +3478,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}К следующему знаку
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}К предыдущему знаку
+STR_SIGN_OSKTITLE                                               :{BLACK}Введите название знака
 
 ########
 
@@ -3469,3 +3551,8 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Уменьшить плотность сигналов при протягивании
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Увеличить плотность сигналов при протягивании
 ########
+
+############ on screen keyboard
+STR_OSK_KEYBOARD_LAYOUT                                         :`1234567890-=\qwertyuiop[]asdfghjkl;'  zxcvbnm,./ .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:"  ZXCVBNM<>? .
+########
--- a/src/lang/slovak.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/slovak.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} na ceste z {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Prijíma: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Prijíma: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Dodáva: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Cestujúcich
 STR_000F_PASSENGERS.g                                           :cestujucich
@@ -1235,6 +1236,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :zdokonalená
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :bloky 2x2
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :bloky 3x3
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :náhodne
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Pozícia hlavného menu: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :vlavo
@@ -2715,6 +2717,8 @@
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detaily)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Vlak v ceste
 
+
+
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Cesta (neurcený cas)
 STR_TIMETABLE_TRAVEL_FOR                                        :Cesta do {STRING}
 STR_TIMETABLE_STAY_FOR                                          :prestávka {STRING}
@@ -3400,6 +3404,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Prepnút priehladnost objektov ako sú majáky a antény
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Prepnút priehladnost pre trakcné vedenie. CTRL+klik pre uzamknutie.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Prepnút priehladnost pre ukazovatele nakladania a vykladania
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Nastavit objekty neviditelné namiesto priehladných
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/slovenian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/slovenian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -19,6 +19,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} na poti iz {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Sprejema: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Sprejema: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Dobavlja: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Potniki
 STR_000F_PASSENGERS.t                                           :Potnike
@@ -419,6 +420,7 @@
 STR_SORT_BY_MAX_SPEED                                           :Največja hitrost
 STR_SORT_BY_MODEL                                               :Model
 STR_SORT_BY_VALUE                                               :Vrednost
+STR_SORT_BY_LENGTH                                              :Dolžina
 STR_SORT_BY_FACILITY                                            :Tip postaje
 STR_SORT_BY_WAITING                                             :Čakanje vrednosti tovora
 STR_SORT_BY_RATING_MAX                                          :Ocene tovora
@@ -1404,6 +1406,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Ime igre
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Jezik, različica strežnika, itd.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Klikni na igro v seznamu, da jo izbereš
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}Zadnjič obiskani strežnik:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Klikni za izbiro zadnjič obiskanega strežnika
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Najdi strežnik
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Poišči strežnik na mreži
@@ -2731,6 +2735,75 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Prebivalci praznujejo . . .{}Prvi vlak je slovesno pripeljal{}na postajo {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Podrobnosti)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Vlak v napoto
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Pojdi do
+STR_ORDER_GO_NON_STOP_TO                                        :Pojdi non-stop do
+STR_ORDER_GO_VIA                                                :Pojdi preko
+STR_ORDER_GO_NON_STOP_VIA                                       :Pojdi non-stop preko
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Napolni, če je na voljo
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Napolni ves tovor
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Napolni kakršenkoli tovor
+STR_ORDER_DROP_NO_LOADING                                       :Brez polnjenja
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Razloži, če je sprejeto
+STR_ORDER_DROP_UNLOAD                                           :Razloži vse
+STR_ORDER_DROP_TRANSFER                                         :Pretovori
+STR_ORDER_DROP_NO_UNLOADING                                     :Ne razloži
+STR_ORDER_FULL_LOAD                                             :(Napolni)
+STR_ORDER_FULL_LOAD_ANY                                         :(Napolni katerikoli tovor)
+STR_ORDER_NO_LOAD                                               :(Brez polnjenja)
+STR_ORDER_UNLOAD                                                :(Razloži in vzemi tovor)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Razloži in počakaj na polno)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Razloži in počakaj na polno česarkoli)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Razloži in pusti prazno)
+STR_ORDER_TRANSFER                                              :(Pretovori in vzemi tovor)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Pretovori in počakaj na polno)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Pretovori in počakaj na polno česarkoli)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Pretovori in pusti prazno)
+STR_ORDER_NO_UNLOAD                                             :(Ne razloži in vzemi tovor)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Ne razloži in počakaj na polno)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Ne razloži in počakaj na polno česarkoli)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Spremeni način ustavljanja za označen ukaz
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Spremeni način polnjenja označenega ukaza
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Spremeni način praznjenja označenega ukaza
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Pojdi v najbližjo garažo
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Pojdi v najbližji hangar
+STR_ORDER_NEAREST_DEPOT                                         :najbližjo
+STR_ORDER_NEAREST_HANGAR                                        :najbližji hangar
+STR_ORDER_SERVICE_AT                                            :Na servis v
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Na servis non-stop v
+STR_ORDER_TRAIN_DEPOT                                           :Železniška garaža
+STR_ORDER_ROAD_DEPOT                                            :Cestna garaža
+STR_ORDER_SHIP_DEPOT                                            :Ladijska garaža
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} hangar
+
+STR_ORDER_CONDITIONAL                                           :Pogojni preskok ukaza
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Podatki vozila na osnovni preskok
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Kako primerjati podatke vozila na podano vrednost
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Primerjalna vrednost za podatke vozila
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Vnesi primerjalno vrednost
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Procenti polnjenja
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Zanesljivost
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Najvišja hitrost
+STR_ORDER_CONDITIONAL_AGE                                       :Starost (leta)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Potrebuje servis
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Vedno
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :je enaka
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :ni enaka kot
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :je manjša kot
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :je manjša ali enaka kot
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :je večja kot
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :je večja ali enaka kot
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :dejavno
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :nedejavno
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Skoči na ukaz {COMMA}
+STR_CONDITIONAL_NUM                                             :Skoči na ukaz {COMMA}, ko je {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Skoči na ukaz {COMMA}, ko je {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Potovanje (brez časovnih tabel)
 STR_TIMETABLE_TRAVEL_FOR                                        :Potuj za {STRING}
@@ -2788,6 +2861,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Vrednost: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Natovarjanje / Raztovarjanje
+STR_LEAVING                                                     :{LTBLUE}Zapušča
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Vlak mora biti ustavljen v garaži
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Vlaka ni mogoče poslati v garažo ...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Ni več prostora za ukaze
@@ -3417,6 +3491,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Prozoren ali navaden pogled struktur kot so antene, svetilniki...
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Preklop prosojnosti za pogone. CTRL+klik za zaklepanje.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Preklop na prosojnost za prikaz polnenja
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Nastavi predmete nevidne namesto prosojne
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/spanish.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/spanish.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -19,6 +19,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} en ruta desde {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Acepta: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Acepta: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Provisiones: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Pasajeros
 STR_0010_COAL                                                   :Carbón
@@ -1020,7 +1021,7 @@
 STR_CONFIG_PATCHES_ON                                           :Sí
 STR_CONFIG_PATCHES_VEHICLESPEED                                 :{LTBLUE}Mostrar velocidad del vehículo en la barra de estado: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_BUILDONSLOPES                                :{LTBLUE}Permitir la construcción en cuestas y orillas: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTOSLOPE                                    :{LTBLUE}Permitir pendientes bajo construcciones, carreteras, etc. (autopendiente): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSLOPE                                    :{LTBLUE}Permitir pendientes bajo carreteras, etc. (autopendiente): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_CATCHMENT                                    :{LTBLUE}Permitir tamaño del área de captación más realista: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_EXTRADYNAMITE                                :{LTBLUE}Permitir demoler más propiedades de poblaciones: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_MAMMOTHTRAINS                                :{LTBLUE}Permitir la construcción de trenes muy largos: {ORANGE}{STRING}
@@ -1172,6 +1173,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :mejores carreteras
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :rejilla 2x2
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :rejilla 3x3
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :aleatorio
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Posición de la barra de herramientas principal: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Izquierda
@@ -1188,7 +1190,7 @@
 STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}1 de {STRING}
 STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}Ninguna
 STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER                         :{LTBLUE}Multiplicador inicial tamaño de ciudad: {ORANGE}{STRING}
-STR_CONFIG_MODIFIED_ROAD_REBUILD                                :{LTBLUE}Quitar elementos absurdos de la carretera durante su construcción
+STR_CONFIG_MODIFIED_ROAD_REBUILD                                :{LTBLUE}Quitar absurdos de la carretera durante su construcción
 
 STR_CONFIG_PATCHES_GUI                                          :{BLACK}Interfaz
 STR_CONFIG_PATCHES_CONSTRUCTION                                 :{BLACK}Construcción
@@ -1351,6 +1353,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}Nombre del Jugador:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}Este es el nombre con el que otros jugadores le identificarán
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}Introduce tu nombre
 STR_NETWORK_CONNECTION                                          :{BLACK}Conexión:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}Seleccione entre un juego en Internet o en una Red de Área Local
 
@@ -1394,6 +1397,7 @@
 
 STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}Nombre del juego:
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}El nombre del juego será mostrado a otros jugadores en el menu de selección de juego multijugador
+STR_NETWORK_NEW_GAME_NAME_OSKTITLE                              :{BLACK}Introduce un nombre para el juego en red
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}Establecer contraseña
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}Proteje tu juego con una contraseña si no quieres que otras personas se unan a él
 STR_NETWORK_SELECT_MAP                                          :{BLACK}Selecciona mapa:
@@ -1450,6 +1454,13 @@
 STR_NETWORK_LANG_SWEDISH                                        :Sueco
 STR_NETWORK_LANG_TURKISH                                        :Turco
 STR_NETWORK_LANG_UKRAINIAN                                      :Ucraniano
+STR_NETWORK_LANG_AFRIKAANS                                      :Africano
+STR_NETWORK_LANG_CROATIAN                                       :Croata
+STR_NETWORK_LANG_CATALAN                                        :Catalán
+STR_NETWORK_LANG_ESTONIAN                                       :Estonio
+STR_NETWORK_LANG_GALICIAN                                       :Gallego
+STR_NETWORK_LANG_GREEK                                          :Griego
+STR_NETWORK_LANG_LATVIAN                                        :Letón
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}Sala de estar del juego multijugador
@@ -1548,6 +1559,7 @@
 STR_NETWORK_CHAT_TO_CLIENT                                      :[Privado] a {STRING}: {GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[Todos] :
 STR_NETWORK_CHAT_ALL                                            :[Todos] {STRING}: {GRAY}{STRING}
+STR_NETWORK_CHAT_OSKTITLE                                       :{BLACK}Introduce el texto para el chat en red
 STR_NETWORK_NAME_CHANGE                                         :ha cambiado su nombre a
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} El servidor ha cerrado la sesión
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE} Se está reiniciando el servidor...{}Espere por favor...
@@ -1714,6 +1726,7 @@
 STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
 STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}El edificio debe demolerse primero
 STR_2005                                                        :{WHITE}{TOWN}
+STR_CITY                                                        :{WHITE}{TOWN} (City)
 STR_2006_POPULATION                                             :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK}  Casas: {ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :Renombrar población
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}No se puede renombrar población...
@@ -1950,6 +1963,7 @@
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}Seleccione escenario (verde), juegos preestablecidos-set (azul), o juego al azar
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :Generar juego nuevo al azar
 STR_LOAD_HEIGHTMAP                                              :{WHITE}Cargar Mapas de altura
+STR_SAVE_OSKTITLE                                               :{BLACK}Introduce un nombre para el juego guardado
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}{STRING} en medio
@@ -2639,6 +2653,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Los ciudadanos celebran . . .{}¡Primer tren llega a {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Detalles)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Tren en camino
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Ir a
+STR_ORDER_GO_NON_STOP_TO                                        :Ir sin paradas a
+STR_ORDER_GO_VIA                                                :Ir vía
+STR_ORDER_GO_NON_STOP_VIA                                       :Ir sin paradas vía
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Cargar si está disponible
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Carga completa de todas las cargas
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Carga completa de cualquier carga
+STR_ORDER_DROP_NO_LOADING                                       :Sin carga
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Descargar si es aceptado
+STR_ORDER_DROP_UNLOAD                                           :Descargar todo
+STR_ORDER_DROP_TRANSFER                                         :Transferir
+STR_ORDER_DROP_NO_UNLOADING                                     :No descargar
+STR_ORDER_FULL_LOAD                                             :(Carga completa)
+STR_ORDER_FULL_LOAD_ANY                                         :(Carga completa cualquier carga)
+STR_ORDER_NO_LOAD                                               :(Sin carga)
+STR_ORDER_UNLOAD                                                :(Descargar y tomar carga)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Descargar y esperar a carga completa)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Descargar y esperar a cualquier carga completa)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Descargar y dejar vacío)
+STR_ORDER_TRANSFER                                              :(Transferir y tomar carga)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Transferir y esperar a carga completa)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Transferior y esperar a cualquier carga completa)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Transferir y dejar vacío)
+STR_ORDER_NO_UNLOAD                                             :(No descargar y tomar carga)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(No descargar y esperar a carga completa)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(No descargar y esperar a cualquier carga completa)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Cambiar el comportamiento de parada en la orden seleccionada
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Cambiar el comportamiento de carga en la orden seleccionada
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Cambiar el comportamiento de descarga en la orden seleccionada
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Introducir una orden avanzada
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Ir al depósito más cercano
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Ir al hangar más cercano
+STR_ORDER_NEAREST_DEPOT                                         :el más cercano
+STR_ORDER_NEAREST_HANGAR                                        :el hangar más cercano
+STR_ORDER_SERVICE_AT                                            :Servicio en
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Servicio sin parada en
+STR_ORDER_TRAIN_DEPOT                                           :Depósito de tren
+STR_ORDER_ROAD_DEPOT                                            :Depósito de vehículo de carretera
+STR_ORDER_SHIP_DEPOT                                            :Depósito de barcos
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Hangar
+
+STR_ORDER_CONDITIONAL                                           :Salto de orden condicional
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Datos del vehículo para saltarse
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Como comparar los datos del vehículo al valor dado
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}El valor a comparar de los datos del vehículo contra
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Introduce el valor a comparar
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Porcentaje de carga
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Fiabilidad
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Velocidad Máxima
+STR_ORDER_CONDITIONAL_AGE                                       :Edad del vehículo (años)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Requiere servicio
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Siempre
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :es igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :no es igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :es menos de
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :es menos o igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :es más de
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :es más o igual a
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :es verdadero
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :es falso
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Saltar a orden {COMMA}
+STR_CONDITIONAL_NUM                                             :Saltar a orden {COMMA} cuando {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Saltar a orden{COMMA} cuando {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Viaje (sin horarios)
 STR_TIMETABLE_TRAVEL_FOR                                        :Viaje para {STRING}
@@ -2686,6 +2770,8 @@
 STR_REFIT_ORDER                                                 :(Recargar en {STRING})
 STR_TIMETABLE_VIEW                                              :{BLACK}Horarios
 STR_TIMETABLE_VIEW_TOOLTIP                                      :{BLACK}Cambiar a la vista de horarios
+STR_ORDER_VIEW                                                  :{BLACK}Ordenes
+STR_ORDER_VIEW_TOOLTIP                                          :{BLACK}Cambiar a la vista de ordenes
 STR_8829_ORDERS                                                 :{WHITE}{VEHICLE} (Órdenes)
 STR_882A_END_OF_ORDERS                                          :{SETX 10}- - Fin de pedidos - -
 STR_SERVICE                                                     :{BLACK}Servicio
@@ -2694,6 +2780,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Valor: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Cargando / Descargando
+STR_LEAVING                                                     :{LTBLUE}Abandonando
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}El tren debe pararse dentro del depósito
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}No se puede enviar el tren al depósito...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}No hay más lugar para pedidos
@@ -3230,6 +3317,7 @@
 STR_WORLD_GENERATION_CAPTION                                    :{WHITE}Generación de mundo
 STR_RANDOM_SEED                                                 :{BLACK}Semilla Aleatoria:
 STR_RANDOM_SEED_HELP                                            :{BLACK}Pulsa para introducir la semilla aleatoria
+STR_RANDOM_SEED_OSKTITLE                                        :{BLACK}Introducir una semilla aleatoria
 STR_LAND_GENERATOR                                              :{BLACK}Generador terreno:
 STR_TREE_PLACER                                                 :{BLACK}Algoritmo árboles:
 STR_HEIGHTMAP_ROTATION                                          :{BLACK}Rotación mapa de alturas:
@@ -3322,6 +3410,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Activar transparencias para estructuras como faros, antenas, etc.
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Activar transparencia para la catenaria. CTRL+click para bloquear.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Ajustar transparencia para los indicadores de carga
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Poner objetos invisibles en vez de transparentes
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3377,6 +3466,7 @@
 #### Improved sign GUI
 STR_NEXT_SIGN_TOOLTIP                                           :{BLACK}Ir a la siguiente señal
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Ir a la señal anterior
+STR_SIGN_OSKTITLE                                               :{BLACK}Introduce un nombre para la señal
 
 ########
 
@@ -3449,3 +3539,8 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}Decrementar arrastre de intensidad de señales
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}Incrementar arrastre de intensidad de señales
 ########
+
+############ on screen keyboard
+STR_OSK_KEYBOARD_LAYOUT                                         :`1234567890-=\qwertyuiop[]asdfghjkl;'  zxcvbnm,./ .
+STR_OSK_KEYBOARD_LAYOUT_CAPS                                    :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:"  ZXCVBNM<>? .
+########
--- a/src/lang/swedish.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/swedish.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -18,6 +18,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} på väg från {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Accepterar: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Accepterar: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Leverar: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :Passagerare
 STR_0010_COAL                                                   :Kol
@@ -1171,6 +1172,7 @@
 STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :bättre vägar
 STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 rutnät
 STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 rutnät
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :slumpmässig
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Position av verktygsraden: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Vänster
@@ -2650,6 +2652,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Invånarna firar . . .{}Första tåget ankommer till {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Details)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Tåg i vägen
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Åk till
+STR_ORDER_GO_NON_STOP_TO                                        :Åk non-stop till
+STR_ORDER_GO_VIA                                                :Åk via
+STR_ORDER_GO_NON_STOP_VIA                                       :Åk non-stop via
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Lasta om möjligt
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Full last alla frakttyper
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Full last någon frakttyp
+STR_ORDER_DROP_NO_LOADING                                       :Lasta ej
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Lasta av om accepterat
+STR_ORDER_DROP_UNLOAD                                           :Lasta av allt
+STR_ORDER_DROP_TRANSFER                                         :Överför
+STR_ORDER_DROP_NO_UNLOADING                                     :Ej avlastning
+STR_ORDER_FULL_LOAD                                             :(Full last)
+STR_ORDER_FULL_LOAD_ANY                                         :(Full last någon frakttyp)
+STR_ORDER_NO_LOAD                                               :(Ingen lastning)
+STR_ORDER_UNLOAD                                                :(Lasta av och lasta frakt)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Lasta av och vänta på full last)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Lasta av och vänta på någon full last)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Ladda av och lämna tom)
+STR_ORDER_TRANSFER                                              :(Överför och lasta frakt)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Överför och vänta på full last)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Överför och vänta på någon full frakttyp)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Överför och lämna tom)
+STR_ORDER_NO_UNLOAD                                             :(Lasta ej av men lasta på)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Ladda ej av men vänta på full last)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Ladda ej av men vänta på full last av någon frakttyp)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Ändra stoppbeteende för markerad order
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Ändra lastningsbeteende för markerad order
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Ändra avlastningsbeteende på markerad order
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Lägg till avancerad order
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Åk till närmsta depå
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Åk till närmsta hangar
+STR_ORDER_NEAREST_DEPOT                                         :närmsta
+STR_ORDER_NEAREST_HANGAR                                        :närmaste hangar
+STR_ORDER_SERVICE_AT                                            :Service vid
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Service non-stop vid
+STR_ORDER_TRAIN_DEPOT                                           :Tågdepå
+STR_ORDER_ROAD_DEPOT                                            :Vägfordonsdepå
+STR_ORDER_SHIP_DEPOT                                            :Skeppsdepå
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Hangar
+
+STR_ORDER_CONDITIONAL                                           :Conditional order jump
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Fordonsdata att basera hoppning på
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}How-to: Jämför fordonsdata med givet värde
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Värde att jämföra fordonsdata mot
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Skriv in värde att jämföra mot
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Laddningsprocent
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Tillförlitlighet
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Toppfart
+STR_ORDER_CONDITIONAL_AGE                                       :Fordonsålder (år)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Behöver service
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Alltid
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :samma som
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :ej samma som
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :mindre än
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :mindre eller lika mycket som
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :mer än
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :mer eller lika mycket som
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :sant
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :falskt
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Skippa till order {COMMA}
+STR_CONDITIONAL_NUM                                             :Skippa till order {COMMA} när {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Skippa till order {COMMA} när {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Avres (Inte tillagd i tidtabell)
 STR_TIMETABLE_TRAVEL_FOR                                        :Res till {STRING}
@@ -3336,6 +3408,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Växla genomskinlighet för byggnader såsom fyrar och antenner, kanske i framtiden även ögongodis
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Växla genomskinlighet för kedjebro. CTRL+klick för att låsa.
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Växla genomskinlighet för lastningsindikatörer
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Gör object osynliga istället för genomskinliga
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
--- a/src/lang/traditional_chinese.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/traditional_chinese.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -344,7 +344,7 @@
 STR_0156_DELIVERED_CARGO_GRAPH                                  :運載報表
 STR_0157_PERFORMANCE_HISTORY_GRAPH                              :業績歷史圖表
 STR_0158_COMPANY_VALUE_GRAPH                                    :公司市值圖表
-STR_0159_CARGO_PAYMENT_RATES                                    :貨物收費圖表
+STR_0159_CARGO_PAYMENT_RATES                                    :公定運費報表
 STR_015A_COMPANY_LEAGUE_TABLE                                   :公司排行榜
 STR_PERFORMANCE_DETAIL_MENU                                     :詳細營運評比
 ############ range for menu ends
@@ -376,6 +376,7 @@
 STR_SORT_BY_MAX_SPEED                                           :最高速度
 STR_SORT_BY_MODEL                                               :型號
 STR_SORT_BY_VALUE                                               :價值
+STR_SORT_BY_LENGTH                                              :長度
 STR_SORT_BY_FACILITY                                            :站場種類
 STR_SORT_BY_WAITING                                             :等候貨物總值
 STR_SORT_BY_RATING_MAX                                          :酬載評價
@@ -435,8 +436,8 @@
 STR_017C_DISPLAY_LIST_OF_COMPANY                                :{BLACK}顯示公司擁有的公車/貨車
 STR_017D_DISPLAY_LIST_OF_COMPANY                                :{BLACK}顯示公司擁有的船隻
 STR_017E_DISPLAY_LIST_OF_COMPANY                                :{BLACK}顯示公司擁有的飛機
-STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}拉近視域
-STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}拉遠視域
+STR_017F_ZOOM_THE_VIEW_IN                                       :{BLACK}拉近場景
+STR_0180_ZOOM_THE_VIEW_OUT                                      :{BLACK}拉遠場景
 STR_0181_BUILD_RAILROAD_TRACK                                   :{BLACK}興建路軌設施
 STR_0182_BUILD_ROADS                                            :{BLACK}興建道路設施
 STR_0183_BUILD_SHIP_DOCKS                                       :{BLACK}興建碼頭設施
@@ -471,7 +472,7 @@
 STR_AGE_RED                                                     :{RED}{COMMA} 年 ({COMMA})
 ############ range for service numbers ends
 
-STR_019C_ROAD_VEHICLE                                           :車輛
+STR_019C_ROAD_VEHICLE                                           :公車/貨車
 STR_019D_AIRCRAFT                                               :飛機
 STR_019E_SHIP                                                   :船隻
 STR_019F_TRAIN                                                  :列車
@@ -586,6 +587,9 @@
 STR_0209_COMPANY_INFORMATION                                    :{YELLOW}公司資訊
 STR_NEWS_OPEN_CLOSE                                             :{YELLOW}工業開張/倒閉消息
 STR_020A_ECONOMY_CHANGES                                        :{YELLOW}經濟氣候變化
+STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER                           :{YELLOW}工業提供給玩家的產量變更
+STR_INDUSTRY_CHANGES_SERVED_BY_OTHER                            :{YELLOW}工業提供給競爭者的產量變更
+STR_OTHER_INDUSTRY_PRODUCTION_CHANGES                           :{YELLOW}其他工業產量變更
 STR_020B_ADVICE_INFORMATION_ON_PLAYER                           :{YELLOW}給玩家的載具的建議或資訊
 STR_020C_NEW_VEHICLES                                           :{YELLOW}新載具
 STR_020D_CHANGES_OF_CARGO_ACCEPTANCE                            :{YELLOW}接收貨物的改動
@@ -721,6 +725,7 @@
 STR_028E_PLACE_TRANSMITTER                                      :{BLACK}建立發射站
 STR_028F_DEFINE_DESERT_AREA                                     :{BLACK}定義沙漠區。{}請按住 CTRL 移除
 STR_CREATE_LAKE                                                 :{BLACK}劃出湖泊範圍。{}開鑿運河。在海平面上按 CTRL 鍵則會淹沒週遭土地
+STR_CREATE_RIVER                                                :{BLACK}劃出河流範圍
 STR_0290_DELETE                                                 :{BLACK}刪除
 STR_0291_DELETE_THIS_TOWN_COMPLETELY                            :{BLACK}完全移除這個市鎮
 STR_0292_SAVE_SCENARIO                                          :儲存場景
@@ -930,6 +935,7 @@
 
 STR_OPTIONS_FULLSCREEN                                          :{BLACK}全螢幕
 STR_OPTIONS_FULLSCREEN_TIP                                      :{BLACK}勾選即可以全螢幕玩 OpenTTD
+STR_FULLSCREEN_FAILED                                           :{WHITE}無法切換全螢幕模式
 
 STR_OPTIONS_RES                                                 :{BLACK}螢幕解析度
 STR_OPTIONS_RES_CBO                                             :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1043,6 +1049,7 @@
 STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY                             :{LTBLUE}允許資金流通給其他公司:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_NONUNIFORM_STATIONS                          :{LTBLUE}不規則形狀車站:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_FREIGHT_TRAINS                               :{LTBLUE}貨物重量系數,以模擬較重列車:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_PLANE_SPEED                                  :{LTBLUE}飛機速度比例:{ORANGE}{STRING} 分之一
 STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD                            :{LTBLUE}可在鎮內興建路邊車站:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_ADJACENT_STATIONS                            :{LTBLUE}容許興建相鄰車站: {ORANGE}{STRING}
 
@@ -1164,6 +1171,7 @@
 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網格
+STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :隨機
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}主工具列位置:{ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :左
@@ -1196,6 +1204,19 @@
 STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}改變設定值
 STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}以下預設檢修期與揀選項目不相容! 合法設定為 5-90% 或 30-800 日
 
+STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS                        :{LTBLUE}列車的路徑搜尋方式:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP                    :NTP {RED}(不建議)
+STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF                    :NPF
+STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF                   :YAPF {BLUE}(建議)
+STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH                       :{LTBLUE}車輛的路徑搜尋方式:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF                   :預設 {RED}(不建議)
+STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF                   :NPF
+STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF                  :YAPF {BLUE}(建議)
+STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS                         :{LTBLUE}船隻的路徑搜尋方式:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF                     :預設 {BLUE}(建議)
+STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF                     :NPF
+STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF                    :YAPF {RED}(不建議)
+
 STR_TEMPERATE_LANDSCAPE                                         :溫帶
 STR_SUB_ARCTIC_LANDSCAPE                                        :亞北極帶
 STR_SUB_TROPICAL_LANDSCAPE                                      :亞熱帶
@@ -1330,6 +1351,7 @@
 
 STR_NETWORK_PLAYER_NAME                                         :{BLACK}玩家名稱:
 STR_NETWORK_ENTER_NAME_TIP                                      :{BLACK}這是其他玩家辨認您的名稱
+STR_NETWORK_PLAYER_NAME_OSKTITLE                                :{BLACK}輸入您的名稱
 STR_NETWORK_CONNECTION                                          :{BLACK}連線:
 STR_NETWORK_CONNECTION_TIP                                      :{BLACK}選擇 Internet 或區域網路 (LAN) 遊戲
 
@@ -1340,6 +1362,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}遊戲名稱
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}語言,伺服器版本等等
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}點選清單内的遊戲即可選擇
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}上次最後加入的伺服器:
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}點選您上次最後加入的伺服器
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}尋找伺服器
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}尋找網路上的伺服器
@@ -1373,6 +1397,7 @@
 
 STR_NETWORK_NEW_GAME_NAME                                       :{BLACK}遊戲名稱:
 STR_NETWORK_NEW_GAME_NAME_TIP                                   :{BLACK}遊戲名稱會顯示在其他玩家選擇遊戲的選單内
+STR_NETWORK_NEW_GAME_NAME_OSKTITLE                              :{BLACK}為連線遊戲輸入一個名稱
 STR_NETWORK_SET_PASSWORD                                        :{BLACK}設定密碼
 STR_NETWORK_PASSWORD_TIP                                        :{BLACK}如果您不想讓大眾連線的話,可以用密碼保護遊戲
 STR_NETWORK_SELECT_MAP                                          :{BLACK}選擇地圖:
@@ -1429,6 +1454,13 @@
 STR_NETWORK_LANG_SWEDISH                                        :瑞典語
 STR_NETWORK_LANG_TURKISH                                        :土耳其語
 STR_NETWORK_LANG_UKRAINIAN                                      :烏克蘭語
+STR_NETWORK_LANG_AFRIKAANS                                      :Afrikaans
+STR_NETWORK_LANG_CROATIAN                                       :Croatian
+STR_NETWORK_LANG_CATALAN                                        :Catalan
+STR_NETWORK_LANG_ESTONIAN                                       :Estonian
+STR_NETWORK_LANG_GALICIAN                                       :Galician
+STR_NETWORK_LANG_GREEK                                          :Greek
+STR_NETWORK_LANG_LATVIAN                                        :Latvian
 ############ End of leave-in-this-order
 
 STR_NETWORK_GAME_LOBBY                                          :{WHITE}連線遊戲大廳
@@ -1527,6 +1559,7 @@
 STR_NETWORK_CHAT_TO_CLIENT                                      :[私人] 給 {STRING}:{GRAY}{STRING}
 STR_NETWORK_CHAT_ALL_CAPTION                                    :[全員] :
 STR_NETWORK_CHAT_ALL                                            :[全員] {STRING}:{GRAY}{STRING}
+STR_NETWORK_CHAT_OSKTITLE                                       :{BLACK}輸入文字到連線聊天
 STR_NETWORK_NAME_CHANGE                                         :將自己的名稱改為
 STR_NETWORK_SERVER_SHUTDOWN                                     :{WHITE} 伺服器關閉連線
 STR_NETWORK_SERVER_REBOOT                                       :{WHITE} 伺服器正在重新啟動...{}請稍候...
@@ -1590,6 +1623,7 @@
 STR_1005_NO_SUITABLE_RAILROAD_TRACK                             :{WHITE}沒有適合的鐵路軌道
 STR_1007_ALREADY_BUILT                                          :{WHITE}...已經建了
 STR_1008_MUST_REMOVE_RAILROAD_TRACK                             :{WHITE}必須先移除鐵道
+STR_ERR_CROSSING_ON_ONEWAY_ROAD                                 :{WHITE}道路是單行道或被阻擋
 STR_100A_RAILROAD_CONSTRUCTION                                  :{WHITE}鋪設鐵道
 STR_TITLE_ELRAIL_CONSTRUCTION                                   :{WHITE}建造電氣化鐵道
 STR_100B_MONORAIL_CONSTRUCTION                                  :{WHITE}鋪設單軌
@@ -1692,6 +1726,7 @@
 STR_2002_WHITE                                                  :{TINYFONT}{WHITE}{SIGN}
 STR_2004_BUILDING_MUST_BE_DEMOLISHED                            :{WHITE}必須先摧毀建物
 STR_2005                                                        :{WHITE}{TOWN}
+STR_CITY                                                        :{WHITE}{TOWN} (城市)
 STR_2006_POPULATION                                             :{BLACK}人口:{ORANGE}{COMMA}{BLACK}  房屋:{ORANGE}{COMMA}
 STR_2007_RENAME_TOWN                                            :修改城鎮名稱
 STR_2008_CAN_T_RENAME_TOWN                                      :{WHITE}無法修改城鎮名稱...
@@ -1928,6 +1963,7 @@
 STR_400F_SELECT_SCENARIO_GREEN_PRE                              :{BLACK}選擇劇本 (綠色),預設遊戲 (藍),或隨機產生場景
 STR_4010_GENERATE_RANDOM_NEW_GAME                               :隨機產生新場景
 STR_LOAD_HEIGHTMAP                                              :{WHITE}載入高度圖
+STR_SAVE_OSKTITLE                                               :{BLACK}為存檔輸入一個名稱
 
 ##id 0x4800
 STR_4800_IN_THE_WAY                                             :{WHITE}被 {STRING} 擋住
@@ -2324,6 +2360,8 @@
 STR_LIVERY_PASSENGER_WAGON_STEAM                                :乘客車廂 (蒸氣)
 STR_LIVERY_PASSENGER_WAGON_DIESEL                               :乘客車廂 (柴油)
 STR_LIVERY_PASSENGER_WAGON_ELECTRIC                             :乘客車廂 (電力)
+STR_LIVERY_PASSENGER_WAGON_MONORAIL                             :客車廂 (單軌)
+STR_LIVERY_PASSENGER_WAGON_MAGLEV                               :客車廂 (磁浮)
 STR_LIVERY_FREIGHT_WAGON                                        :貨車廂
 STR_LIVERY_BUS                                                  :公車
 STR_LIVERY_TRUCK                                                :貨卡車
@@ -2615,6 +2653,53 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}市民慶賀 . . .{}首輛列車抵達 {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (詳細資料)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}前方有列車
+STR_8804                                                        :{SETX 10}{COMMA}:{STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}:{STRING} {STRING}
+STR_ORDER_GO_TO                                                 :前往
+STR_ORDER_GO_NON_STOP_TO                                        :直達
+STR_ORDER_GO_VIA                                                :經由
+STR_ORDER_GO_NON_STOP_VIA                                       :直達且經由
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :有則裝載
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :滿載各客貨
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :滿載任何客貨
+STR_ORDER_DROP_NO_LOADING                                       :不裝載
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :接受則卸客貨
+STR_ORDER_DROP_UNLOAD                                           :卸載
+STR_ORDER_DROP_TRANSFER                                         :轉運
+STR_ORDER_DROP_NO_UNLOADING                                     :不卸載
+STR_ORDER_FULL_LOAD                                             :(滿載)
+STR_ORDER_FULL_LOAD_ANY                                         :(滿載任何客貨)
+STR_ORDER_NO_LOAD                                               :(不裝載)
+STR_ORDER_UNLOAD                                                :(卸載後裝載)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(卸載後等待滿載)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(卸載後等待任何種類滿載)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(卸載後空車離開)
+STR_ORDER_TRANSFER                                              :(轉運且載客貨)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(轉運且等待滿載)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(轉運且等待任何種類滿載)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(轉運後空車離開)
+STR_ORDER_NO_UNLOAD                                             :(不卸載但裝載)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(不卸載但等待滿載)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(不卸載但等待任何滿載)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}變更選取指令的停靠行為
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}變更選取指令的裝載行為
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}變更選取指令的卸載行為
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}插入進階的指令
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :前往最近的機廠
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :前往最近的機棚
+STR_ORDER_NEAREST_DEPOT                                         :最近的
+STR_ORDER_NEAREST_HANGAR                                        :最近的機棚
+STR_ORDER_TRAIN_DEPOT                                           :機廠
+STR_ORDER_ROAD_DEPOT                                            :車庫
+STR_ORDER_SHIP_DEPOT                                            :船塢
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} 機棚
+
+STR_ORDER_CONDITIONAL                                           :條件指令
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}跳躍指令依據
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :漫遊 (無時刻表)
 STR_TIMETABLE_TRAVEL_FOR                                        :通行於 {STRING}
@@ -3190,6 +3275,9 @@
 STR_PURCHASE_INFO_ALL_BUT                                       :{GOLD}除了
 STR_PURCHASE_INFO_MAX_TE                                        :{BLACK}最大牽引力:{GOLD}{FORCE}
 
+########### For showing numbers in widgets
+
+
 ########### String for New Landscape Generator
 
 STR_GENERATE                                                    :{WHITE}產生
@@ -3416,3 +3504,6 @@
 STR_DRAG_SIGNALS_DENSITY_DECREASE_TIP                           :{BLACK}減少 (拉近)
 STR_DRAG_SIGNALS_DENSITY_INCREASE_TIP                           :{BLACK}增加 (拉遠)
 ########
+
+############ on screen keyboard
+########
--- a/src/lang/ukrainian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/ukrainian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -20,6 +20,7 @@
 STR_EN_ROUTE_FROM                                               :{YELLOW}({SHORTCARGO} з {STATION})
 STR_000C_ACCEPTS                                                :{BLACK}Приймає: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Приймає: {GOLD}
+STR_SUPPLIES                                                    :{BLACK}Постачає: {GOLD}
 STR_000E                                                        :
 STR_000F_PASSENGERS                                             :пасажири
 STR_000F_PASSENGERS.r                                           :пасажирів
@@ -1070,7 +1071,7 @@
 STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Виберіть формат для створення копій екрану
 
-STR_AUTOSAVE_1_MONTH                                            :Щомісяця
+STR_AUTOSAVE_1_MONTH                                            :щомісяця
 STR_AUTOSAVE_FAILED                                             :{WHITE}Помилка автозбереження
 
 STR_MONTH_JAN                                                   :Січень
@@ -1127,7 +1128,7 @@
 STR_AIRCRAFT_HAS_TOO_FEW_ORDERS                                 :{WHITE}Літак {COMMA} не має завдань
 STR_AIRCRAFT_HAS_VOID_ORDER                                     :{WHITE}Літак {COMMA} має пустий наказ
 STR_AIRCRAFT_HAS_DUPLICATE_ENTRY                                :{WHITE}Літак {COMMA} має подвійні накази
-STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Літак {COMMA} має в наказі невірну станцію
+STR_AIRCRAFT_HAS_INVALID_ENTRY                                  :{WHITE}Літак {COMMA} має в маршруті невірну станцію
 # end of order system
 
 STR_TRAIN_AUTORENEW_FAILED                                      :{WHITE}Помилка автооновлення поїзда {COMMA} (бракує коштів)
@@ -1296,6 +1297,7 @@
 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_TOWN_LAYOUT_RANDOM                           :випадково
 
 STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Положення головного меню: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Ліворуч
@@ -1486,6 +1488,8 @@
 STR_NETWORK_GAME_NAME_TIP                                       :{BLACK}Назва гри
 STR_NETWORK_INFO_ICONS_TIP                                      :{BLACK}Мова, версія сервера, та інше.
 STR_NETWORK_CLICK_GAME_TO_SELECT                                :{BLACK}Натисніть на гру із списку, щоб вибрати її
+STR_NETWORK_LAST_JOINED_SERVER                                  :{BLACK}Сервер, до якого під'єднувались востаннє
+STR_NETWORK_CLICK_TO_SELECT_LAST                                :{BLACK}Натисніть, щоб вибрати сервер, на якому ви грали востаннє
 
 STR_NETWORK_FIND_SERVER                                         :{BLACK}Знайти сервер
 STR_NETWORK_FIND_SERVER_TIP                                     :{BLACK}Пошук мережі для сервера
@@ -1856,8 +1860,8 @@
 STR_200A_TOWN_NAMES_CLICK_ON_NAME                               :{BLACK}Назви міст - вкажіть на місто і воно з'явиться в центрі екрану
 STR_200B_CENTER_THE_MAIN_VIEW_ON                                :{BLACK}Показати в центрі екрану
 STR_200C_CHANGE_TOWN_NAME                                       :{BLACK}Змінити назву міста
-STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} Найбільше: {ORANGE}{COMMA}
-STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} Найбільше: {ORANGE}{COMMA}
+STR_200D_PASSENGERS_LAST_MONTH_MAX                              :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
+STR_200E_MAIL_LAST_MONTH_MAX                                    :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
 STR_200F_TALL_OFFICE_BLOCK                                      :Великий офіс
 STR_2010_OFFICE_BLOCK                                           :Офісний район
 STR_2011_SMALL_BLOCK_OF_FLATS                                   :Будинки
@@ -1877,15 +1881,15 @@
 STR_201F_OLD_HOUSES                                             :Старі будинки
 STR_2020_LOCAL_AUTHORITY                                        :{BLACK}Місцева влада
 STR_2021_SHOW_INFORMATION_ON_LOCAL                              :{BLACK}Інформація про місцеву владу
-STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} місцева влада
+STR_2022_LOCAL_AUTHORITY                                        :{WHITE}{TOWN} - місцева влада
 STR_2023_TRANSPORT_COMPANY_RATINGS                              :{BLACK}Рейтинги компаній:
 STR_2024                                                        :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
 STR_2025_SUBSIDIES                                              :{WHITE}Субсидії
-STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Пропонуються субсидії:-
+STR_2026_SUBSIDIES_ON_OFFER_FOR                                 :{BLACK}Пропонуються субсидії:
 STR_2027_FROM_TO                                                :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}
 STR_2028_BY                                                     :{YELLOW} ({DATE_SHORT})
 STR_202A_NONE                                                   :{ORANGE}немає
-STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Призначені субсидії:-
+STR_202B_SERVICES_ALREADY_SUBSIDISED                            :{BLACK}Призначені субсидії:
 STR_202C_FROM_TO                                                :{ORANGE}Перевезення {STRING.r} з {STATION} до {STATION}{YELLOW} ({COMPANY}
 STR_202D_UNTIL                                                  :{YELLOW}, по {DATE_SHORT})
 STR_202E_OFFER_OF_SUBSIDY_EXPIRED                               :{BLACK}{BIGFONT}Субсидію відмінено:{}{}Перевезення {STRING.r} з {STRING} до {STRING}.
@@ -2313,8 +2317,8 @@
 STR_6806_COMPETITOR_START_TIME                                  :{LTBLUE}Конкуренти починають через: {ORANGE}{STRING}
 STR_6807_NO_OF_TOWNS                                            :{LTBLUE}Кількість міст: {ORANGE}{STRING}
 STR_6808_NO_OF_INDUSTRIES                                       :{LTBLUE}Кількість підприємств: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Початковий кредит: {ORANGE}{CURRENCY}
-STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Відсотки за кредит: {ORANGE}{COMMA}%
+STR_6809_MAXIMUM_INITIAL_LOAN_000                               :{LTBLUE}Початкова позика: {ORANGE}{CURRENCY}
+STR_680A_INITIAL_INTEREST_RATE                                  :{LTBLUE}Відсоткова ставка: {ORANGE}{COMMA}%
 STR_680B_VEHICLE_RUNNING_COSTS                                  :{LTBLUE}Транспортні витрати: {ORANGE}{STRING}
 STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR                       :{LTBLUE}Швидкість будівництва конкурентів: {ORANGE}{STRING}
 STR_680D_INTELLIGENCE_OF_COMPETITORS                            :{LTBLUE}Досвідченість конкурентів: {ORANGE}{STRING}
@@ -2375,7 +2379,7 @@
 STR_7000                                                        :
 STR_7001                                                        :{WHITE}{COMPANY} {BLACK}{COMPANYNUM}
 STR_7002_PLAYER                                                 :(Гравець {COMMA})
-STR_7004_NEW_FACE                                               :{BLACK}Нове лице
+STR_7004_NEW_FACE                                               :{BLACK}Нове обличчя
 STR_7005_COLOR_SCHEME                                           :{BLACK}Колір
 STR_7006_COLOR_SCHEME                                           :{GOLD}Колір:
 STR_7007_NEW_COLOR_SCHEME                                       :{WHITE}Новий колір
@@ -2399,35 +2403,35 @@
 STR_7019_ROAD_VEHICLES_INCOME                                   :{GOLD}Дохід, автомобілі
 STR_701A_AIRCRAFT_INCOME                                        :{GOLD}Дохід, літаки
 STR_701B_SHIP_INCOME                                            :{GOLD}Дохід, кораблі
-STR_701C_LOAN_INTEREST                                          :{GOLD}Відсотки за кредит
+STR_701C_LOAN_INTEREST                                          :{GOLD}Відсотки за позикою
 STR_701D_OTHER                                                  :{GOLD}Інше
 STR_701E                                                        :{BLACK}-{CURRENCY}
 STR_701F                                                        :{BLACK}+{CURRENCY}
-STR_7020_TOTAL                                                  :{WHITE}Всього:
+STR_7020_TOTAL                                                  :{WHITE}Підсумок:
 STR_7021                                                        :{COMPANY} {COMPANYNUM}
 STR_7022_INCOME_GRAPH                                           :{WHITE}Графік доходів
 STR_CURRCOMPACT                                                 :{CURRCOMPACT}
 STR_7024                                                        :{COMMA}
-STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Графік прибутку від виробництва
+STR_7025_OPERATING_PROFIT_GRAPH                                 :{WHITE}Графік операційного прибутку
 STR_7026_BANK_BALANCE                                           :{WHITE}Рахунок
-STR_7027_LOAN                                                   :{WHITE}Взято в кредит
-STR_MAX_LOAN                                                    :{WHITE}Макс. кредит:  {BLACK}{CURRENCY}
+STR_7027_LOAN                                                   :{WHITE}Позика
+STR_MAX_LOAN                                                    :{WHITE}Макс. позика:  {BLACK}{CURRENCY}
 STR_7028                                                        :{BLACK}{CURRENCY}
 STR_7029_BORROW                                                 :{BLACK}Позичити {SKIP}{SKIP}{CURRENCY}
 STR_702A_REPAY                                                  :{BLACK}Повернути {SKIP}{SKIP}{CURRENCY}
-STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...найбільший дозволений розмір кредиту {CURRENCY}
-STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Неможливо взяти кредит...
-STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...кредит вже оплачено
+STR_702B_MAXIMUM_PERMITTED_LOAN                                 :{WHITE}...найбільший дозволений розмір позики {CURRENCY}
+STR_702C_CAN_T_BORROW_ANY_MORE_MONEY                            :{WHITE}Неможливо взяти ще позику...
+STR_702D_LOAN_ALREADY_REPAYED                                   :{WHITE}...позика вже повернута
 STR_702E_REQUIRED                                               :{WHITE}...потрібно {CURRENCY}
-STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Неможливо виплатити кредит...
-STR_INSUFFICIENT_FUNDS                                          :{WHITE}Неможливо передати гроші, які взяли в кредит з банку...
-STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Вибір нового лиця керівника
+STR_702F_CAN_T_REPAY_LOAN                                       :{WHITE}Неможливо повернути позику...
+STR_INSUFFICIENT_FUNDS                                          :{WHITE}Неможливо передати гроші, позичені у банку...
+STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT                          :{BLACK}Вибрати нове обличчя керівника
 STR_7031_CHANGE_THE_COMPANY_VEHICLE                             :{BLACK}Зміна кольору транспорту компанії
 STR_7032_CHANGE_THE_PRESIDENT_S                                 :{BLACK}Зміна імені керівника
 STR_7033_CHANGE_THE_COMPANY_NAME                                :{BLACK}Зміна назви компанії
 STR_7034_CLICK_ON_SELECTED_NEW_COLOR                            :{BLACK}Натисніть на колір, який вам до вподоби
-STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Взяти кредит
-STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Виплатити частину кредиту
+STR_7035_INCREASE_SIZE_OF_LOAN                                  :{BLACK}Збільшити розмір позики
+STR_7036_REPAY_PART_OF_LOAN                                     :{BLACK}Повернути частину позики
 STR_7037_PRESIDENT                                              :{WHITE}{PLAYERNAME}{}{GOLD}(Керівник)
 STR_7038_INAUGURATED                                            :{GOLD}Засновано у: {WHITE}{NUM} році
 STR_7039_VEHICLES                                               :{GOLD}Транспорт:
@@ -2436,19 +2440,19 @@
 STR_AIRCRAFT                                                    :{WHITE}{COMMA} літак{P "" и ів}
 STR_SHIPS                                                       :{WHITE}{COMMA} кораб{P ель лі ів}
 STR_7042_NONE                                                   :{WHITE}Нема
-STR_7043_FACE_SELECTION                                         :{WHITE}Вибір лиця
+STR_7043_FACE_SELECTION                                         :{WHITE}Вибір обличчя
 STR_7044_MALE                                                   :{BLACK}Чоловік
 STR_7045_FEMALE                                                 :{BLACK}Жінка
-STR_7046_NEW_FACE                                               :{BLACK}Нове лице
-STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Відмінити вибір нового лиця
-STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Підтвердити вибір нового лиця
-STR_7049_SELECT_MALE_FACES                                      :{BLACK}Вибір чоловічого лиця
-STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Вибір жіночого лиця
-STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Генерувати випадкове нове лице
+STR_7046_NEW_FACE                                               :{BLACK}Нове обличчя
+STR_7047_CANCEL_NEW_FACE_SELECTION                              :{BLACK}Відмінити вибір нового обличчя
+STR_7048_ACCEPT_NEW_FACE_SELECTION                              :{BLACK}Підтвердити вибір нового обличчя
+STR_7049_SELECT_MALE_FACES                                      :{BLACK}Вибрати чоловіче обличчя
+STR_704A_SELECT_FEMALE_FACES                                    :{BLACK}Вибрати жіноче обличчя
+STR_704B_GENERATE_RANDOM_NEW_FACE                               :{BLACK}Генерувати нове випадкове обличчя
 STR_704C_KEY                                                    :{BLACK}Ключ
 STR_704D_SHOW_KEY_TO_GRAPHS                                     :{BLACK}Показ ключа до графіків
 STR_704E_KEY_TO_COMPANY_GRAPHS                                  :{WHITE}Ключ до графіків компанії
-STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Натисніть для вкл/викл окремого графіку компанії
+STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY                           :{BLACK}Натисніть тут для вкл./відкл. графіку окремої компанії
 STR_7050_UNITS_OF_CARGO_DELIVERED                               :{WHITE}Доставка одиниці вантажу
 STR_7051_COMPANY_PERFORMANCE_RATINGS                            :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000)
 STR_7052_COMPANY_VALUES                                         :{WHITE}Вартість компанії
@@ -2812,6 +2816,76 @@
 STR_8801_CITIZENS_CELEBRATE_FIRST                               :{BLACK}{BIGFONT}Жителі святкують . . .{}Перший поїзд з'явився на {STATION}!
 STR_8802_DETAILS                                                :{WHITE}{VEHICLE} (Детально)
 STR_8803_TRAIN_IN_THE_WAY                                       :{WHITE}Поїзд на шляху
+STR_8804                                                        :{SETX 10}{COMMA}: {STRING} {STRING}
+STR_8805                                                        :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
+STR_ORDER_GO_TO                                                 :Прямувати до
+STR_ORDER_GO_NON_STOP_TO                                        :Прямувати без зупинок до
+STR_ORDER_GO_VIA                                                :Прямувати через
+STR_ORDER_GO_NON_STOP_VIA                                       :Прямувати без зупинок через
+STR_ORDER_DROP_LOAD_IF_POSSIBLE                                 :Завантажитись при нагоді
+STR_ORDER_DROP_FULL_LOAD_ALL                                    :Повністю завантажити всі вантажі
+STR_ORDER_DROP_FULL_LOAD_ANY                                    :Повністю завантажити будь-який вид вантажу
+STR_ORDER_DROP_NO_LOADING                                       :Не завантажуватись
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED                               :Розвантажитись, якщо приймають
+STR_ORDER_DROP_UNLOAD                                           :Розвантажити все
+STR_ORDER_DROP_TRANSFER                                         :Передати
+STR_ORDER_DROP_NO_UNLOADING                                     :Не розвантажуватись
+STR_ORDER_FULL_LOAD                                             :(Завантажити все)
+STR_ORDER_FULL_LOAD_ANY                                         :(Повністю завантажити будь-який вид вантажу)
+STR_ORDER_NO_LOAD                                               :(Не завантажуватись)
+STR_ORDER_UNLOAD                                                :(Розвантажити)
+STR_ORDER_UNLOAD_FULL_LOAD                                      :(Розвантажитись і чекати повного завантаження)
+STR_ORDER_UNLOAD_FULL_LOAD_ANY                                  :(Розвантажитись і чекати повного завантаження будь-якого виду)
+STR_ORDER_UNLOAD_NO_LOAD                                        :(Розвантажитись і залишитись пустим)
+STR_ORDER_TRANSFER                                              :(Передати і взяти вантаж)
+STR_ORDER_TRANSFER_FULL_LOAD                                    :(Передати і чекати повного завантаження)
+STR_ORDER_TRANSFER_FULL_LOAD_ANY                                :(Передати і чекати повного завантаження будь-якого виду)
+STR_ORDER_TRANSFER_NO_LOAD                                      :(Передати і залишитись пустим)
+STR_ORDER_NO_UNLOAD                                             :(Не розвантажуватись і взяти вантаж)
+STR_ORDER_NO_UNLOAD_FULL_LOAD                                   :(Не розвантажуватись і чекати повного завантаження)
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY                               :(Не розвантажуватись і чекати повного завантаження будь-якого виду)
+STR_ORDER_TOOLTIP_NON_STOP                                      :{BLACK}Змінити поведінку зупинки виділеного пункту
+STR_ORDER_TOOLTIP_FULL_LOAD                                     :{BLACK}Змінити поведінку завантаження виділеного пункту
+STR_ORDER_TOOLTIP_UNLOAD                                        :{BLACK}Змінити поведінку розвантаження виділеного пункту
+STR_GO_TO_STATION                                               :{STRING} {STATION} {STRING}
+
+STR_ORDER_GO_TO_DROPDOWN_TOOLTIP                                :{BLACK}Додати складний наказ
+STR_ORDER_GO_TO_NEAREST_DEPOT                                   :Прямувати до найближчого депо
+STR_ORDER_GO_TO_NEAREST_HANGAR                                  :Прямувати до найближчого ангару
+STR_ORDER_NEAREST_DEPOT                                         :найближчому
+STR_ORDER_NEAREST_HANGAR                                        :найближчому ангарі
+STR_ORDER_SERVICE_AT                                            :Техогляд у
+STR_ORDER_SERVICE_NON_STOP_AT                                   :Техогляд без зупинки у
+STR_ORDER_TRAIN_DEPOT                                           :Залізничне депо
+STR_ORDER_ROAD_DEPOT                                            :Автомобільне депо
+STR_ORDER_SHIP_DEPOT                                            :Док
+STR_GO_TO_DEPOT                                                 :{STRING} {TOWN} {STRING}
+STR_GO_TO_NEAREST_DEPOT                                         :{STRING} {STRING} {STRING}
+STR_GO_TO_HANGAR                                                :{STRING} {STATION} Ангар
+
+STR_ORDER_CONDITIONAL                                           :Зміна наказу з умовою
+STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP                          :{BLACK}Дані транспорту для базування наказу
+STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP                        :{BLACK}Як порівнювати дані транспорту з заданим значенням
+STR_ORDER_CONDITIONAL_VALUE_TOOLTIP                             :{BLACK}Значення, з яким порівнювати дані транспорту
+STR_ORDER_CONDITIONAL_VALUE_CAPT                                :{WHITE}Введіть значення для порівняння
+STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE                           :Процент завантаження
+STR_ORDER_CONDITIONAL_RELIABILITY                               :Надійність
+STR_ORDER_CONDITIONAL_MAX_SPEED                                 :Макс. швидкість
+STR_ORDER_CONDITIONAL_AGE                                       :Вік транспорту (роки)
+STR_ORDER_CONDITIONAL_REQUIRES_SERVICE                          :Потребує техогляду
+STR_ORDER_CONDITIONAL_UNCONDITIONALLY                           :Завжди
+STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS                         :дорівнює
+STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS                     :не дорівнює
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN                      :менше ніж
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS                    :менше або дорівнює
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN                      :більше ніж
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS                    :більше або дорівнює
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE                        :- так
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE                       :- ні
+STR_CONDITIONAL_VALUE                                           :{SKIP}{BLACK}{COMMA}
+STR_CONDITIONAL_UNCONDITIONAL                                   :Перейти до наказу {COMMA}
+STR_CONDITIONAL_NUM                                             :Перейти до наказу {COMMA}, якщо {STRING} {STRING} {COMMA}
+STR_CONDITIONAL_TRUE_FALSE                                      :Перейти до наказу {COMMA}, якщо {STRING} {STRING}
 
 STR_TIMETABLE_TRAVEL_NOT_TIMETABLED                             :Прямує (не за розкладом)
 STR_TIMETABLE_TRAVEL_FOR                                        :Прямує до {STRING}
@@ -2869,6 +2943,7 @@
 STR_882D_VALUE                                                  :{LTBLUE}{ENGINE}{BLACK}   Ціна: {LTBLUE}{CURRENCY}
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_882F_LOADING_UNLOADING                                      :{LTBLUE}Завантажуюся/Розвантажуюся
+STR_LEAVING                                                     :{LTBLUE}Відправляється
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Поїзд повинен стояти в депо
 STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT                              :{WHITE}Неможливо відправити поїзд в депо...
 STR_8831_NO_MORE_SPACE_FOR_ORDERS                               :{WHITE}Немає місця для наказів
@@ -3200,7 +3275,7 @@
 STR_PERFORMANCE_DETAIL_CARGO                                    :{BLACK}Вантаж:
 STR_PERFORMANCE_DETAIL_MONEY                                    :{BLACK}Кошти:
 STR_PERFORMANCE_DETAIL_LOAN                                     :{BLACK}Кредит:
-STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Всього:
+STR_PERFORMANCE_DETAIL_TOTAL                                    :{BLACK}Підсумок:
 ############ End of order list
 STR_PERFORMANCE_DETAIL_VEHICLES_TIP                             :{BLACK}Загальна кількість транспорту
 STR_PERFORMANCE_DETAIL_STATIONS_TIP                             :{BLACK}Загальна кількість станцій.
@@ -3210,7 +3285,7 @@
 STR_PERFORMANCE_DETAIL_DELIVERED_TIP                            :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали
 STR_PERFORMANCE_DETAIL_CARGO_TIP                                :{BLACK}Кількість видів вантажу, доставлених за останній квартал
 STR_PERFORMANCE_DETAIL_MONEY_TIP                                :{BLACK}Сума коштів на рахунку компанії
-STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Сума кредиту, що надано компанії
+STR_PERFORMANCE_DETAIL_LOAN_TIP                                 :{BLACK}Сума позики, наданої компанії
 STR_PERFORMANCE_DETAIL_TOTAL_TIP                                :{BLACK}Загальна кількість балів
 
 STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}Налаштування NewGRF
@@ -3473,7 +3548,7 @@
 ############ Tooltip measurment
 
 STR_MEASURE_LENGTH                                              :{BLACK}Довжина: {NUM}
-STR_MEASURE_AREA                                                :{BLACK}Область: {NUM} x {NUM}
+STR_MEASURE_AREA                                                :{BLACK}Ділянка: {NUM} x {NUM}
 STR_MEASURE_LENGTH_HEIGHTDIFF                                   :{BLACK}Довжина: {NUM}{}Різниця висот: {NUM} м
 STR_MEASURE_AREA_HEIGHTDIFF                                     :{BLACK}Ділянка: {NUM} x {NUM}{}Різниця висот: {NUM} м
 
@@ -3498,6 +3573,7 @@
 STR_TRANSPARENT_STRUCTURES_DESC                                 :{BLACK}Переключити прозорість для споруд, таких як маяки та антени. CTRL+click - запам'ятати
 STR_TRANSPARENT_CATENARY_DESC                                   :{BLACK}Переключити прозорість для ЛЕП. CTRL+click - запам'ятати
 STR_TRANSPARENT_LOADING_DESC                                    :{BLACK}Змінити прозорість індикаторів завантаження. CTRL+click - запам'ятати
+STR_TRANSPARENT_INVISIBLE_DESC                                  :{BLACK}Зробити об'єкти невидимими, а не прозорими
 
 STR_PERCENT_UP_SMALL                                            :{TINYFONT}{WHITE}{NUM}%{UPARROW}
 STR_PERCENT_UP                                                  :{WHITE}{NUM}%{UPARROW}
@@ -3601,8 +3677,8 @@
 STR_FACE_LIPS_MOUSTACHE_TIP                                     :{BLACK}Змінити губи або вуса
 STR_FACE_CHIN                                                   :Підборіддя:
 STR_FACE_CHIN_TIP                                               :{BLACK}Змінити підборіддя
-STR_FACE_JACKET                                                 :Жакет:
-STR_FACE_JACKET_TIP                                             :{BLACK}Змінити жакет
+STR_FACE_JACKET                                                 :Піджак:
+STR_FACE_JACKET_TIP                                             :{BLACK}Змінити піджак
 STR_FACE_COLLAR                                                 :Комір
 STR_FACE_COLLAR_TIP                                             :{BLACK}Змінити комір
 STR_FACE_TIE                                                    :Краватка:
--- a/src/lang/unfinished/latvian.txt	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/lang/unfinished/latvian.txt	Fri Apr 25 15:20:48 2008 +0000
@@ -11,11 +11,11 @@
 STR_NULL                                                        :
 STR_0001_OFF_EDGE_OF_MAP                                        :{WHITE}Ārpus kartes robežām
 STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP                               :{WHITE}Pārāk tuvu kartes malai
-STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nepietiek naudas - nepieciešami {CURRENCY}
+STR_0003_NOT_ENOUGH_CASH_REQUIRES                               :{WHITE}Nepietiek naudas - nepieciešams {CURRENCY}
 STR_0004                                                        :{WHITE}{CURRENCY}
 STR_EMPTY                                                       :
 STR_0007_FLAT_LAND_REQUIRED                                     :{WHITE}Zemei jābūt plakanai
-STR_0008_WAITING                                                :{BLACK}Gaidam: {WHITE}{STRING.a}
+STR_0008_WAITING                                                :{BLACK}Gaida: {WHITE}{STRING.a}
 STR_0009                                                        :{WHITE}{CARGO}
 STR_000C_ACCEPTS                                                :{BLACK}Pieņem: {WHITE}
 STR_000D_ACCEPTS                                                :{BLACK}Pieņem: {GOLD}
@@ -24,58 +24,58 @@
 STR_0010_COAL                                                   :Ogles
 STR_0011_MAIL                                                   :Pasts
 STR_0012_OIL                                                    :Nafta
-STR_0013_LIVESTOCK                                              :Liellopus
+STR_0013_LIVESTOCK                                              :Mājlopi
 STR_0014_GOODS                                                  :Preces
-STR_0015_GRAIN                                                  :Graudus
-STR_0016_WOOD                                                   :Kokmateria'lus
-STR_0017_IRON_ORE                                               :Dzelzs ru'du
-STR_0018_STEEL                                                  :Te'raudu
-STR_0019_VALUABLES                                              :Ve'rtspapi'ri
-STR_001A_COPPER_ORE                                             :Vara ru'da
-STR_001B_MAIZE                                                  :Kukuru'za
-STR_001C_FRUIT                                                  :Augl'i
+STR_0015_GRAIN                                                  :Graudi
+STR_0016_WOOD                                                   :Koksne
+STR_0017_IRON_ORE                                               :Dzelzsrūda
+STR_0018_STEEL                                                  :Tērauds
+STR_0019_VALUABLES                                              :Vērtslietas
+STR_001A_COPPER_ORE                                             :Vara rūda
+STR_001B_MAIZE                                                  :Kukurūza
+STR_001C_FRUIT                                                  :Augļi
 STR_001D_DIAMONDS                                               :Dimanti
-STR_001E_FOOD                                                   :Pa'rtika
-STR_001F_PAPER                                                  :Papi'rs
+STR_001E_FOOD                                                   :Pārtika
+STR_001F_PAPER                                                  :Papīrs
 STR_0020_GOLD                                                   :Zelts
-STR_0021_WATER                                                  :U'dens
-STR_0022_WHEAT                                                  :Kvies'i
-STR_0023_RUBBER                                                 :Gumija
+STR_0021_WATER                                                  :Ūdens
+STR_0022_WHEAT                                                  :Kvieši
+STR_0023_RUBBER                                                 :Kaučuks
 STR_0024_SUGAR                                                  :Cukurs
-STR_0025_TOYS                                                   :Rotal'lietas
+STR_0025_TOYS                                                   :Rotaļlietas
 STR_0026_CANDY                                                  :Saldumi
 STR_0027_COLA                                                   :Kola
 STR_0028_COTTON_CANDY                                           :Cukurvate
-STR_0029_BUBBLES                                                :Burbul'i
-STR_002A_TOFFEE                                                 :Cukurpla'ksnes
+STR_0029_BUBBLES                                                :Burbuļi
+STR_002A_TOFFEE                                                 :Īriss
 STR_002B_BATTERIES                                              :Baterijas
 STR_002C_PLASTIC                                                :Plastmasa
-STR_002D_FIZZY_DRINKS                                           :Burbul'u'den'i
+STR_002D_FIZZY_DRINKS                                           :Limonāde
 STR_002E                                                        :
-STR_002F_PASSENGER                                              :Pasaz'ieris
-STR_0030_COAL                                                   :Ogle
+STR_002F_PASSENGER                                              :Pasažieris
+STR_0030_COAL                                                   :Ogles
 STR_0031_MAIL                                                   :Pasts
 STR_0032_OIL                                                    :Nafta
-STR_0033_LIVESTOCK                                              :Liellopi
+STR_0033_LIVESTOCK                                              :Mājlopi
 STR_0034_GOODS                                                  :Preces
 STR_0035_GRAIN                                                  :Graudi
-STR_0036_WOOD                                                   :Kokmaterea'li
-STR_0037_IRON_ORE                                               :Dzelzs ru'da
-STR_0038_STEEL                                                  :Te'rauds
-STR_0039_VALUABLES                                              :Ve'rtspapi'ri
-STR_003A_COPPER_ORE                                             :Vara ru'da
-STR_003B_MAIZE                                                  :Kukuru'za
-STR_003C_FRUIT                                                  :Augl'i
-STR_003D_DIAMOND                                                :Dimanti
-STR_003E_FOOD                                                   :Pa'rtika
-STR_003F_PAPER                                                  :papi'rs
+STR_0036_WOOD                                                   :Koksne
+STR_0037_IRON_ORE                                               :Dzelzsrūda
+STR_0038_STEEL                                                  :Tērauds
+STR_0039_VALUABLES                                              :Vērtslietas
+STR_003A_COPPER_ORE                                             :Vara rūda
+STR_003B_MAIZE                                                  :Kukurūza
+STR_003C_FRUIT                                                  :Augļi
+STR_003D_DIAMOND                                                :Dimants
+STR_003E_FOOD                                                   :Pārtika
+STR_003F_PAPER                                                  :Papīrs
 STR_0040_GOLD                                                   :Zelts
-STR_0041_WATER                                                  :U'dens
-STR_0042_WHEAT                                                  :Kvies'i
-STR_0043_RUBBER                                                 :Gumija
+STR_0041_WATER                                                  :Ūdens
+STR_0042_WHEAT                                                  :Kvieši
+STR_0043_RUBBER                                                 :Kaučuks
 STR_0044_SUGAR                                                  :Cukurs
-STR_0045_TOY                                                    :Rotal'lieta
-STR_0046_CANDY                                                  :Saldumi
+STR_0045_TOY                                                    :Rotaļlieta
+STR_0046_CANDY                                                  :Saldums
 STR_0047_COLA                                                   :Kola
 STR_0048_COTTON_CANDY                                           :Cukurvate
 STR_0049_BUBBLE                                                 :Burbulis
@@ -1112,6 +1112,7 @@
 STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Mainīt iestatījuma vērtību
 STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE                :{WHITE}Daži vai visi apkalpošanas intervāli ir nesavietojami ar izvēlētajiem iestatījumiem! Der 5-90% un 30-800 dienas
 
+
 STR_TEMPERATE_LANDSCAPE                                         :Mērenais klimats
 STR_SUB_ARCTIC_LANDSCAPE                                        :Subarktiskais klimats
 STR_SUB_TROPICAL_LANDSCAPE                                      :Subtropiskais klimats
@@ -1705,8 +1706,23 @@
 STR_8036_X2001_ELECTRIC                                         :'X2001' (Electric)
 STR_8037_MILLENNIUM_Z1_ELECTRIC                                 :'Millennium Z1' (Electric)
 STR_8038_WIZZOWOW_Z99                                           :Wizzowow Z99
+STR_8039_PASSENGER_CAR                                          :Pasažieru Vagons
 STR_803A_MAIL_VAN                                               :Pasta Vagons
-STR_8048_FRUIT_TRUCK                                            :Fruktu Vagons
+STR_803B_COAL_CAR                                               :Ogļu Platforma
+STR_803C_OIL_TANKER                                             :Naftas Cisterna
+STR_803D_LIVESTOCK_VAN                                          :Mājlopu Vagons
+STR_803E_GOODS_VAN                                              :Preču Vagons
+STR_803F_GRAIN_HOPPER                                           :Graudu Vagons
+STR_8040_WOOD_TRUCK                                             :Kokmateriālu Platforma
+STR_8041_IRON_ORE_HOPPER                                        :Dzelzsrūdas Vagons
+STR_8042_STEEL_TRUCK                                            :Tērauda Platforma
+STR_8043_ARMORED_VAN                                            :Bruņots Vagons
+STR_8044_FOOD_VAN                                               :Pārtikas Vagons
+STR_8045_PAPER_TRUCK                                            :Papīra Platforma
+STR_8046_COPPER_ORE_HOPPER                                      :Vara Rūdas Vagonete
+STR_8047_WATER_TANKER                                           :Ūdens Cisterna
+STR_8048_FRUIT_TRUCK                                            :Augļu Platforma
+STR_8049_RUBBER_TRUCK                                           :Gumijas Platforma
 STR_8054_LEV1_LEVIATHAN_ELECTRIC                                :Lev1 'Leviathan' (Electric)
 STR_8055_LEV2_CYCLOPS_ELECTRIC                                  :Lev2 'Cyclops' (Electric)
 STR_8056_LEV3_PEGASUS_ELECTRIC                                  :Lev3 'Pegasus' (Electric)
@@ -1776,10 +1792,21 @@
 
 
 
+
+
 STR_8812_EMPTY                                                  :{LTBLUE}Tukšs
 STR_8816                                                        :{BLACK}-
+STR_8819_TRAIN_TOO_LONG                                         :{WHITE}Vilciens ir pārāk garš
+STR_881A_TRAINS_CAN_ONLY_BE_ALTERED                             :{WHITE}Vilcienus ir iespējams pārveidot tikai tad, kad tie ir apstādināti depo
 
+STR_881C_NEW_RAIL_VEHICLES                                      :{WHITE}Jauni Dzelzceļa Satiksmes Līdzekļi
+STR_NEW_ELRAIL_VEHICLES                                         :{WHITE}Jauni Elektriskā Dzelzceļa Satiksmes Līdzekļi
+STR_881D_NEW_MONORAIL_VEHICLES                                  :{WHITE}Jauni Viensliežu Dzelzeļa Satiksmes Līdzekļi
+STR_881E_NEW_MAGLEV_VEHICLES                                    :{WHITE}Jauni Magnētiskā Dzelzceļa Satiksmes Līdzekļi
+STR_ALL_AVAIL_RAIL_VEHICLES                                     :{WHITE}Dzelzceļa Satiksmes Līdzekļi
 
+STR_881F_BUILD_VEHICLE                                          :{BLACK}Būvēt Satiksmes Līdzekli
+STR_CLONE_ROAD_VEHICLE                                          :{BLACK}Klonēt Satiksmes Līdzekli
 STR_SERVICE                                                     :{BLACK}Serviss
 STR_882E                                                        :{WHITE}{VEHICLE}
 STR_TRAIN_MUST_BE_STOPPED                                       :{WHITE}Vilciens ja'apsta'dina kad tas ierodas depo
@@ -1911,6 +1938,9 @@
 STR_PURCHASE_INFO_AIRCRAFT_CAPACITY                             :{BLACK}Ietilpi'ba: {GOLD}{COMMA} pasaz'ieru, {COMMA} pasta somas
 STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT                          :{BLACK}Motor-vagoni: {GOLD}+{POWER}zs{BLACK} Sva'rs: {GOLD}+{WEIGHT_S}t
 
+########### For showing numbers in widgets
+
+
 ########### String for New Landscape Generator
 
 
@@ -1942,3 +1972,9 @@
 
 ############ Face formatting
 ########
+
+############ signal GUI
+########
+
+############ on screen keyboard
+########
--- a/src/misc/autocopyptr.hpp	Fri Apr 25 07:06:57 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/* $Id$ */
-
-/** @file autocopyptr.hpp */
-
-#ifndef  AUTOCOPYPTR_HPP
-#define  AUTOCOPYPTR_HPP
-
-#if 0 // reenable when needed
-/** CAutoCopyPtrT - kind of CoW (Copy on Write) pointer.
- *  It is non-invasive smart pointer (reference counter is held outside
- *  of Tdata).
- *  When copied, its new copy shares the same underlaying structure Tdata.
- *  When dereferenced, its behaviour depends on 2 factors:
- *     - whether the data is shared (used by more than one pointer)
- *     - type of access (read/write)
- *    When shared pointer is dereferenced for write, new clone of Tdata
- *  is made first.
- *  Can't be used for polymorphic data types (interfaces).
- */
-template <class Tdata_>
-class CAutoCopyPtrT {
-protected:
-	typedef Tdata_ Tdata;
-
-	struct CItem {
-		int     m_ref_cnt;  ///< reference counter
-		Tdata   m_data;     ///< custom data itself
-
-		FORCEINLINE CItem()                  : m_ref_cnt(1)                     {};
-		FORCEINLINE CItem(const Tdata& data) : m_ref_cnt(1), m_data(data)       {};
-		FORCEINLINE CItem(const CItem& src)  : m_ref_cnt(1), m_data(src.m_data) {};
-	};
-
-	mutable CItem* m_pI; ///< points to the ref-counted data
-
-public:
-	FORCEINLINE CAutoCopyPtrT() : m_pI(NULL) {};
-	FORCEINLINE CAutoCopyPtrT(const Tdata& data) : m_pI(new CItem(data)) {};
-	FORCEINLINE CAutoCopyPtrT(const CAutoCopyPtrT& src) : m_pI(src.m_pI) {if (m_pI != NULL) m_pI->m_ref_cnt++;}
-	FORCEINLINE ~CAutoCopyPtrT() {if (m_pI == NULL || (--m_pI->m_ref_cnt) > 0) return; delete m_pI; m_pI = NULL;}
-
-	/** data accessor (read only) */
-	FORCEINLINE const Tdata& GetDataRO() const {if (m_pI == NULL) m_pI = new CItem(); return m_pI->m_data;}
-	/** data accessor (read / write) */
-	FORCEINLINE Tdata& GetDataRW() {CloneIfShared(); if (m_pI == NULL) m_pI = new CItem(); return m_pI->m_data;}
-
-	/** clone data if it is shared */
-	FORCEINLINE void CloneIfShared()
-	{
-		if (m_pI != NULL && m_pI->m_ref_cnt > 1) {
-			// we share data item with somebody, clone it to become an exclusive owner
-			CItem* pNewI = new CItem(*m_pI);
-			m_pI->m_ref_cnt--;
-			m_pI = pNewI;
-		}
-	}
-
-	/** assign pointer from the other one (maintaining ref counts) */
-	FORCEINLINE void Assign(const CAutoCopyPtrT& src)
-	{
-		if (m_pI == src.m_pI) return;
-		if (m_pI != NULL && (--m_pI->m_ref_cnt) <= 0) delete m_pI;
-		m_pI = src.m_pI;
-		if (m_pI != NULL) m_pI->m_ref_cnt++;
-	}
-
-	/** dereference operator (read only) */
-	FORCEINLINE const Tdata* operator -> () const {return &GetDataRO();}
-	/** dereference operator (read / write) */
-	FORCEINLINE Tdata* operator -> () {return &GetDataRW();}
-
-	/** assignment operator */
-	FORCEINLINE CAutoCopyPtrT& operator = (const CAutoCopyPtrT& src) {Assign(src); return *this;}
-
-	/** forwarding 'lower then' operator to the underlaying items */
-	FORCEINLINE bool operator < (const CAutoCopyPtrT& other) const
-	{
-		assert(m_pI != NULL);
-		assert(other.m_pI != NULL);
-		return (m_pI->m_data) < (other.m_pI->m_data);
-	}
-};
-
-#endif /* 0 */
-#endif /* AUTOCOPYPTR_HPP */
--- a/src/misc/autoptr.hpp	Fri Apr 25 07:06:57 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/* $Id$ */
-
-/** @file autoptr.hpp */
-
-#ifndef AUTOPTR_HPP
-#define AUTOPTR_HPP
-
-/** AutoPtrT - kind of smart pointer that ensures the owned object gets
- *  deleted when its pointer goes out of scope.
- *  It is non-invasive smart pointer (no reference counter).
- *  When copied, the copy takes ownership of underlying object
- *  and original becomes NULL!
- *  Can be used also for polymorphic data types (interfaces).
- */
-template <class T>
-class AutoPtrT {
-public:
-	typedef T obj_t;
-
-protected:
-	mutable T* m_p; ///< points to the data
-
-public:
-	FORCEINLINE AutoPtrT()
-	 : m_p(NULL)
-	{};
-
-	FORCEINLINE AutoPtrT(const AutoPtrT<T>& src)
-	 : m_p(src.m_p)
-	{
-		if (m_p != NULL) src.m_p = NULL;
-	};
-
-	FORCEINLINE AutoPtrT(T *p)
-	 : m_p(p)
-	{}
-
-	FORCEINLINE ~AutoPtrT()
-	{
-		if (m_p != NULL) {
-			T *p = m_p;
-			m_p = NULL;
-			delete p;
-		}
-	}
-
-	/** give-up ownership and NULLify the raw pointer */
-	FORCEINLINE T* Detach()
-	{
-		T* p = m_p;
-		m_p = NULL;
-		return p;
-	}
-
-	/** raw-pointer cast operator (read only) */
-	FORCEINLINE operator const T* () const
-	{
-		return m_p;
-	}
-
-	/** raw-pointer cast operator */
-	FORCEINLINE operator T* ()
-	{
-		return m_p;
-	}
-
-	/** dereference operator (read only) */
-	FORCEINLINE const T* operator -> () const
-	{
-		assert(m_p != NULL);
-		return m_p;
-	}
-
-	/** dereference operator (read / write) */
-	FORCEINLINE T* operator -> ()
-	{
-		assert(m_p != NULL);
-		return m_p;
-	}
-
-	/** assignment operator */
-	FORCEINLINE AutoPtrT& operator = (const AutoPtrT& src)
-	{
-		/* Save original pointer and replace it with the given one to avoid recursive calls. */
-		T* p = m_p;
-		m_p = src.m_p;
-
-		if (m_p != NULL) src.m_p = NULL;
-
-		if (p != NULL) {
-			/* Now we can safely delete the old one. */
-			delete p;
-		}
-		return *this;
-	}
-
-	/** forwarding 'lower than' operator to the underlaying items */
-	FORCEINLINE bool operator < (const AutoPtrT& other) const
-	{
-		assert(m_p != NULL);
-		assert(other.m_p != NULL);
-		return (*m_p) < (*other.m_p);
-	}
-};
-
-#endif /* AUTOPTR_HPP */
--- a/src/misc_gui.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/misc_gui.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -1455,6 +1455,7 @@
 			case FIOS_TYPE_DIR:    sort_start++; break;
 			case FIOS_TYPE_PARENT: sort_start++; break;
 			case FIOS_TYPE_DRIVE:  sort_end++;   break;
+			default: break;
 		}
 	}
 
--- a/src/newgrf.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -115,8 +115,13 @@
 	MAX_STATIONS = 256,
 };
 
-static uint16 cargo_allowed[TOTAL_NUM_ENGINES];
-static uint16 cargo_disallowed[TOTAL_NUM_ENGINES];
+/* Temporary data used when loading only */
+struct GRFTempEngineData {
+	uint16 cargo_allowed;
+	uint16 cargo_disallowed;
+};
+
+static GRFTempEngineData *_gted;
 
 /* Contains the GRF ID of the owner of a vehicle if it has been reserved */
 static uint32 _grm_engines[TOTAL_NUM_ENGINES];
@@ -573,11 +578,11 @@
 				break;
 
 			case 0x28: // Cargo classes allowed
-				cargo_allowed[engine + i] = grf_load_word(&buf);
+				_gted[engine + i].cargo_allowed = grf_load_word(&buf);
 				break;
 
 			case 0x29: // Cargo classes disallowed
-				cargo_disallowed[engine + i] = grf_load_word(&buf);
+				_gted[engine + i].cargo_disallowed = grf_load_word(&buf);
 				break;
 
 			case 0x2A: // Long format introduction date (days since year 0)
@@ -703,11 +708,11 @@
 				break;
 
 			case 0x1D: // Cargo classes allowed
-				cargo_allowed[ROAD_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[ROAD_ENGINES_INDEX + engine + i].cargo_allowed = grf_load_word(&buf);
 				break;
 
 			case 0x1E: // Cargo classes disallowed
-				cargo_disallowed[ROAD_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[ROAD_ENGINES_INDEX + engine + i].cargo_disallowed = grf_load_word(&buf);
 				break;
 
 			case 0x1F: // Long format introduction date (days since year 0)
@@ -809,11 +814,11 @@
 				break;
 
 			case 0x18: // Cargo classes allowed
-				cargo_allowed[SHIP_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[SHIP_ENGINES_INDEX + engine + i].cargo_allowed = grf_load_word(&buf);
 				break;
 
 			case 0x19: // Cargo classes disallowed
-				cargo_disallowed[SHIP_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[SHIP_ENGINES_INDEX + engine + i].cargo_disallowed = grf_load_word(&buf);
 				break;
 
 			case 0x1A: // Long format introduction date (days since year 0)
@@ -913,11 +918,11 @@
 				break;
 
 			case 0x18: // Cargo classes allowed
-				cargo_allowed[AIRCRAFT_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[AIRCRAFT_ENGINES_INDEX + engine + i].cargo_allowed = grf_load_word(&buf);
 				break;
 
 			case 0x19: // Cargo classes disallowed
-				cargo_disallowed[AIRCRAFT_ENGINES_INDEX + engine + i] = grf_load_word(&buf);
+				_gted[AIRCRAFT_ENGINES_INDEX + engine + i].cargo_disallowed = grf_load_word(&buf);
 				break;
 
 			case 0x1A: // Long format introduction date (days since year 0)
@@ -5218,9 +5223,8 @@
 	/* Copy/reset original bridge info data */
 	ResetBridges();
 
-	/* Reset refit/cargo class data */
-	memset(&cargo_allowed, 0, sizeof(cargo_allowed));
-	memset(&cargo_disallowed, 0, sizeof(cargo_disallowed));
+	/* Allocate temporary refit/cargo class data */
+	_gted = CallocT<GRFTempEngineData>(TOTAL_NUM_ENGINES);
 
 	/* Reset GRM reservations */
 	memset(&_grm_engines, 0, sizeof(_grm_engines));
@@ -5423,12 +5427,12 @@
 			}
 		}
 
-		if (cargo_allowed[engine] != 0) {
+		if (_gted[engine].cargo_allowed != 0) {
 			/* Build up the list of cargo types from the set cargo classes. */
 			for (CargoID i = 0; i < NUM_CARGO; i++) {
 				const CargoSpec *cs = GetCargo(i);
-				if (cargo_allowed[engine]    & cs->classes) SetBit(mask,     i);
-				if (cargo_disallowed[engine] & cs->classes) SetBit(not_mask, i);
+				if (_gted[engine].cargo_allowed    & cs->classes) SetBit(mask,     i);
+				if (_gted[engine].cargo_disallowed & cs->classes) SetBit(not_mask, i);
 			}
 		} else {
 			/* Don't apply default refit mask to wagons or engines with no capacity */
@@ -5849,6 +5853,9 @@
 
 	/* Load old shore sprites in new position, if they were replaced by ActionA */
 	ActivateOldShore();
+
+	/* Deallocate temporary loading data */
+	free(_gted);
 }
 
 void LoadNewGRF(uint load_index, uint file_index)
--- a/src/newgrf_engine.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf_engine.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -1100,18 +1100,6 @@
 }
 
 /**
- * Get the EngineID at position pos.
- * Used when drawing a(n unsorted) list of engines.
- * @param pos List position/
- * @return The EngineID at the requested position.
- */
-EngineID GetRailVehAtPosition(EngineID pos)
-{
-	if (pos < NUM_TRAIN_ENGINES) return _engine_list_order[pos];
-	return pos;
-}
-
-/**
  * Get the list position of an engine.
  * Used when sorting a list of engines.
  * @param engine ID of the engine.
--- a/src/newgrf_engine.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf_engine.h	Fri Apr 25 15:20:48 2008 +0000
@@ -57,7 +57,6 @@
 void UnloadCustomEngineSprites();
 
 void ResetEngineListOrder();
-EngineID GetRailVehAtPosition(EngineID pos);
 uint16 ListPositionOfEngine(EngineID engine);
 void AlterRailVehListOrder(EngineID engine, EngineID target);
 
--- a/src/newgrf_house.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf_house.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -547,6 +547,8 @@
 	HouseID hid = GetHouseType(tile);
 	HouseSpec *hs = GetHouseSpecs(hid);
 
+	if (hs->spritegroup == NULL) return;
+
 	NewHouseResolver(&object, hid, tile, GetTownByTile(tile));
 
 	object.callback = CBID_RANDOM_TRIGGER;
--- a/src/newgrf_industrytiles.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf_industrytiles.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -417,6 +417,8 @@
 	IndustryGfx gfx = GetIndustryGfx(tile);
 	const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
 
+	if (itspec->grf_prop.spritegroup == NULL) return;
+
 	NewIndustryTileResolver(&object, gfx, tile, ind);
 
 	object.callback = CBID_RANDOM_TRIGGER;
--- a/src/newgrf_station.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/newgrf_station.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -676,7 +676,7 @@
 {
 	uint i;
 
-	if (statspec == NULL) return 0;
+	if (statspec == NULL || st == NULL) return 0;
 
 	/* Check if this spec has already been allocated */
 	for (i = 1; i < st->num_specs && i < MAX_SPECLIST; i++) {
--- a/src/news_gui.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/news_gui.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -16,6 +16,7 @@
 #include "sound_func.h"
 #include "string_func.h"
 #include "widgets/dropdown_func.h"
+#include "map_func.h"
 
 #include "table/sprites.h"
 #include "table/strings.h"
@@ -45,8 +46,6 @@
  * \endverbatim
  */
 
-/** Number of news items in the FIFO queue */
-#define MAX_NEWS 30
 #define NB_WIDG_PER_SETTING 4
 
 typedef byte NewsID;
@@ -54,7 +53,8 @@
 
 NewsItem _statusbar_news_item;
 bool _news_ticker_sound;
-static NewsItem _news_items[MAX_NEWS];      ///< The news FIFO queue
+static NewsItem *_news_items = NULL;        ///< The news FIFO queue
+static uint _max_news_items = 0;            ///< size of news FIFO queue
 static NewsID _current_news = INVALID_NEWS; ///< points to news item that should be shown next
 static NewsID _oldest_news = 0;             ///< points to first item in fifo queue
 static NewsID _latest_news = INVALID_NEWS;  ///< points to last item in fifo queue
@@ -75,7 +75,7 @@
  * _forced_news. Otherwise, \a _forced_news variable is INVALID_NEWS. */
 static NewsID _forced_news = INVALID_NEWS;
 
-static byte _total_news = 0; ///< Number of news items in FIFO queue @see _news_items
+static uint _total_news = 0; ///< Number of news items in FIFO queue @see _news_items
 
 void DrawNewsNewVehicleAvail(Window *w, const NewsItem *ni);
 void DrawNewsBankrupcy(Window *w, const NewsItem *ni);
@@ -98,7 +98,9 @@
 /** Initialize the news-items data structures */
 void InitNewsItemStructs()
 {
-	memset(_news_items, 0, sizeof(_news_items));
+	free(_news_items);
+	_max_news_items = max(ScaleByMapSize(30), 30U);
+	_news_items = CallocT<NewsItem>(_max_news_items);
 	_current_news = INVALID_NEWS;
 	_oldest_news = 0;
 	_latest_news = INVALID_NEWS;
@@ -245,7 +247,7 @@
 static inline NewsID IncreaseIndex(NewsID i)
 {
 	assert(i != INVALID_NEWS);
-	return (i + 1) % MAX_NEWS;
+	return (i + 1) % _max_news_items;
 }
 
 /**
@@ -255,7 +257,7 @@
 static inline NewsID DecreaseIndex(NewsID i)
 {
 	assert(i != INVALID_NEWS);
-	return (i + MAX_NEWS - 1) % MAX_NEWS;
+	return (i + _max_news_items - 1) % _max_news_items;
 }
 
 /**
@@ -287,11 +289,11 @@
 	if (_game_mode == GM_MENU) return;
 
 	/* check the rare case that the oldest (to be overwritten) news item is open */
-	if (_total_news == MAX_NEWS && (_oldest_news == _current_news || _oldest_news == _forced_news)) {
+	if (_total_news == _max_news_items && (_oldest_news == _current_news || _oldest_news == _forced_news)) {
 		MoveToNextItem();
 	}
 
-	if (_total_news < MAX_NEWS) _total_news++;
+	if (_total_news < _max_news_items) _total_news++;
 
 	/* Increase _latest_news. If we have no news yet, use _oldest news as an
 	 * index. We cannot use 0 as _oldest_news can jump around due to
@@ -301,7 +303,7 @@
 
 	/* If the fifo-buffer is full, overwrite the oldest entry */
 	if (l_news != INVALID_NEWS && _latest_news == _oldest_news) {
-		assert(_total_news == MAX_NEWS);
+		assert(_total_news == _max_news_items);
 		_oldest_news = IncreaseIndex(_oldest_news);
 	}
 
@@ -467,7 +469,7 @@
 {
 	NewsID item = (_forced_news == INVALID_NEWS) ? _current_news : _forced_news;
 
-	if (item >= MAX_NEWS) return true;
+	if (item >= _max_news_items) return true;
 	NewsItem *ni = &_news_items[item];
 
 	/* Ticker message
@@ -575,12 +577,12 @@
 	if (i >= _total_news) return INVALID_NEWS;
 
 	if (_latest_news < i) {
-		i = _latest_news + MAX_NEWS - i;
+		i = _latest_news + _max_news_items - i;
 	} else {
 		i = _latest_news - i;
 	}
 
-	i %= MAX_NEWS;
+	i %= _max_news_items;
 	return i;
 }
 
--- a/src/oldpool.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/oldpool.h	Fri Apr 25 15:20:48 2008 +0000
@@ -292,6 +292,9 @@
 	{
 		return Tpool->CleaningPool();
 	}
+
+public:
+	static bool CanAllocateItem();
 };
 
 
--- a/src/oldpool_func.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/oldpool_func.h	Fri Apr 25 15:20:48 2008 +0000
@@ -31,4 +31,25 @@
 	return NULL;
 }
 
+/**
+ * Check whether we can allocate an item in this pool. This to prevent the
+ * need to actually construct the object and then destructing it again,
+ * which could be *very* costly.
+ * @return true if and only if at least ONE item can be allocated.
+ */
+template<typename T, typename Tid, OldMemoryPool<T> *Tpool> bool PoolItem<T, Tid, Tpool>::CanAllocateItem()
+{
+	uint last_minus_one = Tpool->GetSize() - 1;
+
+	for (T *t = Tpool->Get(Tpool->first_free_index); t != NULL; t = (t->index < last_minus_one) ? Tpool->Get(t->index + 1U) : NULL) {
+		if (!t->IsValid()) return true;
+		Tpool->first_free_index = t->index;
+	}
+
+	/* Check if we can add a block to the pool */
+	if (Tpool->AddBlockToPool()) return CanAllocateItem();
+
+	return false;
+}
+
 #endif /* OLDPOOL_FUNC_H */
--- a/src/openttd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/openttd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -978,6 +978,54 @@
 		CallWindowTickEvent();
 		NewsLoop();
 	} else {
+#ifdef DEBUG_DUMP_COMMANDS
+		Vehicle *v;
+		FOR_ALL_VEHICLES(v) {
+			if (v != v->First()) continue;
+
+			switch (v->type) {
+				case VEH_ROAD: {
+					extern byte GetRoadVehLength(const Vehicle *v);
+					if (GetRoadVehLength(v) != v->u.road.cached_veh_length) {
+						printf("cache mismatch: vehicle %i, player %i, unit number %i wagon %i\n", v->index, (int)v->owner, v->unitnumberlength);
+					}
+				} break;
+
+				case VEH_TRAIN: {
+					uint length = 0;
+					for (Vehicle *u = v; u != NULL; u = u->Next()) length++;
+
+					VehicleRail *wagons = MallocT<VehicleRail>(length);
+					length = 0;
+					for (Vehicle *u = v; u != NULL; u = u->Next()) wagons[length++] = u->u.rail;
+
+					TrainConsistChanged(v);
+
+					length = 0;
+					for (Vehicle *u = v; u != NULL; u = u->Next()) {
+						if (memcmp(&wagons[length], &u->u.rail, sizeof(VehicleRail)) != 0) {
+							printf("cache mismatch: vehicle %i, player %i, unit number %i wagon %i\n", v->index, (int)v->owner, v->unitnumberlength);
+						}
+						length++;
+					}
+
+					free(wagons);
+				} break;
+
+				case VEH_AIRCRAFT: {
+					uint speed = v->u.air.cached_max_speed;
+					UpdateAircraftCache(v);
+					if (speed != v->u.air.cached_max_speed) {
+						printf("cache mismatch: vehicle %i, player %i, unit number %i wagon %i\n", v->index, (int)v->owner, v->unitnumberlength);
+					}
+				} break;
+
+				default:
+					break;
+			}
+		}
+#endif
+
 		/* All these actions has to be done from OWNER_NONE
 		 *  for multiplayer compatibility */
 		PlayerID p = _current_player;
@@ -2425,13 +2473,13 @@
 		}
 
 		/* Convert old PF settings to new */
-		if (_patches.yapf.rail_use_yapf) {
+		if (_patches.yapf.rail_use_yapf || CheckSavegameVersion(28)) {
 			_patches.pathfinder_for_trains = VPF_YAPF;
 		} else {
 			_patches.pathfinder_for_trains = (_patches.new_pathfinding_all ? VPF_NPF : VPF_NTP);
 		}
 
-		if (_patches.yapf.road_use_yapf) {
+		if (_patches.yapf.road_use_yapf || CheckSavegameVersion(28)) {
 			_patches.pathfinder_for_roadvehs = VPF_YAPF;
 		} else {
 			_patches.pathfinder_for_roadvehs = (_patches.new_pathfinding_all ? VPF_NPF : VPF_OPF);
--- a/src/order_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/order_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -1663,7 +1663,7 @@
 
 		case VEH_AIRCRAFT:
 		case VEH_SHIP:
-			InvalidateWindowClasses(v->GetVehicleListWindowClass());
+			InvalidateWindowClasses(GetWindowClassForVehicleType(v->type));
 			break;
 	}
 
--- a/src/players.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/players.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -352,70 +352,78 @@
 	}
 }
 
-#define COLOR_SWAP(i, j) do { byte t = colors[i];colors[i] = colors[j];colors[j] = t; } while(0)
-
-static const byte _color_sort[16] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1};
-static const byte _color_similar_1[16] = {8, 6, 255, 12,  255, 0, 1, 1, 0, 13,  11,  10, 3,   9,  15, 14};
-static const byte _color_similar_2[16] = {5, 7, 255, 255, 255, 8, 7, 6, 5, 12, 255, 255, 9, 255, 255, 255};
+static const byte _colour_sort[COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1};
+static const Colours _similar_colour[COLOUR_END][2] = {
+	{ COLOUR_BLUE,       COLOUR_LIGHT_BLUE }, // COLOUR_DARK_BLUE
+	{ COLOUR_GREEN,      COLOUR_DARK_GREEN }, // COLOUR_PALE_GREEN
+	{ INVALID_COLOUR,    INVALID_COLOUR    }, // COLOUR_PINK
+	{ COLOUR_ORANGE,     INVALID_COLOUR    }, // COLOUR_YELLOW
+	{ INVALID_COLOUR,    INVALID_COLOUR    }, // COLOUR_RED
+	{ COLOUR_DARK_BLUE,  COLOUR_BLUE       }, // COLOUR_LIGHT_BLUE
+	{ COLOUR_PALE_GREEN, COLOUR_DARK_GREEN }, // COLOUR_GREEN
+	{ COLOUR_PALE_GREEN, COLOUR_GREEN      }, // COLOUR_DARK_GREEN
+	{ COLOUR_BLUE,       COLOUR_LIGHT_BLUE }, // COLOUR_BLUE
+	{ COLOUR_BROWN,      COLOUR_ORANGE     }, // COLOUR_CREAM
+	{ COLOUR_PURPLE,     INVALID_COLOUR    }, // COLOUR_MAUVE
+	{ COLOUR_MAUVE,      INVALID_COLOUR    }, // COLOUR_PURPLE
+	{ COLOUR_YELLOW,     COLOUR_CREAM      }, // COLOUR_ORANGE
+	{ COLOUR_CREAM,      INVALID_COLOUR    }, // COLOUR_BROWN
+	{ COLOUR_WHITE,      INVALID_COLOUR    }, // COLOUR_GREY
+	{ COLOUR_GREY,       INVALID_COLOUR    }, // COLOUR_WHITE
+};
 
-static byte GeneratePlayerColor()
+static byte GeneratePlayerColour()
 {
-	byte colors[16], pcolor, t2;
-	int i, j, n;
-	uint32 r;
-	Player *p;
+	Colours colours[COLOUR_END];
 
 	/* Initialize array */
-	for (i = 0; i != 16; i++) colors[i] = i;
+	for (uint i = 0; i < COLOUR_END; i++) colours[i] = (Colours)i;
 
 	/* And randomize it */
-	n = 100;
-	do {
-		r = Random();
-		COLOR_SWAP(GB(r, 0, 4), GB(r, 4, 4));
-	} while (--n);
+	for (uint i = 0; i < 100; i++) {
+		uint r = Random();
+		Swap(colours[GB(r, 0, 4)], colours[GB(r, 4, 4)]);
+	}
 
 	/* Bubble sort it according to the values in table 1 */
-	i = 16;
-	do {
-		for (j = 0; j != 15; j++) {
-			if (_color_sort[colors[j]] < _color_sort[colors[j + 1]]) {
-				COLOR_SWAP(j, j + 1);
+	for (uint i = 0; i < COLOUR_END; i++) {
+		for (uint j = 1; j < COLOUR_END; j++) {
+			if (_colour_sort[colours[j - 1]] < _colour_sort[colours[j]]) {
+				Swap(colours[j - 1], colours[j]);
 			}
 		}
-	} while (--i);
+	};
 
 	/* Move the colors that look similar to each player's color to the side */
-	FOR_ALL_PLAYERS(p) if (p->is_active) {
-		pcolor = p->player_color;
-		for (i = 0; i != 16; i++) if (colors[i] == pcolor) {
-			colors[i] = 0xFF;
+	Player *p;
+	FOR_ALL_PLAYERS(p) {
+		if (!p->is_active) continue;
 
-			t2 = _color_similar_1[pcolor];
-			if (t2 == 0xFF) break;
-			for (i = 0; i != 15; i++) {
-				if (colors[i] == t2) {
-					do COLOR_SWAP(i, i + 1); while (++i != 15);
-					break;
-				}
-			}
+		Colours pcolour = (Colours)p->player_color;
 
-			t2 = _color_similar_2[pcolor];
-			if (t2 == 0xFF) break;
-			for (i = 0; i != 15; i++) {
-				if (colors[i] == t2) {
-					do COLOR_SWAP(i, i + 1); while (++i != 15);
-					break;
-				}
+		for (uint i = 0; i < COLOUR_END; i++) {
+			if (colours[i] == pcolour) {
+				colours[i] = INVALID_COLOUR;
+				break;
 			}
-			break;
+		}
+
+		for (uint j = 0; j < 2; j++) {
+			Colours similar = _similar_colour[pcolour][j];
+			if (similar == INVALID_COLOUR) break;
+
+			for (uint i = 1; i < COLOUR_END; i++) {
+				if (colours[i - 1] == similar) Swap(colours[i - 1], colours[i]);
+			}
 		}
 	}
 
 	/* Return the first available color */
-	for (i = 0;; i++) {
-		if (colors[i] != 0xFF) return colors[i];
+	for (uint i = 0; i < COLOUR_END; i++) {
+		if (colours[i] != INVALID_COLOUR) return colours[i];
 	}
+
+	NOT_REACHED();
 }
 
 static void GeneratePresidentName(Player *p)
@@ -485,7 +493,7 @@
 	if (p == NULL) return NULL;
 
 	/* Make a color */
-	p->player_color = GeneratePlayerColor();
+	p->player_color = GeneratePlayerColour();
 	ResetPlayerLivery(p);
 	_player_colors[p->index] = p->player_color;
 	p->name_1 = STR_SV_UNNAMED;
--- a/src/rail.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/rail.h	Fri Apr 25 15:20:48 2008 +0000
@@ -216,6 +216,7 @@
  */
 void DrawCatenary(const TileInfo *ti);
 void DrawCatenaryOnTunnel(const TileInfo *ti);
+void DrawCatenaryOnBridge(const TileInfo *ti);
 
 Foundation GetRailFoundation(Slope tileh, TrackBits bits);
 
--- a/src/rail_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/rail_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -30,7 +30,6 @@
 #include "newgrf_callbacks.h"
 #include "newgrf_station.h"
 #include "train.h"
-#include "misc/autoptr.hpp"
 #include "variables.h"
 #include "autoslope.h"
 #include "transparency.h"
@@ -44,6 +43,7 @@
 #include "station_map.h"
 #include "water_map.h"
 #include "functions.h"
+#include "oldpool_func.h"
 
 #include "table/sprites.h"
 #include "table/strings.h"
@@ -765,12 +765,10 @@
 
 	if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
-	Depot *d = new Depot(tile);
-
-	if (d == NULL) return CMD_ERROR;
-	AutoPtrT<Depot> d_auto_delete = d;
+	if (!Depot::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		Depot *d = new Depot(tile);
 		MakeRailDepot(tile, _current_player, dir, (RailType)p1);
 		MarkTileDirtyByTile(tile);
 
@@ -778,7 +776,6 @@
 
 		AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_player);
 		YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir)));
-		d_auto_delete.Detach();
 	}
 
 	return cost.AddCost(_price.build_train_depot);
--- a/src/road_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/road_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -23,7 +23,6 @@
 #include "newgrf.h"
 #include "station_map.h"
 #include "tunnel_map.h"
-#include "misc/autoptr.hpp"
 #include "variables.h"
 #include "autoslope.h"
 #include "transparency.h"
@@ -38,6 +37,7 @@
 #include "cheat_func.h"
 #include "functions.h"
 #include "effectvehicle_func.h"
+#include "oldpool_func.h"
 
 #include "table/sprites.h"
 #include "table/strings.h"
@@ -817,16 +817,14 @@
 
 	if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
-	Depot *dep = new Depot(tile);
-	if (dep == NULL) return CMD_ERROR;
-	AutoPtrT<Depot> d_auto_delete = dep;
+	if (!Depot::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		Depot *dep = new Depot(tile);
 		dep->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
 		MakeRoadDepot(tile, _current_player, dir, rt);
 		MarkTileDirtyByTile(tile);
-		d_auto_delete.Detach();
 	}
 	return cost.AddCost(_price.build_road_depot);
 }
--- a/src/roadveh.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/roadveh.h	Fri Apr 25 15:20:48 2008 +0000
@@ -71,7 +71,6 @@
 	void MarkDirty();
 	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); }
 	SpriteID GetImage(Direction direction) const;
 	int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
--- a/src/ship.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/ship.h	Fri Apr 25 15:20:48 2008 +0000
@@ -32,14 +32,13 @@
 	void MarkDirty();
 	void UpdateDeltaXY(Direction direction);
 	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; }
 	SpriteID GetImage(Direction direction) const;
 	int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
 	int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
 	Money GetRunningCost() const { return ShipVehInfo(this->engine_type)->running_cost * _price.ship_running; }
-	bool IsInDepot() const { return this->u.ship.state == 0x80; }
+	bool IsInDepot() const { return this->u.ship.state == TRACK_BIT_DEPOT; }
 	void Tick();
 	void OnNewDay();
 	TileIndex GetOrderStationLocation(StationID station);
--- a/src/ship_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/ship_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -28,7 +28,6 @@
 #include "newgrf_text.h"
 #include "newgrf_sound.h"
 #include "spritecache.h"
-#include "misc/autoptr.hpp"
 #include "strings_func.h"
 #include "functions.h"
 #include "window_func.h"
@@ -283,26 +282,22 @@
 
 static void CheckShipLeaveDepot(Vehicle *v)
 {
-	TileIndex tile;
-	Axis axis;
-	uint m;
-
 	if (!v->IsInDepot()) return;
 
-	tile = v->tile;
-	axis = GetShipDepotAxis(tile);
+	TileIndex tile = v->tile;
+	Axis axis = GetShipDepotAxis(tile);
 
-	/* Check first side */
+	/* Check first (north) side */
 	if (_ship_sometracks[axis] & GetTileShipTrackStatus(TILE_ADD(tile, ToTileIndexDiff(_ship_leave_depot_offs[axis])))) {
-		m = (axis == AXIS_X) ? 0x101 : 0x207;
-	/* Check second side */
+		v->direction = ReverseDir(AxisToDirection(axis));
+	/* Check second (south) side */
 	} else if (_ship_sometracks[axis + 2] & GetTileShipTrackStatus(TILE_ADD(tile, -2 * ToTileIndexDiff(_ship_leave_depot_offs[axis])))) {
-		m = (axis == AXIS_X) ? 0x105 : 0x203;
+		v->direction = AxisToDirection(axis);
 	} else {
 		return;
 	}
-	v->direction    = (Direction)GB(m, 0, 8);
-	v->u.ship.state = (TrackBits)GB(m, 8, 8);
+
+	v->u.ship.state = AxisToTrackBits(axis);
 	v->vehstatus &= ~VS_HIDDEN;
 
 	v->cur_speed = 0;
--- a/src/signs.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/signs.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -11,7 +11,6 @@
 #include "saveload.h"
 #include "command_func.h"
 #include "variables.h"
-#include "misc/autoptr.hpp"
 #include "strings_func.h"
 #include "viewport_func.h"
 #include "zoom_func.h"
@@ -99,12 +98,11 @@
 CommandCost CmdPlaceSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	/* Try to locate a new sign */
-	Sign *si = new Sign(_current_player);
-	if (si == NULL) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
-	AutoPtrT<Sign> s_auto_delete = si;
+	if (!Sign::CanAllocateItem()) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
 
 	/* When we execute, really make the sign */
 	if (flags & DC_EXEC) {
+		Sign *si = new Sign(_current_player);
 		int x = TileX(tile) * TILE_SIZE;
 		int y = TileY(tile) * TILE_SIZE;
 
@@ -117,7 +115,6 @@
 		_sign_sort_dirty = true;
 		_new_sign_id = si->index;
 		_total_signs++;
-		s_auto_delete.Detach();
 	}
 
 	return CommandCost();
--- a/src/station.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/station.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -21,6 +21,7 @@
 #include "yapf/yapf.h"
 #include "cargotype.h"
 #include "roadveh.h"
+#include "window_type.h"
 #include "station_gui.h"
 #include "zoom_func.h"
 #include "functions.h"
--- a/src/station_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/station_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -25,7 +25,6 @@
 #include "newgrf_callbacks.h"
 #include "newgrf_station.h"
 #include "yapf/yapf.h"
-#include "misc/autoptr.hpp"
 #include "road_type.h"
 #include "road_internal.h" /* For drawing catenary/checking road removal */
 #include "cargotype.h"
@@ -239,7 +238,7 @@
 	STATIONNAMING_HELIPORT,
 };
 
-static bool GenerateStationName(Station *st, TileIndex tile, int flag)
+static void GenerateStationName(Station *st, TileIndex tile, int flag)
 {
 	static const uint32 _gen_station_name_bits[] = {
 		0,                                      /* 0 */
@@ -344,7 +343,6 @@
 
 done:
 	st->string_id = found + STR_SV_STNAME;
-	return true;
 }
 #undef M
 
@@ -962,10 +960,6 @@
 	/* See if there is a deleted station close to us. */
 	if (st == NULL) st = GetClosestStationFromTile(tile_org);
 
-	/* In case of new station if DC_EXEC is NOT set we still need to create the station
-	 * to test if everything is OK. In this case we need to delete it before return. */
-	AutoPtrT<Station> st_auto_delete;
-
 	if (st != NULL) {
 		/* Reuse an existing station. */
 		if (st->owner != _current_player)
@@ -983,17 +977,17 @@
 		if (!st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TEST)) return CMD_ERROR;
 	} else {
 		/* allocate and initialize new station */
-		st = new Station(tile_org);
-		if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
-
-		/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
-		st_auto_delete = st;
-
-		st->town = ClosestTownFromTile(tile_org, (uint)-1);
-		if (!GenerateStationName(st, tile_org, STATIONNAMING_RAIL)) return CMD_ERROR;
-
-		if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
-			SetBit(st->town->have_ratings, _current_player);
+		if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
+
+		if (flags & DC_EXEC) {
+			st = new Station();
+
+			st->town = ClosestTownFromTile(tile_org, UINT_MAX);
+			GenerateStationName(st, tile_org, STATIONNAMING_RAIL);
+
+			if (IsValidPlayer(_current_player)) {
+				SetBit(st->town->have_ratings, _current_player);
+			}
 		}
 	}
 
@@ -1088,8 +1082,6 @@
 		RebuildStationLists();
 		InvalidateWindow(WC_STATION_LIST, st->owner);
 		InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_TRAINS);
-		/* success, so don't delete the new station */
-		st_auto_delete.Detach();
 	}
 
 	return cost;
@@ -1394,23 +1386,13 @@
 	if (st == NULL) st = GetClosestStationFromTile(tile);
 
 	/* give us a road stop in the list, and check if something went wrong */
-	RoadStop *road_stop = new RoadStop(tile);
-	if (road_stop == NULL) {
-		return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
-	}
-
-	/* ensure that in case of error (or no DC_EXEC) the new road stop gets deleted upon return */
-	AutoPtrT<RoadStop> rs_auto_delete(road_stop);
+	if (!RoadStop::CanAllocateItem()) return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
 
 	if (st != NULL &&
 			GetNumRoadStopsInStation(st, ROADSTOP_BUS) + GetNumRoadStopsInStation(st, ROADSTOP_TRUCK) >= RoadStop::LIMIT) {
 		return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
 	}
 
-	/* In case of new station if DC_EXEC is NOT set we still need to create the station
-	 * to test if everything is OK. In this case we need to delete it before return. */
-	AutoPtrT<Station> st_auto_delete;
-
 	if (st != NULL) {
 		if (st->owner != _current_player) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -1419,26 +1401,25 @@
 		if (!st->rect.BeforeAddTile(tile, StationRect::ADD_TEST)) return CMD_ERROR;
 	} else {
 		/* allocate and initialize new station */
-		st = new Station(tile);
-		if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
-
-		/* ensure that in case of error (or no DC_EXEC) the new station gets deleted upon return */
-		st_auto_delete = st;
-
-
-		Town *t = st->town = ClosestTownFromTile(tile, (uint)-1);
-		if (!GenerateStationName(st, tile, STATIONNAMING_ROAD)) return CMD_ERROR;
-
-		if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
-			SetBit(t->have_ratings, _current_player);
+		if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
+
+		if (flags & DC_EXEC) {
+			st = new Station();
+
+			st->town = ClosestTownFromTile(tile, UINT_MAX);
+			GenerateStationName(st, tile, STATIONNAMING_ROAD);
+
+			if (IsValidPlayer(_current_player)) {
+				SetBit(st->town->have_ratings, _current_player);
+			}
+			st->sign.width_1 = 0;
 		}
-
-		st->sign.width_1 = 0;
 	}
 
 	cost.AddCost((type) ? _price.build_truck_station : _price.build_bus_station);
 
 	if (flags & DC_EXEC) {
+		RoadStop *road_stop = new RoadStop(tile);
 		/* Insert into linked list of RoadStops */
 		RoadStop **currstop = FindRoadStopSpot(type, st);
 		*currstop = road_stop;
@@ -1460,9 +1441,6 @@
 		RebuildStationLists();
 		InvalidateWindow(WC_STATION_LIST, st->owner);
 		InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_ROADVEHS);
-		/* success, so don't delete the new station and the new road stop */
-		st_auto_delete.Detach();
-		rs_auto_delete.Detach();
 	}
 	return cost;
 }
@@ -1563,7 +1541,7 @@
 		/* 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,
+		MakeRoadNormal(tile, road_bits, rts, is_towns_road ? ClosestTownFromTile(tile, UINT_MAX)->index : 0,
 				is_towns_road ? OWNER_TOWN : _current_player, _current_player, _current_player);
 	}
 
@@ -1717,10 +1695,6 @@
 		return CMD_ERROR;
 	}
 
-	/* In case of new station if DC_EXEC is NOT set we still need to create the station
-	 * to test if everything is OK. In this case we need to delete it before return. */
-	AutoPtrT<Station> st_auto_delete;
-
 	if (st != NULL) {
 		if (st->owner != _current_player) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -1735,24 +1709,18 @@
 		airport_upgrade = false;
 
 		/* allocate and initialize new station */
-		st = new Station(tile);
-		if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
-
-		/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
-		st_auto_delete = st;
-
-		st->town = t;
-
-		if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
-			SetBit(t->have_ratings, _current_player);
-		}
-
-		st->sign.width_1 = 0;
-
-		/* If only helicopters may use the airport generate a helicopter related (5)
-		 * station name, otherwise generate a normal airport name (1) */
-		if (!GenerateStationName(st, tile, !(afc->flags & AirportFTAClass::AIRPLANES) ? STATIONNAMING_HELIPORT : STATIONNAMING_AIRPORT)) {
-			return CMD_ERROR;
+		if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
+
+		if (flags & DC_EXEC) {
+			st = new Station();
+
+			st->town = t;
+			GenerateStationName(st, tile, !(afc->flags & AirportFTAClass::AIRPLANES) ? STATIONNAMING_HELIPORT : STATIONNAMING_AIRPORT);
+
+			if (IsValidPlayer(_current_player)) {
+				SetBit(st->town->have_ratings, _current_player);
+			}
+			st->sign.width_1 = 0;
 		}
 	}
 
@@ -1789,8 +1757,6 @@
 		RebuildStationLists();
 		InvalidateWindow(WC_STATION_LIST, st->owner);
 		InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_PLANES);
-		/* success, so don't delete the new station */
-		st_auto_delete.Detach();
 	}
 
 	return cost;
@@ -1860,18 +1826,18 @@
 	if (GetTileSlope(tile, NULL) != SLOPE_FLAT) return_cmd_error(STR_304B_SITE_UNSUITABLE);
 
 	/* allocate and initialize new station */
-	Station *st = new Station(tile);
-	if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
-
-	/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
-	AutoPtrT<Station> st_auto_delete(st);
-
-	st->town = ClosestTownFromTile(tile, (uint)-1);
-	st->sign.width_1 = 0;
-
-	if (!GenerateStationName(st, tile, STATIONNAMING_BUOY)) return CMD_ERROR;
+	if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
 
 	if (flags & DC_EXEC) {
+		Station *st = new Station();
+
+		st->town = ClosestTownFromTile(tile, UINT_MAX);
+		GenerateStationName(st, tile, STATIONNAMING_BUOY);
+
+		if (IsValidPlayer(_current_player)) {
+			SetBit(st->town->have_ratings, _current_player);
+		}
+		st->sign.width_1 = 0;
 		st->dock_tile = tile;
 		st->facilities |= FACIL_DOCK;
 		/* Buoys are marked in the Station struct by this flag. Yes, it is this
@@ -1888,8 +1854,6 @@
 		RebuildStationLists();
 		InvalidateWindow(WC_STATION_LIST, st->owner);
 		InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_SHIPS);
-		/* success, so don't delete the new station */
-		st_auto_delete.Detach();
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.build_dock);
@@ -2011,10 +1975,6 @@
 	/* Find a station close to us */
 	if (st == NULL) st = GetClosestStationFromTile(tile);
 
-	/* In case of new station if DC_EXEC is NOT set we still need to create the station
-	 * to test if everything is OK. In this case we need to delete it before return. */
-	AutoPtrT<Station> st_auto_delete;
-
 	if (st != NULL) {
 		if (st->owner != _current_player) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -2025,21 +1985,19 @@
 		if (st->dock_tile != 0) return_cmd_error(STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK);
 	} else {
 		/* allocate and initialize new station */
-		st = new Station(tile);
-		if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
-
-		/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
-		st_auto_delete = st;
-
-		Town *t = st->town = ClosestTownFromTile(tile, (uint)-1);
-
-		if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
-			SetBit(t->have_ratings, _current_player);
+		/* allocate and initialize new station */
+		if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
+
+		if (flags & DC_EXEC) {
+			st = new Station();
+
+			st->town = ClosestTownFromTile(tile, UINT_MAX);
+			GenerateStationName(st, tile, STATIONNAMING_DOCK);
+
+			if (IsValidPlayer(_current_player)) {
+				SetBit(st->town->have_ratings, _current_player);
+			}
 		}
-
-		st->sign.width_1 = 0;
-
-		if (!GenerateStationName(st, tile, STATIONNAMING_DOCK)) return CMD_ERROR;
 	}
 
 	if (flags & DC_EXEC) {
@@ -2055,8 +2013,6 @@
 		RebuildStationLists();
 		InvalidateWindow(WC_STATION_LIST, st->owner);
 		InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_SHIPS);
-		/* success, so don't delete the new station */
-		st_auto_delete.Detach();
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.build_dock);
@@ -2182,7 +2138,7 @@
 		DrawGroundSprite(image, HasBit(image, PALETTE_MODIFIER_COLOR) ? palette : PAL_NONE);
 	}
 
-	if (HasCatenary(GetRailType(ti->tile)) && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
+	if (IsRailwayStation(ti->tile) && HasCatenary(GetRailType(ti->tile)) && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
 
 	if (HasBit(roadtypes, ROADTYPE_TRAM)) {
 		Axis axis = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? AXIS_X : AXIS_Y;
@@ -2874,14 +2830,10 @@
 		return;
 	}
 
-	st->town = ClosestTownFromTile(tile, (uint)-1);
+	st->town = ClosestTownFromTile(tile, UINT_MAX);
 	st->sign.width_1 = 0;
 
-	if (!GenerateStationName(st, tile, STATIONNAMING_OILRIG)) {
-		DEBUG(misc, 0, "Can't allocate station-name for oilrig at 0x%X, reverting to oilrig only", tile);
-		delete st;
-		return;
-	}
+	GenerateStationName(st, tile, STATIONNAMING_OILRIG);
 
 	MakeOilrig(tile, st->index);
 
--- a/src/toolbar_gui.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/toolbar_gui.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -315,10 +315,7 @@
 	int dis = ~0;
 
 	FOR_ALL_VEHICLES(v) {
-		if (v->type == veh && v->IsPrimaryVehicle()) {
-			ClrBit(dis, v->owner);
-			break;
-		}
+		if (v->type == veh && v->IsPrimaryVehicle()) ClrBit(dis, v->owner);
 	}
 	PopupMainPlayerToolbMenu(w, 13 + veh, dis);
 }
--- a/src/town.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/town.h	Fri Apr 25 15:20:48 2008 +0000
@@ -124,7 +124,6 @@
 	PlayerByte exclusivity;      ///< which player has exslusivity
 	uint8 exclusive_counter;     ///< months till the exclusivity expires
 	int16 ratings[MAX_PLAYERS];
-	int16 test_rating;
 
 	/* Maximum amount of passengers and mail that can be transported. */
 	uint32 max_pass;
--- a/src/town_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/town_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -31,7 +31,6 @@
 #include "newgrf_house.h"
 #include "newgrf_commons.h"
 #include "newgrf_townname.h"
-#include "misc/autoptr.hpp"
 #include "autoslope.h"
 #include "waypoint.h"
 #include "transparency.h"
@@ -1538,16 +1537,14 @@
 		return_cmd_error(STR_023A_TOO_MANY_TOWNS);
 
 	/* Allocate town struct */
-	Town *t = new Town(tile);
-	if (t == NULL) return_cmd_error(STR_023A_TOO_MANY_TOWNS);
-	AutoPtrT<Town> t_auto_delete = t;
+	if (!Town::CanAllocateItem()) return_cmd_error(STR_023A_TOO_MANY_TOWNS);
 
 	/* Create the town */
 	if (flags & DC_EXEC) {
+		Town *t = new Town(tile);
 		_generating_world = true;
 		DoCreateTown(t, tile, townnameparts, (TownSizeMode)p2, p1);
 		_generating_world = false;
-		t_auto_delete.Detach();
 	}
 	return CommandCost();
 }
@@ -2449,14 +2446,14 @@
 }
 
 static bool _town_rating_test = false;
+std::map<const Town *, int> _town_test_ratings;
 
 void SetTownRatingTestMode(bool mode)
 {
 	static int ref_count = 0;
 	if (mode) {
 		if (ref_count == 0) {
-			Town *t;
-			FOR_ALL_TOWNS(t) t->test_rating = t->ratings[_current_player];
+			_town_test_ratings.empty();
 		}
 		ref_count++;
 	} else {
@@ -2466,6 +2463,17 @@
 	_town_rating_test = !(ref_count == 0);
 }
 
+static int GetRating(const Town *t)
+{
+	if (_town_rating_test) {
+		std::map<const Town *, int>::iterator it = _town_test_ratings.find(t);
+		if (it != _town_test_ratings.end()) {
+			return (*it).second;
+		}
+	}
+	return t->ratings[_current_player];
+}
+
 void ChangeTownRating(Town *t, int add, int max)
 {
 	/* if magic_bulldozer cheat is active, town doesn't penaltize for removing stuff */
@@ -2477,8 +2485,7 @@
 
 	SetBit(t->have_ratings, _current_player);
 
-	int rating = _town_rating_test ? t->test_rating : t->ratings[_current_player];
-
+	int rating = GetRating(t);
 	if (add < 0) {
 		if (rating > max) {
 			rating += add;
@@ -2491,7 +2498,7 @@
 		}
 	}
 	if (_town_rating_test) {
-		t->test_rating = rating;
+		_town_test_ratings[t] = rating;
 	} else {
 		t->ratings[_current_player] = rating;
 	}
@@ -2517,7 +2524,7 @@
 	 */
 	int modemod = _default_rating_settings[_opt.diff.town_council_tolerance][type];
 
-	if ((_town_rating_test ? t->test_rating : t->ratings[_current_player]) < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
+	if (GetRating(t) < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
 		SetDParam(0, t->index);
 		_error_message = STR_2009_LOCAL_AUTHORITY_REFUSES;
 		return false;
--- a/src/train.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/train.h	Fri Apr 25 15:20:48 2008 +0000
@@ -293,7 +293,6 @@
 	void MarkDirty();
 	void UpdateDeltaXY(Direction direction);
 	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); }
 	SpriteID GetImage(Direction direction) const;
--- a/src/train_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/train_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -204,12 +204,24 @@
 		/* Check the v->first cache. */
 		assert(u->First() == v);
 
-		if (!HasBit(EngInfo(u->engine_type)->misc_flags, EF_RAIL_TILTS)) train_can_tilt = false;
-
 		/* update the 'first engine' */
 		u->u.rail.first_engine = v == u ? INVALID_ENGINE : first_engine;
 		u->u.rail.railtype = rvi_u->railtype;
 
+		/* Set user defined data to its default value */
+		u->u.rail.user_def_data = rvi_u->user_def_data;
+	}
+
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
+		/* Update user defined data (must be done before other properties) */
+		u->u.rail.user_def_data = GetVehicleProperty(u, 0x25, u->u.rail.user_def_data);
+	}
+
+	for (Vehicle *u = v; u != NULL; u = u->Next()) {
+		const RailVehicleInfo *rvi_u = RailVehInfo(u->engine_type);
+
+		if (!HasBit(EngInfo(u->engine_type)->misc_flags, EF_RAIL_TILTS)) train_can_tilt = false;
+
 		if (IsTrainEngine(u)) first_engine = u->engine_type;
 
 		/* Cache wagon override sprite group. NULL is returned if there is none */
@@ -218,9 +230,6 @@
 		/* Reset color map */
 		u->colormap = PAL_NONE;
 
-		/* Set user defined data (must be done before other properties) */
-		u->u.rail.user_def_data = GetVehicleProperty(u, 0x25, rvi_u->user_def_data);
-
 		if (rvi_u->visual_effect != 0) {
 			u->u.rail.cached_vis_effect = rvi_u->visual_effect;
 		} else {
@@ -2223,8 +2232,6 @@
 		SND_41_MAGLEV
 	};
 
-	if (IsTileType(this->tile, MP_STATION)) StationAnimationTrigger(NULL, this->tile, STAT_ANIM_TRAIN_DEPARTS);
-
 	if (PlayVehicleSound(this, VSE_START)) return;
 
 	EngineID engtype = this->engine_type;
--- a/src/tunnelbridge_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/tunnelbridge_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -886,8 +886,6 @@
 				}
 			}
 		} else if (!IsInvisibilitySet(TO_CATENARY) && HasCatenary(GetRailType(ti->tile))) {
-			DrawCatenary(ti);
-
 			catenary = true;
 			StartSpriteCombine();
 			DrawCatenaryOnTunnel(ti);
@@ -1089,7 +1087,7 @@
 			StartSpriteCombine();
 		}
 	} else if (HasCatenary(GetRailType(rampsouth))) {
-		DrawCatenary(ti);
+		DrawCatenaryOnBridge(ti);
 	}
 
 	/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
--- a/src/unix.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/unix.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -206,6 +206,8 @@
 #include "debug.h"
 #include "string_func.h"
 
+const char *GetCurrentLocale(const char *param);
+
 #define INTERNALCODE "UTF-8"
 
 /** Try and try to decipher the current locale from environmental
--- a/src/vehicle.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/vehicle.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -30,6 +30,7 @@
 #include "newgrf_callbacks.h"
 #include "newgrf_engine.h"
 #include "newgrf_sound.h"
+#include "newgrf_station.h"
 #include "group.h"
 #include "order_func.h"
 #include "strings_func.h"
@@ -2545,7 +2546,7 @@
 
 	VehiclePayment(this);
 
-	InvalidateWindow(this->GetVehicleListWindowClass(), this->owner);
+	InvalidateWindow(GetWindowClassForVehicleType(this->type), this->owner);
 	InvalidateWindowWidget(WC_VEHICLE_VIEW, this->index, VVW_WIDGET_START_STOP_VEH);
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
@@ -2562,10 +2563,14 @@
 	if (current_order.GetNonStopType() != ONSF_STOP_EVERYWHERE) UpdateVehicleTimetable(this, false);
 
 	current_order.MakeLeaveStation();
-	GetStation(this->last_station_visited)->loading_vehicles.remove(this);
+	Station *st = GetStation(this->last_station_visited);
+	st->loading_vehicles.remove(this);
 
 	HideFillingPercent(this->fill_percent_te_id);
 	this->fill_percent_te_id = INVALID_TE_ID;
+
+	/* Trigger station animation for trains only */
+	if (this->type == VEH_TRAIN && IsTileType(this->tile, MP_STATION)) StationAnimationTrigger(st, this->tile, STAT_ANIM_TRAIN_DEPARTS);
 }
 
 
--- a/src/vehicle_base.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/vehicle_base.h	Fri Apr 25 15:20:48 2008 +0000
@@ -11,7 +11,6 @@
 #include "road_type.h"
 #include "cargo_type.h"
 #include "direction_type.h"
-#include "window_type.h"
 #include "gfx_type.h"
 #include "command_type.h"
 #include "date_type.h"
@@ -371,11 +370,6 @@
 	virtual ExpensesType GetExpenseType(bool income) const { return EXPENSES_OTHER; }
 
 	/**
-	 * Invalidates the vehicle list window of this type of vehicle
-	 */
-	virtual WindowClass GetVehicleListWindowClass() const { return WC_NONE; }
-
-	/**
 	 * Play the sound associated with leaving the station
 	 */
 	virtual void PlayLeaveStationSound() const {}
--- a/src/vehicle_gui.h	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/vehicle_gui.h	Fri Apr 25 15:20:48 2008 +0000
@@ -99,6 +99,22 @@
 	return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
 }
 
+/** Get WindowClass for vehicle list of given vehicle type
+ * @param vt vehicle type to check
+ * @return corresponding window class
+ * @note works only for player buildable vehicle types
+ */
+static inline WindowClass GetWindowClassForVehicleType(VehicleType vt)
+{
+	switch (vt) {
+		default: NOT_REACHED();
+		case VEH_TRAIN:    return WC_TRAINS_LIST;
+		case VEH_ROAD:     return WC_ROADVEH_LIST;
+		case VEH_SHIP:     return WC_SHIPS_LIST;
+		case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
+	}
+}
+
 /* Unified window procedure */
 void ShowVehicleViewWindow(const Vehicle *v);
 
--- a/src/water_cmd.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/water_cmd.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -24,7 +24,6 @@
 #include "industry_map.h"
 #include "newgrf.h"
 #include "newgrf_canal.h"
-#include "misc/autoptr.hpp"
 #include "transparency.h"
 #include "strings_func.h"
 #include "functions.h"
@@ -40,6 +39,7 @@
 #include "airport.h"
 #include "newgrf_cargo.h"
 #include "effectvehicle_func.h"
+#include "oldpool_func.h"
 
 #include "table/sprites.h"
 #include "table/strings.h"
@@ -201,18 +201,16 @@
 	ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(ret)) return CMD_ERROR;
 
-	Depot *depot = new Depot(tile);
-	if (depot == NULL) return CMD_ERROR;
-	AutoPtrT<Depot> d_auto_delete = depot;
+	if (!Depot::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
+		Depot *depot = new Depot(tile);
 		depot->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
 		MakeShipDepot(tile,  _current_player, DEPOT_NORTH, axis, wc1);
 		MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2);
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile2);
-		d_auto_delete.Detach();
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.build_ship_depot);
--- a/src/waypoint.cpp	Fri Apr 25 07:06:57 2008 +0000
+++ b/src/waypoint.cpp	Fri Apr 25 15:20:48 2008 +0000
@@ -18,7 +18,6 @@
 #include "variables.h"
 #include "yapf/yapf.h"
 #include "newgrf.h"
-#include "misc/autoptr.hpp"
 #include "strings_func.h"
 #include "gfx_func.h"
 #include "functions.h"
@@ -191,7 +190,6 @@
 CommandCost CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	Waypoint *wp;
-	AutoPtrT<Waypoint> wp_auto_delete;
 	Slope tileh;
 	Axis axis;
 
@@ -219,35 +217,35 @@
 
 	/* Check if there is an already existing, deleted, waypoint close to us that we can reuse. */
 	wp = FindDeletedWaypointCloseTo(tile);
-	if (wp == NULL) {
-		wp = new Waypoint(tile);
-		if (wp == NULL) return CMD_ERROR;
-
-		wp_auto_delete = wp;
+	if (wp == NULL && !Waypoint::CanAllocateItem()) return CMD_ERROR;
 
-		wp->town_index = INVALID_TOWN;
-		wp->name = NULL;
-		wp->town_cn = 0;
-	} else if (flags & DC_EXEC) {
-		/* Move existing (recently deleted) waypoint to the new location */
+	if (flags & DC_EXEC) {
+		if (wp == NULL) {
+			wp = new Waypoint(tile);
+			if (wp == NULL) return CMD_ERROR;
 
-		/* First we update the destination for all vehicles that
-		 * have the old waypoint in their orders. */
-		Vehicle *v;
-		FOR_ALL_VEHICLES(v) {
-			if (v->type == VEH_TRAIN &&
-					v->First() == v &&
-					v->current_order.IsType(OT_GOTO_WAYPOINT) &&
-					v->dest_tile == wp->xy) {
-				v->dest_tile = tile;
+			wp->town_index = INVALID_TOWN;
+			wp->name = NULL;
+			wp->town_cn = 0;
+		} else {
+			/* Move existing (recently deleted) waypoint to the new location */
+
+			/* First we update the destination for all vehicles that
+			* have the old waypoint in their orders. */
+			Vehicle *v;
+			FOR_ALL_VEHICLES(v) {
+				if (v->type == VEH_TRAIN &&
+						v->First() == v &&
+						v->current_order.IsType(OT_GOTO_WAYPOINT) &&
+						v->dest_tile == wp->xy) {
+					v->dest_tile = tile;
+				}
 			}
+
+			RedrawWaypointSign(wp);
+			wp->xy = tile;
 		}
 
-		RedrawWaypointSign(wp);
-		wp->xy = tile;
-	}
-
-	if (flags & DC_EXEC) {
 		const StationSpec* statspec;
 
 		MakeRailWaypoint(tile, GetTileOwner(tile), axis, GetRailType(tile), wp->index);
@@ -274,7 +272,6 @@
 		UpdateWaypointSign(wp);
 		RedrawWaypointSign(wp);
 		YapfNotifyTrackLayoutChange(tile, AxisToTrack(axis));
-		wp_auto_delete.Detach();
 	}
 
 	return CommandCost(EXPENSES_CONSTRUCTION, _price.build_train_depot);