summaryrefslogtreecommitdiff
path: root/manualPorts
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2020-05-13 17:14:16 +0200
committerErich Eckner <git@eckner.net>2020-05-13 17:14:16 +0200
commitc9c0da845a8738d219d9e84202d4ce3ddcffe105 (patch)
tree7ad64909b83aa6753ce46ecceec5ef08a12d44a2 /manualPorts
parent60a7ce1fe79d438221f9f0a744921715a6702b6b (diff)
downloadcrux-ports-c9c0da845a8738d219d9e84202d4ce3ddcffe105.tar.xz
openttd-git: enable underground.patch again
Diffstat (limited to 'manualPorts')
-rw-r--r--manualPorts/openttd-git/.md5sum6
-rw-r--r--manualPorts/openttd-git/.signature10
-rw-r--r--manualPorts/openttd-git/Pkgfile4
-rw-r--r--manualPorts/openttd-git/signaltunnel.patch58
-rw-r--r--manualPorts/openttd-git/sloped-stations.patch56
-rw-r--r--manualPorts/openttd-git/underground.patch607
6 files changed, 370 insertions, 371 deletions
diff --git a/manualPorts/openttd-git/.md5sum b/manualPorts/openttd-git/.md5sum
index e7d3d30..a8bcf01 100644
--- a/manualPorts/openttd-git/.md5sum
+++ b/manualPorts/openttd-git/.md5sum
@@ -2,6 +2,6 @@
4f4a6465cd5b84964b7ceecd1c06d686 opengfx-0.5.4.zip
858b79d44aea6de5e15d9d1439e86cc3 openmsx-0.3.1.zip
6e3a5cf97fe69e3a351c3e0615a14b04 opensfx-0.2.3.zip
-9cf50453a6c5be6706ebb7b24c531477 signaltunnel.patch
-376996a29175c614dd290af9468a69e4 sloped-stations.patch
-809c4965f2815be436ef46c9b28cf886 underground.patch
+327f0939a98319129eeb882aa6458318 signaltunnel.patch
+8ad3a015b929ff835823d9f9bb917052 sloped-stations.patch
+9c51ecd54a93b643cf64c6bb42dd7b3a underground.patch
diff --git a/manualPorts/openttd-git/.signature b/manualPorts/openttd-git/.signature
index 6965b86..46aaa95 100644
--- a/manualPorts/openttd-git/.signature
+++ b/manualPorts/openttd-git/.signature
@@ -1,11 +1,11 @@
untrusted comment: verify with /etc/ports/deepthought.pub
-RWQxCptPusLGGqkDZ74tjirlYFIhKCXsf3KvrAoXa87TSPtcXtSBbrGL9wdYmLB2CRQtEAERLF7z+bzMQacfYtJ7MQ4kJeA1LQA=
-SHA256 (Pkgfile) = 16eec002ed366304cba776faf7b3e75f087704271f1bc0855efc197d0d19eb07
+RWQxCptPusLGGnri8CZ8hrVQFGDlOfi7E5zmEnWRI112DFt5dzlXcTuHAUK9YeWkTVyRC7xqdEVU86URhMdk1qys1gwRuqDjhgY=
+SHA256 (Pkgfile) = b0ad802a6850f6fadd2a7e91b1fb0b7e64ff4585e742747af8cec834be1b598d
SHA256 (.footprint) = 22ba32498018d9444e92a21f5e8eebf5e31e35f18f5656a262b03a0e789dee9e
SHA256 (opengfx-0.5.4.zip) = 3d136d776906dbe8b5df1434cb9a68d1249511a3c4cfaca55cc24cc0028ae078
SHA256 (opensfx-0.2.3.zip) = 3574745ac0c138bae53b56972591db8d778ad9faffd51deae37a48a563e71662
SHA256 (openmsx-0.3.1.zip) = 92e293ae89f13ad679f43185e83fb81fb8cad47fe63f4af3d3d9f955130460f5
-SHA256 (signaltunnel.patch) = df254e4a05ed06b1799b170c664fd0245dba393188c593da6eae14d70232cf32
-SHA256 (sloped-stations.patch) = acf5ed4dc359d2fcf2367b60bac6fe8d558711dacdcb075c654060fef9b251a5
-SHA256 (underground.patch) = cece4c91ac343347f4050857563a72eb522ea988caccdbed71a13c5a9040d464
+SHA256 (signaltunnel.patch) = 0c344148a135724002c1acd5705c40cbcd8e68e1032360df377ee3488d086a29
+SHA256 (sloped-stations.patch) = 0189fe2ed5967c391cbf24546ae529df2fffa3af31bd2755440719648b2b0f2b
+SHA256 (underground.patch) = 862019f3e5b3a5846d83bf25800826da902aa7aa63b7e2f626f693af8d0ab98d
SHA256 (a95fbd59a.tar.gz) = 8523d350fa5a6338b5b768355fb0031a69bc5ad2adeaa53a3b16dee260df2378
diff --git a/manualPorts/openttd-git/Pkgfile b/manualPorts/openttd-git/Pkgfile
index 5757c0b..3291ca2 100644
--- a/manualPorts/openttd-git/Pkgfile
+++ b/manualPorts/openttd-git/Pkgfile
@@ -10,7 +10,7 @@ version=29415.a95fbd59a
gfxversion=0.5.4
sfxversion=0.2.3
msxversion=0.3.1
-release=3
+release=4
source=(http://bundles.openttdcoop.org/opengfx/releases/$gfxversion/opengfx-$gfxversion.zip
http://bundles.openttdcoop.org/opensfx/releases/$sfxversion/opensfx-$sfxversion.zip
http://bundles.openttdcoop.org/openmsx/releases/$msxversion/openmsx-$msxversion.zip
@@ -41,7 +41,7 @@ build() {
' findversion.sh
patch -p1 -i "$SRC/signaltunnel.patch"
# patch -p1 -i "$SRC/sloped-stations.patch" # broken!
-# patch -p1 -i "$SRC/underground.patch" # broken?
+ patch -p1 -i "$SRC/underground.patch" # broken?
sed -i '
s/multiplayer\.txt/multiplayer.md/g
diff --git a/manualPorts/openttd-git/signaltunnel.patch b/manualPorts/openttd-git/signaltunnel.patch
index 308ae90..4444dda 100644
--- a/manualPorts/openttd-git/signaltunnel.patch
+++ b/manualPorts/openttd-git/signaltunnel.patch
@@ -1,8 +1,8 @@
diff --git a/src/lang/english.txt b/src/lang/english.txt
-index bc89cfee3d..4ac0917b4a 100644
+index e478dc6e1c..336130877b 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
-@@ -1560,6 +1560,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimum company
+@@ -1561,6 +1561,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimum company
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Set the minimum age of a company for others to be able to buy and sell shares from them.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentage of leg profit to pay in feeder systems: {STRING2}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentage of income given to the intermediate legs in feeder systems, giving more control over the income
@@ -11,7 +11,7 @@ index bc89cfee3d..4ac0917b4a 100644
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, place signals every: {STRING2}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s}
-@@ -2705,8 +2707,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ship depot
+@@ -2708,8 +2710,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ship depot
# Industries come directly from their industry names
STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Railway tunnel
@@ -23,10 +23,10 @@ index bc89cfee3d..4ac0917b4a 100644
STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Steel girder rail bridge
STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Steel cantilever rail bridge
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
-index 8c3776a776..004af31654 100644
+index 4f98e7adee..d4600504b0 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
-@@ -1711,6 +1711,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Мин. воз
+@@ -1712,6 +1712,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Мин. воз
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Минимальный возраст, которого должна достичь компания для начала выпуска акций, которыми смогут торговать другие игроки.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Процент дохода, начисляемый при частичной перевозке: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Процент прибыли, начисляемый транспорту за частичную перевозку груза.
@@ -35,7 +35,7 @@ index 8c3776a776..004af31654 100644
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При перетаскивании ставить сигналы каждые: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Настройка периодичности расстановки сигналов методом перетаскивания. Сигналы будут устанавливаться до первого встреченного препятствия (пересечения или другого сигнала).
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клет{P ку ки ок}
-@@ -2884,8 +2886,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Верфь
+@@ -2887,8 +2889,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Верфь
# Industries come directly from their industry names
STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Железнодорожный туннель
@@ -69,10 +69,10 @@ index 2cfe4d9e4a..dbf225d785 100644
return false;
}
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
-index 7de00327eb..b96e2240f6 100644
+index 162fe97799..186c7b8228 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
-@@ -1060,9 +1060,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1059,9 +1059,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
if (sigtype > SIGTYPE_LAST) return CMD_ERROR;
if (cycle_start > cycle_stop || cycle_stop > SIGTYPE_LAST) return CMD_ERROR;
@@ -88,7 +88,7 @@ index 7de00327eb..b96e2240f6 100644
return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK);
}
/* Protect against invalid signal copying */
-@@ -1071,6 +1074,53 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1070,6 +1073,53 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
CommandCost ret = CheckTileOwnership(tile);
if (ret.Failed()) return ret;
@@ -142,7 +142,7 @@ index 7de00327eb..b96e2240f6 100644
/* See if this is a valid track combination for signals (no overlap) */
if (TracksOverlap(GetTrackBits(tile))) return_cmd_error(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK);
-@@ -1080,7 +1130,6 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1079,7 +1129,6 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
/* you can not convert a signal if no signal is on track */
if (convert_signal && !HasSignalOnTrack(tile, track)) return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS);
@@ -150,7 +150,7 @@ index 7de00327eb..b96e2240f6 100644
if (!HasSignalOnTrack(tile, track)) {
/* build new signals */
cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS]);
-@@ -1238,6 +1287,7 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
+@@ -1237,6 +1286,7 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
return true;
case MP_TUNNELBRIDGE: {
@@ -158,7 +158,7 @@ index 7de00327eb..b96e2240f6 100644
TileIndex orig_tile = tile; // backup old value
if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false;
-@@ -1349,7 +1399,8 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
+@@ -1348,7 +1398,8 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
bool had_success = false;
for (;;) {
/* only build/remove signals with the specified density */
@@ -168,7 +168,7 @@ index 7de00327eb..b96e2240f6 100644
uint32 p1 = GB(TrackdirToTrack(trackdir), 0, 3);
SB(p1, 3, 1, mode);
SB(p1, 4, 1, semaphores);
-@@ -1385,13 +1436,20 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
+@@ -1384,13 +1435,20 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
/* Collect cost. */
if (!test_only) {
@@ -195,7 +195,7 @@ index 7de00327eb..b96e2240f6 100644
/* The "No railway" error is the least important one. */
if (ret.GetErrorMessage() != STR_ERROR_THERE_IS_NO_RAILROAD_TRACK ||
last_error.GetErrorMessage() == INVALID_STRING_ID) {
-@@ -1462,22 +1520,48 @@ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1461,22 +1519,48 @@ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1,
CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
Track track = Extract<Track, 0, 3>(p1);
@@ -251,7 +251,7 @@ index 7de00327eb..b96e2240f6 100644
Train *v = nullptr;
if (HasReservedTracks(tile, TrackToTrackBits(track))) {
v = GetTrainForReservation(tile, track);
-@@ -1513,7 +1597,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
+@@ -1512,7 +1596,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
MarkTileDirtyByTile(tile);
}
@@ -261,10 +261,10 @@ index 7de00327eb..b96e2240f6 100644
/**
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
-index 4b7768dfa9..b17520b182 100644
+index 968be54f67..462d1a0e70 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
-@@ -1551,6 +1551,7 @@ static SettingsContainer &GetSettingsTree()
+@@ -1552,6 +1552,7 @@ static SettingsContainer &GetSettingsTree()
SettingsPage *construction = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION));
{
construction->Add(new SettingEntry("gui.link_terraform_toolbar"));
@@ -273,10 +273,10 @@ index 4b7768dfa9..b17520b182 100644
construction->Add(new SettingEntry("gui.persistent_buildingtools"));
construction->Add(new SettingEntry("gui.quick_goto"));
diff --git a/src/settings_type.h b/src/settings_type.h
-index 60db6c9f97..ae4a384966 100644
+index fdb2b0f862..0cbc26d643 100644
--- a/src/settings_type.h
+++ b/src/settings_type.h
-@@ -315,6 +315,7 @@ struct ConstructionSettings {
+@@ -317,6 +317,7 @@ struct ConstructionSettings {
bool freeform_edges; ///< allow terraforming the tiles at the map edges
uint8 extra_tree_placement; ///< (dis)allow building extra trees in-game
uint8 command_pause_level; ///< level/amount of commands that can't be executed while paused
@@ -366,10 +366,10 @@ index 068ca6193b..b9627483ac 100644
case MP_RAILWAY:
diff --git a/src/table/settings.ini b/src/table/settings.ini
-index 4c3d6ce0d4..b2936d8d55 100644
+index 43bd3aec32..ab9a0336a5 100644
--- a/src/table/settings.ini
+++ b/src/table/settings.ini
-@@ -539,6 +539,20 @@ str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH
+@@ -541,6 +541,20 @@ str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH
strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT
strval = STR_CONFIG_SETTING_TILE_LENGTH
@@ -663,7 +663,7 @@ index 5d02764b55..1eddbf665e 100644
/* Perform look-ahead on tunnel exit. */
if (v->IsFrontEngine()) {
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
-index 00c362e776..88e682fe9e 100644
+index c5e2f8d9bb..b693caee51 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -28,6 +28,7 @@
@@ -674,7 +674,7 @@ index 00c362e776..88e682fe9e 100644
#include "sound_func.h"
#include "tunnelbridge.h"
#include "cheat_type.h"
-@@ -1219,6 +1220,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off
+@@ -1226,6 +1227,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off
}
}
@@ -778,7 +778,7 @@ index 00c362e776..88e682fe9e 100644
/**
* Draws a tunnel of bridge tile.
* For tunnels, this is rather simple, as you only need to draw the entrance.
-@@ -1350,6 +1448,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1357,6 +1455,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
AddSortableSpriteToDraw(SPR_EMPTY_BOUNDING_BOX, PAL_NONE, ti->x, ti->y, BB_data[6], BB_data[7], TILE_HEIGHT, ti->z);
AddSortableSpriteToDraw(SPR_EMPTY_BOUNDING_BOX, PAL_NONE, ti->x + BB_data[4], ti->y + BB_data[5], BB_data[6], BB_data[7], TILE_HEIGHT, ti->z);
@@ -788,7 +788,7 @@ index 00c362e776..88e682fe9e 100644
DrawBridgeMiddle(ti);
} else { // IsBridge(ti->tile)
const PalSpriteID *psid;
-@@ -1455,6 +1556,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1462,6 +1563,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
}
}
@@ -798,7 +798,7 @@ index 00c362e776..88e682fe9e 100644
DrawBridgeMiddle(ti);
}
}
-@@ -1596,6 +1700,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
+@@ -1603,6 +1707,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
if (HasRailCatenaryDrawn(GetRailType(rampsouth))) {
DrawRailCatenaryOnBridge(ti);
}
@@ -808,7 +808,7 @@ index 00c362e776..88e682fe9e 100644
}
/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
-@@ -1684,9 +1791,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
+@@ -1691,9 +1798,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
TransportType tt = GetTunnelBridgeTransportType(tile);
if (IsTunnel(tile)) {
@@ -820,7 +820,7 @@ index 00c362e776..88e682fe9e 100644
}
td->owner[0] = GetTileOwner(tile);
-@@ -1769,6 +1876,25 @@ static void TileLoop_TunnelBridge(TileIndex tile)
+@@ -1776,6 +1883,25 @@ static void TileLoop_TunnelBridge(TileIndex tile)
}
}
@@ -846,7 +846,7 @@ index 00c362e776..88e682fe9e 100644
static TrackStatus GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
TransportType transport_type = GetTunnelBridgeTransportType(tile);
-@@ -2022,8 +2148,8 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
+@@ -2029,8 +2155,8 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
nullptr, // add_accepted_cargo_proc
GetTileDesc_TunnelBridge, // get_tile_desc_proc
GetTileTrackStatus_TunnelBridge, // get_tile_track_status_proc
diff --git a/manualPorts/openttd-git/sloped-stations.patch b/manualPorts/openttd-git/sloped-stations.patch
index 304332a..2c47db8 100644
--- a/manualPorts/openttd-git/sloped-stations.patch
+++ b/manualPorts/openttd-git/sloped-stations.patch
@@ -1,8 +1,8 @@
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
-index 1a4728c6c3..67475164b4 100644
+index 162fe97799..f3f65308dc 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
-@@ -189,14 +189,6 @@ RailType AllocateRailType(RailTypeLabel label)
+@@ -187,14 +187,6 @@ RailType AllocateRailType(RailTypeLabel label)
return INVALID_RAILTYPE;
}
@@ -18,10 +18,10 @@ index 1a4728c6c3..67475164b4 100644
* ---------
* |\ /|
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
-index 4f5519c31e..42fcd067c3 100644
+index 5a9efb8567..c2409eea88 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
-@@ -39,6 +39,7 @@
+@@ -37,6 +37,7 @@
#include "genworld.h"
#include "company_gui.h"
#include "road_func.h"
@@ -29,7 +29,7 @@ index 4f5519c31e..42fcd067c3 100644
#include "table/strings.h"
#include "table/roadtypes.h"
-@@ -256,8 +257,6 @@ static const RoadBits _invalid_tileh_slopes_road[2][15] = {
+@@ -251,8 +252,6 @@ static const RoadBits _invalid_tileh_slopes_road[2][15] = {
}
};
@@ -38,7 +38,7 @@ index 4f5519c31e..42fcd067c3 100644
/**
* Is it allowed to remove the given road bits from the given tile?
* @param tile the tile to remove the road from
-@@ -1301,7 +1300,7 @@ struct DrawRoadTileStruct {
+@@ -1295,7 +1294,7 @@ struct DrawRoadTileStruct {
* @param bits The RoadBits part
* @return The resulting Foundation
*/
@@ -47,7 +47,7 @@ index 4f5519c31e..42fcd067c3 100644
{
/* Flat land and land without a road doesn't require a foundation */
if (tileh == SLOPE_FLAT || bits == ROAD_NONE) return FOUNDATION_NONE;
-@@ -1323,13 +1322,6 @@ static Foundation GetRoadFoundation(Slope tileh, RoadBits bits)
+@@ -1317,13 +1316,6 @@ static Foundation GetRoadFoundation(Slope tileh, RoadBits bits)
return (bits == ROAD_X ? FOUNDATION_INCLINED_X : FOUNDATION_INCLINED_Y);
}
@@ -62,10 +62,10 @@ index 4f5519c31e..42fcd067c3 100644
* Get the sprite offset within a spritegroup.
* @param slope Slope
diff --git a/src/road_cmd.h b/src/road_cmd.h
-index 3cf588dcd6..2a0da61427 100644
+index 753ebd21d4..87dee9722f 100644
--- a/src/road_cmd.h
+++ b/src/road_cmd.h
-@@ -14,8 +14,11 @@
+@@ -12,8 +12,11 @@
#include "direction_type.h"
#include "road_type.h"
@@ -78,10 +78,10 @@ index 3cf588dcd6..2a0da61427 100644
+
#endif /* ROAD_CMD_H */
diff --git a/src/road_type.h b/src/road_type.h
-index f01d1d0353..a575491163 100644
+index 969b141ba2..1af4275eb9 100644
--- a/src/road_type.h
+++ b/src/road_type.h
-@@ -73,4 +73,11 @@ enum RoadBits {
+@@ -68,4 +68,11 @@ enum RoadBits {
DECLARE_ENUM_AS_BIT_SET(RoadBits)
template <> struct EnumPropsT<RoadBits> : MakeEnumPropsT<RoadBits, byte, ROAD_NONE, ROAD_END, ROAD_NONE, 4> {};
@@ -94,10 +94,10 @@ index f01d1d0353..a575491163 100644
+
#endif /* ROAD_TYPE_H */
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
-index d323bc1ecb..033792ff3e 100644
+index 261af7042b..cde4a50a29 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
-@@ -1502,7 +1502,7 @@ again:
+@@ -1500,7 +1500,7 @@ again:
v->x_pos = x;
v->y_pos = y;
v->UpdatePosition();
@@ -107,10 +107,10 @@ index d323bc1ecb..033792ff3e 100644
}
}
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
-index 546aecc269..672dbed6f3 100644
+index 6cfd94bb2f..8eb8866401 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
-@@ -57,6 +57,7 @@
+@@ -56,6 +56,7 @@
#include "linkgraph/refresh.h"
#include "widgets/station_widget.h"
#include "tunnelbridge_map.h"
@@ -118,7 +118,7 @@ index 546aecc269..672dbed6f3 100644
#include "table/strings.h"
-@@ -766,7 +767,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags);
+@@ -776,7 +777,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags);
* Checks if the given tile is buildable, flat and has a certain height.
* @param tile TileIndex to check.
* @param invalid_dirs Prohibited directions for slopes (set of #DiagDirection).
@@ -127,7 +127,7 @@ index 546aecc269..672dbed6f3 100644
* @param allow_steep Whether steep slopes are allowed.
* @param check_bridge Check for the existence of a bridge.
* @return The cost in case of success, or an error code if it failed.
-@@ -805,10 +806,10 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z
+@@ -815,10 +816,10 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z
}
/* The level of this tile must be equal to allowed_z. */
@@ -140,7 +140,7 @@ index 546aecc269..672dbed6f3 100644
return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED);
}
-@@ -856,14 +857,14 @@ static CommandCost CheckFlatLandAirport(AirportTileTableIterator tile_iter, DoCo
+@@ -866,14 +867,14 @@ static CommandCost CheckFlatLandAirport(AirportTileTableIterator tile_iter, DoCo
static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag flags, Axis axis, StationID *station, RailType rt, std::vector<Train *> &affected_vehicles, StationClassID spec_class, byte spec_index, byte plat_len, byte numtracks)
{
CommandCost cost(EXPENSES_CONSTRUCTION);
@@ -157,7 +157,7 @@ index 546aecc269..672dbed6f3 100644
if (ret.Failed()) return ret;
cost.AddCost(ret);
-@@ -942,10 +943,10 @@ static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag fl
+@@ -952,10 +953,10 @@ static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag fl
static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags, uint invalid_dirs, bool is_drive_through, bool is_truck_stop, Axis axis, StationID *station, RoadType rt)
{
CommandCost cost(EXPENSES_CONSTRUCTION);
@@ -170,7 +170,7 @@ index 546aecc269..672dbed6f3 100644
if (ret.Failed()) return ret;
cost.AddCost(ret);
-@@ -1868,7 +1869,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
+@@ -1878,7 +1879,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
/* Total road stop cost. */
CommandCost cost(EXPENSES_CONSTRUCTION, roadstop_area.w * roadstop_area.h * _price[type ? PR_BUILD_STATION_TRUCK : PR_BUILD_STATION_BUS]);
StationID est = INVALID_STATION;
@@ -311,10 +311,10 @@ index 546aecc269..672dbed6f3 100644
}
diff --git a/src/table/sprites.h b/src/table/sprites.h
-index 5f5aa47057..6a2c20cf46 100644
+index 5df55b8ae4..ce58194950 100644
--- a/src/table/sprites.h
+++ b/src/table/sprites.h
-@@ -260,7 +260,26 @@ static const SpriteID SPR_TRUCK_STOP_DT_Y_W = SPR_ROADSTOP_BASE + 4;
+@@ -258,7 +258,26 @@ static const SpriteID SPR_TRUCK_STOP_DT_Y_W = SPR_ROADSTOP_BASE + 4;
static const SpriteID SPR_TRUCK_STOP_DT_Y_E = SPR_ROADSTOP_BASE + 5;
static const SpriteID SPR_TRUCK_STOP_DT_X_W = SPR_ROADSTOP_BASE + 6;
static const SpriteID SPR_TRUCK_STOP_DT_X_E = SPR_ROADSTOP_BASE + 7;
@@ -343,10 +343,10 @@ index 5f5aa47057..6a2c20cf46 100644
/** Tramway sprites */
static const SpriteID SPR_TRAMWAY_BASE = SPR_ROADSTOP_BASE + ROADSTOP_SPRITE_COUNT;
diff --git a/src/table/station_land.h b/src/table/station_land.h
-index b678297d90..2291ba6bd3 100644
+index 6b4b2267ac..760da43e69 100644
--- a/src/table/station_land.h
+++ b/src/table/station_land.h
-@@ -777,6 +777,62 @@ static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = {
+@@ -775,6 +775,62 @@ static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = {
TILE_SEQ_END()
};
@@ -409,7 +409,7 @@ index b678297d90..2291ba6bd3 100644
#undef TILE_SEQ_END
#undef TILE_SEQ_LINE
#undef TILE_SEQ_LINE_PAL
-@@ -946,6 +1002,10 @@ static const DrawTileSprites _station_display_datas_truck[] = {
+@@ -944,6 +1000,10 @@ static const DrawTileSprites _station_display_datas_truck[] = {
TILE_SPRITE_LINE(SPR_TRUCK_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_70)
TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0168)
TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0169)
@@ -420,7 +420,7 @@ index b678297d90..2291ba6bd3 100644
};
static const DrawTileSprites _station_display_datas_bus[] = {
-@@ -955,6 +1015,10 @@ static const DrawTileSprites _station_display_datas_bus[] = {
+@@ -953,6 +1013,10 @@ static const DrawTileSprites _station_display_datas_bus[] = {
TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74)
TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0170)
TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0171)
@@ -432,10 +432,10 @@ index b678297d90..2291ba6bd3 100644
static const DrawTileSprites _station_display_datas_oilrig[] = {
diff --git a/src/track_type.h b/src/track_type.h
-index 233376b006..2601804813 100644
+index 70278c58d9..0c64b99780 100644
--- a/src/track_type.h
+++ b/src/track_type.h
-@@ -122,4 +122,11 @@ DECLARE_ENUM_AS_BIT_SET(TrackdirBits)
+@@ -120,4 +120,11 @@ DECLARE_ENUM_AS_BIT_SET(TrackdirBits)
typedef uint32 TrackStatus;
diff --git a/manualPorts/openttd-git/underground.patch b/manualPorts/openttd-git/underground.patch
index db521b2..f279468 100644
--- a/manualPorts/openttd-git/underground.patch
+++ b/manualPorts/openttd-git/underground.patch
@@ -53,10 +53,10 @@ index 0000000000..a5947189b9
+* Expansion of the underground station does not work (when adding cells, a new one is added)
+- GF. "jumps" (the non-editable part of the station changes randomly when the station is modified)
diff --git a/source.list b/source.list
-index 4f9c8aa0d7..6e427ce4ec 100644
+index ce3c50729a..6a8b5d71b0 100644
--- a/source.list
+++ b/source.list
-@@ -1179,3 +1179,12 @@ sound/null_s.cpp
+@@ -1183,3 +1183,12 @@ sound/null_s.cpp
# Threading
thread.h
@@ -70,10 +70,10 @@ index 4f9c8aa0d7..6e427ce4ec 100644
+underground_gui.h
+widgets/underground_widget.h
diff --git a/src/base_station_base.h b/src/base_station_base.h
-index eaeb246ef1..c4e802d1c1 100644
+index 0467866e50..d69bf21c88 100644
--- a/src/base_station_base.h
+++ b/src/base_station_base.h
-@@ -28,6 +28,13 @@ struct StationSpecList {
+@@ -26,6 +26,13 @@ struct StationSpecList {
/** StationRect - used to track station spread out rectangle - cheaper than scanning whole map */
@@ -87,7 +87,7 @@ index eaeb246ef1..c4e802d1c1 100644
struct StationRect : public Rect {
enum StationRectMode
{
-@@ -38,7 +45,7 @@ struct StationRect : public Rect {
+@@ -36,7 +43,7 @@ struct StationRect : public Rect {
StationRect();
void MakeEmpty();
@@ -97,10 +97,10 @@ index eaeb246ef1..c4e802d1c1 100644
CommandCost BeforeAddTile(TileIndex tile, StationRectMode mode);
CommandCost BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode);
diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp
-index bfe5c66b3c..230fc9421a 100644
+index 06953884e1..7759134704 100644
--- a/src/clear_cmd.cpp
+++ b/src/clear_cmd.cpp
-@@ -14,6 +14,7 @@
+@@ -12,6 +12,7 @@
#include "command_func.h"
#include "landscape.h"
#include "genworld.h"
@@ -108,7 +108,7 @@ index bfe5c66b3c..230fc9421a 100644
#include "viewport_func.h"
#include "water.h"
#include "core/random_func.hpp"
-@@ -100,8 +101,28 @@ static void DrawClearLandFence(const TileInfo *ti)
+@@ -98,8 +99,28 @@ static void DrawClearLandFence(const TileInfo *ti)
EndSpriteCombine();
}
@@ -137,7 +137,7 @@ index bfe5c66b3c..230fc9421a 100644
switch (GetClearGround(ti->tile)) {
case CLEAR_GRASS:
DrawClearLandTile(ti, GetClearDensity(ti->tile));
-@@ -126,6 +147,9 @@ static void DrawTile_Clear(TileInfo *ti)
+@@ -124,6 +145,9 @@ static void DrawTile_Clear(TileInfo *ti)
break;
}
@@ -148,10 +148,10 @@ index bfe5c66b3c..230fc9421a 100644
}
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
-index 740bbdde88..0646d83731 100644
+index 4706bfd914..bcffd6373c 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
-@@ -27,6 +27,7 @@
+@@ -25,6 +25,7 @@
#include "screenshot.h"
#include "genworld.h"
#include "strings_func.h"
@@ -159,7 +159,7 @@ index 740bbdde88..0646d83731 100644
#include "viewport_func.h"
#include "window_func.h"
#include "date_func.h"
-@@ -1046,6 +1047,7 @@ DEF_CONSOLE_CMD(ConRestart)
+@@ -1066,6 +1067,7 @@ DEF_CONSOLE_CMD(ConRestart)
}
/* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */
@@ -168,10 +168,10 @@ index 740bbdde88..0646d83731 100644
_settings_game.game_creation.map_y = FindFirstBit(MapSizeY());
_switch_mode = SM_RESTARTGAME;
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
-index 550a193d79..011fe186f9 100644
+index 154097e722..62fa1966eb 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
-@@ -18,6 +18,8 @@
+@@ -16,6 +16,8 @@
#include "window_func.h"
#include "date_func.h"
#include "sound_func.h"
@@ -180,7 +180,7 @@ index 550a193d79..011fe186f9 100644
#include "fios.h"
#include "string_func.h"
#include "widgets/dropdown_type.h"
-@@ -81,6 +83,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
+@@ -79,6 +81,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
/* Left column with labels. */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
@@ -188,7 +188,7 @@ index 550a193d79..011fe186f9 100644
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_LAND_GENERATOR, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1),
-@@ -97,6 +100,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
+@@ -95,6 +98,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0),
EndContainer(),
@@ -196,7 +196,7 @@ index 550a193d79..011fe186f9 100644
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_LANDSCAPE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
-@@ -201,6 +205,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
+@@ -199,6 +203,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1),
@@ -204,7 +204,7 @@ index 550a193d79..011fe186f9 100644
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1),
-@@ -218,6 +223,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
+@@ -216,6 +221,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
@@ -212,7 +212,7 @@ index 550a193d79..011fe186f9 100644
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
-@@ -282,11 +288,11 @@ static void LandscapeGenerationCallback(Window *w, bool confirmed)
+@@ -280,11 +286,11 @@ static void LandscapeGenerationCallback(Window *w, bool confirmed)
if (confirmed) StartGeneratingLandscape((GenerateLandscapeWindowMode)w->window_number);
}
@@ -226,7 +226,7 @@ index 550a193d79..011fe186f9 100644
DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false);
item->SetParam(0, 1LL << i);
list.emplace_back(item);
-@@ -295,6 +301,16 @@ static DropDownList BuildMapsizeDropDown()
+@@ -293,6 +299,16 @@ static DropDownList BuildMapsizeDropDown()
return list;
}
@@ -243,7 +243,7 @@ index 550a193d79..011fe186f9 100644
static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, INVALID_STRING_ID};
static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM, INVALID_STRING_ID};
static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT, INVALID_STRING_ID};
-@@ -338,6 +354,7 @@ struct GenerateLandscapeWindow : public Window {
+@@ -336,6 +352,7 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break;
case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_x); break;
case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_y); break;
@@ -251,7 +251,7 @@ index 550a193d79..011fe186f9 100644
case WID_GL_MAX_HEIGHTLEVEL_TEXT: SetDParam(0, _settings_newgame.construction.max_heightlevel); break;
case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break;
-@@ -460,6 +477,11 @@ struct GenerateLandscapeWindow : public Window {
+@@ -458,6 +475,11 @@ struct GenerateLandscapeWindow : public Window {
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
break;
@@ -263,7 +263,7 @@ index 550a193d79..011fe186f9 100644
case WID_GL_SNOW_LEVEL_TEXT:
SetDParamMaxValue(0, MAX_TILE_HEIGHT);
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
-@@ -546,6 +568,10 @@ struct GenerateLandscapeWindow : public Window {
+@@ -544,6 +566,10 @@ struct GenerateLandscapeWindow : public Window {
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_GL_MAPSIZE_Y_PULLDOWN);
break;
@@ -274,7 +274,7 @@ index 550a193d79..011fe186f9 100644
case WID_GL_TOWN_PULLDOWN: // Number of towns
ShowDropDownMenu(this, _num_towns, _settings_newgame.difficulty.number_towns, WID_GL_TOWN_PULLDOWN, 0, 0);
break;
-@@ -719,6 +745,7 @@ struct GenerateLandscapeWindow : public Window {
+@@ -717,6 +743,7 @@ struct GenerateLandscapeWindow : public Window {
switch (widget) {
case WID_GL_MAPSIZE_X_PULLDOWN: _settings_newgame.game_creation.map_x = index; break;
case WID_GL_MAPSIZE_Y_PULLDOWN: _settings_newgame.game_creation.map_y = index; break;
@@ -282,7 +282,7 @@ index 550a193d79..011fe186f9 100644
case WID_GL_TREE_PULLDOWN: _settings_newgame.game_creation.tree_placer = index; break;
case WID_GL_RIVER_PULLDOWN: _settings_newgame.game_creation.amount_of_rivers = index; break;
case WID_GL_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break;
-@@ -903,6 +930,10 @@ struct CreateScenarioWindow : public Window
+@@ -901,6 +928,10 @@ struct CreateScenarioWindow : public Window
SetDParam(0, 1LL << _settings_newgame.game_creation.map_y);
break;
@@ -293,7 +293,7 @@ index 550a193d79..011fe186f9 100644
case WID_CS_FLAT_LAND_HEIGHT_TEXT:
SetDParam(0, _settings_newgame.game_creation.se_flat_world_height);
break;
-@@ -936,6 +967,10 @@ struct CreateScenarioWindow : public Window
+@@ -934,6 +965,10 @@ struct CreateScenarioWindow : public Window
case WID_CS_MAPSIZE_X_PULLDOWN:
case WID_CS_MAPSIZE_Y_PULLDOWN:
SetDParamMaxValue(0, MAX_MAP_SIZE);
@@ -304,7 +304,7 @@ index 550a193d79..011fe186f9 100644
break;
case WID_CS_FLAT_LAND_HEIGHT_TEXT:
-@@ -969,6 +1004,10 @@ struct CreateScenarioWindow : public Window
+@@ -967,6 +1002,10 @@ struct CreateScenarioWindow : public Window
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_CS_MAPSIZE_Y_PULLDOWN);
break;
@@ -315,7 +315,7 @@ index 550a193d79..011fe186f9 100644
case WID_CS_EMPTY_WORLD: // Empty world / flat world
StartGeneratingLandscape(GLWM_SCENARIO);
break;
-@@ -1031,6 +1070,7 @@ struct CreateScenarioWindow : public Window
+@@ -1029,6 +1068,7 @@ struct CreateScenarioWindow : public Window
switch (widget) {
case WID_CS_MAPSIZE_X_PULLDOWN: _settings_newgame.game_creation.map_x = index; break;
case WID_CS_MAPSIZE_Y_PULLDOWN: _settings_newgame.game_creation.map_y = index; break;
@@ -323,7 +323,7 @@ index 550a193d79..011fe186f9 100644
}
this->SetDirty();
}
-@@ -1086,6 +1126,7 @@ static const NWidgetPart _nested_create_scenario_widgets[] = {
+@@ -1084,6 +1124,7 @@ static const NWidgetPart _nested_create_scenario_widgets[] = {
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetPadding(0, 4, 0, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 2, 0, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL),
@@ -332,10 +332,10 @@ index 550a193d79..011fe186f9 100644
/* Date. */
NWidget(NWID_HORIZONTAL),
diff --git a/src/gfx_type.h b/src/gfx_type.h
-index cc884b06df..0c0c258644 100644
+index 6fca2228df..85fae182a3 100644
--- a/src/gfx_type.h
+++ b/src/gfx_type.h
-@@ -157,6 +157,7 @@ struct DrawPixelInfo {
+@@ -155,6 +155,7 @@ struct DrawPixelInfo {
void *dst_ptr;
int left, top, width, height;
int pitch;
@@ -344,10 +344,10 @@ index cc884b06df..0c0c258644 100644
};
diff --git a/src/heightmap.cpp b/src/heightmap.cpp
-index 4609dceeb9..86ee14cc56 100644
+index fab93c9802..f345f5ee6d 100644
--- a/src/heightmap.cpp
+++ b/src/heightmap.cpp
-@@ -16,6 +16,7 @@
+@@ -14,6 +14,7 @@
#include "error.h"
#include "saveload/saveload.h"
#include "bmp.h"
@@ -355,7 +355,7 @@ index 4609dceeb9..86ee14cc56 100644
#include "gfx_func.h"
#include "fios.h"
#include "fileio_func.h"
-@@ -397,6 +398,9 @@ void FixSlopes()
+@@ -395,6 +396,9 @@ void FixSlopes()
width = MapSizeX();
height = MapSizeY();
@@ -366,10 +366,10 @@ index 4609dceeb9..86ee14cc56 100644
for (row = 0; (uint)row < height; row++) {
for (col = 0; (uint)col < width; col++) {
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
-index 4e4ff5c82f..befe060993 100644
+index 35def46098..c5a5ac03d1 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
-@@ -14,6 +14,7 @@
+@@ -12,6 +12,7 @@
#include "industry.h"
#include "station_base.h"
#include "landscape.h"
@@ -377,9 +377,9 @@ index 4e4ff5c82f..befe060993 100644
#include "viewport_func.h"
#include "command_func.h"
#include "town.h"
-@@ -1406,7 +1407,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil
- IndustryGfx gfx = GetTranslatedIndustryTileID(it->gfx);
- TileIndex cur_tile = TileAddWrap(tile, it->ti.x, it->ti.y);
+@@ -1438,7 +1439,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil
+ IndustryGfx gfx = GetTranslatedIndustryTileID(it.gfx);
+ TileIndex cur_tile = TileAddWrap(tile, it.ti.x, it.ti.y);
- if (!IsValidTile(cur_tile)) {
+ if (!IsValidTile(cur_tile) || IsUnderground(cur_tile)) {
@@ -387,10 +387,10 @@ index 4e4ff5c82f..befe060993 100644
}
diff --git a/src/landscape.cpp b/src/landscape.cpp
-index 66be73bd65..dced07599e 100644
+index e97d9cff03..4ad3b9b6cf 100644
--- a/src/landscape.cpp
+++ b/src/landscape.cpp
-@@ -35,6 +35,7 @@
+@@ -33,6 +33,7 @@
#include "framerate_type.h"
#include <list>
#include <set>
@@ -398,7 +398,7 @@ index 66be73bd65..dced07599e 100644
#include "table/strings.h"
#include "table/sprites.h"
-@@ -841,17 +842,23 @@ void RunTileLoop()
+@@ -839,17 +840,23 @@ void RunTileLoop()
void InitializeLandscape()
{
@@ -432,10 +432,10 @@ index 66be73bd65..dced07599e 100644
static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 };
diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt
-index 8340207dc3..30485b0ffd 100644
+index 4fbca76b54..a6313c2a44 100644
--- a/src/lang/afrikaans.txt
+++ b/src/lang/afrikaans.txt
-@@ -2570,7 +2570,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tremweg
+@@ -2616,7 +2616,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tremweg
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Spoorweg eienaar: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Plaaslike raad: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Geen
@@ -445,10 +445,10 @@ index 8340207dc3..30485b0ffd 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasie klas: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasie tiepe: {LTBLUE}{STRING}
diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt
-index cb558aa3a4..4e08bd22b5 100644
+index 819b3488ac..47f6f2a218 100644
--- a/src/lang/arabic_egypt.txt
+++ b/src/lang/arabic_egypt.txt
-@@ -2205,7 +2205,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالك
+@@ -2198,7 +2198,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالك
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالك سكة الحديد: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}السلطة المحلية: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :فارغ
@@ -458,10 +458,10 @@ index cb558aa3a4..4e08bd22b5 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK} فئة المحطة: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع المحطة: {LTBLUE}{STRING}
diff --git a/src/lang/basque.txt b/src/lang/basque.txt
-index f6d5cbeb48..a2d7d692b6 100644
+index f1d50f7839..eeefc557c8 100644
--- a/src/lang/basque.txt
+++ b/src/lang/basque.txt
-@@ -2473,7 +2473,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tranbia
+@@ -2474,7 +2474,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tranbia
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Trenbidearen jabea: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Udaletxea {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ezer ez
@@ -471,10 +471,10 @@ index f6d5cbeb48..a2d7d692b6 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Geltoki mota: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Geltoki mota: {LTBLUE}{STRING}
diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt
-index 5a7011e3b2..39bd4456cd 100644
+index cd5379e630..115d1587ca 100644
--- a/src/lang/belarusian.txt
+++ b/src/lang/belarusian.txt
-@@ -2916,7 +2916,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Улад
+@@ -2909,7 +2909,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Улад
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Уладальнiк чыгункi: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Мясцовая адміністрацыя: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Няма
@@ -484,10 +484,10 @@ index 5a7011e3b2..39bd4456cd 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Кляса станцыі: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тып станцыi: {LTBLUE}{STRING}
diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt
-index 5e688f006b..c8f4af128e 100644
+index adbf2a4cdf..5094849163 100644
--- a/src/lang/brazilian_portuguese.txt
+++ b/src/lang/brazilian_portuguese.txt
-@@ -2587,7 +2587,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da
+@@ -2580,7 +2580,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da linha ferroviária: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Prefeitura: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum
@@ -497,10 +497,10 @@ index 5e688f006b..c8f4af128e 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe de Estação: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de Estação: {LTBLUE}{STRING}
diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt
-index 974557ff9c..7afb4c1994 100644
+index 8c8c24f9c0..e6e152f1a2 100644
--- a/src/lang/bulgarian.txt
+++ b/src/lang/bulgarian.txt
-@@ -2535,7 +2535,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Собс
+@@ -2528,7 +2528,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Собс
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Собственик на железопътната линия: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Община: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Нищо
@@ -510,10 +510,10 @@ index 974557ff9c..7afb4c1994 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас на станцията: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип на станцията: {LTBLUE}{STRING}
diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt
-index 52fed2d757..31d1df932a 100644
+index 0f30221559..b9703f79b8 100644
--- a/src/lang/catalan.txt
+++ b/src/lang/catalan.txt
-@@ -2604,7 +2604,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
+@@ -2609,7 +2609,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietari del rail: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritat Local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Cap
@@ -523,10 +523,10 @@ index 52fed2d757..31d1df932a 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe d'estació: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipus d'estació: {LTBLUE}{STRING}
diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt
-index 344702819c..33630abec4 100644
+index 7f20426f48..28955b829e 100644
--- a/src/lang/croatian.txt
+++ b/src/lang/croatian.txt
-@@ -2716,7 +2716,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik
+@@ -2720,7 +2720,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik željeznice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Područna nadležnost: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nijedan/Nitko/Ništa
@@ -536,10 +536,10 @@ index 344702819c..33630abec4 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa postaje: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING}
diff --git a/src/lang/czech.txt b/src/lang/czech.txt
-index a79e7d88d7..c36bbee385 100644
+index fd7bb561e1..e096441329 100644
--- a/src/lang/czech.txt
+++ b/src/lang/czech.txt
-@@ -2683,7 +2683,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel
+@@ -2714,7 +2714,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Majitel tratě: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Místní správa: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nic
@@ -549,10 +549,10 @@ index a79e7d88d7..c36bbee385 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Třída stanice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Druh stanice: {LTBLUE}{STRING}
diff --git a/src/lang/danish.txt b/src/lang/danish.txt
-index deb41bef25..1e955392cc 100644
+index f501b89c45..01160aad71 100644
--- a/src/lang/danish.txt
+++ b/src/lang/danish.txt
-@@ -2605,7 +2605,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ejer af
+@@ -2624,7 +2624,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ejer af
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Ejer af jernbane: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokal myndighed: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen
@@ -562,10 +562,10 @@ index deb41bef25..1e955392cc 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING}
diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt
-index 951b2d0236..08041f45f4 100644
+index 4dfbb65476..955bb07ebb 100644
--- a/src/lang/dutch.txt
+++ b/src/lang/dutch.txt
-@@ -2620,7 +2620,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigenaar
+@@ -2624,7 +2624,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigenaar
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigenaar van spoorweg: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemeente: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Geen
@@ -575,10 +575,10 @@ index 951b2d0236..08041f45f4 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING}
diff --git a/src/lang/english.txt b/src/lang/english.txt
-index 5115a0eb5f..21e161aa44 100644
+index e478dc6e1c..1e4ae168c0 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
-@@ -464,6 +464,18 @@ STR_LANDSCAPING_MENU_PLANT_TREES :Plant trees
+@@ -462,6 +462,18 @@ STR_LANDSCAPING_MENU_PLANT_TREES :Plant trees
STR_LANDSCAPING_MENU_PLACE_SIGN :Place sign
############ range ends here
@@ -597,7 +597,7 @@ index 5115a0eb5f..21e161aa44 100644
############ range for music menu starts
STR_TOOLBAR_SOUND_MUSIC :Sound/music
############ range ends here
-@@ -2620,7 +2632,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway
+@@ -2625,7 +2637,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railway owner: {LTBLUE}{STRING1}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING1}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None
@@ -606,7 +606,7 @@ index 5115a0eb5f..21e161aa44 100644
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Built: {LTBLUE}{DATE_LONG}
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING}
-@@ -5128,3 +5140,35 @@ STR_PLANE :{BLACK}{PLANE}
+@@ -5150,3 +5162,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
@@ -643,10 +643,10 @@ index 5115a0eb5f..21e161aa44 100644
+
+# end underground string
diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt
-index f20c10058f..5d800a3d37 100644
+index ac8b4605a5..309509498f 100644
--- a/src/lang/english_AU.txt
+++ b/src/lang/english_AU.txt
-@@ -2544,7 +2544,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway
+@@ -2537,7 +2537,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railway owner: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None
@@ -656,10 +656,10 @@ index f20c10058f..5d800a3d37 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING}
diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt
-index 6bf3ba3dd0..bd86accd68 100644
+index d35b02b246..5b2b0b4d07 100644
--- a/src/lang/english_US.txt
+++ b/src/lang/english_US.txt
-@@ -2620,7 +2620,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Streetca
+@@ -2621,7 +2621,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Streetca
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railroad owner: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None
@@ -669,10 +669,10 @@ index 6bf3ba3dd0..bd86accd68 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING}
diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt
-index b7f657523c..e95f86f253 100644
+index ba7a07f802..4cf0a27425 100644
--- a/src/lang/esperanto.txt
+++ b/src/lang/esperanto.txt
-@@ -2174,7 +2174,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Posedant
+@@ -2167,7 +2167,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Posedant
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Posedanto de fervojo: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokaj estroj: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neniu
@@ -682,10 +682,10 @@ index b7f657523c..e95f86f253 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacioklaso: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Staciotipo: {LTBLUE}{STRING}
diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt
-index ea32d2a4fe..941cd17202 100644
+index d96fd0fc0c..d8b253100e 100644
--- a/src/lang/estonian.txt
+++ b/src/lang/estonian.txt
-@@ -2632,7 +2632,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trammite
+@@ -2635,7 +2635,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trammite
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Raudtee omanik: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Kohalik omavalitsus: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :puudub
@@ -695,10 +695,10 @@ index ea32d2a4fe..941cd17202 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Jaama liik: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jaama rühm: {LTBLUE}{STRING}
diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt
-index 890f085fca..5745bd7804 100644
+index b6bf7ab2d5..696b89ef6e 100644
--- a/src/lang/faroese.txt
+++ b/src/lang/faroese.txt
-@@ -2312,7 +2312,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogn
+@@ -2305,7 +2305,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogn
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jarnbreyta eigari: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Mynduleikar á staðnum: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Eingin
@@ -708,10 +708,10 @@ index 890f085fca..5745bd7804 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Støð klassi: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Støð slag: {LTBLUE}{STRING}
diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt
-index 34520ac0b6..b5848d81de 100644
+index 52cabab66a..397c30e051 100644
--- a/src/lang/finnish.txt
+++ b/src/lang/finnish.txt
-@@ -2620,7 +2620,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Raitioti
+@@ -2622,7 +2622,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Raitioti
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Rautatien omistaja: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Kunta: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ei mitään
@@ -721,10 +721,10 @@ index 34520ac0b6..b5848d81de 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aseman luokka: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Aseman tyyppi: {LTBLUE}{STRING}
diff --git a/src/lang/french.txt b/src/lang/french.txt
-index e21dcfccb1..9a4f49ad74 100644
+index 811fdeac8c..faa016d2e9 100644
--- a/src/lang/french.txt
+++ b/src/lang/french.txt
-@@ -2621,7 +2621,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Proprié
+@@ -2625,7 +2625,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Proprié
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propriétaire des rails{NBSP}: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Municipalité{NBSP}: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Aucune
@@ -734,10 +734,10 @@ index e21dcfccb1..9a4f49ad74 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Type de station{NBSP}: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Type de station{NBSP}: {LTBLUE}{STRING}
diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt
-index 056bbe387a..e3cea6c5b8 100644
+index 8e9b6be1e6..06043747f9 100644
--- a/src/lang/gaelic.txt
+++ b/src/lang/gaelic.txt
-@@ -2802,7 +2802,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Seilbhea
+@@ -2795,7 +2795,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Seilbhea
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Seilbheadair na rathaid-iarainn: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Ùghdarras ionadail: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Chan eil gin
@@ -747,10 +747,10 @@ index 056bbe387a..e3cea6c5b8 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING}
diff --git a/src/lang/galician.txt b/src/lang/galician.txt
-index 65f6f4c7b1..04fca18d68 100644
+index 9f1b0cf3d4..205f516860 100644
--- a/src/lang/galician.txt
+++ b/src/lang/galician.txt
-@@ -2573,7 +2573,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
+@@ -2616,7 +2616,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario da vía ferroviaria: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ningunha
@@ -760,10 +760,10 @@ index 65f6f4c7b1..04fca18d68 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING}
diff --git a/src/lang/german.txt b/src/lang/german.txt
-index f1940b1ec1..847b6430fa 100644
+index 6e8debe354..e4d477f923 100644
--- a/src/lang/german.txt
+++ b/src/lang/german.txt
-@@ -2593,7 +2593,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Straßen
+@@ -2595,7 +2595,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Straßen
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Gleiseigentümer: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gehört zur Gemeinde: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Keine
@@ -773,10 +773,10 @@ index f1940b1ec1..847b6430fa 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING}
diff --git a/src/lang/greek.txt b/src/lang/greek.txt
-index 2ff31a610d..dfcca33d39 100644
+index a2971e0f8f..e82751b10e 100644
--- a/src/lang/greek.txt
+++ b/src/lang/greek.txt
-@@ -2712,7 +2712,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ιδιο
+@@ -2705,7 +2705,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ιδιο
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Ιδιοκτήτης του σιδηροδρόμου: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Τοπική αρχή: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Καμιά
@@ -786,10 +786,10 @@ index 2ff31a610d..dfcca33d39 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κατηγορία σταθμού: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Τύπος σταθμού: {LTBLUE}{STRING}
diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt
-index 3c576bdf4d..8c9647ca77 100644
+index a944e7d5e6..b392f43c4f 100644
--- a/src/lang/hebrew.txt
+++ b/src/lang/hebrew.txt
-@@ -2595,7 +2595,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}:בעל
+@@ -2588,7 +2588,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}:בעל
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}בעלי מסילת הרכבת: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{LTBLUE}{STRING}{BLACK} :רשות מקומית
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :אין
@@ -799,10 +799,10 @@ index 3c576bdf4d..8c9647ca77 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}{LTBLUE}{STRING}: אופי התחנה
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK} {LTBLUE}{STRING}: סוג התחנה
diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt
-index 641eb3c01b..0cca5fced6 100644
+index 89f79ff21a..29a3f42e2a 100644
--- a/src/lang/hungarian.txt
+++ b/src/lang/hungarian.txt
-@@ -2684,7 +2684,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villam
+@@ -2688,7 +2688,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villam
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}A vasúti pálya tulajdonosa: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Helyi önkormányzat: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nincs
@@ -812,10 +812,10 @@ index 641eb3c01b..0cca5fced6 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Állomás osztálya: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Állomás típusa: {LTBLUE}{STRING}
diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt
-index 7ad0c23cfb..40b5676762 100644
+index 7415e01f1e..0a4f617f4c 100644
--- a/src/lang/icelandic.txt
+++ b/src/lang/icelandic.txt
-@@ -2419,7 +2419,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi
+@@ -2412,7 +2412,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigandi járnbrautarspors: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Enginn
@@ -825,10 +825,10 @@ index 7ad0c23cfb..40b5676762 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tegund stöðvar: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tegund stöðvar: {LTBLUE}{STRING}
diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt
-index c35f02079f..0f317fab13 100644
+index b189ce98f4..3019b3a670 100644
--- a/src/lang/indonesian.txt
+++ b/src/lang/indonesian.txt
-@@ -2589,7 +2589,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik
+@@ -2583,7 +2583,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Pemilik Rel Kereta: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pemkot setempat: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Kosong
@@ -838,10 +838,10 @@ index c35f02079f..0f317fab13 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas Stasiun: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipe Stasiun: {LTBLUE}{STRING}
diff --git a/src/lang/irish.txt b/src/lang/irish.txt
-index 17a5ad57c4..8ea4c59425 100644
+index d5371f8b83..677a5d691e 100644
--- a/src/lang/irish.txt
+++ b/src/lang/irish.txt
-@@ -2569,7 +2569,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir
+@@ -2562,7 +2562,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Úinéir an iarnróid: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Údarás áitiúil: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ceann ar bith
@@ -851,10 +851,10 @@ index 17a5ad57c4..8ea4c59425 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aicme an stáisiúin: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Cineál stáisiúin: {LTBLUE}{STRING}
diff --git a/src/lang/italian.txt b/src/lang/italian.txt
-index c3e23286c3..94677276fa 100644
+index 2556c68304..82c34901bc 100644
--- a/src/lang/italian.txt
+++ b/src/lang/italian.txt
-@@ -2650,7 +2650,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet
+@@ -2654,7 +2654,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietario ferrovia: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autorità locale: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nessuna
@@ -864,10 +864,10 @@ index c3e23286c3..94677276fa 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo stazione: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo stazione: {LTBLUE}{STRING}
diff --git a/src/lang/korean.txt b/src/lang/korean.txt
-index c91b052cff..e0d5fcc40d 100644
+index 8bbf5bae48..564606ebcb 100644
--- a/src/lang/korean.txt
+++ b/src/lang/korean.txt
-@@ -2621,7 +2621,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}전찻
+@@ -2625,7 +2625,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}전찻
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}철도 소유주: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}지역 당국: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :없음
@@ -877,10 +877,10 @@ index c91b052cff..e0d5fcc40d 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}역 분류: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}역 종류: {LTBLUE}{STRING}
diff --git a/src/lang/latin.txt b/src/lang/latin.txt
-index a9cd508745..3f064ce691 100644
+index 629e3d90df..46082b83e2 100644
--- a/src/lang/latin.txt
+++ b/src/lang/latin.txt
-@@ -2804,7 +2804,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Possesso
+@@ -2797,7 +2797,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Possesso
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Possessor ferriviae: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Auctoritas vicinalis: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nulla
@@ -890,10 +890,10 @@ index a9cd508745..3f064ce691 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classis stationis: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typus stationis: {LTBLUE}{STRING}
diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt
-index 494182806a..1d7952a674 100644
+index 7998346592..3bedefac20 100644
--- a/src/lang/latvian.txt
+++ b/src/lang/latvian.txt
-@@ -2515,7 +2515,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dzelzce
+@@ -2591,7 +2591,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dzelzce
STR_LAND_AREA_INFORMATION_RAIL_OWNER.kas :{BLACK}Dzelzceļa īpašniece: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pašvaldība: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neviena
@@ -903,10 +903,10 @@ index 494182806a..1d7952a674 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacijas klase: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stacijas tips: {LTBLUE}{STRING}
diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt
-index 9c8d320060..edd25ff2e6 100644
+index 2d2f9f148d..77a738526d 100644
--- a/src/lang/lithuanian.txt
+++ b/src/lang/lithuanian.txt
-@@ -2788,7 +2788,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvaja
+@@ -2781,7 +2781,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvaja
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Geležinkelio savininkas: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Vietos valdžia: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nėra
@@ -916,10 +916,10 @@ index 9c8d320060..edd25ff2e6 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stotelės rūšis: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stotelės tipas: {LTBLUE}{STRING}
diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt
-index 1b976dd7e8..9b64c7749c 100644
+index 0d23f442eb..619fa95e7f 100644
--- a/src/lang/luxembourgish.txt
+++ b/src/lang/luxembourgish.txt
-@@ -2599,7 +2599,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramschi
+@@ -2624,7 +2624,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramschi
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Schinnebesëtzer: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemeng: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Keng
@@ -929,10 +929,10 @@ index 1b976dd7e8..9b64c7749c 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Statiounsklass: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Statiounstyp: {LTBLUE}{STRING}
diff --git a/src/lang/malay.txt b/src/lang/malay.txt
-index 3bdb601406..7d397505a4 100644
+index d6707443f0..b4b3a0ebb5 100644
--- a/src/lang/malay.txt
+++ b/src/lang/malay.txt
-@@ -2316,7 +2316,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik
+@@ -2309,7 +2309,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Pemilik landasan keretapi: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pihak berkuasa: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Tiada
@@ -942,10 +942,10 @@ index 3bdb601406..7d397505a4 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas stesen: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jenis stesen: {LTBLUE}{STRING}
diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt
-index 9d5f363576..0a2b9b21a9 100644
+index 27f6bb6264..93a49a05da 100644
--- a/src/lang/norwegian_bokmal.txt
+++ b/src/lang/norwegian_bokmal.txt
-@@ -2624,7 +2624,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av
+@@ -2617,7 +2617,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eier av jernbanespor: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen
@@ -955,10 +955,10 @@ index 9d5f363576..0a2b9b21a9 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonstype: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjonstype: {LTBLUE}{STRING}
diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt
-index 54b8c11054..d4992d65b6 100644
+index 59e6381676..05104ef4f5 100644
--- a/src/lang/norwegian_nynorsk.txt
+++ b/src/lang/norwegian_nynorsk.txt
-@@ -2492,7 +2492,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trikkesp
+@@ -2485,7 +2485,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trikkesp
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jernbaneskjene-eigar: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen
@@ -968,10 +968,10 @@ index 54b8c11054..d4992d65b6 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonsklasse: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjontype: {LTBLUE}{STRING}
diff --git a/src/lang/polish.txt b/src/lang/polish.txt
-index 285096874b..9d5e0d18d8 100644
+index 463f21b0d0..f2939e493e 100644
--- a/src/lang/polish.txt
+++ b/src/lang/polish.txt
-@@ -2971,7 +2971,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Wlascici
+@@ -3004,7 +3004,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Właści
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Wlaściciel linii kolejowej: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalne władze: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brak
@@ -981,23 +981,23 @@ index 285096874b..9d5e0d18d8 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Rodzaj stacji: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stacji: {LTBLUE}{STRING}
diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt
-index f90aaaefbb..185368c6a4 100644
+index d6666eaca2..460242786b 100644
--- a/src/lang/portuguese.txt
+++ b/src/lang/portuguese.txt
-@@ -2606,7 +2606,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da
+@@ -2611,7 +2611,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da linha férrea: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum
-STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING})
+STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} x -{NUM} ({STRING})
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído: {LTBLUE}{DATE_LONG}
- STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo de Estação: {LTBLUE}{STRING}
- STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de Estação: {LTBLUE}{STRING}
+ STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo de estação: {LTBLUE}{STRING}
+ STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estação: {LTBLUE}{STRING}
diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt
-index f0dee3c675..406cb5efc9 100644
+index b3c04eaaf0..4e874722fb 100644
--- a/src/lang/romanian.txt
+++ b/src/lang/romanian.txt
-@@ -2551,7 +2551,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet
+@@ -2544,7 +2544,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietar al căii ferate: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritatea locală: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nici una
@@ -1007,10 +1007,10 @@ index f0dee3c675..406cb5efc9 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clasa staţiei: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tip staţie: {LTBLUE}{STRING}
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
-index ef03ace5b0..3b372656ca 100644
+index 4f98e7adee..3c3033aa02 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
-@@ -590,6 +590,18 @@ STR_LANDSCAPING_MENU_PLANT_TREES :Высадка
+@@ -588,6 +588,18 @@ STR_LANDSCAPING_MENU_PLANT_TREES :Высадка
STR_LANDSCAPING_MENU_PLACE_SIGN :Поставить метку
############ range ends here
@@ -1029,7 +1029,7 @@ index ef03ace5b0..3b372656ca 100644
############ range for music menu starts
STR_TOOLBAR_SOUND_MUSIC :Звук/музыка
############ range ends here
-@@ -2800,7 +2812,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влад
+@@ -2804,7 +2816,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влад
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Владелец ж/д пути: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Администрация: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Нет
@@ -1038,7 +1038,7 @@ index ef03ace5b0..3b372656ca 100644
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Построено: {LTBLUE}{DATE_LONG}
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Класс станции: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станции: {LTBLUE}{STRING}
-@@ -5357,3 +5369,35 @@ STR_PLANE :{BLACK}{PLANE}
+@@ -5378,3 +5390,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
@@ -1075,10 +1075,10 @@ index ef03ace5b0..3b372656ca 100644
+
+# end underground string
diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt
-index 4568168083..f18ff72ecf 100644
+index 7567da7370..13b501ac1f 100644
--- a/src/lang/serbian.txt
+++ b/src/lang/serbian.txt
-@@ -2777,7 +2777,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik
+@@ -2770,7 +2770,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik železničke pruge: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna vlast: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nema
@@ -1088,10 +1088,10 @@ index 4568168083..f18ff72ecf 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa stanice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta stanice: {LTBLUE}{STRING}
diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt
-index b87fce0dae..1b5a1035a3 100644
+index ac0764838e..ffa35f9e3d 100644
--- a/src/lang/simplified_chinese.txt
+++ b/src/lang/simplified_chinese.txt
-@@ -2579,7 +2579,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨
+@@ -2624,7 +2624,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}铁路归属:{LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :没有
@@ -1101,10 +1101,10 @@ index b87fce0dae..1b5a1035a3 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}车站分类: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}车站类型: {LTBLUE}{STRING}
diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt
-index 995007c687..cb0e8339aa 100644
+index 519849a808..5527f87b7e 100644
--- a/src/lang/slovak.txt
+++ b/src/lang/slovak.txt
-@@ -2637,7 +2637,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlastní
+@@ -2630,7 +2630,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlastní
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlastník železnice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Miestna správa: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neznáme
@@ -1114,10 +1114,10 @@ index 995007c687..cb0e8339aa 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Trieda stanice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stanice: {LTBLUE}{STRING}
diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt
-index 6e38e90b06..05972541b4 100644
+index 508455dd8d..bd198050d0 100644
--- a/src/lang/slovenian.txt
+++ b/src/lang/slovenian.txt
-@@ -2723,7 +2723,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Lastnik
+@@ -2718,7 +2718,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Lastnik
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Lastnik železnice: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna oblast: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brez
@@ -1127,10 +1127,10 @@ index 6e38e90b06..05972541b4 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Razred postaje: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING}
diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt
-index 97cac76def..0568fc91bf 100644
+index 0a2a34b880..cf5d97c101 100644
--- a/src/lang/spanish.txt
+++ b/src/lang/spanish.txt
-@@ -2584,7 +2584,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
+@@ -2614,7 +2614,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario del ferrocarril: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridad local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ninguna
@@ -1140,10 +1140,10 @@ index 97cac76def..0568fc91bf 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING}
diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt
-index d6da66d53a..e8e39a87c4 100644
+index 85e7cfdcb4..a332847918 100644
--- a/src/lang/spanish_MX.txt
+++ b/src/lang/spanish_MX.txt
-@@ -2616,7 +2616,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
+@@ -2626,7 +2626,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario del ferrocarril: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Ayuntamiento: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ninguno
@@ -1153,10 +1153,10 @@ index d6da66d53a..e8e39a87c4 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING}
diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt
-index 6f09523d61..aa9e56d948 100644
+index 64bd3679a4..b50397d47f 100644
--- a/src/lang/swedish.txt
+++ b/src/lang/swedish.txt
-@@ -2601,7 +2601,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Spårvä
+@@ -2613,7 +2613,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Spårvä
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Järnvägens ägare: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokala myndigheter: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen
@@ -1166,10 +1166,10 @@ index 6f09523d61..aa9e56d948 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklass: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING}
diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt
-index 71c62c6f63..1860709ad5 100644
+index 9b27d0cfd1..47793fc703 100644
--- a/src/lang/tamil.txt
+++ b/src/lang/tamil.txt
-@@ -2263,7 +2263,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட்
+@@ -2301,7 +2301,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட்
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}இரயில்வே உரிமையாளர்: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}நகராட்சி: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ஒன்றுமில்லை
@@ -1179,10 +1179,10 @@ index 71c62c6f63..1860709ad5 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}நிலையத்தின் பிரிவு: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}நிலையத்தின் வகை: {LTBLUE}{STRING}
diff --git a/src/lang/thai.txt b/src/lang/thai.txt
-index 20ddb974bc..14816206e7 100644
+index 46ecfa5675..22a3c46638 100644
--- a/src/lang/thai.txt
+++ b/src/lang/thai.txt
-@@ -2518,7 +2518,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู
+@@ -2511,7 +2511,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}ผู้ครอบครองทางรถไฟ: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}ขึ้นตรงกับผู้ดูแลในท้องถิ่น: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ไม่มี
@@ -1192,10 +1192,10 @@ index 20ddb974bc..14816206e7 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ประเภทของสถานี: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}รูปแบบของสถานี: {LTBLUE}{STRING}
diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt
-index db3238b709..e0c5ae30d8 100644
+index 3aa84cc35a..902f27dba6 100644
--- a/src/lang/traditional_chinese.txt
+++ b/src/lang/traditional_chinese.txt
-@@ -2569,7 +2569,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}電車
+@@ -2563,7 +2563,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}電車
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}鐵路所有者:{LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :無
@@ -1205,10 +1205,10 @@ index db3238b709..e0c5ae30d8 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}車站風格:{LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}車站種類:{LTBLUE}{STRING}
diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt
-index 8e6e5196aa..aaf1f6f93c 100644
+index 8b9d0da971..4ed3b77a65 100644
--- a/src/lang/turkish.txt
+++ b/src/lang/turkish.txt
-@@ -2598,7 +2598,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvay
+@@ -2591,7 +2591,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvay
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Demiryolu sahibi: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Belediyesi: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Hiçbiri
@@ -1218,10 +1218,10 @@ index 8e6e5196aa..aaf1f6f93c 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}İstasyon sınıfı: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}İstasyon türü: {LTBLUE}{STRING}
diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt
-index 3246627685..4bab3e0170 100644
+index 855995759d..3482506166 100644
--- a/src/lang/ukrainian.txt
+++ b/src/lang/ukrainian.txt
-@@ -2739,7 +2739,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влас
+@@ -2746,7 +2746,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влас
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Власник залізниці: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Місцева влада: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Немає
@@ -1231,10 +1231,10 @@ index 3246627685..4bab3e0170 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас станції: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станції: {LTBLUE}{STRING}
diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt
-index de218abc8f..acb534b4ba 100644
+index b27230b3b2..b6b1f83ea9 100644
--- a/src/lang/unfinished/persian.txt
+++ b/src/lang/unfinished/persian.txt
-@@ -2273,7 +2273,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالک
+@@ -2266,7 +2266,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالک
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالک ریل راه آهن: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}فرماندار محلی: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :هیچکدام
@@ -1244,10 +1244,10 @@ index de218abc8f..acb534b4ba 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}کلاس ایستگاه: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع ایستگاه: {LTBLUE}{STRING}
diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt
-index 8bd361273d..357d8eb8ec 100644
+index 33d14a64d5..6395e1f7a2 100644
--- a/src/lang/vietnamese.txt
+++ b/src/lang/vietnamese.txt
-@@ -2586,7 +2586,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Chủ đ
+@@ -2615,7 +2615,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Chủ đ
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Chủ đường ray: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Thuộc về địa phương: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Không
@@ -1257,10 +1257,10 @@ index 8bd361273d..357d8eb8ec 100644
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Loại ga,bến: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Kiểu ga,bến: {LTBLUE}{STRING}
diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt
-index 36fc85a62d..aaf5e4d40f 100644
+index fcf9dbac47..bc0f7f7b2c 100644
--- a/src/lang/welsh.txt
+++ b/src/lang/welsh.txt
-@@ -2572,7 +2572,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Perchenn
+@@ -2570,7 +2570,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Perchenn
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Perchennog rheilffordd: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Awdurdod Lleol: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Dim
@@ -1571,10 +1571,10 @@ index 0000000000..53eafdde63
+
+#endif /* LAYER_TYPE_H */
diff --git a/src/main_gui.cpp b/src/main_gui.cpp
-index b6cf616d17..31a769f5a3 100644
+index e7e3ff8e27..bb1ecaddfb 100644
--- a/src/main_gui.cpp
+++ b/src/main_gui.cpp
-@@ -33,6 +33,9 @@
+@@ -31,6 +31,9 @@
#include "tilehighlight_func.h"
#include "hotkeys.h"
#include "guitimer_func.h"
@@ -1584,7 +1584,7 @@ index b6cf616d17..31a769f5a3 100644
#include "saveload/saveload.h"
-@@ -104,7 +107,7 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl
+@@ -102,7 +105,7 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
w->SetDirty();
@@ -1593,7 +1593,7 @@ index b6cf616d17..31a769f5a3 100644
ResetObjectToPlace();
return false;
}
-@@ -199,6 +202,22 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
+@@ -197,6 +200,22 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
}
}
@@ -1616,7 +1616,7 @@ index b6cf616d17..31a769f5a3 100644
void FixTitleGameZoom()
{
if (_game_mode != GM_MENU) return;
-@@ -446,7 +465,11 @@ struct MainWindow : Window
+@@ -444,7 +463,11 @@ struct MainWindow : Window
void OnMouseWheel(int wheel) override
{
if (_settings_client.gui.scrollwheel_scrolling != 2) {
@@ -1630,10 +1630,10 @@ index b6cf616d17..31a769f5a3 100644
}
diff --git a/src/map.cpp b/src/map.cpp
-index 53e26ed73e..c45ac1b0ff 100644
+index 679c445ee1..9ad1077c9b 100644
--- a/src/map.cpp
+++ b/src/map.cpp
-@@ -13,6 +13,7 @@
+@@ -11,6 +11,7 @@
#include "debug.h"
#include "core/alloc_func.hpp"
#include "water_map.h"
@@ -1641,7 +1641,7 @@ index 53e26ed73e..c45ac1b0ff 100644
#include "string_func.h"
#include "safeguards.h"
-@@ -38,7 +39,7 @@ TileExtended *_me = nullptr; ///< Extended Tiles of the map
+@@ -36,7 +37,7 @@ TileExtended *_me = nullptr; ///< Extended Tiles of the map
* @param size_x the width of the map along the NE/SW edge
* @param size_y the 'height' of the map along the SE/NW edge
*/
@@ -1650,7 +1650,7 @@ index 53e26ed73e..c45ac1b0ff 100644
{
/* Make sure that the map size is within the limits and that
* size of both axes is a power of 2. */
-@@ -49,6 +50,10 @@ void AllocateMap(uint size_x, uint size_y)
+@@ -47,6 +48,10 @@ void AllocateMap(uint size_x, uint size_y)
error("Invalid map size");
}
@@ -1661,7 +1661,7 @@ index 53e26ed73e..c45ac1b0ff 100644
DEBUG(map, 1, "Allocating map of size %dx%d", size_x, size_y);
_map_log_x = FindFirstBit(size_x);
-@@ -270,6 +275,7 @@ bool CircularTileSearch(TileIndex *tile, uint size, TestTileOnSearchProc proc, v
+@@ -268,6 +273,7 @@ bool CircularTileSearch(TileIndex *tile, uint size, TestTileOnSearchProc proc, v
/* If tile test is not successful, get one tile up,
* ready for a test in first circle around center tile */
*tile = TileAddByDir(*tile, DIR_N);
@@ -1670,10 +1670,10 @@ index 53e26ed73e..c45ac1b0ff 100644
} else {
return CircularTileSearch(tile, size / 2, 0, 0, proc, user_data);
diff --git a/src/map_func.h b/src/map_func.h
-index 21d69b1382..b0a59eb148 100644
+index 0c8fda7be9..92cc34ac70 100644
--- a/src/map_func.h
+++ b/src/map_func.h
-@@ -43,7 +43,7 @@ extern Tile *_m;
+@@ -41,7 +41,7 @@ extern Tile *_m;
*/
extern TileExtended *_me;
@@ -1682,7 +1682,7 @@ index 21d69b1382..b0a59eb148 100644
/**
* Logarithm of the map size along the X side.
-@@ -115,6 +115,64 @@ static inline uint MapMaxY()
+@@ -113,6 +113,64 @@ static inline uint MapMaxY()
return MapSizeY() - 1;
}
@@ -1747,7 +1747,7 @@ index 21d69b1382..b0a59eb148 100644
/**
* Scales the given value by the map size, where the given value is
* for a 256 by 256 map.
-@@ -125,7 +183,7 @@ static inline uint ScaleByMapSize(uint n)
+@@ -123,7 +181,7 @@ static inline uint ScaleByMapSize(uint n)
{
/* Subtract 12 from shift in order to prevent integer overflow
* for large values of n. It's safe since the min mapsize is 64x64. */
@@ -1757,10 +1757,10 @@ index 21d69b1382..b0a59eb148 100644
diff --git a/src/misc.cpp b/src/misc.cpp
-index 3d09f26f26..251ea4990d 100644
+index dcb04fa026..0e28216300 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
-@@ -10,6 +10,7 @@
+@@ -8,6 +8,7 @@
/** @file misc.cpp Misc functions that shouldn't be here. */
#include "stdafx.h"
@@ -1778,10 +1778,10 @@ index 3d09f26f26..251ea4990d 100644
_pause_mode = PM_UNPAUSED;
_fast_forward = 0;
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
-index 353972d489..3d0c029a2e 100644
+index ff2fc3a23c..74b59d294b 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
-@@ -217,10 +217,11 @@ public:
+@@ -216,10 +216,11 @@ public:
/* Location */
char tmp[16];
seprintf(tmp, lastof(tmp), "0x%.4X", tile);
@@ -1797,10 +1797,10 @@ index 353972d489..3d0c029a2e 100644
line_nr++;
diff --git a/src/rail.h b/src/rail.h
-index 8619bac6d9..c22b1d2cbc 100644
+index d9121d545a..ee27f6e179 100644
--- a/src/rail.h
+++ b/src/rail.h
-@@ -160,7 +160,7 @@ public:
+@@ -158,7 +158,7 @@ public:
SpriteID signals[SIGTYPE_END][2][2]; ///< signal GUI sprites (type, variant, state)
} gui_sprites;
@@ -1810,10 +1810,10 @@ index 8619bac6d9..c22b1d2cbc 100644
CursorID rail_swne; ///< Cursor for building rail in X direction
CursorID rail_ew; ///< Cursor for building rail in E-W direction
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
-index 1a4728c6c3..0181644b52 100644
+index 162fe97799..33cf2b245c 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
-@@ -535,12 +535,12 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
+@@ -533,12 +533,12 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
uint num_new_road_pieces = (road != ROAD_NONE) ? 2 - CountBits(road) : 0;
if (num_new_road_pieces > 0) {
@@ -1828,7 +1828,7 @@ index 1a4728c6c3..0181644b52 100644
}
if (flags & DC_EXEC) {
-@@ -604,7 +604,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
+@@ -601,7 +601,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
YapfNotifyTrackLayoutChange(tile, track);
}
@@ -1837,7 +1837,7 @@ index 1a4728c6c3..0181644b52 100644
return cost;
}
-@@ -648,7 +648,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -645,7 +645,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1,
if (ret.Failed()) return ret;
}
@@ -1846,7 +1846,7 @@ index 1a4728c6c3..0181644b52 100644
if (flags & DC_EXEC) {
if (HasReservedTracks(tile, trackbit)) {
-@@ -682,7 +682,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -679,7 +679,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1,
if ((present & trackbit) == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK);
if (present == (TRACK_BIT_X | TRACK_BIT_Y)) crossing = true;
@@ -1855,7 +1855,7 @@ index 1a4728c6c3..0181644b52 100644
/* Charge extra to remove signals on the track, if they are there */
if (HasSignalOnTrack(tile, track)) {
-@@ -997,7 +997,7 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u
+@@ -994,7 +994,7 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u
if (!_settings_game.construction.build_on_slopes || !CanBuildDepotByTileh(dir, tileh)) {
return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED);
}
@@ -1864,7 +1864,7 @@ index 1a4728c6c3..0181644b52 100644
}
cost.AddCost(DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR));
-@@ -1022,8 +1022,8 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u
+@@ -1019,8 +1019,8 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u
YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir));
}
@@ -1875,7 +1875,7 @@ index 1a4728c6c3..0181644b52 100644
return cost;
}
-@@ -1675,7 +1675,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
+@@ -1672,7 +1672,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
InvalidateWindowData(WC_BUILD_VEHICLE, tile);
}
found_convertible_track = true;
@@ -1884,7 +1884,7 @@ index 1a4728c6c3..0181644b52 100644
break;
default: // RAIL_TILE_NORMAL, RAIL_TILE_SIGNALS
-@@ -1687,7 +1687,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
+@@ -1684,7 +1684,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
}
}
found_convertible_track = true;
@@ -1893,7 +1893,7 @@ index 1a4728c6c3..0181644b52 100644
break;
}
break;
-@@ -1750,7 +1750,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
+@@ -1747,7 +1747,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
}
found_convertible_track = true;
@@ -1902,7 +1902,7 @@ index 1a4728c6c3..0181644b52 100644
break;
}
-@@ -1761,7 +1761,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
+@@ -1758,7 +1758,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
}
found_convertible_track = true;
@@ -1912,10 +1912,10 @@ index 1a4728c6c3..0181644b52 100644
}
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
-index 4f5519c31e..b88f621375 100644
+index 5a9efb8567..ba59f52f9f 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
-@@ -407,7 +407,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec
+@@ -402,7 +402,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec
}
} else {
assert(IsDriveThroughStopTile(tile));
@@ -1924,7 +1924,7 @@ index 4f5519c31e..b88f621375 100644
if (flags & DC_EXEC) {
/* A full diagonal road tile has two road bits. */
UpdateCompanyRoadInfrastructure(existing_rt, GetRoadOwner(tile, rtt), -2);
-@@ -889,7 +889,7 @@ do_clear:;
+@@ -883,7 +883,7 @@ do_clear:;
/* Count pieces */
CountBits(pieces);
@@ -1933,7 +1933,7 @@ index 4f5519c31e..b88f621375 100644
if (flags & DC_EXEC) {
switch (GetTileType(tile)) {
-@@ -1203,7 +1203,7 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
+@@ -1197,7 +1197,7 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
MarkTileDirtyByTile(tile);
MakeDefaultName(dep);
}
@@ -1943,10 +1943,10 @@ index 4f5519c31e..b88f621375 100644
}
diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp
-index a857d5b15a..892eba93bf 100644
+index 51c56684a9..0cb99757de 100644
--- a/src/saveload/map_sl.cpp
+++ b/src/saveload/map_sl.cpp
-@@ -11,6 +11,7 @@
+@@ -9,6 +9,7 @@
#include "../stdafx.h"
#include "../map_func.h"
@@ -1954,7 +1954,7 @@ index a857d5b15a..892eba93bf 100644
#include "../core/bitmath_func.hpp"
#include "../fios.h"
#include <array>
-@@ -21,10 +22,12 @@
+@@ -19,10 +20,12 @@
static uint32 _map_dim_x;
static uint32 _map_dim_y;
@@ -1967,7 +1967,7 @@ index a857d5b15a..892eba93bf 100644
SLEG_END()
};
-@@ -32,13 +35,14 @@ static void Save_MAPS()
+@@ -30,13 +33,14 @@ static void Save_MAPS()
{
_map_dim_x = MapSizeX();
_map_dim_y = MapSizeY();
@@ -1984,10 +1984,10 @@ index a857d5b15a..892eba93bf 100644
static void Check_MAPS()
diff --git a/src/script/api/script_window.hpp b/src/script/api/script_window.hpp
-index 902b19244a..96a4d01789 100644
+index 39a64034b9..b3cb22304f 100644
--- a/src/script/api/script_window.hpp
+++ b/src/script/api/script_window.hpp
-@@ -1330,6 +1330,7 @@ public:
+@@ -1335,6 +1335,7 @@ public:
WID_GL_MAPSIZE_X_PULLDOWN = ::WID_GL_MAPSIZE_X_PULLDOWN, ///< Dropdown 'map X size'.
WID_GL_MAPSIZE_Y_PULLDOWN = ::WID_GL_MAPSIZE_Y_PULLDOWN, ///< Dropdown 'map Y size'.
@@ -1995,7 +1995,7 @@ index 902b19244a..96a4d01789 100644
WID_GL_TOWN_PULLDOWN = ::WID_GL_TOWN_PULLDOWN, ///< Dropdown 'No. of towns'.
WID_GL_INDUSTRY_PULLDOWN = ::WID_GL_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries'.
-@@ -1378,6 +1379,7 @@ public:
+@@ -1383,6 +1384,7 @@ public:
WID_CS_RANDOM_WORLD = ::WID_CS_RANDOM_WORLD, ///< Generate random land button
WID_CS_MAPSIZE_X_PULLDOWN = ::WID_CS_MAPSIZE_X_PULLDOWN, ///< Pull-down arrow for x map size.
WID_CS_MAPSIZE_Y_PULLDOWN = ::WID_CS_MAPSIZE_Y_PULLDOWN, ///< Pull-down arrow for y map size.
@@ -2004,10 +2004,10 @@ index 902b19244a..96a4d01789 100644
WID_CS_START_DATE_TEXT = ::WID_CS_START_DATE_TEXT, ///< Clickable start date value.
WID_CS_START_DATE_UP = ::WID_CS_START_DATE_UP, ///< Increase start year (start later).
diff --git a/src/settings.cpp b/src/settings.cpp
-index 88cd95b710..76debc56a4 100644
+index 7fb2e72491..3e19acacbc 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
-@@ -32,6 +32,7 @@
+@@ -31,6 +31,7 @@
#include "command_func.h"
#include "console_func.h"
#include "pathfinder/pathfinder_type.h"
@@ -2016,12 +2016,12 @@ index 88cd95b710..76debc56a4 100644
#include "train.h"
#include "news_func.h"
diff --git a/src/settings_type.h b/src/settings_type.h
-index 9315cdd968..0fb72eb219 100644
+index fdb2b0f862..27708eb73b 100644
--- a/src/settings_type.h
+++ b/src/settings_type.h
-@@ -148,6 +148,8 @@ struct GUISettings {
- uint8 osk_activation; ///< Mouse gesture to trigger the OSK.
+@@ -147,6 +147,8 @@ struct GUISettings {
byte starting_colour; ///< default color scheme for the company to start a new game with
+ bool show_newgrf_name; ///< Show the name of the NewGRF in the build vehicle window
+ uint32 layer_view_type; ///< ( )
+
@@ -2029,7 +2029,7 @@ index 9315cdd968..0fb72eb219 100644
uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed.
@@ -282,6 +284,7 @@ struct GameCreationSettings {
- Year starting_year; ///< starting date
+ Year ending_year; ///< scoring end date
uint8 map_x; ///< X size of map
uint8 map_y; ///< Y size of map
+ uint8 layers; ///< map layer count
@@ -2037,10 +2037,10 @@ index 9315cdd968..0fb72eb219 100644
byte oil_refinery_limit; ///< distance oil refineries allowed from map edge
byte snow_line_height; ///< the configured snow line height
diff --git a/src/station.cpp b/src/station.cpp
-index 1d2eea4ca6..eaa9f1b964 100644
+index ec332e0bb2..5648b39ed9 100644
--- a/src/station.cpp
+++ b/src/station.cpp
-@@ -13,6 +13,7 @@
+@@ -11,6 +11,7 @@
#include "company_func.h"
#include "company_base.h"
#include "roadveh.h"
@@ -2048,7 +2048,7 @@ index 1d2eea4ca6..eaa9f1b964 100644
#include "viewport_func.h"
#include "viewport_kdtree.h"
#include "date_func.h"
-@@ -503,7 +504,7 @@ void StationRect::MakeEmpty()
+@@ -494,7 +495,7 @@ void StationRect::MakeEmpty()
/**
* Determines whether a given point (x, y) is within a certain distance of
* the station rectangle.
@@ -2057,7 +2057,7 @@ index 1d2eea4ca6..eaa9f1b964 100644
* @param x X coordinate
* @param y Y coordinate
* @param distance The maximum distance a point may have (L1 norm)
-@@ -522,8 +523,10 @@ bool StationRect::IsEmpty() const
+@@ -513,8 +514,10 @@ bool StationRect::IsEmpty() const
CommandCost StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode)
{
@@ -2070,7 +2070,7 @@ index 1d2eea4ca6..eaa9f1b964 100644
if (this->IsEmpty()) {
/* we are adding the first station tile */
if (mode != ADD_TEST) {
-@@ -576,28 +579,35 @@ CommandCost StationRect::BeforeAddRect(TileIndex tile, int w, int h, StationRect
+@@ -567,28 +570,35 @@ CommandCost StationRect::BeforeAddRect(TileIndex tile, int w, int h, StationRect
*/
/* static */ bool StationRect::ScanForStationTiles(StationID st_id, int left_a, int top_a, int right_a, int bottom_a)
{
@@ -2116,7 +2116,7 @@ index 1d2eea4ca6..eaa9f1b964 100644
/* can we reduce the rect in either direction? */
bool reduce_x = ((left_edge || right_edge) && !ScanForStationTiles(st->index, x, this->top, x, this->bottom));
-@@ -636,8 +646,13 @@ bool StationRect::AfterRemoveTile(BaseStation *st, TileIndex tile)
+@@ -627,8 +637,13 @@ bool StationRect::AfterRemoveTile(BaseStation *st, TileIndex tile)
bool StationRect::AfterRemoveRect(BaseStation *st, TileArea ta)
{
@@ -2133,10 +2133,10 @@ index 1d2eea4ca6..eaa9f1b964 100644
bool empty = this->AfterRemoveTile(st, ta.tile);
if (ta.w != 1 || ta.h != 1) empty = empty || this->AfterRemoveTile(st, TILE_ADDXY(ta.tile, ta.w - 1, ta.h - 1));
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
-index 546aecc269..a59d80a3a9 100644
+index 6cfd94bb2f..985e3b3c05 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
-@@ -13,6 +13,7 @@
+@@ -11,6 +11,7 @@
#include "aircraft.h"
#include "bridge_map.h"
#include "cmd_helper.h"
@@ -2144,7 +2144,7 @@ index 546aecc269..a59d80a3a9 100644
#include "viewport_func.h"
#include "viewport_kdtree.h"
#include "command_func.h"
-@@ -101,21 +102,24 @@ bool IsHangar(TileIndex t)
+@@ -100,21 +101,24 @@ bool IsHangar(TileIndex t)
* @return Succeeded command (if zero or one station found) or failed command (for two or more stations found).
*/
template <class T>
@@ -2178,7 +2178,7 @@ index 546aecc269..a59d80a3a9 100644
}
*st = (closest_station == INVALID_STATION) ? nullptr : T::Get(closest_station);
return CommandCost();
-@@ -801,7 +805,7 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z
+@@ -811,7 +815,7 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z
return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED);
}
}
@@ -2187,7 +2187,7 @@ index 546aecc269..a59d80a3a9 100644
}
/* The level of this tile must be equal to allowed_z. */
-@@ -1039,7 +1043,7 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags
+@@ -1049,7 +1053,7 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags
ret = DoCommand(cur_tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (ret.Failed()) return ret;
cost.AddCost(ret);
@@ -2196,7 +2196,7 @@ index 546aecc269..a59d80a3a9 100644
}
}
}
-@@ -1059,11 +1063,13 @@ CommandCost CanExpandRailStation(const BaseStation *st, TileArea &new_ta, Axis a
+@@ -1069,11 +1073,13 @@ CommandCost CanExpandRailStation(const BaseStation *st, TileArea &new_ta, Axis a
TileArea cur_ta = st->train_station;
/* determine new size of train station region.. */
@@ -2215,7 +2215,7 @@ index 546aecc269..a59d80a3a9 100644
/* make sure the final size is not too big. */
if (new_ta.w > _settings_game.station.station_spread || new_ta.h > _settings_game.station.station_spread) {
-@@ -1135,7 +1141,7 @@ void GetStationLayout(byte *layout, int numtracks, int plat_len, const StationSp
+@@ -1145,7 +1151,7 @@ void GetStationLayout(byte *layout, int numtracks, int plat_len, const StationSp
* @return command cost with the error or 'okay'
*/
template <class T, StringID error_message>
@@ -2224,7 +2224,7 @@ index 546aecc269..a59d80a3a9 100644
{
assert(*st == nullptr);
bool check_surrounding = true;
-@@ -1161,7 +1167,7 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station
+@@ -1171,7 +1177,7 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station
if (check_surrounding) {
/* Make sure there is no more than one other station around us that is owned by us. */
@@ -2233,7 +2233,7 @@ index 546aecc269..a59d80a3a9 100644
if (ret.Failed()) return ret;
}
-@@ -1180,9 +1186,9 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station
+@@ -1190,9 +1196,9 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station
* @param st 'return' pointer for the found station
* @return command cost with the error or 'okay'
*/
@@ -2245,7 +2245,7 @@ index 546aecc269..a59d80a3a9 100644
}
/**
-@@ -1291,8 +1297,8 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32
+@@ -1301,8 +1307,8 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32
CommandCost cost = CheckFlatLandRailStation(new_location, flags, axis, &est, rt, affected_vehicles, spec_class, spec_index, plat_len, numtracks);
if (cost.Failed()) return cost;
/* Add construction expenses. */
@@ -2256,7 +2256,7 @@ index 546aecc269..a59d80a3a9 100644
Station *st = nullptr;
ret = FindJoiningStation(est, station_to_join, adjacent, new_location, &st);
-@@ -1332,8 +1338,10 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32
+@@ -1342,8 +1348,10 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32
byte numtracks_orig;
Track track;
@@ -2268,7 +2268,7 @@ index 546aecc269..a59d80a3a9 100644
st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TRY);
-@@ -1573,7 +1581,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st
+@@ -1583,7 +1591,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st
}
/* If we reached here, the tile is valid so increase the quantity of tiles we will remove */
@@ -2277,7 +2277,7 @@ index 546aecc269..a59d80a3a9 100644
if (keep_rail || IsStationTileBlocked(tile)) {
/* Don't refund the 'steel' of the track when we keep the
-@@ -1652,7 +1660,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st
+@@ -1662,7 +1670,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st
CommandCost CmdRemoveFromRailStation(TileIndex start, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
TileIndex end = p1 == 0 ? start : p1;
@@ -2286,7 +2286,7 @@ index 546aecc269..a59d80a3a9 100644
TileArea ta(start, end);
std::vector<Station *> affected_stations;
-@@ -1715,11 +1723,16 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost)
+@@ -1725,11 +1733,16 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost)
/* determine width and height of platforms */
TileArea ta = st->train_station;
@@ -2305,7 +2305,7 @@ index 546aecc269..a59d80a3a9 100644
/* only remove tiles that are actually train station tiles */
if (st->TileBelongsToRailStation(tile)) {
std::vector<T*> affected_stations; // dummy
-@@ -2086,13 +2099,21 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
+@@ -2095,13 +2108,21 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
/* Bankrupting company is not supposed to remove roads, there may be road vehicles. */
if (!keep_drive_through_roads && (flags & DC_BANKRUPT)) return CMD_ERROR;
@@ -2341,10 +2341,10 @@ index 546aecc269..a59d80a3a9 100644
AirportTileTableIterator iter(as->table[layout], tile);
CommandCost cost = CheckFlatLandAirport(iter, flags);
diff --git a/src/station_gui.cpp b/src/station_gui.cpp
-index 2bee2d80fb..5a956c6c83 100644
+index ef2873f228..39b21ce7c7 100644
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
-@@ -21,6 +21,7 @@
+@@ -19,6 +19,7 @@
#include "strings_func.h"
#include "string_func.h"
#include "window_func.h"
@@ -2352,7 +2352,7 @@ index 2bee2d80fb..5a956c6c83 100644
#include "viewport_func.h"
#include "widgets/dropdown_func.h"
#include "station_base.h"
-@@ -2239,8 +2240,15 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join)
+@@ -2211,20 +2212,27 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join)
_deleted_stations_nearby.clear();
/* Check the inside, to return, if we sit on another station */
@@ -2370,8 +2370,7 @@ index 2bee2d80fb..5a956c6c83 100644
}
/* Look for deleted stations */
-@@ -2248,12 +2256,12 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join)
- FOR_ALL_BASE_STATIONS(st) {
+ for (const BaseStation *st : BaseStation::Iterate()) {
if (T::IsExpected(st) && !st->IsInUse() && st->owner == _local_company) {
/* Include only within station spread (yes, it is strictly less than) */
- if (max(DistanceMax(ta.tile, st->xy), DistanceMax(TILE_ADDXY(ta.tile, ta.w - 1, ta.h - 1), st->xy)) < _settings_game.station.station_spread) {
@@ -2386,7 +2385,7 @@ index 2bee2d80fb..5a956c6c83 100644
AddNearbyStation<T>(st->xy, &ctx);
}
}
-@@ -2266,8 +2274,11 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join)
+@@ -2237,8 +2245,11 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join)
if (distant_join && min(ta.w, ta.h) >= _settings_game.station.station_spread) return nullptr;
uint max_dist = distant_join ? _settings_game.station.station_spread - min(ta.w, ta.h) : 1;
@@ -2401,10 +2400,10 @@ index 2bee2d80fb..5a956c6c83 100644
return nullptr;
}
diff --git a/src/table/settings.ini b/src/table/settings.ini
-index 800d6f79c1..33fc0fda93 100644
+index 43bd3aec32..2ef5198574 100644
--- a/src/table/settings.ini
+++ b/src/table/settings.ini
-@@ -1876,6 +1876,15 @@ min = 500
+@@ -1912,6 +1912,15 @@ min = 500
max = 1000000
cat = SC_EXPERT
@@ -2420,7 +2419,7 @@ index 800d6f79c1..33fc0fda93 100644
[SDT_BOOL]
base = GameSettings
var = pf.yapf.rail_firstred_twoway_eol
-@@ -3204,6 +3213,15 @@ strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT
+@@ -3240,6 +3249,15 @@ strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT
strval = STR_JUST_COMMA
proc = RedrawScreen
@@ -2433,14 +2432,14 @@ index 800d6f79c1..33fc0fda93 100644
+max = UINT32_MAX
+proc = RedrawScreen
+
- ; For the dedicated build we'll enable dates in logs by default.
[SDTC_BOOL]
- ifdef = DEDICATED
+ var = gui.show_newgrf_name
+ flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
diff --git a/src/terraform_cmd.cpp b/src/terraform_cmd.cpp
-index eb6ec2b530..8dd16dce11 100644
+index 85edb73128..5b12689403 100644
--- a/src/terraform_cmd.cpp
+++ b/src/terraform_cmd.cpp
-@@ -10,6 +10,7 @@
+@@ -8,6 +8,7 @@
/** @file terraform_cmd.cpp Commands related to terraforming. */
#include "stdafx.h"
@@ -2448,7 +2447,7 @@ index eb6ec2b530..8dd16dce11 100644
#include "command_func.h"
#include "tunnel_map.h"
#include "bridge_map.h"
-@@ -253,6 +254,10 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
+@@ -251,6 +252,10 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
if (z_N > z_min) tileh |= SLOPE_N;
if (pass == 0) {
@@ -2460,10 +2459,10 @@ index eb6ec2b530..8dd16dce11 100644
if (IsBridgeAbove(tile)) {
int bridge_height = GetBridgeHeight(GetSouthernBridgeEnd(tile));
diff --git a/src/tgp.cpp b/src/tgp.cpp
-index 3fd42e0fdb..433dd7cb75 100644
+index fb5c69cf75..feeab2525b 100644
--- a/src/tgp.cpp
+++ b/src/tgp.cpp
-@@ -14,6 +14,7 @@
+@@ -12,6 +12,7 @@
#include "clear_map.h"
#include "void_map.h"
#include "genworld.h"
@@ -2471,7 +2470,7 @@ index 3fd42e0fdb..433dd7cb75 100644
#include "core/random_func.hpp"
#include "landscape_type.h"
-@@ -170,6 +171,8 @@ struct HeightMap
+@@ -168,6 +169,8 @@ struct HeightMap
int total_size; //< height map total size
int size_x; //< MapSizeX()
int size_y; //< MapSizeY()
@@ -2480,7 +2479,7 @@ index 3fd42e0fdb..433dd7cb75 100644
/**
* Height map accessor
-@@ -307,8 +310,11 @@ static inline bool AllocHeightMap()
+@@ -305,8 +308,11 @@ static inline bool AllocHeightMap()
{
height_t *h;
@@ -2494,7 +2493,7 @@ index 3fd42e0fdb..433dd7cb75 100644
/* Allocate memory block for height map row pointers */
_height_map.total_size = (_height_map.size_x + 1) * (_height_map.size_y + 1);
-@@ -995,8 +1001,8 @@ void GenerateTerrainPerlin()
+@@ -993,8 +999,8 @@ void GenerateTerrainPerlin()
/* First make sure the tiles at the north border are void tiles if needed. */
if (_settings_game.construction.freeform_edges) {
@@ -2506,10 +2505,10 @@ index 3fd42e0fdb..433dd7cb75 100644
int max_height = H2I(TGPGetMaxHeight());
diff --git a/src/tile_map.h b/src/tile_map.h
-index 0cb28122d8..c6f62dac0f 100644
+index b6c715e8a8..c191ab9042 100644
--- a/src/tile_map.h
+++ b/src/tile_map.h
-@@ -16,6 +16,7 @@
+@@ -14,6 +14,7 @@
#include "map_func.h"
#include "core/bitmath_func.hpp"
#include "settings_type.h"
@@ -2517,7 +2516,7 @@ index 0cb28122d8..c6f62dac0f 100644
/**
* Returns the height of a tile
-@@ -112,10 +113,10 @@ static inline bool IsInnerTile(TileIndex tile)
+@@ -110,10 +111,10 @@ static inline bool IsInnerTile(TileIndex tile)
{
assert(tile < MapSize());
@@ -2531,7 +2530,7 @@ index 0cb28122d8..c6f62dac0f 100644
}
/**
-@@ -136,7 +137,7 @@ static inline void SetTileType(TileIndex tile, TileType type)
+@@ -134,7 +135,7 @@ static inline void SetTileType(TileIndex tile, TileType type)
/* VOID tiles (and no others) are exactly allowed at the lower left and right
* edges of the map. If _settings_game.construction.freeform_edges is true,
* the upper edges of the map are also VOID tiles. */
@@ -2541,10 +2540,10 @@ index 0cb28122d8..c6f62dac0f 100644
}
diff --git a/src/tilearea_type.h b/src/tilearea_type.h
-index c599753498..869ff3e09a 100644
+index 2648219853..76971ae48a 100644
--- a/src/tilearea_type.h
+++ b/src/tilearea_type.h
-@@ -44,6 +44,16 @@ struct OrthogonalTileArea {
+@@ -42,6 +42,16 @@ struct OrthogonalTileArea {
this->h = 0;
}
@@ -2562,10 +2561,10 @@ index c599753498..869ff3e09a 100644
bool Contains(TileIndex tile) const;
diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp
-index 23c10fb727..b2c7ee31bd 100644
+index 303e4c7293..2f0a37a55c 100644
--- a/src/toolbar_gui.cpp
+++ b/src/toolbar_gui.cpp
-@@ -13,7 +13,10 @@
+@@ -11,7 +11,10 @@
#include "gui.h"
#include "window_gui.h"
#include "window_func.h"
@@ -2576,7 +2575,7 @@ index 23c10fb727..b2c7ee31bd 100644
#include "command_func.h"
#include "vehicle_gui.h"
#include "rail_gui.h"
-@@ -23,6 +26,7 @@
+@@ -21,6 +24,7 @@
#include "vehicle_func.h"
#include "sound_func.h"
#include "terraform_gui.h"
@@ -2584,7 +2583,7 @@ index 23c10fb727..b2c7ee31bd 100644
#include "strings_func.h"
#include "company_func.h"
#include "company_gui.h"
-@@ -1007,6 +1011,39 @@ static CallBackFunction MenuClickForest(int index)
+@@ -1008,6 +1012,39 @@ static CallBackFunction MenuClickForest(int index)
return CBF_NONE;
}
@@ -2624,7 +2623,7 @@ index 23c10fb727..b2c7ee31bd 100644
/* --- Music button menu --- */
static CallBackFunction ToolbarMusicClick(Window *w)
-@@ -1356,9 +1393,10 @@ static MenuClickedProc * const _menu_clicked_procs[] = {
+@@ -1349,9 +1386,10 @@ static MenuClickedProc * const _menu_clicked_procs[] = {
MenuClickBuildWater, // 24
MenuClickBuildAir, // 25
MenuClickForest, // 26
@@ -2638,7 +2637,7 @@ index 23c10fb727..b2c7ee31bd 100644
};
/** Full blown container to make it behave exactly as we want :) */
-@@ -1523,7 +1561,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
+@@ -1516,7 +1554,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const override
{
static const uint SMALLEST_ARRANGEMENT = 14;
@@ -2647,7 +2646,7 @@ index 23c10fb727..b2c7ee31bd 100644
/* The number of buttons of each row of the toolbar should match the number of items which we want to be visible.
* The total number of buttons should be equal to arrangable_count * 2.
-@@ -1790,6 +1828,67 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
+@@ -1783,6 +1821,67 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
WID_TN_ZOOM_OUT,
WID_TN_SWITCH_BAR,
};
@@ -2715,7 +2714,7 @@ index 23c10fb727..b2c7ee31bd 100644
static const byte arrange_all[] = {
WID_TN_PAUSE,
WID_TN_FAST_FORWARD,
-@@ -1818,6 +1917,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
+@@ -1811,6 +1910,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
WID_TN_WATER,
WID_TN_AIR,
WID_TN_LANDSCAPE,
@@ -2723,7 +2722,7 @@ index 23c10fb727..b2c7ee31bd 100644
WID_TN_MUSIC_SOUND,
WID_TN_MESSAGES,
WID_TN_HELP
-@@ -1832,7 +1932,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
+@@ -1825,7 +1925,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer {
}
/* Introduce the split toolbar */
@@ -2732,7 +2731,7 @@ index 23c10fb727..b2c7ee31bd 100644
button_count = arrangable_count = full_buttons;
spacer_count = this->spacers;
-@@ -1989,6 +2089,7 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = {
+@@ -1982,6 +2082,7 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = {
ToolbarBuildWaterClick,
ToolbarBuildAirClick,
ToolbarForestClick,
@@ -2740,7 +2739,7 @@ index 23c10fb727..b2c7ee31bd 100644
ToolbarMusicClick,
ToolbarNewspaperClick,
ToolbarHelpClick,
-@@ -2280,6 +2381,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index)
+@@ -2278,6 +2379,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index)
SPR_IMG_BUILDWATER, // WID_TN_WATER
SPR_IMG_BUILDAIR, // WID_TN_AIR
SPR_IMG_LANDSCAPING, // WID_TN_LANDSCAPE
@@ -2749,10 +2748,10 @@ index 23c10fb727..b2c7ee31bd 100644
SPR_IMG_MESSAGES, // WID_TN_MESSAGES
SPR_IMG_QUERY, // WID_TN_HELP
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp
-index 65032c1fb2..635243bf54 100644
+index 507cccd565..b1a722635f 100644
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
-@@ -14,6 +14,7 @@
+@@ -12,6 +12,7 @@
#include "road_internal.h" /* Cleaning up road bits */
#include "road_cmd.h"
#include "landscape.h"
@@ -2760,7 +2759,7 @@ index 65032c1fb2..635243bf54 100644
#include "viewport_func.h"
#include "viewport_kdtree.h"
#include "cmd_helper.h"
-@@ -2261,6 +2262,9 @@ static inline bool CanBuildHouseHere(TileIndex tile, bool noslope)
+@@ -2271,6 +2272,9 @@ static inline bool CanBuildHouseHere(TileIndex tile, bool noslope)
Slope slope = GetTileSlope(tile);
if ((noslope && slope != SLOPE_FLAT) || IsSteepSlope(slope)) return false;
@@ -2770,20 +2769,20 @@ index 65032c1fb2..635243bf54 100644
/* at least one RoadTypes allow building the house here? */
if (!RoadTypesAllowHouseHere(tile)) return false;
-@@ -2695,6 +2699,8 @@ CommandCost CmdRenameTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
-
- t->UpdateVirtCoord();
- InvalidateWindowData(WC_TOWN_DIRECTORY, 0, 1);
+@@ -2708,6 +2712,8 @@ CommandCost CmdRenameTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
+ InvalidateWindowData(WC_TOWN_DIRECTORY, 0, TDIWD_FORCE_RESORT);
+ ClearAllStationCachedNames();
+ ClearAllIndustryCachedNames();
+ InvalidateWindowClassesData(WC_TOWN_VIEW);
+ InvalidateWindowClassesData(WC_INDUSTRY_VIEW);
UpdateAllStationVirtCoords();
}
return CommandCost();
diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp
-index e982abfb28..a8283b8da8 100644
+index 012904fdce..8036ebcf2e 100644
--- a/src/tree_cmd.cpp
+++ b/src/tree_cmd.cpp
-@@ -13,6 +13,7 @@
+@@ -11,6 +11,7 @@
#include "clear_map.h"
#include "landscape.h"
#include "tree_map.h"
@@ -2791,7 +2790,7 @@ index e982abfb28..a8283b8da8 100644
#include "viewport_func.h"
#include "command_func.h"
#include "town.h"
-@@ -72,7 +73,8 @@ static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert)
+@@ -70,7 +71,8 @@ static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert)
case MP_CLEAR:
return !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && GetRawClearGround(tile) != CLEAR_ROCKS &&
@@ -2801,7 +2800,7 @@ index e982abfb28..a8283b8da8 100644
default: return false;
}
-@@ -339,6 +341,10 @@ CommandCost CmdPlantTree(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
+@@ -337,6 +339,10 @@ CommandCost CmdPlantTree(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
const byte tree_to_plant = GB(p1, 0, 8); // We cannot use Extract as min and max are climate specific.
if (p2 >= MapSize()) return CMD_ERROR;
@@ -2813,10 +2812,10 @@ index e982abfb28..a8283b8da8 100644
if (tree_to_plant != TREE_INVALID && !IsInsideBS(tree_to_plant, _tree_base_by_landscape[_settings_game.game_creation.landscape], _tree_count_by_landscape[_settings_game.game_creation.landscape])) return CMD_ERROR;
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
-index fce0855d25..b31a25e597 100644
+index c5e2f8d9bb..16e6536e76 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
-@@ -15,6 +15,7 @@
+@@ -13,6 +13,7 @@
#include "stdafx.h"
#include "newgrf_object.h"
@@ -2824,7 +2823,7 @@ index fce0855d25..b31a25e597 100644
#include "viewport_func.h"
#include "cmd_helper.h"
#include "command_func.h"
-@@ -279,6 +280,10 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
+@@ -277,6 +278,10 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
return_cmd_error(STR_ERROR_CAN_T_START_AND_END_ON);
}
@@ -2835,7 +2834,7 @@ index fce0855d25..b31a25e597 100644
Axis direction;
if (TileX(tile_start) == TileX(tile_end)) {
direction = AXIS_Y;
-@@ -672,6 +677,12 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
+@@ -670,6 +675,12 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
for (;;) {
end_tile += delta;
if (!IsValidTile(end_tile)) return_cmd_error(STR_ERROR_TUNNEL_THROUGH_MAP_BORDER);
@@ -3201,10 +3200,10 @@ index 0000000000..81b119545e
+
+#endif /* UNDERGROUND_GUI_H */
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
-index 6e26c7bfe8..1c1bf10adb 100644
+index ae5af64a1a..ce982ff214 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
-@@ -15,6 +15,7 @@
+@@ -13,6 +13,7 @@
#include "ship.h"
#include "spritecache.h"
#include "timetable.h"
@@ -3212,7 +3211,7 @@ index 6e26c7bfe8..1c1bf10adb 100644
#include "viewport_func.h"
#include "news_func.h"
#include "command_func.h"
-@@ -1143,6 +1144,7 @@ void ViewportAddVehicles(DrawPixelInfo *dpi)
+@@ -1138,6 +1139,7 @@ void ViewportAddVehicles(DrawPixelInfo *dpi)
const Vehicle *v = _vehicle_viewport_hash[x + y]; // already masked & 0xFFF
while (v != nullptr) {
@@ -3221,10 +3220,10 @@ index 6e26c7bfe8..1c1bf10adb 100644
l <= v->coord.right &&
t <= v->coord.bottom &&
diff --git a/src/viewport.cpp b/src/viewport.cpp
-index 534de090b5..a954d02bf9 100644
+index 1c9dca1ef6..75c9cb764d 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
-@@ -64,6 +64,8 @@
+@@ -62,6 +62,8 @@
#include "stdafx.h"
#include "landscape.h"
@@ -3233,7 +3232,7 @@ index 534de090b5..a954d02bf9 100644
#include "viewport_func.h"
#include "station_base.h"
#include "waypoint_base.h"
-@@ -1208,24 +1210,27 @@ static void ViewportAddLandscape()
+@@ -1244,24 +1246,27 @@ static void ViewportAddLandscape()
int min_visible_height = viewport_y - (_vd.dpi.top + _vd.dpi.height);
bool tile_visible = min_visible_height <= 0;
@@ -3278,7 +3277,7 @@ index 534de090b5..a954d02bf9 100644
}
if (tile_visible) {
-@@ -1637,6 +1642,9 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom
+@@ -1673,6 +1678,9 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom
_vd.dpi.dst_ptr = BlitterFactory::GetCurrentBlitter()->MoveTo(old_dpi->dst_ptr, x - old_dpi->left, y - old_dpi->top);
@@ -3289,10 +3288,10 @@ index 534de090b5..a954d02bf9 100644
ViewportAddVehicles(&_vd.dpi);
diff --git a/src/viewport_func.h b/src/viewport_func.h
-index 8b23cc02a9..e4469ace38 100644
+index c47185323d..81ce4c711e 100644
--- a/src/viewport_func.h
+++ b/src/viewport_func.h
-@@ -33,6 +33,7 @@ void MarkAllViewportsDirty(int left, int top, int right, int bottom);
+@@ -31,6 +31,7 @@ void MarkAllViewportsDirty(int left, int top, int right, int bottom);
bool DoZoomInOutWindow(ZoomStateChange how, Window *w);
void ZoomInOrOutToCursorWindow(bool in, Window * w);
@@ -3301,10 +3300,10 @@ index 8b23cc02a9..e4469ace38 100644
void FixTitleGameZoom();
void HandleZoomMessage(Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out);
diff --git a/src/viewport_gui.cpp b/src/viewport_gui.cpp
-index 85b278b2a7..8e03178ffc 100644
+index bce6e68c12..511c1f50ee 100644
--- a/src/viewport_gui.cpp
+++ b/src/viewport_gui.cpp
-@@ -16,6 +16,7 @@
+@@ -14,6 +14,7 @@
#include "strings_func.h"
#include "zoom_func.h"
#include "window_func.h"
@@ -3312,7 +3311,7 @@ index 85b278b2a7..8e03178ffc 100644
#include "widgets/viewport_widget.h"
-@@ -139,7 +140,11 @@ public:
+@@ -137,7 +138,11 @@ public:
void OnMouseWheel(int wheel) override
{
if (_settings_client.gui.scrollwheel_scrolling != 2) {
@@ -3326,10 +3325,10 @@ index 85b278b2a7..8e03178ffc 100644
}
diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp
-index 7091f9f2d4..84b5e4ef09 100644
+index 5e37c16dd7..29541fb72d 100644
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
-@@ -12,6 +12,7 @@
+@@ -10,6 +10,7 @@
#include "stdafx.h"
#include "cmd_helper.h"
#include "landscape.h"
@@ -3337,7 +3336,7 @@ index 7091f9f2d4..84b5e4ef09 100644
#include "viewport_func.h"
#include "command_func.h"
#include "town.h"
-@@ -464,6 +465,11 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
+@@ -466,6 +467,11 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
/* can't make water of water! */
if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || wc == WATER_CLASS_SEA)) continue;
@@ -3349,7 +3348,7 @@ index 7091f9f2d4..84b5e4ef09 100644
bool water = IsWaterTile(tile);
ret = DoCommand(tile, 0, 0, flags | DC_FORCE_CLEAR_TILE, CMD_LANDSCAPE_CLEAR);
if (ret.Failed()) return ret;
-@@ -1095,6 +1101,9 @@ void DoFloodTile(TileIndex target)
+@@ -1097,6 +1103,9 @@ void DoFloodTile(TileIndex target)
{
assert(!IsTileType(target, MP_WATER));
@@ -3359,7 +3358,7 @@ index 7091f9f2d4..84b5e4ef09 100644
bool flooded = false; // Will be set to true if something is changed.
Backup<CompanyID> cur_company(_current_company, OWNER_WATER, FILE_LINE);
-@@ -1254,7 +1263,7 @@ void ConvertGroundTilesIntoWaterTiles()
+@@ -1256,7 +1265,7 @@ void ConvertGroundTilesIntoWaterTiles()
for (TileIndex tile = 0; tile < MapSize(); ++tile) {
Slope slope = GetTileSlope(tile, &z);
@@ -3369,10 +3368,10 @@ index 7091f9f2d4..84b5e4ef09 100644
* and make shore, as that looks much better
* during the generation. */
diff --git a/src/widgets/genworld_widget.h b/src/widgets/genworld_widget.h
-index 877efbb921..9766a06400 100644
+index f7bf20e950..f7af296f60 100644
--- a/src/widgets/genworld_widget.h
+++ b/src/widgets/genworld_widget.h
-@@ -21,6 +21,7 @@ enum GenerateLandscapeWidgets {
+@@ -19,6 +19,7 @@ enum GenerateLandscapeWidgets {
WID_GL_MAPSIZE_X_PULLDOWN, ///< Dropdown 'map X size'.
WID_GL_MAPSIZE_Y_PULLDOWN, ///< Dropdown 'map Y size'.
@@ -3380,7 +3379,7 @@ index 877efbb921..9766a06400 100644
WID_GL_TOWN_PULLDOWN, ///< Dropdown 'No. of towns'.
WID_GL_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries'.
-@@ -69,6 +70,7 @@ enum CreateScenarioWidgets {
+@@ -67,6 +68,7 @@ enum CreateScenarioWidgets {
WID_CS_RANDOM_WORLD, ///< Generate random land button
WID_CS_MAPSIZE_X_PULLDOWN, ///< Pull-down arrow for x map size.
WID_CS_MAPSIZE_Y_PULLDOWN, ///< Pull-down arrow for y map size.
@@ -3389,10 +3388,10 @@ index 877efbb921..9766a06400 100644
WID_CS_START_DATE_TEXT, ///< Clickable start date value.
WID_CS_START_DATE_UP, ///< Increase start year (start later).
diff --git a/src/widgets/toolbar_widget.h b/src/widgets/toolbar_widget.h
-index 5b9d1e1568..8a865ab6d6 100644
+index d68de49700..0b4e53227f 100644
--- a/src/widgets/toolbar_widget.h
+++ b/src/widgets/toolbar_widget.h
-@@ -43,6 +43,7 @@ enum ToolbarNormalWidgets {
+@@ -41,6 +41,7 @@ enum ToolbarNormalWidgets {
WID_TN_WATER, ///< Water building toolbar.
WID_TN_AIR, ///< Airport building toolbar.
WID_TN_LANDSCAPE, ///< Landscaping toolbar.
@@ -3428,10 +3427,10 @@ index 0000000000..522c9db8bf
+
+#endif /* WIDGETS_UNDERGROUND_WIDGET_H */
diff --git a/src/window_type.h b/src/window_type.h
-index 7185bfcb4f..85f54f0760 100644
+index f99b5cb6d7..e92bffd09a 100644
--- a/src/window_type.h
+++ b/src/window_type.h
-@@ -443,6 +443,12 @@ enum WindowClass {
+@@ -441,6 +441,12 @@ enum WindowClass {
*/
WC_SCEN_LAND_GEN,