diff --git a/.gitignore b/.gitignore
index 4bf58b05c1..a6be172bab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ docs/source/*
media/openttd.desktop
media/openttd.desktop.install
objs/*
+projects/.vs
projects/Debug
projects/Release
projects/*.ncb
diff --git a/.hgignore b/.hgignore
index 17b2557f80..3cf61bde69 100644
--- a/.hgignore
+++ b/.hgignore
@@ -22,6 +22,7 @@ Makefile.bundle
media/openttd.desktop
media/openttd.desktop.install
objs/*
+projects/.vs
projects/*.ncb
projects/*.suo
projects/*.sdf
diff --git a/bin/baseset/openttd.grf b/bin/baseset/openttd.grf
index 168d00fbd8..5d124f3f8f 100644
Binary files a/bin/baseset/openttd.grf and b/bin/baseset/openttd.grf differ
diff --git a/bin/baseset/orig_dos.obg b/bin/baseset/orig_dos.obg
index 7222400af0..9d0db3e2af 100644
--- a/bin/baseset/orig_dos.obg
+++ b/bin/baseset/orig_dos.obg
@@ -77,7 +77,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
-ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
+ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/bin/baseset/orig_dos_de.obg b/bin/baseset/orig_dos_de.obg
index 676840f788..754ab5a2d4 100644
--- a/bin/baseset/orig_dos_de.obg
+++ b/bin/baseset/orig_dos_de.obg
@@ -75,7 +75,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
-ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
+ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/bin/baseset/orig_extra.grf b/bin/baseset/orig_extra.grf
index 168c415a5d..728a8b2555 100644
Binary files a/bin/baseset/orig_extra.grf and b/bin/baseset/orig_extra.grf differ
diff --git a/bin/baseset/orig_win.obg b/bin/baseset/orig_win.obg
index 049a3dca9b..ec00781488 100644
--- a/bin/baseset/orig_win.obg
+++ b/bin/baseset/orig_win.obg
@@ -76,7 +76,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
-ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
+ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/changelog.txt b/changelog.txt
index 89b3babf84..8edba15fb4 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,94 @@
+1.7.2 (2017-12-24)
+------------------------------------------------------------------------
+(None)
+
+
+1.7.2-RC1 (2017-12-11)
+------------------------------------------------------------------------
+- Change: When train depots have a horizontal scrollbar, allow scrolling 1 tile beyond the longest train, so you can actually attach a wagon at the end (r27937)
+- Fix: When moving wagons in the depot, the drag highlight did not exactly match the length of the dragged wagon chain (r27936)
+- Fix: [Win32] Right mouse scrolling didn't work properly with the Windows 10 Fall Creators Update [FS#6629] (r27935)
+- Fix: Forest, candyfloss forest and battery farm skipped the first animation frame [FS#6639] (r27932)
+- Fix: Glyphs in range U+0020 to U+00FF may only be defined in orig_extra.grf, not in openttd.grf [FS#6620] (r27915)
+- Fix: 'unban' console command was not handling IPv6 adresses properly (r27914, r27913)
+- Fix: Keep the 'link' between industry chain and smallmap windows whenever possible [FS#6585] (r27905)
+- Fix: When the last vehicle is removed from a shared orders group, hide the 'Stop sharing' button in the vehicle orders window [FS#6593] (r27904)
+- Fix: Tooltip of 'increase service interval' said 'decrease' [FS#6606] (r27895)
+- Fix: Console command parser passed invalid strings to the debug output, if command lines had many parameters [FS#6576] (r27884, r27883)
+
+
+1.7.1 (2017-06-13)
+------------------------------------------------------------------------
+(None)
+
+
+1.7.1-RC1 (2017-05-04)
+------------------------------------------------------------------------
+- Fix: Add missing game script event for ships arriving at a station [FS#6560] (r27859, r27858)
+- Fix: StringID truncation to 16 bits broke string remapping test [FS#6555] (r27851)
+- Fix: Infinite loop in pathfinder when checking safe waiting position from a waypoint [FS#5926] (r27846)
+- Fix: [YAPF] Consider depot as destination before reversing path and applying penalty (r27843)
+- Fix: Don't consider locks or ship depots as clear water when placing industries (r27841)
+- Fix: Small news window's fake caption was not sized to fit its text (r27838)
+- Fix: Black remap did nothing in 8bpp-simple blitter (r27837)
+- Fix: Misaligned resize icon due to widget bounds being inclusive (r27831)
+- Fix: Update viewport sign dimensions when changing GUI zoom level (r27827, r27819)
+- Fix: Vehicle viewport is not user scrollable so flag window as such (r27823)
+- Fix: Allow dropdown to be drawn above origin widget even with scrollbar (r27820)
+- Fix: 32bpp-anim blitters assumed that pitch and width of the screen were equal [FS#6545] (r27796)
+- Fix: Chat text background overflowed due to missing padding [FS#6526] (r27794)
+- Fix: Failed to load lzo compressed savegames sometimes [FS#6450] (r27793)
+- Fix: [Win32] Mark OpenTTD as DPI-aware to avoid OS window scaling that breaks mouse input [FS#6366] (r27791, r27790)
+- Fix: [NewGRF] Get vehicle load amount after executing new cargo trigger [FS#6536] (r27788)
+- Fix: AI configuration changed incorrect parameter when some parameters are hidden [FS#6479] (r27787, r27786)
+- Fix: Buoys not always drawn after being placed depending on zoom level [FS#6508] (r27785)
+- Fix: Allow rail conversion even if ship is on tile [FS#6505] (r27784)
+
+
+1.7.0 (2017-04-01)
+------------------------------------------------------------------------
+(None)
+
+
+1.7.0-RC1 (2017-03-11)
+------------------------------------------------------------------------
+- Feature: [NewGRF] Extend the DCxx range to D800-DFFF (r27769)
+- Feature: [NewGRF, script] Increase the maximum number of GameScript texts to 64k, and NewGRF texts to 512k (r27758)
+- Feature: [NewGRF] CB 37 results 0x0401 and 0x0800-0BFF for improved control of display of input cargos in the industry GUI (r27751)
+- Feature: Sprites missing in outdated basesets are now provided by openttd.grf (r27732, r27731, r27730)
+- Feature: [NewGRF] String command 9A 1E to print the name of a cargo type (r27707, r27706)
+- Feature: [Debug] Assign descriptive names to threads [FS#6471] (r27674, r27673, r27670)
+- Feature: [NewGRF] Allow composing vehicles from multiple sprites (r27668)
+- Change: Enable realistic train and road vehicle acceleration by default (r27760)
+- Change: Hide the drive-in stops from the tram station picker (r27734)
+- Change: Do not count static NewGRF when checking for the maximum number of NewGRFs in a game (r27729)
+- Change: Limit waypoint area by maximum station spread during dragging (r27710)
+- Change: [Build] Re-enable Wnarrowing for gcc 4.9+ [FS#6532] (r27709, r27703)
+- Change: List railtype of rail tiles explicitly in the tile info window (r27686)
+- Change: Re-arrange the autoreplace GUI for trains, and do not filter it by railtype by default (r27683)
+- Change: Various performance improvements to CargoDist and LinkGraphs (r27682, r27681, r27614, r27613, r27612, r27611)
+- Change: Improve randomisation of rough land appearance (r27657)
+- Change: [Build] Enable C++11 for clang 3.3 (r27654)
+- Fix: Insufficient thread synchronisation when switching blitters lead to crashes [FS#6510] (r27775)
+- Fix: Enabling palette animation for 32bpp blitters while paused skipped initialisation of the palette and resulted in black windows [FS#5889] (r27774)
+- Fix: Intro games other than the traditional nightly one would cause townname NewGRFs to not get activated in the game options [FS#5819] (r27772)
+- Fix: Some variables were not reset between loading old savegames, which made loading them fail [FS#6540] (r27770)
+- Fix: Removing secondary roadtypes from bridges was factor 2 too cheap [FS#6538] (r27746)
+- Fix: Extra viewports did not center on the selected tile [FS#6537] (r27743)
+- Fix: [Build] Building on newer OSX versions with newer SDKs [FS#6295, FS#6502] (r27727, r27675)
+- Fix: Improve error message when trying to build rail track over a depot (r27726)
+- Fix: Rescanning NewGRF in-game could break the loaded NewGRF, if very many NewGRF were in use (r27721)
+- Fix: Text could overflow various GUI elements [FS#6527] (r27713)
+- Fix: Memory leak when reloading NewGRF (r27690, r27688, r27687)
+- Fix: When removing objects of bankrupt companies the tiles may revert to canal. In that case also check the ownership of the canal [FS#6511] (r27656)
+- Fix: Make the console file commands operate independent of the save/load GUI (r27645)
+- Fix: When dragging vehicles in group or depot GUI, draw the complete articulated vehicle (r27632)
+- Fix: When dragging multiple vehicles in the depot, make the destination gap as long as the chain instead of just considering the first vehicle (r27629)
+- Fix: [Build] Change the GCC version detection so that it works with two-digit and truncated versions [FS#6487] (r27623, r27616)
+- Fix: Do not hide filtered and highlighted industries by overlapping tiles in the zoomed-out smallmap (r27622, r27621, r27620)
+- Fix: [Script] Kill scripts, when a non-suspendable valuator call takes way too long [FS#6473] (r27594)
+
+
1.6.1 (2016-07-01)
------------------------------------------------------------------------
- Fix: Compilation and optimisation issues with GCC6 (r27606, r27605, r27595)
diff --git a/media/extra_grf/airports.nfo b/media/extra_grf/airports.nfo
index 8feb813baf..45cd25de04 100644
--- a/media/extra_grf/airports.nfo
+++ b/media/extra_grf/airports.nfo
@@ -23,3 +23,16 @@
-1 sprites/airports.png 8bpp 82 88 64 31 -31 0 normal
-1 sprites/airports.png 8bpp 162 88 64 31 -31 0 normal
-1 sprites/airports.png 8bpp 242 88 64 31 -31 0 normal
+ -1 * 0 0C "Climate specific sprites by PaulC"
+ -1 * 0 07 83 01 \7! 01 03
+ -1 * 0 05 90 02 0D
+ -1 sprites/airports.png 8bpp 320 88 64 31 -31 0 normal
+ -1 sprites/airports.png 8bpp 400 88 64 31 -31 0 normal
+ -1 * 0 07 83 01 \7! 02 03
+ -1 * 0 05 90 02 0D
+ -1 sprites/airports.png 8bpp 480 88 64 31 -31 0 normal
+ -1 sprites/airports.png 8bpp 560 88 64 31 -31 0 normal
+ -1 * 0 07 83 01 \7! 03 03
+ -1 * 0 05 90 02 0D
+ -1 sprites/airports.png 8bpp 640 88 64 31 -31 0 normal
+ -1 sprites/airports.png 8bpp 720 88 64 31 -31 0 normal
diff --git a/media/extra_grf/airports.png b/media/extra_grf/airports.png
index fd63355b1f..5fb9618bc5 100644
Binary files a/media/extra_grf/airports.png and b/media/extra_grf/airports.png differ
diff --git a/media/extra_grf/airports_orig_extra.nfo b/media/extra_grf/airports_orig_extra.nfo
new file mode 100644
index 0000000000..f2a8dc8327
--- /dev/null
+++ b/media/extra_grf/airports_orig_extra.nfo
@@ -0,0 +1,12 @@
+//
+// $Id$
+//
+// This file is part of OpenTTD.
+// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see .
+//
+ -1 * 0 0C "Climate specific airport sprite by PaulC"
+ -1 * 0 07 83 01 \7! 03 02
+ -1 * 0 0A 01 01 2F 08
+ -1 sprites/airports.png 8bpp 20 170 42 39 -19 -21 normal
diff --git a/media/extra_grf/chars.nfo b/media/extra_grf/chars.nfo
index 26db641b35..32462f8c1c 100644
--- a/media/extra_grf/chars.nfo
+++ b/media/extra_grf/chars.nfo
@@ -8,245 +8,7 @@
//
-1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
-// Replace original characters
-
- -1 * 5 0A 01 02 41 00
- -1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
- -1 * 5 0A 01 02 86 00
- -1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
- -1 * 5 0A 01 01 8A 00
- -1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
- -1 * 5 0A 01 01 A0 00
- -1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
- -1 * 5 0A 01 04 A2 00
- -1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
- -1 * 5 0A 01 06 A7 00
- -1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
- -1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
- -1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
- -1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
- -1 * 5 0A 01 03 AE 00
- -1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
- -1 * 5 0A 01 05 B3 00
- -1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
- -1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
- -1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
- -1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
- -1 * 5 0A 01 03 BB 00
- -1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
- -1 * 5 0A 01 01 BF 00
- -1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
- -1 * 5 0A 01 05 C1 00
- -1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
- -1 * 5 0A 01 01 C7 00
- -1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
- -1 * 5 0A 01 03 CA 00
- -1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
- -1 * 5 0A 01 04 CE 00
- -1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
- -1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
- -1 * 5 0A 01 05 D3 00
- -1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
- -1 * 5 0A 01 03 DB 00
- -1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
- -1 * 5 0A 01 02 DF 00
- -1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
- -1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
- -1 * 5 0A 01 01 22 01
- -1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
- -1 * 5 0A 01 01 7D 01
- -1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
- -1 * 5 0A 01 02 80 01
- -1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
- -1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
- -1 * 5 0A 01 01 89 01
- -1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
- -1 * 5 0A 01 01 9F 01
- -1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
- -1 * 5 0A 01 01 A9 01
- -1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
- -1 * 5 0A 01 02 BF 01
- -1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
- -1 * 5 0A 01 01 02 02
- -1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
- -1 * 5 0A 01 01 41 02
- -1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
- -1 * 5 0A 01 06 46 02
- -1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
- -1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
- -1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
- -1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
- -1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
- -1 * 5 0A 01 01 50 02
- -1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
- -1 * 5 0A 01 04 52 02
- -1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
- -1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
- -1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
- -1 * 5 0A 01 01 5C 02
- -1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
- -1 * 5 0A 01 01 60 02
- -1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
- -1 * 5 0A 01 07 62 02
- -1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
- -1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
- -1 * 5 0A 01 18 6A 02
- -1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
- -1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
- -1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
- -1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
- -1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
- -1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
- -1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
- -1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
- -1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
- -1 * 5 0A 01 01 85 02
- -1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
- -1 * 5 0A 01 01 88 02
- -1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
- -1 * 5 0A 01 02 92 02
- -1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
- -1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
- -1 * 5 0A 01 01 97 02
- -1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
- -1 * 5 0A 01 02 99 02
- -1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
- -1 * 5 0A 01 01 A0 02
- -1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
-
-// New characters, all fonts except monospaced
-
-// U+007B: Left Curly Bracket
-// U+007C: Vertical Line
-// U+007D: Right Curly Bracket
-// U+007E: Tilde
- -1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
- -1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
- -1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
- -1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
- -1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
- -1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
- -1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
- -1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
- -1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
- -1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
-
-// U+007F: No-Break Space
- -1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
- -1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
- -1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
- -1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
-
-// U+00AA: Feminine Ordinal Indicator
- -1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
- -1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
-
-// U+00AC: Not Sign
-// U+00AD: Soft Hyphen
- -1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
- -1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
- -1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
- -1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
-
-// U+00AF: Macron
- -1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
- -1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
-
-// U+00B4: Acute Accent
-// U+00B5: Micro Sign
-// U+00B6: Pilcrow Sign
-// U+00B7: Middle Dot
-// U+00B8: Cedilla
-// U+00B9: Superscript One
- -1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
- -1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
- -1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
- -1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
- -1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
- -1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
- -1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
- -1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
- -1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
- -1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
- -1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
- -1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
- -1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
- -1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
- -1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
- -1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
- -1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
- -1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
-
-// U+00BC: Vulgar Fraction One Quarter
-// U+00BD: Vulgar Fraction One Half
- -1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
- -1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
- -1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
- -1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
- -1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
- -1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
- -1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
+// Note: Characters in range U+0020..U+00FF may only be defined in chars_orig_extra.nfo.
// New characters, all fonts
diff --git a/media/extra_grf/chars_orig_extra.nfo b/media/extra_grf/chars_orig_extra.nfo
new file mode 100644
index 0000000000..7979e79450
--- /dev/null
+++ b/media/extra_grf/chars_orig_extra.nfo
@@ -0,0 +1,249 @@
+//
+// $Id$
+//
+// This file is part of OpenTTD.
+// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see .
+//
+ -1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
+
+// Replace original characters
+
+ -1 * 5 0A 01 02 41 00
+ -1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
+ -1 * 5 0A 01 02 86 00
+ -1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
+ -1 * 5 0A 01 01 8A 00
+ -1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
+ -1 * 5 0A 01 01 A0 00
+ -1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
+ -1 * 5 0A 01 04 A2 00
+ -1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
+ -1 * 5 0A 01 06 A7 00
+ -1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
+ -1 * 5 0A 01 03 AE 00
+ -1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
+ -1 * 5 0A 01 05 B3 00
+ -1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
+ -1 * 5 0A 01 03 BB 00
+ -1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
+ -1 * 5 0A 01 01 BF 00
+ -1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
+ -1 * 5 0A 01 05 C1 00
+ -1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
+ -1 * 5 0A 01 01 C7 00
+ -1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
+ -1 * 5 0A 01 03 CA 00
+ -1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
+ -1 * 5 0A 01 04 CE 00
+ -1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
+ -1 * 5 0A 01 05 D3 00
+ -1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
+ -1 * 5 0A 01 03 DB 00
+ -1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
+ -1 * 5 0A 01 02 DF 00
+ -1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
+ -1 * 5 0A 01 01 22 01
+ -1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
+ -1 * 5 0A 01 01 7D 01
+ -1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
+ -1 * 5 0A 01 02 80 01
+ -1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
+ -1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
+ -1 * 5 0A 01 01 89 01
+ -1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
+ -1 * 5 0A 01 01 9F 01
+ -1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
+ -1 * 5 0A 01 01 A9 01
+ -1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
+ -1 * 5 0A 01 02 BF 01
+ -1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
+ -1 * 5 0A 01 01 02 02
+ -1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
+ -1 * 5 0A 01 01 41 02
+ -1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
+ -1 * 5 0A 01 06 46 02
+ -1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
+ -1 * 5 0A 01 01 50 02
+ -1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
+ -1 * 5 0A 01 04 52 02
+ -1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
+ -1 * 5 0A 01 01 5C 02
+ -1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
+ -1 * 5 0A 01 01 60 02
+ -1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
+ -1 * 5 0A 01 07 62 02
+ -1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
+ -1 * 5 0A 01 18 6A 02
+ -1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
+ -1 * 5 0A 01 01 85 02
+ -1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
+ -1 * 5 0A 01 01 88 02
+ -1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
+ -1 * 5 0A 01 02 92 02
+ -1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
+ -1 * 5 0A 01 01 97 02
+ -1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
+ -1 * 5 0A 01 02 99 02
+ -1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
+ -1 * 5 0A 01 01 A0 02
+ -1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
+
+// New characters, all fonts except monospaced
+
+// U+007B: Left Curly Bracket
+// U+007C: Vertical Line
+// U+007D: Right Curly Bracket
+// U+007E: Tilde
+ -1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
+ -1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
+ -1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
+ -1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
+
+// U+007F: No-Break Space
+ -1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
+ -1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
+ -1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
+
+// U+00AA: Feminine Ordinal Indicator
+ -1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
+ -1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
+
+// U+00AC: Not Sign
+// U+00AD: Soft Hyphen
+ -1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
+ -1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
+ -1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
+
+// U+00AF: Macron
+ -1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
+ -1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
+
+// U+00B4: Acute Accent
+// U+00B5: Micro Sign
+// U+00B6: Pilcrow Sign
+// U+00B7: Middle Dot
+// U+00B8: Cedilla
+// U+00B9: Superscript One
+ -1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
+ -1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
+ -1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
+ -1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
+ -1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
+ -1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
+ -1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
+ -1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
+
+// U+00BC: Vulgar Fraction One Quarter
+// U+00BD: Vulgar Fraction One Half
+ -1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
+ -1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
+ -1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
+ -1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
+ -1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
+ -1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
diff --git a/media/extra_grf/openttdgui.png b/media/extra_grf/openttdgui.png
index 28ad2fbafe..94871968d3 100644
Binary files a/media/extra_grf/openttdgui.png and b/media/extra_grf/openttdgui.png differ
diff --git a/media/extra_grf/orig_extra.nfo b/media/extra_grf/orig_extra.nfo
index 03a8ff6741..a1173a58c1 100644
--- a/media/extra_grf/orig_extra.nfo
+++ b/media/extra_grf/orig_extra.nfo
@@ -75,8 +75,10 @@
//
// The real data of the GRF is acquired from several subfiles.
//
+#include "chars_orig_extra.nfo"
#include "shore.nfo"
#include "fix_graphics.nfo"
+#include "airports_orig_extra.nfo"
#include "canals_extra.nfo"
#include "rivers/rapids.nfo"
#include "rivers/temperate.nfo"
diff --git a/os/debian/changelog b/os/debian/changelog
index c8cf30794b..ce2582128c 100644
--- a/os/debian/changelog
+++ b/os/debian/changelog
@@ -1,3 +1,39 @@
+openttd (1.7.2-0) unstable; urgency=low
+
+ * New upstream release 1.7.2
+
+ -- OpenTTD Sun, 24 Dec 2017 14:00:00 +0100
+
+openttd (1.7.2~RC1-0) unstable; urgency=low
+
+ * New upstream release 1.7.2-RC1
+
+ -- OpenTTD Mon, 11 Dec 2017 21:30:00 +0100
+
+openttd (1.7.1-0) unstable; urgency=low
+
+ * New upstream release 1.7.1
+
+ -- OpenTTD Tue, 13 Jun 2017 21:00:00 +0200
+
+openttd (1.7.1~RC1-0) unstable; urgency=low
+
+ * New upstream release 1.7.1-RC1
+
+ -- OpenTTD Thu, 04 Mai 2017 21:00:00 +0200
+
+openttd (1.7.0-0) unstable; urgency=low
+
+ * New upstream release 1.7.0
+
+ -- OpenTTD Sat, 01 Apr 2017 19:00:00 +0200
+
+openttd (1.7.0~RC1-0) unstable; urgency=low
+
+ * New upstream release 1.7.0-RC1
+
+ -- OpenTTD Sat, 11 Mar 2017 22:30:00 +0100
+
openttd (1.6.1-0) unstable; urgency=low
* New upstream release 1.6.1
diff --git a/os/debian/copyright b/os/debian/copyright
index ab62f66a42..05cbfc4328 100644
--- a/os/debian/copyright
+++ b/os/debian/copyright
@@ -5,7 +5,7 @@ Source: http://www.openttd.org
Files: *
-Copyright: © 2004-2017 Ludvig Strigeous and others.
+Copyright: © 2004-2018 Ludvig Strigeous and others.
License: GPL-2.0
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2.0 as
diff --git a/os/rpm/openttd.spec b/os/rpm/openttd.spec
index 9685624462..27acc1b7df 100644
--- a/os/rpm/openttd.spec
+++ b/os/rpm/openttd.spec
@@ -2,7 +2,7 @@
# spec file for package openttd
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
-# Copyright (c) 2007-2017 The OpenTTD developers
+# Copyright (c) 2007-2018 The OpenTTD developers
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
diff --git a/projects/generate b/projects/generate
index bd177bf71b..e82559a911 100755
--- a/projects/generate
+++ b/projects/generate
@@ -22,6 +22,15 @@ then
exit 1
fi
+# openttd_vs141.sln is for MSVC 2017
+# openttd_vs141.vcxproj is for MSVC 2017
+# openttd_vs141.vcxproj.filters is for MSVC 2017
+# langs_vs141.vcxproj is for MSVC 2017
+# strgen_vs141.vcxproj is for MSVC 2017
+# strgen_vs141.vcxproj.filters is for MSVC 2017
+# generate_vs141.vcxproj is for MSVC 2017
+# version_vs141.vcxproj is for MSVC 2017
+
# openttd_vs140.sln is for MSVC 2015
# openttd_vs140.vcxproj is for MSVC 2015
# openttd_vs140.vcxproj.filters is for MSVC 2015
@@ -317,15 +326,21 @@ generate "$openttdvcxproj" "openttd_vs100.vcxproj"
generate "$openttdfiles" "openttd_vs100.vcxproj.filters" "$openttdfilters"
generate "$openttdvcxproj" "openttd_vs140.vcxproj"
generate "$openttdfiles" "openttd_vs140.vcxproj.filters" "$openttdfilters"
+generate "$openttdvcxproj" "openttd_vs141.vcxproj"
+generate "$openttdfiles" "openttd_vs141.vcxproj.filters" "$openttdfilters"
generate "$lang" "langs_vs80.vcproj"
generate "$lang" "langs_vs90.vcproj"
generate "$langvcxproj" "langs_vs100.vcxproj"
generate "$langfiles" "langs_vs100.vcxproj.filters"
generate "$langvcxproj" "langs_vs140.vcxproj"
generate "$langfiles" "langs_vs140.vcxproj.filters"
+generate "$langvcxproj" "langs_vs141.vcxproj"
+generate "$langfiles" "langs_vs141.vcxproj.filters"
generate "$settings" "settings_vs80.vcproj" "$settingscommand"
generate "$settings" "settings_vs90.vcproj" "$settingscommand"
generate "$settingsvcxproj" "settings_vs100.vcxproj" "$settingscommand"
generate "$settingsfiles" "settings_vs100.vcxproj.filters"
generate "$settingsvcxproj" "settings_vs140.vcxproj" "$settingscommand"
generate "$settingsfiles" "settings_vs140.vcxproj.filters"
+generate "$settingsvcxproj" "settings_vs141.vcxproj" "$settingscommand"
+generate "$settingsfiles" "settings_vs141.vcxproj.filters"
diff --git a/projects/generate.vbs b/projects/generate.vbs
index 6692b45e7f..a2f4679a69 100755
--- a/projects/generate.vbs
+++ b/projects/generate.vbs
@@ -10,6 +10,15 @@ Option Explicit
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
+' openttd_vs141.sln is for MSVC 2017
+' openttd_vs141.vcxproj is for MSVC 2017
+' openttd_vs141.vcxproj.filters is for MSVC 2017
+' langs_vs141.vcxproj is for MSVC 2017
+' strgen_vs141.vcxproj is for MSVC 2017
+' strgen_vs141.vcxproj.filters is for MSVC 2017
+' generate_vs141.vcxproj is for MSVC 2017
+' version_vs141.vcxproj is for MSVC 2017
+
' openttd_vs140.sln is for MSVC 2015
' openttd_vs140.vcxproj is for MSVC 2015
' openttd_vs140.vcxproj.filters is for MSVC 2015
@@ -380,6 +389,8 @@ generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs100.vcxproj", Null
generate openttdfiles, ROOT_DIR & "/projects/openttd_vs100.vcxproj.filters", openttdfilters
generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs140.vcxproj", Null
generate openttdfiles, ROOT_DIR & "/projects/openttd_vs140.vcxproj.filters", openttdfilters
+generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs141.vcxproj", Null
+generate openttdfiles, ROOT_DIR & "/projects/openttd_vs141.vcxproj.filters", openttdfilters
Dim lang, langvcxproj, langfiles
lang = load_lang_data(ROOT_DIR & "/src/lang", langvcxproj, langfiles)
@@ -389,6 +400,8 @@ generate langvcxproj, ROOT_DIR & "/projects/langs_vs100.vcxproj", Null
generate langfiles, ROOT_DIR & "/projects/langs_vs100.vcxproj.filters", Null
generate langvcxproj, ROOT_DIR & "/projects/langs_vs140.vcxproj", Null
generate langfiles, ROOT_DIR & "/projects/langs_vs140.vcxproj.filters", Null
+generate langvcxproj, ROOT_DIR & "/projects/langs_vs141.vcxproj", Null
+generate langfiles, ROOT_DIR & "/projects/langs_vs141.vcxproj.filters", Null
Dim settings, settingsvcxproj, settingscommand, settingsfiles
settings = load_settings_data(ROOT_DIR & "/src/table", settingsvcxproj, settingscommand, settingsfiles)
@@ -398,3 +411,5 @@ generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs100.vcxproj", setting
generate settingsfiles, ROOT_DIR & "/projects/settings_vs100.vcxproj.filters", Null
generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs140.vcxproj", settingscommand
generate settingsfiles, ROOT_DIR & "/projects/settings_vs140.vcxproj.filters", Null
+generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs141.vcxproj", settingscommand
+generate settingsfiles, ROOT_DIR & "/projects/settings_vs141.vcxproj.filters", Null
diff --git a/projects/generate_vs141.vcxproj b/projects/generate_vs141.vcxproj
new file mode 100644
index 0000000000..2db93cf097
--- /dev/null
+++ b/projects/generate_vs141.vcxproj
@@ -0,0 +1,40 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ generate
+ {2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}
+ generate
+
+
+
+ Utility
+ v141
+
+
+
+
+
+
+
+
+
+
+
+
+ Document
+ Running %27generate.vbs%27 ...
+ cscript "$(ProjectDir)generate.vbs"
+ %(FullPath);%(AdditionalInputs)
+ $(SolutionDir)openttd_vs80.vcproj;$(SolutionDir)openttd_vs90.vcproj;$(SolutionDir)openttd_vs100.vcxproj;$(SolutionDir)openttd_vs100.vcxproj.filters;$(SolutionDir)langs_vs80.vcproj;$(SolutionDir)langs_vs90.vcproj;$(SolutionDir)langs_vs100.vcxproj;%(Outputs)
+
+
+
+
+
+
diff --git a/projects/langs_vs140.vcxproj b/projects/langs_vs140.vcxproj
index b866630d00..317fd34a11 100644
--- a/projects/langs_vs140.vcxproj
+++ b/projects/langs_vs140.vcxproj
@@ -379,7 +379,7 @@
-
+
{a133a442-bd0a-4ade-b117-ad7545e4bdd1}
false
diff --git a/projects/langs_vs140.vcxproj.in b/projects/langs_vs140.vcxproj.in
index f75ef9d6b5..3271fecffa 100644
--- a/projects/langs_vs140.vcxproj.in
+++ b/projects/langs_vs140.vcxproj.in
@@ -50,7 +50,7 @@
!!FILES!!
-
+
{a133a442-bd0a-4ade-b117-ad7545e4bdd1}
false
diff --git a/projects/langs_vs141.vcxproj b/projects/langs_vs141.vcxproj
new file mode 100644
index 0000000000..2444b0e0e7
--- /dev/null
+++ b/projects/langs_vs141.vcxproj
@@ -0,0 +1,390 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ langs
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}
+ langs
+ MakeFileProj
+
+
+
+ Utility
+ false
+ v141
+
+
+
+
+
+
+
+
+
+ ..\bin\lang\
+ ..\objs\langs\
+
+
+
+ Generating strings.h
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table
+
+
+ ./langs.tlb
+
+
+
+
+
+
+ Generating english language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\english.lng;%(Outputs)
+
+
+ Generating afrikaans language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\afrikaans.lng;%(Outputs)
+
+
+ Generating arabic_egypt language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\arabic_egypt.lng;%(Outputs)
+
+
+ Generating basque language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\basque.lng;%(Outputs)
+
+
+ Generating belarusian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\belarusian.lng;%(Outputs)
+
+
+ Generating brazilian_portuguese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\brazilian_portuguese.lng;%(Outputs)
+
+
+ Generating bulgarian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\bulgarian.lng;%(Outputs)
+
+
+ Generating catalan language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\catalan.lng;%(Outputs)
+
+
+ Generating croatian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\croatian.lng;%(Outputs)
+
+
+ Generating czech language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\czech.lng;%(Outputs)
+
+
+ Generating danish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\danish.lng;%(Outputs)
+
+
+ Generating dutch language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\dutch.lng;%(Outputs)
+
+
+ Generating english_AU language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\english_AU.lng;%(Outputs)
+
+
+ Generating english_US language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\english_US.lng;%(Outputs)
+
+
+ Generating esperanto language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\esperanto.lng;%(Outputs)
+
+
+ Generating estonian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\estonian.lng;%(Outputs)
+
+
+ Generating faroese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\faroese.lng;%(Outputs)
+
+
+ Generating finnish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\finnish.lng;%(Outputs)
+
+
+ Generating french language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\french.lng;%(Outputs)
+
+
+ Generating gaelic language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\gaelic.lng;%(Outputs)
+
+
+ Generating galician language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\galician.lng;%(Outputs)
+
+
+ Generating german language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\german.lng;%(Outputs)
+
+
+ Generating greek language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\greek.lng;%(Outputs)
+
+
+ Generating hebrew language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\hebrew.lng;%(Outputs)
+
+
+ Generating hungarian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\hungarian.lng;%(Outputs)
+
+
+ Generating icelandic language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\icelandic.lng;%(Outputs)
+
+
+ Generating indonesian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\indonesian.lng;%(Outputs)
+
+
+ Generating irish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\irish.lng;%(Outputs)
+
+
+ Generating italian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\italian.lng;%(Outputs)
+
+
+ Generating japanese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\japanese.lng;%(Outputs)
+
+
+ Generating korean language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\korean.lng;%(Outputs)
+
+
+ Generating latin language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\latin.lng;%(Outputs)
+
+
+ Generating latvian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\latvian.lng;%(Outputs)
+
+
+ Generating lithuanian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\lithuanian.lng;%(Outputs)
+
+
+ Generating luxembourgish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\luxembourgish.lng;%(Outputs)
+
+
+ Generating malay language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\malay.lng;%(Outputs)
+
+
+ Generating norwegian_bokmal language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\norwegian_bokmal.lng;%(Outputs)
+
+
+ Generating norwegian_nynorsk language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\norwegian_nynorsk.lng;%(Outputs)
+
+
+ Generating polish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\polish.lng;%(Outputs)
+
+
+ Generating portuguese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\portuguese.lng;%(Outputs)
+
+
+ Generating romanian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\romanian.lng;%(Outputs)
+
+
+ Generating russian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\russian.lng;%(Outputs)
+
+
+ Generating serbian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\serbian.lng;%(Outputs)
+
+
+ Generating simplified_chinese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\simplified_chinese.lng;%(Outputs)
+
+
+ Generating slovak language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\slovak.lng;%(Outputs)
+
+
+ Generating slovenian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\slovenian.lng;%(Outputs)
+
+
+ Generating spanish_MX language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\spanish_MX.lng;%(Outputs)
+
+
+ Generating spanish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\spanish.lng;%(Outputs)
+
+
+ Generating swedish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\swedish.lng;%(Outputs)
+
+
+ Generating tamil language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\tamil.lng;%(Outputs)
+
+
+ Generating thai language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\thai.lng;%(Outputs)
+
+
+ Generating traditional_chinese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\traditional_chinese.lng;%(Outputs)
+
+
+ Generating turkish language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\turkish.lng;%(Outputs)
+
+
+ Generating ukrainian language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\ukrainian.lng;%(Outputs)
+
+
+ Generating vietnamese language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\vietnamese.lng;%(Outputs)
+
+
+ Generating welsh language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\welsh.lng;%(Outputs)
+
+
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+
+
+
+
diff --git a/projects/langs_vs141.vcxproj.filters b/projects/langs_vs141.vcxproj.filters
new file mode 100644
index 0000000000..0afc8c969a
--- /dev/null
+++ b/projects/langs_vs141.vcxproj.filters
@@ -0,0 +1,176 @@
+
+
+
+
+ {2a164580-9033-4a01-974b-b21da507efda}
+
+
+
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+ Translations
+
+
+
diff --git a/projects/langs_vs141.vcxproj.filters.in b/projects/langs_vs141.vcxproj.filters.in
new file mode 100644
index 0000000000..0d60ee9595
--- /dev/null
+++ b/projects/langs_vs141.vcxproj.filters.in
@@ -0,0 +1,12 @@
+
+
+
+
+ {2a164580-9033-4a01-974b-b21da507efda}
+
+
+
+
+!!FILES!!
+
+
diff --git a/projects/langs_vs141.vcxproj.in b/projects/langs_vs141.vcxproj.in
new file mode 100644
index 0000000000..b73d52c5c9
--- /dev/null
+++ b/projects/langs_vs141.vcxproj.in
@@ -0,0 +1,61 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ langs
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}
+ langs
+ MakeFileProj
+
+
+
+ Utility
+ false
+ v141
+
+
+
+
+
+
+
+
+
+ ..\bin\lang\
+ ..\objs\langs\
+
+
+
+ Generating strings.h
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table
+
+
+ ./langs.tlb
+
+
+
+
+
+
+ Generating english language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\english.lng;%(Outputs)
+
+!!FILES!!
+
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+
+
+
+
diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj
index f09a83712d..0889e13f4f 100644
--- a/projects/openttd_vs140.vcxproj
+++ b/projects/openttd_vs140.vcxproj
@@ -1311,15 +1311,15 @@
-
+
{0f066b23-18df-4284-8265-f4a5e7e3b966}
false
-
+
{a133a442-bd0a-4ade-b117-ad7545e4bdd1}
false
-
+
{1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
false
diff --git a/projects/openttd_vs140.vcxproj.in b/projects/openttd_vs140.vcxproj.in
index 9d873283fa..98b6481dcd 100644
--- a/projects/openttd_vs140.vcxproj.in
+++ b/projects/openttd_vs140.vcxproj.in
@@ -327,15 +327,15 @@
-
+
{0f066b23-18df-4284-8265-f4a5e7e3b966}
false
-
+
{a133a442-bd0a-4ade-b117-ad7545e4bdd1}
false
-
+
{1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
false
diff --git a/projects/openttd_vs141.sln b/projects/openttd_vs141.sln
new file mode 100644
index 0000000000..e314c628a7
--- /dev/null
+++ b/projects/openttd_vs141.sln
@@ -0,0 +1,94 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd_vs141.vcxproj", "{668328A0-B40E-4CDB-BD72-D0064424414A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {0817F629-589E-4A3B-B81A-8647BC571E35} = {0817F629-589E-4A3B-B81A-8647BC571E35}
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen_vs141.vcxproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "langs", "langs_vs141.vcxproj", "{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version_vs141.vcxproj", "{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate", "generate_vs141.vcxproj", "{2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settings", "settings_vs141.vcxproj", "{0817F629-589E-4A3B-B81A-8647BC571E35}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7} = {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settingsgen", "settingsgen_vs141.vcxproj", "{E9548DE9-F089-49B7-93A6-30BE2CC311C7}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Debug|Win32.Build.0 = Debug|Win32
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Debug|x64.ActiveCfg = Debug|x64
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Debug|x64.Build.0 = Debug|x64
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Release|Win32.ActiveCfg = Release|Win32
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Release|Win32.Build.0 = Release|Win32
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Release|x64.ActiveCfg = Release|x64
+ {668328A0-B40E-4CDB-BD72-D0064424414A}.Release|x64.Build.0 = Release|x64
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug|Win32.Build.0 = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug|x64.ActiveCfg = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug|x64.Build.0 = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release|Win32.ActiveCfg = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release|Win32.Build.0 = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release|x64.ActiveCfg = Debug|Win32
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release|x64.Build.0 = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug|Win32.Build.0 = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug|x64.ActiveCfg = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug|x64.Build.0 = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|Win32.ActiveCfg = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|Win32.Build.0 = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.ActiveCfg = Debug|Win32
+ {0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.Build.0 = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.Build.0 = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.ActiveCfg = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.Build.0 = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.ActiveCfg = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.Build.0 = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.ActiveCfg = Debug|Win32
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.Build.0 = Debug|Win32
+ {2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}.Debug|x64.ActiveCfg = Debug|Win32
+ {2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}.Release|Win32.ActiveCfg = Debug|Win32
+ {2F31FD79-D1AC-43C4-89F3-B0D5E4E53E34}.Release|x64.ActiveCfg = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Debug|Win32.Build.0 = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Debug|x64.ActiveCfg = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Debug|x64.Build.0 = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Release|Win32.ActiveCfg = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Release|Win32.Build.0 = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Release|x64.ActiveCfg = Debug|Win32
+ {0817F629-589E-4A3B-B81A-8647BC571E35}.Release|x64.Build.0 = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Debug|Win32.Build.0 = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Debug|x64.ActiveCfg = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Debug|x64.Build.0 = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Release|Win32.ActiveCfg = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Release|Win32.Build.0 = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Release|x64.ActiveCfg = Debug|Win32
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}.Release|x64.Build.0 = Debug|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(DPCodeReviewSolutionGUID) = preSolution
+ DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
+ EndGlobalSection
+EndGlobal
diff --git a/projects/openttd_vs141.vcxproj b/projects/openttd_vs141.vcxproj
new file mode 100644
index 0000000000..c735569b33
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj
@@ -0,0 +1,1323 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ openttd
+ {668328A0-B40E-4CDB-BD72-D0064424414A}
+ openttd
+
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(ProjectDir)..\bin
+
+
+
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ 4Bytes
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ false
+
+
+ MachineX86
+ true
+ 5.01
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ false
+
+
+ MachineX86
+ 5.01
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ X64
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ Default
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ MachineX64
+ true
+ 5.02
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ X64
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+
+
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ Cdecl
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ MachineX64
+ 5.02
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0f066b23-18df-4284-8265-f4a5e7e3b966}
+ false
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+ {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
+ false
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.filters b/projects/openttd_vs141.vcxproj.filters
new file mode 100644
index 0000000000..06800ffdaf
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj.filters
@@ -0,0 +1,3050 @@
+
+
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000000}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000001}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000002}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000003}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000004}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000005}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000006}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000007}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000008}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000009}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000010}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000011}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000012}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000013}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000014}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000015}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000016}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000017}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000018}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000019}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000020}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000021}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000022}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000023}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000024}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000025}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000026}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000027}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000028}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000029}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000030}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000031}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000032}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ MD5
+
+
+ MD5
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI API
+
+
+ Game API
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Threading
+
+
+ Threading
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.filters.in b/projects/openttd_vs141.vcxproj.filters.in
new file mode 100644
index 0000000000..cda491072c
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj.filters.in
@@ -0,0 +1,13 @@
+
+
+
+!!FILTERS!!
+
+
+!!FILES!!
+
+
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.in b/projects/openttd_vs141.vcxproj.in
new file mode 100644
index 0000000000..9afda46b7c
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj.in
@@ -0,0 +1,344 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ openttd
+ {668328A0-B40E-4CDB-BD72-D0064424414A}
+ openttd
+
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(ProjectDir)..\bin
+
+
+
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ 4Bytes
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ false
+
+
+ MachineX86
+ true
+ 5.01
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ false
+
+
+ MachineX86
+ 5.01
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ X64
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ Default
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ MachineX64
+ true
+ 5.02
+
+
+ PerMonitorHighDPIAware
+
+
+
+
+ X64
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+
+
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ Cdecl
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ MachineX64
+ 5.02
+
+
+ PerMonitorHighDPIAware
+
+
+
+!!FILES!!
+
+
+
+
+
+
+
+ {0f066b23-18df-4284-8265-f4a5e7e3b966}
+ false
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+ {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
+ false
+
+
+
+
diff --git a/projects/settings_vs141.vcxproj b/projects/settings_vs141.vcxproj
new file mode 100644
index 0000000000..ed6f5bab18
--- /dev/null
+++ b/projects/settings_vs141.vcxproj
@@ -0,0 +1,54 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ settings
+ {0817F629-589E-4A3B-B81A-8647BC571E35}
+ settings
+
+
+
+ Makefile
+ v141
+
+
+
+
+
+
+
+
+
+..\objs\settings\settings_gen.exe -o ..\objs\settings\table\settings.h -b ..\src\table\settings.h.preamble -a ..\src\table\settings.h.postamble ..\src\table\company_settings.ini ..\src\table\currency_settings.ini ..\src\table\gameopt_settings.ini ..\src\table\misc_settings.ini ..\src\table\settings.ini ..\src\table\win32_settings.ini ..\src\table\window_settings.ini
+
+
+
+ ..\objs\settings\table\
+ ..\objs\settings\table\
+ $(SettingsCommandLine)
+ $(SettingsCommandLine)
+ del ..\objs\settings\table\settings.h
+ ..\objs\settings\table\settings.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/settings_vs141.vcxproj.filters b/projects/settings_vs141.vcxproj.filters
new file mode 100644
index 0000000000..8caf9fa0a6
--- /dev/null
+++ b/projects/settings_vs141.vcxproj.filters
@@ -0,0 +1,35 @@
+
+
+
+
+ {21deca6c-8df4-4f34-9dad-17d7781cd5a0}
+
+
+
+
+ INI
+
+
+ INI
+
+
+ INI
+
+
+ INI
+
+
+ INI
+
+
+ INI
+
+
+ INI
+
+
+
+
+
+
+
diff --git a/projects/settings_vs141.vcxproj.filters.in b/projects/settings_vs141.vcxproj.filters.in
new file mode 100644
index 0000000000..08f90670d2
--- /dev/null
+++ b/projects/settings_vs141.vcxproj.filters.in
@@ -0,0 +1,15 @@
+
+
+
+
+ {21deca6c-8df4-4f34-9dad-17d7781cd5a0}
+
+
+
+!!FILES!!
+
+
+
+
+
+
diff --git a/projects/settings_vs141.vcxproj.in b/projects/settings_vs141.vcxproj.in
new file mode 100644
index 0000000000..e4a60227cb
--- /dev/null
+++ b/projects/settings_vs141.vcxproj.in
@@ -0,0 +1,48 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ settings
+ {0817F629-589E-4A3B-B81A-8647BC571E35}
+ settings
+
+
+
+ Makefile
+ v141
+
+
+
+
+
+
+
+
+
+!!FILTERS!!
+
+
+
+ ..\objs\settings\table\
+ ..\objs\settings\table\
+ $(SettingsCommandLine)
+ $(SettingsCommandLine)
+ del ..\objs\settings\table\settings.h
+ ..\objs\settings\table\settings.h
+
+
+!!FILES!!
+
+
+
+
+
+
+
+
+
diff --git a/projects/settingsgen_vs141.vcxproj b/projects/settingsgen_vs141.vcxproj
new file mode 100644
index 0000000000..2b356f2eab
--- /dev/null
+++ b/projects/settingsgen_vs141.vcxproj
@@ -0,0 +1,83 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ settingsgen
+ {E9548DE9-F089-49B7-93A6-30BE2CC311C7}
+ settings
+
+
+
+ Application
+ MultiByte
+ v141
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ ..\objs\settings\
+ ..\objs\settings\
+ settings_gen
+
+
+
+
+
+
+
+ %(Inputs)
+
+
+ MinSpace
+ Size
+ SETTINGSGEN;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ All
+ $(IntDir)$(TargetName).pdb
+ Level3
+ true
+ ProgramDatabase
+ MultiThreadedDebug
+
+
+ $(OutDir)settings_gen.exe
+ true
+ false
+
+
+ Console
+ 5.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/settingsgen_vs141.vcxproj.filters b/projects/settingsgen_vs141.vcxproj.filters
new file mode 100644
index 0000000000..c8afe0c8ed
--- /dev/null
+++ b/projects/settingsgen_vs141.vcxproj.filters
@@ -0,0 +1,32 @@
+
+
+
+
+ {a4678737-b3b3-4be5-9db1-fa6ccd164c59}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/strgen_vs141.vcxproj b/projects/strgen_vs141.vcxproj
new file mode 100644
index 0000000000..addc6f10a5
--- /dev/null
+++ b/projects/strgen_vs141.vcxproj
@@ -0,0 +1,95 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ strgen
+ {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
+ strgen
+
+
+
+ Application
+ false
+ MultiByte
+ v141
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\strgen\
+ $(SolutionDir)..\objs\strgen\
+ false
+ AllRules.ruleset
+
+
+
+
+
+ .\Debug/strgen.tlb
+
+
+
+
+ /MP %(AdditionalOptions)
+ MinSpace
+ Size
+ STRGEN;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ Default
+ MultiThreadedDebug
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ true
+ true
+ ProgramDatabase
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x041d
+
+
+ true
+ true
+ $(IntDir)strgen.pdb
+ Console
+ false
+
+
+ MachineX86
+ 5.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/strgen_vs141.vcxproj.filters b/projects/strgen_vs141.vcxproj.filters
new file mode 100644
index 0000000000..58864ee691
--- /dev/null
+++ b/projects/strgen_vs141.vcxproj.filters
@@ -0,0 +1,35 @@
+
+
+
+
+ {5894294c-d4dc-41f0-be31-e56cff4e0405}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/version_vs141.vcxproj b/projects/version_vs141.vcxproj
new file mode 100644
index 0000000000..5d8ee8c74f
--- /dev/null
+++ b/projects/version_vs141.vcxproj
@@ -0,0 +1,42 @@
+
+
+
+
+ Debug
+ Win32
+
+
+
+ version
+ {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}
+ version
+
+
+
+ Makefile
+ MultiByte
+ v141
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\version\
+ $(SolutionDir)..\objs\version\
+ cscript "$(ProjectDir)/determineversion.vbs"
+ cscript "$(ProjectDir)/determineversion.vbs"
+ ..\src\rev.cpp
+ del ..\src\rev.cpp
+
+
+
+
+
+
+
+
+
diff --git a/readme.txt b/readme.txt
index e378bd5d22..5f6598b9a2 100644
--- a/readme.txt
+++ b/readme.txt
@@ -680,6 +680,7 @@ http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip
X.X) Credits
---- -------
The OpenTTD team (in alphabetical order):
+ Grzegorz Duczyński (adf88) - General coding (since 1.7.2)
Albert Hofkamp (Alberth) - GUI expert (since 0.7)
Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
diff --git a/src/company_manager_face.h b/src/company_manager_face.h
index 993e539cc7..511f85b7d5 100644
--- a/src/company_manager_face.h
+++ b/src/company_manager_face.h
@@ -78,7 +78,7 @@ static const CompanyManagerFaceBitsInfo _cmf_info[] = {
/* CMFV_MOUSTACHE */ { 13, 2, { 3, 0, 3, 0 }, { 0x367, 0, 0x397, 0 } }, ///< Depends on CMFV_HAS_MOUSTACHE
/* CMFV_LIPS */ { 13, 4, { 12, 10, 9, 9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, ///< Depends on !CMFV_HAS_MOUSTACHE
/* CMFV_NOSE */ { 17, 3, { 8, 4, 4, 5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, ///< Depends on !CMFV_HAS_MOUSTACHE
- /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } },
+ /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 5 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } },
/* CMFV_JACKET */ { 24, 2, { 3, 3, 3, 3 }, { 0x36B, 0x378, 0x36B, 0x378 } },
/* CMFV_COLLAR */ { 26, 2, { 4, 4, 4, 4 }, { 0x36E, 0x37B, 0x36E, 0x37B } },
/* CMFV_TIE_EARRING */ { 28, 3, { 6, 3, 6, 3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, ///< Depends on CMFV_HAS_TIE_EARRING
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 9cfc8e8f9d..3b65224de8 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -553,29 +553,36 @@ DEF_CONSOLE_CMD(ConBan)
DEF_CONSOLE_CMD(ConUnBan)
{
-
if (argc == 0) {
- IConsoleHelp("Unban a client from a network game. Usage: 'unban '");
+ IConsoleHelp("Unban a client from a network game. Usage: 'unban '");
IConsoleHelp("For a list of banned IP's, see the command 'banlist'");
return true;
}
if (argc != 2) return false;
- uint index = (strchr(argv[1], '.') == NULL) ? atoi(argv[1]) : 0;
- index--;
- uint i = 0;
-
- for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++, i++) {
- if (strcmp(_network_ban_list[i], argv[1]) == 0 || index == i) {
- free(_network_ban_list[i]);
- _network_ban_list.Erase(iter);
- IConsolePrint(CC_DEFAULT, "IP unbanned.");
- return true;
- }
+ /* Try by IP. */
+ uint index;
+ for (index = 0; index < _network_ban_list.Length(); index++) {
+ if (strcmp(_network_ban_list[index], argv[1]) == 0) break;
+ }
+
+ /* Try by index. */
+ if (index >= _network_ban_list.Length()) {
+ index = atoi(argv[1]) - 1U; // let it wrap
+ }
+
+ if (index < _network_ban_list.Length()) {
+ char msg[64];
+ seprintf(msg, lastof(msg), "Unbanned %s", _network_ban_list[index]);
+ IConsolePrint(CC_DEFAULT, msg);
+ free(_network_ban_list[index]);
+ _network_ban_list.Erase(_network_ban_list.Get(index));
+ } else {
+ IConsolePrint(CC_DEFAULT, "Invalid list index or IP not in ban-list.");
+ IConsolePrint(CC_DEFAULT, "For a list of banned IP's, see the command 'banlist'");
}
- IConsolePrint(CC_DEFAULT, "IP not in ban-list.");
return true;
}
diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp
index df9142462b..2149d1d269 100644
--- a/src/core/math_func.hpp
+++ b/src/core/math_func.hpp
@@ -318,6 +318,18 @@ static inline uint CeilDiv(uint a, uint b)
return (a + b - 1) / b;
}
+/**
+ * Computes ceil(a / b) for non-negative a and b (templated).
+ * @param a Numerator
+ * @param b Denominator
+ * @return Quotient, rounded up
+ */
+template
+static inline T CeilDivT(T a, T b)
+{
+ return (a + b - 1) / b;
+}
+
/**
* Computes ceil(a / b) * b for non-negative a and b.
* @param a Numerator
@@ -329,6 +341,18 @@ static inline uint Ceil(uint a, uint b)
return CeilDiv(a, b) * b;
}
+/**
+ * Computes ceil(a / b) * b for non-negative a and b (templated).
+ * @param a Numerator
+ * @param b Denominator
+ * @return a rounded up to the nearest multiple of b.
+ */
+template
+static inline T CeilT(T a, T b)
+{
+ return CeilDivT(a, b) * b;
+}
+
/**
* Computes round(a / b) for signed a and unsigned b.
* @param a Numerator
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp
index 15291f6b63..14461d8817 100644
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -383,12 +383,13 @@ struct DepotWindow : Window {
int col = _colour_gradient[wid->colour][4];
int image_left = rtl ? r.left + this->count_width : r.left + this->header_width;
int image_right = rtl ? r.right - this->header_width : r.right - this->count_width;
+ int first_line = w + (-this->hscroll->GetPosition()) % w;
if (rtl) {
- for (int x = image_right - w; x > image_left; x -= w) {
+ for (int x = image_right - first_line; x >= image_left; x -= w) {
GfxDrawLine(x, r.top, x, r.bottom, col, 1, 3);
}
} else {
- for (int x = image_left + w; x < image_right; x += w) {
+ for (int x = image_left + first_line; x <= image_right; x += w) {
GfxDrawLine(x, r.top, x, r.bottom, col, 1, 3);
}
}
@@ -734,7 +735,8 @@ struct DepotWindow : Window {
}
/* Always have 1 empty row, so people can change the setting of the train */
this->vscroll->SetCount(this->vehicle_list.Length() + this->wagon_list.Length() + 1);
- this->hscroll->SetCount(max_width);
+ /* Always make it longer than the longest train, so you can attach vehicles at the end, and also see the next vertical tile separator line */
+ this->hscroll->SetCount(max_width + ScaleGUITrad(2 * VEHICLEINFO_FULL_VEHICLE_WIDTH + 1));
} else {
this->vscroll->SetCount(CeilDiv(this->vehicle_list.Length(), this->num_columns));
}
diff --git a/src/economy.cpp b/src/economy.cpp
index 0106e87e14..e97f61d6e9 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -654,12 +654,16 @@ static void CompanyCheckBankrupt(Company *c)
*/
static void CompaniesGenStatistics()
{
- Station *st;
+ /* Check for bankruptcy each month */
+ Company *c;
+ FOR_ALL_COMPANIES(c) {
+ CompanyCheckBankrupt(c);
+ }
Backup cur_company(_current_company, FILE_LINE);
- Company *c;
if (!_settings_game.economy.infrastructure_maintenance) {
+ Station *st;
FOR_ALL_STATIONS(st) {
cur_company.Change(st->owner);
CommandCost cost(EXPENSES_PROPERTY, _price[PR_STATION_VALUE] >> 1);
@@ -688,11 +692,6 @@ static void CompaniesGenStatistics()
}
cur_company.Restore();
- /* Check for bankruptcy each month */
- FOR_ALL_COMPANIES(c) {
- CompanyCheckBankrupt(c);
- }
-
/* Only run the economic statics and update company stats every 3rd month (1st of quarter). */
if (!HasBit(1 << 0 | 1 << 3 | 1 << 6 | 1 << 9, _cur_month)) return;
diff --git a/src/fileio.cpp b/src/fileio.cpp
index 526f5b184f..0590efd3a7 100644
--- a/src/fileio.cpp
+++ b/src/fileio.cpp
@@ -584,32 +584,6 @@ bool AppendPathSeparator(char *buf, const char *last)
return true;
}
-/**
- * Allocates and files a variable with the full path
- * based on the given directory.
- * @param dir the directory to base the path on
- * @return the malloced full path
- */
-char *BuildWithFullPath(const char *dir)
-{
- char *dest = MallocT(MAX_PATH);
- char *last = dest + MAX_PATH - 1;
- strecpy(dest, dir, last);
-
- /* Check if absolute or relative path */
- const char *s = strchr(dest, PATHSEPCHAR);
-
- /* Add absolute path */
- if (s == NULL || dest != s) {
- if (getcwd(dest, MAX_PATH) == NULL) *dest = '\0';
- AppendPathSeparator(dest, last);
- strecat(dest, dir, last);
- }
- AppendPathSeparator(dest, last);
-
- return dest;
-}
-
/**
* Find the first directory in a tar archive.
* @param tarname the name of the tar archive to look in.
diff --git a/src/industry.h b/src/industry.h
index 5e5d046880..9b185efc4b 100644
--- a/src/industry.h
+++ b/src/industry.h
@@ -66,7 +66,6 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> {
Date last_cargo_accepted_at; ///< Last day cargo was accepted by this industry
byte selected_layout; ///< Which tile layout was used when creating the industry
- byte random_triggers; ///< Triggers for the random
uint16 random; ///< Random value used for randomisation of all kinds of things
PersistentStorage *psa; ///< Persistent storage for NewGRF industries.
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index b20bc57b7a..cb13649aa7 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -491,7 +491,12 @@ static CommandCost ClearTile_Industry(TileIndex tile, DoCommandFlag flags)
return CommandCost(EXPENSES_CONSTRUCTION, indspec->GetRemovalCost());
}
-static void TransportIndustryGoods(TileIndex tile)
+/**
+ * Move produced cargo from industry to nearby stations.
+ * @param tile Industry tile
+ * @return true if any cargo was moved.
+ */
+static bool TransportIndustryGoods(TileIndex tile)
{
Industry *i = Industry::GetByTile(tile);
const IndustrySpec *indspec = GetIndustrySpec(i->type);
@@ -516,16 +521,7 @@ static void TransportIndustryGoods(TileIndex tile)
}
}
- if (moved_cargo && !StartStopIndustryTileAnimation(i, IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
- uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
-
- if (newgfx != INDUSTRYTILE_NOANIM) {
- ResetIndustryConstructionStage(tile);
- SetIndustryCompleted(tile);
- SetIndustryGfx(tile, newgfx);
- MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
- }
- }
+ return moved_cargo;
}
@@ -810,7 +806,17 @@ static void TileLoop_Industry(TileIndex tile)
if (_game_mode == GM_EDITOR) return;
- TransportIndustryGoods(tile);
+ if (TransportIndustryGoods(tile) && !StartStopIndustryTileAnimation(Industry::GetByTile(tile), IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
+ uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
+
+ if (newgfx != INDUSTRYTILE_NOANIM) {
+ ResetIndustryConstructionStage(tile);
+ SetIndustryCompleted(tile);
+ SetIndustryGfx(tile, newgfx);
+ MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
+ return;
+ }
+ }
if (StartStopIndustryTileAnimation(tile, IAT_TILELOOP)) return;
diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp
index 2cff968e0a..1e59f44930 100644
--- a/src/industry_gui.cpp
+++ b/src/industry_gui.cpp
@@ -777,37 +777,30 @@ public:
y += FONT_HEIGHT_NORMAL;
first = false;
}
+ SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name);
+ SetDParam(1, i->accepts_cargo[j]);
+ SetDParam(2, i->incoming_cargo_waiting[j]);
+ SetDParamStr(3, "");
+ StringID str = STR_NULL;
switch (cargo_suffix[j].display) {
- case CSD_CARGO_AMOUNT:
- if (stockpiling) {
- SetDParam(0, i->accepts_cargo[j]);
- SetDParam(1, i->incoming_cargo_waiting[j]);
- DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT);
- break;
- }
+ case CSD_CARGO_AMOUNT_TEXT:
+ SetDParamStr(3, cargo_suffix[j].text);
FALLTHROUGH;
-
- case CSD_CARGO:
- SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name);
- DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO);
+ case CSD_CARGO_AMOUNT:
+ str = stockpiling ? STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT : STR_INDUSTRY_VIEW_ACCEPT_CARGO;
break;
case CSD_CARGO_TEXT:
- SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name);
- SetDParamStr(1, cargo_suffix[j].text);
- DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT);
- break;
-
- case CSD_CARGO_AMOUNT_TEXT:
- SetDParam(0, i->accepts_cargo[j]);
- SetDParam(1, i->incoming_cargo_waiting[j]);
- SetDParamStr(2, cargo_suffix[j].text);
- DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT);
+ SetDParamStr(3, cargo_suffix[j].text);
+ FALLTHROUGH;
+ case CSD_CARGO:
+ str = STR_INDUSTRY_VIEW_ACCEPT_CARGO;
break;
default:
NOT_REACHED();
}
+ DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, str);
y += FONT_HEIGHT_NORMAL;
}
diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt
index 02c5e92135..b7fee9ae8b 100644
--- a/src/lang/afrikaans.txt
+++ b/src/lang/afrikaans.txt
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi
STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Die OpenTTD span
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Die OpenTTD span
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt
index 70e4734099..b026705865 100644
--- a/src/lang/arabic_egypt.txt
+++ b/src/lang/arabic_egypt.txt
@@ -2320,7 +2320,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو
STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2017 فريق النسخة المفتوحة
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2018 فريق النسخة المفتوحة
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
diff --git a/src/lang/basque.txt b/src/lang/basque.txt
index f761d45931..6d80461b68 100644
--- a/src/lang/basque.txt
+++ b/src/lang/basque.txt
@@ -2592,7 +2592,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Konpainia jabe
STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa
diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt
index fc469fe53e..a9824eec67 100644
--- a/src/lang/belarusian.txt
+++ b/src/lang/belarusian.txt
@@ -3020,7 +3020,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на
STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя.
STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2017 Каманда распрацоўнікаў OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2018 Каманда распрацоўнікаў OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню
diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt
index f5ab33faf5..859a6c1afa 100644
--- a/src/lang/brazilian_portuguese.txt
+++ b/src/lang/brazilian_portuguese.txt
@@ -1286,8 +1286,8 @@ STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Aguardar {COMMA
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botão direito
STR_CONFIG_SETTING_POPULATION_IN_LABEL :Exibir população da cidade na janela da cidade: {STRING}
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Exibe a população das cidades nos nomes, no mapa
-STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grossura das linhas nos gráficos: {STRING}
-STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grossura da linha nos gráficos. Linhas finas são mais precisas, enquanto linhas grossas são mais fáceis de distinguir.
+STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Espessura das linhas nos gráficos: {STRING}
+STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Espessura da linha nos gráficos. Linhas finas são mais precisas, enquanto linhas grossas são mais fáceis de distinguir.
STR_CONFIG_SETTING_LANDSCAPE :Terreno: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :O terreno define a jogabilidade básica com diferentes cargas e requerimentos para o crescimento das cidades. NewGRF's e Scripts de Jogo permitem um controle mais fino
@@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Mover a tela com o botão esquerdo: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ativa rolamento do mapa por clique e arraste com o botão esquerdo. Especialmente útil ao usar um touchscreen para o rolamento
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janela com botão direito do mouse: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao clicar com o botão direito do mouse nela. Desativa o tooltip com o botão direito!
STR_CONFIG_SETTING_AUTOSAVE :Auto-salvar: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecione intervalo entre jogos salvos automaticamente
@@ -1536,12 +1538,12 @@ STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Exibe uma janel
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipo de sinal a ser construído: {STRING}
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipo padrão de sinal a se utilizar
STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal
-STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avançado
-STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Avançado de mão única
+STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :De trajeto
+STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :De trajeto de mão única
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Tipo de sinal a ser exibido: {STRING}
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Seleciona quais tipos de sinal a exibir, quando Ctrl+Clicar em Construir Sinais com a ferramenta Sinal
STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Normal apenas
-STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Avançados apenas
+STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :De trajeto apenas
STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos
STR_CONFIG_SETTING_TOWN_LAYOUT :Disposição de ruas para novas cidades: {STRING}
@@ -1762,6 +1764,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Checar p
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Exibe configurações de IA e script do jogo
STR_INTRO_TOOLTIP_QUIT :{BLACK}Sair do 'OpenTTD'
+STR_INTRO_BASESET :{BLACK}Faltam {NUM} "sprite{P "" s}" no conjunto de gráficos base selecionado. Por favor verifique se há atualizações para ele.
STR_INTRO_TRANSLATION :{BLACK}Faltam {NUM} string{P "" s} nessa tradução. Por favor faça o OpenTTD melhor se inscrevendo como tradutor. Leia Readme.txt para mais detalhes.
# Quit window
@@ -2358,14 +2361,14 @@ STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinais p
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{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
-STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal avançado(Semáforo){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo
-STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Semáforo){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo, porém não permite a passagem na via contrária
+STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de trajeto(Semáforo){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo
+STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de trajeto de mão única(Semáforo){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo, porém não permite a passagem na via contrária
STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal Padrão (elétrico){}Sinais são necessários para impedir que trens batam em redes de ferrovias com mais de uma máquina
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (elétrico){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída(elétrico){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combo (elétrico){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações de pré-sinais
-STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de trajeto(Elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados pelo lado de trás
-STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Elétrico){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo, porém não permite a passagem na via contrária
+STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de trajeto (Elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados pelo lado de trás
+STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Elétrico){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo, porém não permite a passagem na via contrária
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter sinal{}Quando selecionado, clicar num sinal existente converte-o para o tipo selecionado e suas variantes. Ctrl+Clique muda a variante atual. Shift+Clique mostra o preço estimado da conversão
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade dos sinais ao clicar e arrastar
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuir a densidade dos sinais
@@ -2590,6 +2593,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome da
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
+STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de ferrovia: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocidade limite do trilho: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da rua: {LTBLUE}{VELOCITY}
@@ -2602,29 +2606,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neve
STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto
-STR_LAI_RAIL_DESCRIPTION_TRACK :Trilho de Ferrovia
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Trilho de Ferrovia com sinais normais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Trilho de Ferrovia com pré-sinais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Trilho de Ferrovia com sinais de saída
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Trilho de Ferrovia com sinais-combo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Trilho de Ferrovia com sinais avançados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Trilhos de Ferrovia com sinais avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Trilho de Ferrovia com sinais normais e pré-sinais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Trilho de Ferrovia com sinais normais e pré-sinais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Trilho de Ferrovia com sinais normais e sinais-combo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Trilho de Ferrovia com sinais normais e avançados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Trilho de Ferrovia com sinais normais e avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Trilho de Ferrovia com pré-sinais e de saída
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Trilho de Ferrovia com pré-sinais e sinais-combo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Trilho de Ferrovia com pré-sinais e sinais avançados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Trilho de Ferrovia com pré-sinais e avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Trilho de Ferrovia com sinais de saída e sinais-combo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Trilho de Ferrovia com sinais de saída e avançados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Trilho de Ferrovia com sinais de saída e avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trilho de Ferrovia com sinais-combo e avançados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trilho de Ferrovia com sinais-combo e avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trilho de Ferrovia com sinais avançados e avançados de mão única
-STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de Ferrovia
+STR_LAI_RAIL_DESCRIPTION_TRACK :Trilho de ferrovia
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Trilho de ferrovia com sinais normais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Trilho de ferrovia com pré-sinais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Trilho de ferrovia com sinais de saída
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Trilho de ferrovia com sinais-combo
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Trilho de ferrovia com sinais de trajeto
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Trilhos de Ferrovia com sinais de trajeto de mão única
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Trilho de ferrovia com sinais normais e pré-sinais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Trilho de ferrovia com sinais normais e pré-sinais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Trilho de ferrovia com sinais normais e sinais-combo
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Trilho de ferrovia com sinais normais e de trajeto
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Trilho de ferrovia com sinais normais e de trajeto de mão única
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Trilho de ferrovia com pré-sinais e de saída
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Trilho de ferrovia com pré-sinais e sinais-combo
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Trilho de ferrovia com pré-sinais e sinais de trajeto
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Trilho de ferrovia com pré-sinais de trajeto e de mão única
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Trilho de ferrovia com sinais de saída e sinais-combo
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Trilho de ferrovia com sinais de saída e de trajeto
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Trilho de ferrovia com sinais de saída de trajeto e de mão única
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trilho de ferrovia com sinais-combo e de trajeto
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trilho de ferrovia com sinais-combo de trajeto e de mão única
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trilho de ferrovia com sinais de trajeto normais e de mão única
+STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de ferrovia
STR_LAI_ROAD_DESCRIPTION_ROAD :Rodovia
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Rodovia iluminada
@@ -2688,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipe do OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipe do OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
@@ -3293,6 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requer:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} aguardando{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}
@@ -3361,6 +3368,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos o
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
+STR_GROUP_PROFIT_THIS_YEAR :Lucros deste ano:
+STR_GROUP_PROFIT_LAST_YEAR :Lucros do ano passado:
+STR_GROUP_OCCUPANCY :Uso atual:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Veículos Ferroviários
@@ -3393,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos as cargas
STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Tração máx : {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados
+STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de trens - clique num trem para informações. Cltr+Clique para alterar a visibilidade do tipo de trem
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de automóveis - clique num automóvel para informações. Cltr+Clique para alterar a visibilidade do tipo de automóvel
@@ -3527,6 +3539,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva magl
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Preço: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de manutenção: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Preço: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Vel.: {VELOCITY} Potência: {POWER} Tração Máx: {6:FORCE}{}Custo de manutenção: {4:CURRENCY_LONG}/yr{}Capacidade: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Preço: {CURRENCY_LONG} Vel. Max.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de manuteção: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidade: {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING} - {STRING}
@@ -3556,6 +3572,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pression
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Troca entre substituir máquinas e substituir vagões
STR_REPLACE_ENGINES :Motores
STR_REPLACE_WAGONS :Vagões
+STR_REPLACE_ALL_RAILTYPE :Todos os veículos ferroviários
STR_REPLACE_HELP_RAILTYPE :{BLACK}Escolha o tipo de ferrovia para o qual deseja efetuar a substituição dos motores
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Exibe o tipo de motor que substituirá o que está selecionado à esquerda, se algum
@@ -3648,6 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ano{P "
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade Max: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Vel. Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Força: {LTBLUE}{POWER}{BLACK} Velocidade Max: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Força: {LTBLUE}{POWER}{BLACK} Velocidade Max: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE}
@@ -3778,7 +3797,7 @@ STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Percentual carr
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_REQUIRES_SERVICE :Necessita de manutenção
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tempo de vida restante (anos)
diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt
index 81ae04a8ac..f366f29344 100644
--- a/src/lang/bulgarian.txt
+++ b/src/lang/bulgarian.txt
@@ -2626,7 +2626,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр
STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt
index 3cbde7515f..28814005c8 100644
--- a/src/lang/catalan.txt
+++ b/src/lang/catalan.txt
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet
STR_ABOUT_OPENTTD :{WHITE}Quant a l'OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer. Tots els drets reservats.
STR_ABOUT_VERSION :{BLACK}Versió {REV} de l'OpenTTD
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'equip de l'OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'equip de l'OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessit
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperant
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperant{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt
index 13e90746c5..e7694f1bde 100644
--- a/src/lang/croatian.txt
+++ b/src/lang/croatian.txt
@@ -572,7 +572,7 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zumirano do kra
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Standardno zumiranje slike zaslona
STR_ABOUT_MENU_GIANT_SCREENSHOT :Slika zaslona cijele karte
STR_ABOUT_MENU_ABOUT_OPENTTD :O 'OpenTTD'
-STR_ABOUT_MENU_SPRITE_ALIGNER :Poravnjanje sprite-a
+STR_ABOUT_MENU_SPRITE_ALIGNER :Poravnanje spritea
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Odaberi granične okvire
STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Mijenjaj boju blatnih blokova
############ range ends here
@@ -778,7 +778,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikni n
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikni na glazbenu traku kako bi ju uklonio iz trenutnog programa (samo Proizvoljno 1 ili Proizvoljno 2)
# Highscore window
-STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najbolje tvrtke koje su dosigle razinu {NUM}
+STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najbolje tvrtke do {NUM}. godine
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tablica tvrtki u {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Privrednik
@@ -962,13 +962,13 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION
STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} od sada prihvaća {STRING.aku}
STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} od sada prihvaća {STRING.aku} i {STRING.aku}
-STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Istekla je ponuda subvencije:{}{}prijevoz {STRING.gen} od {STRING} do {STRING} više neće biti subvencioniran
+STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Istekla je ponuda za poticaje:{}{}prijevoz {STRING.gen} od {STRING} do {STRING} više neće biti potican
STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencija je povučena:{}{}prijevoz {STRING.gen} od {STRING} do {STRING} više nije subvencioniran
-STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Ponuđena je subvencija:{}{}Prvi koji preveze {STRING.aku} od {STRING} do {STRING} primat će jednogodišnju subvenciju od lokalne samouprave!
+STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Ponuđen je poticaj:{}{}Prvi koji preveze {STRING.aku} od {STRING} do {STRING} primat će jednogodišnji poticaj lokalne samouprave!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se 50% više sljedećih godinu dana!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se dvostruko sljedećih godinu dana!
-STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se trostruko sljedećih godinu dana!
-STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se četverostruko sljedećih godinu dana!
+STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Poticaj je dodijeljen tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se trostruko sljedećih godinu dana!
+STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Poticaj je dodijeljen tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se četverostruko sljedećih godinu dana!
STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Grad {TOWN} zahvatio je prometni kaos!{}{}Program rekonstrukcije cesta koji financira tvrtka {STRING} sljedećih će 6 mjeseci zadavati glavobolje motoriziranima!
STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopol transporta!
@@ -1245,7 +1245,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Brzina gradnje:
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitiraj količinu građevinskih akcija za UI-je
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Kvarovi vozila: {STRING}
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroliraj kako često se mogu pokvariti loše servisirana vozila
-STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Množitelj za subvencije: {STRING}
+STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Množitelj za poticaje: {STRING}
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Postavi koliko se plaća za subvencionirane veze
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Građevinski troškovi: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Postavi razinu građevinskih troškova i troškova kupnje
@@ -1385,9 +1385,9 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debljina linija
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debljina linije u grafikonima. Tanja linija je preciznija za čitanje, deblja linija je lakša za vidjeti i boje su lakše za razabrati
STR_CONFIG_SETTING_LANDSCAPE :Krajolik: {STRING}
-STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Tereni definiraju osnovne scenarije za igru sa različitim teretima i preduvjetima za rast gradova. NewGRF-ovi i Skripte Igre dozvoljavaju detaljnije kontrole i postavke.
+STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Tereni određuju osnovne scenarije za igru s različitim teretima i preduvjetima za rast gradova. NewGRF-ovi i Skripte Igre omogućavaju detaljnije kontrole i postavke.
STR_CONFIG_SETTING_LAND_GENERATOR :Generator zemlje: {STRING}
-STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originalni generator ovisi o baznom grafičkom setu i stvara fiksne oblike u terenu. TerraGenesis je generator baziran na Perlinu sa detaljnijim kontrolama i postavkama.
+STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Izvorni generator ovisi o osnovnom grafičkom setu i stvara fiksne oblike terena. TerraGenesis je generator temeljen na Perlinovom šumu s detaljnijim kontrolama i postavkama.
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Izvorni
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Vrsta terena: {STRING}
@@ -1580,17 +1580,17 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Uključivanjem
STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Dolazak prvog vozila na postaju igrača: {STRING}
STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Prikaži novine kada prvo vozilo dođe na stanicu novog igrača
STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Dolazak prvog vozila na postaju suparnika: {STRING}
-STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaži novine kada prvo vozilo dođe na suparnikovu stanicu
+STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaži novosti kada prvo vozilo dođe na protivničku postaju
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nesreće / katastrofe: {STRING}
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikaži novine kod nesreća ili katastrofa
STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Podaci vezani za tvrtku: {STRING}
-STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikaži novine kada se pojavi nova tvrtka ili kada tvrtke riskiraju bankrot
+STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikaži novosti kada se pojavi nova tvrtka ili kada tvrtke riskiraju bankrot
STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otvaranje industrije: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikaži novine kada se nove industrije otvaraju
STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zatvaranje industrije: {STRING}
-STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaži novine kada se industrije zatvaraju
-STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Promjene u gospodarstvu: {STRING}
-STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaži novine vezano za globalne promjene u ekonomiji
+STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaži novosti kada se industrije zatvaraju
+STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Gospodarske promjene: {STRING}
+STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaži novosti vezane za globalne gospodarske promjene
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Promjene u proizvodnji industrija koje opslužuje tvrtka: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži novine kod promjene proizvodnih razina industrija koje tvrtka opslužuje
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Promjene u proizvodnji industrija koje opslužuju suparnici: {STRING}
@@ -1602,11 +1602,11 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Prikaži poruke
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nova vozila: {STRING}
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Prikaži novine kada neki novi tip vozila postane dostupan
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Promjene u prihvaćanju tereta: {STRING}
-STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Prikaži poruke o stanicama koje mijenjaju prihvaćanje nekih tereta
+STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Prikaži poruke o postajama koje mijenjaju prihvaćanje nekih tereta
STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencije: {STRING}
-STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikaži novine vezano za događaje o subvencijama
+STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikaži novosti vezane za poticaje
STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Opće informacije: {STRING}
-STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikaži novine vezano za opće događaje kao za kupnju ekskluzivnih prava ili financiranje rekonstrukcije cesta
+STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikaži novosti vezane za opće događaje kao što su kupnja ekskluzivnih prava ili financiranje rekonstrukcije cesta
STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Isključeno
STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sažetak
@@ -1615,7 +1615,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Sve
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Vijesti u boji pojavljuju se: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Godina u kojoj će se novine početi izdavati u boji. Prije ove godine, koriste se crno/bijele novine
STR_CONFIG_SETTING_STARTING_YEAR :Početna godina: {STRING}
-STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključi tečnu ekonomiju (više manjih izazova): {STRING}
+STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključi stabilno gospodarstvo (više manjih izazova): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kada je uključeno, promjene u industrijskoj proizvodnji su češće ali u manjim rasponima. Ova postavka obično nema efekta ukoliko su industrije postavljene iz nekog NewGRF-a
STR_CONFIG_SETTING_ALLOW_SHARES :Dopusti kupovanje udjela u drugim tvrtkama: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kada je uključeno, dopušta se kupnja i prodaja dionica tvrtki. Dionice će postati dostupne samo za tvrtke određene starosti
@@ -1651,11 +1651,11 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Nasumično
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Gradovi mogu graditi ceste: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Dopusti gradovima građenje cesta u svrhu rasta. Isključi za sprečavanje gradskih vlasti u samostalnoj gradnji cesta
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Gradovi smiju graditi pružne prijelaze: {STRING}
-STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Uključivanje ove postavke dozvoljava se gradovima da grade cestovno-pružne prijelaze
+STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Uključivanje ove postavke dopušta gradovima izgradnju cestovno-pružnih prijelaza
STR_CONFIG_SETTING_NOISE_LEVEL :Omogući određivanje razine buke za zračne luke od strane gradova: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dvije zračne luke u svakom gradu. Kada je ova postavka uključena, broj zračnih luka u nekom gradu je ograničen količinom dopuštene buke u gradu, koja ovisi o broju stanovnika i udaljenosti i veličini zračne luke
STR_CONFIG_SETTING_TOWN_FOUNDING :Osnivanje gradova tijekom igre: {STRING}
-STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Uklučivanje ove postavke dozvoljava igračima osnivanje novih gradova tijekom igre
+STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Uklučivanje ove postavke dopušta igračima osnivanje novih gradova tijekom igre
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabranjeno
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Dopušteno
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Dopušteno, proizvoljan raspored grada
@@ -1882,8 +1882,8 @@ STR_OSNAME_SUNOS :SunOS
# Abandon game
STR_ABANDON_GAME_CAPTION :{WHITE}Napusti igru
-STR_ABANDON_GAME_QUERY :{YELLOW}Jesi li siguran da želiš napustiti ovu igru?
-STR_ABANDON_SCENARIO_QUERY :{YELLOW}Jesi li siguran da želiš napustiti ovaj scenarij?
+STR_ABANDON_GAME_QUERY :{YELLOW}Doista želiš napustiti ovu igru?
+STR_ABANDON_SCENARIO_QUERY :{YELLOW}Doista želiš napustiti ovaj scenarij?
# Cheat window
STR_CHEATS :{WHITE}Varanje
@@ -2377,7 +2377,7 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Namjesti
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Učini objekte nevidljivima umjesto prozirnima
# Linkgraph legend window
-STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda protoka tereta
+STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Kazalo protoka tereta
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Sve
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ništa
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Odaberi tvrtke koje će se prikazati
@@ -2452,13 +2452,13 @@ STR_STATION_CLASS_WAYP :Čvorišta
# Signal window
STR_BUILD_SIGNAL_CAPTION :{WHITE}Izbornik signala
-STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardni signal (semafor){}Ovo je najosnovnija vrsta signala, dozvoljava istovremeno samo jedan vlak u bloku
+STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardni signal (semafor){}Ovo je najosnovnija vrsta signala, dopušta istovremeno samo jedan vlak u bloku
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ulazni signal (semafor){}Zeleno sve dok je jedan ili više zelenih izlaznih signala na sljedećem dijelu pruge. U protivnom pokazuje crveno
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Izlazni signal (semafor){}Ponaša se na isti način kao i normalni signali, ali je nužno pogoditi točnu boju na ulaznim i kombo pred-signalima
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombo signal (semafor){}Kombo signal jednostavno radi kao ulazni i izlazni signal. Ovo omogućava izgradnju velike "mreže" pred-signala.
STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Putni signal (semafor){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Standardne putne signale moguće je proći iz suprotnog smjera.
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednosmjerni putni signal (semafor){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Jednosmjerne putne signale nije moguće proći iz suprotnog smjera
-STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standardni signal (električni){}Ovo je najosnovnija vrsta signala, dozvoljava istovremeno samo jedan vlak u bloku
+STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standardni signal (električni){}Ovo je najosnovnija vrsta signala, istovremeno dopušta samo jedan vlak u bloku
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ulazni signal (električni){}Zeleno sve dok je jedan ili više zelenih izlaznih signala na sljedećem dijelu pruge. U protivnom pokazuje crveno
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izlazni signal (električni){}Ponaša se na isti način kao i normalni signali, ali je nužno pogoditi točnu boju na ulaznim i kombo pred-signalima.
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombo signal (električni){}Kombo signal jednostavno radi kao ulazni i izlazni signal. Ovo omogućava izgradnju velike "mreže" pred-signala.
@@ -2572,7 +2572,7 @@ STR_STATION_BUILD_NOISE :{BLACK}Proizved
STR_LANDSCAPING_TOOLBAR :{WHITE}Uređivanje krajolika
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Snizi jedan kut zemlje. Povlačenje snižava prvi odabrani kut i poravnava selektirano područje na novu visinu prvog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova.
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Podigni jedan kut zemlje. Povlačenje podiže prvi odabrani kut i poravnava selektirano područje na novu visinu prvog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova.
-STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Poravnaj područje zemlje na visinu prvog odabranog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova.
+STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Izravnaj zemlju na visinu prvog odabranog kuta. Ctrl odabire područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova.
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupi zemlju za buduću uporabu. Shift mijenja prikaz građenje/procjena troškova.
# Object construction window
@@ -2787,7 +2787,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjed
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru
@@ -3392,11 +3392,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treba: {
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}čeka
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} čeka{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/czech.txt b/src/lang/czech.txt
index c914cfdc4d..cab72a7c92 100644
--- a/src/lang/czech.txt
+++ b/src/lang/czech.txt
@@ -2784,7 +2784,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněn
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena
STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tým OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tým OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru
@@ -3389,11 +3389,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vyžaduj
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}ček{P á ají á}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ček{P á ají á}{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/danish.txt b/src/lang/danish.txt
index 18abcb7846..3119390f3e 100644
--- a/src/lang/danish.txt
+++ b/src/lang/danish.txt
@@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Fra
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreklik-scrolling: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktiver rulle kortet ved at trække den med venstre museknap. Dette er især nyttigt, når du bruger en touch-screen til at rulle
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Luk vindue ved højre-klik: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker vinduet ved at højreklikke inde i det. Deaktiverer værktøjstip ved at højreklikke!
STR_CONFIG_SETTING_AUTOSAVE :Auto gem: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vælg interval mellem automatisk gemte spil
@@ -1761,6 +1763,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis computerspiller/spilscript indstillinger
STR_INTRO_TOOLTIP_QUIT :{BLACK}Afslut 'OpenTTD'
+STR_INTRO_BASESET :{BLACK} Det aktuelt valgte base grafiksæt mangler {NUM} sprite {P "" s}. Se venligst efter opdateringer til basesættet.
STR_INTRO_TRANSLATION :{BLACK}Denne oversættelse mangler {NUM} streng{P "" e}. Hjælp venligst med at gøre OpenTTD bedre ved at tilmelde dig som oversætter. Se readme.txt for detaljer.
# Quit window
@@ -2589,6 +2592,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lufthavn
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
+STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tog type: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vej hastighedsbegrænsning: {LTBLUE}{VELOCITY}
@@ -2604,13 +2608,13 @@ STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken
STR_LAI_RAIL_DESCRIPTION_TRACK :Jernbane spor
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Jernbane spor med bloksignaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Jernbane spor med with pre-signaler
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangssignaler
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangs-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Jernbane spor med kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Jernbane spor med rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Jernbane spor med en-vejs-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Jernbane spor med blok- og pre-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Jernbane spor med blok- og udgangs-signaler
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok og kombinerede signaler
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok- og kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Jernbane spor med blok- og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Jernbane spor med blok og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Jernbane spor med pre- og udgangs-signaler
@@ -2621,7 +2625,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbane spor m
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Jernbane spor med udgangs- og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Jernbane spor med udgangs- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Jernbane spor med kombinerede og rute-signaler
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinerede og en-vejs rute-signaler
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinationede- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Jernbane spor med rute- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbane togdepot
@@ -2687,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land ejet af se
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD teamet
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil
@@ -3292,6 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kræver:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kræver:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}
@@ -3360,6 +3367,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kør
STR_GROUP_RENAME_CAPTION :{BLACK}Omdøb en gruppe
+STR_GROUP_PROFIT_THIS_YEAR :Afkast i år:
+STR_GROUP_PROFIT_LAST_YEAR :Afkast sidste år:
+STR_GROUP_OCCUPANCY :Nuværende brug:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye jernbanekøretøjer
@@ -3392,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle lasttyper
STR_PURCHASE_INFO_ALL_BUT :Alle undtagen {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. trækkraft: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rækkevidde: {GOLD}{COMMA} felter
+STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Fly type: {GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Togvalgsliste - klik på et køretøj for mere information
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over køretøjstyper - klik på køretøj for information
@@ -3526,6 +3538,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetskinnelok
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Styrke: {POWER}{}Driftsomkostninger: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Hestekræfter: {POWER} Maks. Trækkraft: {6:FORCE}{}Driftsomkostning: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hast.: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Driftsomkostninger: {CURRENCY_LONG}/år
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Aircraft type: {STRING}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING}{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed{VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift {STRING} - {STRING}
@@ -3555,6 +3571,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue
STR_REPLACE_ENGINES :Lokomotiver
STR_REPLACE_WAGONS :Vogne
+STR_REPLACE_ALL_RAILTYPE :Alle jernbanevogne
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinne type, du ønsker at udskifte lokomotiver til
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj det valgte køretøj til venstre bliver udskiftet med, hvis det udskiftes
@@ -3647,6 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. hast.: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING} {BLACK}Rækkevidde: {LTBLUE}{COMMA} felter
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY} {BLACK}Maks. trækkraft: {LTBLUE}{FORCE}
diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt
index ca1ce4be2c..383706f727 100644
--- a/src/lang/dutch.txt
+++ b/src/lang/dutch.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedr
STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden
STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Het OpenTTD-team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Het OpenTTD-team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan
@@ -3296,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereist:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vereist
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}wachtend
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vereist:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wachtend{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 705e8ef42b..339aeb5705 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -2723,7 +2723,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
@@ -3336,11 +3336,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}, {STRING}{RAW_STRING}, {STRING}{RAW_STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}waiting
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{RAW_STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{RAW_STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:RAW_STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{RAW_STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{RAW_STRING}
diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt
index a37f78d61c..8d51d06660 100644
--- a/src/lang/english_AU.txt
+++ b/src/lang/english_AU.txt
@@ -2662,7 +2662,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt
index 63314c4159..86519ddc61 100644
--- a/src/lang/english_US.txt
+++ b/src/lang/english_US.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
@@ -3296,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}waiting
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt
index 8cb30a79d2..949fdb0d2c 100644
--- a/src/lang/esperanto.txt
+++ b/src/lang/esperanto.txt
@@ -2265,7 +2265,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanie poseda
STR_ABOUT_OPENTTD :{WHITE}Pri OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina kopirajto {COPYRIGHT} 1995 Chris Sawyer, Ĉiuj rajtoj rezervitaj
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La teamo de OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La teamo de OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon
diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt
index a69b0da58a..344f099741 100644
--- a/src/lang/estonian.txt
+++ b/src/lang/estonian.txt
@@ -2745,7 +2745,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ettevõtte maa
STR_ABOUT_OPENTTD :{WHITE}OpenTTD lisainfo
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Algne autorikaitse {COPYRIGHT} 1995 Chris Sawyer, kõik õigused kaitstud
STR_ABOUT_VERSION :{BLACK}OpenTTD osa {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD meeskond
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD meeskond
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine
diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt
index 3fcea7a53e..4d90facad2 100644
--- a/src/lang/faroese.txt
+++ b/src/lang/faroese.txt
@@ -2427,7 +2427,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyrit
STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunalig upphavsrættindi {COPYRIGHT} 1995 Chris Sawyer, Øll rættindi umbiðin
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD toymi
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD toymi
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl
diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt
index 98fd58031d..b53a762c9b 100644
--- a/src/lang/finnish.txt
+++ b/src/lang/finnish.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Yhtiön omistam
STR_ABOUT_OPENTTD :{WHITE}Tietoja OpenTTD:stä
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäiset oikeudet {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli
@@ -3296,9 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tarvitse
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Tarvitsee
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}odottamassa
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Tarvitsee:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} odottamassa{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Tuottaa: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/french.txt b/src/lang/french.txt
index 3b74d392b4..2c57358046 100644
--- a/src/lang/french.txt
+++ b/src/lang/french.txt
@@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Désactivé
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Défilement par clic gauche{NBSP}: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Active le défilement de la carte en la glissant avec le bouton gauche de la souris. C'est surtout utile pour les écrans tactiles
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fermer une fenêtre en cliquant droit{NBSP}: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fermer une fenêtre en cliquant droit à l’intérieur de celle-ci. Désactive l'infobulle sur clic droit{NBSP}!
STR_CONFIG_SETTING_AUTOSAVE :Sauvegarde automatique{NBSP}: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Sélectionner l'intervalle de temps entre les sauvegardes automatiques
@@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrain apparte
STR_ABOUT_OPENTTD :{WHITE}À propos de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'équipe OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'équipe OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie
@@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nécessi
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Nécessite
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}en attente
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Nécessite{NBSP}:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}{NBSP}: {CARGO_SHORT} en attente{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produit{NBSP}: {YELLOW}{STRING}{STRING}
@@ -3368,6 +3368,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Retirer tous le
STR_GROUP_RENAME_CAPTION :{BLACK}Renommer un groupe
+STR_GROUP_PROFIT_THIS_YEAR :Profit cette année{NBSP}:
+STR_GROUP_PROFIT_LAST_YEAR :Profit l'année précédente{NBSP}:
+STR_GROUP_OCCUPANCY :Utilisation actuelle{NBSP}:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nouveaux véhicules ferroviaires
diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt
index fa202dc6d4..c06b81ecf7 100644
--- a/src/lang/gaelic.txt
+++ b/src/lang/gaelic.txt
@@ -2932,7 +2932,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompan
STR_ABOUT_OPENTTD :{WHITE}Mu dheidhinn OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-lethbhreac tùsail {COPYRIGHT} 1995 Chris Sawyer, a h-uile còir glèidhte
STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An sgioba OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An sgioba OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama
@@ -3537,11 +3537,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Feum air
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Feum air
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}a' feitheamh
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Feum air:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a' feitheamh{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/galician.txt b/src/lang/galician.txt
index 98119197b7..d87aa14abe 100644
--- a/src/lang/galician.txt
+++ b/src/lang/galician.txt
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreo propieda
STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 O equipo de OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 O equipo de OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Require:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Require
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}agardando
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Require:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} agardando{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/german.txt b/src/lang/german.txt
index 499eb6ee6b..128c516c62 100644
--- a/src/lang/german.txt
+++ b/src/lang/german.txt
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes G
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transport Tycoon-Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten
STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-Team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-Team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Benötig
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}benötigt
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}wartend
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}benötigt:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wartend{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/greek.txt b/src/lang/greek.txt
index 28493787fe..11d5755d78 100644
--- a/src/lang/greek.txt
+++ b/src/lang/greek.txt
@@ -1479,6 +1479,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργ
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Κλείσιμο παραθύρου με δεξί-κλικ: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί!
STR_CONFIG_SETTING_AUTOSAVE :Αυτόματο σώσιμο: {STRING}
@@ -2797,7 +2798,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτη
STR_ABOUT_OPENTTD :{WHITE}Σχετικά με το OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχικά Πνευματικά Δικαιώματα {COPYRIGHT} 1995 Chris Sawyer, Όλα τα δικαιώματα διατηρούνται
STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Η ομάδα του OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Η ομάδα του OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού
@@ -3402,9 +3403,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Απαι
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}σε αναμονή
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} σε αναμονή{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt
index 6acc603e3d..90ed5ccc55 100644
--- a/src/lang/hebrew.txt
+++ b/src/lang/hebrew.txt
@@ -1387,6 +1387,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :כבוי
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :גלילה בלחיצה שמאלית: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :אפשר גלילת המפה באמצעות גרירתה עם כפתור העכבר השמאלי. אפשרות זו שימושית במיוחד בעת שימוש במסך מגע לצורך גלילה
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :סגירת חלון בכפתור ימני: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :סוגר חלון על-ידי לחיצה ימנית בתוכו. מבטל הצגת מידע בלחיצה ימנית!
STR_CONFIG_SETTING_AUTOSAVE :שמירה אוטומטית: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :בחר פרק זמן בין שמירות אוטומטיות
@@ -1754,7 +1755,7 @@ STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}הגדר
STR_INTRO_NEWGRF_SETTINGS :{BLACK}(NewGRF)הגדרות שדרוג גראפי
STR_INTRO_ONLINE_CONTENT :{BLACK} בדוק תוכן מקוון
STR_INTRO_SCRIPT_SETTINGS :{BLACK}הגדרות סקריפטים של משחק/שחקני מחשב
-STR_INTRO_QUIT :{BLACK}צא
+STR_INTRO_QUIT :{BLACK}יציאה
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}התחל משחק חדש. Ctrl+לחיצה מדלג על תצורת מפה
STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}טען משחק שמור
@@ -1776,6 +1777,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} חפש
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} הצג הגדרות סקריפטים של משחק/שחקני מחשב
STR_INTRO_TOOLTIP_QUIT :{BLACK}צא מ-'OpenTTD'
+STR_INTRO_BASESET :{BLACK}חסרים {NUM} ספרייט עבור גרפיקות הבסיס שנבחרו. אנא בדוק עדכונים לערכה זו.
STR_INTRO_TRANSLATION :{BLACK}בתרגום זה חסרים {P 0 "מחרוזת " ""}{NUM}{P "" " מחרוזות"}. אנא עזור לשפר את OpenTTD ע"י הצטרפות כמתרגם. קרא בקובץ readme.txt לפרטים.
# Quit window
@@ -2617,29 +2619,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :שדות
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :אדמה מכוסה בשלג
STR_LAI_CLEAR_DESCRIPTION_DESERT :מדבר
-STR_LAI_RAIL_DESCRIPTION_TRACK :מסילת ברזל מסילה
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :מסילת ברזל מסילה עם רמזורים מקדימים
+STR_LAI_RAIL_DESCRIPTION_TRACK :מסילת ברזל
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :מסילת ברזל עם רמזורים חוסמים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :מסילת ברזל עם רמזורים מקדימים
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :מסילת ברזל מסילה עם רמזורי יציאה
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :מסילת ברזל מסילה עם רמזורים משולבים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :מסילת ברזל מסילה עם רמזורי נתיב
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :מסילת ברזל עם רמזורים משולבים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :מסילת ברזל עם רמזורי נתיב
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :מסילת ברזל עם רמזורי נתיב חד-סטריים
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים ומקדימים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים ורמזורי יציאה
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים ורמזורים משולבים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים ורמזורי נתיב
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורים חוסמים ורמזורי נתיב חד-סטריים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :מסילת ברזל מסילה עם רמזורים מקדימים ורמזורי יציאה
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :מסילת ברזל מסילה עם רמזורים מקדימים ורמזורים משולבים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :מסילת ברזל עם רמזורים חוסמים ורמזורי יציאה
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :מסילת ברזל עם רמזורים חוסמים ורמזורים משולבים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :מסילת ברזל עם רמזורים חוסמים ורמזורי נתיב
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :מסילת ברזל עם רמזורים חוסמים ורמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :מסילת ברזל עם רמזורים מקדימים ורמזורי יציאה
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :מסילת ברזל עם רמזורים מקדימים ורמזורים משולבים
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :מסילת ברזל מסילה עם רמזורים מקדימים ורמזורי נתיב
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורים מקדימים ורמזורי נתיב חד-סטריים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :מסילת ברזל מסילה עם רמזורי יציאה ורמזורים משולבים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :מסילת ברזל מסילה עם רמזורי יציאה ורמזורי נתיב
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורי יציאה ורמזורי נתיב חד-סטריים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :מסילת ברזל מסילה עם רמזורים משולבים ורמזורי נתיב
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורים משולבים ורמזורי נתיב חד-סטריים
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :מסילת ברזל מסילה עם רמזורי נתיב ורמזורי נתיב חד-סטריים
-STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :מסילת ברזל מוסך רכבות
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :מסילת ברזל עם רמזורים מקדימים ורמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :מסילת ברזל עם רמזורי יציאה ורמזורים משולבים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :מסילת ברזל עם רמזורי יציאה ורמזורי נתיב
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :מסילת ברזל עם רמזורי יציאה ורמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :מסילת ברזל עם רמזורים משולבים ורמזורי נתיב
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :מסילת ברזל עם רמזורים משולבים ורמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :מסילת ברזל עם רמזורי נתיב ורמזורי נתיב חד-סטריים
+STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :מוסך רכבות
STR_LAI_ROAD_DESCRIPTION_ROAD :כביש
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :כביש עם תאורת רחוב
@@ -2701,9 +2703,9 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעל
# About OpenTTD window
STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות
-STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - {NBSP}זכויות יוצרים מקוריות
+STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - זכויות יוצרים מקוריות
STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק
@@ -3308,6 +3310,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{YELLOW}{3:STRI
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{YELLOW}{5:STRING}{4:STRING},{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש
############ range for requires ends
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}דורש:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ממתין{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} :מייצר
@@ -3376,7 +3381,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :הסר את כ
STR_GROUP_RENAME_CAPTION :{BLACK}שנה שם קבוצה
+STR_GROUP_PROFIT_THIS_YEAR :רווח בשנה זו:
STR_GROUP_PROFIT_LAST_YEAR :רווח שנה שעברה:
+STR_GROUP_OCCUPANCY :שימוש נוכחי:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :רכבות חדשות
@@ -3544,6 +3552,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :קטר פס מ
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}{1:WEIGHT_SHORT} :משקל {NBSP}{0:CURRENCY_LONG} :מחיר{} {NBSP}{3:POWER} :עצמת מנוע {NBSP}{2:VELOCITY} :מהירות {NBSP}{}{5:CARGO_LONG} : קיבולת {NBSP} לשנה {NBSP}{4:CURRENCY_LONG} :עלות תפעולית
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}עלות: {CURRENCY_LONG} משקל: {WEIGHT_SHORT}{}מהירות: {VELOCITY} הספק: {POWER} מקסימלי T.E.: {6:FORCE}{}עלות תפעולית: {4:CURRENCY_LONG}/לשנה{}קיבולת: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}{}הוצאה שוטפת: {CURRENCY_LONG}/לשנה
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING}{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING}{}קיבולת: {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}החלף {STRING} - {STRING}
@@ -3573,6 +3585,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}לחץ
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}החלף בין חלונות החלפת קרון וקטר
STR_REPLACE_ENGINES :מנועים/קטרים
STR_REPLACE_WAGONS :קרונות
+STR_REPLACE_ALL_RAILTYPE :כלל הרכבות
STR_REPLACE_HELP_RAILTYPE :{BLACK}בחר את סוג המסילה עבורה ברצונך להחליף קטרים
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK} מציג אילו קטרים מוחלפים זה בזה
@@ -3665,6 +3678,8 @@ STR_VEHICLE_INFO_AGE :({1:COMMA}) ש
STR_VEHICLE_INFO_AGE_RED :{RED}({1:COMMA}) שנים {NBSP}{0:COMMA}
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}מהירות מקס.: {LTBLUE}{VELOCITY} {BLACK}סוג כלי טיס: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}סוג כלי טיס: {LTBLUE}{STRING} {BLACK}טווח: {LTBLUE}{COMMA} משבצות
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}T.E. מקסימלי: {LTBLUE}{FORCE}
diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt
index a993dc305d..99dbfb82c8 100644
--- a/src/lang/hungarian.txt
+++ b/src/lang/hungarian.txt
@@ -2755,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Vállalat álta
STR_ABOUT_OPENTTD :{WHITE}Az OpenTTD-ről
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva
STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Az OpenTTD csapat
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Az OpenTTD csapat
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése
@@ -3361,10 +3361,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Felhaszn
############ range for requires ends
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Elfogad:
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}várakozik
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} várakozik{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt
index 3202b99e62..77e9c09660 100644
--- a/src/lang/icelandic.txt
+++ b/src/lang/icelandic.txt
@@ -2536,7 +2536,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land í eigu fy
STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD hópurinn
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD hópurinn
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik
diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt
index b9194ea0a7..9a371a83d5 100644
--- a/src/lang/indonesian.txt
+++ b/src/lang/indonesian.txt
@@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah milik Per
STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hak Cipta asli {COPYRIGHT} 1995 Chris Sawyer, Hak Cipta dilindungi
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tim OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tim OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan
diff --git a/src/lang/irish.txt b/src/lang/irish.txt
index 229580074d..6c2cb21375 100644
--- a/src/lang/irish.txt
+++ b/src/lang/irish.txt
@@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Talamh faoi úi
STR_ABOUT_OPENTTD :{WHITE}Maidir le OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipcheart bunaidh {COPYRIGHT} 1995 Chris Sawyer, Gach ceart ar cosaint
STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An fhoireann OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An fhoireann OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche
diff --git a/src/lang/italian.txt b/src/lang/italian.txt
index 309f4e9f01..e2d5ffa49a 100644
--- a/src/lang/italian.txt
+++ b/src/lang/italian.txt
@@ -2721,7 +2721,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno possedu
STR_ABOUT_OPENTTD :{WHITE}Informazioni su OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright originale {COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati
STR_ABOUT_VERSION :{BLACK}OpenTTD versione {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Il team OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Il team OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita
@@ -3326,11 +3326,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Richiede
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Richiede
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}in attesa
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Richiede:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} in attesa{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt
index ed7584bfc1..8e7f0c486d 100644
--- a/src/lang/japanese.txt
+++ b/src/lang/japanese.txt
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :社有地
STR_ABOUT_OPENTTD :{WHITE}OpenTTDについて
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリジナル版権{COPYRIGHT} 1995 Chris Sawyer All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD バージョン {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存
@@ -3293,8 +3293,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}必要
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}、{STRING}{STRING}、{STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES : {BLACK}必要物資
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT : {YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES : {BLACK}必要物資:
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/korean.txt b/src/lang/korean.txt
index 9c6d98c05b..b6dc29a099 100644
--- a/src/lang/korean.txt
+++ b/src/lang/korean.txt
@@ -2385,7 +2385,7 @@ STR_BRIDGE_NAME_GIRDER_STEEL :강철 거더
STR_BRIDGE_NAME_CANTILEVER_STEEL :강철 캔틸레버교
STR_BRIDGE_NAME_SUSPENSION_CONCRETE :콘크리트 현수교
STR_BRIDGE_NAME_WOODEN :나무 다리
-STR_BRIDGE_NAME_CONCRETE :콘트리트교
+STR_BRIDGE_NAME_CONCRETE :콘크리트교
STR_BRIDGE_NAME_TUBULAR_STEEL :강철 원통형 다리
STR_BRIDGE_TUBULAR_SILICON :실리콘 원통형 다리
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :회사 소유
STR_ABOUT_OPENTTD :{WHITE}OpenTTD에 대해서
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD 버전 {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 개발팀
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 개발팀
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}필요
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}필요함: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}받는 화물
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}대기중
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}받는 화물:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 대기중{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/latin.txt b/src/lang/latin.txt
index bd47867beb..42047a47d6 100644
--- a/src/lang/latin.txt
+++ b/src/lang/latin.txt
@@ -3498,11 +3498,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Postulat
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Postulat
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING.acc}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}manet
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING.acc}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Postulat:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING.acc}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} manet{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING}
diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt
index 30f43b807a..dab5900f75 100644
--- a/src/lang/latvian.txt
+++ b/src/lang/latvian.txt
@@ -2628,7 +2628,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Uzņēmumam pie
STR_ABOUT_OPENTTD :{WHITE}Par OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģināla autortiesības {COPYRIGHT} 1995 Kriss Sojers. Visas tiesības paturētas
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD darba grupa
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD darba grupa
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli
diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt
index 6d6d1428b8..4d44522671 100644
--- a/src/lang/lithuanian.txt
+++ b/src/lang/lithuanian.txt
@@ -2906,7 +2906,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanijos žem
STR_ABOUT_OPENTTD :{WHITE}Apie OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinės versijos teisės priklauso {COPYRIGHT} 1995 Chris Sawyer, Visos teisės saugomos
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD komanda
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD komanda
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą
diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt
index 41150fc85a..38dba61000 100644
--- a/src/lang/luxembourgish.txt
+++ b/src/lang/luxembourgish.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenb
STR_ABOUT_OPENTTD :{WHITE}Iwwert OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original Copyright {COPYRIGHT} 1995 Chris Sawyer, All Rechter virbehalen
STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 D'OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 D'OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren
@@ -3296,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Brauch:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}um waarden
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} um waarden{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/malay.txt b/src/lang/malay.txt
index 427788ddee..4ba83efdaa 100644
--- a/src/lang/malay.txt
+++ b/src/lang/malay.txt
@@ -202,6 +202,7 @@ STR_UNITS_POWER_SI :{COMMA}kW
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t
STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg
+STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tan{P "" s}
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tan
STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
@@ -1218,6 +1219,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :Beri amaran jik
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kenderaan tidak akan tamat tempohnya: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Gunakan pembaharuan automatik apabila kenderaan usang : {STRING}
STR_CONFIG_SETTING_AUTORENEW_MONEY :Wang minimum yang diperlukan untuk pembaharuan automatik: {STRING}
+STR_CONFIG_SETTING_ERRMSG_DURATION :Jangkamasa mesej ralat: {STRING}
STR_CONFIG_SETTING_POPULATION_IN_LABEL :Tunjukkan jumlah penduduk dalam label nama bandar: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Ketebalan garisan di dalam graf: {STRING}
@@ -1325,6 +1327,7 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Sederhana
STR_CONFIG_SETTING_AI_PROFILE_HARD :Sukar
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Benarkan Kepintaran Tiruan dalam permainan pemain berbilang: {STRING}
+STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Benarkan AI komputer menyertai permainan berbilang pemain
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes sebelum skrip adalah digantung: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tempoh waktu servis dalam peratusan: {STRING}
@@ -2003,6 +2006,7 @@ STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ghaibkan
# Linkgraph legend window
# Linkgraph legend window and linkgraph legend in smallmap
+STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}tepu
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Serlahan kawasan liputan
@@ -2402,7 +2406,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah dimiliki
STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hakcipta Asal {COPYRIGHT} 1995 Chris Sawyer, Hakcipta terpelihara
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan
@@ -2802,6 +2806,7 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Menerima
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Penarafan
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tunjukkan penarafan stesen
+STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Bekalan bulanan dan penarafan tempatan:
@@ -2952,7 +2957,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Memerluk
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Memerlukan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Diperlukan
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Diperlukan:
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Mengeluarkan: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt
index 535e83e6ce..dccf73075f 100644
--- a/src/lang/norwegian_bokmal.txt
+++ b/src/lang/norwegian_bokmal.txt
@@ -2695,7 +2695,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid lando
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig opphavsbeskyttet {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill
@@ -3281,8 +3281,8 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
# Industry directory
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen -
-STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}% transportert)
-STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}%/{COMMA}{NBSP}% transportert)
+STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportert)
+STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportert)
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien
@@ -3300,11 +3300,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Trenger:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}venter
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt
index 516933dd7a..5e545ce290 100644
--- a/src/lang/norwegian_nynorsk.txt
+++ b/src/lang/norwegian_nynorsk.txt
@@ -2608,7 +2608,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Feltet eigast a
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphaveleg opphavsbeskytta av {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheiter reservert
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire.
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel
diff --git a/src/lang/polish.txt b/src/lang/polish.txt
index 2139d9d893..cc3f06cffe 100644
--- a/src/lang/polish.txt
+++ b/src/lang/polish.txt
@@ -702,7 +702,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Wyświet
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Wyświetl listę stacji firmy
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Wyświetl informacje finansowe firmy
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Wyświetl informacje ogólne firmy
-STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Pokaż okno opowieści
+STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Pokaż dziennik
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Pokaż listę celów
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Wyświetl wykresy
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Wyświetl ranking firm
@@ -757,7 +757,7 @@ STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ustawienia NewG
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcje przeźroczystości
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Wyświetlanie nazw miast
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Wyświetlanie nazw stacji
-STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wyświetlanie nazw pkt. orientacyjnych
+STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wyświetlanie nazw posterunków
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Wyświetlanie napisów
STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Znaki konkurentów i nazwy są wyświetlane
STR_SETTINGS_MENU_FULL_ANIMATION :Pełna animacja
@@ -790,7 +790,7 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Subsydia
############ range ends here
############ range for graph menu starts
-STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Wykres obrotu
+STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Wykres dochodów
STR_GRAPH_MENU_INCOME_GRAPH :Wykres przychodów
STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Wykres przewożonego ładunku
STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Ocena działalności firmy
@@ -1009,7 +1009,7 @@ STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Ilość
STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Ilość zarobionych pieniędzy w kwartale z największym zyskiem z ostatnich 12 kwartałów
STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Ilość ładunku przewiezionego w poprzednich 4 kwartałach
STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Ilość różnych typów ładunku przewiezionych w ostatnim kwartale
-STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Ilość pieniędzy w ręku
+STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Ilość dostępnych środków pieniężnych
STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Wielkość pożyczki wziętej przez firmę
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Suma przyznanych punktów
@@ -1520,7 +1520,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :wyśrodkowany
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :z prawej strony
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksymalna wysokość początkowej pożyczki: {STRING}
-STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksymalna wysokość pożyczki jaką firma może zaciągnąć (nie uwzględnia inflacji)
+STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksymalna wysokość pożyczki, jaką firma może zaciągnąć (bez uwzględnienia inflacji)
STR_CONFIG_SETTING_INTEREST_RATE :Oprocentowanie: {STRING}
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Oprocentowanie pożyczki; kontroluje też inflację, jeśli jest włączona
STR_CONFIG_SETTING_RUNNING_COSTS :Koszty amortyzacji: {STRING}
@@ -1858,8 +1858,8 @@ STR_CONFIG_SETTING_NOSERVICE :Wyłącz serwis
STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kiedy włączone, pojazdy nie są serwisowane, jeśli nie mogą się popsuć
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Włącz limity prędkości wagonów: {STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kiedy włączone, użyj także ograniczenia prędkości dla wagonów do obliczenia maksymalnej prędkości pociągu
-STR_CONFIG_SETTING_DISABLE_ELRAILS :Zabroń korzystania z kolei elektrycznych: {STRING}
-STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Włączając to ustawienie, nie jest już wymagane elektryfikowanie torów, aby elektrowozy mogły po nich jeździć
+STR_CONFIG_SETTING_DISABLE_ELRAILS :Tylko jeden rodzaj torów: {STRING}
+STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Przy włączonym ustawieniu nie jest już wymagane elektryfikowanie torów, aby elektrowozy mogły po nich jeździć
STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Przybycie pierwszego pojazdu do stacji gracza: {STRING}
STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Wyświetl wiadomość w gazecie kiedy pierwszy pojazd dojedzie do stacji gracza
@@ -1903,8 +1903,8 @@ STR_CONFIG_SETTING_SMOOTH_ECONOMY :Pozwól na łag
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kiedy włączone, produkcja zakładów zmienia się częściej, ale mniejszymi krokami. To ustawienie zazwyczaj nie daje żadnego efektu, jeśli typy zakładów są pobierane z NewGRFów
STR_CONFIG_SETTING_ALLOW_SHARES :Pozwól kupować udziały w innych firmach: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kiedy włączone, pozwala na kupowanie i sprzedawanie udziałów w firmie. Udziały będą dostępne tylko dla firm z odpowiednim stażem
-STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Udział w zyskach w przypadku częściowego transportu (przeładunku): {STRING}
-STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Udział procentowy dochodu pośrednika otrzymywany za transfer towaru. Umożliwia kontrolę nad całościowym dochodem za dowóz towarów w łańcuchu dowozowym
+STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Podział przychodów w przypadku przeładunków: {STRING}
+STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Manipulowanie zrównoważeniem podziałów w łańcuchu dowozowym: przy 0% przychód zostanie zaksięgowany na konto wyłącznie ostatniego pojazdu w łańcuchu, wyższa wartość zwiększa zrównoważenie podziału
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Podczas przeciągania ustaw semafor co: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ustaw dystans, na jakim semafory będą budowane przy torach aż do następnej przeszkody (semafor, zwrotnica), przy przeciąganiu
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} p{P ole ola ól}
@@ -2004,7 +2004,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymetrycznie"
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Dokładność dystrybucji: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Im wyżej ustawisz, tym wiecej czasu zajmie procesorowi obliczenie wykresu. Jeśli zajmuje zbyt dużo czasu, może pojawić sie lag. Natomiast zbyt mała ilość powoduje niedokładną dystrybucję, co można zauważyć gdy towar nie jest wysyłany do miejsc do których się spodziewasz aby dotarł.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Wpływ odległości na dystrybucję: {STRING}
-STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ustawisz tę wartość na więcej niż 0, to dystans pomiędzy stacją początkową A jakiegoś towaru a prawdopodobną stacją docelową B będzie miało wpływ na ilość towaru wysłanego z A do B. Im dalej z A do B, tym mniej towaru zostanie wysłane. Im wększa wartość, tym mniej towaru będzie wysłane do dalekich stacji, a więcej towaru będzie wysłane do bliższych stacji.
+STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ładunki z jednej stacji trafiają na kilka różnych stacji, na ich dystrybucję wpływ ma odległość. Im wyższą wartość ustawisz, tym bliższe stacje będą preferowane. Zerowa wartość ustawienia sprawi, że odległość nie będzie wpływała na podział dystrybucji.
STR_CONFIG_SETTING_DEMAND_SIZE :Ilość powracającego ładunku dla trybu symetrycznego: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawiając to na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej towaru będzie zwróconego jeśli pewna ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Zapełnienie krótkich tras przed wybraniem tras o dużej przepustowości: {STRING}
@@ -2413,7 +2413,7 @@ STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nazwa f
STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inauguracja: {WHITE}{NUM}
STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Wartość firmy: {WHITE}{CURRENCY_LONG}
STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Bieżący bilans: {WHITE}{CURRENCY_LONG}
-STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Przychód w ostatnim roku: {WHITE}{CURRENCY_LONG}
+STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Dochód w ostatnim roku: {WHITE}{CURRENCY_LONG}
STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Wydajność: {WHITE}{NUM}
STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Pojazdy: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE}
@@ -2424,7 +2424,7 @@ STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nowa fir
STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Rozpoczęcie działalności nowej firmy
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Obserwuj grę
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Oglądaj grę jako widz
-STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Połącz z firmą
+STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Dołącz do firmy
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomóż zarządzać tą firmą
# Network connecting window
@@ -2684,8 +2684,8 @@ STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Zasoby:
STR_JOIN_STATION_CAPTION :{WHITE}Połącz stację
STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Zbuduj oddzielną stację
-STR_JOIN_WAYPOINT_CAPTION :{WHITE}Połącz pkt. orientacyjne
-STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zbuduj oddzielny pkt. orientacyjny
+STR_JOIN_WAYPOINT_CAPTION :{WHITE}Połącz posterunki
+STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zbuduj oddzielny posterunek
# Rail construction toolbar
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstrukcja linii kolejowej
@@ -2696,12 +2696,12 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstrukcja lin
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Budowa torów kolejowych. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Zbuduj tory kolejowe za pomocą trybu Autotory. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Budowa warsztatów (do kupowania i serwisowania pociągów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
-STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Zamiana torów na pkt. orientacyjny. Ctrl umożliwia łączenie pkt. orientacyjnych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
+STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Zamiana torów na posterunek. Ctrl umożliwia łączenie posterunków. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Zbuduj stację kolejową. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zbuduj sygnały kolejowe. Ctrl przełącza semafory/sygnały świetlne{}Przeciągnięcie pozwala na budowę sygnałów wzdłuż prostej linii torów. Ctrl pozwala na budowę sygnałów do następnego skrzyżowania{}Ctrl+klik przełącza do okna wyboru sygnałów. Shift przełącza pomiędzy budowaniem a szacowaniem kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Zbuduj most kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Zbuduj tunel kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
-STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Przełącz buduj/usuń dla torów kolejowych, sygnałów, pkt. orientacyjnych i stacji. Przetrzymanie Ctrl usuwa także tory kolejowe z pkt. orientacyjnych i stacji
+STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Przełącz buduj/usuń dla torów kolejowych, sygnałów, posterunków i stacji. Przetrzymanie Ctrl usuwa także tory kolejowe z posterunków i stacji
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Zamiana typu torów. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów
STR_RAIL_NAME_RAILROAD :Kolej
@@ -2714,8 +2714,8 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Ukierunk
STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie warsztatów
# Rail waypoint construction window
-STR_WAYPOINT_CAPTION :{WHITE}Pkt. orientacyjny
-STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wybierz typ pkt. orientacyjnego
+STR_WAYPOINT_CAPTION :{WHITE}Posterunek
+STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wybierz typ posterunku
# Rail station construction window
STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Wybór stacji
@@ -2732,7 +2732,7 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wybierz
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wybierz typ stacji do zbudowania
STR_STATION_CLASS_DFLT :Typowa stacja
-STR_STATION_CLASS_WAYP :Pkt. orientacyjne
+STR_STATION_CLASS_WAYP :Posterunki
# Signal window
STR_BUILD_SIGNAL_CAPTION :{WHITE}Wybór sygnałów
@@ -3030,7 +3030,7 @@ STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Stacja załadun
STR_LAI_STATION_DESCRIPTION_BUS_STATION :Przystanek
STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Port
STR_LAI_STATION_DESCRIPTION_BUOY :Boja
-STR_LAI_STATION_DESCRIPTION_WAYPOINT :Pkt. orientacyjny
+STR_LAI_STATION_DESCRIPTION_WAYPOINT :Posterunek
STR_LAI_WATER_DESCRIPTION_WATER :Woda
STR_LAI_WATER_DESCRIPTION_CANAL :Kanał
@@ -3071,7 +3071,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren w posiada
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Autorskie {COPYRIGHT} 1995 Chris Sawyer, Wszelkie prawa zastrzeżone
STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Zespół OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Zespół OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę
@@ -3416,7 +3416,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kup roc
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Daj łapówkę lokalnym władzom, powiększ swoją ocenę, ryzykując poważne kary w razie złapania.{}Koszt: {CURRENCY_LONG}
# Goal window
-STR_GOALS_CAPTION :{WHITE}{COMPANY} Cele
+STR_GOALS_CAPTION :{WHITE}Cele firmy {COMPANY}
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Cele globalne
STR_GOALS_GLOBAL_TITLE :{BLACK}Cele globalne:
STR_GOALS_TEXT :{ORANGE}{STRING}
@@ -3464,8 +3464,8 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik na usłudze żeby wyśrodkować widok na fabrykę/miasto. Ctrl+klik otwiera nowy podgląd na pozycji fabryki/miasta
# Story book window
-STR_STORY_BOOK_CAPTION :{WHITE}Album Historii Firmy {COMPANY}
-STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalne okno opowieści
+STR_STORY_BOOK_CAPTION :{WHITE}Dziennik Historii Firmy {COMPANY}
+STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Ogólny przewodnik
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strona {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skocz na właściwą stronę wybierając ją z listy.
@@ -3553,8 +3553,8 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Nie zezw
# Waypoint/buoy view window
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
-STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na pkt. orientacyjnym. Ctrl+klik otwiera nowy podgląd na lokacji pkt. orientacyjnego
-STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Zmień nazwę pkt. orientacyjnego
+STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na posterunku. Ctrl+klik otwiera nowy podgląd na lokacji posterunku
+STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Zmień nazwę posterunku
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na pozycji boi. Ctrl+klik otwiera nowy podgląd na lokacji boi
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Zmień nazwę boji
@@ -3676,11 +3676,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Wymaga:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}oczekuje
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} oczekuje{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
@@ -4145,9 +4143,9 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Koniec wsp
# Order bottom buttons
STR_ORDER_NON_STOP :{BLACK}Non-stop
STR_ORDER_GO_TO :Idź do
-STR_ORDER_GO_NON_STOP_TO :Idź bez przerwy do
+STR_ORDER_GO_NON_STOP_TO :Idź bezpośrednio do
STR_ORDER_GO_VIA :Idź przez
-STR_ORDER_GO_NON_STOP_VIA :Idź bez przerwy przez
+STR_ORDER_GO_NON_STOP_VIA :Idź bezpośrednio poprzez
STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Zmień sposób przejazdu w podświetlonym poleceniu
STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Pełny załadunek któregoś z towarów
@@ -4158,9 +4156,9 @@ STR_ORDER_DROP_NO_LOADING :Nie ładować
STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Zmień sposób załadunku w podświetlonym poleceniu
STR_ORDER_TOGGLE_UNLOAD :{BLACK}Rozładuj i załaduj
-STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Wyładuj jeśli akceptowane
-STR_ORDER_DROP_UNLOAD :Rozładuj i załaduj
-STR_ORDER_DROP_TRANSFER :Przeładunek
+STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Rozładuj jeśli akceptowane
+STR_ORDER_DROP_UNLOAD :Rozładuj wszystko
+STR_ORDER_DROP_TRANSFER :Pozostaw do przeładunku
STR_ORDER_DROP_NO_UNLOADING :Nie rozładowuj
STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Zmień sposób wyładunku w podświetlonym poleceniu
@@ -4196,7 +4194,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :mniejszy lub r
STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :większy niż
STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :większy lub równy
STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :prawda
-STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :fałsz
+STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :nie prawda
STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Wartość do porównania z danymi pojazdu
STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Podaj wartość do porównania
@@ -4221,15 +4219,15 @@ STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Pokaż w
# String parts to build the order string
STR_ORDER_GO_TO_WAYPOINT :Idź przez {WAYPOINT}
-STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idź bez zatrzymywania przez {WAYPOINT}
+STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idź bezpośrednio poprzez {WAYPOINT}
STR_ORDER_SERVICE_AT :Serwisuj w
STR_ORDER_SERVICE_NON_STOP_AT :Serwisuj non-stop w
-STR_ORDER_NEAREST_DEPOT :najbliższych
-STR_ORDER_NEAREST_HANGAR :najbliższy hangar
-STR_ORDER_TRAIN_DEPOT :Warsztatów
-STR_ORDER_ROAD_VEHICLE_DEPOT :Zajezdni samochodowej
+STR_ORDER_NEAREST_DEPOT :najbliższego
+STR_ORDER_NEAREST_HANGAR :najbliższego hangaru
+STR_ORDER_TRAIN_DEPOT :serwisu w warsztatach
+STR_ORDER_ROAD_VEHICLE_DEPOT :serwisu w zajezdni
STR_ORDER_SHIP_DEPOT :Doku
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
@@ -4240,7 +4238,7 @@ STR_ORDER_STOP_ORDER :(Stop)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
-STR_ORDER_IMPLICIT :(Sugerujący)
+STR_ORDER_IMPLICIT :(sugerowany)
STR_ORDER_FULL_LOAD :(Pełny załadunek)
STR_ORDER_FULL_LOAD_ANY :(Pełny załadunek dowolnego towaru)
@@ -4281,7 +4279,7 @@ STR_ORDER_OUT_OF_RANGE :{RED} (Kolejny
STR_ORDER_CONDITIONAL_UNCONDITIONAL :Skocz do rozkazu {COMMA}
STR_ORDER_CONDITIONAL_NUM :Skocz do rozkazu {COMMA} kiedy {STRING} {STRING} {COMMA}
-STR_ORDER_CONDITIONAL_TRUE_FALSE :Skocz do rozkazu {COMMA} kiedy {STRING} {STRING}
+STR_ORDER_CONDITIONAL_TRUE_FALSE :Skocz do rozkazu {0:COMMA} kiedy {2:STRING} że {1:STRING}
STR_INVALID_ORDER :{RED} (Błędne polecenie)
@@ -4640,15 +4638,15 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Należy
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Należy najpierw usunąć lotnisko
# Waypoint related errors
-STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednego istniejącego pkt. orientacyjnego
-STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Zbyt blisko innego pkt. orientacyjnego
+STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednego istniejącego posterunku
+STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Zbyt blisko innego posterunku
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Nie można budować tutaj punktu orientacyjnego...
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Nie można tutaj ustawić boi...
-STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nie można zmienić nazwy pkt. orientacyjnego...
+STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nie można zmienić nazwy posterunku...
-STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nie można usunąć stąd kolejowego punktu orientacyjnego...
-STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Musisz usunąć najpierw punkt nawigacyjny
+STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nie można usunąć stąd posterunku kolejowego...
+STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Musisz usunąć najpierw posterunek kolejowy
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boja na drodze
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boja w użyciu przez inna firmę!
@@ -5302,8 +5300,8 @@ STR_FORMAT_WAYPOINT_NAME_SERIAL :Post. {TOWN} #{
STR_FORMAT_DEPOT_NAME_TRAIN :Warsztaty {TOWN}
STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Warsztaty {TOWN} #{COMMA}
-STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Zajezdnia samochodowa {TOWN}
-STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Zajezdnia samochodowa {TOWN} #{COMMA}
+STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Zajezdnia {TOWN}
+STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Zajezdnia {TOWN} #{COMMA}
STR_FORMAT_DEPOT_NAME_SHIP :Stocznia {TOWN}
STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Stocznia {TOWN} #{COMMA}
STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangar {STATION}
diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt
index 8fc61c35ef..65ad9c6661 100644
--- a/src/lang/portuguese.txt
+++ b/src/lang/portuguese.txt
@@ -1199,9 +1199,9 @@ STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Tamanho máximo de túneis: {STRING}
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Tamanho máximo para construção de túneis
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de financiamento de indústrias primárias: {STRING}
-STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de financiar uma indústria pirmária. 'nenhum' significa que não é possível financiar nenhuma, 'prospecção' significa que é possível financiar, mas a construção é feita num local arbitrário no mapa e até pode falhar, 'como outras indústrias' significa que as indústrias de matérias primas podem ser construídas por companhias como indústrias de processamento em qualquer sítio que elas escolham
+STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de financiar uma indústria primária. 'nenhum' significa que não é possível financiar nenhuma, 'prospecção' significa que é possível financiar, mas a construção é feita num local arbitrário no mapa e até pode falhar, 'como as outras' significa que as indústrias de matérias primas podem ser construídas em qualquer sítio pelas empresas, como se fossem indústrias de processamento
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum
-STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Mesmo método
+STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como as outras
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospecção
STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana à volta das industrias: {STRING}
STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano á volta de uma industria. Isto garante que terreno vazio esteja disponível para construir linhas, etc
@@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Deslocar com botão esquerdo: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activar deslocamento do mapa através de arrastamento com o botão esquerdo do rato. Esta opção é particularmente útil quando é usado um ecran de toque para deslocamento
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janelas ao fazer clique direito: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao fazer clique direito dentro dela. Desactiva os textos de ajuda ao fazer clique direito!
STR_CONFIG_SETTING_AUTOSAVE :Guardar automaticamente: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleccione o intervalo entre gravações automáticas
@@ -1402,7 +1404,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar horári
STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING}
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-seleccionar o 'cursor Ir Para' ao abrir a janela de ordens
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo padrão de ferrovia (ao criar ou abrir jogo): {STRING}
-STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carrir seleccionado após o início ou carregamento de um jogo. 'primeiro disponível' selecciona o tipo mais antigo de carril, 'último disponível' selecciona o tipo mais recente de carril e 'mais utilizado' selecciona o tipo mais utilizado actualmente
+STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carril seleccionado após o início ou carregamento de um jogo. 'primeiro disponível' selecciona o tipo mais antigo de carril, 'último disponível' selecciona o tipo mais recente de carril e 'mais utilizado' selecciona o tipo mais utilizado actualmente
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primeiro disponível
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último disponível
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mais utilizado
@@ -1762,6 +1764,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Verifica
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostrar definições de IA e de script de jogo
STR_INTRO_TOOLTIP_QUIT :{BLACK}Sair de 'OpenTTD'
+STR_INTRO_BASESET :{BLACK}O conjunto de gráficos base seleccionado tem {NUM} sprite{P "" s} em falta. Por favor verifique se existem atualizações para o conjunto.
STR_INTRO_TRANSLATION :{BLACK}Faltam {NUM} string{P "" s} nesta tradução. Ajude o OpenTTD em inscrever-se como tradutor. Leia readme.txt para mais detalhes.
# Quit window
@@ -2590,6 +2593,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceite: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
+STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de carril: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite de velocidade da linha: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da estrada: {LTBLUE}{VELOCITY}
@@ -2602,29 +2606,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neve
STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto
-STR_LAI_RAIL_DESCRIPTION_TRACK :Caminhos-de-ferro linha
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Caminhos-de-ferro linha com sinais de bloqueio
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Caminhos-de-ferro linha com pre-sinais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Caminhos-de-ferro linha com sinais de saída
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Caminhos-de-ferro linha com sinais combinados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Caminhos-de-ferro linha com sinais de caminho
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de sentido único
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Caminhos-de-ferro linha com bloqueio e pré-sinais
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de saida
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais combinados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de rota
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de sentido único
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de saida
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais combinados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de rota
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de sentido único
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Caminhos-de-ferro linha com sinais de saida e sinais combinados
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Caminhos-de-ferro linha com sinais de saida e sinais de rota
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de saida e de sentido único
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Caminhos-de-ferro linha com sinais combinados e sinais de rota
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais combinados e sentido unico
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de rota e de sentido unico
-STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Caminhos-de-ferro depósito de comboios
+STR_LAI_RAIL_DESCRIPTION_TRACK :Linha de caminhos-de-ferro
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Linha de caminhos-de-ferro com pre-sinais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Linha de caminhos-de-ferro com sinais de saída
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais combinados
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de rota
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e pré-sinais
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de saida
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e combinados
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de rota
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de saida
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais combinados
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de rota
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais de saida e combinados
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de saida e de rota
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de saida e de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Linha de caminhos-de-ferro com sinais combinados e de rota
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais combinados e de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de rota e de sentido único
+STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de comboios de caminhos-de-ferro
STR_LAI_ROAD_DESCRIPTION_ROAD :Estrada
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Estrada com iluminação
@@ -2688,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno proprie
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos de autor originais {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipa do OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipa do OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo
@@ -3293,6 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessá
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requer:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a aguardar{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}
@@ -3361,6 +3368,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos o
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
+STR_GROUP_PROFIT_THIS_YEAR :Lucro deste ano:
+STR_GROUP_PROFIT_LAST_YEAR :Lucro no último ano:
+STR_GROUP_OCCUPANCY :Utilização actual:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Veículos Ferroviários
@@ -3393,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos os tipos
STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. Força de Tracção: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados
+STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de veículos ferroviários - clique num veículo para informações
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de veículos rodoviários - clique num veículo para informações
@@ -3524,9 +3536,13 @@ STR_ENGINE_PREVIEW_SHIP :barco
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotiva monocarril
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva maglev
-STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de circulação: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG}
-STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER} Máx. F.T.: {6:FORCE}{}Custo de circulação: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG}
-STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Máx. Velocidade: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de circulação: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade Máx.: {VELOCITY} Potência: {POWER}{}Custo de Circulação: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG}
+STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade Máx.: {VELOCITY} Potência: {POWER} F.T. Máx.: {6:FORCE}{}Custo de Circulação: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG}
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING}{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING} - {STRING}
@@ -3556,6 +3572,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pression
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Alternar entre a janela de substituição de locomotivas e a janela de substituição de vagões
STR_REPLACE_ENGINES :Locomotivas
STR_REPLACE_WAGONS :Vagões
+STR_REPLACE_ALL_RAILTYPE :Todos os veículos ferroviários
STR_REPLACE_HELP_RAILTYPE :{BLACK}Seleccione o tipo de carril para o qual deseja efectuar a substituição dos motores
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Exibe o tipo de motor que substituirá o que está seleccionado à esquerda, se algum
@@ -3648,6 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ano{P "
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Máx. velocidade: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. máxima: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Max. velocidade: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Máx. velocidade: {LTBLUE}{VELOCITY} {BLACK}Máx. E.T.: {LTBLUE}{FORCE}
@@ -4018,7 +4037,7 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo
STR_AI_SETTINGS_CLOSE :{BLACK}Fechar
STR_AI_SETTINGS_RESET :{BLACK}Repor
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
-STR_AI_SETTINGS_START_DELAY :Número de dias para iniciar esta IA depois da anterior (tomar ou lorgar): {ORANGE}{STRING}
+STR_AI_SETTINGS_START_DELAY :Número de dias para iniciar esta IA depois da anterior (aproximadamente): {ORANGE}{STRING}
# Textfile window
diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt
index 69b3c11a18..a2aa17927e 100644
--- a/src/lang/romanian.txt
+++ b/src/lang/romanian.txt
@@ -2652,7 +2652,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren în propr
STR_ABOUT_OPENTTD :{WHITE}Despre OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Toate drepturile rezervate
STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Echipa OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Echipa OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
index bdc0a8dd7f..45b3be2c6d 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
@@ -2871,7 +2871,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земля в
STR_ABOUT_OPENTTD :{WHITE}Об OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинальные авторские права {COPYRIGHT} 1995 Chris Sawyer. Все права защищены.
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Команда разработчиков OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Команда разработчиков OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру
@@ -3477,10 +3477,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Треб
############ range for requires ends
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Требуется:
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}ожидает
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ожидает{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt
index 5a81456990..155772ce5d 100644
--- a/src/lang/serbian.txt
+++ b/src/lang/serbian.txt
@@ -2882,7 +2882,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemljište u po
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originalni kopirajt {COPYRIGHT} 1995 Chris Sawyer, Sva prava zadržana
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju
diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt
index b00dfef89e..d8e9f0c8c6 100644
--- a/src/lang/simplified_chinese.txt
+++ b/src/lang/simplified_chinese.txt
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司属地
STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 团队
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 团队
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏
@@ -3293,8 +3293,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}需要
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}等待中
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 等待中{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING}
@@ -3363,6 +3363,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :移除所有车
STR_GROUP_RENAME_CAPTION :{BLACK}重命名分组
+STR_GROUP_PROFIT_THIS_YEAR :今年利润:
STR_GROUP_PROFIT_LAST_YEAR :去年利润
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
@@ -3562,6 +3563,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}点击
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}可以切换 机车/挂车 替换项目
STR_REPLACE_ENGINES :机车
STR_REPLACE_WAGONS :挂车
+STR_REPLACE_ALL_RAILTYPE :所有铁路车辆
STR_REPLACE_HELP_RAILTYPE :{BLACK}选择要更新的车辆对应的铁路类型
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}显示用来替换左侧被选定车辆的新车辆
diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt
index eaf1b59285..4e28c45c02 100644
--- a/src/lang/slovak.txt
+++ b/src/lang/slovak.txt
@@ -2755,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Spoločnosťou
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pôvodný copyright: {COPYRIGHT} 1995 Chris Sawyer, všetky práva vyhradené
STR_ABOUT_VERSION :{BLACK}OpenTTD verzia {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 team OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 team OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru
diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt
index 5f1598beb6..5fd44b4d36 100644
--- a/src/lang/slovenian.txt
+++ b/src/lang/slovenian.txt
@@ -1525,6 +1525,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izklop
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Premik slike z levim klikom: {STRING}
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Omogoči pomik pogleda z levim klikom miške in vlečenjem. Primerno za dotične zaslone.
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zapri okno z desnim klikom: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Samodejno shrani: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Izberi časovni interval samodejnega shranjevanja igre
@@ -2840,7 +2841,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ozemlje v lasti
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne avtorske pravice {COPYRIGHT} 1995 Chris Sawyer, vse pravice pridržane
STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 ekipa OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 ekipa OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro
@@ -3679,6 +3680,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetna lokomo
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER}{}Cena delovanja: {CURRENCY_LONG}/leto{}Zmogljivost: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER} Max. T.E.: {6:FORCE}{}Stroški: {4:CURRENCY_LONG}/yr{}Zmogljivost: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Vrsta letala: {STRING}{}Zmogljivost: {CARGO_LONG}{}Stroški obratovanja: {CURRENCY_LONG}/leto
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Zamenjaj {STRING} - {STRING}
diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt
index 5e27b22c4d..6993b7b04b 100644
--- a/src/lang/spanish.txt
+++ b/src/lang/spanish.txt
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied
STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 El equipo OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 El equipo OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necesita
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperando
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt
index 11e2c22f12..739cfa37a3 100644
--- a/src/lang/spanish_MX.txt
+++ b/src/lang/spanish_MX.txt
@@ -55,7 +55,7 @@ STR_CARGO_PLURAL_CANDY :{G=m}Dulces
STR_CARGO_PLURAL_COLA :{G=f}Bebida de cola
STR_CARGO_PLURAL_COTTON_CANDY :{G=m}Algodón de azúcar
STR_CARGO_PLURAL_BUBBLES :{G=f}Burbujas
-STR_CARGO_PLURAL_TOFFEE :{G=m}Jamoncillos
+STR_CARGO_PLURAL_TOFFEE :{G=m}Caramelos suaves
STR_CARGO_PLURAL_BATTERIES :{G=f}Pilas
STR_CARGO_PLURAL_PLASTIC :{G=m}Plástico
STR_CARGO_PLURAL_FIZZY_DRINKS :{G=m}Refrescos
@@ -89,7 +89,7 @@ STR_CARGO_SINGULAR_CANDY :{G=m}Dulce
STR_CARGO_SINGULAR_COLA :{G=f}Bebida de cola
STR_CARGO_SINGULAR_COTTON_CANDY :{G=m}Algodón de azúcar
STR_CARGO_SINGULAR_BUBBLE :{G=f}Burbuja
-STR_CARGO_SINGULAR_TOFFEE :{G=m}Jamoncillo
+STR_CARGO_SINGULAR_TOFFEE :{G=m}Caramelo suave
STR_CARGO_SINGULAR_BATTERY :{G=f}Pila
STR_CARGO_SINGULAR_PLASTIC :{G=m}Plástico
STR_CARGO_SINGULAR_FIZZY_DRINK :{G=m}Refresco
@@ -123,7 +123,7 @@ STR_QUANTITY_SWEETS :{COMMA}{NBSP}bo
STR_QUANTITY_COLA :{VOLUME_LONG} de cola
STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algo{P dón dones} de azúcar
STR_QUANTITY_BUBBLES :{COMMA} burbuja{P "" s}
-STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de jamoncillo{P "" s}
+STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de caramelo suave
STR_QUANTITY_BATTERIES :{COMMA} pila{P "" s}
STR_QUANTITY_PLASTIC :{VOLUME_LONG} de plásticos
STR_QUANTITY_FIZZY_DRINKS :{COMMA} refresco{P "" s}
@@ -131,39 +131,39 @@ STR_QUANTITY_N_A :N/A
# Two letter abbreviation of cargo name
STR_ABBREV_NOTHING :
-STR_ABBREV_PASSENGERS :{TINY_FONT}PJ
-STR_ABBREV_COAL :{TINY_FONT}CB
-STR_ABBREV_MAIL :{TINY_FONT}CR
-STR_ABBREV_OIL :{TINY_FONT}PT
-STR_ABBREV_LIVESTOCK :{TINY_FONT}GN
-STR_ABBREV_GOODS :{TINY_FONT}MC
+STR_ABBREV_PASSENGERS :{TINY_FONT}PS
+STR_ABBREV_COAL :{TINY_FONT}CA
+STR_ABBREV_MAIL :{TINY_FONT}CO
+STR_ABBREV_OIL :{TINY_FONT}PE
+STR_ABBREV_LIVESTOCK :{TINY_FONT}GA
+STR_ABBREV_GOODS :{TINY_FONT}ME
STR_ABBREV_GRAIN :{TINY_FONT}GR
-STR_ABBREV_WOOD :{TINY_FONT}MD
-STR_ABBREV_IRON_ORE :{TINY_FONT}MH
+STR_ABBREV_WOOD :{TINY_FONT}MA
+STR_ABBREV_IRON_ORE :{TINY_FONT}HI
STR_ABBREV_STEEL :{TINY_FONT}AC
-STR_ABBREV_VALUABLES :{TINY_FONT}VA
-STR_ABBREV_COPPER_ORE :{TINY_FONT}MC
+STR_ABBREV_VALUABLES :{TINY_FONT}OV
+STR_ABBREV_COPPER_ORE :{TINY_FONT}CB
STR_ABBREV_MAIZE :{TINY_FONT}MZ
-STR_ABBREV_FRUIT :{TINY_FONT}FT
-STR_ABBREV_DIAMONDS :{TINY_FONT}DM
+STR_ABBREV_FRUIT :{TINY_FONT}FR
+STR_ABBREV_DIAMONDS :{TINY_FONT}DI
STR_ABBREV_FOOD :{TINY_FONT}AL
-STR_ABBREV_PAPER :{TINY_FONT}PP
+STR_ABBREV_PAPER :{TINY_FONT}PA
STR_ABBREV_GOLD :{TINY_FONT}OR
STR_ABBREV_WATER :{TINY_FONT}AG
-STR_ABBREV_WHEAT :{TINY_FONT}TG
-STR_ABBREV_RUBBER :{TINY_FONT}GA
+STR_ABBREV_WHEAT :{TINY_FONT}TR
+STR_ABBREV_RUBBER :{TINY_FONT}CH
STR_ABBREV_SUGAR :{TINY_FONT}AZ
-STR_ABBREV_TOYS :{TINY_FONT}JG
-STR_ABBREV_SWEETS :{TINY_FONT}DC
+STR_ABBREV_TOYS :{TINY_FONT}JU
+STR_ABBREV_SWEETS :{TINY_FONT}DU
STR_ABBREV_COLA :{TINY_FONT}CL
STR_ABBREV_CANDYFLOSS :{TINY_FONT}AA
STR_ABBREV_BUBBLES :{TINY_FONT}BU
-STR_ABBREV_TOFFEE :{TINY_FONT}JM
+STR_ABBREV_TOFFEE :{TINY_FONT}CS
STR_ABBREV_BATTERIES :{TINY_FONT}PI
STR_ABBREV_PLASTIC :{TINY_FONT}PL
-STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}RF
-STR_ABBREV_NONE :{TINY_FONT}NO
-STR_ABBREV_ALL :{TINY_FONT}TOD
+STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}RE
+STR_ABBREV_NONE :{TINY_FONT}NADA
+STR_ABBREV_ALL :{TINY_FONT}TODO
# 'Mode' of transport for cargoes
STR_PASSENGERS :{COMMA}{NBSP}pasajero{P "" s}
@@ -212,7 +212,7 @@ STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}ga
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l
STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³
-STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gal{P ón ones}
+STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP} gal{P ón ones}
STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" s}
STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³
@@ -247,7 +247,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Arrastra
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Cambiar entre tamaño de ventana grande o pequeño
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento (mueve la lista arriba o abajo)
STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento (mueve la lista izquierda o derecha)
-STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un área de terreno. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio
+STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un área de terreno. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio
# Show engines button
STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar ocultos
@@ -271,7 +271,7 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :°!"#$%&/()=?¡
# Measurement tooltip
STR_MEASURE_LENGTH :{BLACK}Longitud: {NUM}
-STR_MEASURE_AREA :{BLACK}Área: {NUM} x {NUM}
+STR_MEASURE_AREA :{BLACK}Área: {NUM} × {NUM}
STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longitud: {NUM}{}Diferencia altura: {HEIGHT}
STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: {NUM}×{NUM}{}Diferencia altura: {HEIGHT}
@@ -598,8 +598,8 @@ STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPAN
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniero
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Director de Tráfico
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de Transporte
-STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Ruta
-STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Directivo
+STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Rutas
+STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Jefe
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Subdirector
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente
@@ -804,7 +804,7 @@ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLAC
STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}¡Empresa de transporte en problemas!
STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} será vendida o declarada en bancarrota de no incrementar su desempeño pronto!
-STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}¡Fusión de empresa de transportes!
+STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}¡Fusión de empresas de transportes!
STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} fue vendida a {STRING} por {CURRENCY_LONG}!
STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}¡En bancarrota!
STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} fue cerrada por sus acreedores y todos sus activos fueron vendidos!
@@ -844,32 +844,32 @@ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tiene muy pocas órdenes en la lista
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tiene una orden vacía
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tiene órdenes duplicadas
-STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tiene en la lista una estación no válida
-STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tiene en la lista un aeropuerto con una pista muy corta
+STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tiene una estación no válida en la lista
+STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tiene un aeropuerto con una pista muy corta en la lista
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} se está haciendo viejo
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} se está haciendo muy viejo
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} se está haciendo muy viejo y requiere renovación urgente
STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} no encuentra una ruta para continuar
STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} se perdió
-STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}La utilidad del año pasado del {VEHICLE} fue de {CURRENCY_LONG}
+STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}La utilidad de {VEHICLE} el año pasado fue de {CURRENCY_LONG}
STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} no puede llegar al siguiente destino porque no está a su alcance
-STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} no avanza porque no pudo reequipar su carga
+STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} no avanza porque no pudo reformarse
STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Renovación automática fallida para {VEHICLE}{}{STRING}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} ahora disponible!
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}¡Nuev{G o a} {STRING} ahora disponible! - {ENGINE}
-STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ya no recibe {STRING}
-STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ya no recibe {STRING} ni {STRING}
-STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} recibe ahora {STRING}
-STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} recibe ahora {STRING} y {STRING}
+STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ya no acepta {STRING}
+STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ya no acepta {STRING} ni {STRING}
+STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} acepta ahora {STRING}
+STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} acepta ahora {STRING} y {STRING}
STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subsidio vencida:{}{}{STRING} de {STRING} a {STRING} ya no está subsidiado
STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidio retirado:{}{}El servicio de {STRING} desde {STRING} a {STRING} ya no está subsidiado
-STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Se ofrece subsidio.{}{}¡El primer servicio de {STRING} desde {STRING} a {STRING} tendrá subsidio durante un año parte del ayuntamiento local!
+STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Se ofrece subsidio.{}{}¡El primer servicio de {STRING} desde {STRING} a {STRING} tendrá subsidio durante un año por parte del ayuntamiento local!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará un 50% extra por un año!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará tasa doble durante un año!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará tasa triple durante un año!
@@ -1134,14 +1134,14 @@ STR_CONFIG_SETTING_COMPANIES_ALL :Todas las empre
STR_CONFIG_SETTING_NONE :Ninguno
STR_CONFIG_SETTING_ORIGINAL :Original
-STR_CONFIG_SETTING_REALISTIC :Simulado
+STR_CONFIG_SETTING_REALISTIC :Realista
STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Izquierda
STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Derecha
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Máximo préstamo inicial: {STRING}
-STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una empresa puede recibir como préstamo (sin tener en cuenta la inflación)
+STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una empresa puede pedir prestada (sin tener en cuenta la inflación)
STR_CONFIG_SETTING_INTEREST_RATE :Porcentaje de interés: {STRING}
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Porcentaje de interés de los préstamos; controla también la inflación, en caso de estar activada
STR_CONFIG_SETTING_RUNNING_COSTS :Costos de operación: {STRING}
@@ -1792,9 +1792,9 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Está
# Cheat window
STR_CHEATS :{WHITE}Trucos
-STR_CHEATS_TOOLTIP :{BLACK}Las casillas verificadas indican que ya se usó este truco
+STR_CHEATS_TOOLTIP :{BLACK}Las casillas marcadas indican que ya se usó este truco
STR_CHEATS_WARNING :{BLACK}¡Atención! Estás a punto de traicionar a tus competidores. Recuerda que siempre se recordará tal deshonra
-STR_CHEAT_MONEY :{LTBLUE}Recibir {CURRENCY_LONG} de dinero
+STR_CHEAT_MONEY :{LTBLUE}Añadir {CURRENCY_LONG} en efectivo
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jugar como la empresa: {ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Excavadora mágica (elimina industrias y objetos inamovibles): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Los túneles se pueden cruzar: {ORANGE}{STRING}
@@ -1810,18 +1810,18 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Cambiar
STR_CHEAT_SETUP_PROD :{LTBLUE}Permitir cambiar los valores de producción: {ORANGE}{STRING}
# Livery window
-STR_LIVERY_CAPTION :{WHITE}Diseño de colores corporativos
+STR_LIVERY_CAPTION :{WHITE}Nueva cromática
-STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostrar diseño general de colores
-STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostrar diseño general de colores para trenes
-STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostrar diseño general de colores para vehículos de carretera
-STR_LIVERY_SHIP_TOOLTIP :{BLACK}Mostrar diseño general de colores de colores para barcos
-STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostrar diseño general de colores de colores para aeronaves
-STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elegir el color principal para el diseño seleccionado. Ctrl+Clic para establecerlo como diseño general
-STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elegir el color secundario para el diseño seleccionado. Ctrl+Clic para establecerlo como diseño general
-STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elegir un solo diseño de colores, o Ctrl+Clic para elegir varios. Verificar cada una casilla para establecer diferentes combinaciones según el tipo de vehículo
+STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostrar cromática general
+STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostrar cromáticas para trenes
+STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostrar cromáticas para vehículos de carretera
+STR_LIVERY_SHIP_TOOLTIP :{BLACK}Mostrar cromáticas para barcos
+STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostrar cromáticas para aeronaves
+STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elegir el color principal para la cromática elegida. Ctrl+Clic para establecerlo como cromática general
+STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elegir el color secundario para el diseño seleccionado. Ctrl+Clic para establecerlo como cromática general
+STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elegir un solo tipo de cromática, o Ctrl+Clic para elegir varios. Marcar las casillas para establecer diferentes combinaciones según el tipo de vehículo
-STR_LIVERY_DEFAULT :Diseño de colores estándar
+STR_LIVERY_DEFAULT :Cromática estándar
STR_LIVERY_STEAM :Locomotora a vapor
STR_LIVERY_DIESEL :Locomotora de diésel
STR_LIVERY_ELECTRIC :Locomotora eléctrica
@@ -1857,7 +1857,7 @@ STR_FACE_FEMALE_BUTTON :{BLACK}Mujer
STR_FACE_FEMALE_TOOLTIP :{BLACK}Elegir cara femenina
STR_FACE_NEW_FACE_BUTTON :{BLACK}Nueva cara
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generar cara al azar
-STR_FACE_ADVANCED :{BLACK}Avanzada
+STR_FACE_ADVANCED :{BLACK}Avanzado
STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selección avanzada de caras
STR_FACE_SIMPLE :{BLACK}Simple
STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selección simple de caras
@@ -2191,7 +2191,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} cr
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} salió de la partida ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambió su nombre a {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} le dio a tu empresa {2:CURRENCY_LONG}
-STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {2:CURRENCY_LONG} entregado a la empresa {1:STRING}
+STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {2:CURRENCY_LONG} cedidos a la empresa {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha cerrado la sesión
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Se está reiniciando el servidor...{}Espera por favor...
@@ -2298,7 +2298,7 @@ STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Desactiv
STR_STATION_BUILD_COVERAGE_ON :{BLACK}Activado
STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}No mostrar área de recolección en el sitio planeado
STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Mostrar área de recolección en el sitio planeado
-STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Recibe: {GOLD}{CARGO_LIST}
+STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Acepta: {GOLD}{CARGO_LIST}
STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Provee: {GOLD}{CARGO_LIST}
# Join station window
@@ -2475,9 +2475,9 @@ STR_STATION_BUILD_NOISE :{BLACK}Ruido ge
# Landscaping toolbar
STR_LANDSCAPING_TOOLBAR :{WHITE}Modificación de terreno
-STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Disminuir una esquina del terreno. Al arrastrar el ratón se reduce la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl permite trazar una diagonal para seleccionar un área cuadrada.
-STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio
-STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivela un área de terreno a la altura de la primera esquina seleccionada. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio
+STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Disminuir una esquina del terreno. Al arrastrar el ratón se reduce la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal.
+STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio
+STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivela un área de terreno a la altura de la primera esquina seleccionada. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para usos futuros. Mayús muestra una estimación del precio
# Object construction window
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied
STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017, el equipo de OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018, el equipo de OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar partida
@@ -2938,7 +2938,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Archivos q
STR_NEWGRF_BROKEN :{WHITE}Es posible que el funcionamiento del NewGRF '{0:STRING}' cause desincronizaciones o errores
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Cambió el estado 'vagón con motor' para '{1:ENGINE}' cuando no estaba dentro de un depósito
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}cambió la longitud del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito
-STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Cambió la capacidad del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito o mientras no se estaba reequipando
+STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Cambió la capacidad del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito o mientras no se estaba reformando
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud no válida. Puede ser debido a problemas con los NewGRF. El juego puede fallar
STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' da información incorrecta
@@ -3097,7 +3097,7 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir a la
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referencia a objetivos no válida
# Station list window
-STR_STATION_LIST_TOOLTIP :{BLACK}Nombres de estación: Clic en un nombre para centrar la vista principal en la estación. Ctrl+Clic abre una ventana de vista en dicha ubicación
+STR_STATION_LIST_TOOLTIP :{BLACK}Nombres de estaciones: Clic en un nombre para centrar la vista principal en la estación. Ctrl+Clic abre una ventana de vista en dicha ubicación
STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantener pulsado Ctrl para seleccionar más de un elemento
STR_STATION_LIST_CAPTION :{WHITE}{COMPANY}: {COMMA} estaci{P ón ones}
STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES}
@@ -3113,9 +3113,9 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L
STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} en camino desde {STATION})
STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para cargar)
-STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Recibe
-STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de cargamento recibido
-STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Recibe: {WHITE}{CARGO_LIST}
+STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta
+STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Lista de cargamento aceptado
+STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: {WHITE}{CARGO_LIST}
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación tiene los derechos exclusivos de transporte en este pueblo.
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró los derechos exclusivos de transporte en este pueblo.
@@ -3131,11 +3131,11 @@ STR_STATION_VIEW_WAITING_AMOUNT :Cantidad: Esper
STR_STATION_VIEW_PLANNED_STATION :Estación: Planeado
STR_STATION_VIEW_PLANNED_AMOUNT :Cantidad: Planeado
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} desde {STATION}
-STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} por {STATION}
+STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} pasando por {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} a {STATION}
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} desde estación desconocida
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} a cualquier estación
-STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} por cualquier estación
+STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} pasando por cualquier estación
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} con salida desde esta estación
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} se detendrá en esta estación
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a esta estación
@@ -3271,7 +3271,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tranvía
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Casillas de agua:
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estaciones:
-STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Casillas de estación
+STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Casillas de estaciones
STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeropuertos
STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/año
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requiere
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requiere
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperando
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requiere:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
@@ -3401,7 +3399,7 @@ STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {G
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacidad: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagones con motor: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT}
-STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reequipamiento: {GOLD}{STRING}
+STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reforma: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Todo tipo de carga
STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. fuerza de tracción: {GOLD}{FORCE}
@@ -3606,10 +3604,10 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Esto com
STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forzar al tren a proceder sin esperar a que la señal le ceda vía libre
-STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reequipar tren para transportar otro tipo de cargamento
-STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reequipar vehículo de carretera para transportar otro tipo de cargamento
-STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reequipar barco para que transporte otro tipo de cargamento
-STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reequipar aeronave para llevar otro tipo de cargamento
+STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reformar tren para transportar otro tipo de cargamento
+STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reformar vehículo de carretera para transportar otro tipo de cargamento
+STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reformar barco para que transporte otro tipo de cargamento
+STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reformar aeronave para llevar otro tipo de cargamento
STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Cambiar dirección del tren
STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forzar al vehículo a girar en sentido opuesto
@@ -3722,35 +3720,35 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Mostrar
STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacidad: {LTBLUE}
# Vehicle refit
-STR_REFIT_CAPTION :{WHITE}{VEHICLE} (reequipar)
+STR_REFIT_CAPTION :{WHITE}{VEHICLE} (reformar)
STR_REFIT_TITLE :{GOLD}Elegir el nuevo tipo de cargamento:
-STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Costo por reequipar: {RED}{CURRENCY_LONG}
-STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reequipar: {GREEN}{CURRENCY_LONG}
-STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costo por reequipar: {RED}{CURRENCY_LONG}
-STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reequipar: {GREEN}{CURRENCY_LONG}
-STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Elegir los vehículos de ferrocarril a reequipar. Arrastrar con el ratón para elegir más de un vehículo. Clic en un espacio vacío para elegir el tren completo. Ctrl+Clic para elegir una unidad del tren y los vagones subsecuentes
+STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Costo por reformar: {RED}{CURRENCY_LONG}
+STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reformar: {GREEN}{CURRENCY_LONG}
+STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costo por reformar: {RED}{CURRENCY_LONG}
+STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reformar: {GREEN}{CURRENCY_LONG}
+STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Elegir los vehículos de ferrocarril a reformar. Arrastrar con el ratón para elegir más de un vehículo. Clic en un espacio vacío para elegir el tren completo. Ctrl+Clic para elegir una unidad del tren y los vagones subsecuentes
STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el tren
STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el vehículo de carretera
STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el barco
STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para la aeronave
-STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reequipar tren
-STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reequipar vehículo de carretera
-STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reequipar barco
-STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reequipar aeronave
+STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reformar tren
+STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reformar vehículo de carretera
+STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reformar barco
+STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reformar aeronave
-STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reequipar el tren para transportar el cargamento elegido
-STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reequipar el vehículo de carretera para transportar el cargamento elegido
-STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reequipar el barco para transportar el cargamento elegido
-STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reequipar la aeronave para transportar el cargamento elegido
+STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reformar el tren para transportar el cargamento elegido
+STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reformar el vehículo de carretera para transportar el cargamento elegido
+STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reformar el barco para transportar el cargamento elegido
+STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reformar la aeronave para transportar el cargamento elegido
# Order view
STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Órdenes)
STR_ORDERS_TIMETABLE_VIEW :{BLACK}Itinerario
STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Cambiar a la ventana de itinerarios
-STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de órdenes: Clic en una orden para seleccionarla. Ctrl+Clic para desplazarse a la estación indicada en la orden
+STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de órdenes: Clic en una orden para resaltarla. Ctrl+Clic para desplazarse a la estación indicada en la orden
STR_ORDER_INDEX :{COMMA}:{NBSP}
STR_ORDER_TEXT :{STRING} {STRING} {STRING}
@@ -3761,28 +3759,28 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Fin de órd
STR_ORDER_NON_STOP :{BLACK}Sin paradas
STR_ORDER_GO_TO :Ir a
STR_ORDER_GO_NON_STOP_TO :Ir sin paradas a
-STR_ORDER_GO_VIA :Ir por
+STR_ORDER_GO_VIA :Pasar por
STR_ORDER_GO_NON_STOP_VIA :Ir sin paradas por
-STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Cambiar el comportamiento de parada en la orden elegida
+STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Cambiar la forma de parada en la orden resaltada
-STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llenar cualquier carga
+STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llenar cualquiera
STR_ORDER_DROP_LOAD_IF_POSSIBLE :Cargar si hay disponible
-STR_ORDER_DROP_FULL_LOAD_ALL :Llenar todas las cargas
-STR_ORDER_DROP_FULL_LOAD_ANY :Llenar cualquier carga
+STR_ORDER_DROP_FULL_LOAD_ALL :Llenar todo
+STR_ORDER_DROP_FULL_LOAD_ANY :Llenar cualquiera
STR_ORDER_DROP_NO_LOADING :No cargar
-STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Cambiar el comportamiento de carga en la orden elegida
+STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Cambiar la forma de carga en la orden resaltada
STR_ORDER_TOGGLE_UNLOAD :{BLACK}Descargar todo
-STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descargar si es recibido
+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_TOOLTIP_UNLOAD :{BLACK}Cambiar el comportamiento de descarga en la orden elegida
+STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambiar la forma de descarga en la orden resaltada
-STR_ORDER_REFIT :{BLACK}Reequipar
-STR_ORDER_REFIT_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reequipar en esta orden. Ctrl+Clic para eliminar la orden
-STR_ORDER_REFIT_AUTO :{BLACK}Reequipar en estación
-STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reequipar en esta orden. Ctrl+Clic para eliminar la orden. Reequipar solo es posible si el vehículo lo permite
+STR_ORDER_REFIT :{BLACK}Reformar
+STR_ORDER_REFIT_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reformar en esta orden. Ctrl+Clic para eliminar la orden
+STR_ORDER_REFIT_AUTO :{BLACK}Reformar en estación
+STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reformar en esta orden. Ctrl+Clic para eliminar la orden. Reformar solo es posible si el vehículo lo permite
STR_ORDER_DROP_REFIT_AUTO :Cargamento fijo
STR_ORDER_DROP_REFIT_AUTO_ANY :Cargamento disponible
@@ -3806,21 +3804,21 @@ STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tiempo de vida
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Comparación de los datos del vehículo respecto al valor dado
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 menor 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_LESS_THAN :es menor que
+STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :es menor o igual que
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :es mayor que
+STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :es mayor o igual a
STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :es verdadero
STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :es falso
STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}El valor contra el cual comparar de los datos del vehículo
-STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Indicar el valor contra el cual comparar
+STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Indicar el valor a comparar
-STR_ORDERS_SKIP_BUTTON :{BLACK}Saltar
-STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignorar la orden actual y saltar a la siguiente. Ctrl+Clic salta a la orden elegida
+STR_ORDERS_SKIP_BUTTON :{BLACK}Ignorar
+STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignorar la orden actual y proceder con la siguiente. Ctrl+Clic para iniciar la orden resaltada
STR_ORDERS_DELETE_BUTTON :{BLACK}Eliminar
-STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eliminar orden marcada
+STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eliminar orden resaltada
STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Eliminar todas las órdenes
STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Dejar de compartir
STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Dejar de compartir la lista de órdenes. Ctrl+Clic elimina también todas las órdenes de este vehículo
@@ -3835,11 +3833,11 @@ STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Añadir
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Ver todos los vehículos que comparten el mismo itinerario
# String parts to build the order string
-STR_ORDER_GO_TO_WAYPOINT :Ir por {WAYPOINT}
-STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sin paradas por {WAYPOINT}
+STR_ORDER_GO_TO_WAYPOINT :Ir pasando por {WAYPOINT}
+STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sin paradas pasando por {WAYPOINT}
STR_ORDER_SERVICE_AT :Mantenimiento en
-STR_ORDER_SERVICE_NON_STOP_AT :Mantenimiento sin paradas en
+STR_ORDER_SERVICE_NON_STOP_AT :Ir a sin paradas a mantenimiento en
STR_ORDER_NEAREST_DEPOT :el más cercano
STR_ORDER_NEAREST_HANGAR :el hangar más cercano
@@ -3849,8 +3847,8 @@ STR_ORDER_SHIP_DEPOT :astillero de ba
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
-STR_ORDER_REFIT_ORDER :(Reequipar a {STRING})
-STR_ORDER_REFIT_STOP_ORDER :(Reequipar a {STRING} y detenerse)
+STR_ORDER_REFIT_ORDER :(Reformar a {STRING})
+STR_ORDER_REFIT_STOP_ORDER :(Reformar a {STRING} y detenerse)
STR_ORDER_STOP_ORDER :(Detenerse)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
@@ -3861,7 +3859,7 @@ STR_ORDER_FULL_LOAD :(Llenar todo)
STR_ORDER_FULL_LOAD_ANY :(Llenar cualquiera)
STR_ORDER_NO_LOAD :(No cargar)
STR_ORDER_UNLOAD :(Descargar y cargar)
-STR_ORDER_UNLOAD_FULL_LOAD :(Descargar y llenar)
+STR_ORDER_UNLOAD_FULL_LOAD :(Descargar y llenar todo)
STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Descargar y llenar cualquiera)
STR_ORDER_UNLOAD_NO_LOAD :(Descargar y dejar vacío)
STR_ORDER_TRANSFER :(Transferir y cargar)
@@ -3869,22 +3867,22 @@ STR_ORDER_TRANSFER_FULL_LOAD :(Transferir y l
STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferir y llenar cualquiera)
STR_ORDER_TRANSFER_NO_LOAD :(Transferir y dejar vacío)
STR_ORDER_NO_UNLOAD :(No descargar y cargar)
-STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descargar y llenar)
+STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descargar y llenar todo)
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No descargar y llenar cualquiera)
STR_ORDER_NO_UNLOAD_NO_LOAD :(No descargar ni cargar)
-STR_ORDER_AUTO_REFIT :(Reequipar a {STRING})
-STR_ORDER_FULL_LOAD_REFIT :(Reequipar a {STRING} y llenar)
-STR_ORDER_FULL_LOAD_ANY_REFIT :(Reequipar a {STRING} y llenar cualquiera)
-STR_ORDER_UNLOAD_REFIT :(Descargar y cargar con reequipamiento a {STRING})
-STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y llenar con reequipamiento a {STRING})
-STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y llenar cualquiera con reequipamiento a {STRING})
-STR_ORDER_TRANSFER_REFIT :(Transferir y cargar con reequipamiento a {STRING})
-STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y llenar con reequipamiento a {STRING})
-STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y llenar cualquiera con reequipamiento a {STRING})
-STR_ORDER_NO_UNLOAD_REFIT :(No descargar y cargar con reequipamiento a {STRING})
-STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y llenar con reequipamiento a {STRING})
-STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y llenar cualquiera con reequipamiento a {STRING})
+STR_ORDER_AUTO_REFIT :(Reformar a {STRING})
+STR_ORDER_FULL_LOAD_REFIT :(Llenar todo y reformar a{STRING})
+STR_ORDER_FULL_LOAD_ANY_REFIT :(Llenar cualquiera y reformar a {STRING})
+STR_ORDER_UNLOAD_REFIT :(Descargar y cargar con reforma a {STRING})
+STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y llenar todo con reforma a {STRING})
+STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y llenar cualquiera con reforma a {STRING})
+STR_ORDER_TRANSFER_REFIT :(Transferir y cargar con reforma a {STRING})
+STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y llenar con reforma a {STRING})
+STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y llenar cualquiera con reforma a {STRING})
+STR_ORDER_NO_UNLOAD_REFIT :(No descargar y cargar con reforma a {STRING})
+STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y llenar todo con reforma a {STRING})
+STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y llenar cualquiera con reforma a {STRING})
STR_ORDER_AUTO_REFIT_ANY :cargamento disponible
@@ -3892,7 +3890,7 @@ STR_ORDER_STOP_LOCATION_NEAR_END :[principio]
STR_ORDER_STOP_LOCATION_MIDDLE :[centro]
STR_ORDER_STOP_LOCATION_FAR_END :[fondo]
-STR_ORDER_OUT_OF_RANGE :{RED} (El sig. destino está legos del alcance)
+STR_ORDER_OUT_OF_RANGE :{RED} (El siguiente destino está muy lejos)
STR_ORDER_CONDITIONAL_UNCONDITIONAL :Saltar a orden {COMMA}
STR_ORDER_CONDITIONAL_NUM :Saltar a orden {COMMA} cuando {STRING} {STRING} {COMMA}
@@ -3916,9 +3914,9 @@ STR_TIMETABLE_TRAVEL_FOR_SPEED :Viajar durante
STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajar (durante {STRING}, no programado)
STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajar (durante {STRING}, no programado) a {VELOCITY} como máximo
STR_TIMETABLE_STAY_FOR_ESTIMATED :(esperar {STRING}, no programado)
-STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar por {STRING}, no programado)
+STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar {STRING}, no programado)
STR_TIMETABLE_STAY_FOR :y esperar {STRING}
-STR_TIMETABLE_AND_TRAVEL_FOR :y viajar por {STRING}
+STR_TIMETABLE_AND_TRAVEL_FOR :y viajar {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}día{P "" s}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s}
@@ -3949,8 +3947,8 @@ STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Borrar e
STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar retrasos
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar el contador del retraso para que el vehículo vaya a tiempo
-STR_TIMETABLE_AUTOFILL :{BLACK}Rellenar automáticamente
-STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Rellenar la tabla de itinerarios automáticamente con los valores del siguiente recorrido (Ctrl+Clic para intentar mantener los tiempos de espera)
+STR_TIMETABLE_AUTOFILL :{BLACK}Llenar automáticamente
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Llenar la tabla de itinerarios automáticamente con los valores del siguiente recorrido (Ctrl+Clic para intentar mantener los tiempos de espera)
STR_TIMETABLE_EXPECTED :{BLACK}Esperado
STR_TIMETABLE_SCHEDULED :{BLACK}Programado
@@ -4100,7 +4098,7 @@ STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... no h
STR_ERROR_PNGMAP :{WHITE}No se puede cargar mapa desde PNG...
STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... archivo no encontrado
STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... no se pudo convertir el tipo de imagen. Se requieren imágenes PNG de 8 o 24 bits
-STR_ERROR_PNGMAP_MISC :{WHITE}... algo salió mal (quizá el archivo esté tenga errores)
+STR_ERROR_PNGMAP_MISC :{WHITE}... algo salió mal (quizá el archivo está dañado)
STR_ERROR_BMPMAP :{WHITE}No se pudo cargar mapa desde BMP...
STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... no se pudo convertir el tipo de imagen
@@ -4127,13 +4125,13 @@ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mensaje
# Generic construction errors
STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Fuera del borde del mapa
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Demasiado cerca del borde del mapa
-STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}No hay suficiente dinero: se requieren {CURRENCY_LONG}
+STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}No alcanza el dinero: se necesitan {CURRENCY_LONG}
STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Se requiere terreno plano
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tierra inclinada en dirección errónea
STR_ERROR_CAN_T_DO_THIS :{WHITE}No se puede hacer eso...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Primero se debe demoler el edificio
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}No se puede despejar esta zona...
-STR_ERROR_SITE_UNSUITABLE :{WHITE}... lugar no apropiado
+STR_ERROR_SITE_UNSUITABLE :{WHITE}... lugar no apto
STR_ERROR_ALREADY_BUILT :{WHITE}... ya construido
STR_ERROR_OWNED_BY :{WHITE}... propiedad de {STRING}
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... otra empresa es dueña de esta área
@@ -4174,7 +4172,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No se pu
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No se puede construir la sede de la empresa...
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No se puede comprar el 25% de acciones...
STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}No se puede vender el 25% de acciones...
-STR_ERROR_PROTECTED :{WHITE}Esta empresa es aún muy reciente para comerciar con acciones...
+STR_ERROR_PROTECTED :{WHITE}Esta empresa es muy reciente para comerciar con acciones...
# Town related errors
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede crear ningún pueblo
@@ -4185,10 +4183,10 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... dema
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cerca de otro pueblo
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiados pueblos
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ya no hay espacio en el mapa
-STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. La función de construcción de carreteras puede activarse Configuración->Ambiente->Pueblos
+STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. La función de construcción de carreteras puede activarse en Configuración->Ambiente->Pueblos
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obras de carretera en progreso
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede eliminar este pueblo...{}Quedan estaciones o depósitos relacionados con él, o una propiedad suya no puede ser retirada
-STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay lugar apropiado para una estatua en el centro de esta pueblo
+STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay ningún lugar apto para una estatua en el centro de este pueblo
# Industry related errors
STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas industrias
@@ -4209,8 +4207,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... los
STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... solo se puede construir por encima del nivel de nieve
STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... solo se puede construir por debajo del nivel de nieve
-STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No hubo sitios apropiados para industrias '{STRING}'
-STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia los parámetros de generación para obtener un mejor mapa
+STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No hubo espacio para industrias de tipo "{STRING}"
+STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia las opciones de generación para crear un mejor mapa
# Station construction related errors
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}No se puede construir la estación de tren aquí...
@@ -4227,7 +4225,7 @@ STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Demasiad
STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Demasiadas partes de estación de tren
STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paradas de autobuses
STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Demasiadas estaciones de camiones
-STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado cerca de otra estación de pasajeros o carga
+STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado cerca de otra estación o zona de carga
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Demasiado cerca de otro muelle
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Demasiado cerca de otro aeropuerto
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}No se puede cambiar nombre de la estación...
@@ -4280,14 +4278,14 @@ STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... pued
STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... puede que esté detenido dentro de un astillero
STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... puede que esté detenido dentro de un hangar
-STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Los trenes únicamente pueden modificarse si están detenidos dentro de un depósito
+STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Los trenes pueden modificarse solo si están detenidos dentro de un depósito
STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tren demasiado largo
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}No se puede cambiar dirección del vehículo...
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... vehículo compuesto por múltiples unidades
STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Los tipos de vías férreas no son compatibles
STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}No se puede mover vehículo...
-STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}El motor posterior debe seguir siempre al delantero
+STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}La locomotora trasera debe conectarse a la delantera
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}No se puede encontrar ruta al depósito
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}No se puede encontrar depósito
@@ -4359,14 +4357,14 @@ STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}No se pu
STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lugar no apto para entrada de túnel
STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Primero se debe demoler el túnel
STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Otro túnel obstaculiza
-STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}El túnel terminaría fuera del mapa
+STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}El túnel se extendería más allá del mapa
STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}No se puede excavar la tierra al otro lado del túnel
STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... túnel demasiado largo
# Object related errors
STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... demasiados objetos
STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}No se puede colocar objeto...
-STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Otro objeto obstaculiza
+STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Otro objeto estorba
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... la sede de la empresa obstaculiza
STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}No es posible adquirir este terreno...
STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ¡ya fue adquirido por el jugador!
@@ -4381,15 +4379,15 @@ STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}No se pu
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}No se pueden añadir vehículos compartidos al grupo...
# Generic vehicle errors
-STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tren obstaculiza
-STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehículo de carretera obstaculiza
-STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Barco obstaculiza
+STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tren estorba
+STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehículo de carretera estorba
+STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Barco estorba
STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave obstaculiza
-STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No se puede reequipar tren...
-STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No se puede reequipar vehículo de carretera...
-STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}No se puede reequipar barco...
-STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}No se puede reequipar aeronave...
+STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No se puede reformar tren...
+STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No se puede reformar vehículo de carretera...
+STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}No se puede reformar barco...
+STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}No se puede reformar aeronave...
STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}No se puede cambiar nombre del tren...
STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}No se puede cambiar nombre del vehículo...
@@ -4467,7 +4465,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... la a
# Timetable related errors
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}No se pueden asignar itinerarios al vehículo...
STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Los vehículos solo pueden esperar en estaciones
-STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo se detendrá en esta estación
+STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo no se detendrá en esta estación
# Sign related errors
STR_ERROR_TOO_MANY_SIGNS :{WHITE}... demasiados carteles
@@ -4495,7 +4493,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Edificio de ofi
STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Conjunto habitacional pequeño
STR_TOWN_BUILDING_NAME_CHURCH_1 :Iglesia
STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Complejo de oficinas
-STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas de pueblo
+STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas adosadas
STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel
STR_TOWN_BUILDING_NAME_STATUE_1 :Estatua
STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fuente
@@ -4584,7 +4582,7 @@ STR_SV_STNAME_TRANSFER :Transferencia {
STR_SV_STNAME_HALT :Parada {STRING}
STR_SV_STNAME_VALLEY :Valle de {STRING}
STR_SV_STNAME_HEIGHTS :Altos de {STRING}
-STR_SV_STNAME_WOODS :Alameda de {STRING}
+STR_SV_STNAME_WOODS :Bosques de {STRING}
STR_SV_STNAME_LAKESIDE :Lago de {STRING}
STR_SV_STNAME_EXCHANGE :Intercambio {STRING}
STR_SV_STNAME_AIRPORT :Aeropuerto de {STRING}
diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt
index e884079d44..255967c9d7 100644
--- a/src/lang/swedish.txt
+++ b/src/lang/swedish.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Mark som ägs a
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig upphovsrätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter hävdas
STR_ABOUT_VERSION :{BLACK}OpenTTD-version {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel
@@ -3296,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kräver:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kräver
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}väntar
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kräver:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} väntar{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerar: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt
index c0df044d1f..ec3ef56fff 100644
--- a/src/lang/tamil.txt
+++ b/src/lang/tamil.txt
@@ -2378,7 +2378,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவ
STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ஐ பற்றி
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அசல் உரிமைகள் {COPYRIGHT} 1995 கிறிஸ் சாயர், எல்லா உரிமைகளும் பதிவுசெய்யப்பட்டது
STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD குழுமம்
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD குழுமம்
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய்
diff --git a/src/lang/thai.txt b/src/lang/thai.txt
index 1d2ff09156..d939eeeeac 100644
--- a/src/lang/thai.txt
+++ b/src/lang/thai.txt
@@ -2635,7 +2635,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษั
STR_ABOUT_OPENTTD :{WHITE}เกี่ยวกับ OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิขสิทธิ์เดิม {COPYRIGHT} ค.ศ.1995 ของ Chris Sawyer, สงวนลิขสิทธิ์
STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2017 ของ The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2018 ของ The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม
diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt
index 7346889e4a..7ce922edc1 100644
--- a/src/lang/traditional_chinese.txt
+++ b/src/lang/traditional_chinese.txt
@@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司所有土
STR_ABOUT_OPENTTD :{WHITE}關於 OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原著作權為 {COPYRIGHT} 1995 Chris Sawyer,保留所有權利
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 開發小組
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 開發小組
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲
diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt
index f34035c22c..763fb2a65a 100644
--- a/src/lang/turkish.txt
+++ b/src/lang/turkish.txt
@@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Satın alınmı
STR_ABOUT_OPENTTD :{WHITE}OpenTTD Hakkında
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Telif hakkı {COPYRIGHT} 1995 Chris Sawyer, Her hakkı saklıdır
STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD ekibi
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD ekibi
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet
@@ -3297,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}İstenen
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}İstenenler: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}bekliyor
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} bekliyor{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt
index 1b3e3a42bb..dbb815d2dc 100644
--- a/src/lang/ukrainian.txt
+++ b/src/lang/ukrainian.txt
@@ -2818,7 +2818,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ця ділян
STR_ABOUT_OPENTTD :{WHITE}Про OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторське право {COPYRIGHT} 1995 Кріс Сойєр, Всі права захищені
STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 команда OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 команда OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру
diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt
index 2b0b989323..051b62c843 100644
--- a/src/lang/unfinished/frisian.txt
+++ b/src/lang/unfinished/frisian.txt
@@ -2475,7 +2475,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Lân fan bedriu
STR_ABOUT_OPENTTD :{WHITE}Oer OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjineel copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 It OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 It OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan
diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt
index ff0ad37f4e..4f4d4846ff 100644
--- a/src/lang/unfinished/ido.txt
+++ b/src/lang/unfinished/ido.txt
@@ -776,7 +776,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di komp
# About OpenTTD window
STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La kruo OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La kruo OpenTTD
# Save/load game/scenario
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali
diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt
index f3b4cbaaec..6a0157c5a8 100644
--- a/src/lang/unfinished/macedonian.txt
+++ b/src/lang/unfinished/macedonian.txt
@@ -1202,7 +1202,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Компани
STR_ABOUT_OPENTTD :{WHITE}За OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинален copyright {COPYRIGHT} 1995 Chris Sawyer, Сите права се задржани
STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD тимот
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD тимот
# Save/load game/scenario
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување
diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt
index 14a70bab4e..9701899630 100644
--- a/src/lang/unfinished/persian.txt
+++ b/src/lang/unfinished/persian.txt
@@ -2389,7 +2389,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :زمین خری
STR_ABOUT_OPENTTD :{WHITE}OpenTTD در باره ی
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی
diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt
index c9ef33616e..19fbce1cfd 100644
--- a/src/lang/vietnamese.txt
+++ b/src/lang/vietnamese.txt
@@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Đất công ty
STR_ABOUT_OPENTTD :{WHITE}Về OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Nguyên tác bản quyền {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD phiên bản {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Nhóm OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Nhóm OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi
@@ -3296,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Yêu c
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
-STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Cần cung cấp
-STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}đang chờ
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
-STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Cần cung cấp:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} đang chờ{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Sản xuất: {YELLOW}{STRING}{STRING}
diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt
index 4519d0e919..35027d48fc 100644
--- a/src/lang/welsh.txt
+++ b/src/lang/welsh.txt
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir cwmni
STR_ABOUT_OPENTTD :{WHITE}Gwybodaeth am OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hawlfraint Wreiddiol {COPYRIGHT} 1995 Chris Sawyer, Holl cedwir pob hawl
STR_ABOUT_VERSION :{BLACK}fersiwn OpenTTD {REV}
-STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Y tîm OpenTTD
+STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Y tîm OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
index ca43119d22..af04b99817 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -398,6 +398,7 @@ static const char * const _credits[] = {
"Original graphics by Simon Foster",
"",
"The OpenTTD team (in alphabetical order):",
+ " Grzegorz Duczy\xC5\x84ski (adf88) - General coding (since 1.7.2)",
" Albert Hofkamp (Alberth) - GUI expert (since 0.7)",
" Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)",
" Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)",
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 4759c8a19c..d06d1c40a5 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -12,6 +12,7 @@
#include "stdafx.h"
#include
+#include
#include "debug.h"
#include "fileio_func.h"
@@ -3672,6 +3673,9 @@ static void DuplicateTileTable(AirportSpec *as)
HangarTileTable *depot_table = MallocT(as->nof_depots);
MemCpyT(depot_table, as->depot_table, as->nof_depots);
as->depot_table = depot_table;
+ Direction *rotation = MallocT(as->num_table);
+ MemCpyT(rotation, as->rotation, as->num_table);
+ as->rotation = rotation;
}
/**
@@ -3741,6 +3745,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B
}
case 0x0A: { // Set airport layout
+ free(as->rotation);
as->num_table = buf->ReadByte(); // Number of layaouts
as->rotation = MallocT(as->num_table);
uint32 defsize = buf->ReadDWord(); // Total size of the definition
@@ -4683,16 +4688,63 @@ static void NewSpriteGroup(ByteReader *buf)
group->adjusts = MallocT(group->num_adjusts);
MemCpyT(group->adjusts, adjusts.Begin(), group->num_adjusts);
- group->num_ranges = buf->ReadByte();
- if (group->num_ranges > 0) group->ranges = CallocT(group->num_ranges);
-
- for (uint i = 0; i < group->num_ranges; i++) {
- group->ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord());
- group->ranges[i].low = buf->ReadVarSize(varsize);
- group->ranges[i].high = buf->ReadVarSize(varsize);
+ std::vector ranges;
+ ranges.resize(buf->ReadByte());
+ for (uint i = 0; i < ranges.size(); i++) {
+ ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord());
+ ranges[i].low = buf->ReadVarSize(varsize);
+ ranges[i].high = buf->ReadVarSize(varsize);
}
group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord());
+ group->error_group = ranges.size() > 0 ? ranges[0].group : group->default_group;
+ /* nvar == 0 is a special case -- we turn our value into a callback result */
+ group->calculated_result = ranges.size() == 0;
+
+ /* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */
+ std::vector bounds;
+ for (uint i = 0; i < ranges.size(); i++) {
+ bounds.push_back(ranges[i].low);
+ if (ranges[i].high != UINT32_MAX) bounds.push_back(ranges[i].high + 1);
+ }
+ std::sort(bounds.begin(), bounds.end());
+ bounds.erase(std::unique(bounds.begin(), bounds.end()), bounds.end());
+
+ std::vector target;
+ for (uint j = 0; j < bounds.size(); ++j) {
+ uint32 v = bounds[j];
+ const SpriteGroup *t = group->default_group;
+ for (uint i = 0; i < ranges.size(); i++) {
+ if (ranges[i].low <= v && v <= ranges[i].high) {
+ t = ranges[i].group;
+ break;
+ }
+ }
+ target.push_back(t);
+ }
+ assert(target.size() == bounds.size());
+
+ std::vector optimised;
+ for (uint j = 0; j < bounds.size(); ) {
+ if (target[j] != group->default_group) {
+ DeterministicSpriteGroupRange r;
+ r.group = target[j];
+ r.low = bounds[j];
+ while (j < bounds.size() && target[j] == r.group) {
+ j++;
+ }
+ r.high = j < bounds.size() ? bounds[j] - 1 : UINT32_MAX;
+ optimised.push_back(r);
+ } else {
+ j++;
+ }
+ }
+
+ group->num_ranges = optimised.size();
+ if (group->num_ranges > 0) {
+ group->ranges = MallocT(group->num_ranges);
+ MemCpyT(group->ranges, &optimised.front(), group->num_ranges);
+ }
break;
}
diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp
index 6db12f7373..0863d09861 100644
--- a/src/newgrf_airport.cpp
+++ b/src/newgrf_airport.cpp
@@ -26,7 +26,18 @@ struct AirportScopeResolver : public ScopeResolver {
byte layout; ///< Layout of the airport to build.
TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks.
- AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout);
+ /**
+ * Constructor of the scope resolver for an airport.
+ * @param ro Surrounding resolver.
+ * @param tile %Tile for the callback, only valid for airporttile callbacks.
+ * @param st %Station of the airport for which the callback is run, or \c NULL for build gui.
+ * @param airport_id Type of airport for which the callback is run.
+ * @param layout Layout of the airport to build.
+ */
+ AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout)
+ : ScopeResolver(ro), st(st), airport_id(airport_id), layout(layout), tile(tile)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
@@ -242,22 +253,6 @@ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte a
this->root_spritegroup = AirportSpec::Get(airport_id)->grf_prop.spritegroup[0];
}
-/**
- * Constructor of the scope resolver for an airport.
- * @param ro Surrounding resolver.
- * @param tile %Tile for the callback, only valid for airporttile callbacks.
- * @param st %Station of the airport for which the callback is run, or \c NULL for build gui.
- * @param airport_id Type of airport for which the callback is run.
- * @param layout Layout of the airport to build.
- */
-AirportScopeResolver::AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) : ScopeResolver(ro)
-{
- this->st = st;
- this->airport_id = airport_id;
- this->layout = layout;
- this->tile = tile;
-}
-
SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout)
{
AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout);
diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp
index 5eb24f670f..2d3a5129c9 100644
--- a/src/newgrf_airporttiles.cpp
+++ b/src/newgrf_airporttiles.cpp
@@ -222,21 +222,6 @@ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats,
this->root_spritegroup = ats->grf_prop.spritegroup[0];
}
-/**
- * Constructor of the scope resolver specific for airport tiles.
- * @param ats Specification of the airport tiles.
- * @param tile %Tile for the callback, only valid for airporttile callbacks.
- * @param st Station of the airport for which the callback is run, or \c NULL for build gui.
- */
-AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) : ScopeResolver(ro)
-{
- assert(st != NULL);
-
- this->st = st;
- this->airport_id = st->airport.type;
- this->tile = tile;
-}
-
uint16 GetAirportTileCallback(CallbackID callback, uint32 param1, uint32 param2, const AirportTileSpec *ats, Station *st, TileIndex tile, int extra_data = 0)
{
AirportTileResolverObject object(ats, tile, st, callback, param1, param2);
diff --git a/src/newgrf_airporttiles.h b/src/newgrf_airporttiles.h
index 4d25aa9240..dc04642037 100644
--- a/src/newgrf_airporttiles.h
+++ b/src/newgrf_airporttiles.h
@@ -17,6 +17,7 @@
#include "newgrf_animation_type.h"
#include "newgrf_commons.h"
#include "newgrf_spritegroup.h"
+#include "station_base.h"
/** Scope resolver for handling the tiles of an airport. */
struct AirportTileScopeResolver : public ScopeResolver {
@@ -24,7 +25,18 @@ struct AirportTileScopeResolver : public ScopeResolver {
byte airport_id; ///< Type of airport for which the callback is run.
TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks.
- AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st);
+ /**
+ * Constructor of the scope resolver specific for airport tiles.
+ * @param ats Specification of the airport tiles.
+ * @param tile %Tile for the callback, only valid for airporttile callbacks.
+ * @param st Station of the airport for which the callback is run, or \c NULL for build gui.
+ */
+ AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st)
+ : ScopeResolver(ro), st(st), tile(tile)
+ {
+ assert(st != NULL);
+ this->airport_id = st->airport.type;
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp
index cba19cbdba..3438bb9850 100644
--- a/src/newgrf_canal.cpp
+++ b/src/newgrf_canal.cpp
@@ -25,7 +25,10 @@ WaterFeature _water_feature[CF_END];
struct CanalScopeResolver : public ScopeResolver {
TileIndex tile; ///< Tile containing the canal.
- CanalScopeResolver(ResolverObject &ro, TileIndex tile);
+ CanalScopeResolver(ResolverObject &ro, TileIndex tile)
+ : ScopeResolver(ro), tile(tile)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
@@ -110,11 +113,6 @@ struct CanalResolverObject : public ResolverObject {
return group->loaded[0];
}
-CanalScopeResolver::CanalScopeResolver(ResolverObject &ro, TileIndex tile) : ScopeResolver(ro)
-{
- this->tile = tile;
-}
-
/**
* Canal resolver constructor.
* @param feature Which canal feature we want.
diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp
index 8dd8d545a2..660b7e476b 100644
--- a/src/newgrf_engine.cpp
+++ b/src/newgrf_engine.cpp
@@ -347,21 +347,6 @@ static byte MapAircraftMovementAction(const Aircraft *v)
return this->v == NULL ? 0 : this->v->waiting_triggers;
}
-/* virtual */ void VehicleScopeResolver::SetTriggers(int triggers) const
-{
- /* Evil cast to get around const-ness. This used to be achieved by an
- * innocent looking function pointer cast... Currently I cannot see a
- * way of avoiding this without removing consts deep within gui code.
- */
- Vehicle *v = const_cast(this->v);
-
- /* This function must only be called when processing triggers -- any
- * other time is an error. */
- assert(this->ro.trigger != 0);
-
- if (v != NULL) v->waiting_triggers = triggers;
-}
-
/* virtual */ ScopeResolver *VehicleResolverObject::GetScope(VarSpriteGroupScope scope, byte relative)
{
@@ -952,21 +937,6 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object,
return in_motion ? group->loaded[set] : group->loading[set];
}
-/**
- * Scope resolver of a single vehicle.
- * @param ro Surrounding resolver.
- * @param engine_type Engine type
- * @param v %Vehicle being resolved.
- * @param info_view Indicates if the item is being drawn in an info window.
- */
-VehicleScopeResolver::VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view)
- : ScopeResolver(ro)
-{
- this->v = v;
- this->self_type = engine_type;
- this->info_view = info_view;
-}
-
/**
* Get the grf file associated with an engine type.
* @param engine_type Engine to query.
@@ -1140,13 +1110,18 @@ static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_rando
assert(v != NULL);
VehicleResolverObject object(v->engine_type, v, VehicleResolverObject::WO_CACHED, false, CBID_RANDOM_TRIGGER);
- object.trigger = trigger;
+ object.waiting_triggers = v->waiting_triggers | trigger;
+ v->waiting_triggers = object.waiting_triggers; // store now for var 5F
const SpriteGroup *group = object.Resolve();
if (group == NULL) return;
+ /* Store remaining triggers. */
+ v->waiting_triggers = object.GetRemainingTriggers();
+
+ /* Rerandomise bits. Scopes other than SELF are invalid for rerandomisation. For bug-to-bug-compatibility with TTDP we ignore the scope. */
byte new_random_bits = Random();
- uint32 reseed = object.GetReseedSum(); // The scope only affects triggers, not the reseeding
+ uint32 reseed = object.GetReseedSum();
v->random_bits &= ~reseed;
v->random_bits |= (first ? new_random_bits : base_random_bits) & reseed;
diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h
index 3c8108737c..51adb0b7fb 100644
--- a/src/newgrf_engine.h
+++ b/src/newgrf_engine.h
@@ -26,14 +26,23 @@ struct VehicleScopeResolver : public ScopeResolver {
EngineID self_type; ///< Type of the vehicle.
bool info_view; ///< Indicates if the item is being drawn in an info window.
- VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view);
+ /**
+ * Scope resolver of a single vehicle.
+ * @param ro Surrounding resolver.
+ * @param engine_type Engine type
+ * @param v %Vehicle being resolved.
+ * @param info_view Indicates if the item is being drawn in an info window.
+ */
+ VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view)
+ : ScopeResolver(ro), v(v), self_type(engine_type), info_view(info_view)
+ {
+ }
void SetVehicle(const Vehicle *v) { this->v = v; }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
/* virtual */ uint32 GetTriggers() const;
- /* virtual */ void SetTriggers(int triggers) const;
};
/** Resolver for a vehicle (chain) */
diff --git a/src/newgrf_generic.cpp b/src/newgrf_generic.cpp
index 9bd77239aa..6606422154 100644
--- a/src/newgrf_generic.cpp
+++ b/src/newgrf_generic.cpp
@@ -31,7 +31,16 @@ struct GenericScopeResolver : public ScopeResolver {
uint8 count;
uint8 station_size;
- GenericScopeResolver(ResolverObject &ro, bool ai_callback);
+ /**
+ * Generic scope resolver.
+ * @param ro Surrounding resolver.
+ * @param ai_callback Callback comes from the AI.
+ */
+ GenericScopeResolver(ResolverObject &ro, bool ai_callback)
+ : ScopeResolver(ro), cargo_type(0), default_selection(0), src_industry(0), dst_industry(0), distance(0),
+ event(), count(0), station_size(0), ai_callback(ai_callback)
+ {
+ }
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
@@ -145,24 +154,6 @@ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callba
{
}
-/**
- * Generic scope resolver.
- * @param ro Surrounding resolver.
- * @param ai_callback Callback comes from the AI.
- */
-GenericScopeResolver::GenericScopeResolver(ResolverObject &ro, bool ai_callback) : ScopeResolver(ro)
-{
- this->cargo_type = 0;
- this->default_selection = 0;
- this->src_industry = 0;
- this->dst_industry = 0;
- this->distance = 0;
- this->event = (AIConstructionEvent)0;
- this->count = 0;
- this->station_size = 0;
- this->ai_callback = ai_callback;
-}
-
/**
* Follow a generic feature callback list and return the first successful
diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp
index c4ad36f773..4f1847f036 100644
--- a/src/newgrf_house.cpp
+++ b/src/newgrf_house.cpp
@@ -31,28 +31,6 @@ static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX];
HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID);
-/**
- * Constructor of a house scope resolver.
- * @param ro Surrounding resolver.
- * @param house_id House type being queried.
- * @param tile %Tile containing the house.
- * @param town %Town containing the house.
- * @param not_yet_constructed House is still under construction.
- * @param initial_random_bits Random bits during construction checks.
- * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback.
- */
-HouseScopeResolver::HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town,
- bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers)
- : ScopeResolver(ro)
-{
- this->house_id = house_id;
- this->tile = tile;
- this->town = town;
- this->not_yet_constructed = not_yet_constructed;
- this->initial_random_bits = initial_random_bits;
- this->watched_cargo_triggers = watched_cargo_triggers;
-}
-
/**
* Retrieve the grf file associated with a house.
* @param house_id House to query.
@@ -169,12 +147,6 @@ void DecreaseBuildingCount(Town *t, HouseID house_id)
return this->not_yet_constructed ? 0 : GetHouseTriggers(this->tile);
}
-/* virtual */ void HouseScopeResolver::SetTriggers(int triggers) const
-{
- assert(!this->not_yet_constructed && IsValidTile(this->tile) && IsTileType(this->tile, MP_HOUSE));
- SetHouseTriggers(this->tile, triggers);
-}
-
static uint32 GetNumHouses(HouseID house_id, const Town *town)
{
uint8 map_id_count, town_id_count, map_class_count, town_class_count;
@@ -613,14 +585,19 @@ static void DoTriggerHouse(TileIndex tile, HouseTrigger trigger, byte base_rando
if (hs->grf_prop.spritegroup[0] == NULL) return;
HouseResolverObject object(hid, tile, Town::GetByTile(tile), CBID_RANDOM_TRIGGER);
- object.trigger = trigger;
+ object.waiting_triggers = GetHouseTriggers(tile) | trigger;
+ SetHouseTriggers(tile, object.waiting_triggers); // store now for var 5F
const SpriteGroup *group = object.Resolve();
if (group == NULL) return;
+ /* Store remaining triggers. */
+ SetHouseTriggers(tile, object.GetRemainingTriggers());
+
+ /* Rerandomise bits. Scopes other than SELF are invalid for houses. For bug-to-bug-compatibility with TTDP we ignore the scope. */
byte new_random_bits = Random();
byte random_bits = GetHouseRandomBits(tile);
- uint32 reseed = object.GetReseedSum(); // The scope only affects triggers, not the reseeding
+ uint32 reseed = object.GetReseedSum();
random_bits &= ~reseed;
random_bits |= (first ? new_random_bits : base_random) & reseed;
SetHouseRandomBits(tile, random_bits);
diff --git a/src/newgrf_house.h b/src/newgrf_house.h
index 37c1679470..0ac868d1e7 100644
--- a/src/newgrf_house.h
+++ b/src/newgrf_house.h
@@ -27,13 +27,26 @@ struct HouseScopeResolver : public ScopeResolver {
uint16 initial_random_bits; ///< Random bits during construction checks.
uint32 watched_cargo_triggers; ///< Cargo types that triggered the watched cargo callback.
+ /**
+ * Constructor of a house scope resolver.
+ * @param ro Surrounding resolver.
+ * @param house_id House type being queried.
+ * @param tile %Tile containing the house.
+ * @param town %Town containing the house.
+ * @param not_yet_constructed House is still under construction.
+ * @param initial_random_bits Random bits during construction checks.
+ * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback.
+ */
HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town,
- bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers);
+ bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers)
+ : ScopeResolver(ro), house_id(house_id), tile(tile), town(town), not_yet_constructed(not_yet_constructed),
+ initial_random_bits(initial_random_bits), watched_cargo_triggers(watched_cargo_triggers)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
/* virtual */ uint32 GetTriggers() const;
- /* virtual */ void SetTriggers(int triggers) const;
};
/** Resolver object to be used for houses (feature 07 spritegroups). */
diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp
index e8486e7604..7815ba36af 100644
--- a/src/newgrf_industries.cpp
+++ b/src/newgrf_industries.cpp
@@ -380,13 +380,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout
/* virtual */ uint32 IndustriesScopeResolver::GetTriggers() const
{
- return this->industry != NULL ? this->industry->random_triggers : 0;
-}
-
-/* virtual */ void IndustriesScopeResolver::SetTriggers(int triggers) const
-{
- assert(this->industry != NULL && this->industry->index != INVALID_INDUSTRY);
- this->industry->random_triggers = triggers;
+ return 0;
}
/* virtual */ void IndustriesScopeResolver::StorePSA(uint pos, int32 value)
@@ -463,23 +457,6 @@ TownScopeResolver *IndustriesResolverObject::GetTown()
return this->town_scope;
}
-/**
- * Scope resolver for industries.
- * @param ro Surrounding resolver.
- * @param tile %Tile owned by the industry.
- * @param industry %Industry being resolved.
- * @param type Type of the industry.
- * @param random_bits Random bits of the new industry.
- */
-IndustriesScopeResolver::IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits)
- : ScopeResolver(ro)
-{
- this->tile = tile;
- this->industry = industry;
- this->type = type;
- this->random_bits = random_bits;
-}
-
/**
* Perform an industry callback.
* @param callback The callback to perform.
diff --git a/src/newgrf_industries.h b/src/newgrf_industries.h
index 94a5021662..fa809fcd73 100644
--- a/src/newgrf_industries.h
+++ b/src/newgrf_industries.h
@@ -21,12 +21,22 @@ struct IndustriesScopeResolver : public ScopeResolver {
IndustryType type; ///< Type of the industry.
uint32 random_bits; ///< Random bits of the new industry.
- IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0);
+ /**
+ * Scope resolver for industries.
+ * @param ro Surrounding resolver.
+ * @param tile %Tile owned by the industry.
+ * @param industry %Industry being resolved.
+ * @param type Type of the industry.
+ * @param random_bits Random bits of the new industry.
+ */
+ IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0)
+ : ScopeResolver(ro), tile(tile), industry(industry), type(type), random_bits(random_bits)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
/* virtual */ uint32 GetTriggers() const;
- /* virtual */ void SetTriggers(int triggers) const;
/* virtual */ void StorePSA(uint pos, int32 value);
};
diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp
index ba92b1c05a..747829f452 100644
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -117,12 +117,6 @@ uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile)
return GetIndustryTriggers(this->tile);
}
-/* virtual */ void IndustryTileScopeResolver::SetTriggers(int triggers) const
-{
- assert(this->industry != NULL && this->industry->index != INVALID_INDUSTRY && IsValidTile(this->tile) && IsTileType(this->tile, MP_INDUSTRY));
- SetIndustryTriggers(this->tile, triggers);
-}
-
/**
* Get the associated NewGRF file from the industry graphics.
* @param gfx Graphics to query.
@@ -152,18 +146,6 @@ IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileInde
this->root_spritegroup = GetIndustryTileSpec(gfx)->grf_prop.spritegroup[0];
}
-/**
- * Constructor of the scope resolver for the industry tile.
- * @param ro Surrounding resolver.
- * @param industry %Industry owning the tile.
- * @param tile %Tile of the industry.
- */
-IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) : ScopeResolver(ro)
-{
- this->industry = industry;
- this->tile = tile;
-}
-
static void IndustryDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte rnd_colour, byte stage, IndustryGfx gfx)
{
const DrawTileSprites *dts = group->ProcessRegisters(&stage);
@@ -326,11 +308,16 @@ static void DoTriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger, I
if (itspec->grf_prop.spritegroup[0] == NULL) return;
IndustryTileResolverObject object(gfx, tile, ind, CBID_RANDOM_TRIGGER);
- object.trigger = trigger;
+ object.waiting_triggers = GetIndustryTriggers(tile) | trigger;
+ SetIndustryTriggers(tile, object.waiting_triggers); // store now for var 5F
const SpriteGroup *group = object.Resolve();
if (group == NULL) return;
+ /* Store remaining triggers. */
+ SetIndustryTriggers(tile, object.GetRemainingTriggers());
+
+ /* Rerandomise tile bits */
byte new_random_bits = Random();
byte random_bits = GetIndustryRandomBits(tile);
random_bits &= ~object.reseed[VSG_SCOPE_SELF];
diff --git a/src/newgrf_industrytiles.h b/src/newgrf_industrytiles.h
index 394f75e1c6..6051c1062b 100644
--- a/src/newgrf_industrytiles.h
+++ b/src/newgrf_industrytiles.h
@@ -21,12 +21,20 @@ struct IndustryTileScopeResolver : public ScopeResolver {
Industry *industry; ///< Industry owning the tiles.
TileIndex tile; ///< %Tile being resolved.
- IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile);
+ /**
+ * Constructor of the scope resolver for the industry tile.
+ * @param ro Surrounding resolver.
+ * @param industry %Industry owning the tile.
+ * @param tile %Tile of the industry.
+ */
+ IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile)
+ : ScopeResolver(ro), industry(industry), tile(tile)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
/* virtual */ uint32 GetTriggers() const;
- /* virtual */ void SetTriggers(int triggers) const;
};
/** Resolver for industry tiles. */
diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp
index 058d5e0c00..78bbc52443 100644
--- a/src/newgrf_object.cpp
+++ b/src/newgrf_object.cpp
@@ -128,21 +128,6 @@ bool NewGRFClass::IsUIAvailable(uint index) const
INSTANTIATE_NEWGRF_CLASS_METHODS(ObjectClass, ObjectSpec, ObjectClassID, OBJECT_CLASS_MAX)
-/**
- * Constructor of an object scope resolver.
- * @param ro Surrounding resolver.
- * @param obj Object being resolved.
- * @param tile %Tile of the object.
- * @param view View of the object.
- */
-ObjectScopeResolver::ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view)
- : ScopeResolver(ro)
-{
- this->obj = obj;
- this->tile = tile;
- this->view = view;
-}
-
/* virtual */ uint32 ObjectScopeResolver::GetRandomBits() const
{
return IsValidTile(this->tile) && IsTileType(this->tile, MP_OBJECT) ? GetObjectRandomBits(this->tile) : 0;
diff --git a/src/newgrf_object.h b/src/newgrf_object.h
index cbd06b6f6d..69e1a3299c 100644
--- a/src/newgrf_object.h
+++ b/src/newgrf_object.h
@@ -104,7 +104,17 @@ struct ObjectScopeResolver : public ScopeResolver {
TileIndex tile; ///< The tile related to the object.
uint8 view; ///< The view of the object.
- ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0);
+ /**
+ * Constructor of an object scope resolver.
+ * @param ro Surrounding resolver.
+ * @param obj Object being resolved.
+ * @param tile %Tile of the object.
+ * @param view View of the object.
+ */
+ ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0)
+ : ScopeResolver(ro), obj(obj), tile(tile), view(view)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp
index 8a074db974..624b0eca84 100644
--- a/src/newgrf_railtype.cpp
+++ b/src/newgrf_railtype.cpp
@@ -67,18 +67,6 @@
return NULL;
}
-/**
- * Constructor of the railtype scope resolvers.
- * @param ro Surrounding resolver.
- * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead.
- * @param context Are we resolving sprites for the upper halftile, or on a bridge?
- */
-RailTypeScopeResolver::RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) : ScopeResolver(ro)
-{
- this->tile = tile;
- this->context = context;
-}
-
/**
* Resolver object for rail types.
* @param rti Railtype. NULL in NewGRF Inspect window.
diff --git a/src/newgrf_railtype.h b/src/newgrf_railtype.h
index 4c68e7d1db..5fadcd2ab5 100644
--- a/src/newgrf_railtype.h
+++ b/src/newgrf_railtype.h
@@ -21,7 +21,16 @@ struct RailTypeScopeResolver : public ScopeResolver {
TileIndex tile; ///< Tracktile. For track on a bridge this is the southern bridgehead.
TileContext context; ///< Are we resolving sprites for the upper halftile, or on a bridge?
- RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context);
+ /**
+ * Constructor of the railtype scope resolvers.
+ * @param ro Surrounding resolver.
+ * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead.
+ * @param context Are we resolving sprites for the upper halftile, or on a bridge?
+ */
+ RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context)
+ : ScopeResolver(ro), tile(tile), context(context)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp
index c6fcd0a9e5..a5d689bbf9 100644
--- a/src/newgrf_spritegroup.cpp
+++ b/src/newgrf_spritegroup.cpp
@@ -10,6 +10,7 @@
/** @file newgrf_spritegroup.cpp Handling of primarily NewGRF action 2. */
#include "stdafx.h"
+#include
#include "debug.h"
#include "newgrf_spritegroup.h"
#include "core/pool_func.hpp"
@@ -60,11 +61,7 @@ RandomizedSpriteGroup::~RandomizedSpriteGroup()
static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available)
{
- /* First handle variables common with Action7/9/D */
uint32 value;
- if (GetGlobalVariable(variable, &value, object.grffile)) return value;
-
- /* Non-common variable */
switch (variable) {
case 0x0C: return object.callback;
case 0x10: return object.callback_param1;
@@ -79,18 +76,14 @@ static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *sc
if (object.grffile == NULL) return 0;
return object.grffile->GetParam(parameter);
- /* Not a common variable, so evaluate the feature specific variables */
- default: return scope->GetVariable(variable, parameter, available);
+ default:
+ /* First handle variables common with Action7/9/D */
+ if (variable < 0x40 && GetGlobalVariable(variable, &value, object.grffile)) return value;
+ /* Not a common variable, so evaluate the feature specific variables */
+ return scope->GetVariable(variable, parameter, available);
}
}
-ScopeResolver::ScopeResolver(ResolverObject &ro)
- : ro(ro)
-{
-}
-
-ScopeResolver::~ScopeResolver() {}
-
/**
* Get a few random bits. Default implementation has no random bits.
* @return Random bits.
@@ -109,12 +102,6 @@ ScopeResolver::~ScopeResolver() {}
return 0;
}
-/**
- * Set the triggers. Base class implementation does nothing.
- * @param triggers Triggers to set.
- */
-/* virtual */ void ScopeResolver::SetTriggers(int triggers) const {}
-
/**
* Get a variable value. Default implementation has no available variables.
* @param variable Variable to read
@@ -136,27 +123,6 @@ ScopeResolver::~ScopeResolver() {}
*/
/* virtual */ void ScopeResolver::StorePSA(uint reg, int32 value) {}
-/**
- * Resolver constructor.
- * @param grffile NewGRF file associated with the object (or \c NULL if none).
- * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK).
- * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set).
- * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set).
- */
-ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint32 callback_param1, uint32 callback_param2)
- : default_scope(*this)
-{
- this->callback = callback;
- this->callback_param1 = callback_param1;
- this->callback_param2 = callback_param2;
- this->ResetState();
-
- this->grffile = grffile;
- this->root_spritegroup = NULL;
-}
-
-ResolverObject::~ResolverObject() {}
-
/**
* Get the real sprites of the grf.
* @param group Group to get.
@@ -201,11 +167,9 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver
value >>= adjust->shift_num;
value &= adjust->and_mask;
- if (adjust->type != DSGA_TYPE_NONE) value += (S)adjust->add_val;
-
switch (adjust->type) {
- case DSGA_TYPE_DIV: value = (S)value / (S)adjust->divmod_val; break;
- case DSGA_TYPE_MOD: value = (S)value % (S)adjust->divmod_val; break;
+ case DSGA_TYPE_DIV: value = ((S)value + (S)adjust->add_val) / (S)adjust->divmod_val; break;
+ case DSGA_TYPE_MOD: value = ((S)value + (S)adjust->add_val) % (S)adjust->divmod_val; break;
case DSGA_TYPE_NONE: break;
}
@@ -238,6 +202,11 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver
}
+static bool RangeHighComparator(const DeterministicSpriteGroupRange& range, uint32 value)
+{
+ return range.high < value;
+}
+
const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) const
{
uint32 last_value = 0;
@@ -269,7 +238,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
if (!available) {
/* Unsupported variable: skip further processing and return either
* the group from the first range or the default group. */
- return SpriteGroup::Resolve(this->num_ranges > 0 ? this->ranges[0].group : this->default_group, object, false);
+ return SpriteGroup::Resolve(this->error_group, object, false);
}
switch (this->size) {
@@ -283,7 +252,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
object.last_value = last_value;
- if (this->num_ranges == 0) {
+ if (this->calculated_result) {
/* nvar == 0 is a special case -- we turn our value into a callback result */
if (value != CALLBACK_FAILED) value = GB(value, 0, 15);
static CallbackResultSpriteGroup nvarzero(0, true);
@@ -291,9 +260,17 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
return &nvarzero;
}
- for (i = 0; i < this->num_ranges; i++) {
- if (this->ranges[i].low <= value && value <= this->ranges[i].high) {
- return SpriteGroup::Resolve(this->ranges[i].group, object, false);
+ if (this->num_ranges > 4) {
+ DeterministicSpriteGroupRange *lower = std::lower_bound(this->ranges + 0, this->ranges + this->num_ranges, value, RangeHighComparator);
+ if (lower != this->ranges + this->num_ranges && lower->low <= value) {
+ assert(lower->low <= value && value <= lower->high);
+ return SpriteGroup::Resolve(lower->group, object, false);
+ }
+ } else {
+ for (i = 0; i < this->num_ranges; i++) {
+ if (this->ranges[i].low <= value && value <= this->ranges[i].high) {
+ return SpriteGroup::Resolve(this->ranges[i].group, object, false);
+ }
}
}
@@ -304,21 +281,15 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject &object) const
{
ScopeResolver *scope = object.GetScope(this->var_scope, this->count);
- if (object.trigger != 0) {
+ if (object.callback == CBID_RANDOM_TRIGGER) {
/* Handle triggers */
- /* Magic code that may or may not do the right things... */
- byte waiting_triggers = scope->GetTriggers();
- byte match = this->triggers & (waiting_triggers | object.trigger);
+ byte match = this->triggers & object.waiting_triggers;
bool res = (this->cmp_mode == RSG_CMP_ANY) ? (match != 0) : (match == this->triggers);
if (res) {
- waiting_triggers &= ~match;
+ object.used_triggers |= match;
object.reseed[this->var_scope] |= (this->num_groups - 1) << this->lowest_randbit;
- } else {
- waiting_triggers |= object.trigger;
}
-
- scope->SetTriggers(waiting_triggers);
}
uint32 mask = (this->num_groups - 1) << this->lowest_randbit;
diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h
index 0a7705d667..6adf7c2ac8 100644
--- a/src/newgrf_spritegroup.h
+++ b/src/newgrf_spritegroup.h
@@ -174,13 +174,16 @@ struct DeterministicSpriteGroup : SpriteGroup {
VarSpriteGroupScope var_scope;
DeterministicSpriteGroupSize size;
uint num_adjusts;
- byte num_ranges;
+ uint num_ranges;
+ bool calculated_result;
DeterministicSpriteGroupAdjust *adjusts;
DeterministicSpriteGroupRange *ranges; // Dynamically allocated
/* Dynamically allocated, this is the sole owner */
const SpriteGroup *default_group;
+ const SpriteGroup *error_group; // was first range, before sorting ranges
+
protected:
const SpriteGroup *Resolve(ResolverObject &object) const;
};
@@ -288,12 +291,11 @@ struct IndustryProductionSpriteGroup : SpriteGroup {
struct ScopeResolver {
ResolverObject &ro; ///< Surrounding resolver object.
- ScopeResolver(ResolverObject &ro);
- virtual ~ScopeResolver();
+ ScopeResolver(ResolverObject &ro) : ro(ro) {}
+ virtual ~ScopeResolver() {}
virtual uint32 GetRandomBits() const;
virtual uint32 GetTriggers() const;
- virtual void SetTriggers(int triggers) const;
virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
virtual void StorePSA(uint reg, int32 value);
@@ -306,8 +308,20 @@ struct ScopeResolver {
* to get the results of callbacks, rerandomisations or normal sprite lookups.
*/
struct ResolverObject {
- ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0);
- virtual ~ResolverObject();
+ /**
+ * Resolver constructor.
+ * @param grffile NewGRF file associated with the object (or \c NULL if none).
+ * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK).
+ * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set).
+ * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set).
+ */
+ ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0)
+ : default_scope(*this), callback(callback), callback_param1(callback_param1), callback_param2(callback_param2), grffile(grffile), root_spritegroup(NULL)
+ {
+ this->ResetState();
+ }
+
+ virtual ~ResolverObject() {}
ScopeResolver default_scope; ///< Default implementation of the grf scope.
@@ -315,9 +329,10 @@ struct ResolverObject {
uint32 callback_param1; ///< First parameter (var 10) of the callback.
uint32 callback_param2; ///< Second parameter (var 18) of the callback.
- byte trigger;
-
uint32 last_value; ///< Result of most recent DeterministicSpriteGroup (including procedure calls)
+
+ uint32 waiting_triggers; ///< Waiting triggers to be used by any rerandomisation. (scope independent)
+ uint32 used_triggers; ///< Subset of cur_triggers, which actually triggered some rerandomisation. (scope independent)
uint32 reseed[VSG_END]; ///< Collects bits to rerandomise while triggering triggers.
const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to
@@ -346,6 +361,14 @@ struct ResolverObject {
virtual ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0);
+ /**
+ * Returns the waiting triggers that did not trigger any rerandomisation.
+ */
+ uint32 GetRemainingTriggers() const
+ {
+ return this->waiting_triggers & ~this->used_triggers;
+ }
+
/**
* Returns the OR-sum of all bits that need reseeding
* independent of the scope they were accessed with.
@@ -367,7 +390,8 @@ struct ResolverObject {
void ResetState()
{
this->last_value = 0;
- this->trigger = 0;
+ this->waiting_triggers = 0;
+ this->used_triggers = 0;
memset(this->reseed, 0, sizeof(this->reseed));
}
};
diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp
index 37db2f8416..dee2755a3b 100644
--- a/src/newgrf_station.cpp
+++ b/src/newgrf_station.cpp
@@ -235,13 +235,6 @@ static uint32 GetRailContinuationInfo(TileIndex tile)
}
-/* virtual */ void StationScopeResolver::SetTriggers(int triggers) const
-{
- BaseStation *st = const_cast(this->st);
- assert(st != NULL);
- st->waiting_triggers = triggers;
-}
-
/**
* Station variable cache
* This caches 'expensive' station variable lookups which iterate over
@@ -585,23 +578,6 @@ StationResolverObject::~StationResolverObject()
delete this->town_scope;
}
-/**
- * Constructor for station scopes.
- * @param ro Surrounding resolver.
- * @param statspec Station (type) specification.
- * @param st Instance of the station.
- * @param tile %Tile of the station.
- */
-StationScopeResolver::StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile)
- : ScopeResolver(ro)
-{
- this->tile = tile;
- this->st = st;
- this->statspec = statspec;
- this->cargo_type = CT_INVALID;
- this->axis = INVALID_AXIS;
-}
-
/**
* Resolve sprites for drawing a station tile.
* @param statspec Station spec
@@ -997,8 +973,9 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg
}
}
- /* Convert trigger to bit */
- uint8 trigger_bit = 1 << trigger;
+ /* Store triggers now for var 5F */
+ SetBit(st->waiting_triggers, trigger);
+ uint32 used_triggers = 0;
/* Check all tiles over the station to check if the specindex is still in use */
TILE_AREA_LOOP(tile, area) {
@@ -1014,11 +991,13 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg
if (cargo_type == CT_INVALID || HasBit(ss->cargo_triggers, cargo_type)) {
StationResolverObject object(ss, st, tile, CBID_RANDOM_TRIGGER, 0);
- object.trigger = trigger_bit;
+ object.waiting_triggers = st->waiting_triggers;
const SpriteGroup *group = object.Resolve();
if (group == NULL) continue;
+ used_triggers |= object.used_triggers;
+
uint32 reseed = object.GetReseedSum();
if (reseed != 0) {
whole_reseed |= reseed;
@@ -1037,6 +1016,7 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg
}
/* Update whole station random bits */
+ st->waiting_triggers &= ~used_triggers;
if ((whole_reseed & 0xFFFF) != 0) {
st->random_bits &= ~whole_reseed;
st->random_bits |= Random() & whole_reseed;
diff --git a/src/newgrf_station.h b/src/newgrf_station.h
index b9333c1053..5413a4c08f 100644
--- a/src/newgrf_station.h
+++ b/src/newgrf_station.h
@@ -30,11 +30,20 @@ struct StationScopeResolver : public ScopeResolver {
CargoID cargo_type; ///< Type of cargo of the station.
Axis axis; ///< Station axis, used only for the slope check callback.
- StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile);
+ /**
+ * Constructor for station scopes.
+ * @param ro Surrounding resolver.
+ * @param statspec Station (type) specification.
+ * @param st Instance of the station.
+ * @param tile %Tile of the station.
+ */
+ StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile)
+ : ScopeResolver(ro), tile(tile), st(st), statspec(statspec), cargo_type(CT_INVALID), axis(INVALID_AXIS)
+ {
+ }
/* virtual */ uint32 GetRandomBits() const;
/* virtual */ uint32 GetTriggers() const;
- /* virtual */ void SetTriggers(int triggers) const;
/* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
};
diff --git a/src/newgrf_town.cpp b/src/newgrf_town.cpp
index 2f48eb757d..820e2be689 100644
--- a/src/newgrf_town.cpp
+++ b/src/newgrf_town.cpp
@@ -16,18 +16,6 @@
#include "safeguards.h"
-/**
- * Resolver of a town scope.
- * @param ro Surrounding resolver.
- * @param t %Town of the scope.
- * @param readonly Scope may change persistent storage of the town.
- */
-TownScopeResolver::TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) : ScopeResolver(ro)
-{
- this->t = t;
- this->readonly = readonly;
-}
-
/* virtual */ uint32 TownScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const
{
switch (variable) {
diff --git a/src/newgrf_town.h b/src/newgrf_town.h
index 145571e8ae..7c4fb5395c 100644
--- a/src/newgrf_town.h
+++ b/src/newgrf_town.h
@@ -25,7 +25,16 @@ struct TownScopeResolver : public ScopeResolver {
Town *t; ///< %Town of the scope.
bool readonly; ///< When set, persistent storage of the town is read-only,
- TownScopeResolver(ResolverObject &ro, Town *t, bool readonly);
+ /**
+ * Resolver of a town scope.
+ * @param ro Surrounding resolver.
+ * @param t %Town of the scope.
+ * @param readonly Scope may change persistent storage of the town.
+ */
+ TownScopeResolver(ResolverObject &ro, Town *t, bool readonly)
+ : ScopeResolver(ro), t(t), readonly(readonly)
+ {
+ }
virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const;
virtual void StorePSA(uint reg, int32 value);
diff --git a/src/os/windows/ottdres.rc.in b/src/os/windows/ottdres.rc.in
index fca129c6a6..b96b0faa9f 100644
--- a/src/os/windows/ottdres.rc.in
+++ b/src/os/windows/ottdres.rc.in
@@ -100,7 +100,7 @@ BEGIN
VALUE "FileDescription", "OpenTTD\0"
VALUE "FileVersion", "!!VERSION!!\0"
VALUE "InternalName", "openttd\0"
- VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2017. All Rights Reserved.\0"
+ VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2018. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "openttd.exe\0"
VALUE "PrivateBuild", "\0"
diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp
index 54ae67cf15..1cc74ff86f 100644
--- a/src/saveload/extended_ver_sl.cpp
+++ b/src/saveload/extended_ver_sl.cpp
@@ -61,6 +61,8 @@ bool SlXvFeatureTest::IsFeaturePresent(uint16 savegame_version, uint16 savegame_
{
bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to;
+ if (this->functor) return (*this->functor)(savegame_version, savegame_version_ok);
+
if (this->feature == XSLFI_NULL) return savegame_version_ok;
bool feature_ok = SlXvIsFeaturePresent(this->feature, this->min_version, this->max_version);
diff --git a/src/saveload/extended_ver_sl.h b/src/saveload/extended_ver_sl.h
index 0ec750ef8f..2917d23fe0 100644
--- a/src/saveload/extended_ver_sl.h
+++ b/src/saveload/extended_ver_sl.h
@@ -40,11 +40,14 @@ enum SlXvFeatureTestOperator {
* Structure to describe an extended feature version test, and how it combines with a traditional savegame version test
*/
struct SlXvFeatureTest {
+ using TestFunctorPtr = bool (*)(uint16, bool); ///< Return true if feature present, first parameter is standard savegame version, second is whether standard savegame version is within bounds
+
private:
uint16 min_version;
uint16 max_version;
SlXvFeatureIndex feature;
SlXvFeatureTestOperator op;
+ TestFunctorPtr functor = nullptr;
public:
SlXvFeatureTest()
@@ -53,6 +56,9 @@ struct SlXvFeatureTest {
SlXvFeatureTest(SlXvFeatureTestOperator op_, SlXvFeatureIndex feature_, uint16 min_version_ = 1, uint16 max_version_ = 0xFFFF)
: min_version(min_version_), max_version(max_version_), feature(feature_), op(op_) { }
+ SlXvFeatureTest(TestFunctorPtr functor_)
+ : min_version(0), max_version(0), feature(XSLFI_NULL), op(XSLFTO_OR), functor(functor_) { }
+
bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const;
};
diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp
index c5ddadfdd0..b28730e3c3 100644
--- a/src/saveload/industry_sl.cpp
+++ b/src/saveload/industry_sl.cpp
@@ -57,7 +57,7 @@ static const SaveLoad _industry_desc[] = {
SLEG_CONDARR(_old_ind_persistent_storage.storage, SLE_UINT32, 16, 76, 160),
SLE_CONDREF(Industry, psa, REF_STORAGE, 161, SL_MAX_VERSION),
- SLE_CONDVAR(Industry, random_triggers, SLE_UINT8, 82, SL_MAX_VERSION),
+ SLE_CONDNULL(1, 82, 196), // random_triggers
SLE_CONDVAR(Industry, random, SLE_UINT16, 82, SL_MAX_VERSION),
SLE_CONDNULL(32, 2, 143), // old reserved space
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index dd1962b3e3..0bec66a27d 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -269,8 +269,9 @@
* 194 26881 1.5.x, 1.6.0
* 195 27572 1.6.x
* 196 27778 1.7.x
+ * 197 27978
*/
-extern const uint16 SAVEGAME_VERSION = 196; ///< Current savegame version of OpenTTD.
+extern const uint16 SAVEGAME_VERSION = 197; ///< Current savegame version of OpenTTD.
const uint16 SAVEGAME_VERSION_EXT = 0x8000; ///< Savegame extension indicator mask
SavegameType _savegame_type; ///< type of savegame we are loading
diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp
index db1c6eb2a2..3a1765b132 100644
--- a/src/script/api/ai_changelog.hpp
+++ b/src/script/api/ai_changelog.hpp
@@ -19,7 +19,7 @@
*
* 1.8.0 is not yet released. The following changes are not set in stone yet.
*
- * \b 1.7.0
+ * \b 1.7.0 - 1.7.2
*
* No changes
*
diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp
index 00b9539590..11f0ee6ec2 100644
--- a/src/script/api/game_changelog.hpp
+++ b/src/script/api/game_changelog.hpp
@@ -19,7 +19,7 @@
*
* 1.8.0 is not yet released. The following changes are not set in stone yet.
*
- * \b 1.7.0
+ * \b 1.7.0 - 1.7.2
*
* No changes
*
diff --git a/src/stdafx.h b/src/stdafx.h
index 94f7e8ef15..7eb816a0ce 100644
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -339,10 +339,12 @@
/* MSVCRT of course has to have a different syntax for long long *sigh* */
#if defined(_MSC_VER) || defined(__MINGW32__)
#define OTTD_PRINTF64 "%I64d"
+ #define OTTD_PRINTF64U "%I64u"
#define OTTD_PRINTFHEX64 "%I64x"
#define PRINTF_SIZE "%Iu"
#else
#define OTTD_PRINTF64 "%lld"
+ #define OTTD_PRINTF64U "%llu"
#define OTTD_PRINTFHEX64 "%llx"
#define PRINTF_SIZE "%zu"
#endif
diff --git a/src/table/elrail_data.h b/src/table/elrail_data.h
index 102ad42644..6915360035 100644
--- a/src/table/elrail_data.h
+++ b/src/table/elrail_data.h
@@ -310,10 +310,10 @@ enum WireSpriteOffset {
WSO_X_NE_UP,
WSO_Y_NW_DOWN,
- WSO_ENTRANCE_NE,
- WSO_ENTRANCE_SE,
WSO_ENTRANCE_SW,
WSO_ENTRANCE_NW,
+ WSO_ENTRANCE_NE,
+ WSO_ENTRANCE_SE,
};
struct SortableSpriteStruct {
@@ -400,10 +400,10 @@ static const SortableSpriteStruct RailCatenarySpriteData_Depot[] = {
};
static const SortableSpriteStruct RailCatenarySpriteData_Tunnel[] = {
- { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel exit
- { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel exit
- { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel exit
- { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel exit
+ { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel (SW facing exit)
+ { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel (NW facing exit)
+ { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel (NE facing exit)
+ { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel (SE facing exit)
};
diff --git a/src/table/settings.ini b/src/table/settings.ini
index d1d0ee1038..c94698d14e 100644
--- a/src/table/settings.ini
+++ b/src/table/settings.ini
@@ -2198,7 +2198,7 @@ cat = SC_BASIC
base = GameSettings
var = game_creation.variety
type = SLE_UINT8
-flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
+from = 197
guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY
def = 0
min = 0
diff --git a/src/tile_type.h b/src/tile_type.h
index 0d720925da..c02ba4fc45 100644
--- a/src/tile_type.h
+++ b/src/tile_type.h
@@ -18,6 +18,8 @@ static const uint TILE_PIXELS = 32; ///< Pixel distan
static const uint TILE_HEIGHT = 8; ///< Height of a height level in world coordinate AND in pixels in #ZOOM_LVL_BASE.
static const uint MAX_BUILDING_PIXELS = 200; ///< Maximum height of a building in pixels in #ZOOM_LVL_BASE. (Also applies to "bridge buildings" on the bridge floor.)
+static const int MAX_VEHICLE_PIXEL_X = 192; ///< Maximum width of a vehicle in pixels in #ZOOM_LVL_BASE.
+static const int MAX_VEHICLE_PIXEL_Y = 96; ///< Maximum height of a vehicle in pixels in #ZOOM_LVL_BASE.
static const uint MAX_TILE_HEIGHT = 255; ///< Maximum allowed tile height
diff --git a/src/train_gui.cpp b/src/train_gui.cpp
index 4724fb98ab..51e772b520 100644
--- a/src/train_gui.cpp
+++ b/src/train_gui.cpp
@@ -64,14 +64,14 @@ static int HighlightDragPosition(int px, int max_width, VehicleID selection, boo
bool rtl = _current_text_dir == TD_RTL;
assert(selection != INVALID_VEHICLE);
- int dragged_width = WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
+ int dragged_width = 0;
for (Train *t = Train::Get(selection); t != NULL; t = chain ? t->Next() : (t->HasArticulatedPart() ? t->GetNextArticulatedPart() : NULL)) {
dragged_width += t->GetDisplayImageWidth(NULL);
}
- int drag_hlight_left = rtl ? max(px -dragged_width, 0) : px;
- int drag_hlight_right = rtl ? px : min(px + dragged_width, max_width);
- int drag_hlight_width = max(drag_hlight_right - drag_hlight_left, 0);
+ int drag_hlight_left = rtl ? max(px - dragged_width + 1, 0) : px;
+ int drag_hlight_right = rtl ? px : min(px + dragged_width, max_width) - 1;
+ int drag_hlight_width = max(drag_hlight_right - drag_hlight_left + 1, 0);
if (drag_hlight_width > 0) {
GfxFillRect(drag_hlight_left + WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP + 1,
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 7df4517d86..c986a25020 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -58,7 +58,30 @@
#include "safeguards.h"
-#define GEN_HASH(x, y) ((GB((y), 6 + ZOOM_LVL_SHIFT, 6) << 6) + GB((x), 7 + ZOOM_LVL_SHIFT, 6))
+/* Number of bits in the hash to use from each vehicle coord */
+static const uint GEN_HASHX_BITS = 6;
+static const uint GEN_HASHY_BITS = 6;
+
+/* Size of each hash bucket */
+static const uint GEN_HASHX_BUCKET_BITS = 7;
+static const uint GEN_HASHY_BUCKET_BITS = 6;
+
+/* Compute hash for vehicle coord */
+#define GEN_HASHX(x) GB((x), GEN_HASHX_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHX_BITS)
+#define GEN_HASHY(y) (GB((y), GEN_HASHY_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHY_BITS) << GEN_HASHX_BITS)
+#define GEN_HASH(x, y) (GEN_HASHY(y) + GEN_HASHX(x))
+
+/* Maximum size until hash repeats */
+static const int GEN_HASHX_SIZE = 1 << (GEN_HASHX_BUCKET_BITS + GEN_HASHX_BITS + ZOOM_LVL_SHIFT);
+static const int GEN_HASHY_SIZE = 1 << (GEN_HASHY_BUCKET_BITS + GEN_HASHY_BITS + ZOOM_LVL_SHIFT);
+
+/* Increments to reach next bucket in hash table */
+static const int GEN_HASHX_INC = 1;
+static const int GEN_HASHY_INC = 1 << GEN_HASHX_BITS;
+
+/* Mask to wrap-around buckets */
+static const uint GEN_HASHX_MASK = (1 << GEN_HASHX_BITS) - 1;
+static const uint GEN_HASHY_MASK = ((1 << GEN_HASHY_BITS) - 1) << GEN_HASHX_BITS;
VehicleID _new_vehicle_id;
uint16 _returned_refit_capacity; ///< Stores the capacity after a refit operation.
@@ -619,7 +642,7 @@ static void UpdateVehicleTileHash(Vehicle *v, bool remove)
v->hash_tile_current = new_hash;
}
-static Vehicle *_vehicle_viewport_hash[0x1000];
+static Vehicle *_vehicle_viewport_hash[1 << (GEN_HASHX_BITS + GEN_HASHY_BITS)];
static void UpdateVehicleViewportHash(Vehicle *v, int x, int y)
{
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp
index 4a9861b643..23794cb321 100644
--- a/src/video/win32_v.cpp
+++ b/src/video/win32_v.cpp
@@ -34,6 +34,10 @@
#define MAPVK_VK_TO_CHAR (2)
#endif
+#ifndef PM_QS_INPUT
+#define PM_QS_INPUT 0x20000
+#endif
+
static struct {
HWND main_wnd;
HBITMAP dib_sect;
@@ -737,7 +741,6 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
case WM_MOUSEMOVE: {
int x = (int16)LOWORD(lParam);
int y = (int16)HIWORD(lParam);
- POINT pt;
/* If the mouse was not in the window and it has moved it means it has
* come into the window, so start drawing the mouse. Also start
@@ -747,7 +750,18 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, (TIMERPROC)TrackMouseTimerProc);
}
- if (_cursor.UpdateCursorPosition(x, y, true)) {
+ if (_cursor.fix_at) {
+ /* Get all queued mouse events now in case we have to warp the cursor. In the
+ * end, we only care about the current mouse position and not bygone events. */
+ MSG m;
+ while (PeekMessage(&m, hwnd, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE | PM_NOYIELD | PM_QS_INPUT)) {
+ x = (int16)LOWORD(m.lParam);
+ y = (int16)HIWORD(m.lParam);
+ }
+ }
+
+ if (_cursor.UpdateCursorPosition(x, y, false)) {
+ POINT pt;
pt.x = _cursor.pos.x;
pt.y = _cursor.pos.y;
ClientToScreen(hwnd, &pt);
diff --git a/src/viewport_sprite_sorter.h b/src/viewport_sprite_sorter.h
index 19b903e152..324ece3020 100644
--- a/src/viewport_sprite_sorter.h
+++ b/src/viewport_sprite_sorter.h
@@ -37,7 +37,7 @@ struct ParentSpriteToDraw {
int32 left; ///< minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites
int32 top; ///< minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites
- int first_child; ///< the first child to draw.
+ int32 first_child; ///< the first child to draw.
bool comparison_done; ///< Used during sprite sorting: true if sprite has been compared with all other sprites
};
diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp
index 6c09a781c6..3d735ab253 100644
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
@@ -73,7 +73,7 @@ static const uint8 _flood_from_dirs[] = {
*/
static inline void MarkTileDirtyIfCanalOrRiver(TileIndex tile)
{
- if (IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile);
+ if (IsValidTile(tile) && IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile);
}
/**
diff --git a/src/window.cpp b/src/window.cpp
index a1b6abe122..7d8853599c 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -1684,7 +1684,7 @@ static Point GetAutoPlacePosition(int width, int height)
* of the closebox
*/
int left = rtl ? _screen.width - width : 0, top = toolbar_y;
- int offset_x = rtl ? -NWidgetLeaf::closebox_dimension.width : NWidgetLeaf::closebox_dimension.width;
+ int offset_x = rtl ? -(int)NWidgetLeaf::closebox_dimension.width : (int)NWidgetLeaf::closebox_dimension.width;
int offset_y = max(NWidgetLeaf::closebox_dimension.height, FONT_HEIGHT_NORMAL + WD_CAPTIONTEXT_TOP + WD_CAPTIONTEXT_BOTTOM);
restart: