Compare commits

..
Author SHA1 Message Date
glx 8db90283f0 (svn r12182) -Release 0.6.0-beta4 2008-02-18 21:49:21 +00:00
117 changed files with 1237 additions and 1771 deletions
-40
View File
@@ -1,43 +1,3 @@
0.6.0-beta5 (2008-03-04)
------------------------------------------------------------------------
-Feature: Vehicle variable FE bit 8 (r12331) [FS#1812]
-Feature: Vehicle variable FE bit 5 and 6 (r12330)
-Feature: Support loading full range of 0xD0xx NewGRF strings which includes 0xD000 to 0xD3FF (r12316)
-Feature: Ability to change aircraft speed factor, from so called 'realistic' (matching other vehicles) (1/1) to original TTD speed (1/4) (r12293, r12294)
-Fix: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs (r12336) [FS#1733]
-Fix: Disallow building level crossings over one-way roads as this allowed competitors to remove the one-way state (r12329) [FS#1819]
-Fix: Wrong Y pillar specified for girder with arch bridge (r12328)
-Fix: Vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated (r12324)
-Fix: Vehicle sorting by name was broken, it was comparing two the same strings (when caching was not used) (r12323) [FS#1821]
-Fix: Endian issue when saving/loading group owner (r12322)
-Change: Update readme about where openttd looks for files (r12321)
-Fix: Wrong transparency options could be saved after toggling all (r12320) [FS#1817]
-Fix: Map string IDs that are embedded from other strings (r12317) [FS#1815]
-Fix: Include prop 25 data for all train parts, not just those that carry cargo (r12314)
-Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes (r12313)
-Fix: Restore timetable from backupped orders and add group ID to the backup (r12296) [FS#1549]
-Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
-Fix: [Win32] Don't create save dir on install (r12269)
-Fix: Autoreplace did not update vehicle index for timetable window (r12261) [FS#1805]
-Fix: GetProductionAroundTiles() may fail if only the second production slot exists (r12258)
-Fix: Removing the Broken FollowTrack_t (pathfinding) fixed related functions (r12252) [FS#1801]
-Fix: Town variables 0x9E to 0xAD (company ratings) returned wrong values (r12247)
-Fix: Proper usage of Clamp() (r12246)
-Fix: Typo resulting in no players are given the engine preview offer (r12244)
-Fix: Mac OSX bundle display name should be 'OpenTTD' (r12234) [FS#1798]
-Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, show running cost of wagons if available (r12209)
-Fix: When loading a savegame fails, don't start creating a new game, just go straight back to the intro screen (r12202)
-Fix: Force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere (r12200)
-Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
-Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
-Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
-Fix: Clamp various town variables to 16bit prior to returning the value (r12192)
-Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
-Fix: YAPF always shows 0ms PF time in debug for debug level 2 [FS#1786] (r12190)
-Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186)
-Fix: Wrong operator priority, hopefully harmless (r12185)
-Fix: Take into account possible loan when AI is deciding which bridge to build, so it won't build wooden bridges everytime (r12184)
0.6.0-beta4 (2008-02-18)
------------------------------------------------------------------------
-Feature: Allow buttons to resize in NewGRF settings window (r12172)
+1 -1
View File
@@ -5,7 +5,7 @@ log() {
}
set_default() {
released_version="0.6.0-beta5"
released_version="0.6.0-beta4"
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
+2 -1
View File
@@ -11,13 +11,14 @@ by the number below on http://bugs.openttd.org.
If the bug report is closed, it has been fixed, which then can be verified
in the latest SVN version of /trunk.
Bugs for 0.6.0-beta5
Bugs for 0.6.0-beta3
------------------------------------------------------------------------
URL: http://bugs.openttd.org
- 1762 Strange Autoreplace behaviour
- 1711 Gravel and Clay have no worth
- 1693 Removing road does not reset owner
- 1549 Timetable + group ID are not backed up with orders
- 1495 Long vehicles block multistop station
- 1487 Ending_year is never written to
- 1473 Train not going to available platform
+1 -7
View File
@@ -1,10 +1,4 @@
openttd (0.6.0~beta5) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 04 Mar 2008 18:06:31 +0100
openttd (0.6.0~beta4-1) unstable; urgency=low
openttd (0.6.0~beta4) unstable; urgency=low
* New upstream release.
+1 -1
View File
@@ -19,7 +19,7 @@ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>OpenTTD</string>
<string>Open Transport Tycoon</string>
<key>CFBundleExecutable</key>
<string>openttd</string>
<key>CFBundleGetInfoString</key>
+4 -2
View File
@@ -1,9 +1,9 @@
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "0.6.0" ; Define application version
!define INSTALLERVERSION 43 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define INSTALLERVERSION 42 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPURLLINK "http://www.openttd.org"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta5"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta4"
!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
!define MUI_ICON "..\..\..\media\openttd.ico"
@@ -97,6 +97,8 @@ Section "!OpenTTD" Section1
; Overwrite files by default, but don't complain on failure
SetOverwrite try
; Make savegame folder
SetOutPath "$INSTDIR\save"
; Define root variable relative to installer
!define PATH_ROOT "..\..\..\"
Executable → Regular
+1 -1
View File
@@ -194,7 +194,7 @@ Function IsCachedVersion(version)
End Function
Dim version
version = "0.6.0-beta5"
version = "0.6.0-beta4"
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
UpdateFiles version
End If
Executable → Regular
+1 -2
View File
@@ -71,8 +71,7 @@ Function load_main_data(filename)
line = "PNG" Or _
line = "WIN32" Or _
line = "MSVC" Or _
line = "DIRECTMUSIC" Or _
line = "NO_THREADS" _
line = "DIRECTMUSIC" _
) Then skip = skip + 1
deep = deep + 1
Case "#"
+8
View File
@@ -2175,6 +2175,10 @@
<Filter
Name="YAPF"
>
<File
RelativePath=".\..\src\yapf\follow_track.cpp"
>
</File>
<File
RelativePath=".\..\src\yapf\follow_track.hpp"
>
@@ -2199,6 +2203,10 @@
RelativePath=".\..\src\yapf\yapf_base.hpp"
>
</File>
<File
RelativePath=".\..\src\yapf\yapf_common.cpp"
>
</File>
<File
RelativePath=".\..\src\yapf\yapf_common.hpp"
>
+8
View File
@@ -2172,6 +2172,10 @@
<Filter
Name="YAPF"
>
<File
RelativePath=".\..\src\yapf\follow_track.cpp"
>
</File>
<File
RelativePath=".\..\src\yapf\follow_track.hpp"
>
@@ -2196,6 +2200,10 @@
RelativePath=".\..\src\yapf\yapf_base.hpp"
>
</File>
<File
RelativePath=".\..\src\yapf\yapf_common.cpp"
>
</File>
<File
RelativePath=".\..\src\yapf\yapf_common.hpp"
>
+17 -96
View File
@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2008-03-04
Release version: 0.6.0-beta5
Last updated: 2008-02-18
Release version: 0.6.0-beta4
------------------------------------------------------------------------
@@ -11,9 +11,6 @@ Table of Contents:
* 2.1 Reporting Bugs
3.0) Supported Platforms
4.0) Installing and running OpenTTD
* 4.1 (Required) 3rd party files
* 4.2 OpenTTD directories
* 4.3 Portable Installations (External Media)
5.0) OpenTTD features
6.0) Configuration File
7.0) Compiling
@@ -91,100 +88,25 @@ archive which you have to extract to a directory where you want OpenTTD to
be installed, or you have downloaded an installer, which will automatically
extract OpenTTD in the given directory.
OpenTTD looks in multiple locations to find the required data files (described
in section 4.2). Installing any 3rd party files into a "shared" location has
the advantage that you only need to do this step once, rather than copying the
data files into all OpenTTD versions you have.
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
currently being used. This means that if you use a config file in one of the
shared directories, savegames will reside in the save/ directory next to the
openttd.cfg file there.
If you want savegames and screenshots in the directory where the OpenTTD binary
resides, simply have your config file in that location. But if you remove this
config file, savegames will still be in this directory (see notes in section 4.2)
4.1) (Required) 3rd party files:
---- ---------------------------
Before you run OpenTTD, you need to put the game's datafiles into a data/
directory which can be located in various places addressed in the following
section.
As OpenTTD makes use of the original TTD artwork you will need the files listed
below, which you can find on a Transport Tycoon Deluxe CD-ROM.
The Windows installer optionally can copy these files from that CD-ROM.
Before you run OpenTTD, you need to put the game's datafiles into the data/
subdirectory. You need the following files from the original version
of TTD as OpenTTD makes use of the original TTD artwork. The Windows
installer optionally can copy these files from your Transport Tycoon Deluxe
CD-ROM.
List of the required files:
- sample.cat
- trg1r.grf
- trgcr.grf
- trghr.grf
- trgir.grf
- trgtr.grf
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf
Alternatively you can use the TTD GRF files from the DOS version:
- TRG1.GRF
- TRGC.GRF
- TRGH.GRF
- TRGI.GRF
- TRGT.GRF
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF,
TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF.
If you want the TTD music, copy the gm/ folder from the Windows version
of TTD to your OpenTTD folder (not your data folder - also explained in
the following sections).
Do NOT copy files included with OpenTTD into "shared" directories (explained in
the following sections) as sooner or later you will run into graphical glitches
when using other versions of the game.
4.2) OpenTTD directories
---- -------------------------------
The TTD artwork files listed in the section 4.1 "(Required) 3rd party files"
can be placed in a few different locations:
1. The current working directory (from where you started OpenTTD)
2. Your personal directory
Windows: C:\Documents and Settings\<username>\My Documents\OpenTTD
Mac OSX: ~/Documents/OpenTTD
Linux: ~/.openttd
3. The shared directory
Windows: C:\Documents and Settings\All Users\Documents\OpenTTD
Mac OSX: /Library/Application Support/OpenTTD
Linux: not available
4. The binary directory (where the OpenTTD executable is)
Windows: C:\Program Files\OpenTTD
Linux: /usr/games
5. The installation directory (Linux only)
Linux: /usr/share/games/openttd
6. The application bundle (Mac OSX only)
It includes the OTTD files (grf+lng) and it will work as long as they aren't touched
Notes:
- Linux in the previous list means .deb, but most paths should be similar for others.
- The previous search order is also used for newgrfs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, 5 order.
- Savegames will be relative to the config file only if there is no save/
directory in paths with higher priority than the config file path, but
autosaves and screenshots will always be relative to the config file.
The prefered setup:
Place 3rd party files in shared directory (or in personal directory if you don't
have write access on shared directory) and have your openttd.cfg config file in
personal directory (where the game will then also place savegames and screenshots).
4.3) Portable Installations (External Media):
---- ----------------------------------------
You can install OpenTTD on external media so you can take it with you, i.e.
using a USB key, or a USB HDD, etc.
Create a directory where you shall store the game in (i.e. OpenTTD/).
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), data/ and your
openttd.cfg to this directory.
You can copy binaries for any operating system into this directory, which will
allow you to play the game on nearly any computer you can attach the external
media to.
As always - additional grf files are stored in the data/ dir (for details,
again, see section 4.1).
If you want music you need to copy the gm/ folder from Windows TTD into your
OpenTTD folder, not your data folder.
5.0) OpenTTD features:
@@ -363,7 +285,6 @@ The OpenTTD team (in alphabetical order):
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework
Loïc Guilloux (glx) - General coding
Christoph Elsenhans (frosch) - General coding
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
Jonathan Coome (Maedhros) - High priest of the newGRF Temple
Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host
+2
View File
@@ -466,12 +466,14 @@ network/core/udp.cpp
network/core/udp.h
# YAPF
yapf/follow_track.cpp
yapf/follow_track.hpp
yapf/nodelist.hpp
yapf/track_dir.hpp
yapf/yapf.h
yapf/yapf.hpp
yapf/yapf_base.hpp
yapf/yapf_common.cpp
yapf/yapf_common.hpp
yapf/yapf_costbase.hpp
yapf/yapf_costcache.hpp
+40 -78
View File
@@ -69,9 +69,10 @@ enum {
};
static inline TrackBits GetRailTrackStatus(TileIndex tile)
static TrackBits GetRailTrackStatus(TileIndex tile)
{
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
uint32 r = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
return (TrackBits)(byte) (r | r >> 8);
}
@@ -111,8 +112,8 @@ static void AiStateVehLoop(Player *p)
/* not profitable? */
if (v->age >= 730 &&
v->profit_last_year < _price.station_value * 5 * 256 &&
v->profit_this_year < _price.station_value * 5 * 256) {
v->profit_last_year >> 8 < _price.station_value * 5 &&
v->profit_this_year >> 8 < _price.station_value * 5) {
_players_ai[p->index].state_counter = 0;
_players_ai[p->index].state = AIS_SELL_VEHICLE;
_players_ai[p->index].cur_veh = v;
@@ -1901,7 +1902,7 @@ struct AiRailPathFindData {
bool flag;
};
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length)
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length, byte *state)
{
if (a->flag) return true;
@@ -2197,55 +2198,26 @@ static void AiBuildRailConstruct(Player *p)
_players_ai[p->index].cur_tile_a += TileOffsByDiagDir(_players_ai[p->index].cur_dir_a);
if (arf.best_ptr[0] & 0x80) {
TileIndex t1 = _players_ai[p->index].cur_tile_a;
TileIndex t2 = arf.bridge_end_tile;
int i;
int32 bridge_len = GetTunnelBridgeLength(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a);
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
DiagDirection dir = (TileX(t1) == TileX(t2) ? DIAGDIR_SE : DIAGDIR_SW);
Track track = AxisToTrack(DiagDirToAxis(dir));
if (t2 < t1) dir = ReverseDiagDir(dir);
/* try to build a long rail instead of bridge... */
bool fail = false;
CommandCost cost;
TileIndex t = t1;
/* try to build one rail on each tile - can't use CMD_BUILD_RAILROAD_TRACK now, it can build one part of track without failing */
do {
cost = DoCommand(t, _players_ai[p->index].railtype_to_use, track, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
/* do not allow building over existing track */
if (CmdFailed(cost) || IsTileType(t, MP_RAILWAY)) {
fail = true;
break;
/* Figure out which (rail)bridge type to build
* start with best bridge, then go down to worse and worse bridges
* unnecessary to check for worst bridge (i=0), since AI will always build
* that. AI is so fucked up that fixing this small thing will probably not
* solve a thing
*/
for (i = MAX_BRIDGES - 1; i != 0; i--) {
if (CheckBridge_Stuff(i, bridge_len)) {
CommandCost cost = DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
}
t += TileOffsByDiagDir(dir);
} while (t != t2);
/* can we build long track? */
if (!fail) cost = DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_TRACK);
if (!fail && CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_BUILD_RAILROAD_TRACK);
} else {
/* Figure out which (rail)bridge type to build
* start with best bridge, then go down to worse and worse bridges
* unnecessary to check for worst bridge (i=0), since AI will always build that. */
int i;
for (i = MAX_BRIDGES - 1; i != 0; i--) {
if (CheckBridge_Stuff(i, bridge_len)) {
CommandCost cost = DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
}
}
/* Build it */
DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
}
_players_ai[p->index].cur_tile_a = t2;
// Build it
DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
_players_ai[p->index].state_counter = 0;
} else if (arf.best_ptr[0] & 0x40) {
// tunnel
@@ -2877,7 +2849,7 @@ static bool AiCheckRoadPathBetter(AiRoadFinder *arf, const byte *p)
}
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length)
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length, byte *state)
{
uint dist = DistanceManhattan(tile, a->dest);
@@ -2912,7 +2884,7 @@ static bool AiCheckRoadFinished(Player *p)
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(dir));
if (IsRoadStopTile(tile) || IsTileDepotType(tile, TRANSPORT_ROAD)) return false;
bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD)) & _ai_road_table_and[dir];
bits = GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD) & _ai_road_table_and[dir];
if (bits == 0) return false;
are.best_dist = (uint)-1;
@@ -3115,36 +3087,26 @@ do_some_terraform:
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
if (arf.best_ptr[0] & 0x80) {
TileIndex t1 = tile;
TileIndex t2 = arf.bridge_end_tile;
int i;
int32 bridge_len;
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
bridge_len = GetTunnelBridgeLength(tile, _players_ai[p->index].cur_tile_a); // tile
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
Axis axis = (TileX(t1) == TileX(t2) ? AXIS_Y : AXIS_X);
/* try to build a long road instead of bridge - CMD_BUILD_LONG_ROAD has to fail if it couldn't build at least one piece! */
CommandCost cost = DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
if (CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_EXEC | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
} else {
int i;
/* Figure out what (road)bridge type to build
* start with best bridge, then go down to worse and worse bridges
* unnecessary to check for worse bridge (i=0), since AI will always build that */
for (i = MAX_BRIDGES - 1; i != 0; i--) {
if (CheckBridge_Stuff(i, bridge_len)) {
CommandCost cost = DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
}
/* Figure out what (road)bridge type to build
* start with best bridge, then go down to worse and worse bridges
* unnecessary to check for worse bridge (i=0), since AI will always build that.
*AI is so fucked up that fixing this small thing will probably not solve a thing
*/
for (i = 10; i != 0; i--) {
if (CheckBridge_Stuff(i, bridge_len)) {
CommandCost cost = DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
}
/* Build it */
DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
}
_players_ai[p->index].cur_tile_a = t2;
// Build it
DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
_players_ai[p->index].state_counter = 0;
} else if (arf.best_ptr[0] & 0x40) {
// tunnel
+1 -1
View File
@@ -1251,7 +1251,7 @@ static void AiNew_CheckVehicle(Player *p, Vehicle *v)
if (v->age > 360) {
// If both years together are not more than AI_MINIMUM_ROUTE_PROFIT,
// it is not worth the line I guess...
if (v->profit_last_year + v->profit_this_year < (Money)256 * AI_MINIMUM_ROUTE_PROFIT ||
if ((v->profit_last_year + v->profit_this_year) >> 8 < AI_MINIMUM_ROUTE_PROFIT ||
(v->reliability * 100 >> 16) < 40) {
// There is a possibility that the route is fucked up...
if (v->cargo.DaysInTransit() > AI_VEHICLE_LOST_DAYS) {
+2 -11
View File
@@ -924,10 +924,6 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
uint spd = v->acceleration * 16;
byte t;
/* Adjust speed limits by plane speed factor to prevent taxiing
* and take-off speeds being too low. */
speed_limit *= _patches.plane_speed;
if (v->u.air.cached_max_speed < speed_limit) {
if (v->cur_speed < speed_limit) hard_limit = false;
speed_limit = v->u.air.cached_max_speed;
@@ -943,9 +939,7 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
* method at slower speeds. This also results in less reduction at slow
* speeds to that aircraft do not get to taxi speed straight after
* touchdown. */
if (!hard_limit && v->cur_speed > speed_limit) {
speed_limit = v->cur_speed - max(1, ((v->cur_speed * v->cur_speed) / 16384) / _patches.plane_speed);
}
if (!hard_limit && v->cur_speed > speed_limit) speed_limit = v->cur_speed - max(1, (v->cur_speed * v->cur_speed) / 16384);
spd = min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
@@ -959,9 +953,6 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
}
/* Adjust distance moved by plane speed setting */
if (_patches.plane_speed > 1) spd /= _patches.plane_speed;
if (!(v->direction & 1)) spd = spd * 3 / 4;
spd += v->progress;
@@ -1583,7 +1574,7 @@ static inline bool CheckSendAircraftToHangarForReplacement(const Vehicle *v)
/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
new_engine = v->engine_type;
if (!v->NeedsAutorenewing(p)) {
if(!p->engine_renew || (v->age - v->max_age) < p->engine_renew_months * 30) {
/* No need to replace the aircraft */
return false;
}
+2 -2
View File
@@ -25,7 +25,6 @@
#include "table/strings.h"
/*
* move the cargo from one engine to another if possible
*/
@@ -343,7 +342,8 @@ CommandCost MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs)
}
// check if the vehicle should be replaced
if (!w->NeedsAutorenewing(p) || // replace if engine is too old
if (!p->engine_renew ||
w->age - w->max_age < (p->engine_renew_months * 30) || // replace if engine is too old
w->max_age == 0) { // rail cars got a max age of 0
/* If the vehicle belongs to a group, check if the group is protected from the global autoreplace.
If not, chek if an global auto remplacement is defined */
+11 -24
View File
@@ -230,8 +230,8 @@ static int CDECL TrainEngineRunningCostSorter(const void *a, const void *b)
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a);
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b);
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class) * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class) * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
Money va = rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class] * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
Money vb = rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class] * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
int r = ClampToI32(va - vb);
return _internal_sort_order ? -r : r;
@@ -248,8 +248,8 @@ static int CDECL TrainEnginePowerVsRunningCostSorter(const void *a, const void *
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b.
* Another thing is that both power and running costs should be doubled for multiheaded engines.
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */
Money va = (rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class)) / max(1U, (uint)rvi_a->power);
Money vb = (rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class)) / max(1U, (uint)rvi_b->power);
Money va = (rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class]) / max(1U, (uint)rvi_a->power);
Money vb = (rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class]) / max(1U, (uint)rvi_b->power);
int r = ClampToI32(vb - va);
return _internal_sort_order ? -r : r;
@@ -312,12 +312,9 @@ static int CDECL RoadVehEngineSpeedSorter(const void *a, const void *b)
static int CDECL RoadVehEngineRunningCostSorter(const void *a, const void *b)
{
const RoadVehicleInfo *rvi_a = RoadVehInfo(*(const EngineID*)a);
const RoadVehicleInfo *rvi_b = RoadVehInfo(*(const EngineID*)b);
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class);
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class);
int r = ClampToI32(va - vb);
const int va = RoadVehInfo(*(const EngineID*)a)->running_cost;
const int vb = RoadVehInfo(*(const EngineID*)b)->running_cost;
const int r = va - vb;
if (r == 0) {
/* Use EngineID to sort instead since we want consistent sorting */
@@ -577,14 +574,6 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
y += 10;
}
}
/* Running cost */
if (rvi->running_cost_class != 0xFF) {
SetDParam(0, GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8);
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
}
return y;
}
@@ -614,11 +603,9 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
}
/* Running cost */
if (rvi->running_cost_class != 0xFF) {
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8) << multihead);
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
}
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost_base) * _price.running_rail[rvi->running_cost_class] >> 8) << multihead);
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
/* Powered wagons power - Powered wagons extra weight */
if (rvi->pow_wag_power != 0) {
@@ -643,7 +630,7 @@ static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const R
y += 10;
/* Running cost */
SetDParam(0, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
SetDParam(0, rvi->running_cost * _price.roadveh_running >> 8);
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
+1 -1
View File
@@ -315,7 +315,7 @@ static void ClickTile_Clear(TileIndex tile)
/* not used */
}
static TrackStatus GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
return 0;
}
+2 -2
View File
@@ -399,7 +399,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
CommandProc *proc;
/* Do not even think about executing out-of-bounds tile-commands */
if (!IsValidTile(tile)) {
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
_cmd_text = NULL;
return CMD_ERROR;
}
@@ -499,7 +499,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
int y = TileY(tile) * TILE_SIZE;
/* Do not even think about executing out-of-bounds tile-commands */
if (!IsValidTile(tile)) {
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
_cmd_text = NULL;
return false;
}
-12
View File
@@ -168,18 +168,6 @@ static inline int32 ClampToI32(const int64 a)
return (int32)a;
}
/**
* Reduce an usigned 64-bit int to an unsigned 16-bit one
*
* @param a The 64-bit value to clamp
* @return The 64-bit value reduced to a 16-bit value
* @see ClampU(uint, uint, uint)
*/
static inline uint16 ClampToU16(const uint64 a)
{
return min(a, 0xFFFF);
}
/**
* Returns the (absolute) difference between two (scalar) variables
*
+3 -2
View File
@@ -716,8 +716,9 @@ static void DisasterTick_Submarine(Vehicle *v)
tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
if (IsValidTile(tile)) {
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
if (trackbits == TRACK_BIT_ALL && !Chance16(1, 90)) {
TrackdirBits r = (TrackdirBits)GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
if (TrackdirBitsToTrackBits(r) == TRACK_BIT_ALL && !Chance16(1, 90)) {
GetNewVehiclePosResult gp = GetNewVehiclePos(v);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
return;
+1 -1
View File
@@ -64,7 +64,7 @@ static void ChangeTileOwner_Dummy(TileIndex tile, PlayerID old_player, PlayerID
/* not used */
}
static TrackStatus GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
return 0;
}
+5 -16
View File
@@ -163,16 +163,14 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
num++;
if (v->age > 730) {
/* Find the vehicle with the lowest amount of profit */
if (min_profit_first || min_profit > v->profit_last_year) {
min_profit = v->profit_last_year;
if (min_profit_first || min_profit > v->profit_last_year >> 8) {
min_profit = v->profit_last_year >> 8;
min_profit_first = false;
}
}
}
}
min_profit >>= 8; // remove the fract part
_score_part[owner][SCORE_VEHICLES] = num;
/* Don't allow negative min_profit to show */
if (min_profit > 0)
@@ -846,9 +844,9 @@ static const Money _price_base[NUM_PRICES] = {
55, ///< remove_dock
1600, ///< remove_house
40, ///< remove_road
5600, ///< running_rail[0] steam
5200, ///< running_rail[1] diesel
4800, ///< running_rail[2] electric
5600, ///< running_rail[0] railroad
5200, ///< running_rail[1] monorail
4800, ///< running_rail[2] maglev
9600, ///< aircraft_running
1600, ///< roadveh_running
5600, ///< ship_running
@@ -914,15 +912,6 @@ void StartupEconomy()
_economy.fluct = GB(Random(), 0, 8) + 168;
}
Money GetPriceByIndex(uint8 index)
{
if (index > NUM_PRICES) return 0;
return ((Money*)&_price)[index];
}
Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode)
{
TileIndex tile;
-2
View File
@@ -41,6 +41,4 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount)
void VehiclePayment(Vehicle *front_v);
void LoadUnloadStation(Station *st);
Money GetPriceByIndex(uint8 index);
#endif /* ECONOMY_FUNC_H */
+1 -1
View File
@@ -218,7 +218,7 @@ static PlayerID GetBestPlayer(uint8 pp)
if (best_player == PLAYER_SPECTATOR) return PLAYER_SPECTATOR;
SetBit(mask, best_player);
} while (--pp != 0);
} while (--p != 0);
return best_player;
}
+1 -2
View File
@@ -36,7 +36,7 @@ struct RailVehicleInfo {
uint16 max_speed;
uint16 power;
uint16 weight;
byte running_cost;
byte running_cost_base;
byte running_cost_class;
EngineClass engclass; ///< Class of engine for this vehicle
byte capacity;
@@ -90,7 +90,6 @@ struct RoadVehicleInfo {
byte image_index;
byte base_cost;
byte running_cost;
byte running_cost_class;
SoundFxByte sfx;
byte max_speed;
byte capacity;
+2 -2
View File
@@ -126,7 +126,7 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
SetDParam(3, rvi->power << multihead);
SetDParam(1, rvi->weight << multihead);
SetDParam(4, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
SetDParam(4, rvi->running_cost_base * _price.running_rail[rvi->running_cost_class] >> 8 << multihead);
if (rvi->capacity != 0) {
SetDParam(5, rvi->cargo_type);
@@ -155,7 +155,7 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
SetDParam(0, (_price.roadveh_base >> 3) * rvi->base_cost >> 5);
SetDParam(1, rvi->max_speed * 10 / 32);
SetDParam(2, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
SetDParam(2, rvi->running_cost * _price.roadveh_running >> 8);
SetDParam(3, rvi->cargo_type);
SetDParam(4, rvi->capacity);
+1 -1
View File
@@ -37,7 +37,7 @@ bool _screen_disable_anim = false; ///< Disable palette animation (important f
bool _exit_game;
bool _networking; ///< are we in networking mode?
byte _game_mode;
int8 _pause_game;
byte _pause_game;
int _pal_first_dirty;
int _pal_count_dirty;
+1 -1
View File
@@ -23,7 +23,7 @@ struct Group : PoolItem<Group, GroupID, &_Group_pool> {
char *name; ///< Group Name
uint16 num_vehicle; ///< Number of vehicles wich belong to the group
PlayerByte owner; ///< Group Owner
PlayerID owner; ///< Group Owner
VehicleTypeByte vehicle_type; ///< Vehicle type of the group
bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group
-3
View File
@@ -134,9 +134,6 @@ CommandCost CmdDeleteGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (v->group_id == g->index && v->type == g->vehicle_type) v->group_id = DEFAULT_GROUP;
}
/* Update backupped orders if needed */
if (_backup_orders_data.group == g->index) _backup_orders_data.group = DEFAULT_GROUP;
/* If we set an autoreplace for the group we delete, remove it. */
if (_current_player < MAX_PLAYERS) {
Player *p;
+2 -2
View File
@@ -483,8 +483,8 @@ static void GroupWndProc(Window *w, WindowEvent *e)
if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG2) DrawSmallOrderList(v, x + 138, y2);
SetDParam(0, v->GetDisplayProfitThisYear());
SetDParam(1, v->GetDisplayProfitLastYear());
SetDParam(0, v->profit_this_year >> 8);
SetDParam(1, v->profit_last_year >> 8);
DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
if (IsValidGroupID(v->group_id)) {
+2 -1
View File
@@ -815,7 +815,7 @@ static void ClickTile_Industry(TileIndex tile)
ShowIndustryViewWindow(GetIndustryIndex(tile));
}
static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
return 0;
}
@@ -2019,6 +2019,7 @@ enum {
*/
static void ChangeIndustryProduction(Industry *i, bool monthly)
{
extern StringID MapGRFStringID(uint32 grfid, StringID str);
StringID str = STR_NULL;
bool closeit = false;
const IndustrySpec *indspec = GetIndustrySpec(i->type);
+8 -3
View File
@@ -437,16 +437,16 @@ void DoClearSquare(TileIndex tile)
MarkTileDirtyByTile(tile);
}
/** Returns information about trackdirs and signal states.
/** Returns trackdirbits in lower two bytes and additional info about track status in upper two bytes
* If there is any trackbit at 'side', return all trackdirbits.
* For TRANSPORT_ROAD, return no trackbits if there is no roadbit (of given subtype) at given side.
* For TRANSPORT_ROAD, return 0 if there is no roadbit (of given subtype) at given side.
* @param tile tile to get info about
* @param mode transport type
* @param sub_mode for TRANSPORT_ROAD, roadtypes to check
* @param side side we are entering from, INVALID_DIAGDIR to return all trackbits
* @return trackdirbits and other info depending on 'mode'
*/
TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode, side);
}
@@ -919,3 +919,8 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
TileY(a) + (GB(r, 8, 8) * rn * 2 >> 8) - rn
));
}
bool IsValidTile(TileIndex tile)
{
return (tile < MapSizeX() * MapMaxY() && TileX(tile) != MapMaxX());
}
+2
View File
@@ -26,6 +26,8 @@ byte GetSnowLine(void);
byte HighestSnowLine(void);
void ClearSnowLine(void);
bool IsValidTile(TileIndex tile);
uint GetPartialZ(int x, int y, Slope corners);
uint GetSlopeZ(int x, int y);
void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
+51 -65
View File
@@ -214,7 +214,7 @@ STR_00F3_400M :{BLACK}{TINYFON
STR_00F4_500M :{BLACK}{TINYFONT}500m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Automóveis
STR_00F7_SHIPS :{BLACK}{TINYFONT}Embarcação
STR_00F7_SHIPS :{BLACK}{TINYFONT}Navios
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaves
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rotas de Transporte
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carvão
@@ -372,7 +372,7 @@ STR_SORT_BY_DROPDOWN_NAME :Nome
STR_SORT_BY_DATE :{BLACK}Data
STR_SORT_BY_NUMBER :Número
STR_SORT_BY_PROFIT_LAST_YEAR :Lucros do último ano
STR_SORT_BY_PROFIT_THIS_YEAR :Lucro anual
STR_SORT_BY_PROFIT_THIS_YEAR :Lucros deste ano
STR_SORT_BY_AGE :Idade
STR_SORT_BY_RELIABILITY :Confiabilidade
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacidade total por tipo de carga
@@ -467,7 +467,7 @@ STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Exibir r
STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Exibir vegetação no mapa
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Exibir propriedades no mapa
STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Alternar exibir/ocultar nomes das cidades no mapa
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro anual: {CURRENCY} (último ano: {CURRENCY})
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {CURRENCY} (ano passado: {CURRENCY})
############ range for service numbers starts
STR_AGE :{COMMA} ano{P "" s} ({COMMA})
@@ -894,7 +894,7 @@ STR_TOWNNAME_HUNGARIAN :Húngaro
STR_TOWNNAME_AUSTRIAN :Austríaco
STR_TOWNNAME_ROMANIAN :Romeno
STR_TOWNNAME_CZECH :Checo
STR_TOWNNAME_SWISS :Suiço
STR_TOWNNAME_SWISS :Suiça
STR_TOWNNAME_DANISH :Dinamarquês
STR_TOWNNAME_TURKISH :Turco
STR_TOWNNAME_ITALIAN :Italiano
@@ -911,7 +911,7 @@ STR_CURR_CHF :Franco Suíço
STR_CURR_CZK :Coroa Checa (CZK)
STR_CURR_DEM :Marco Alemão (DEM)
STR_CURR_DKK :Coroa Dinamarquesa (DKK)
STR_CURR_ESP :Peso (ESP)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Marco Finlandês (FIM)
STR_CURR_FRF :Franco (FRF)
STR_CURR_GRD :Dracma Grego (GRD)
@@ -926,7 +926,7 @@ STR_CURR_RUR :Rublo Russo (RU
STR_CURR_SIT :Tolar Eslovênio (SIT)
STR_CURR_SEK :Coroa Sueca (SEK)
STR_CURR_YTL :Lira Turca (YTL)
STR_CURR_SKK :Coroa Eslovaca (SKK)
STR_CURR_SKK :Koruna Eslovaca (SKK)
STR_CURR_BRR :Real Brasileiro (BRL)
STR_CURR_CUSTOM :Personalizado...
@@ -963,8 +963,8 @@ STR_MONTH_OCT :Outubro
STR_MONTH_NOV :Novembro
STR_MONTH_DEC :Dezembro
STR_HEADING_FOR_STATION :{LTBLUE}Indo para {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Indo para {STATION}, {VELOCITY}
STR_HEADING_FOR_STATION :{LTBLUE}Dirigindo-se para {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Dirigindo-se para {STATION}, {VELOCITY}
STR_NO_ORDERS :{LTBLUE}Sem ordens
STR_NO_ORDERS_VEL :{LTBLUE}Sem ordens, {VELOCITY}
@@ -1049,7 +1049,7 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Fila de
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Deslocar janela quando o cursor está na borda do mapa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permitir o suborno da autoridade local: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Permtir compra de direitos exclusivos de transporte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras empresas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras companhias: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Estações não uniformes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Multiplicador de peso para trens simulando trens pesados: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Permitir estações drive-through em ruas locais: {ORANGE}{STRING}
@@ -1115,12 +1115,12 @@ STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pausar automaticamente ao inicar um novo jogo: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Usar a lista avançada de veículos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Desligado
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria empresa
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as empresas
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria Compania
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as companias
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :Desligado
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria empresa
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as empresas
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria Compania
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as Companias
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Ativar plano de horário para veículos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Exibir plano de horário em tiques ao invés de dias: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Tipo padrão de ferrovia (ao criar ou carregar um jogo): {ORANGE}{STRING}
@@ -1162,7 +1162,7 @@ STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Noticia
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Data de início: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Terminar jogo em: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ativar economia regular (alterações menores)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras empresas
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras companhias
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticamente constroi semáforos anteriores: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Ativar interface de sinais: {ORANGE}{STRING}
@@ -1206,19 +1206,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Alterar valor
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns ou todos os intervalo(s) de serviço predefinidos abaixo são incompatíveis com o valor escolhido! São válidos 5-90% e 30-800 dias
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder para trens: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Não recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder para automóveis: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Não recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder para embarcações: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Não recomendado)
STR_TEMPERATE_LANDSCAPE :terreno temperado
STR_SUB_ARCTIC_LANDSCAPE :terreno subártico
STR_SUB_TROPICAL_LANDSCAPE :terreno subtropical
@@ -1237,8 +1224,8 @@ STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Mudar d
STR_CHEAT_CHANGE_DATE :{LTBLUE}Alterar data: {ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}Ativar modificação de valores de produção: {ORANGE}{STRING}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Indo para {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Indo para {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Dirigindo-se para {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirigindo-se para {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Ir via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT}
@@ -1408,10 +1395,10 @@ STR_NETWORK_INTERNET_ADVERTISE :Internet (divul
STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Máximo de clientes:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} empresa{P "" s}
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P ia ias}
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita o servidor para uma certa quantia de empresas
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectador{P "" es}
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectator{P "" es}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max espectadores:
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limita o servidor para um certa quantia de espectadores
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
@@ -1760,7 +1747,7 @@ STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá 50% extra durante um ano!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá em dobro durante um ano!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o triplo durante um ano!
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{}Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}a autoridade local de {TOWN} não permite que outro aeroporto seja construído nesta cidade
STR_2036_COTTAGES :Casas de campo
STR_2037_HOUSES :Casas
@@ -1799,7 +1786,7 @@ STR_2056 :{TINYFONT}{WHIT
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_2058_UNDER_CONSTRUCTION :{STRING} (em construção)
STR_2059_IGLOO :Iglú
STR_205A_TEPEES :Ocas
STR_205A_TEPEES :Tepees
STR_205B_TEAPOT_HOUSE :Casa-bule
STR_205C_PIGGY_BANK :Mealheiro
@@ -2011,8 +1998,8 @@ STR_4828_PRODUCES :{BLACK}Produz:
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produção no mês passado:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centralizar visualização na localização da indústria
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nov{G o a} {STRING} em construção em {TOWN}!
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nov{G o a} {STRING} sendo plantada em {TOWN}!
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nova {STRING} em construção em {TOWN}!
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nova {STRING} sendo plantada em {TOWN}!
STR_482F_COST :{BLACK}Custo: {YELLOW}{CURRENCY}
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Impossível construir este tipo de indústria aqui...
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...a floresta só pode ser plantada acima do nível de neve
@@ -2256,7 +2243,7 @@ STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Alterar
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Alterar nome do presidente
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Alterar nome da empresa
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Clique no novo esquema de cor
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Pedir empréstimo
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Aumentar empréstimo
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Pagar parte do empréstimo
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Presidente)
STR_7038_INAUGURATED :{GOLD}Inaugurado: {WHITE}{NUM}
@@ -2581,12 +2568,12 @@ STR_80CD_CS_INC_OIL_TANKER :Petroleiro CS-I
STR_80CE_MPS_PASSENGER_FERRY :Barco de Passageiros MPS
STR_80CF_FFP_PASSENGER_FERRY :Barco de Passageiros FFP
STR_80D0_BAKEWELL_300_HOVERCRAFT :Hovercraft Bakewell 300
STR_80D1_CHUGGER_CHUG_PASSENGER :Navio de Passageiros Chugger-Chug
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Navio de Passageiros Shivershake
STR_80D3_YATE_CARGO_SHIP :Cargueiro Yate
STR_80D4_BAKEWELL_CARGO_SHIP :Cargueiro Bakewell
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Cargueiro Mightymover
STR_80D6_POWERNAUT_CARGO_SHIP :Cargueiro Powernaut
STR_80D1_CHUGGER_CHUG_PASSENGER :Barco de Passageiros Chugger-Chug
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Barco de Passageiros Shivershake
STR_80D3_YATE_CARGO_SHIP :Navio de Bens Yate
STR_80D4_BAKEWELL_CARGO_SHIP :Navio de Bens Bakewell
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Navio de Bens Mightymover
STR_80D6_POWERNAUT_CARGO_SHIP :Navio de Bens Powernaut
STR_80D7_SAMPSON_U52 :Sampson U52
STR_80D8_COLEMAN_COUNT :Coleman Count
STR_80D9_FFP_DART :FFP Dart
@@ -2668,8 +2655,8 @@ STR_TIMETABLE_STAY_FOR :e ficar durante
STR_TIMETABLE_DAYS :{COMMA} dia{P "" s}
STR_TIMETABLE_TICKS :{COMMA} tique{P "" s}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Indo para o depósito de {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Indo para o depósito de {TOWN}, {VELOCITY}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Dirigindo-se ao depósito de {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito de {TOWN}, {VELOCITY}
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito de {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito de {TOWN}, {VELOCITY}
@@ -2777,7 +2764,7 @@ STR_885C_BROKEN_DOWN :{RED}Quebrado
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade Máx.: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade: {LTBLUE}{VELOCITY} {BLACK}Manutenção.: {LTBLUE}{FORCE}
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
STR_8861_STOPPED :{RED}Parado
STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossível fazer o trem passar o sinal de perigo...
@@ -2801,9 +2788,9 @@ STR_INCOMPATIBLE_RAIL_TYPES :Tipo de ferrovi
STR_TRAIN_NO_POWER :{RED}Sem força
STR_TRAIN_START_NO_CATENARY :Essa linha não tem energia, portanto o trem não parte
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nov{G o a} {STRING} agora disponível!
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Novo {STRING} agora disponível!
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G o a} {STRING} agora disponível! - {ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossível vender veículo destruído...
STR_CAN_T_REFIT_DESTROYED_VEHICLE :{WHITE}Impossível adptar veículo destruído...
@@ -2832,7 +2819,7 @@ STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossí
STR_900C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
STR_900E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
STR_9012_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
@@ -2840,8 +2827,8 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...deve
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Impossível vender automóvel...
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Impossível iniciar/parar automóvel...
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Automóvel {COMMA} está aguardando na garagem
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Indo para a garagem de {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Indo para a garagem de {TOWN}, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Dirigindo-se à garagem de {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Dirigindo-se à garagem de {TOWN}, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Manutenção na garagem de {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção na garagem de {TOWN}, {VELOCITY}
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Impossível enviar o veículo para a garagem...
@@ -2908,15 +2895,15 @@ STR_980F :{WHITE}{VEHICLE
STR_9811_DETAILS :{WHITE}{VEHICLE} (Detalhes)
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
STR_9813_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
STR_9816_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
STR_9817_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Impossível iniciar/parar embarcação...
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Impossível enviar embarcação para o depósito...
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Incapaz de encontrar depósito local
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Indo para o depósito naval de {TOWN}
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Indo para o depósito naval {TOWN}, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Dirigindo-se ao depósito naval de {TOWN}
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito naval {TOWN}, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito naval de {TOWN}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito naval de {TOWN}, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Embarcação {COMMA} está aguardando no depósito naval
@@ -2976,12 +2963,12 @@ STR_A00B_ORDERS :{WHITE}{VEHICLE
STR_A00C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
STR_A00E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Impossível enviar aeronave para o hangar...
STR_HEADING_FOR_HANGAR :{ORANGE}Indo para o hangar de {STATION}
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Indo para o hangar de {STATION}, {VELOCITY}
STR_HEADING_FOR_HANGAR :{ORANGE}Dirigindo-se ao hangar de {STATION}
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Dirigindo-se ao hangar de {STATION}, {VELOCITY}
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Manutenção no Hangar de {STATION}
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Manutenção no Hangar de {STATION}, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Aeronave {COMMA} está aguardando no hangar
@@ -3039,7 +3026,7 @@ STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Explosão na refinaria de petróleo em {TOWN}!
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fábrica destruída em circunstâncias suspeitas em {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}OVNI pousa próximo a {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento da mina de carvão deixa um rasto de destruição em {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento de mina de carvão deixa um rasto de destruição em {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Inundações!{}Pelo menos {COMMA} perdidos ou mortos após terríveis inundações!
STR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi
@@ -3181,7 +3168,7 @@ STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Autosubs
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Tre{P m ns}
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Automóve{P l is}
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} Embarcaç{P ão ões}
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave{P "" s}
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave
STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING}
STR_REPLACE_VEHICLES_START :{BLACK}Iniciar Substituição
@@ -3357,7 +3344,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Alternar
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Alternar transparência para construções como estações, depósitos, pontos de controle e eletrificação da ferrovia
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Alternar transparência para pontes
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Alternar transparência para estruturas como faróis e antenas, talvez no futuro para efeitos visuais
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Alternar transparência para catenária. CTRL+click para travar.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Altera transparência para os indicadores de carga
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
@@ -3372,20 +3358,20 @@ STR_GROUP_NAME_FORMAT :Agrupar {COMMA}
STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
STR_GROUP_ALL_TRAINS :Todos os trens
STR_GROUP_ALL_ROADS :Todos os automóveis
STR_GROUP_ALL_SHIPS :Todas as embarcações
STR_GROUP_ALL_SHIPS :Todos os navios
STR_GROUP_ALL_AIRCRAFTS :Todas as aeronaves
STR_GROUP_DEFAULT_TRAINS :Trens sem grupo
STR_GROUP_DEFAULT_ROADS :Automóveis sem grupo
STR_GROUP_DEFAULT_SHIPS :Embarcações sem grupo
STR_GROUP_DEFAULT_SHIPS :Navios sem grupo
STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem grupo
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
STR_GROUP_ADD_SHARED_VEHICLE :Adicionar veículos compartilhados
STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tre{P m ns}
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóve{P l is}
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Embarcaç{P ão ões}
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave{P "" s}
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Trem{P "" s}
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóvel{P "" s}
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Navio{P "" s}
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
STR_GROUP_REPLACE_CAPTION :{WHITE}Substituir Veículos de "{GROUP}"
-13
View File
@@ -1206,19 +1206,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Промяна стойноста на настройка
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Някои от стойностите за интервал(и) на сервиз са несъвместими с избраните настройки! 5-90% и 30-800 са валидни стойности
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Пътенамирач за влакове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Не е препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Пътенамирач за пътни превозни средства: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригинал {RED}(Не е препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Пътенамирач за кораби: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригинал {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Не е препоръчано)
STR_TEMPERATE_LANDSCAPE :умерен климат
STR_SUB_ARCTIC_LANDSCAPE :Арктичен климат
STR_SUB_TROPICAL_LANDSCAPE :Тропически климат
-14
View File
@@ -1204,19 +1204,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Canvia el valor de l'adjustament
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns o tots els intervals de manteniment següents són incompatibles amb el valor triat! 5-90% i 30-800 dies són els vàlids
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Cerca de rutes per trens: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(No recomanat)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomanat)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Cerca de rutes per vehicles: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(No recomanat)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomanat)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Cerca de rutes per vaixells: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomanat)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Not recomanat)
STR_TEMPERATE_LANDSCAPE :paisatge temperat
STR_SUB_ARCTIC_LANDSCAPE :paisatge subàrtic
STR_SUB_TROPICAL_LANDSCAPE :paisatge subtropical
@@ -3353,7 +3340,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Activa/D
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Activa/Desactiva transparència dels edificis com ara estacions, cotxeres, punts de trobada i catenàries
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Activa/Desactiva transparència dels ponts
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Activa/Desactiva transparència de les estructures com ara fars i antenes
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Commuta la transparència de la catenària. CTRL+clic per bloquejar.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Activa/Desactiva la transparència pels indicadors de carregament
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+8 -22
View File
@@ -1262,19 +1262,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Změnit hodnotu nastavení
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Některé nebo všechny základní intervaly servisů níže nesouhlasí s vybraným nastavením! 5-90 % nebo 30-800 dní jsou platné hodnoty
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Hledač cesty pro vlaky: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(nedoporučuje se)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(doporučený)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Hledač cesty pro silniční vozidla: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :původní {RED}(nedoporučuje se)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(doporučený)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Hledač cesty pro lodě: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :původní {BLUE}(doporučený)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(nedoporučuje se)
STR_TEMPERATE_LANDSCAPE :krajina mírného pásma
STR_SUB_ARCTIC_LANDSCAPE :subarktická krajina
STR_SUB_TROPICAL_LANDSCAPE :subtropická kraina
@@ -3410,15 +3397,14 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}... tato
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}... silnice je otočena jiným směrem
STR_TRANSPARENCY_TOOLB :{WHITE}Nastavení průhlednosti
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Změna průhlednosti jmen stanic. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_TREES_DESC :{BLACK}Změna průhlednosti stromů. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Změna průhlednosti domů. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Změna průhlednosti továren. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, dep a kontrolních bodů. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Změna průhlednosti mostů. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti). Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Změna průhlednosti elektrifikace. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Přepnout průhlednost pro ukazatele naložení. Nastavení se zamkne CTRL+kliknutím.
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Změna průhlednosti jmen stanic
STR_TRANSPARENT_TREES_DESC :{BLACK}Změna průhlednosti stromů
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Změna průhlednosti domů
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Změna průhlednosti továren
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, kontrolních bodů a vedení
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Změna průhlednosti mostů
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti)
STR_TRANSPARENT_LOADING_DESC :{BLACK}Přepnout průhlednost pro ukazatele naložení
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
-14
View File
@@ -1204,19 +1204,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Verander waarde
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Sommige of alle van de standaard reparatie interval(len) hier onder zijn ongeldig met gekozen instelling! 5-90% en 30-800 dagen zijn geldig
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Routezoeker voor treinen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Niet aanbevolen)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Aanbevolen)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Routezoeker voor voertuigen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Niet aanbevolen)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recommended)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Routezoeker voor schepen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Aanbevolen)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Niet aanbevolen)
STR_TEMPERATE_LANDSCAPE :gematigd landschap
STR_SUB_ARCTIC_LANDSCAPE :subarctisch landschap
STR_SUB_TROPICAL_LANDSCAPE :subtropisch landschap
@@ -3353,7 +3340,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Wissel d
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Wissel doorzichtigheid voor gebouwen zoals stations, depots, waypoints en bovenleiding
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Wissel doorzichtigheid voor bruggen
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Wissel doorzichtigheid voor structuren zoals vuurtoren en antennes, in de toekomst misschien voor eyecandy
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Doorzichtigheid voor bovenleiding. CTRL+klik voor onthouden.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Schakel tussen doorzichtigheid voor laad indicatoren
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
-2
View File
@@ -1050,7 +1050,6 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Allow b
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Allow sending money to other companies: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Plane speed factor: {ORANGE}1 / {STRING1}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Allow drive-through road stops on town owned roads: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Allow building adjacent stations: {ORANGE}{STRING}
@@ -1612,7 +1611,6 @@ STR_1004_TOO_HIGH :{WHITE}Too high
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}No suitable railway track
STR_1007_ALREADY_BUILT :{WHITE}...already built
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Must remove railway track first
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Road is one way or blocked
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Railway Construction
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Electrified Railway Construction
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorail Construction
+3 -17
View File
@@ -754,7 +754,7 @@ STR_0246_FACTORY :{BLACK}Vabrik
STR_0247_STEEL_MILL :{BLACK}Terasetööstus
STR_0248_FARM :{BLACK}Talu
STR_0249_IRON_ORE_MINE :{BLACK}Rauamaagikaevandus
STR_024A_OIL_WELLS :{BLACK}Naftapuuraugud
STR_024A_OIL_WELLS :{BLACK}Naftapuurauk
STR_024B_BANK :{BLACK}Pank
STR_024C_PAPER_MILL :{BLACK}Paberitehas
STR_024D_FOOD_PROCESSING_PLANT :{BLACK}Toidutöötlustehas
@@ -1144,7 +1144,7 @@ STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Paiguta
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Aasta lõpus näidatakse rahavoogude aruannet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatchiga ühilduv 'mittepeatumine': {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Mootorsõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Kursoriga ekraaniserva puudutamisel keritakse vaadet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Kursori ekraani serva viimisel keritakse vaadet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Luba kohalikule omavalitsusele altkäemaksu maksmine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Luba eksklusiivseid veoõiguseid osta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Luba teistele ettevõtetele raha saata: {ORANGE}{STRING}
@@ -1262,7 +1262,7 @@ STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Mäng l
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Luba sujuv majandus (väiksemad muutused)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Luba teiste ettevõtete aktsiate ostmine
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Venitades rajatavate signaalide paigutustihedus: {ORANGE}{STRING} ühik(ut)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Semafore ehitatakse enne: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Ehita ise semaforid enne: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Näita signalisatsiooni GUI-d: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Stsenaariumiredaktor ei tunnista "ilma teedeta" linnaplaneeringut
@@ -1304,19 +1304,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Muuda seadete väärtusi
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Mõni või kõik vaikimisi hooldusperioodid on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Rongide rajaleidja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(ebasoovitatav)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(soovitatav)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Maanteesõidukite rajaleidja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Algne {RED}(ebasoovitatav)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(soovitatav)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Laevade rajaleidja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Algne {BLUE}(soovitatav)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(ebasoovitatav)
STR_TEMPERATE_LANDSCAPE :Parasvöötme maastik
STR_SUB_ARCTIC_LANDSCAPE :Arktiline maastik
STR_SUB_TROPICAL_LANDSCAPE :Troopiline maastik
@@ -3453,7 +3440,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Vaheta t
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Vaheta läbipaistvust ehitistel nagu: jaamad, depood, vahepunktid ja elektriliinid
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Vaheta sildade läbipaistvust
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Vaheta läbipaistvust rajatistel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Õhuliinide läbipaistvuse vahetamine. CTRL-klahvi toel klõpsamine lukustab.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Vaheta laadimisnäidikute läbipaistvust
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+20 -34
View File
@@ -1205,19 +1205,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Changer valeur du paramètre
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Un ou plusieurs intervalles de service par défaut ci-dessous sont incompatibles avec le paramètre choisi! 5-90% et 30-800 jours sont valides
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Recherche de chemin des trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Non recommandé)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recommandé)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Recherche de chemin des véhicules routiers: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Not recommandé)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recommandé)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Recherche de chemin des navires: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recommandé)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Not recommandé)
STR_TEMPERATE_LANDSCAPE :environnement 'Tempéré'
STR_SUB_ARCTIC_LANDSCAPE :environnement 'Arctique'
STR_SUB_TROPICAL_LANDSCAPE :environnement 'Tropical'
@@ -1304,8 +1291,8 @@ STR_SELECT_STATION_TYPE_TIP :{BLACK}Choisir
STR_FAST_FORWARD :{BLACK}Avance rapide du jeu
STR_MESSAGE_HISTORY :{WHITE}Historique des Messages
STR_MESSAGE_HISTORY_TIP :{BLACK}Liste des messages récents
STR_MESSAGES_DISABLE_ALL :{BLACK}Désactiver tout
STR_MESSAGES_ENABLE_ALL :{BLACK}Activer tout
STR_MESSAGES_DISABLE_ALL :{BLACK}Tous sommaires
STR_MESSAGES_ENABLE_ALL :{BLACK}Tous complets
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Construire une mine de charbon
STR_CONSTRUCT_FOREST_TIP :{BLACK}Planter une forêt
@@ -2691,11 +2678,11 @@ STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Véhicul
STR_881F_BUILD_VEHICLE :{BLACK}Construire
STR_CLONE_ROAD_VEHICLE :{BLACK}Copier Véhicule
STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Ctrl-clic pour partager les ordres
STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Cliquer ici puis sur un véhicule routier dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Ctrl-clic partagera les ordres
STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Cliquer ici puis sur un véhicule routier dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
STR_CLONE_TRAIN :{BLACK}Copier Train
STR_CLONE_TRAIN_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Ctrl-clic pour partager les ordres
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Cliquer ici puis sur un train dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
STR_CLONE_TRAIN_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Ctrl-clic partagera les ordres
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Cliquer ici puis sur un train dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
STR_8820_RENAME :{BLACK}Renommer
STR_8823_SKIP :{BLACK}Suivant
STR_8824_DELETE :{BLACK}Supprimer
@@ -2704,7 +2691,7 @@ STR_8826_GO_TO :{BLACK}Aller à
STR_8827_FULL_LOAD :{BLACK}Charger
STR_8828_UNLOAD :{BLACK}Décharger
STR_REFIT :{BLACK}Réaménager
STR_REFIT_TIP :{BLACK}Choisir pour quelle cargaison réaménager pour cet ordre. Ctrl-clic pour retirer l'instruction de réaménagement
STR_REFIT_TIP :{BLACK}Choisir pour quelle cargaison réaménager pour cet ordre. Ctrl-clic pour retirer l'instruction de réaménagement
STR_REFIT_ORDER :(Réaménager pour {STRING})
STR_TIMETABLE_VIEW :{BLACK}Horaire
STR_TIMETABLE_VIEW_TOOLTIP :{BLACK}Basculer vers la vue horaire
@@ -2757,7 +2744,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Afficher
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Afficher des informations sur les wagons
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Afficher la capacité de chaque wagon
STR_SHOW_TOTAL_CARGO :{BLACK}Afficher la capacité totale du train, par type de cargaison
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner. Ctrl-clic pour déplacer la vue sur la station
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner. Cliquer avec Ctrl déplace la vue sur la station
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sauter l'ordre courant, et enchaîner sur le suivant. Ctrl-clic pour sauter l'ordre sélectionné
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Supprime l'ordre sélectionné
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Transformer l'ordre sélectionné en Sans-Arrêt
@@ -2895,8 +2882,8 @@ STR_9805_SHIPS :{WHITE}{COMPANY
STR_9808_NEW_SHIPS :{WHITE}Nouveaux navires
STR_9809_BUILD_SHIP :{BLACK}Construire navire
STR_CLONE_SHIP :{BLACK}Copier Navire
STR_CLONE_SHIP_INFO :{BLACK}Effectuer la copie d'un navire. Ctrl-clic pour partager les ordres
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Effectuer la copie d'un navire. Cliquer ici puis sur un navire dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
STR_CLONE_SHIP_INFO :{BLACK}Effectuer la copie d'un navire. Ctrl-clic partagera les ordres
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Effectuer la copie d'un navire. Cliquer ici puis sur un navire dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Le navire doit être arrêté au dépôt
STR_980C_CAN_T_SELL_SHIP :{WHITE}Impossible de vendre navire...
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Impossible de construire navire...
@@ -2962,8 +2949,8 @@ STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Impossib
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar à {STATION}
STR_A003_NEW_AIRCRAFT :{BLACK}Nouvel aéronef
STR_CLONE_AIRCRAFT :{BLACK}Copier aéronef
STR_CLONE_AIRCRAFT_INFO :{BLACK}Effectuer une copie de l'aéronef. Ctrl-clic pour partager les ordres
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Effectuer la copie d'un aéronef. Cliquer ici puis sur un aéronef dans ou hors d'un hangar. Ctrl-clic pour partager les ordres
STR_CLONE_AIRCRAFT_INFO :{BLACK}Effectuer une copie de l'aéronef. Ctrl-clic partagera les ordres
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Effectuer la copie d'un aéronef. Cliquer ici puis sur un aéronef dans ou hors d'un hangar. Ctrl-clic partagera les ordres
STR_A005_NEW_AIRCRAFT :{WHITE}Nouvel Aéronef
STR_A006_BUILD_AIRCRAFT :{BLACK}Construire aéronef
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Impossible de construire l'aéronef...
@@ -3347,15 +3334,14 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...cette
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...mauvaise orientation de la route
STR_TRANSPARENCY_TOOLB :{WHITE}Options de transparence
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Transparence des noms de station. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_TREES_DESC :{BLACK}Transparence des arbres. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Transparence des maisons. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Transparence des industries. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Transparence des éléments constructibles tels que stations, dépôts, points de contrôle et caténaire. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Transparence des ponts. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Transparence des structures telles que phares et antennes. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Transparence des caténaires. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Transparence pour les indicateurs de chargement. Ctrl-clic pour vérouiller.
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Transparence des noms de station
STR_TRANSPARENT_TREES_DESC :{BLACK}Transparence des arbres
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Transparence des maisons
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Transparence des industries
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Transparence des éléments constructibles tels que stations, dépôts, points de contrôle et caténaire
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Transparence des ponts
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Transparence des structures telles que phares et antennes
STR_TRANSPARENT_LOADING_DESC :{BLACK}Basculer la transparence pour les indicateurs de chargement
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
-14
View File
@@ -1269,19 +1269,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Válassz beállítási értéket
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}A lenti alap szervíz intervallum beállítások némelyike/mindegyike inkompatibilis a választott beállítással! Csak 5-90% és 30-800 napig elfogadható.
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Útvonalkereső vonatokhoz: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Ellenjavallt)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Ajánlott)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Útvonalkereső közúti járművekhez: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Eredeti {RED}(Ellenjavallt)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Ajánlott)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Útvonalkereső hajókhoz: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Eredeti {BLUE}(Ajánlott)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Ellenjavallt)
STR_TEMPERATE_LANDSCAPE :mérsékelt táj
STR_SUB_ARCTIC_LANDSCAPE :sarkköri táj
STR_SUB_TROPICAL_LANDSCAPE :trópusi táj
@@ -3455,7 +3442,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Átkapcs
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Átkapcsolni az építhető elemekre (állomások, depók, útipontok és felsővezeték)
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Átkapcsolni a hidakra
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Átkapcsolni egyéb épületekre, mint világítótorony és antennák (esetleg egyéb jövőbeni díszek)
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Átlátszóság kapcsolása a vezetékekhez, CTRL+click a zároláshoz.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Átlátszó betöltésjelző kapcsolása (ki/be)
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+8 -22
View File
@@ -1206,19 +1206,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Cambia impostazione
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alcuni degli intervalli sottostanti sono incompatibili con l'impostazione scelta! Valori ammessi: 5-90% e 30-800 giorni
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder per i treni: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(non raccomandato)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(raccomandato)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder per gli automezzi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Originale {RED}(non raccomandato)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(raccomandato)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder per le navi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Originale {BLUE}(raccomandato)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(non raccomandato)
STR_TEMPERATE_LANDSCAPE :Paesaggio 'temperato'
STR_SUB_ARCTIC_LANDSCAPE :Paesaggio 'sub-artico'
STR_SUB_TROPICAL_LANDSCAPE :Paesaggio 'sub-tropicale'
@@ -3348,15 +3335,14 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...quest
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...strada rivolta nella direzione sbagliata
STR_TRANSPARENCY_TOOLB :{WHITE}Opzioni trasparenza
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Attiva/disattiva la trasparenza dei nomi delle stazioni. CTRL+clic per bloccare.
STR_TRANSPARENT_TREES_DESC :{BLACK}Attiva/disattiva la trasparenza degli alberi. CTRL+clic per bloccare.
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Attiva/disattiva la trasparenza degli edifici. CTRL+clic per bloccare.
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Attiva/disattiva la trasparenza delle industrie. CTRL+clic per bloccare.
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Attiva/disattiva la trasparenza delle strutture edificabili come stazioni, depositi e waypoint. CTRL+clic per bloccare.
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Attiva/disattiva la trasparenza dei ponti. CTRL+clic per bloccare.
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Attiva/disattiva la trasparenza di strutture come fari e antenne. CTRL+clic per bloccare.
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Attiva/disattiva la trasparenza delle catenarie. CTRL+clic per bloccare.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento. CTRL+clic per bloccare.
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Attiva/disattiva la trasparenza dei nomi delle stazioni
STR_TRANSPARENT_TREES_DESC :{BLACK}Attiva/disattiva la trasparenza degli alberi
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Attiva/disattiva la trasparenza degli edifici
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Attiva/disattiva la trasparenza delle industrie
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Attiva/disattiva la trasparenza delle strutture edificabili come stazioni, depositi, waypoint e catenarie
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Attiva/disattiva la trasparenza dei ponti
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Attiva/disattiva la trasparenza di strutture come fari, antenne e altri futuri oggetti decorativi
STR_TRANSPARENT_LOADING_DESC :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
-14
View File
@@ -1204,19 +1204,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}設定を変更します
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}以下のデフォルトの修理間隔は選択した設定に対応していません!5〜90%もしくは30〜800日が使用できます。
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}電車の経路処理アルゴリズム:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP{RED}(すすめない)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF{BLUE}(おすすめ)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}道路車両の経路処理アルゴリズム:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :本来{RED}(すすめない)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF{BLUE}(おすすめ)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}船舶の経路処理アルゴリズム:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :本来{BLUE}(おすすめ)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF{RED}(すすめない)
STR_TEMPERATE_LANDSCAPE :温帯国
STR_SUB_ARCTIC_LANDSCAPE :亜寒帯国
STR_SUB_TROPICAL_LANDSCAPE :亜熱帯国
@@ -3353,7 +3340,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}工業
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}交通社所有の建物などの透明性を入/切
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}橋の透明性を入/切
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}灯台、送信機などの透明性を入/切
STR_TRANSPARENT_CATENARY_DESC :{BLACK}懸垂索の透明度を入/切します。CTRL+クリックすると、ロックします。
STR_TRANSPARENT_LOADING_DESC :{BLACK}積み降ろしの表示の透明性を切り替え
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
-15
View File
@@ -16,7 +16,6 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}평지가 필요합니다!
STR_0008_WAITING :{BLACK}대기: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({1:STATION}에서 온 {0:SHORTCARGO})
STR_000C_ACCEPTS :{BLACK}받음: {WHITE}
STR_000D_ACCEPTS :{BLACK}받음: {GOLD}
STR_000E :
@@ -1205,19 +1204,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}설정값 변경
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}아래 기본 점검간격의 일부 혹은 전체가 선택된 설정과 맞지 않습니다. 5-90%와 30-800일이 사용 가능합니다.
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}열차용 경로탐색: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(비추천)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(추천)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}차량을 위한 경로탐색: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :오리지널 {RED}(비추천)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(추천)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}선박을 위한 경로탐색: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :오리지널 {BLUE}(추천)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(비추천)
STR_TEMPERATE_LANDSCAPE :온대 기후
STR_SUB_ARCTIC_LANDSCAPE :냉대 기후
STR_SUB_TROPICAL_LANDSCAPE :열대 기후
@@ -3354,7 +3340,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}산업
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}정거장, 차량기지, 웨이포인트, 연결고리와 같은 건설 가능한 것들에 대한 투명 전환
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}다리 투명 전환
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}등대와 안테나와 같은 구조물 투명 전환
STR_TRANSPARENT_CATENARY_DESC :{BLACK}케이블 보이기/숨기기. 고정하려면 CTRL+클릭하세요.
STR_TRANSPARENT_LOADING_DESC :{BLACK}적재 정도 투명 전환
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
-3
View File
@@ -15,7 +15,6 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}É necessário terreno plano
STR_0008_WAITING :{BLACK}Em espera: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} em rota de {STATION})
STR_000C_ACCEPTS :{BLACK}Aceita: {WHITE}
STR_000D_ACCEPTS :{BLACK}Aceita: {GOLD}
STR_000E :
@@ -725,7 +724,6 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Colocar
STR_028E_PLACE_TRANSMITTER :{BLACK}Colocar transmissor
STR_028F_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Manter a tecla CTRL pressionada para remover
STR_CREATE_LAKE :{BLACK}Definir área de água.{}Construir um canal com a tecla CTRL numa área que não seja a do mar, senão inundar-se-iam as zonas circundantes
STR_CREATE_RIVER :{BLACK}Colocar rios.
STR_0290_DELETE :{BLACK}Apagar
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Apagar completamente esta cidade
STR_0292_SAVE_SCENARIO :Guardar cenário
@@ -1204,7 +1202,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Alterar valor
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns ou todos os intervalo(s) de serviço predefinidos abaixo são incompatíveis com o valor escolhido! São válidos 5-90% e 30-800 dias
STR_TEMPERATE_LANDSCAPE :Terreno temperado
STR_SUB_ARCTIC_LANDSCAPE :terreno subárctico
STR_SUB_TROPICAL_LANDSCAPE :terreno subtropical
-14
View File
@@ -1268,19 +1268,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Zmenit hodnotu nastavenia
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Niektore alebo vsetky implicitne servisne intervaly su nekompatibilne s vybranym nastavenim. 5-90% a 30-800 dni su platne.
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Algoritmus hladania cesty pre vlaky: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(neodporúca sa)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(odporúca sa)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Algoritmus hladania cesty pre automobily: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :pôvodný {RED}(neodporúca sa)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(odporúca sa)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Algoritmus hladania cesty pre lode: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :pôvodný {BLUE}(odporúca sa)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(neodporúca sa)
STR_TEMPERATE_LANDSCAPE :krajina mierneho pasma
STR_SUB_ARCTIC_LANDSCAPE :subarkticka krajina
STR_SUB_TROPICAL_LANDSCAPE :subtropicka krajina
@@ -3417,7 +3404,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Prepnút
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Prepnút priehladnost staníc, garáží, tratí, ...
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Prepnút priehladnost mostov
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Prepnút priehladnost objektov ako sú majáky a antény
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Prepnút priehladnost pre trakcné vedenie. CTRL+klik pre uzamknutie.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Prepnút priehladnost pre ukazovatele nakladania a vykladania
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
-2
View File
@@ -16,7 +16,6 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Potrebno je ravno zemljišče
STR_0008_WAITING :{BLACK}Čaka: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} na poti iz {STATION})
STR_000C_ACCEPTS :{BLACK}Sprejema: {WHITE}
STR_000D_ACCEPTS :{BLACK}Sprejema: {GOLD}
STR_000E :
@@ -1246,7 +1245,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Spremeni vrednost
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Nekatera ali vsa privzeta obdobja servisiranja spodaj niso združljiva z izborom! 5-90% in 30-800 dni je veljavno
STR_TEMPERATE_LANDSCAPE :Zmerno podnebje
STR_SUB_ARCTIC_LANDSCAPE :Sub arktično podnebje
STR_SUB_TROPICAL_LANDSCAPE :Sub tropsko podnebje
-14
View File
@@ -1205,19 +1205,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Cambiar valor de la opción
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguno o todos los intervalos de servicio por defecto mostrados son incompatibles con la configuración elegida! 5-90% y 30-800 días son válidos
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder para trenes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(No recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder para vehículos de carretera: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(No recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder para barcos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomendado)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(No recomendado)
STR_TEMPERATE_LANDSCAPE :Paisaje templado
STR_SUB_ARCTIC_LANDSCAPE :Paisaje sub-ártico
STR_SUB_TROPICAL_LANDSCAPE :Paisaje sub-tropical
@@ -3354,7 +3341,6 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Activar
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Activar transparencias para construcciones como estaciones, depósitos, puntos de paso, etc.
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Activar transparencias para puentes
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Activar transparencias para estructuras como faros, antenas, etc.
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Activar transparencia para la catenaria. CTRL+click para bloquear.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Ajustar transparencia para los indicadores de carga
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
-2
View File
@@ -15,7 +15,6 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Platt mark krävs
STR_0008_WAITING :{BLACK}Väntar: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} på väg från {STATION})
STR_000C_ACCEPTS :{BLACK}Accepterar: {WHITE}
STR_000D_ACCEPTS :{BLACK}Accepterar: {GOLD}
STR_000E :
@@ -1204,7 +1203,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Ändra inställningsvärde
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Några eller alla av standard serviceintervalls-inställningarna är felaktiga! (5-90% och 30-800 dagar är giltiga inställningar)
STR_TEMPERATE_LANDSCAPE :Tempererat landskap
STR_SUB_ARCTIC_LANDSCAPE :Sub-arktiskt landskap
STR_SUB_TROPICAL_LANDSCAPE :Sub-tropiskt landskap
+125 -138
View File
@@ -82,6 +82,7 @@ STR_0022_WHEAT :пшениця
STR_0022_WHEAT.r :пшениці
STR_0022_WHEAT.z :пшеницю
STR_0023_RUBBER :каучук
STR_0023_RUBBER.r :каучука
STR_0023_RUBBER.z :каучук
STR_0024_SUGAR :цукор
STR_0024_SUGAR.r :цукру
@@ -272,7 +273,7 @@ STR_ABBREV_BATTERIES :{TINYFONT}БТ
STR_ABBREV_PLASTIC :{TINYFONT}ПЛ
STR_ABBREV_FIZZY_DRINKS :{TINYFONT}ГЗ
STR_ABBREV_NONE :{TINYFONT}Ні
STR_ABBREV_ALL :{TINYFONT}Все
STR_ABBREV_ALL :{TINYFONT}Все!!!
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Карта - {STRING}
@@ -349,8 +350,8 @@ STR_00FF_FARM :{BLACK}{TINYFON
STR_0100_FACTORY :{BLACK}{TINYFONT}Фабрика
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Друкарня
STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Нафтова свердловина
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Залізорудна шахта
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Сталеливарний завод
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Залізнорудна шахта
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Сталеварний завод
STR_0105_BANK :{BLACK}{TINYFONT}Банк
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Паперова фабрика
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Золоторудна шахта
@@ -461,13 +462,13 @@ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} літ
STR_UNITS_VOLUME_LONG_SI :{COMMA} м³
STR_UNITS_FORCE_IMPERIAL :{COMMA}x10³ lbf
STR_UNITS_FORCE_METRIC :{COMMA} тон-сил
STR_UNITS_FORCE_SI :{COMMA} кН
STR_UNITS_FORCE_METRIC :{COMMA} ton force
STR_UNITS_FORCE_SI :{COMMA} kN
############ range for menu starts
STR_0154_OPERATING_PROFIT_GRAPH :Операційний прибуток
STR_0155_INCOME_GRAPH :Графік доходів
STR_0156_DELIVERED_CARGO_GRAPH :Доставка вантажів
STR_0156_DELIVERED_CARGO_GRAPH :Доставлення вантажів
STR_0157_PERFORMANCE_HISTORY_GRAPH :Графік продуктивності
STR_0158_COMPANY_VALUE_GRAPH :Вартість компанії
STR_0159_CARGO_PAYMENT_RATES :Вартість перевезень
@@ -487,7 +488,7 @@ STR_SORT_CRITERIA_TIP :{BLACK}Вибе
STR_SORT_BY :{BLACK}Сортувати
STR_SORT_BY_POPULATION :{BLACK}за населенням
STR_SORT_BY_PRODUCTION :{BLACK}за продуктивністю
STR_SORT_BY_PRODUCTION :{BLACK}за виробництвом
STR_SORT_BY_TYPE :{BLACK}за типом
STR_SORT_BY_TRANSPORTED :{BLACK}за перевезенням
STR_SORT_BY_NAME :{BLACK}за назвою
@@ -575,7 +576,7 @@ STR_0189 :{BLACK}{SMALLDO
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Не можна змінити інтервал обслуговування...
STR_018B_CLOSE_WINDOW :{BLACK}Закрити вікно
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Заголовок вікна - потягніть для переміщення вікна
STR_STICKY_BUTTON :{BLACK}Закріпити вікно - воно не буде закриватися командою "Закрити всі вікна"
STR_STICKY_BUTTON :{BLACK}Закріпити вікно
STR_RESIZE_BUTTON :{BLACK}Натисніть і тягніть для зміни розміру вікна
STR_SAVELOAD_HOME_BUTTON :{BLACK}Натисніть для переходу до поточного каталогу збереження/завантаження
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги і т.п.
@@ -694,8 +695,8 @@ STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Вибр
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистити програму (тільки для Набору 1 або Набору 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Зберегти налаштування музики
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Виберіть доріжку, щоб додати до програми (тільки для Набору 1 або Набору 2)
STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Клікніть на мелодії для її видалення зі списку (лише Набір1 та Набір2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл.ідкл. випадкову програму
STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Клікніть мишою на назві мелодії для її видалення зі списку (лише Набір1 та Набір2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл/викл випадкову програму
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показує вікно вибору музичної програми
STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть для показу в центрі екрану
STR_01FE_DIFFICULTY :{BLACK}Складність ({STRING})
@@ -710,17 +711,17 @@ STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}При
STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Прибуття першого транспорту на станцію конкурента
STR_0208_ACCIDENTS_DISASTERS :{YELLOW}Нещасні випадки/стихійні лиха
STR_0209_COMPANY_INFORMATION :{YELLOW}Інформація компанії
STR_NEWS_OPEN_CLOSE :{YELLOW}Відкриття/закриття підприємств
STR_NEWS_OPEN_CLOSE :{YELLOW}Відкриття / закриття підприємств
STR_020A_ECONOMY_CHANGES :{YELLOW}Зміни в економіці
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}Зміна обсягів виробництва на підприємствах, обслуговуваних гравцем
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}Зміна обсягів виробництва на підприємствах, обслуговуваних суперниками
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}Зміна обсягів виробництва на підприємствах гравця
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}Зміна обсягів виробництва на підприємствах суперників
STR_OTHER_INDUSTRY_PRODUCTION_CHANGES :{YELLOW}Інші зміни обсягів виробництва
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Поради/інформація про транспорт гравця
STR_020C_NEW_VEHICLES :{YELLOW}Новий транспорт
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Зміни в попиті на перевезення
STR_020E_SUBSIDIES :{YELLOW}Субсидії
STR_020F_GENERAL_INFORMATION :{YELLOW}Загальна інформація
STR_MESSAGES_ALL :{YELLOW}Відображати повідомлення: відкл. / коротко / повно
STR_MESSAGES_ALL :{YELLOW}Відображати повідомлення /Коротко/Повно/Викл
STR_MESSAGE_SOUND :{YELLOW}Звукове сповіщення для підсумкових новин
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...дуже далеко від попереднього пункту призначення
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Кращі компанії, що досягли {NUM}{}(рівень {STRING})
@@ -776,7 +777,7 @@ STR_0243_FOREST :{BLACK}{G=m}Л
STR_0244_OIL_REFINERY :{BLACK}{G=m}Нафтопереробний завод
STR_0245_OIL_RIG :{BLACK}{G=f}Нафтова платформа
STR_0246_FACTORY :{BLACK}{G=f}Фабрика
STR_0247_STEEL_MILL :{BLACK}{G=m}Сталеливарний завод
STR_0247_STEEL_MILL :{BLACK}{G=m}Сталеварний завод
STR_0248_FARM :{BLACK}{G=f}Ферма
STR_0249_IRON_ORE_MINE :{BLACK}{G=f}Залізорудна шахта
STR_024A_OIL_WELLS :{BLACK}{G=f}Нафтова свердловина
@@ -810,12 +811,12 @@ STR_0265_PLANT_FOREST :{BLACK}Поса
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Будувати нафтопереробний завод
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Будувати нафтову платформу (тільки біля краю карти)
STR_0268_CONSTRUCT_FACTORY :{BLACK}Будувати фабрику
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Будувати сталеливарний завод
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Будуватисталеварний завод
STR_026A_CONSTRUCT_FARM :{BLACK}Будувати ферму
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Будувати залізорудну шахту
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Будувати нафтову свердловину
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Будувати банк (тільки у містах з населенням більше 1200)
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Будувати паперову фабрику
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Будувати паперову фабоику
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Будувати продуктовий завод
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Будувати друкарню
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Будувати золоторудну шахту
@@ -865,7 +866,7 @@ STR_0299_SAVE_SCENARIO :{WHITE}Збер
STR_029A_PLAY_SCENARIO :{BLACK}Грати за сценарієм
STR_PLAY_HEIGHTMAP :{BLACK}Грати з карти висот
STR_PLAY_HEIGHTMAP_HINT :{BLACK}Почати нову гру, використавши карту висот за ландшафт
STR_QUIT_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєте вийти зі сценарію?
STR_QUIT_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєти вийти зі сценарію?
STR_029C_QUIT_EDITOR :{WHITE}Вихід з редактору
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...можливо будувати лише у містах з населенням не менш 1200
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Перенести початкову дату на 1 рік назад
@@ -962,8 +963,8 @@ STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Прод
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Створити свій сценарій
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Грати одному
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Грати з 2-8 гравцями
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Показати налаштування гри
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налаштування складності
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Показати налашування гри
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налашування складності
STR_0303_START_A_NEW_GAME_USING :{BLACK}Почати нову гру, використовуючи сценарій
STR_0304_QUIT :{BLACK}Вихід
STR_0305_QUIT_OPENTTD :{BLACK}покинути 'OpenTTD'
@@ -994,21 +995,21 @@ STR_031C_SCREENSHOT_FAILED :{WHITE}Поми
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Купити ділянку для використання у майбутньому
STR_032F_AUTOSAVE :{RED}Автозбереження
STR_SAVING_GAME :{RED}* * ЗБЕРЕЖЕННЯ ГРИ * *
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться!
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...,{}зачекайте поки завершиться!
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Вибрати програму 'Дорожні теми'
STR_6 :{BLACK}6
STR_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ORIGINAL_ENGLISH :Англійські (оригінальні)
STR_TOWNNAME_ORIGINAL_ENGLISH :Англійські(Оригінальні)
STR_TOWNNAME_FRENCH :Французькі
STR_TOWNNAME_GERMAN :Німецькі
STR_TOWNNAME_ADDITIONAL_ENGLISH :Англійськіодаткові)
STR_TOWNNAME_LATIN_AMERICAN :Латиноамериканські
STR_TOWNNAME_ADDITIONAL_ENGLISH :Англійськіодаткові)
STR_TOWNNAME_LATIN_AMERICAN :Латино-Американські
STR_TOWNNAME_SILLY :Кумедні
STR_TOWNNAME_SWEDISH :Шведські
STR_TOWNNAME_DUTCH :Голландські
STR_TOWNNAME_DUTCH :Голандські
STR_TOWNNAME_FINNISH :Фінські
STR_TOWNNAME_POLISH :Польські
STR_TOWNNAME_SLOVAKISH :Словацькі
@@ -1021,7 +1022,7 @@ STR_TOWNNAME_SWISS :Швейцар
STR_TOWNNAME_DANISH :Датські
STR_TOWNNAME_TURKISH :Турецькі
STR_TOWNNAME_ITALIAN :Італійські
STR_TOWNNAME_CATALAN :Каталонські
STR_TOWNNAME_CATALAN :Каталанські
############ end of townname region
STR_CURR_GBP :Фунт (£)
@@ -1038,14 +1039,14 @@ STR_CURR_ESP :Іспансь
STR_CURR_FIM :Фінська марка (FIM)
STR_CURR_FRF :Франк (FRF)
STR_CURR_GRD :Грецька драхма (GRD)
STR_CURR_HUF :Угорський форинт (HUF)
STR_CURR_HUF :Угорський форінт (HUF)
STR_CURR_ISK :Ісландська крона (ISK)
STR_CURR_ITL :Італійська ліра (ITL)
STR_CURR_NLG :Голландський гульден (NLG)
STR_CURR_NLG :Голандський гульден (NLG)
STR_CURR_NOK :Норвезька крона (NOK)
STR_CURR_PLN :Польський злотий (PLN)
STR_CURR_ROL :Румунський лей (ROL)
STR_CURR_RUR :Російський рубель (RUR)
STR_CURR_RUR :Російський рубль (RUR)
STR_CURR_SIT :Словенський талер (SIT)
STR_CURR_SEK :Шведська крона (SEK)
STR_CURR_YTL :Турецька ліра (YTL)
@@ -1253,7 +1254,7 @@ STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Монорей
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Магнітна подушка
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Перша з доступних
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Остання з доступних
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Найчастіше використовувана
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Найчастіш використовувана
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Показувати засоби будівництва, коли нема відповідного транспорту: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Макс. поїздів у гравця: {ORANGE}{STRING}
@@ -1329,19 +1330,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Змініть значення
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Одне чи декілька значень інтервалів несумісні за даних умов! Дозволено 5-90% та 30-800 днів
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Шукач шляху для поїздів: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(не рекомендовано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(рекомендовано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Шукач шляху для автомобілів: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригінальний {RED}(не рекомендовано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(рекомендовано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Шукач шляху для кораблів: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригінальний {BLUE}(рекомендовано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(не рекомендовано)
STR_TEMPERATE_LANDSCAPE :Помірний ландшафт
STR_SUB_ARCTIC_LANDSCAPE :Субарктичний ландшафт
STR_SUB_TROPICAL_LANDSCAPE :Субтропічний ландшафт
@@ -1500,7 +1488,7 @@ STR_NETWORK_GAME_INFO :{SILVER}Інф
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Клієнт: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Мова: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Шаблон: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Шаблонt: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Розмір карти: {WHITE}{COMMA}x{COMMA}
STR_NETWORK_SERVER_VERSION :{SILVER}Версія серверу: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Адреса серверу: {WHITE}{STRING} : {NUM}
@@ -1509,7 +1497,7 @@ STR_NETWORK_CURRENT_DATE :{SILVER}Пот
STR_NETWORK_PASSWORD :{SILVER}Захищено паролем!
STR_NETWORK_SERVER_OFFLINE :{SILVER}Сервер відключений
STR_NETWORK_SERVER_FULL :{SILVER}Сервер зайнятий
STR_NETWORK_VERSION_MISMATCH :{SILVER}Версія не співпадає
STR_NETWORK_VERSION_MISMATCH :{SILVER}Версія не сумісна
STR_NETWORK_GRF_MISMATCH :{SILVER}NEWGRF ПОМИЛКА
STR_NETWORK_JOIN_GAME :{BLACK}Приєднатися
@@ -1535,7 +1523,7 @@ STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{S
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Максимум компаній:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Обмежує кількість компаній на сервері
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} споглядач{P "" а ів}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Максимум глядачів:
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Максмум глядачів:
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Обмежує кількість глядачів на сервері
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Мова:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Інші гравці будуть знати якою мовою спілкуються на сервері
@@ -1555,7 +1543,7 @@ STR_NETWORK_LANG_BULGARIAN :Болгарс
STR_NETWORK_LANG_CHINESE :Китайська
STR_NETWORK_LANG_CZECH :Чеська
STR_NETWORK_LANG_DANISH :Датська
STR_NETWORK_LANG_DUTCH :Голландська
STR_NETWORK_LANG_DUTCH :Німецька
STR_NETWORK_LANG_ESPERANTO :Есперанто
STR_NETWORK_LANG_FINNISH :Фінська
STR_NETWORK_LANG_HUNGARIAN :Угорська
@@ -1565,7 +1553,7 @@ STR_NETWORK_LANG_JAPANESE :Японськ
STR_NETWORK_LANG_KOREAN :Корейська
STR_NETWORK_LANG_LITHUANIAN :Литовська
STR_NETWORK_LANG_NORWEGIAN :Норвезька
STR_NETWORK_LANG_POLISH :Польська
STR_NETWORK_LANG_POLISH :Польськая
STR_NETWORK_LANG_PORTUGUESE :Португальська
STR_NETWORK_LANG_ROMANIAN :Румунська
STR_NETWORK_LANG_RUSSIAN :Російська
@@ -1577,7 +1565,7 @@ STR_NETWORK_LANG_TURKISH :Турецьк
STR_NETWORK_LANG_UKRAINIAN :Українська
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Мережева гра - кімната
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Підготовка до з'єднання: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Список всіх компаній присутніх у цій грі. Ви можете як приєднатись до компанії так і створити нову, якщо є вільне місце
@@ -1626,18 +1614,18 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Серв
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанія захищена паролем. Введіть пароль
STR_NETWORK_CLIENT_LIST :{WHITE}Список клієнтів
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Не знайдено мережевого пристрою або скомпільовано без ENABLE_NETWORK
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Не знайдено мережевого пристрою або закомпільовано без ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Не знайдено жодної мережної гри
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Сервер не відповів на запит
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Сервер не відповідає на запит
STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Не можна з'єднатись внаслідок неспівпадання NewGRF
STR_NETWORK_ERR_DESYNC :{WHITE} Помилка синхронізації з мережною грою
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} З'єднання втрачено
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Неможливо завантажити гру
STR_NETWORK_ERR_SERVER_START :{WHITE} Неможливо створити сервер
STR_NETWORK_ERR_CLIENT_START :{WHITE} Неможливо з'єднатися
STR_NETWORK_ERR_TIMEOUT :{WHITE} Тайм-аут з'єднання #{NUM}
STR_NETWORK_ERR_TIMEOUT :{WHITE} Таймаут з'єднання #{NUM}
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Помилка протоколу - з'єднання розірвано
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Версія клієнта не співпадає з версією сервера
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Версія кліента не співпадає з версією сервера
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Пароль невірний
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Сервер переповнений
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Вас відключено від цього серверу
@@ -1705,7 +1693,7 @@ STR_PNGMAP_ERR_FILE_NOT_FOUND :{WHITE}...фа
STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо конвертувати. треба 8 чи 24-bit PNG формат.
STR_PNGMAP_ERR_MISC :{WHITE}...Помилка. (можливо зіпсований файл)
STR_BMPMAP_ERROR :{WHITE}Не можу завантажити ландшафт з BMP...
STR_BMPMAP_ERROR :{WHITE}Не можу завантажити лашдшафт з BMP...
STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо перетворити тип зображення
##id 0x0800
@@ -1757,7 +1745,7 @@ STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Буду
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Будувати станцію
STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати сигнал
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати міст
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати тунель
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати туннель
STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будувати/демонтувати колію або сигнали
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Вибір мосту - натисніть на міст, який бажаєте збудувати
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Вибір орієнтації депо
@@ -1770,7 +1758,7 @@ STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Колія з
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Колія з комбо-сигналами
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Залізнична колія зі звичайним та пре-сигналами
STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Залізнична колія зі звичайним та вихід-сигналами
STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Колія зі звичайним і комбо-сигналами
STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Колія з нормальними і комбо-сигналами
STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Залізнична колія з пре- та вихід-сигналами
STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Колія з пре- і комбо-сигналами
STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Колія з вихідними і комбо-сигналами
@@ -1783,7 +1771,7 @@ STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Споч
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Дорога ремонтується
STR_1802_ROAD_CONSTRUCTION :{WHITE}Будівництво дороги
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Будівництво трамвайної колії
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Виберіть дорожній міст
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Виберіть дорожний міст
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... односторонні дороги не можуть перетинатись
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Неможливо тут побудувати дорогу ...
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Тут не можна побудувати трамвайну колію...
@@ -1824,7 +1812,7 @@ STR_1816_TREE_LINED_ROAD :Дорога з
STR_1817_ROAD_VEHICLE_DEPOT :Автомобільне депо
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Залізничний переїзд
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Не можна знести автобусну станцію...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не можна знести вантажну станцію...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не можна знести грузову станцію...
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Не можна знести пасажирську трамвайну станцію...
STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Не можна знести вантажну трамвайну станцію...
@@ -1975,14 +1963,14 @@ STR_3033_ACCEPTS :{BLACK}Прий
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Місцевий рейтинг транспортної компанії:
############ range for rating starts
STR_3035_APPALLING :жахливо
STR_3036_VERY_POOR :дуже погано
STR_3037_POOR :погано
STR_3038_MEDIOCRE :середньо
STR_3039_GOOD :добре
STR_303A_VERY_GOOD :дуже добре
STR_303B_EXCELLENT :відмінно
STR_303C_OUTSTANDING :найкраще
STR_3035_APPALLING :Жахливо
STR_3036_VERY_POOR :Дуже погано
STR_3037_POOR :Погано
STR_3038_MEDIOCRE :Середньо
STR_3039_GOOD :Добре
STR_303A_VERY_GOOD :Дуже добре
STR_303B_EXCELLENT :Відмінно
STR_303C_OUTSTANDING :Найкраще
############ range for rating ends
STR_303D :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
@@ -2033,10 +2021,10 @@ STR_3069_BUOY :Бакен
STR_306A_BUOY_IN_THE_WAY :{WHITE}...бакен на шляху
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...станція занадто велика
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неоднорідні станції відключені
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте CTRL для вибору декількох пунктів
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте CTRL для вибору більш ніж одного пункту
STR_UNDEFINED :(невизначено)
STR_STAT_CLASS_DFLT :Звичайна станція
STR_STAT_CLASS_DFLT :Default station
STR_STAT_CLASS_WAYP :Пункт
##id 0x3800
@@ -2178,7 +2166,7 @@ STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}{STRING}: проблеми з поставками незабаром призведуть до закриття!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Відсутність дерев поруч незабаром призведе {STRING} до закриття!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} збільшує виробництво!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Знайдені нові поклади вугілля на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Знайдені нові залежі вугілля на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Знайдені нові нафтові запаси на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Удосконалені сільськогосподарські методи на {INDUSTRY} збільшили виробництво вдвічі!
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}{INDUSTRY} виробництво впало на 50%
@@ -2198,7 +2186,7 @@ STR_5008_CANNOT_START_AND_END_ON :{WHITE}Поча
STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Кінці мостів на різних рівнях
STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунелю
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунеля
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
STR_500E_SUSPENSION_STEEL :Підвісний сталевий
STR_500F_GIRDER_STEEL :Балочний сталевий
@@ -2233,7 +2221,7 @@ STR_5801_TRANSMITTER :Ретранс
STR_5802_LIGHTHOUSE :Маяк
STR_5803_COMPANY_HEADQUARTERS :Головний офіс компанії
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...на шляху Головний офіс
STR_5805_COMPANY_OWNED_LAND :Ця ділянка - власність компанії
STR_5805_COMPANY_OWNED_LAND :Ця ділянка - власніcть компанії
STR_5806_CAN_T_PURCHASE_THIS_LAND :{WHITE}Неможливо купити цю ділянку ...
STR_5807_YOU_ALREADY_OWN_IT :{WHITE}...це вже ваша власність!
@@ -2300,7 +2288,7 @@ STR_6804_CUSTOM :{BLACK}Вибі
STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Кількість конкурентів: {ORANGE}{COMMA}
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Конкуренти починають через: {ORANGE}{STRING}
STR_6807_NO_OF_TOWNS :{LTBLUE}Кількість міст: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Кількість підприємств: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Кількість промисловостей: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Початковий кредит: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Відсотки за кредит: {ORANGE}{COMMA}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Транспортні витрати: {ORANGE}{STRING}
@@ -2378,15 +2366,15 @@ STR_700F_EXPENDITURE_INCOME :{WHITE}Витр
STR_7010 :{WHITE}{NUM}
STR_7011_CONSTRUCTION :{GOLD}Будівництво
STR_7012_NEW_VEHICLES :{GOLD}Нова техніка
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Витрати, поїзди
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Витрати, автомобілі
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Витрати, літаки
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Витрати, кораблі
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Поїзди: витрати
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Авто: витрати
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Літаки: витрати
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Кораблі: витрати
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Утримання власності
STR_7018_TRAIN_INCOME :{GOLD}Дохід, поїзди
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Дохід, автомобілі
STR_701A_AIRCRAFT_INCOME :{GOLD}Дохід, літаки
STR_701B_SHIP_INCOME :{GOLD}Дохід, кораблі
STR_7018_TRAIN_INCOME :{GOLD}Поїзди: дохід
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Авто: дохід
STR_701A_AIRCRAFT_INCOME :{GOLD}Літаки: дохід
STR_701B_SHIP_INCOME :{GOLD}Кораблі: дохід
STR_701C_LOAN_INTEREST :{GOLD}Відсотки за кредит
STR_701D_OTHER :{GOLD}Інше
STR_701E :{BLACK}-{CURRENCY}
@@ -2414,7 +2402,7 @@ STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Змін
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Зміна імені керівника
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Зміна назви компанії
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Натисніть на колір, який вам до вподоби
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Взяти кредит
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Збільшити розмір кредиту
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Виплатити частину кредиту
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Керівник)
STR_7038_INAUGURATED :{GOLD}Засновано у: {WHITE}{NUM} році
@@ -2438,13 +2426,13 @@ STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Пока
STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Ключ до графіків компанії
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Натисніть для вкл/викл окремого графіку компанії
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Доставка одиниці вантажу
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000)
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Рейтинг продуктивності компанії(найбільший рейтинг=1000)
STR_7052_COMPANY_VALUES :{WHITE}Вартість компанії
STR_7053_COMPANY_LEAGUE_TABLE :{WHITE}Таблиця компаній
STR_7054 :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
STR_7055 :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
STR_7056_TRANSPORT_COMPANY_IN_TROUBLE :{BLACK}{BIGFONT}Компанія у скруті!
STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED :{BLACK}{BIGFONT}{COMPANY} буде продано або оголошено банкрутом, якщо найближчим часом не зросте продуктивність!
STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED :{BLACK}{BIGFONT}{COMPANY} буде продано або оголошено банкрутом, якщо найблищим часом не зросте її продуктивність!
STR_7058_PRESIDENT :{BLACK}{PLAYERNAME}{}(Керівник)
STR_7059_TRANSPORT_COMPANY_MERGER :{BLACK}{BIGFONT}Компанії об'єдналися!
STR_705A_HAS_BEEN_SOLD_TO_FOR :{BLACK}{BIGFONT}{COMPANY} була викуплена {COMPANY} за {CURRENCY}!
@@ -2594,7 +2582,7 @@ STR_803C_OIL_TANKER :Цистерн
STR_803D_LIVESTOCK_VAN :вантажівка для тварин
STR_803E_GOODS_VAN :вантажівка для товарів
STR_803F_GRAIN_HOPPER :вагон для зерна
STR_8040_WOOD_TRUCK :лісовоз
STR_8040_WOOD_TRUCK :лісовіз
STR_8041_IRON_ORE_HOPPER :вагон для залізної руди
STR_8042_STEEL_TRUCK :вантажівка для сталі
STR_8043_ARMORED_VAN :броньоване авто
@@ -2626,7 +2614,7 @@ STR_805C_OIL_TANKER :нафтова
STR_805D_LIVESTOCK_VAN :вагон для худоби
STR_805E_GOODS_VAN :товарний вагон
STR_805F_GRAIN_HOPPER :вагон для зерна
STR_8060_WOOD_TRUCK :лісовоз
STR_8060_WOOD_TRUCK :лісовіз
STR_8061_IRON_ORE_HOPPER :вагон для залізної руди
STR_8062_STEEL_TRUCK :платформа для сталі
STR_8063_ARMORED_VAN :броньований вагон
@@ -2833,7 +2821,7 @@ STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Тех
STR_INVALID_ORDER :{RED} (Невірний наказ)
STR_UNKNOWN_DESTINATION :невідоме місце призначення
STR_UNKNOWN_DESTINATION :невідомий напрям
STR_8812_EMPTY :{LTBLUE}порожній
STR_8813_FROM :{LTBLUE}{CARGO} з {STATION}
STR_FROM_MULT :{LTBLUE}{CARGO} з {STATION} (x{NUM})
@@ -2845,7 +2833,7 @@ STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Поїз
STR_881B_TRAINS :{WHITE}{COMPANY} - {COMMA} поїзд{P "" и ів}
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Новий залізничний транспорт
STR_NEW_ELRAIL_VEHICLES :{WHITE}Новий електрозалізничний транспорт
STR_NEW_ELRAIL_VEHICLES :{WHITE}Нові елекричні потяги
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Новий монорельсовий транспорт
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Новий транспорт на магнітній подушці
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Потяги
@@ -2857,7 +2845,7 @@ STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Буду
STR_CLONE_TRAIN :{BLACK}Клонувати
STR_CLONE_TRAIN_INFO :{BLACK}Будувати копію поїзда з усіма вагонами. Утримуйте CTRL для спільного завдання
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Будувати копію поїзда з усіма вагонами. Натисніть на цю кнопку і потім на поїзд в депо або ззовні. Утримуйте CTRL для спільного завдання
STR_8820_RENAME :{BLACK}Назва
STR_8820_RENAME :{BLACK}Ім'я
STR_8823_SKIP :{BLACK}Пропуск
STR_8824_DELETE :{BLACK}Видалити
STR_8825_NON_STOP :{BLACK}Беззупн
@@ -2889,14 +2877,14 @@ STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не м
STR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ...
STR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Неможливо перемістити транспорт...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг буде завжди йти за переднім
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг зажди слідує follow its front counterpart!!!
STR_8838_N_A :немає{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Не можна продати поїзд...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Неможливо знайти маршрут до місцевого депо
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Не можна зупинити/стартувати поїзд...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA} днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для детальної інформації
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для детальної інформаціїї
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Будувати поїзд (потрібне залізничне депо)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для інформації, перетягніть для додавання/вилучення
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Будувати новий поїзд
@@ -2907,7 +2895,7 @@ STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Буду
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Перейменуйте тип транспорту
STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Діяльність поїзда - клікніть тут для його запуску/зупинення
STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Показати маршрут поїзда
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показати поїзд в центрі головного екрану
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показати поїзд в центрі головноuj екрану
STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Направити поїзд у депо
STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Ігнорувати червоне світло семафору!
STR_884B_REVERSE_DIRECTION_OF_TRAIN :{BLACK}Розвернути поїзд
@@ -2929,7 +2917,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Розк
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Очистити час для виділеного наказу
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Очистити лічильник запізнення, щоб транспорт встигнув
STR_SERVICE_HINT :{BLACK}Пропустити це завдання, доки не буде потрібне обслуговування
STR_SERVICE_HINT :{BLACK}Пропустити це завдання поки обслуговування потрібне!!!
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY} Вага: {WEIGHT_S}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY}/рік{}Місткість: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Зламався
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Транспортні витрати: {LTBLUE}{CURRENCY}/рік
@@ -2956,7 +2944,7 @@ STR_RESET_LATENESS :{BLACK}Очис
STR_TRAIN_STOPPING :{RED}Зупиняється
STR_TRAIN_STOPPING_VEL :{RED}Зупиняється, {VELOCITY}
STR_INCOMPATIBLE_RAIL_TYPES :Залізничні колій несумісні
STR_TRAIN_NO_POWER :{RED}Не електрифіковано
STR_TRAIN_NO_POWER :{RED}Неелектрифіковано
STR_TRAIN_START_NO_CATENARY :Нема електрики, поїзд стоїть
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Став доступним новий {STRING}!
@@ -2976,7 +2964,7 @@ STR_TIMETABLE_STATUS_EARLY :Цей тран
STR_TIMETABLE_TOTAL_TIME :Цей розклад займе ще {STRING}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Цей розклад займе якнайменше {STRING} (не все за розкладом)
STR_TIMETABLE_AUTOFILL :{BLACK}Автозаповнення
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично заповнювати розклад згiдно даних першої подорожі
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично заповнювати розклад згiдно з даними першої подорожі
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}На шляху авто
@@ -2998,10 +2986,10 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...ав
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Неможливо продати авто...
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Неможливо зупинити авто...
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Авто {COMMA} чекає в депо
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Прямує до {TOWN} дорожного депо
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Прямує до {TOWN} дорожного депо, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} дорожному депо
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} дорожному депо, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Прямує до {TOWN} депо
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Прямує до {TOWN} депо, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} дорожне депо
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} дорожне депо, {VELOCITY}
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Неможливо направити авто в депо...
STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Неможливо знайти місцеве депо
STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Авто - натисніть на авто для інформації
@@ -3050,7 +3038,7 @@ STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Обер
STR_9800_DOCK_CONSTRUCTION :Будувати порт
STR_9801_DOCK_CONSTRUCTION :{WHITE}Будівництво порту
STR_9802_CAN_T_BUILD_DOCK_HERE :{WHITE}Неможливо будувати порт тут...
STR_9803_SHIP_DEPOT :{WHITE}{TOWN} Док
STR_9803_SHIP_DEPOT :{WHITE}{TOWN} Корабельне депо
STR_9804_NEW_SHIPS :{BLACK}Нові кораблі
STR_9805_SHIPS :{WHITE}{COMPANY} - {COMMA} кораб{P ель лі лів}
STR_9808_NEW_SHIPS :{WHITE}Нові кораблі
@@ -3058,13 +3046,13 @@ STR_9809_BUILD_SHIP :{BLACK}Буду
STR_CLONE_SHIP :{BLACK}Клонувати
STR_CLONE_SHIP_INFO :{BLACK}Будувати копію корабля. Утримуйте CTRL для спільного завдання
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Будувати копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте CTRL для спільного завдання
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль має стояти в доці
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль має бути в депо
STR_980C_CAN_T_SELL_SHIP :{WHITE}Неможливо продати корабель...
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Неможливо будувати корабель...
STR_980E_SHIP_IN_THE_WAY :{WHITE}Корабель на шляху
STR_980F :{WHITE}{VEHICLE}
STR_9811_DETAILS :{WHITE}{VEHICLE} (Деталі)
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Транспортні витрати: {LTBLUE}{CURRENCY}/рік
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Траспортні витрати: {LTBLUE}{CURRENCY}/рік
STR_9813_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY}
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Прибуток цього року: {LTBLUE}{CURRENCY} (минулого року: {CURRENCY})
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Надійність: {LTBLUE}{COMMA}% {BLACK}Поломок після останнього техогляду: {LTBLUE}{COMMA}
@@ -3073,10 +3061,10 @@ STR_9817_CAPACITY :{BLACK}Міст
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Неможливо зупинити корабель...
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Неможливо направити корабель в депо...
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Неможливо знайти місцеве депо
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Прямує до {TOWN} корабельного депо
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Прямує до {TOWN} корабельного депо, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} корабельному депо
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} корабельному депо, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Прямує до {TOWN} депо
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Прямує до {TOWN} депо, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} корабельне депо
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} корабельне депо, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Корабель {COMMA} чекає в депо
STR_981D_BUILD_SHIP_DOCK :{BLACK}Будувати док
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Будувати корабельне депо
@@ -3120,7 +3108,7 @@ SERVICE_AT_SHIP_DEPOT :Ремонту
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Аеропорти
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Неможливо будувати аеропорт тут...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} ангар
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Ангар
STR_A003_NEW_AIRCRAFT :{BLACK}Новий літак
STR_CLONE_AIRCRAFT :{BLACK}Клонувати
STR_CLONE_AIRCRAFT_INFO :{BLACK}Будувати копію літака. Утримуйте CTRL для спільного завдання
@@ -3140,7 +3128,7 @@ STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Неможливо направити літак до ангару...
STR_HEADING_FOR_HANGAR :{ORANGE}Летить до {STATION} ангару
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Летить до {STATION} ангару, {VELOCITY}
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Техогляд в {STATION} ангарі
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Техогляд в {STATION} депо
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Техогляд в {STATION} ангарі, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Літак {COMMA} чекає в ангарі
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Літак на шляху
@@ -3193,14 +3181,14 @@ STR_TIMETABLE_TITLE :{WHITE}{VEHICLE
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Дирижабль впав на {STATION}!
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Автомобіль знищений внаслідок зіткнення з НЛО!
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Аварія!'НЛО' зіткнулось з авто!
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Вибухнув нафтопереробний завод біля міста {TOWN}!
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}За невідомих обставин зруйновано фабрику біля міста {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}НЛО приземлилось біля міста {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Зсув ґрунту внаслідок обвалу на вугільній шахті біля міста {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'НЛО' приземлилось біля міста {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Обвал на вугільній шахті призвів до зсуву грунту біля міста {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Повінь!{}Щонайменше {COMMA} зникло безвісти та загинуло!
STR_BRIBE_FAILED :{WHITE}Ваша спроба дати хабара була
STR_BRIBE_FAILED :{WHITE}Ваша спроба дати хабаря була
STR_BRIBE_FAILED_2 :{WHITE}викрита місцевим слідчим
STR_BUILD_DATE :{BLACK}Рік випуску: {LTBLUE}{DATE_LONG}
@@ -3228,7 +3216,7 @@ STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Приб
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Найменший місячний прибуток за останні 12 кварталів
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Найбільший місячний прибуток за останні 12 кварталів
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Кількість видів вантажу, доставлених за останній квартал
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Кількість видів вантажу, доствлених за останній квартал
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Сума коштів на рахунку компанії
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Сума кредиту, що надано компанії
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Загальна кількість балів
@@ -3240,7 +3228,7 @@ STR_NEWGRF_SET_PARAMETERS :{BLACK}Вста
STR_NEWGRF_TIP :{BLACK}Список усіх ваших установок нової графіки. Виберіть для налаштування
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Відсутні файли нової графіки! Прочитайте інструкцію по встановленню нової графіки
STR_NEWGRF_FILENAME :{BLACK}Ім'я файлу: {SILVER}{STRING}
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
STR_NEWGRF_GRF_ID :{BLACK}ID графіки: {SILVER}{STRING}
STR_NEWGRF_MD5SUM :{BLACK}MD5сума: {SILVER}{STRING}
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ви хочете зробити зміни у вже запущеній грі; це може привести до зависання OpenTTD.{}Ви впевнені що хочете зробити це?
@@ -3249,7 +3237,7 @@ STR_NEWGRF_ERROR_MSG_WARNING :{RED}Попер
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Помилка: {SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Збій: {SILVER}{STRING}
STR_NEWGRF_ERROR_VERSION_NUMBER :{STRING} не буде працювати з версією TTDPatch, вказаною OpenTTD.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{STRING} для {STRING}-версії TTD.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{STRING} для {STRING} вірсії TTD.
STR_NEWGRF_ERROR_UNSET_SWITCH :{STRING} розроблено для {STRING}
STR_NEWGRF_ERROR_INVALID_PARAMETER :Помилковий параметр для {STRING}: параметр {STRING} ({NUM})
STR_NEWGRF_ERROR_LOAD_BEFORE :{STRING} має бути завантажений до {STRING}.
@@ -3266,17 +3254,17 @@ STR_NEWGRF_MOVEUP :{BLACK}Вище
STR_NEWGRF_MOVEUP_TIP :{BLACK}Перемістити вибрані файли вверх по списку
STR_NEWGRF_MOVEDOWN :{BLACK}Нижче
STR_NEWGRF_MOVEDOWN_TIP :{BLACK}Перемістити вибрані файли вниз по списку
STR_NEWGRF_FILE_TIP :{BLACK}Список встановлених NewGRF файлів. Клікніть на файлі, щоб змінити його параметри
STR_NEWGRF_FILE_TIP :{BLACK}Список встановлених NewGRF файлів. Кслікніть на файлі щоб змінити його параметри
STR_NEWGRF_PARAMETER :{BLACK}Параметри: {SILVER}{STRING}
STR_NEWGRF_PARAMETER_QUERY :{BLACK}Введіть параметри NewGRF
STR_NEWGRF_PARAMETER_QUERY :{BLACK}ВведітьNewGRF параметри
STR_NEWGRF_NO_INFO :{BLACK}Немає доступної інформації
STR_NEWGRF_ADD_CAPTION :{WHITE}Доступні NewGRF файли
STR_NEWGRF_ADD_FILE :{BLACK}Додати файл
STR_NEWGRF_ADD_FILE_TIP :{BLACK}Додати вибраний NewGRF файл до Вашої конфігурації
STR_NEWGRF_RESCAN_FILES :{BLACK}Пересканувати файли
STR_NEWGRF_RESCAN_FILES :{BLACK}Переглянути файли
STR_NEWGRF_RESCAN_FILES_TIP :{BLACK}Оновити список доступних NewGRF файлів
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: однакові GRF ID
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: дублювання GRF ID
STR_NEWGRF_NOT_FOUND :{RED}Таких файлів не знайдено
STR_NEWGRF_DISABLED :{RED}Вимкнено
@@ -3334,12 +3322,12 @@ STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Отри
STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Оновити всі поїзди в депо
STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Оновити всі автомобілі в депо
STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}Оновити всі кораблі в депо
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Оновити всі літаки в ангарі
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Оновити всі літаки в депо
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} поїзд{P "" и ів}
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} автомобіл{P ь і ів}
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} кораб{P ель лі лів}
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} літак {P "" и ів}
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Поїзд{P "" и ів}
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Авто {P "" "" ""}
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} Кораб{P ель лі лів}
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Аеропорт
STR_REPLACE_VEHICLES_WHITE :{WHITE}Оновити {STRING}
STR_REPLACE_VEHICLES_START :{BLACK}Почати оновлення
@@ -3348,13 +3336,13 @@ STR_NOT_REPLACING :{BLACK}Не м
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Не вибрано машину
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Виберіть транспорт для оновлення
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Виберіть новий транспорт, яким ви бажаєте замінити старий
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натисніть для припинення процесу оновлення потягів, що вибрані ліворуч
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч, на потяги, що вибрані праворуч
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натисніть для припинення процесу оновлення потягів що вибрані ліворуч
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч на потяги що вибрані праворуч
STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якої Ви хочете оновити потяг
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує, яким потягом буде замінено потяг, вибраний ліворуч
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує на який потяг буде замінено потяг, зображелий ліворуч
STR_REPLACE_HELP :{BLACK}Це дозволить Вам оновити одні види потягів іншими, коли потяг прибуде в депо
STR_REPLACE_REMOVE_WAGON :{BLACK}Продаж вагонів: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозволити автооновленню видаляти вагони, зберігаючи довжину потягу (починаючи спереду), якщо оновлення робить поїзд довшим.
STR_REPLACE_REMOVE_WAGON :{BLACK}Продаж вагонів!!!: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозволити автооновленню видаляти вагони зберігаючи довжину потягу(починаючи спереду), якщо оновлення робить поїзд довшим.
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Оновлення: {ORANGE}{SKIP}{SKIP}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} ЕКСПЕРИМЕНТАЛЬНО {}Переключення між вікнами заміни потягів та вагонів.{}Автозаміна потягів відбудеться лише в тому випадку, якщо співпаде тип вантажу що перевозиться. Ця перевірка проводиться для кожного вагону під час автозаміни.
STR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Поїзд недоступний
@@ -3444,7 +3432,7 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Заве
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Розміри дуже великі. Продовжити генерацію?
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Попередження про схему міста
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Схема міста "не треба більше доріг" небажана. Продовжити генерацію?
STR_HEIGHTMAP_NAME :{BLACK}Назва рельєфу:
STR_HEIGHTMAP_NAME :{BLACK}Ім'я рельєфа:
STR_HEIGHTMAP_SIZE :{BLACK}Розмір: {ORANGE}{NUM} x {NUM}
STR_GENERATION_WORLD :{WHITE}Генерація світу...
STR_GENERATION_ABORT :{BLACK}Перервати
@@ -3510,13 +3498,12 @@ STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...до
STR_TRANSPARENCY_TOOLB :{WHITE}Опції прозорості
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Переключити прозорість для знаків станцій
STR_TRANSPARENT_TREES_DESC :{BLACK}Переключити прозорість для дерев
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Переключити прозорість для будинків. CTRL+click - запам'ятати
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Переключити прозорість для промисловості. CTRL+click - запам'ятати
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Переключити прозорість для споруд, таких як станції, депо тощо. CTRL+click - запам'ятати
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Переключити прозорість для мостів. CTRL+click - запам'ятати
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Переключити прозорість для споруд, таких як маяки та антени. CTRL+click - запам'ятати
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Переключити прозорість для ЛЕП. CTRL+click - запам'ятати
STR_TRANSPARENT_LOADING_DESC :{BLACK}Змінити прозорість індикаторів завантаження. CTRL+click - запам'ятати
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Переключити прозорість для будинків
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Переключити прозорість для промисловості
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Переключити прозорість для споруд, таких як станції, депо, ЛЕП тощо
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Переключити прозорість для мостів
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Переключити прозорість для споруд, таких як маяки та антенни (може, потім)
STR_TRANSPARENT_LOADING_DESC :{BLACK}Змінити прозорість індикаторів завантаження
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
@@ -3567,7 +3554,7 @@ STR_PLAYER_NAME :{PLAYERNAME}
STR_SIGN_NAME :{SIGN}
STR_VEHICLE_NAME :{VEHICLE}
STR_NAME_MUST_BE_UNIQUE :{WHITE}Назва має бути унікальною
STR_NAME_MUST_BE_UNIQUE :{WHITE}Ім'я має бути унікальним
#### Improved sign GUI
STR_NEXT_SIGN_TOOLTIP :{BLACK}Наступне позначення
@@ -3630,7 +3617,7 @@ STR_FACE_TIE_EARRING_TIP :{BLACK}Змін
############ signal GUI
STR_SIGNAL_SELECTION :{WHITE}Вибір сигналів
STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Не можна конвертувати сигнали тут...
STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Не можна сконвертувати сигнали тут...
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP :{BLACK}Звичайний сигнал (семафор){}Сигнали необхідні для того, щоб уникнути зіткнень поїздів на залізницях, де більше одного поїзда.
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TIP :{BLACK}Вхідний сигнал (семафор){}Зелений, доки є один або більше зелених вихідних сигналів з наступної секції колії. Якщо нема - червоний.
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TIP :{BLACK}Вихідний сигнал (семафор){}Поводиться, як звичайний сигнал, але необхідний для нормальної роботи вхідного або комбінованого сигналів.
+2 -2
View File
@@ -977,8 +977,8 @@ static void ToolbarOptionsClick(Window *w)
if (HasBit(_display_opt, DO_WAYPOINTS)) SetBit(x, 9);
if (HasBit(_display_opt, DO_FULL_ANIMATION)) SetBit(x, 10);
if (HasBit(_display_opt, DO_FULL_DETAIL)) SetBit(x, 11);
if (IsTransparencySet(TO_HOUSES)) SetBit(x, 12);
if (IsTransparencySet(TO_SIGNS)) SetBit(x, 13);
if (IsTransparencySet(TO_HOUSES) && IsTransparencySet(TO_TREES)) SetBit(x, 12);
if (IsTransparencySet(TO_SIGNS)) SetBit(x, 13);
WP(w, menu_d).checked_items = x;
}
+3 -3
View File
@@ -314,11 +314,11 @@ CommandCost CmdPause(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
_pause_game += (p1 == 0) ? -1 : 1;
switch (_pause_game) {
case -4:
case -1:
case (byte)-4:
case (byte)-1:
_pause_game = 0;
break;
case -3:
case (byte)-3:
ShowQuery(
STR_NEWGRF_UNPAUSE_WARNING_TITLE,
STR_NEWGRF_UNPAUSE_WARNING,
+2 -3
View File
@@ -219,7 +219,6 @@ static const char *credits[] = {
" Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
" Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
" Loïc Guilloux (glx) - General coding",
" Christoph Elsenhans (frosch) - General coding",
" Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
" Jonathan Coome (Maedhros) - High priest of the newGRF Temple",
" Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host",
@@ -1634,7 +1633,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
case WE_DESTROY:
/* pause is only used in single-player, non-editor mode, non menu mode */
if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
if (_pause_game >= 0) DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
}
FiosFreeSavegameList();
ClrBit(_no_scroll, SCROLL_SAVE);
@@ -1726,7 +1725,7 @@ void ShowSaveLoadDialog(SaveLoadDialogMode mode)
/* pause is only used in single-player, non-editor mode, non-menu mode. It
* will be unpaused in the WE_DESTROY event handler. */
if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) {
if (_pause_game >= 0) DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
}
BuildFileList();
+26 -69
View File
@@ -244,24 +244,13 @@ StringID MapGRFStringID(uint32 grfid, StringID str)
STR_BAGS, STR_LITERS, STR_TONS, STR_NOTHING,
STR_TONS, STR_NOTHING, STR_LITERS, STR_NOTHING
};
/* 0xD0 and 0xDC stand for all the TextIDs in the range
* of 0xD000 (misc graphics texts) and 0xDC00 (misc persistent texts).
* These strings are unique to each grf file, and thus require to be used with the
* grfid in which they are declared */
switch (GB(str, 8, 8)) {
case 0xD0: case 0xD1: case 0xD2: case 0xD3:
case 0xDC:
return GetGRFStringID(grfid, str);
case 0xD4: case 0xD5: case 0xD6: case 0xD7:
/* Strings embedded via 0x81 have 0x400 added to them (no real
* explanation why...) */
return GetGRFStringID(grfid, str - 0x400);
default: break;
if (GB(str, 8, 8) == 0xD0 || GB(str, 8, 8) == 0xDC) {
return GetGRFStringID(grfid, str);
}
#define TEXID_TO_STRINGID(begin, end, stringid) if (str >= begin && str <= end) return str + (stringid - begin)
/* We have some changes in our cargo strings, resulting in some missing. */
TEXID_TO_STRINGID(0x000E, 0x002D, STR_000E);
@@ -388,22 +377,20 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
if (rvi->railveh_type == RAILVEH_MULTIHEAD) runcostfact /= 2;
rvi->running_cost = runcostfact;
rvi->running_cost_base = runcostfact;
} break;
case 0x0E: { // Running cost base
uint32 base = grf_load_dword(&buf);
/* These magic numbers are used in GRFs to specify the base cost:
* http://wiki.ttdpatch.net/tiki-index.php?page=BaseCosts
*/
if (base == 0) {
rvi->running_cost_class = 0xFF;
} else if (base < 0x4B34 || base > 0x4C54 || (base - 0x4B34) % 6 != 0) {
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
} else {
/* Convert the magic number to an index into the price data */
rvi->running_cost_class = (base - 0x4B34) / 6;
switch (base) {
case 0x4C30: rvi->running_cost_class = 0; break;
case 0x4C36: rvi->running_cost_class = 1; break;
case 0x4C3C: rvi->running_cost_class = 2; break;
case 0: break; // Used by wagons
default:
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
break;
}
} break;
@@ -424,14 +411,14 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
if (rvi->railveh_type != RAILVEH_MULTIHEAD) {
// adjust power and running cost if needed
rvi->power /= 2;
rvi->running_cost /= 2;
rvi->running_cost_base /= 2;
}
rvi->railveh_type = RAILVEH_MULTIHEAD;
} else {
if (rvi->railveh_type == RAILVEH_MULTIHEAD) {
// adjust power and running cost if needed
rvi->power *= 2;
rvi->running_cost *= 2;
rvi->running_cost_base *= 2;
}
rvi->railveh_type = rvi->power == 0 ?
RAILVEH_WAGON : RAILVEH_SINGLEHEAD;
@@ -607,23 +594,12 @@ static bool RoadVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
rvi->running_cost = grf_load_byte(&buf);
break;
case 0x0A: { // Running cost base
uint32 base= grf_load_dword(&buf);
/* These magic numbers are used in GRFs to specify the base cost:
* http://wiki.ttdpatch.net/tiki-index.php?page=BaseCosts
*/
if (base == 0) {
rvi->running_cost_class = 0xFF;
} else if (base < 0x4B34 || base > 0x4C54 || (base - 0x4B34) % 6 != 0) {
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
} else {
/* Convert the magic number to an index into the price data */
rvi->running_cost_class = (base - 0x4B34) / 6;
}
case 0x0A: // Running cost base
/** @todo : I have no idea. --pasky
* I THINK it is used for overriding the base cost of all road vehicle (_price.roadveh_base) --belugas */
grf_load_dword(&buf);
ret = true;
break;
}
case 0x0E: { // Sprite ID
uint8 spriteid = grf_load_byte(&buf);
@@ -3253,9 +3229,6 @@ static void FeatureNewName(byte *buf, int len)
break;
case 0xD0:
case 0xD1:
case 0xD2:
case 0xD3:
case 0xDC:
AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, STR_UNDEFINED);
break;
@@ -3859,12 +3832,12 @@ static void ScanInfo(byte *buf, int len)
len -= 6;
const char *name = grf_load_string(&buf, len);
_cur_grfconfig->name = TranslateTTDPatchCodes(grfid, name);
_cur_grfconfig->name = TranslateTTDPatchCodes(name);
len -= strlen(name) + 1;
if (len > 0) {
const char *info = grf_load_string(&buf, len);
_cur_grfconfig->info = TranslateTTDPatchCodes(grfid, info);
_cur_grfconfig->info = TranslateTTDPatchCodes(info);
}
/* GLS_INFOSCAN only looks for the action 8, so we can skip the rest of the file */
@@ -4034,7 +4007,7 @@ static void GRFLoadError(byte *buf, int len)
const char *message = grf_load_string(&buf, len);
len -= (strlen(message) + 1);
error->custom_message = TranslateTTDPatchCodes(_cur_grffile->grfid, message);
error->custom_message = TranslateTTDPatchCodes(message);
} else {
error->message = msgstr[message_id];
}
@@ -4043,7 +4016,7 @@ static void GRFLoadError(byte *buf, int len)
const char *data = grf_load_string(&buf, len);
len -= (strlen(data) + 1);
error->data = TranslateTTDPatchCodes(_cur_grffile->grfid, data);
error->data = TranslateTTDPatchCodes(data);
}
/* Only two parameter numbers can be used in the string. */
@@ -4105,18 +4078,8 @@ static uint32 GetPatchVariable(uint8 param)
/* empty wagon speed increase */
case 0x0F: return 0;
/* plane speed factor; our patch option is reversed from TTDPatch's,
* the following is good for 1x, 2x and 4x (most common?) and...
* well not really for 3x. */
case 0x10:
switch (_patches.plane_speed) {
default:
case 4: return 1;
case 3: return 2;
case 2: return 2;
case 1: return 4;
}
/* plane speed factor */
case 0x10: return 4;
/* 2CC colormap base sprite */
case 0x11: return SPR_2CCMAP_BASE;
@@ -4558,7 +4521,7 @@ static void FeatureTownName(byte *buf, int len)
if (!check_length(len, 1, "FeatureTownName: style name")) return;
const char *name = grf_load_string(&buf, len);
len -= strlen(name) + 1;
grfmsg(6, "FeatureTownName: lang 0x%X -> '%s'", lang, TranslateTTDPatchCodes(grfid, name));
grfmsg(6, "FeatureTownName: lang 0x%X -> '%s'", lang, TranslateTTDPatchCodes(name));
townname->name[nb_gen] = AddGRFString(grfid, id, lang, new_scheme, name, STR_UNDEFINED);
@@ -4611,7 +4574,7 @@ static void FeatureTownName(byte *buf, int len)
} else {
const char *text = grf_load_string(&buf, len);
len -= strlen(text) + 1;
townname->partlist[id][i].parts[j].data.text = TranslateTTDPatchCodes(grfid, text);
townname->partlist[id][i].parts[j].data.text = TranslateTTDPatchCodes(text);
grfmsg(6, "FeatureTownName: part %d, text %d, '%s' (with probability %d)", i, j, townname->partlist[id][i].parts[j].data.text, prob);
}
townname->partlist[id][i].parts[j].prob = prob;
@@ -5853,12 +5816,6 @@ void LoadNewGRF(uint load_index, uint file_index)
* in each loading stage, (try to) open each file specified in the config
* and load information from it. */
for (GrfLoadingStage stage = GLS_LABELSCAN; stage <= GLS_ACTIVATION; stage++) {
/* Set activated grfs back to will-be-activated between reservation- and activation-stage.
* This ensures that action7/9 conditions 0x06 - 0x0A work correctly. */
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
if (c->status == GCS_ACTIVATED) c->status = GCS_INITIALISED;
}
uint slot = file_index;
_cur_stage = stage;
-2
View File
@@ -128,6 +128,4 @@ void CDECL grfmsg(int severity, const char *str, ...);
bool HasGrfMiscBit(GrfMiscBit bit);
bool GetGlobalVariable(byte param, uint32 *value);
StringID MapGRFStringID(uint32 grfid, StringID str);
#endif /* NEWGRF_H */
+14 -22
View File
@@ -23,8 +23,6 @@
#include "vehicle_func.h"
#include "core/random_func.hpp"
#include "direction_func.h"
#include "rail_map.h"
#include "rail.h"
int _traininfo_vehicle_pitch = 0;
@@ -514,13 +512,12 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
memset(common_subtypes, 0, sizeof(common_subtypes));
for (u = v; u != NULL; u = u->Next()) {
if (v->type == VEH_TRAIN) user_def_data |= u->u.rail.user_def_data;
/* Skip empty engines */
if (u->cargo_cap == 0) continue;
cargo_classes |= GetCargo(u->cargo_type)->classes;
common_cargos[u->cargo_type]++;
if (v->type == VEH_TRAIN) user_def_data |= u->u.rail.user_def_data;
common_subtypes[u->cargo_subtype]++;
}
@@ -626,17 +623,12 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
case 0xFF: {
uint16 modflags = 0;
if (v->type == VEH_TRAIN) {
const Vehicle *u = IsTrainWagon(v) && HasBit(v->vehicle_flags, VRF_POWEREDWAGON) ? v->First() : v;
RailType railtype = GetRailType(v->tile);
bool powered = IsTrainEngine(v) || (IsTrainWagon(v) && HasBit(v->vehicle_flags, VRF_POWEREDWAGON));
bool has_power = powered && HasPowerOnRail(u->u.rail.railtype, railtype);
bool is_electric = powered && u->u.rail.railtype == RAILTYPE_ELECTRIC;
/* @todo: There are some other bits that should be implemented:
* bit 5: Whether the rail vehicle is powered or not (mostly useful for wagons).
* bit 6: This is an electrically powered rail vehicle which is running on normal rail.
* bit 8: (Maybe?) Toggled whenever the train reverses.
*/
if (has_power) SetBit(modflags, 5);
if (is_electric && !has_power) SetBit(modflags, 6);
if (HasBit(v->u.rail.flags, VRF_TOGGLE_REVERSE)) SetBit(modflags, 8);
}
if (HasBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE)) SetBit(modflags, 10);
return variable == 0xFE ? modflags : GB(modflags, 8, 8);
@@ -702,14 +694,14 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
case 0x4F: return GB(v->reliability, 8, 8);
case 0x50: return v->reliability_spd_dec;
case 0x51: return GB(v->reliability_spd_dec, 8, 8);
case 0x52: return ClampToI32(v->GetDisplayProfitThisYear());
case 0x53: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 8, 24);
case 0x54: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 16, 16);
case 0x55: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 24, 8);
case 0x56: return ClampToI32(v->GetDisplayProfitLastYear());
case 0x57: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 8, 24);
case 0x58: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 16, 16);
case 0x59: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 24, 8);
case 0x52: return ClampToI32(v->profit_this_year >> 8);
case 0x53: return GB(ClampToI32(v->profit_this_year >> 8), 8, 24);
case 0x54: return GB(ClampToI32(v->profit_this_year >> 8), 16, 16);
case 0x55: return GB(ClampToI32(v->profit_this_year >> 8), 24, 8);
case 0x56: return ClampToI32(v->profit_last_year >> 8);
case 0x57: return GB(ClampToI32(v->profit_last_year >> 8), 8, 24);
case 0x58: return GB(ClampToI32(v->profit_last_year >> 8), 16, 16);
case 0x59: return GB(ClampToI32(v->profit_last_year >> 8), 24, 8);
case 0x5A: return v->Next() == NULL ? INVALID_VEHICLE : v->Next()->index;
case 0x5C: return ClampToI32(v->value);
case 0x5D: return GB(ClampToI32(v->value), 8, 24);
+3 -3
View File
@@ -352,14 +352,14 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
case 0xA6: return industry->type;
case 0xA7: return industry->founder;
case 0xA8: return industry->random_color;
case 0xA9: return Clamp(industry->last_prod_year - ORIGINAL_BASE_YEAR, 0, 255);
case 0xA9: return Clamp(0, industry->last_prod_year - ORIGINAL_BASE_YEAR, 255);
case 0xAA: return industry->counter;
case 0xAB: return GB(industry->counter, 8, 8);
case 0xAC: return industry->was_cargo_delivered;
case 0xB0: return Clamp(industry->construction_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Date when built since 1920 (in days)
case 0xB0: return Clamp(0, industry->construction_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 65535); // Date when built since 1920 (in days)
case 0xB3: return industry->construction_type; // Construction type
case 0xB4: return Clamp(industry->last_cargo_accepted_at - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Date last cargo accepted since 1920 (in days)
case 0xB4: return Clamp(0, industry->last_cargo_accepted_at - DAYS_TILL_ORIGINAL_BASE_YEAR, 65535); // Date last cargo accepted since 1920 (in days)
}
DEBUG(grf, 1, "Unhandled industry property 0x%X", variable);
+3 -3
View File
@@ -291,13 +291,13 @@ static uint32 GetRailContinuationInfo(TileIndex tile)
uint i;
for (i = 0; i < lengthof(x_dir); i++, dir++, diagdir++) {
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0));
if (trackbits != TRACK_BIT_NONE) {
uint32 ts = GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0);
if (ts != 0) {
/* If there is any track on the tile, set the bit in the second byte */
SetBit(res, i + 8);
/* If any track reaches our exit direction, set the bit in the lower byte */
if (trackbits & DiagdirReachesTracks(*diagdir)) SetBit(res, i);
if (ts & DiagdirReachesTracks(*diagdir)) SetBit(res, i);
}
}
+3 -3
View File
@@ -192,7 +192,7 @@ static GRFTextEntry _grf_text[(1 << TABSIZE) * 3];
static byte _currentLangID = GRFLX_ENGLISH; ///< by default, english is used.
char *TranslateTTDPatchCodes(uint32 grfid, const char *str)
char *TranslateTTDPatchCodes(const char *str)
{
char *tmp = MallocT<char>(strlen(str) * 10 + 1); // Allocate space to allow for expansion
char *d = tmp;
@@ -241,7 +241,7 @@ char *TranslateTTDPatchCodes(uint32 grfid, const char *str)
string = *str++;
string |= *str++ << 8;
d += Utf8Encode(d, SCC_STRING_ID);
d += Utf8Encode(d, MapGRFStringID(grfid, string));
d += Utf8Encode(d, string);
break;
}
case 0x82:
@@ -345,7 +345,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne
/* Too many strings allocated, return empty */
if (id == lengthof(_grf_text)) return STR_EMPTY;
translatedtext = TranslateTTDPatchCodes(grfid, text_to_add);
translatedtext = TranslateTTDPatchCodes(text_to_add);
GRFText *newtext = GRFText::New(langid_to_add, translatedtext);
+1 -1
View File
@@ -11,7 +11,7 @@ StringID GetGRFStringID(uint32 grfid, uint16 stringid);
const char *GetGRFStringPtr(uint16 stringid);
void CleanUpStrings();
void SetCurrentGrfLangID(const char *iso_name);
char *TranslateTTDPatchCodes(uint32 grfid, const char *str);
char *TranslateTTDPatchCodes(const char *str);
bool CheckGrfLangID(byte lang_id, byte grf_version);
+25 -34
View File
@@ -7,7 +7,6 @@
#include "settings_type.h"
#include "debug.h"
#include "core/bitmath_func.hpp"
#include "core/math_func.hpp"
#include "town.h"
/** This function implements the town variables that newGRF defines.
@@ -31,8 +30,8 @@ uint32 TownGetVariable(byte variable, byte parameter, bool *available, const Tow
/* Town properties */
case 0x80: return t->xy;
case 0x81: return GB(t->xy, 8, 8);
case 0x82: return ClampToU16(t->population);
case 0x83: return GB(ClampToU16(t->population), 8, 8);
case 0x82: return t->population;
case 0x83: return GB(t->population, 8, 8);
case 0x8A: return t->grow_counter;
case 0x92: return t->flags12; // In original game, 0x92 and 0x93 are really one word. Since flags12 is a byte, this is to adjust
case 0x93: return 0;
@@ -47,41 +46,33 @@ uint32 TownGetVariable(byte variable, byte parameter, bool *available, const Tow
case 0x9C: return t->radius[4];
case 0x9D: return GB(t->radius[4], 8, 8);
case 0x9E: return t->ratings[0];
case 0x9F: return GB(t->ratings[0], 8, 8);
case 0xA0: return t->ratings[1];
case 0xA1: return GB(t->ratings[1], 8, 8);
case 0xA2: return t->ratings[2];
case 0xA3: return GB(t->ratings[2], 8, 8);
case 0xA4: return t->ratings[3];
case 0xA5: return GB(t->ratings[3], 8, 8);
case 0xA6: return t->ratings[4];
case 0xA7: return GB(t->ratings[4], 8, 8);
case 0xA8: return t->ratings[5];
case 0xA9: return GB(t->ratings[5], 8, 8);
case 0xAA: return t->ratings[6];
case 0xAB: return GB(t->ratings[6], 8, 8);
case 0xAC: return t->ratings[7];
case 0xAD: return GB(t->ratings[7], 8, 8);
case 0x9F: return t->ratings[1];
case 0xA0: return t->ratings[2];
case 0xA1: return t->ratings[3];
case 0xA2: return t->ratings[4];
case 0xA3: return t->ratings[5];
case 0xA4: return t->ratings[6];
case 0xA5: return t->ratings[7];
case 0xAE: return t->have_ratings;
case 0xB2: return t->statues;
case 0xB6: return t->num_houses;
case 0xB9: return t->growth_rate;
case 0xBA: return ClampToU16(t->new_max_pass);
case 0xBB: return GB(ClampToU16(t->new_max_pass), 8, 8);
case 0xBC: return ClampToU16(t->new_max_mail);
case 0xBD: return GB(ClampToU16(t->new_max_mail), 8, 8);
case 0xBE: return ClampToU16(t->new_act_pass);
case 0xBF: return GB(ClampToU16(t->new_act_pass), 8, 8);
case 0xC0: return ClampToU16(t->new_act_mail);
case 0xC1: return GB(ClampToU16(t->new_act_mail), 8, 8);
case 0xC2: return ClampToU16(t->max_pass);
case 0xC3: return GB(ClampToU16(t->max_pass), 8, 8);
case 0xC4: return ClampToU16(t->max_mail);
case 0xC5: return GB(ClampToU16(t->max_mail), 8, 8);
case 0xC6: return ClampToU16(t->act_pass);
case 0xC7: return GB(ClampToU16(t->act_pass), 8, 8);
case 0xC8: return ClampToU16(t->act_mail);
case 0xC9: return GB(ClampToU16(t->act_mail), 8, 8);
case 0xBA: return t->new_max_pass;
case 0xBB: return GB(t->new_max_pass, 8, 8);
case 0xBC: return t->new_max_mail;
case 0xBD: return GB(t->new_max_mail, 8, 8);
case 0xBE: return t->new_act_pass;
case 0xBF: return GB(t->new_act_pass, 8, 8);
case 0xC0: return t->new_act_mail;
case 0xC1: return GB(t->new_act_mail, 8, 8);
case 0xC2: return t->max_pass;
case 0xC3: return GB(t->max_pass, 8, 8);
case 0xC4: return t->max_mail;
case 0xC5: return GB(t->max_mail, 8, 8);
case 0xC6: return t->act_pass;
case 0xC7: return GB(t->act_pass, 8, 8);
case 0xC8: return t->act_mail;
case 0xC9: return GB(t->act_mail, 8, 8);
case 0xCA: return t->pct_pass_transported;
case 0xCB: return t->pct_mail_transported;
case 0xCC: return t->new_act_food;
+2 -1
View File
@@ -607,7 +607,8 @@ static bool CanEnterTile(TileIndex tile, DiagDirection dir, TransportType type,
*/
static TrackdirBits GetDriveableTrackdirBits(TileIndex dst_tile, Trackdir src_trackdir, TransportType type, uint subtype)
{
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(GetTileTrackStatus(dst_tile, type, subtype));
uint32 ts = GetTileTrackStatus(dst_tile, type, subtype);
TrackdirBits trackdirbits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
if (trackdirbits == 0 && type == TRANSPORT_ROAD && HasBit(subtype, ROADTYPE_TRAM)) {
/* GetTileTrackStatus() returns 0 for single tram bits.
+3 -5
View File
@@ -816,9 +816,9 @@ bool SafeSaveOrLoad(const char *filename, int mode, int newgm, Subdirectory subd
case SL_REINIT:
switch (ogm) {
default:
case GM_MENU: LoadIntroGame(); break;
case GM_EDITOR: MakeNewEditorWorld(); break;
default: MakeNewGame(false); break;
}
return false;
@@ -1399,7 +1399,7 @@ bool AfterLoadGame()
switch (gcf_res) {
case GLC_COMPATIBLE: _switch_mode_errorstr = STR_NEWGRF_COMPATIBLE_LOAD_WARNING; break;
case GLC_NOT_FOUND: _switch_mode_errorstr = STR_NEWGRF_DISABLED_WARNING; _pause_game = -1; break;
case GLC_NOT_FOUND: _switch_mode_errorstr = STR_NEWGRF_DISABLED_WARNING; _pause_game = (byte)-1; break;
default: break;
}
@@ -2364,9 +2364,7 @@ bool AfterLoadGame()
if (CheckSavegameVersion(87)) {
for (TileIndex t = 0; t < map_size; t++) {
/* skip oil rigs at borders! */
if ((IsTileType(t, MP_WATER) || IsBuoyTile(t)) &&
(TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1)) {
if (!IsTileType(t, MP_VOID) && (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1)) {
/* Some version 86 savegames have wrong water class at map borders (under buoy, or after removing buoy).
* This conversion has to be done before buoys with invalid owner are removed. */
SetWaterClass(t, WATER_CLASS_SEA);
+1 -1
View File
@@ -156,6 +156,6 @@ void OTTD_SendThreadMessage(ThreadMsg msg);
extern byte _game_mode;
extern bool _exit_game;
extern int8 _pause_game;
extern byte _pause_game;
#endif /* OPENTTD_H */
-1
View File
@@ -126,7 +126,6 @@ struct BackuppedOrders {
VehicleID clone;
VehicleOrderID orderindex;
GroupID group;
Order *order;
uint16 service_interval;
char *name;
+1 -13
View File
@@ -933,7 +933,6 @@ void BackupVehicleOrders(const Vehicle *v, BackuppedOrders *bak)
/* Save general info */
bak->orderindex = v->cur_order_index;
bak->group = v->group_id;
bak->service_interval = v->service_interval;
if (v->name != NULL) bak->name = strdup(v->name);
@@ -993,24 +992,13 @@ void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *bak)
* fails in test mode. By bypassing the test-mode, that no longer is a problem. */
for (uint i = 0; bak->order[i].IsValid(); i++) {
if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL,
CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK)) {
CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))
break;
}
/* Copy timetable */
if (!DoCommandP(0, v->index | (i << 16) | (1 << 25),
bak->order[i].wait_time << 16 | bak->order[i].travel_time, NULL,
CMD_CHANGE_TIMETABLE | CMD_NO_TEST_IF_IN_NETWORK)) {
break;
}
}
}
/* Restore vehicle order-index and service interval */
DoCommandP(0, v->index, bak->orderindex | (bak->service_interval << 16) , NULL, CMD_RESTORE_ORDER_INDEX);
/* Restore vehicle group */
DoCommandP(0, bak->group, v->index, NULL, CMD_ADD_VEHICLE_GROUP);
}
/** Restore the current order-index of a vehicle and sets service-interval.
+2 -2
View File
@@ -66,8 +66,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,12338
PRODUCTVERSION 0,6,0,12338
FILEVERSION 0,6,0,12182
PRODUCTVERSION 0,6,0,12182
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
+49 -20
View File
@@ -140,6 +140,7 @@ static const byte _otherdir_mask[4] = {
static void TPFMode2(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction)
{
uint bits;
RememberData rd;
assert(tpf->tracktype == TRANSPORT_WATER);
@@ -152,35 +153,43 @@ static void TPFMode2(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
if (++tpf->rd.cur_length > 50)
return;
TrackStatus ts = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
TrackBits bits = (TrackBits)(TrackStatusToTrackBits(ts) & _bits_mask[direction]);
if (bits == TRACK_BIT_NONE) return;
bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
bits = (byte)((bits | (bits >> 8)) & _bits_mask[direction]);
if (bits == 0)
return;
assert(TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY());
bool only_one_track = true;
uint i = 0;
/* only one direction */
if (KillFirstBit(bits) == 0) {
i = FindFirstBit(bits);
rd = tpf->rd;
goto continue_here;
}
/* several directions */
do {
Track track = RemoveFirstTrack(&bits);
if (bits != TRACK_BIT_NONE) only_one_track = false;
i = FindFirstBit(bits);
rd = tpf->rd;
/* Change direction 4 times only */
if (!only_one_track && track != tpf->rd.last_choosen_track) {
if ((byte)i != tpf->rd.pft_var6) {
if (++tpf->rd.depth > 4) {
tpf->rd = rd;
return;
}
tpf->rd.last_choosen_track = track;
tpf->rd.pft_var6 = (byte)i;
}
tpf->the_dir = (Trackdir)(track + (HasBit(_otherdir_mask[direction], track) ? 8 : 0));
continue_here:
tpf->the_dir = (Trackdir)(i + (HasBit(_otherdir_mask[direction], i) ? 8 : 0));
if (!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length)) {
if (!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length, NULL)) {
TPFMode2(tpf, tile, _tpf_new_direction[tpf->the_dir]);
}
tpf->rd = rd;
} while (bits != TRACK_BIT_NONE);
} while (ClrBit(bits, i) != 0);
}
@@ -252,11 +261,11 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
}
}
uint32 bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type));
uint32 bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
/* Check in case of rail if the owner is the same */
if (tpf->tracktype == TRANSPORT_RAIL) {
if (bits != 0 && TrackStatusToTrackdirBits(GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0)) != TRACKDIR_BIT_NONE) {
if (bits != 0 && GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0) != 0) {
if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
}
}
@@ -280,7 +289,7 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
/* make sure we are not leaving from invalid side */
if (TPFSetTileBit(tpf, tile, tpf->the_dir) && CanAccessTileInDir(tile, TrackdirToExitdir(tpf->the_dir), tpf->tracktype) &&
!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length) ) {
!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length, &tpf->rd.pft_var6) ) {
TPFMode1(tpf, tile, _tpf_new_direction[tpf->the_dir]);
}
tpf->rd = rd;
@@ -303,7 +312,7 @@ void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection dire
tpf.rd.cur_length = 0;
tpf.rd.depth = 0;
tpf.rd.last_choosen_track = INVALID_TRACK;
tpf.rd.pft_var6 = 0;
tpf.var2 = HasBit(flags, 15) ? 0x43 : 0xFF; // 0x8000
@@ -314,7 +323,8 @@ void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection dire
tpf.sub_type = sub_type;
if (HasBit(flags, 11)) {
tpf.enum_proc(tile, data, INVALID_TRACKDIR, 0);
tpf.rd.pft_var6 = 0xFF;
tpf.enum_proc(tile, data, INVALID_TRACKDIR, 0, 0);
TPFMode2(&tpf, tile, direction);
} else {
/* clear the hash_heads */
@@ -540,6 +550,24 @@ static bool NtpCheck(NewTrackPathFinder *tpf, TileIndex tile, uint dir, uint len
}
static const uint16 _is_upwards_slope[15] = {
0, ///< no tileh
(1 << TRACKDIR_X_SW) | (1 << TRACKDIR_Y_NW), ///< 1
(1 << TRACKDIR_X_SW) | (1 << TRACKDIR_Y_SE), ///< 2
(1 << TRACKDIR_X_SW), ///< 3
(1 << TRACKDIR_X_NE) | (1 << TRACKDIR_Y_SE), ///< 4
0, ///< 5
(1 << TRACKDIR_Y_SE), ///< 6
0, ///< 7
(1 << TRACKDIR_X_NE) | (1 << TRACKDIR_Y_NW), ///< 8,
(1 << TRACKDIR_Y_NW), ///< 9
0, ///< 10
0, ///< 11,
(1 << TRACKDIR_X_NE), ///< 12
0, ///< 13
0, ///< 14
};
static uint DistanceMoo(TileIndex t0, TileIndex t1)
{
const uint dx = Delta(TileX(t0), TileX(t1));
@@ -664,8 +692,8 @@ start_at:
if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) {
/* We found a tile which is not a normal railway tile.
* Determine which tracks that exist on this tile. */
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _tpfmode1_and[direction];
bits = TrackStatusToTrackBits(ts);
uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _tpfmode1_and[direction];
bits = TrackdirBitsToTrackBits((TrackdirBits)(ts & TRACKDIR_BIT_MASK));
/* Check that the tile contains exactly one track */
if (bits == 0 || KillFirstBit(bits) != 0) break;
@@ -709,8 +737,9 @@ start_at:
si.cur_length += _length_of_track[track];
/* Check if this rail is an upwards slope. If it is, then add a penalty. */
if (IsDiagonalTrackdir(track) && IsUphillTrackdir(GetTileSlope(tile, NULL), track)) {
/* Check if this rail is an upwards slope. If it is, then add a penalty.
* Small optimization here.. if (track&7)>1 then it can't be a slope so we avoid calling GetTileSlope */
if ((track & 7) <= 1 && (_is_upwards_slope[GetTileSlope(tile, NULL)] & (1 << track)) ) {
// upwards slope. add some penalty.
si.cur_length += 4 * DIAG_FACTOR;
}
+2 -2
View File
@@ -16,7 +16,7 @@ enum {
//supported on all archs)
struct TrackPathFinder;
typedef bool TPFEnumProc(TileIndex tile, void *data, Trackdir trackdir, uint length);
typedef bool TPFEnumProc(TileIndex tile, void *data, Trackdir trackdir, uint length, byte *state);
typedef void TPFAfterProc(TrackPathFinder *tpf);
typedef bool NTPEnumProc(TileIndex tile, void *data, int track, uint length);
@@ -40,7 +40,7 @@ struct TrackPathFinderLink {
struct RememberData {
uint16 cur_length;
byte depth;
Track last_choosen_track;
byte pft_var6;
};
struct TrackPathFinder {
-34
View File
@@ -113,40 +113,6 @@ extern const TrackBits _corner_to_trackbits[] = {
TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_RIGHT, TRACK_BIT_UPPER,
};
extern const TrackdirBits _uphill_trackdirs[] = {
TRACKDIR_BIT_NONE , ///< 0 SLOPE_FLAT
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, ///< 1 SLOPE_W -> inclined for diagonal track
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, ///< 2 SLOPE_S -> inclined for diagonal track
TRACKDIR_BIT_X_SW , ///< 3 SLOPE_SW
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///< 4 SLOPE_E -> inclined for diagonal track
TRACKDIR_BIT_NONE , ///< 5 SLOPE_EW
TRACKDIR_BIT_Y_SE , ///< 6 SLOPE_SE
TRACKDIR_BIT_NONE , ///< 7 SLOPE_WSE -> leveled
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, ///< 8 SLOPE_N -> inclined for diagonal track
TRACKDIR_BIT_Y_NW , ///< 9 SLOPE_NW
TRACKDIR_BIT_NONE , ///< 10 SLOPE_NS
TRACKDIR_BIT_NONE , ///< 11 SLOPE_NWS -> leveled
TRACKDIR_BIT_X_NE , ///< 12 SLOPE_NE
TRACKDIR_BIT_NONE , ///< 13 SLOPE_ENW -> leveled
TRACKDIR_BIT_NONE , ///< 14 SLOPE_SEN -> leveled
TRACKDIR_BIT_NONE , ///< 15 invalid
TRACKDIR_BIT_NONE , ///< 16 invalid
TRACKDIR_BIT_NONE , ///< 17 invalid
TRACKDIR_BIT_NONE , ///< 18 invalid
TRACKDIR_BIT_NONE , ///< 19 invalid
TRACKDIR_BIT_NONE , ///< 20 invalid
TRACKDIR_BIT_NONE , ///< 21 invalid
TRACKDIR_BIT_NONE , ///< 22 invalid
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, ///< 23 SLOPE_STEEP_S -> inclined for diagonal track
TRACKDIR_BIT_NONE , ///< 24 invalid
TRACKDIR_BIT_NONE , ///< 25 invalid
TRACKDIR_BIT_NONE , ///< 26 invalid
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, ///< 27 SLOPE_STEEP_W -> inclined for diagonal track
TRACKDIR_BIT_NONE , ///< 28 invalid
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, ///< 29 SLOPE_STEEP_N -> inclined for diagonal track
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///< 30 SLOPE_STEEP_E -> inclined for diagonal track
};
/* The default multiplier for the cost of building different types of railway
* track, which will be divided by 8. Can be changed by newgrf files. */
const int _default_railtype_cost_multiplier[RAILTYPE_END] = {
+14 -23
View File
@@ -360,8 +360,6 @@ CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p
if (IsNormalRoad(tile)) {
if (HasRoadWorks(tile)) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
if (GetDisallowedRoadDirections(tile) != DRD_NONE) return_cmd_error(STR_ERR_CROSSING_ON_ONEWAY_ROAD);
RoadTypes roadtypes = GetRoadTypes(tile);
RoadBits road = GetRoadBits(tile, ROADTYPE_ROAD);
RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM);
@@ -369,7 +367,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p
default: break;
case ROADTYPES_TRAM:
/* Tram crossings must always have road. */
if (flags & DC_EXEC) SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
roadtypes |= ROADTYPES_ROAD;
break;
@@ -913,7 +911,8 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
if (tile == INVALID_TILE) return false;
/* Check for track bits on the new tile */
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
TrackdirBits trackdirbits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
if (TracksOverlap(TrackdirBitsToTrackBits(trackdirbits))) return false;
trackdirbits &= TrackdirReachesTrackdirs(trackdir);
@@ -2084,21 +2083,17 @@ set_ground:
}
static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
if (mode != TRANSPORT_RAIL) return 0;
TrackBits trackbits = TRACK_BIT_NONE;
TrackdirBits red_signals = TRACKDIR_BIT_NONE;
switch (GetRailTileType(tile)) {
default: NOT_REACHED();
case RAIL_TILE_NORMAL:
trackbits = GetTrackBits(tile);
break;
return GetTrackBits(tile) * 0x101;
case RAIL_TILE_SIGNALS: {
trackbits = GetTrackBits(tile);
uint32 ret = GetTrackBits(tile) * 0x101;
byte a = GetPresentSignals(tile);
uint b = GetSignalStates(tile);
@@ -2111,29 +2106,25 @@ static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode,
if ((a & 0xC) == 0) b |= 0xC;
if ((a & 0x3) == 0) b |= 0x3;
if ((b & 0x8) == 0) red_signals |= (TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_UPPER_E);
if ((b & 0x4) == 0) red_signals |= (TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_UPPER_W);
if ((b & 0x2) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_E);
if ((b & 0x1) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LOWER_W);
if ((b & 0x8) == 0) ret |= 0x10070000;
if ((b & 0x4) == 0) ret |= 0x07100000;
if ((b & 0x2) == 0) ret |= 0x20080000;
if ((b & 0x1) == 0) ret |= 0x08200000;
break;
return ret;
}
case RAIL_TILE_DEPOT: {
DiagDirection dir = GetRailDepotDirection(tile);
if (side != INVALID_DIAGDIR && side != dir) break;
if (side != INVALID_DIAGDIR && side != dir) return 0;
trackbits = AxisToTrackBits(DiagDirToAxis(dir));
break;
return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101;
}
case RAIL_TILE_WAYPOINT:
trackbits = GetRailWaypointBits(tile);
break;
return GetRailWaypointBits(tile) * 0x101;
}
return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), red_signals);
}
static void ClickTile_Track(TileIndex tile)
+1 -1
View File
@@ -189,7 +189,7 @@ static void PlaceRail_Station(TileIndex tile)
*/
static void GenericPlaceSignals(TileIndex tile)
{
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
TrackBits trackbits = (TrackBits)GB(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0), 0, 6);
if (trackbits & TRACK_BIT_VERT) { // N-S direction
trackbits = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
+6 -6
View File
@@ -103,9 +103,9 @@ static inline RailType GetRailType(TileIndex t)
}
/**
* Sets the rail type of the given tile
* @param t the tile to set the rail type of
* @param r the new rail type for the tile
* Sets the track bits of the given tile
* @param t the tile to set the track bits of
* @param r the new track bits for the tile
*/
static inline void SetRailType(TileIndex t, RailType r)
{
@@ -114,9 +114,9 @@ static inline void SetRailType(TileIndex t, RailType r)
/**
* Gets the track bits of the given tile
* @param t the tile to get the track bits from
* @return the track bits of the tile
* Gets the rail type of the given tile
* @param t the tile to get the rail type from
* @return the rail type of the tile
*/
static inline TrackBits GetTrackBits(TileIndex tile)
{
+1 -1
View File
@@ -34,7 +34,7 @@ extern const char _openttd_revision[] = "@@VERSION@@";
* final release will always have a lower version number than the released
* version, thus making comparisions on specific revisions easy.
*/
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (12338 & ((1 << 19) - 1));
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (12182 & ((1 << 19) - 1));
#ifdef __MORPHOS__
/**
+20 -28
View File
@@ -426,6 +426,7 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
switch (GetRoadTileType(tile)) {
case ROAD_TILE_NORMAL: {
if (HasRoadWorks(tile)) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
all_bits = GetAllRoadBits(tile);
if (!HasTileRoadType(tile, rt)) break;
@@ -442,8 +443,6 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM && GetRoadOwner(tile, ROADTYPE_ROAD) == _current_player) {
if (crossing) return_cmd_error(STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION);
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
/* Ignore half built tiles */
if (flags & DC_EXEC && rt != ROADTYPE_TRAM && (existing == ROAD_X || existing == ROAD_Y)) {
SetDisallowedRoadDirections(tile, GetDisallowedRoadDirections(tile) ^ toggle_drd);
@@ -459,6 +458,7 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
all_bits = GetCrossingRoadBits(tile);
if (pieces & ComplementRoadBits(all_bits)) goto do_clear;
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
break;
default:
@@ -509,6 +509,8 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
case MP_STATION:
if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
/* Don't allow adding roadtype to the roadstop when vehicles are already driving on it */
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
break;
case MP_TUNNELBRIDGE:
@@ -558,8 +560,6 @@ do_clear:;
}
}
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
cost.AddCost(CountBits(pieces) * _price.build_road);
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
/* Pay for *every* tile of the bridge or tunnel */
@@ -634,8 +634,6 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
bool had_success = false;
DisallowedRoadDirections drd = DRD_NORTHBOUND;
_error_message = INVALID_STRING_ID;
if (p1 >= MapSize()) return CMD_ERROR;
start_tile = p1;
@@ -673,6 +671,7 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
ret = DoCommand(tile, drd << 6 | rt << 4 | bits, 0, flags, CMD_BUILD_ROAD);
if (CmdFailed(ret)) {
if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
_error_message = INVALID_STRING_ID;
} else {
had_success = true;
/* Only pay for the upgrade on one side of the bridges and tunnels */
@@ -1065,11 +1064,8 @@ static void DrawRoadBits(TileInfo* ti)
if (height < minz) return;
}
/* If there are no road bits, return, as there is nothing left to do */
if (CountBits(road) < 2) return;
/* Draw extra details. */
for (drts = _road_display_table[roadside][road | tram]; drts->image != 0; drts++) {
for (drts = _road_display_table[roadside][road]; drts->image != 0; drts++) {
DrawRoadDetail(drts->image, ti, drts->subcoord_x, drts->subcoord_y, 0x10);
}
}
@@ -1314,22 +1310,20 @@ static void ClickTile_Road(TileIndex tile)
if (IsRoadDepot(tile)) ShowDepotWindow(tile, VEH_ROAD);
}
/* Converts RoadBits to TrackBits */
static const byte _road_trackbits[16] = {
0x0, 0x0, 0x0, 0x10, 0x0, 0x2, 0x8, 0x1A, 0x0, 0x4, 0x1, 0x15, 0x20, 0x26, 0x29, 0x3F,
};
static TrackStatus GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
TrackdirBits trackdirbits = TRACKDIR_BIT_NONE;
TrackdirBits red_signals = TRACKDIR_BIT_NONE; // crossing barred
switch (mode) {
case TRANSPORT_RAIL:
if (IsLevelCrossing(tile)) trackdirbits = TrackBitsToTrackdirBits(GetCrossingRailBits(tile));
break;
if (!IsLevelCrossing(tile)) return 0;
return GetCrossingRailBits(tile) * 0x101;
case TRANSPORT_ROAD:
if ((GetRoadTypes(tile) & sub_mode) == 0) break;
if ((GetRoadTypes(tile) & sub_mode) == 0) return 0;
switch (GetRoadTileType(tile)) {
case ROAD_TILE_NORMAL: {
const uint drd_to_multiplier[DRD_END] = { 0x101, 0x100, 0x1, 0x0 };
@@ -1337,38 +1331,36 @@ static TrackStatus GetTileTrackStatus_Road(TileIndex tile, TransportType mode, u
RoadBits bits = GetRoadBits(tile, rt);
/* no roadbit at this side of tile, return 0 */
if (side != INVALID_DIAGDIR && (DiagDirToRoadBits(side) & bits) == 0) break;
if (side != INVALID_DIAGDIR && DiagDirToRoadBits(side) & bits == 0) return 0;
uint multiplier = drd_to_multiplier[rt == ROADTYPE_TRAM ? DRD_NONE : GetDisallowedRoadDirections(tile)];
if (!HasRoadWorks(tile)) trackdirbits = (TrackdirBits)(_road_trackbits[bits] * multiplier);
break;
return HasRoadWorks(tile) ? 0 : _road_trackbits[bits] * multiplier;
}
case ROAD_TILE_CROSSING: {
Axis axis = GetCrossingRoadAxis(tile);
if (side != INVALID_DIAGDIR && axis != DiagDirToAxis(side)) break;
if (side != INVALID_DIAGDIR && axis != DiagDirToAxis(side)) return 0;
trackdirbits = TrackBitsToTrackdirBits(AxisToTrackBits(axis));
if (IsCrossingBarred(tile)) red_signals = trackdirbits;
break;
uint32 r = AxisToTrackBits(axis) * 0x101;
if (IsCrossingBarred(tile)) r *= 0x10001;
return r;
}
default:
case ROAD_TILE_DEPOT: {
DiagDirection dir = GetRoadDepotDirection(tile);
if (side != INVALID_DIAGDIR && side != dir) break;
if (side != INVALID_DIAGDIR && side != dir) return 0;
trackdirbits = TrackBitsToTrackdirBits(AxisToTrackBits(DiagDirToAxis(dir)));
break;
return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101;
}
}
break;
default: break;
}
return CombineTrackStatus(trackdirbits, red_signals);
return 0;
}
static const StringID _road_tile_strings[] = {
+5 -1
View File
@@ -43,10 +43,14 @@ RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt)
TrackBits GetAnyRoadTrackBits(TileIndex tile, RoadType rt)
{
uint32 r;
/* Don't allow local authorities to build roads through road depots or road stops. */
if (IsRoadDepotTile(tile) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile)) || !HasTileRoadType(tile, rt)) {
return TRACK_BIT_NONE;
}
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(rt)));
r = GetTileTrackStatus(tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(rt));
return (TrackBits)(byte)(r | (r >> 8));
}
+1 -1
View File
@@ -72,7 +72,7 @@ struct RoadVehicle : public Vehicle {
int GetImage(Direction direction) const;
int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * GetPriceByIndex(RoadVehInfo(this->engine_type)->running_cost_class); }
Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running; }
bool IsInDepot() const { return this->u.road.state == RVSB_IN_DEPOT; }
void Tick();
void OnNewDay();
+29 -36
View File
@@ -398,7 +398,7 @@ static const DiagDirection _road_pf_directions[] = {
DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE, INVALID_DIAGDIR, INVALID_DIAGDIR
};
static bool EnumRoadSignalFindDepot(TileIndex tile, void* data, Trackdir trackdir, uint length)
static bool EnumRoadSignalFindDepot(TileIndex tile, void* data, Trackdir trackdir, uint length, byte* state)
{
RoadFindDepotData* rfdd = (RoadFindDepotData*)data;
@@ -1008,10 +1008,10 @@ struct OvertakeData {
const Vehicle* u;
const Vehicle* v;
TileIndex tile;
Trackdir trackdir;
uint16 tilebits;
};
static void* EnumFindVehBlockingOvertake(Vehicle* v, void* data)
static void* EnumFindVehToOvertake(Vehicle* v, void* data)
{
const OvertakeData* od = (OvertakeData*)data;
@@ -1020,29 +1020,22 @@ static void* EnumFindVehBlockingOvertake(Vehicle* v, void* data)
v : NULL;
}
/**
* Check if overtaking is possible on a piece of track
*
* @param od Information about the tile and the involved vehicles
* @return true if we have to abort overtaking
*/
static bool CheckRoadBlockedForOvertaking(OvertakeData *od)
static bool FindRoadVehToOvertake(OvertakeData *od)
{
TrackStatus ts = GetTileTrackStatus(od->tile, TRANSPORT_ROAD, od->v->u.road.compatible_roadtypes);
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts);
TrackdirBits red_signals = TrackStatusToRedSignals(ts); // barred level crossing
TrackBits trackbits = TrackdirBitsToTrackBits(trackdirbits);
uint32 bits;
/* Track does not continue along overtaking direction || track has junction || levelcrossing is barred */
if (!HasBit(trackdirbits, od->trackdir) || (trackbits & ~TRACK_BIT_CROSS) || (red_signals != TRACKDIR_BIT_NONE)) return true;
bits = GetTileTrackStatus(od->tile, TRANSPORT_ROAD, od->v->u.road.compatible_roadtypes);
bits |= bits >> 8;
/* Are there more vehicles on the tile except the two vehicles involved in overtaking */
return VehicleFromPos(od->tile, od, EnumFindVehBlockingOvertake) != NULL;
if (!(od->tilebits & bits) || (bits & 0x3C3C) || (bits & 0x3F3F0000))
return true;
return VehicleFromPos(od->tile, od, EnumFindVehToOvertake) != NULL;
}
static void RoadVehCheckOvertake(Vehicle *v, Vehicle *u)
{
OvertakeData od;
uint16 tt;
od.v = v;
od.u = u;
@@ -1062,31 +1055,32 @@ static void RoadVehCheckOvertake(Vehicle *v, Vehicle *u)
/* For now, articulated road vehicles can't overtake anything. */
if (RoadVehHasArticPart(v)) return;
/* Vehicles are not driving in same direction || direction is not a diagonal direction */
if (v->direction != u->direction || !(v->direction & 1)) return;
/* Check if vehicle is in a road stop, depot, tunnel or bridge or not on a straight road */
if (v->u.road.state >= RVSB_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->u.road.state & RVSB_TRACKDIR_MASK))) return;
od.trackdir = DiagdirToDiagTrackdir(DirToDiagDir(v->direction));
tt = GetTileTrackStatus(v->tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
tt |= tt >> 8;
tt &= 0x3F;
if ((tt & 3) == 0) return;
if ((tt & 0x3C) != 0) return;
if (tt == 3) tt = (v->direction & 2) ? 2 : 1;
od.tilebits = tt;
/* Are the current and the next tile suitable for overtaking?
* - Does the track continue along od.trackdir
* - No junctions
* - No barred levelcrossing
* - No other vehicles in the way
*/
od.tile = v->tile;
if (CheckRoadBlockedForOvertaking(&od)) return;
if (FindRoadVehToOvertake(&od)) return;
od.tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
if (CheckRoadBlockedForOvertaking(&od)) return;
if (FindRoadVehToOvertake(&od)) return;
if (od.u->cur_speed == 0 || od.u->vehstatus& VS_STOPPED) {
v->u.road.overtaking_ctr = 0x11;
v->u.road.overtaking = 0x10;
} else {
// if (CheckRoadBlockedForOvertaking(&od)) return;
// if (FindRoadVehToOvertake(&od)) return;
v->u.road.overtaking_ctr = 0;
v->u.road.overtaking = 0x10;
}
@@ -1119,7 +1113,7 @@ struct FindRoadToChooseData {
uint mindist;
};
static bool EnumRoadTrackFindDist(TileIndex tile, void* data, Trackdir trackdir, uint length)
static bool EnumRoadTrackFindDist(TileIndex tile, void* data, Trackdir trackdir, uint length, byte* state)
{
FindRoadToChooseData* frd = (FindRoadToChooseData*)data;
uint dist = DistanceManhattan(tile, frd->dest);
@@ -1159,9 +1153,9 @@ static Trackdir RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection ent
FindRoadToChooseData frd;
Trackdir best_track;
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
TrackdirBits red_signals = TrackStatusToRedSignals(ts); // crossing
TrackdirBits trackdirs = TrackStatusToTrackdirBits(ts);
uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
TrackdirBits signal = (TrackdirBits)GB(r, 16, 16);
TrackdirBits trackdirs = (TrackdirBits)GB(r, 0, 16);
if (IsTileType(tile, MP_ROAD)) {
if (IsRoadDepot(tile) && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir || (GetRoadTypes(tile) & v->u.road.compatible_roadtypes) == 0)) {
@@ -1302,7 +1296,7 @@ do_it:;
found_best_track:;
if (HasBit(red_signals, best_track)) return INVALID_TRACKDIR;
if (HasBit(signal, best_track)) return INVALID_TRACKDIR;
return best_track;
}
@@ -2093,8 +2087,7 @@ void RoadVehicle::OnNewDay()
if (this->running_ticks == 0) return;
const RoadVehicleInfo *rvi = RoadVehInfo(this->engine_type);
CommandCost cost(EXPENSES_ROADVEH_RUN, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) * this->running_ticks / (364 * DAY_TICKS));
CommandCost cost(EXPENSES_ROADVEH_RUN, RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running * this->running_ticks / (364 * DAY_TICKS));
this->profit_this_year -= cost.GetCost();
this->running_ticks = 0;
+1 -1
View File
@@ -34,7 +34,7 @@
#include "table/strings.h"
extern const uint16 SAVEGAME_VERSION = 90;
extern const uint16 SAVEGAME_VERSION = 89;
uint16 _sl_version; ///< the major savegame version identifier
byte _sl_minor_version; ///< the minor savegame version, DO NOT USE!
-1
View File
@@ -1432,7 +1432,6 @@ const SettingDesc _patch_settings[] = {
SDT_CONDBOOL(Patches, disable_elrails, 38, SL_MAX_VERSION, 0, NN, false, STR_CONFIG_PATCHES_DISABLE_ELRAILS, SettingsDisableElrail),
SDT_CONDVAR(Patches, freight_trains, SLE_UINT8, 39, SL_MAX_VERSION, 0,NN, 1, 1, 255, 1, STR_CONFIG_PATCHES_FREIGHT_TRAINS, NULL),
SDT_CONDBOOL(Patches, timetabling, 67, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_PATCHES_TIMETABLE_ALLOW, NULL),
SDT_CONDVAR(Patches, plane_speed, SLE_UINT8, 90, SL_MAX_VERSION, 0, 0, 4, 1, 4, 0, STR_CONFIG_PATCHES_PLANE_SPEED, NULL),
/***************************************************************************/
/* Station section of the GUI-configure patches window */
-1
View File
@@ -818,7 +818,6 @@ static const char *_patches_vehicles[] = {
"wagon_speed_limits",
"disable_elrails",
"freight_trains",
"plane_speed",
"timetabling",
};
-2
View File
@@ -130,8 +130,6 @@ struct Patches {
uint8 pathfinder_for_roadvehs; ///< the pathfinder to use for roadvehicles
uint8 pathfinder_for_ships; ///< the pathfinder to use for ships
uint8 plane_speed; ///< divisor for speed of aircraft
bool autorenew;
int16 autorenew_months;
int32 autorenew_money;
+7 -5
View File
@@ -50,9 +50,10 @@ static const TrackBits _ship_sometracks[4] = {
TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_RIGHT, // 0x2A, // DIAGDIR_NW
};
static inline TrackBits GetTileShipTrackStatus(TileIndex tile)
static TrackBits GetTileShipTrackStatus(TileIndex tile)
{
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
return TrackdirBitsToTrackBits((TrackdirBits)(TRACKDIR_BIT_MASK & (r | r >> 8)));
}
void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal)
@@ -427,7 +428,7 @@ struct PathFindShip {
uint best_length;
};
static bool ShipTrackFollower(TileIndex tile, PathFindShip *pfs, int track, uint length)
static bool ShipTrackFollower(TileIndex tile, PathFindShip *pfs, int track, uint length, byte *state)
{
/* Found dest? */
if (tile == pfs->dest_coords) {
@@ -591,9 +592,10 @@ static Direction ShipGetNewDirection(Vehicle *v, int x, int y)
return _new_vehicle_direction_table[offs];
}
static inline TrackBits GetAvailShipTracks(TileIndex tile, int dir)
static TrackBits GetAvailShipTracks(TileIndex tile, int dir)
{
return GetTileShipTrackStatus(tile) & _ship_sometracks[dir];
uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
return (TrackBits)((r | r >> 8) & _ship_sometracks[dir]);
}
static const byte _ship_subcoord[4][6][3] = {
+2 -2
View File
@@ -506,7 +506,7 @@ static bool UpdateSignalsInBuffer(Owner owner)
/* FALLTHROUGH */
case MP_STATION:
case MP_ROAD:
if ((TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
/* only add to set when there is some 'interesting' track */
_tbdset.Add(tile, dir);
_tbdset.Add(tile + TileOffsByDiagDir(dir), ReverseDiagDir(dir));
@@ -517,7 +517,7 @@ static bool UpdateSignalsInBuffer(Owner owner)
/* jump to next tile */
tile = tile + TileOffsByDiagDir(dir);
dir = ReverseDiagDir(dir);
if ((TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
_tbdset.Add(tile, dir);
break;
}
+1 -2
View File
@@ -241,8 +241,7 @@ void SndPlayTileFx(SoundFx sound, TileIndex tile)
/* emits sound from center of the tile */
int x = TileX(tile) * TILE_SIZE + TILE_SIZE / 2;
int y = TileY(tile) * TILE_SIZE - TILE_SIZE / 2;
uint z = (y < 0 ? 0 : GetSlopeZ(x, y));
Point pt = RemapCoords(x, y, z);
Point pt = RemapCoords(x, y, GetSlopeZ(x, y));
y += 2 * TILE_SIZE;
Point pt2 = RemapCoords(x, y, GetSlopeZ(x, y));
SndPlayScreenCoordFx(sound, pt.x, pt2.x, pt.y, pt2.y);
+14 -12
View File
@@ -474,8 +474,11 @@ void GetProductionAroundTiles(AcceptedCargo produced, TileIndex tile,
CargoID cargos[2] = { CT_INVALID, CT_INVALID };
gpc(tile, cargos);
for (uint i = 0; i < lengthof(cargos); ++i) {
if (cargos[i] != CT_INVALID) produced[cargos[i]]++;
if (cargos[0] != CT_INVALID) {
produced[cargos[0]]++;
if (cargos[1] != CT_INVALID) {
produced[cargos[1]]++;
}
}
}
}
@@ -2277,25 +2280,24 @@ static void GetTileDesc_Station(TileIndex tile, TileDesc *td)
}
static TrackStatus GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
TrackBits trackbits = TRACK_BIT_NONE;
switch (mode) {
case TRANSPORT_RAIL:
if (IsRailwayStation(tile) && !IsStationTileBlocked(tile)) {
trackbits = TrackToTrackBits(GetRailStationTrack(tile));
return TrackToTrackBits(GetRailStationTrack(tile)) * 0x101;
}
break;
case TRANSPORT_WATER:
/* buoy is coded as a station, it is always on open water */
if (IsBuoy(tile)) {
trackbits = TRACK_BIT_ALL;
TrackBits ts = TRACK_BIT_ALL;
/* remove tracks that connect NE map edge */
if (TileX(tile) == 0) trackbits &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT);
if (TileX(tile) == 0) ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT);
/* remove tracks that connect NW map edge */
if (TileY(tile) == 0) trackbits &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER);
if (TileY(tile) == 0) ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER);
return uint32(ts) * 0x101;
}
break;
@@ -2305,10 +2307,10 @@ static TrackStatus GetTileTrackStatus_Station(TileIndex tile, TransportType mode
Axis axis = DiagDirToAxis(dir);
if (side != INVALID_DIAGDIR) {
if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) break;
if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) return 0;
}
trackbits = AxisToTrackBits(axis);
return AxisToTrackBits(axis) * 0x101;
}
break;
@@ -2316,7 +2318,7 @@ static TrackStatus GetTileTrackStatus_Station(TileIndex tile, TransportType mode
break;
}
return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), TRACKDIR_BIT_NONE);
return 0;
}
+237 -245
View File
@@ -23,10 +23,27 @@
* </ul>
*/
# define MN(a) {a, PAL_NONE}
# define MR(a) {a, PALETTE_TO_STRUCT_RED}
# define MW(a) {a, PALETTE_TO_STRUCT_WHITE}
# define MC(a) {a, PALETTE_TO_STRUCT_CONCRETE}
static const PalSpriteID _bridge_sprite_table_2_0[] = {
{ 0x9C3, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9C4, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9C5, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9C6, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10E4, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10E5, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x110C, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x110D, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_2_1[] = {
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
{ 0x98E, PALETTE_TO_STRUCT_WHITE }, { 0x990, PALETTE_TO_STRUCT_WHITE }, { 0x98D, PALETTE_TO_STRUCT_WHITE }, { 0x98F, PALETTE_TO_STRUCT_WHITE },
{ 0x992, PALETTE_TO_STRUCT_WHITE }, { 0x994, PALETTE_TO_STRUCT_WHITE }, { 0x991, PALETTE_TO_STRUCT_WHITE }, { 0x993, PALETTE_TO_STRUCT_WHITE },
{ 0x10E7, PALETTE_TO_STRUCT_WHITE }, { 0x10E9, PALETTE_TO_STRUCT_WHITE }, { 0x10E6, PALETTE_TO_STRUCT_WHITE }, { 0x10E8, PALETTE_TO_STRUCT_WHITE },
{ 0x10EB, PALETTE_TO_STRUCT_WHITE }, { 0x10ED, PALETTE_TO_STRUCT_WHITE }, { 0x10EA, PALETTE_TO_STRUCT_WHITE }, { 0x10EC, PALETTE_TO_STRUCT_WHITE },
{ 0x110F, PALETTE_TO_STRUCT_WHITE }, { 0x1111, PALETTE_TO_STRUCT_WHITE }, { 0x110E, PALETTE_TO_STRUCT_WHITE }, { 0x1110, PALETTE_TO_STRUCT_WHITE },
{ 0x1113, PALETTE_TO_STRUCT_WHITE }, { 0x1115, PALETTE_TO_STRUCT_WHITE }, { 0x1112, PALETTE_TO_STRUCT_WHITE }, { 0x1114, PALETTE_TO_STRUCT_WHITE },
};
static const PalSpriteID _bridge_sprite_table_4_0[] = {
{ 0x9A9, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
@@ -182,6 +199,94 @@ static const PalSpriteID _bridge_sprite_table_5_6[] = {
{ 0x1113, PALETTE_TO_STRUCT_YELLOW }, { 0x1115, PALETTE_TO_STRUCT_YELLOW }, { 0x1112, PALETTE_TO_STRUCT_YELLOW }, { 0x1114, PALETTE_TO_STRUCT_YELLOW },
};
static const PalSpriteID _bridge_sprite_table_3_0[] = {
{ 0x9A9, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A5, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x99D, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x995, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F2, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10EE, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111A, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x1116, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_1[] = {
{ 0x9AA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A6, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x99E, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x996, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10EF, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x1117, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_2[] = {
{ 0x9AC, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A8, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A2, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x99A, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F5, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F1, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111D, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x1119, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_3[] = {
{ 0x9AB, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A7, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9A1, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x999, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F0, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x1118, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_4[] = {
{ 0x9B6, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9B5, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9B8, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x9B7, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F7, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x10F6, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
{ 0x111E, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_5[] = {
{ 0x9BD, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9BE, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9BF, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9C0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10F8, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10F9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1120, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1121, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_3_6[] = {
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
{ 0x98E, PALETTE_TO_STRUCT_CONCRETE }, { 0x990, PALETTE_TO_STRUCT_CONCRETE }, { 0x98D, PALETTE_TO_STRUCT_CONCRETE }, { 0x98F, PALETTE_TO_STRUCT_CONCRETE },
{ 0x992, PALETTE_TO_STRUCT_CONCRETE }, { 0x994, PALETTE_TO_STRUCT_CONCRETE }, { 0x991, PALETTE_TO_STRUCT_CONCRETE }, { 0x993, PALETTE_TO_STRUCT_CONCRETE },
{ 0x10E7, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E9, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E6, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E8, PALETTE_TO_STRUCT_CONCRETE },
{ 0x10EB, PALETTE_TO_STRUCT_CONCRETE }, { 0x10ED, PALETTE_TO_STRUCT_CONCRETE }, { 0x10EA, PALETTE_TO_STRUCT_CONCRETE }, { 0x10EC, PALETTE_TO_STRUCT_CONCRETE },
{ 0x110F, PALETTE_TO_STRUCT_CONCRETE }, { 0x1111, PALETTE_TO_STRUCT_CONCRETE }, { 0x110E, PALETTE_TO_STRUCT_CONCRETE }, { 0x1110, PALETTE_TO_STRUCT_CONCRETE },
{ 0x1113, PALETTE_TO_STRUCT_CONCRETE }, { 0x1115, PALETTE_TO_STRUCT_CONCRETE }, { 0x1112, PALETTE_TO_STRUCT_CONCRETE }, { 0x1114, PALETTE_TO_STRUCT_CONCRETE },
};
static const PalSpriteID _bridge_sprite_table_1_1[] = {
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
{ 0x98E, PALETTE_TO_STRUCT_RED }, { 0x990, PALETTE_TO_STRUCT_RED }, { 0x98D, PALETTE_TO_STRUCT_RED }, { 0x98F, PALETTE_TO_STRUCT_RED },
{ 0x992, PALETTE_TO_STRUCT_RED }, { 0x994, PALETTE_TO_STRUCT_RED }, { 0x991, PALETTE_TO_STRUCT_RED }, { 0x993, PALETTE_TO_STRUCT_RED },
{ 0x10E7, PALETTE_TO_STRUCT_RED }, { 0x10E9, PALETTE_TO_STRUCT_RED }, { 0x10E6, PALETTE_TO_STRUCT_RED }, { 0x10E8, PALETTE_TO_STRUCT_RED },
{ 0x10EB, PALETTE_TO_STRUCT_RED }, { 0x10ED, PALETTE_TO_STRUCT_RED }, { 0x10EA, PALETTE_TO_STRUCT_RED }, { 0x10EC, PALETTE_TO_STRUCT_RED },
{ 0x110F, PALETTE_TO_STRUCT_RED }, { 0x1111, PALETTE_TO_STRUCT_RED }, { 0x110E, PALETTE_TO_STRUCT_RED }, { 0x1110, PALETTE_TO_STRUCT_RED },
{ 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED },
};
static const PalSpriteID _bridge_sprite_table_6_0[] = {
{ 0x9CD, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9CE, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
@@ -314,147 +419,37 @@ static const PalSpriteID _bridge_sprite_table_8_3[] = {
{ 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED },
};
static const PalSpriteID _bridge_sprite_table_wood_middle[] = {
MN( SPR_BTWDN_RAIL_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_RAIL_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_ROAD_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_ROAD_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_MONO_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_MONO_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_MGLV_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTWDN_MGLV_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
static const PalSpriteID _bridge_sprite_table_0_0[] = {
{ 0x9F2, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9F1, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9F4, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9F3, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1109, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1108, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1131, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1130, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_wood_heads[] = {
MN( SPR_BTWDN_RAIL_X_SLOPE_UP ), MN( SPR_BTWDN_RAIL_Y_SLOPE_UP ), MN( SPR_BTWDN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTWDN_RAIL_Y_SLOPE_DOWN ),
MN( SPR_BTWDN_RAIL_RAMP_X_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_X_UP ), MN( SPR_BTWDN_RAIL_RAMP_Y_UP ),
MN( SPR_BTWDN_ROAD_X_SLOPE_UP ), MN( SPR_BTWDN_ROAD_Y_SLOPE_UP ), MN( SPR_BTWDN_ROAD_X_SLOPE_DOWN ), MN( SPR_BTWDN_ROAD_Y_SLOPE_DOWN ),
MN( SPR_BTWDN_ROAD_RAMP_X_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_Y_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_X_UP ), MN( SPR_BTWDN_ROAD_RAMP_Y_UP ),
MN( SPR_BTWDN_MONO_X_SLOPE_UP ), MN( SPR_BTWDN_MONO_Y_SLOPE_UP ), MN( SPR_BTWDN_MONO_X_SLOPE_DOWN ), MN( SPR_BTWDN_MONO_Y_SLOPE_DOWN ),
MN( SPR_BTWDN_MONO_RAMP_X_DOWN ), MN( SPR_BTWDN_MONO_RAMP_Y_DOWN ), MN( SPR_BTWDN_MONO_RAMP_X_UP ), MN( SPR_BTWDN_MONO_RAMP_Y_UP ),
MN( SPR_BTWDN_MGLV_X_SLOPE_UP ), MN( SPR_BTWDN_MGLV_Y_SLOPE_UP ), MN( SPR_BTWDN_MGLV_X_SLOPE_DOWN ), MN( SPR_BTWDN_MGLV_Y_SLOPE_DOWN ),
MN( SPR_BTWDN_MGLV_RAMP_X_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_Y_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_X_UP ), MN( SPR_BTWDN_MGLV_RAMP_Y_UP ),
static const PalSpriteID _bridge_sprite_table_0_1[] = {
{ 0x9EE, PAL_NONE }, { 0x9ED, PAL_NONE }, { 0x9F0, PAL_NONE }, { 0x9EF, PAL_NONE },
{ 0x9EA, PAL_NONE }, { 0x9E9, PAL_NONE }, { 0x9EB, PAL_NONE }, { 0x9EC, PAL_NONE },
{ 0x9E6, PAL_NONE }, { 0x9E5, PAL_NONE }, { 0x9E8, PAL_NONE }, { 0x9E7, PAL_NONE },
{ 0x9E2, PAL_NONE }, { 0x9E1, PAL_NONE }, { 0x9E3, PAL_NONE }, { 0x9E4, PAL_NONE },
{ 0x1105, PAL_NONE }, { 0x1104, PAL_NONE }, { 0x1107, PAL_NONE }, { 0x1106, PAL_NONE },
{ 0x1101, PAL_NONE }, { 0x1100, PAL_NONE }, { 0x1102, PAL_NONE }, { 0x1103, PAL_NONE },
{ 0x112D, PAL_NONE }, { 0x112C, PAL_NONE }, { 0x112F, PAL_NONE }, { 0x112E, PAL_NONE },
{ 0x1129, PAL_NONE }, { 0x1128, PAL_NONE }, { 0x112A, PAL_NONE }, { 0x112B, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_concrete_middle[] = {
MR( SPR_BTCON_RAIL_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_RAIL_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_ROAD_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_ROAD_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_MONO_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_MONO_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_MGLV_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
MR( SPR_BTCON_MGLV_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_heads[] = {
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
MR( SPR_BTGEN_ROAD_X_SLOPE_UP ), MR( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MR( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MR( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
MR( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_X_UP ), MR( SPR_BTGEN_ROAD_RAMP_Y_UP ),
MR( SPR_BTGEN_MONO_X_SLOPE_UP ), MR( SPR_BTGEN_MONO_Y_SLOPE_UP ), MR( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MR( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
MR( SPR_BTGEN_MONO_RAMP_X_DOWN ), MR( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MR( SPR_BTGEN_MONO_RAMP_X_UP ), MR( SPR_BTGEN_MONO_RAMP_Y_UP ),
MR( SPR_BTGEN_MGLV_X_SLOPE_UP ), MR( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MR( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MR( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
MR( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_X_UP ), MR( SPR_BTGEN_MGLV_RAMP_Y_UP ),
};
static const PalSpriteID _bridge_sprite_table_archgirder_middle[] = {
MN( SPR_BTSGA_RAIL_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_RAIL_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_ROAD_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_ROAD_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_MONO_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_MONO_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_MGLV_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
MN( SPR_BTSGA_MGLV_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_archgirder_heads[] = {
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
MW( SPR_BTGEN_ROAD_X_SLOPE_UP ), MW( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MW( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MW( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
MW( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_X_UP ), MW( SPR_BTGEN_ROAD_RAMP_Y_UP ),
MW( SPR_BTGEN_MONO_X_SLOPE_UP ), MW( SPR_BTGEN_MONO_Y_SLOPE_UP ), MW( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MW( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
MW( SPR_BTGEN_MONO_RAMP_X_DOWN ), MW( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MW( SPR_BTGEN_MONO_RAMP_X_UP ), MW( SPR_BTGEN_MONO_RAMP_Y_UP ),
MW( SPR_BTGEN_MGLV_X_SLOPE_UP ), MW( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MW( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MW( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
MW( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_X_UP ), MW( SPR_BTGEN_MGLV_RAMP_Y_UP ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_A[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_B[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_C[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_D[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_E[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_F[] = {
MC( SPR_BTSUS_RAIL_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_MONO_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
};
static const PalSpriteID _bridge_sprite_table_concrete_suspended_heads[] = {
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
MC( SPR_BTGEN_ROAD_X_SLOPE_UP ), MC( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MC( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MC( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
MC( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_X_UP ), MC( SPR_BTGEN_ROAD_RAMP_Y_UP ),
MC( SPR_BTGEN_MONO_X_SLOPE_UP ), MC( SPR_BTGEN_MONO_Y_SLOPE_UP ), MC( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MC( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
MC( SPR_BTGEN_MONO_RAMP_X_DOWN ), MC( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MC( SPR_BTGEN_MONO_RAMP_X_UP ), MC( SPR_BTGEN_MONO_RAMP_Y_UP ),
MC( SPR_BTGEN_MGLV_X_SLOPE_UP ), MC( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MC( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MC( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
MC( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_X_UP ), MC( SPR_BTGEN_MGLV_RAMP_Y_UP ),
static const PalSpriteID _bridge_sprite_table_1_0[] = {
{ 0x9BD, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9BE, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9BF, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x9C0, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10F8, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x10F9, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1120, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
{ 0x1121, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_9_0[] = {
@@ -502,79 +497,79 @@ static const PalSpriteID _bridge_sprite_table_10_2[] = {
};
static const PalSpriteID _bridge_sprite_table_11_0[] = {
{ 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_11_1[] = {
{ 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_11_2[] = {
{ 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
{ 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_12_0[] = {
{ 0xA0B, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0C, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA11, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA12, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA17, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA18, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1D, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1E, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0B, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA0C, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA11, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA12, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA17, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA18, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1D, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
{ 0xA1E, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_12_1[] = {
{ 0xA09, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0E, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0F, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA14, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA15, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1A, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1B, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA20, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA09, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0E, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0F, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA14, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA15, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1A, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1B, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA20, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
};
static const PalSpriteID _bridge_sprite_table_12_2[] = {
{ 0xA0A, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0D, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA10, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA13, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA16, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA19, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1C, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1F, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0A, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA0D, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA10, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA13, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA16, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA19, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1C, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
{ 0xA1F, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
};
static const PalSpriteID * const _bridge_sprite_table_archgirder[] = {
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_middle,
_bridge_sprite_table_archgirder_heads,
static const PalSpriteID * const _bridge_sprite_table_2[] = {
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_0,
_bridge_sprite_table_2_1,
};
static const PalSpriteID * const _bridge_sprite_table_4[] = {
@@ -597,14 +592,14 @@ static const PalSpriteID * const _bridge_sprite_table_5[] = {
_bridge_sprite_table_5_6,
};
static const PalSpriteID * const _bridge_sprite_table_concrete_suspended[] = {
_bridge_sprite_table_concrete_suspended_A,
_bridge_sprite_table_concrete_suspended_B,
_bridge_sprite_table_concrete_suspended_C,
_bridge_sprite_table_concrete_suspended_D,
_bridge_sprite_table_concrete_suspended_E,
_bridge_sprite_table_concrete_suspended_F,
_bridge_sprite_table_concrete_suspended_heads,
static const PalSpriteID * const _bridge_sprite_table_3[] = {
_bridge_sprite_table_3_0,
_bridge_sprite_table_3_1,
_bridge_sprite_table_3_2,
_bridge_sprite_table_3_3,
_bridge_sprite_table_3_4,
_bridge_sprite_table_3_5,
_bridge_sprite_table_3_6,
};
static const PalSpriteID * const _bridge_sprite_table_6[] = {
@@ -637,24 +632,24 @@ static const PalSpriteID * const _bridge_sprite_table_8[] = {
_bridge_sprite_table_8_3,
};
static const PalSpriteID * const _bridge_sprite_table_wood[] = {
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_middle,
_bridge_sprite_table_wood_heads,
static const PalSpriteID * const _bridge_sprite_table_0[] = {
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_0,
_bridge_sprite_table_0_1,
};
static const PalSpriteID * const _bridge_sprite_table_concrete[] = {
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_middle,
_bridge_sprite_table_concrete_heads,
static const PalSpriteID * const _bridge_sprite_table_1[] = {
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_0,
_bridge_sprite_table_1_1,
};
static const PalSpriteID * const _bridge_sprite_table_9[] = {
@@ -694,14 +689,14 @@ static const PalSpriteID * const _bridge_sprite_table_12[] = {
_bridge_sprite_table_12_2,
_bridge_sprite_table_12_2,
_bridge_sprite_table_12_2,
_bridge_sprite_table_concrete_suspended_heads,
_bridge_sprite_table_3_6,
};
static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = {
_bridge_sprite_table_wood,
_bridge_sprite_table_concrete,
_bridge_sprite_table_archgirder,
_bridge_sprite_table_concrete_suspended,
_bridge_sprite_table_0,
_bridge_sprite_table_1,
_bridge_sprite_table_2,
_bridge_sprite_table_3,
_bridge_sprite_table_4,
_bridge_sprite_table_5,
_bridge_sprite_table_6,
@@ -725,7 +720,7 @@ static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = {
* @param nrl description of the rail bridge in query tool
* @param nrd description of the road bridge in query tool
*/
#define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
#define MB(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
{y, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, NULL, 0}
const BridgeSpec _orig_bridge[] = {
@@ -739,48 +734,45 @@ const BridgeSpec _orig_bridge[] = {
| | | | | | palette in GUI
string with description name on rail name on road
| | | */
MBR( 0, 0, 16, 80, 32, 0xA24, PAL_NONE,
MB( 0, 0, 16, 80, 32, 0xA24, PAL_NONE,
STR_5012_WOODEN, STR_501F_WOODEN_RAIL_BRIDGE, STR_5025_WOODEN_ROAD_BRIDGE),
MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
MB( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
STR_5013_CONCRETE, STR_5020_CONCRETE_RAIL_BRIDGE, STR_5026_CONCRETE_ROAD_BRIDGE),
MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
MB( 1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
STR_500F_GIRDER_STEEL, STR_501C_STEEL_GIRDER_RAIL_BRIDGE, STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
MB( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
STR_5011_SUSPENSION_CONCRETE, STR_501E_REINFORCED_CONCRETE_SUSPENSION, STR_5024_REINFORCED_CONCRETE_SUSPENSION),
MBR(1930, 3, 16, 185, 96, 0xA22, PAL_NONE,
MB( 1930, 3, 16, 185, 96, 0xA22, PAL_NONE,
STR_500E_SUSPENSION_STEEL, STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE, STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
MBR(1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
MB( 1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
STR_500E_SUSPENSION_STEEL, STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE, STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
MB( 1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
MB( 1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
MB( 1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
MB( 1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
STR_500F_GIRDER_STEEL, STR_501C_STEEL_GIRDER_RAIL_BRIDGE, STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
MBR(1995, 2, 16, 255, 320, 0xA28, PAL_NONE,
MB( 1995, 2, 16, 255, 320, 0xA28, PAL_NONE,
STR_5014_TUBULAR_STEEL, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE),
MBR(2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
MB( 2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
STR_5014_TUBULAR_STEEL, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE),
MBR(2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY,
MB( 2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY,
STR_BRIDGE_TUBULAR_SILICON, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE)
};
#undef MBR
#undef MN
#undef MR
#undef MW
#undef MC
#undef MB
+123 -131
View File
@@ -7,14 +7,6 @@
* This file contains all the data for vehicles
*/
enum {
RC_W = 0xFF, ///< Running cost price index (out of range) of wagons
RC_S = 0x2A, ///< Running cost price index of steam
RC_D = 0x2B, ///< Running cost price index of diesel
RC_E = 0x2C, ///< Running cost price index of electric
RC_R = 0x2E, ///< Running cost price index of road vehicles
};
/** Writes the properties of a train or road vehicle into the EngineInfo struct.
* @see EngineInfo
* @param a Introduction date
@@ -344,7 +336,7 @@ const EngineInfo _orig_engine_info[] = {
* @param d max_speed (kph)
* @param e power (hp)
* @param f weight
* @param g running_cost
* @param g running_cost_base
* @param h running_cost_class
* @param i capacity
* @param j cargo_type
@@ -371,127 +363,127 @@ const EngineInfo _orig_engine_info[] = {
#define L RAILTYPE_MAGLEV
const RailVehicleInfo _orig_rail_vehicle_info[NUM_TRAIN_ENGINES] = {
// image_index max_speed (kph) running_cost ai_rank
// | flags | power (hp) | running_cost_class | railtype
// | | base_cost | weight | | capacity | |
// | | | | | | | | | cargo_type | | engclass
// | | | | | | | | | | | | |
RVI( 2, G, 7, 64, 300, 47, 50, RC_S, 0, 0 , 1, R, S), // 0
RVI(19, G, 8, 80, 600, 65, 65, RC_D, 0, 0 , 4, R, D), // 1
RVI( 2, G, 10, 72, 400, 85, 90, RC_S, 0, 0 , 7, R, S), // 2
RVI( 0, G, 15, 96, 900, 130, 130, RC_S, 0, 0 , 19, R, S), // 3
RVI( 1, G, 19, 112, 1000, 140, 145, RC_S, 0, 0 , 20, R, S), // 4
RVI(12, G, 16, 120, 1400, 95, 125, RC_D, 0, 0 , 30, R, D), // 5
RVI(14, G, 20, 152, 2000, 120, 135, RC_D, 0, 0 , 31, R, D), // 6
RVI( 3, G, 14, 88, 1100, 145, 130, RC_S, 0, 0 , 19, R, S), // 7
RVI( 0, G, 13, 112, 1000, 131, 120, RC_S, 0, 0 , 20, R, S), // 8
RVI( 1, G, 19, 128, 1200, 162, 140, RC_S, 0, 0 , 21, R, S), // 9
RVI( 0, G, 22, 144, 1600, 170, 130, RC_S, 0, 0 , 22, R, S), // 10
RVI( 8, M, 11, 112, 600/2,32/2, 85/2, RC_D, 38, CT_PASSENGERS , 10, R, D), // 11
RVI(10, M, 14, 120, 700/2,38/2, 70/2, RC_D, 40, CT_PASSENGERS , 11, R, D), // 12
RVI( 4, G, 15, 128, 1250, 72, 95, RC_D, 0, 0 , 30, R, D), // 13
RVI( 5, G, 17, 144, 1750, 101, 120, RC_D, 0, 0 , 31, R, D), // 14
RVI( 4, G, 18, 160, 2580, 112, 140, RC_D, 0, 0 , 32, R, D), // 15
RVI(14, G, 23, 96, 4000, 150, 135, RC_D, 0, 0 , 33, R, D), // 16
RVI(12, G, 16, 112, 2400, 120, 105, RC_D, 0, 0 , 34, R, D), // 17
RVI(13, G, 30, 112, 6600, 207, 155, RC_D, 0, 0 , 35, R, D), // 18
RVI(15, G, 18, 104, 1500, 110, 105, RC_D, 0, 0 , 29, R, D), // 19
RVI(16, M, 35, 160, 3500/2,95/2, 205/2, RC_D, 0, 0 , 45, R, D), // 20
RVI(18, G, 21, 104, 2200, 120, 145, RC_D, 0, 0 , 32, R, D), // 21
RVI( 6, M, 20, 200, 4500/2,70/2, 190/2, RC_D, 4, CT_MAIL , 50, R, D), // 22
RVI(20, G, 26, 160, 3600, 84, 180, RC_E, 0, 0 , 40, C, E), // 23
RVI(20, G, 30, 176, 5000, 82, 205, RC_E, 0, 0 , 41, C, E), // 24
RVI(21, M, 40, 240, 7000/2,90/2, 240/2, RC_E, 0, 0 , 51, C, E), // 25
RVI(23, M, 43, 264, 8000/2,95/2, 250/2, RC_E, 0, 0 , 52, C, E), // 26
RVI(33, W, 247, 0, 0, 25, 0, RC_W, 40, CT_PASSENGERS , 0, R, A), // 27
RVI(35, W, 228, 0, 0, 21, 0, RC_W, 30, CT_MAIL , 0, R, A), // 28
RVI(34, W, 176, 0, 0, 18, 0, RC_W, 30, CT_COAL , 0, R, A), // 29
RVI(36, W, 200, 0, 0, 24, 0, RC_W, 30, CT_OIL , 0, R, A), // 30
RVI(37, W, 192, 0, 0, 20, 0, RC_W, 25, CT_LIVESTOCK , 0, R, A), // 31
RVI(38, W, 190, 0, 0, 21, 0, RC_W, 25, CT_GOODS , 0, R, A), // 32
RVI(39, W, 182, 0, 0, 19, 0, RC_W, 30, CT_GRAIN , 0, R, A), // 33
RVI(40, W, 181, 0, 0, 16, 0, RC_W, 30, CT_WOOD , 0, R, A), // 34
RVI(41, W, 179, 0, 0, 19, 0, RC_W, 30, CT_IRON_ORE , 0, R, A), // 35
RVI(42, W, 196, 0, 0, 18, 0, RC_W, 20, CT_STEEL , 0, R, A), // 36
RVI(43, W, 255, 0, 0, 30, 0, RC_W, 20, CT_VALUABLES , 0, R, A), // 37
RVI(44, W, 191, 0, 0, 22, 0, RC_W, 25, CT_FOOD , 0, R, A), // 38
RVI(45, W, 196, 0, 0, 18, 0, RC_W, 20, CT_PAPER , 0, R, A), // 39
RVI(46, W, 179, 0, 0, 19, 0, RC_W, 30, CT_COPPER_ORE , 0, R, A), // 40
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 25, CT_WATER , 0, R, A), // 41
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 25, CT_FRUIT , 0, R, A), // 42
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 21, CT_RUBBER , 0, R, A), // 43
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 30, CT_SUGAR , 0, R, A), // 44
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 30, CT_COTTON_CANDY, 0, R, A), // 45
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 30, CT_TOFFEE , 0, R, A), // 46
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 20, CT_BUBBLES , 0, R, A), // 47
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 25, CT_COLA , 0, R, A), // 48
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 25, CT_CANDY , 0, R, A), // 49
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 20, CT_TOYS , 0, R, A), // 50
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 22, CT_BATTERIES , 0, R, A), // 51
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 25, CT_FIZZY_DRINKS, 0, R, A), // 52
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 30, CT_PLASTIC , 0, R, A), // 53
RVI(25, G, 52, 304, 9000, 95, 230, RC_E, 0, 0 , 60, O, N), // 54
RVI(26, M, 60, 336, 10000/2,85/2, 240/2, RC_E, 25, CT_PASSENGERS , 62, O, N), // 55
RVI(26, G, 53, 320, 5000, 95, 230, RC_E, 0, 0 , 63, O, N), // 56
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 45, CT_PASSENGERS , 0, O, A), // 57
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 35, CT_MAIL , 0, O, A), // 58
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 35, CT_COAL , 0, O, A), // 59
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 35, CT_OIL , 0, O, A), // 60
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 30, CT_LIVESTOCK , 0, O, A), // 61
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 30, CT_GOODS , 0, O, A), // 62
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 35, CT_GRAIN , 0, O, A), // 63
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 35, CT_WOOD , 0, O, A), // 64
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 35, CT_IRON_ORE , 0, O, A), // 65
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 25, CT_STEEL , 0, O, A), // 66
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 25, CT_VALUABLES , 0, O, A), // 67
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 30, CT_FOOD , 0, O, A), // 68
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 25, CT_PAPER , 0, O, A), // 69
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 35, CT_COPPER_ORE , 0, O, A), // 70
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 30, CT_WATER , 0, O, A), // 71
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 30, CT_FRUIT , 0, O, A), // 72
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 26, CT_RUBBER , 0, O, A), // 73
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 35, CT_SUGAR , 0, O, A), // 74
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 35, CT_COTTON_CANDY, 0, O, A), // 75
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 35, CT_TOFFEE , 0, O, A), // 76
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 25, CT_BUBBLES , 0, O, A), // 77
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 30, CT_COLA , 0, O, A), // 78
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 30, CT_CANDY , 0, O, A), // 79
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 25, CT_TOYS , 0, O, A), // 80
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 27, CT_BATTERIES , 0, O, A), // 81
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 30, CT_FIZZY_DRINKS, 0, O, A), // 82
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 35, CT_PLASTIC , 0, O, A), // 83
RVI(28, G, 70, 400, 10000, 105, 250, RC_E, 0, 0 , 70, L, V), // 84
RVI(29, G, 74, 448, 12000, 120, 253, RC_E, 0, 0 , 71, L, V), // 85
RVI(30, G, 82, 480, 15000, 130, 254, RC_E, 0, 0 , 72, L, V), // 86
RVI(31, M, 95, 640, 20000/2,150/2,255/2, RC_E, 0, 0 , 73, L, V), // 87
RVI(28, G, 70, 480, 10000, 120, 250, RC_E, 0, 0 , 74, L, V), // 88
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 47, CT_PASSENGERS , 0, L, A), // 89
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 37, CT_MAIL , 0, L, A), // 90
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 37, CT_COAL , 0, L, A), // 91
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 37, CT_OIL , 0, L, A), // 92
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 32, CT_LIVESTOCK , 0, L, A), // 93
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 32, CT_GOODS , 0, L, A), // 94
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 37, CT_GRAIN , 0, L, A), // 95
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 37, CT_WOOD , 0, L, A), // 96
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 37, CT_IRON_ORE , 0, L, A), // 97
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 27, CT_STEEL , 0, L, A), // 98
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 27, CT_VALUABLES , 0, L, A), // 99
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 32, CT_FOOD , 0, L, A), // 100
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 27, CT_PAPER , 0, L, A), // 101
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 37, CT_COPPER_ORE , 0, L, A), // 102
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 32, CT_WATER , 0, L, A), // 103
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 32, CT_FRUIT , 0, L, A), // 104
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 28, CT_RUBBER , 0, L, A), // 105
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 37, CT_SUGAR , 0, L, A), // 106
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 37, CT_COTTON_CANDY, 0, L, A), // 107
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 37, CT_TOFFEE , 0, L, A), // 108
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 27, CT_BUBBLES , 0, L, A), // 109
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 32, CT_COLA , 0, L, A), // 110
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 32, CT_CANDY , 0, L, A), // 111
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 27, CT_TOYS , 0, L, A), // 112
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 29, CT_BATTERIES , 0, L, A), // 113
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 32, CT_FIZZY_DRINKS, 0, L, A), // 114
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 37, CT_PLASTIC , 0, L, A), // 115
// image_index max_speed (kph) running_cost_base ai_rank
// | flags | power (hp) | running_cost_class | railtype
// | | base_cost | weight | | capacity | |
// | | | | | | | | | cargo_type | | engclass
// | | | | | | | | | | | | |
RVI( 2, G, 7, 64, 300, 47, 50, S, 0, 0 , 1, R, S), // 0
RVI(19, G, 8, 80, 600, 65, 65, D, 0, 0 , 4, R, D), // 1
RVI( 2, G, 10, 72, 400, 85, 90, S, 0, 0 , 7, R, S), // 2
RVI( 0, G, 15, 96, 900, 130, 130, S, 0, 0 , 19, R, S), // 3
RVI( 1, G, 19, 112, 1000, 140, 145, S, 0, 0 , 20, R, S), // 4
RVI(12, G, 16, 120, 1400, 95, 125, D, 0, 0 , 30, R, D), // 5
RVI(14, G, 20, 152, 2000, 120, 135, D, 0, 0 , 31, R, D), // 6
RVI( 3, G, 14, 88, 1100, 145, 130, S, 0, 0 , 19, R, S), // 7
RVI( 0, G, 13, 112, 1000, 131, 120, S, 0, 0 , 20, R, S), // 8
RVI( 1, G, 19, 128, 1200, 162, 140, S, 0, 0 , 21, R, S), // 9
RVI( 0, G, 22, 144, 1600, 170, 130, S, 0, 0 , 22, R, S), // 10
RVI( 8, M, 11, 112, 600/2,32/2, 85/2, D, 38, CT_PASSENGERS , 10, R, D), // 11
RVI(10, M, 14, 120, 700/2,38/2, 70/2, D, 40, CT_PASSENGERS , 11, R, D), // 12
RVI( 4, G, 15, 128, 1250, 72, 95, D, 0, 0 , 30, R, D), // 13
RVI( 5, G, 17, 144, 1750, 101, 120, D, 0, 0 , 31, R, D), // 14
RVI( 4, G, 18, 160, 2580, 112, 140, D, 0, 0 , 32, R, D), // 15
RVI(14, G, 23, 96, 4000, 150, 135, D, 0, 0 , 33, R, D), // 16
RVI(12, G, 16, 112, 2400, 120, 105, D, 0, 0 , 34, R, D), // 17
RVI(13, G, 30, 112, 6600, 207, 155, D, 0, 0 , 35, R, D), // 18
RVI(15, G, 18, 104, 1500, 110, 105, D, 0, 0 , 29, R, D), // 19
RVI(16, M, 35, 160, 3500/2,95/2, 205/2, D, 0, 0 , 45, R, D), // 20
RVI(18, G, 21, 104, 2200, 120, 145, D, 0, 0 , 32, R, D), // 21
RVI( 6, M, 20, 200, 4500/2,70/2, 190/2, D, 4, CT_MAIL , 50, R, D), // 22
RVI(20, G, 26, 160, 3600, 84, 180, E, 0, 0 , 40, C, E), // 23
RVI(20, G, 30, 176, 5000, 82, 205, E, 0, 0 , 41, C, E), // 24
RVI(21, M, 40, 240, 7000/2,90/2, 240/2, E, 0, 0 , 51, C, E), // 25
RVI(23, M, 43, 264, 8000/2,95/2, 250/2, E, 0, 0 , 52, C, E), // 26
RVI(33, W, 247, 0, 0, 25, 0, 0, 40, CT_PASSENGERS , 0, R, A), // 27
RVI(35, W, 228, 0, 0, 21, 0, 0, 30, CT_MAIL , 0, R, A), // 28
RVI(34, W, 176, 0, 0, 18, 0, 0, 30, CT_COAL , 0, R, A), // 29
RVI(36, W, 200, 0, 0, 24, 0, 0, 30, CT_OIL , 0, R, A), // 30
RVI(37, W, 192, 0, 0, 20, 0, 0, 25, CT_LIVESTOCK , 0, R, A), // 31
RVI(38, W, 190, 0, 0, 21, 0, 0, 25, CT_GOODS , 0, R, A), // 32
RVI(39, W, 182, 0, 0, 19, 0, 0, 30, CT_GRAIN , 0, R, A), // 33
RVI(40, W, 181, 0, 0, 16, 0, 0, 30, CT_WOOD , 0, R, A), // 34
RVI(41, W, 179, 0, 0, 19, 0, 0, 30, CT_IRON_ORE , 0, R, A), // 35
RVI(42, W, 196, 0, 0, 18, 0, 0, 20, CT_STEEL , 0, R, A), // 36
RVI(43, W, 255, 0, 0, 30, 0, 0, 20, CT_VALUABLES , 0, R, A), // 37
RVI(44, W, 191, 0, 0, 22, 0, 0, 25, CT_FOOD , 0, R, A), // 38
RVI(45, W, 196, 0, 0, 18, 0, 0, 20, CT_PAPER , 0, R, A), // 39
RVI(46, W, 179, 0, 0, 19, 0, 0, 30, CT_COPPER_ORE , 0, R, A), // 40
RVI(47, W, 199, 0, 0, 25, 0, 0, 25, CT_WATER , 0, R, A), // 41
RVI(48, W, 182, 0, 0, 18, 0, 0, 25, CT_FRUIT , 0, R, A), // 42
RVI(49, W, 185, 0, 0, 19, 0, 0, 21, CT_RUBBER , 0, R, A), // 43
RVI(50, W, 176, 0, 0, 19, 0, 0, 30, CT_SUGAR , 0, R, A), // 44
RVI(51, W, 178, 0, 0, 20, 0, 0, 30, CT_COTTON_CANDY, 0, R, A), // 45
RVI(52, W, 192, 0, 0, 20, 0, 0, 30, CT_TOFFEE , 0, R, A), // 46
RVI(53, W, 190, 0, 0, 21, 0, 0, 20, CT_BUBBLES , 0, R, A), // 47
RVI(54, W, 182, 0, 0, 24, 0, 0, 25, CT_COLA , 0, R, A), // 48
RVI(55, W, 181, 0, 0, 21, 0, 0, 25, CT_CANDY , 0, R, A), // 49
RVI(56, W, 183, 0, 0, 21, 0, 0, 20, CT_TOYS , 0, R, A), // 50
RVI(57, W, 196, 0, 0, 18, 0, 0, 22, CT_BATTERIES , 0, R, A), // 51
RVI(58, W, 193, 0, 0, 18, 0, 0, 25, CT_FIZZY_DRINKS, 0, R, A), // 52
RVI(59, W, 191, 0, 0, 18, 0, 0, 30, CT_PLASTIC , 0, R, A), // 53
RVI(25, G, 52, 304, 9000, 95, 230, E, 0, 0 , 60, O, N), // 54
RVI(26, M, 60, 336, 10000/2,85/2, 240/2, E, 25, CT_PASSENGERS , 62, O, N), // 55
RVI(26, G, 53, 320, 5000, 95, 230, E, 0, 0 , 63, O, N), // 56
RVI(60, W, 247, 0, 0, 25, 0, 0, 45, CT_PASSENGERS , 0, O, A), // 57
RVI(62, W, 228, 0, 0, 21, 0, 0, 35, CT_MAIL , 0, O, A), // 58
RVI(61, W, 176, 0, 0, 18, 0, 0, 35, CT_COAL , 0, O, A), // 59
RVI(63, W, 200, 0, 0, 24, 0, 0, 35, CT_OIL , 0, O, A), // 60
RVI(64, W, 192, 0, 0, 20, 0, 0, 30, CT_LIVESTOCK , 0, O, A), // 61
RVI(65, W, 190, 0, 0, 21, 0, 0, 30, CT_GOODS , 0, O, A), // 62
RVI(66, W, 182, 0, 0, 19, 0, 0, 35, CT_GRAIN , 0, O, A), // 63
RVI(67, W, 181, 0, 0, 16, 0, 0, 35, CT_WOOD , 0, O, A), // 64
RVI(68, W, 179, 0, 0, 19, 0, 0, 35, CT_IRON_ORE , 0, O, A), // 65
RVI(69, W, 196, 0, 0, 18, 0, 0, 25, CT_STEEL , 0, O, A), // 66
RVI(70, W, 255, 0, 0, 30, 0, 0, 25, CT_VALUABLES , 0, O, A), // 67
RVI(71, W, 191, 0, 0, 22, 0, 0, 30, CT_FOOD , 0, O, A), // 68
RVI(72, W, 196, 0, 0, 18, 0, 0, 25, CT_PAPER , 0, O, A), // 69
RVI(73, W, 179, 0, 0, 19, 0, 0, 35, CT_COPPER_ORE , 0, O, A), // 70
RVI(47, W, 199, 0, 0, 25, 0, 0, 30, CT_WATER , 0, O, A), // 71
RVI(48, W, 182, 0, 0, 18, 0, 0, 30, CT_FRUIT , 0, O, A), // 72
RVI(49, W, 185, 0, 0, 19, 0, 0, 26, CT_RUBBER , 0, O, A), // 73
RVI(50, W, 176, 0, 0, 19, 0, 0, 35, CT_SUGAR , 0, O, A), // 74
RVI(51, W, 178, 0, 0, 20, 0, 0, 35, CT_COTTON_CANDY, 0, O, A), // 75
RVI(52, W, 192, 0, 0, 20, 0, 0, 35, CT_TOFFEE , 0, O, A), // 76
RVI(53, W, 190, 0, 0, 21, 0, 0, 25, CT_BUBBLES , 0, O, A), // 77
RVI(54, W, 182, 0, 0, 24, 0, 0, 30, CT_COLA , 0, O, A), // 78
RVI(55, W, 181, 0, 0, 21, 0, 0, 30, CT_CANDY , 0, O, A), // 79
RVI(56, W, 183, 0, 0, 21, 0, 0, 25, CT_TOYS , 0, O, A), // 80
RVI(57, W, 196, 0, 0, 18, 0, 0, 27, CT_BATTERIES , 0, O, A), // 81
RVI(58, W, 193, 0, 0, 18, 0, 0, 30, CT_FIZZY_DRINKS, 0, O, A), // 82
RVI(59, W, 191, 0, 0, 18, 0, 0, 35, CT_PLASTIC , 0, O, A), // 83
RVI(28, G, 70, 400, 10000, 105, 250, E, 0, 0 , 70, L, V), // 84
RVI(29, G, 74, 448, 12000, 120, 253, E, 0, 0 , 71, L, V), // 85
RVI(30, G, 82, 480, 15000, 130, 254, E, 0, 0 , 72, L, V), // 86
RVI(31, M, 95, 640, 20000/2,150/2,255/2, E, 0, 0 , 73, L, V), // 87
RVI(28, G, 70, 480, 10000, 120, 250, E, 0, 0 , 74, L, V), // 88
RVI(60, W, 247, 0, 0, 25, 0, 0, 47, CT_PASSENGERS , 0, L, A), // 89
RVI(62, W, 228, 0, 0, 21, 0, 0, 37, CT_MAIL , 0, L, A), // 90
RVI(61, W, 176, 0, 0, 18, 0, 0, 37, CT_COAL , 0, L, A), // 91
RVI(63, W, 200, 0, 0, 24, 0, 0, 37, CT_OIL , 0, L, A), // 92
RVI(64, W, 192, 0, 0, 20, 0, 0, 32, CT_LIVESTOCK , 0, L, A), // 93
RVI(65, W, 190, 0, 0, 21, 0, 0, 32, CT_GOODS , 0, L, A), // 94
RVI(66, W, 182, 0, 0, 19, 0, 0, 37, CT_GRAIN , 0, L, A), // 95
RVI(67, W, 181, 0, 0, 16, 0, 0, 37, CT_WOOD , 0, L, A), // 96
RVI(68, W, 179, 0, 0, 19, 0, 0, 37, CT_IRON_ORE , 0, L, A), // 97
RVI(69, W, 196, 0, 0, 18, 0, 0, 27, CT_STEEL , 0, L, A), // 98
RVI(70, W, 255, 0, 0, 30, 0, 0, 27, CT_VALUABLES , 0, L, A), // 99
RVI(71, W, 191, 0, 0, 22, 0, 0, 32, CT_FOOD , 0, L, A), // 100
RVI(72, W, 196, 0, 0, 18, 0, 0, 27, CT_PAPER , 0, L, A), // 101
RVI(73, W, 179, 0, 0, 19, 0, 0, 37, CT_COPPER_ORE , 0, L, A), // 102
RVI(47, W, 199, 0, 0, 25, 0, 0, 32, CT_WATER , 0, L, A), // 103
RVI(48, W, 182, 0, 0, 18, 0, 0, 32, CT_FRUIT , 0, L, A), // 104
RVI(49, W, 185, 0, 0, 19, 0, 0, 28, CT_RUBBER , 0, L, A), // 105
RVI(50, W, 176, 0, 0, 19, 0, 0, 37, CT_SUGAR , 0, L, A), // 106
RVI(51, W, 178, 0, 0, 20, 0, 0, 37, CT_COTTON_CANDY, 0, L, A), // 107
RVI(52, W, 192, 0, 0, 20, 0, 0, 37, CT_TOFFEE , 0, L, A), // 108
RVI(53, W, 190, 0, 0, 21, 0, 0, 27, CT_BUBBLES , 0, L, A), // 109
RVI(54, W, 182, 0, 0, 24, 0, 0, 32, CT_COLA , 0, L, A), // 110
RVI(55, W, 181, 0, 0, 21, 0, 0, 32, CT_CANDY , 0, L, A), // 111
RVI(56, W, 183, 0, 0, 21, 0, 0, 27, CT_TOYS , 0, L, A), // 112
RVI(57, W, 196, 0, 0, 18, 0, 0, 29, CT_BATTERIES , 0, L, A), // 113
RVI(58, W, 193, 0, 0, 18, 0, 0, 32, CT_FIZZY_DRINKS, 0, L, A), // 114
RVI(59, W, 191, 0, 0, 18, 0, 0, 37, CT_PLASTIC , 0, L, A), // 115
};
#undef L
#undef O
@@ -617,7 +609,7 @@ const AircraftVehicleInfo _orig_aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES] = {
* @param f capacity
* @param g cargo_type
*/
#define ROV(a, b, c, d, e, f, g) { a, b, c, RC_R, {d}, e, f, g }
#define ROV(a, b, c, d, e, f, g) { a, b, c, {d}, e, f, g }
const RoadVehicleInfo _orig_road_vehicle_info[NUM_ROAD_ENGINES] = {
// image_index sfx max_speed
// | base_cost | | capacity
+3 -3
View File
@@ -677,7 +677,7 @@ enum Sprites {
SPR_BTSGA_X_FRONT = 2503,
SPR_BTSGA_Y_FRONT = 2504,
SPR_BTSGA_X_PILLAR = 2505,
SPR_BTSGA_Y_PILLAR = 2506,
SPR_BTSGA_Y_PILLAR = 2606,
SPR_BTSGA_MONO_X_REAR = 4324,
SPR_BTSGA_MONO_Y_REAR = 4325,
SPR_BTSGA_MGLV_X_REAR = 4364,
@@ -709,8 +709,8 @@ enum Sprites {
SPR_BTSUS_ROAD_X_REAR_TILE_B = 2462,
SPR_BTSUS_X_FRONT_TILE_A = 2463,
SPR_BTSUS_X_FRONT_TILE_B = 2464,
SPR_BTSUS_ROAD_X_REAR_TILE_D = 2465,
SPR_BTSUS_ROAD_X_REAR_TILE_C = 2466,
SPR_BTSUS_ROAD_X_TILE_D = 2465,
SPR_BTSUS_ROAD_X_TILE_C = 2466,
SPR_BTSUS_X_FRONT_TILE_D = 2467,
SPR_BTSUS_X_FRONT_TILE_C = 2468,
SPR_BTSUS_RAIL_Y_REAR_TILE_A = 2469,
+18 -7
View File
@@ -14,7 +14,6 @@
#include "date_type.h"
#include "player_type.h"
#include "direction_type.h"
#include "track_type.h"
/** The returned bits of VehicleEnterTile. */
enum VehicleEnterTileStatus {
@@ -61,17 +60,29 @@ typedef void GetTileDescProc(TileIndex tile, TileDesc *td);
/**
* GetTileTrackStatusProcs return a value that contains the possible tracks
* that can be taken on a given tile by a given transport.
* The return value contains the existing trackdirs and signal states.
* that can be taken on a given tile by a given transport. The return value is
* composed as follows: 0xaabbccdd. ccdd and aabb are bitmasks of trackdirs,
* where bit n corresponds to trackdir n. ccdd are the trackdirs that are
* present in the tile (1==present, 0==not present), aabb is the signal
* status, if applicable (0==green/no signal, 1==red, note that this is
* reversed from map3/2[tile] for railway signals).
*
* see track_func.h for usage of TrackStatus.
* The result (let's call it ts) is often used as follows:
* tracks = (byte)(ts | ts >>8)
* This effectively converts the present part of the result (ccdd) to a
* track bitmask, which disregards directions. Normally, this is the same as just
* doing (byte)ts I think, although I am not really sure
*
* A trackdir is combination of a track and a dir, where the lower three bits
* are a track, the fourth bit is the direction. these give 12 (or 14)
* possible options: 0-5 and 8-13, so we need 14 bits for a trackdir bitmask
* above.
* @param tile the tile to get the track status from
* @param mode the mode of transportation
* @param sub_mode used to differentiate between different kinds within the mode
* @return the track status information
* @return the above mentions track status information
*/
typedef TrackStatus GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side);
typedef uint32 GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side);
typedef void GetProducedCargoProc(TileIndex tile, CargoID *b);
typedef void ClickTileProc(TileIndex tile);
typedef void AnimateTileProc(TileIndex tile);
@@ -116,7 +127,7 @@ struct TileTypeProcs {
extern const TileTypeProcs * const _tile_type_procs[16];
TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR);
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR);
void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac);
void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player);
void AnimateTile(TileIndex tile);
+10 -19
View File
@@ -106,17 +106,6 @@ static inline bool IsTileType(TileIndex tile, TileType type)
return GetTileType(tile) == type;
}
/**
* Checks if a tile is valid
*
* @param tile The tile to check
* @return True if the tile is on the map and not one of MP_VOID.
*/
static inline bool IsValidTile(TileIndex tile)
{
return tile < MapSize() && !IsTileType(tile, MP_VOID);
}
/**
* Returns the owner of a tile
*
@@ -126,13 +115,14 @@ static inline bool IsValidTile(TileIndex tile)
*
* @param tile The tile to check
* @return The owner of the tile
* @pre IsValidTile(tile)
* @pre The type of the tile must not be MP_HOUSE and MP_INDUSTRY
* @pre tile < MapSize()
* @pre The type of the tile must not be MP_HOUSE, MP_VOID and MP_INDUSTRY
*/
static inline Owner GetTileOwner(TileIndex tile)
{
assert(IsValidTile(tile));
assert(tile < MapSize());
assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_VOID));
assert(!IsTileType(tile, MP_INDUSTRY));
return (Owner)_m[tile].m1;
@@ -146,13 +136,14 @@ static inline Owner GetTileOwner(TileIndex tile)
*
* @param tile The tile to change the owner status.
* @param owner The new owner.
* @pre IsValidTile(tile)
* @pre The type of the tile must not be MP_HOUSE and MP_INDUSTRY
* @pre tile < MapSize()
* @pre The type of the tile must not be MP_HOUSE, MP_VOID and MP_INDUSTRY
*/
static inline void SetTileOwner(TileIndex tile, Owner owner)
{
assert(IsValidTile(tile));
assert(tile < MapSize());
assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_VOID));
assert(!IsTileType(tile, MP_INDUSTRY));
_m[tile].m1 = owner;
@@ -174,7 +165,7 @@ static inline bool IsTileOwner(TileIndex tile, Owner owner)
* Set the tropic zone
* @param tile the tile to set the zone of
* @param type the new type
* @pre tile < MapSize()
* @pre assert(tile < MapSize());
*/
static inline void SetTropicZone(TileIndex tile, TropicZone type)
{
@@ -185,7 +176,7 @@ static inline void SetTropicZone(TileIndex tile, TropicZone type)
/**
* Get the tropic zone
* @param tile the tile to get the zone of
* @pre tile < MapSize()
* @pre assert(tile < MapSize());
* @return the zone type
*/
static inline TropicZone GetTropicZone(TileIndex tile)
+2 -8
View File
@@ -46,11 +46,7 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 time
* - p1 = (bit 16-23) - Order index to modify.
* - p1 = (bit 24) - Whether to change the waiting time or the travelling
* time.
* - p1 = (bit 25) - Whether p2 contains waiting and travelling time.
* @param p2 The amount of time to wait.
* - p2 = (bit 0-15) - Waiting or travelling time as specified by p1 bit 24 if p1 bit 25 is not set,
* Travelling time if p1 bit 25 is set.
* - p2 = (bit 16-31) - Waiting time if p1 bit 25 is set
*/
CommandCost CmdChangeTimetable(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
@@ -66,16 +62,14 @@ CommandCost CmdChangeTimetable(TileIndex tile, uint32 flags, uint32 p1, uint32 p
Order *order = GetVehicleOrder(v, order_number);
if (order == NULL) return CMD_ERROR;
bool packed_time = HasBit(p1, 25);
bool is_journey = HasBit(p1, 24) || packed_time;
bool is_journey = HasBit(p1, 24);
if (!is_journey) {
if (order->type != OT_GOTO_STATION) return_cmd_error(STR_TIMETABLE_ONLY_WAIT_AT_STATIONS);
if (_patches.new_nonstop && (order->flags & OFB_NON_STOP)) return_cmd_error(STR_TIMETABLE_NOT_STOPPING_HERE);
}
if (flags & DC_EXEC) {
ChangeTimetable(v, order_number, GB(p2, 0, 16), is_journey);
if (packed_time) ChangeTimetable(v, order_number, GB(p2, 16, 16), false);
ChangeTimetable(v, order_number, p2, is_journey);
}
return CommandCost();
+2 -7
View File
@@ -592,7 +592,7 @@ static void GetTileDesc_Town(TileIndex tile, TileDesc *td)
td->owner = OWNER_TOWN;
}
static TrackStatus GetTileTrackStatus_Town(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static uint32 GetTileTrackStatus_Town(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
/* not used */
return 0;
@@ -1619,12 +1619,7 @@ HouseZonesBits GetTownRadiusGroup(const Town* t, TileIndex tile)
*/
static inline void ClearMakeHouseTile(TileIndex tile, TownID tid, byte counter, byte stage, HouseID type, byte random_bits)
{
#if !defined(NDEBUG) || defined(WITH_ASSERT)
CommandCost cc =
#endif /* !defined(NDEBUG) || defined(WITH_ASSERT) */
DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR);
CommandCost cc = DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR);
assert(CmdSucceeded(cc));
MakeHouseTile(tile, tid, counter, stage, type, random_bits);
-74
View File
@@ -273,64 +273,6 @@ static inline TrackBits TrackdirBitsToTrackBits(TrackdirBits bits)
return (TrackBits)((bits | (bits >> 8)) & TRACK_BIT_MASK);
}
/**
* Converts TrackBits to TrackdirBits while allowing both directions.
*
* @param bits The TrackBits
* @return The TrackDirBits containing of bits in both directions.
*/
static inline TrackdirBits TrackBitsToTrackdirBits(TrackBits bits)
{
return (TrackdirBits)(bits * 0x101);
}
/**
* Returns the present-trackdir-information of a TrackStatus.
*
* @param ts The TrackStatus returned by GetTileTrackStatus()
* @return the present trackdirs
*/
static inline TrackdirBits TrackStatusToTrackdirBits(TrackStatus ts)
{
return (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
}
/**
* Returns the present-track-information of a TrackStatus.
*
* @param ts The TrackStatus returned by GetTileTrackStatus()
* @return the present tracks
*/
static inline TrackBits TrackStatusToTrackBits(TrackStatus ts)
{
return TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(ts));
}
/**
* Returns the red-signal-information of a TrackStatus.
*
* Note: The result may contain red signals for non-present tracks.
*
* @param ts The TrackStatus returned by GetTileTrackStatus()
* @return the The trackdirs that are blocked by red-signals
*/
static inline TrackdirBits TrackStatusToRedSignals(TrackStatus ts)
{
return (TrackdirBits)((ts >> 16) & TRACKDIR_BIT_MASK);
}
/**
* Builds a TrackStatus
*
* @param trackdirbits present trackdirs
* @param red_signals red signals
* @return the TrackStatus representing the given information
*/
static inline TrackStatus CombineTrackStatus(TrackdirBits trackdirbits, TrackdirBits red_signals)
{
return (TrackStatus)(trackdirbits | (red_signals << 16));
}
/**
* Maps a trackdir to the trackdir that you will end up on if you go straight
* ahead.
@@ -574,20 +516,4 @@ static inline bool IsStraightRoadTrackdir(Trackdir dir)
return (dir & 0x06) == 0;
}
/**
* Checks whether a trackdir on a specific slope is going uphill.
*
* Valid for rail and road tracks.
* Valid for tile-slopes (under foundation) and foundation-slopes (on foundation).
*
* @param slope The slope of the tile.
* @param dir The trackdir of interest.
* @return true iff the track goes upwards.
*/
static inline bool IsUphillTrackdir(Slope slope, Trackdir dir)
{
extern const TrackdirBits _uphill_trackdirs[];
return HasBit(_uphill_trackdirs[RemoveHalftileSlope(slope)], dir);
}
#endif /* TRACK_FUNC_H */
-2
View File
@@ -124,6 +124,4 @@ template <> struct EnumPropsT<TrackdirBits> : MakeEnumPropsT<TrackdirBits, uint1
typedef TinyEnumT<TrackdirBits> TrackdirBitsShort;
DECLARE_ENUM_AS_BIT_SET(TrackdirBits);
typedef uint32 TrackStatus;
#endif /* TRACK_TYPE_H */
+24 -24
View File
@@ -17,12 +17,12 @@
*/
enum TrainSubtype {
TS_FRONT = 0, ///< Leading engine of a train
TS_ARTICULATED_PART = 1, ///< Articulated part of an engine
TS_WAGON = 2, ///< Wagon
TS_ENGINE = 3, ///< Engine, that can be front engines, but might be placed behind another engine
TS_FREE_WAGON = 4, ///< First in a wagon chain (in depot)
TS_MULTIHEADED = 5, ///< Engine is a multiheaded
Train_Front = 0, ///< Leading engine of a train
Train_Articulated_Part = 1, ///< Articulated part of an engine
Train_Wagon = 2, ///< Wagon
Train_Engine = 3, ///< Engine, that can be front engines, but might be placed behind another engine
Train_Free_Wagon = 4, ///< First in a wagon chain (in depot)
Train_Multiheaded = 5, ///< Engine is a multiheaded
};
@@ -33,7 +33,7 @@ enum TrainSubtype {
static inline bool IsFrontEngine(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_FRONT);
return HasBit(v->subtype, Train_Front);
}
/** Set front engine state
@@ -42,7 +42,7 @@ static inline bool IsFrontEngine(const Vehicle *v)
static inline void SetFrontEngine(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_FRONT);
SetBit(v->subtype, Train_Front);
}
/** Remove the front engine state
@@ -51,7 +51,7 @@ static inline void SetFrontEngine(Vehicle *v)
static inline void ClearFrontEngine(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_FRONT);
ClrBit(v->subtype, Train_Front);
}
/** Check if a vehicle is an articulated part of an engine
@@ -61,7 +61,7 @@ static inline void ClearFrontEngine(Vehicle *v)
static inline bool IsArticulatedPart(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_ARTICULATED_PART);
return HasBit(v->subtype, Train_Articulated_Part);
}
/** Set a vehicle to be an articulated part
@@ -70,7 +70,7 @@ static inline bool IsArticulatedPart(const Vehicle *v)
static inline void SetArticulatedPart(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_ARTICULATED_PART);
SetBit(v->subtype, Train_Articulated_Part);
}
/** Clear a vehicle from being an articulated part
@@ -79,7 +79,7 @@ static inline void SetArticulatedPart(Vehicle *v)
static inline void ClearArticulatedPart(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_ARTICULATED_PART);
ClrBit(v->subtype, Train_Articulated_Part);
}
/** Check if a vehicle is a wagon
@@ -89,7 +89,7 @@ static inline void ClearArticulatedPart(Vehicle *v)
static inline bool IsTrainWagon(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_WAGON);
return HasBit(v->subtype, Train_Wagon);
}
/** Set a vehicle to be a wagon
@@ -98,7 +98,7 @@ static inline bool IsTrainWagon(const Vehicle *v)
static inline void SetTrainWagon(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_WAGON);
SetBit(v->subtype, Train_Wagon);
}
/** Clear wagon property
@@ -107,7 +107,7 @@ static inline void SetTrainWagon(Vehicle *v)
static inline void ClearTrainWagon(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_WAGON);
ClrBit(v->subtype, Train_Wagon);
}
/** Check if a vehicle is an engine (can be first in a train)
@@ -117,7 +117,7 @@ static inline void ClearTrainWagon(Vehicle *v)
static inline bool IsTrainEngine(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_ENGINE);
return HasBit(v->subtype, Train_Engine);
}
/** Set engine status
@@ -126,7 +126,7 @@ static inline bool IsTrainEngine(const Vehicle *v)
static inline void SetTrainEngine(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_ENGINE);
SetBit(v->subtype, Train_Engine);
}
/** Clear engine status
@@ -135,7 +135,7 @@ static inline void SetTrainEngine(Vehicle *v)
static inline void ClearTrainEngine(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_ENGINE);
ClrBit(v->subtype, Train_Engine);
}
/** Check if a vehicle is a free wagon (got no engine in front of it)
@@ -145,7 +145,7 @@ static inline void ClearTrainEngine(Vehicle *v)
static inline bool IsFreeWagon(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_FREE_WAGON);
return HasBit(v->subtype, Train_Free_Wagon);
}
/** Set if a vehicle is a free wagon
@@ -154,7 +154,7 @@ static inline bool IsFreeWagon(const Vehicle *v)
static inline void SetFreeWagon(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_FREE_WAGON);
SetBit(v->subtype, Train_Free_Wagon);
}
/** Clear a vehicle from being a free wagon
@@ -163,7 +163,7 @@ static inline void SetFreeWagon(Vehicle *v)
static inline void ClearFreeWagon(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_FREE_WAGON);
ClrBit(v->subtype, Train_Free_Wagon);
}
/** Check if a vehicle is a multiheaded engine
@@ -173,7 +173,7 @@ static inline void ClearFreeWagon(Vehicle *v)
static inline bool IsMultiheaded(const Vehicle *v)
{
assert(v->type == VEH_TRAIN);
return HasBit(v->subtype, TS_MULTIHEADED);
return HasBit(v->subtype, Train_Multiheaded);
}
/** Set if a vehicle is a multiheaded engine
@@ -182,7 +182,7 @@ static inline bool IsMultiheaded(const Vehicle *v)
static inline void SetMultiheaded(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
SetBit(v->subtype, TS_MULTIHEADED);
SetBit(v->subtype, Train_Multiheaded);
}
/** Clear multiheaded engine property
@@ -191,7 +191,7 @@ static inline void SetMultiheaded(Vehicle *v)
static inline void ClearMultiheaded(Vehicle *v)
{
assert(v->type == VEH_TRAIN);
ClrBit(v->subtype, TS_MULTIHEADED);
ClrBit(v->subtype, Train_Multiheaded);
}
/** Check if an engine has an articulated part.
+32 -36
View File
@@ -1445,7 +1445,7 @@ CommandCost CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
* up on a new line to be added to the newly built loco. Replace it is.
* Totally braindead cause building a new engine adds all loco-less
* engines to its train anyways */
if (p2 == 2 && HasBit(ori_subtype, TS_FRONT)) {
if (p2 == 2 && HasBit(ori_subtype, Train_Front)) {
Vehicle *tmp;
for (v = first; v != NULL; v = tmp) {
tmp = GetNextVehicle(v);
@@ -1544,7 +1544,7 @@ static void UpdateVarsAfterSwap(Vehicle *v)
EndVehicleMove(v);
}
static inline void SetLastSpeed(Vehicle* v, int spd)
static void SetLastSpeed(Vehicle* v, int spd)
{
int old = v->u.rail.last_speed;
if (spd != old) {
@@ -1786,17 +1786,11 @@ static void ReverseTrainDirection(Vehicle *v)
InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
}
/* set reversed flag on all parts */
for (Vehicle *u = v; u != NULL; u = u->Next()) ToggleBit(u->u.rail.flags, VRF_TOGGLE_REVERSE);
/* update all images */
for (Vehicle *u = v; u != NULL; u = u->Next()) { u->cur_image = u->GetImage(u->direction); }
ClrBit(v->u.rail.flags, VRF_REVERSING);
/* recalculate cached data */
TrainConsistChanged(v);
/* update all images */
for (Vehicle *u = v; u != NULL; u = u->Next()) u->cur_image = u->GetImage(u->direction);
/* update crossing we were approaching */
if (crossing != INVALID_TILE) UpdateLevelCrossing(crossing);
@@ -2777,7 +2771,7 @@ static const Direction _new_vehicle_direction_table[11] = {
DIR_E , DIR_SE, DIR_S
};
static inline Direction GetNewVehicleDirectionByTile(TileIndex new_tile, TileIndex old_tile)
static Direction GetNewVehicleDirectionByTile(TileIndex new_tile, TileIndex old_tile)
{
uint offs = (TileY(new_tile) - TileY(old_tile) + 1) * 4 +
TileX(new_tile) - TileX(old_tile) + 1;
@@ -2785,7 +2779,7 @@ static inline Direction GetNewVehicleDirectionByTile(TileIndex new_tile, TileInd
return _new_vehicle_direction_table[offs];
}
static inline int GetDirectionToVehicle(const Vehicle *v, int x, int y)
static int GetDirectionToVehicle(const Vehicle *v, int x, int y)
{
byte offs;
@@ -2808,7 +2802,7 @@ static inline int GetDirectionToVehicle(const Vehicle *v, int x, int y)
}
/* Check if the vehicle is compatible with the specified tile */
static inline bool CheckCompatibleRail(const Vehicle *v, TileIndex tile)
static bool CheckCompatibleRail(const Vehicle *v, TileIndex tile)
{
return
IsTileOwner(tile, v->owner) && (
@@ -2832,7 +2826,7 @@ static const RailtypeSlowdownParams _railtype_slowdown[] = {
};
/** Modify the speed of the vehicle due to a turn */
static inline void AffectSpeedByDirChange(Vehicle* v, Direction new_dir)
static void AffectSpeedByDirChange(Vehicle* v, Direction new_dir)
{
if (_patches.realistic_acceleration) return;
@@ -2844,7 +2838,7 @@ static inline void AffectSpeedByDirChange(Vehicle* v, Direction new_dir)
}
/** Modify the speed of the vehicle due to a change in altitude */
static inline void AffectSpeedByZChange(Vehicle *v, byte old_z)
static void AffectSpeedByZChange(Vehicle *v, byte old_z)
{
if (old_z == v->z_pos || _patches.realistic_acceleration) return;
@@ -3046,11 +3040,13 @@ static void TrainController(Vehicle *v, bool update_image)
/* Get the status of the tracks in the new tile and mask
* away the bits that aren't reachable. */
TrackStatus ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL, 0, ReverseDiagDir(enterdir)) & _reachable_tracks[enterdir];
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts);
TrackBits red_signals = TrackdirBitsToTrackBits(TrackStatusToRedSignals(ts));
uint32 ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL, 0, ReverseDiagDir(enterdir)) & _reachable_tracks[enterdir];
TrackBits bits = TrackdirBitsToTrackBits(trackdirbits);
/* Combine the from & to directions.
* Now, the lower byte contains the track status, and the byte at bit 16 contains
* the signal status. */
uint32 tracks = ts | (ts >> 8);
TrackBits bits = (TrackBits)(tracks & TRACK_BIT_MASK);
if (_patches.pathfinder_for_trains != VPF_NTP && _patches.forbid_90_deg && prev == NULL) {
/* We allow wagons to make 90 deg turns, because forbid_90_deg
* can be switched on halfway a turn */
@@ -3068,12 +3064,14 @@ static void TrainController(Vehicle *v, bool update_image)
/* Currently the locomotive is active. Determine which one of the
* available tracks to choose */
chosen_track = TrackToTrackBits(ChooseTrainTrack(v, gp.new_tile, enterdir, bits));
assert(chosen_track & bits);
assert(chosen_track & tracks);
/* Check if it's a red signal and that force proceed is not clicked. */
if (red_signals & chosen_track && v->u.rail.force_proceed == 0) {
/* In front of a red signal */
Trackdir i = FindFirstTrackdir(trackdirbits);
if ((tracks >> 16) & chosen_track && v->u.rail.force_proceed == 0) {
/* In front of a red signal
* find the first set bit in ts. need to do it in 2 steps, since
* FIND_FIRST_BIT only handles 6 bits at a time. */
Trackdir i = FindFirstTrackdir((TrackdirBits)(uint16)ts);
if (!HasSignalOnTrackdir(gp.new_tile, ReverseTrackdir(i))) {
v->cur_speed = 0;
@@ -3439,9 +3437,9 @@ static TileIndex TrainApproachingCrossingTile(const Vehicle *v)
DiagDirection dir = TrainExitDir(v->direction, v->u.rail.track);
TileIndex tile = v->tile + TileOffsByDiagDir(dir);
/* not a crossing || wrong axis || unusable rail (wrong type or owner) */
/* not a crossing || wrong axis || wrong railtype || wrong owner */
if (!IsLevelCrossingTile(tile) || DiagDirToAxis(dir) == GetCrossingRoadAxis(tile) ||
!CheckCompatibleRail(v, tile)) {
!CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) {
return INVALID_TILE;
}
@@ -3477,25 +3475,23 @@ static bool TrainCheckIfLineEnds(Vehicle *v)
TileIndex tile = v->tile + TileOffsByDiagDir(dir);
/* Determine the track status on the next tile */
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & _reachable_tracks[dir];
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts);
TrackdirBits red_signals = TrackStatusToRedSignals(ts);
uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & _reachable_tracks[dir];
/* We are sure the train is not entering a depot, it is detected above */
/* mask unreachable track bits if we are forbidden to do 90deg turns */
TrackBits bits = TrackdirBitsToTrackBits(trackdirbits);
TrackBits bits = (TrackBits)((ts | (ts >> 8)) & TRACK_BIT_MASK);
if (_patches.pathfinder_for_trains != VPF_NTP && _patches.forbid_90_deg) {
bits &= ~TrackCrossesTracks(FindFirstTrack(v->u.rail.track));
}
/* no suitable trackbits at all || unusable rail (wrong type or owner) */
if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile)) {
/* no suitable trackbits at all || wrong railtype || not our track */
if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) {
return TrainApproachingLineEnd(v, false);
}
/* approaching red signal */
if ((trackdirbits & red_signals) != 0) return TrainApproachingLineEnd(v, true);
if ((ts & (ts >> 16)) != 0) return TrainApproachingLineEnd(v, true);
/* approaching a rail/road crossing? then make it red */
if (IsLevelCrossingTile(tile)) MaybeBarCrossingWithSound(tile);
@@ -3580,10 +3576,10 @@ Money Train::GetRunningCost() const
do {
const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost);
byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost_base);
if (cost_factor == 0) continue;
cost += cost_factor * GetPriceByIndex(rvi->running_cost_class);
cost += cost_factor * _price.running_rail[rvi->running_cost_class];
} while ((v = GetNextVehicle(v)) != NULL);
return cost;
@@ -3693,8 +3689,8 @@ void TrainsYearlyLoop()
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN && IsFrontEngine(v)) {
/* show warning if train is not generating enough income last 2 years (corresponds to a red icon in the vehicle list) */
if (_patches.train_income_warn && v->owner == _local_player && v->age >= 730 && v->GetDisplayProfitThisYear() < 0) {
SetDParam(1, v->GetDisplayProfitThisYear());
if (_patches.train_income_warn && v->owner == _local_player && v->age >= 730 && v->profit_this_year < 0) {
SetDParam(1, v->profit_this_year);
SetDParam(0, v->unitnumber);
AddNewsItem(
STR_TRAIN_IS_UNPROFITABLE,
+1 -1
View File
@@ -66,7 +66,7 @@ static inline void ResetRestoreAllTransparency()
/* if none of the non-locked options are set */
if ((_transparency_opt & ~_transparency_lock) == 0) {
/* set all non-locked options */
_transparency_opt |= GB(~_transparency_lock, 0, TO_END);
_transparency_opt |= ~_transparency_lock;
} else {
/* clear all non-locked options */
_transparency_opt &= _transparency_lock;

Some files were not shown because too many files have changed in this diff Show More