Difference between revisions of "Action0/Railtypes"

From GRFSpecs
Jump to navigationJump to search
(Updated table syntax)
m (Beautify wiki markup)
Line 1: Line 1:
 
'''''Action 0 properties for rail types'''''
 
'''''Action 0 properties for rail types'''''
   
=Action 0 - Properties for rail types=
+
= Action 0 - Properties for rail types =
   
 
Defining properties of rail types.
 
Defining properties of rail types.
Line 9: Line 9:
 
{maketoc}
 
{maketoc}
   
==Properties==
+
== Properties ==
   
 
{| class="wikitable"
 
{| class="wikitable"
Line 120: Line 120:
 
When a new rail type is created, it is populated with the information from the first rail type, except that the compatible and powered list contain only the rail type being created. However, no default values should be assumed, as the first rail type may have been modified.
 
When a new rail type is created, it is populated with the information from the first rail type, except that the compatible and powered list contain only the rail type being created. However, no default values should be assumed, as the first rail type may have been modified.
   
==Comments==
+
== Comments ==
   
==Rail type label (08)==
+
== Rail type label (08) ==
   
These are globally unique four-letter identifiers for specific rail types (analoguous to [[Action0Cargos#Cargo_label_17_|cargo labels]]), used to make various rail types accessible from train vehicle grfs. Reserved labels for default rail types are:
+
These are globally unique four-letter identifiers for specific rail types (analoguous to [[Action0Cargos#Cargo label 17|cargo labels]]), used to make various rail types accessible from train vehicle grfs. Reserved labels for default rail types are:
   
 
{| class="wikitable
 
{| class="wikitable
Line 146: Line 146:
 
Rail type sets may use up to 16 railtypes and have to specify their own [[RailtypeLabels|labels]].
 
Rail type sets may use up to 16 railtypes and have to specify their own [[RailtypeLabels|labels]].
   
See also [[Action0GeneralVariables#Rail_type_translation_table_12_| Rail Type Translation Table]] for further info.
+
See also [[Action0GeneralVariables#Rail type translation table 12|Rail Type Translation Table]] for further info.
   
==Build rail toolbar caption (09)==
+
== Build rail toolbar caption (09) ==
   
 
String ID of the name of the rail type as shown in the toolbar caption.
 
String ID of the name of the rail type as shown in the toolbar caption.
Line 154: Line 154:
 
OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.
 
OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.
   
==Rail construction dropdown text (0A)==
+
== Rail construction dropdown text (0A) ==
   
 
String ID for text in the dropdown of all rail types.
 
String ID for text in the dropdown of all rail types.
Line 160: Line 160:
 
This string must never start with a colour control code.
 
This string must never start with a colour control code.
   
==Build vehicle window caption (0B)==
+
== Build vehicle window caption (0B) ==
   
 
String ID for build vehicle window caption.
 
String ID for build vehicle window caption.
Line 166: Line 166:
 
OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.
 
OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.
   
==Autoreplace text (0C)==
+
== Autoreplace text (0C) ==
   
 
String ID for rail type shown in autoreplace window.
 
String ID for rail type shown in autoreplace window.
   
==New engines (0D)==
+
== New engines (0D) ==
   
StringID to use for showing texts of the type "We have invented a new <rail type> engine".
+
StringID to use for showing texts of the type "We have invented a new <rail type> engine".
   
==Compatible rail type list (0E)==
+
== Compatible rail type list (0E) ==
   
List of rail types on which trains of this rail type can run, even though they might not be powered. E.g. wagons/engines of "eletrified rail"-type are also compatible to "normal rail" and "third rail" type, but they are not powered (there need to be an other powered engine in the consist to move the train).
+
List of rail types on which trains of this rail type can run, even though they might not be powered. E.g. wagons/engines of "eletrified rail"-type are also compatible to "normal rail" and "third rail" type, but they are not powered (there need to be an other powered engine in the consist to move the train).
   
 
The format is:
 
The format is:
Line 186: Line 186:
 
Note that these properties apply to trains of this rail type, not the track. If you want trains of other rail types to be able to run on your rail types, you must set the compatible rail types property for each rail type. Setting these properties behaves always incremental, so you only need to the set additional bits for each other rail type, you cannot remove compatibility/poweredness once it is set (by some other grf).
 
Note that these properties apply to trains of this rail type, not the track. If you want trains of other rail types to be able to run on your rail types, you must set the compatible rail types property for each rail type. Setting these properties behaves always incremental, so you only need to the set additional bits for each other rail type, you cannot remove compatibility/poweredness once it is set (by some other grf).
   
==Powered rail type list (0F)==
+
== Powered rail type list (0F) ==
   
List of rail types on which trains of this rail type are powered. E.g. engines of "normal rail"-type are powered on "electrified rail"- and "third-rail"-type as well.
+
List of rail types on which trains of this rail type are powered. E.g. engines of "normal rail"-type are powered on "electrified rail"- and "third-rail"-type as well.
   
 
Same format as for property 0E above.
 
Same format as for property 0E above.
   
==Rail type flags (10)==
+
== Rail type flags (10) ==
   
 
Flags to define properties related to the rail type:
 
Flags to define properties related to the rail type:
Line 211: Line 211:
 
|}
 
|}
   
==Curve Speed advantage multiplier (11)==
+
== Curve Speed advantage multiplier (11) ==
   
 
This property sets the multiplier to the curve speed advantage which all trains running on this track type get. The base curve speed advantage is given by the multiplication of the value of this property with the base speed advantage - which depends on the curve length in wagons:
 
This property sets the multiplier to the curve speed advantage which all trains running on this track type get. The base curve speed advantage is given by the multiplication of the value of this property with the base speed advantage - which depends on the curve length in wagons:
Line 220: Line 220:
 
!'''Base Speed Adv.'''
 
!'''Base Speed Adv.'''
 
|-
 
|-
|0 (90° turn)
+
|0 (90° turn)
 
|30
 
|30
 
|-
 
|-
|1 (2x45° turn)
+
|1 (2x45° turn)
 
|44
 
|44
 
|-
 
|-
Line 260: Line 260:
 
|}
 
|}
   
"Curve length" is the average number of wagons of the train between turns. However, very sharp turns (values 0 and 1) are not averaged out in longer trains.
+
"Curve length" is the average number of wagons of the train between turns. However, very sharp turns (values 0 and 1) are not averaged out in longer trains.
   
The maximum speed for a train in a curve is defined by "base speed advantage" * (2 + "property 11"). Tilting trains get an additional bonus of 20% to this value.
+
The maximum speed for a train in a curve is defined by "base speed advantage" * (2 + "property 11"). Tilting trains get an additional bonus of 20% to this value.
   
 
For the default rail types this property is 0 for normal rail and electrified rail, 1 for monorail, and 2 for maglev.
 
For the default rail types this property is 0 for normal rail and electrified rail, 1 for monorail, and 2 for maglev.
   
==Station (and depot) graphics (12)==
+
== Station (and depot) graphics (12) ==
   
 
This property defines the default graphics for the stations. If no depot sprites are defined, this also defines at the same time the depot sprites to be used. There are three kind of default stations (and depots), usually associated with rail, monorail and maglev tracks. Valid values are:
 
This property defines the default graphics for the stations. If no depot sprites are defined, this also defines at the same time the depot sprites to be used. There are three kind of default stations (and depots), usually associated with rail, monorail and maglev tracks. Valid values are:
Line 285: Line 285:
 
|}
 
|}
   
==Speed limit (14)==
+
== Speed limit (14) ==
   
Speed limit in mph*1.6 (approx. km/h). Set to "0" for no limit at all.
+
Speed limit in mph*1.6 (approx. km/h). Set to "0" for no limit at all.
   
==Acceleration model (15)==
+
== Acceleration model (15) ==
   
 
This property defines the acceleration model used. Valid values range from 0 to 2:
 
This property defines the acceleration model used. Valid values range from 0 to 2:
Line 310: Line 310:
 
There is currently no difference between normal rail and monorail.
 
There is currently no difference between normal rail and monorail.
   
==Map colour (16)==
+
== Map colour (16) ==
   
This property defines the colour this track type is drawn in the minimap view. The byte value specifies the colour entry in the [[PalettesAndCoordinates| DOS palette]].
+
This property defines the colour this track type is drawn in the minimap view. The byte value specifies the colour entry in the [[PalettesAndCoordinates|DOS palette]].
   
==Introduction date (17)==
+
== Introduction date (17) ==
   
 
This property defines the long date formatted introduction date of this rail type. With this property set the rail type will be introduced at (or after) this date when all of the introduction required rail types are available to the company of the player, or whenever a vehicle using this rail type gets introduced whichever is first.
 
This property defines the long date formatted introduction date of this rail type. With this property set the rail type will be introduced at (or after) this date when all of the introduction required rail types are available to the company of the player, or whenever a vehicle using this rail type gets introduced whichever is first.
   
==Introduction required rail type list (18)==
+
== Introduction required rail type list (18) ==
   
 
List of rail types on that need to be available to the company of the player for this rail type to be introduced at (or after) the introduction date. This limit does not apply when the rail type is introduced by the introduction of a vehicle.
 
List of rail types on that need to be available to the company of the player for this rail type to be introduced at (or after) the introduction date. This limit does not apply when the rail type is introduced by the introduction of a vehicle.
Line 326: Line 326:
 
This can, for example, be used to introduce a third rail with catenary track type when both third rail and catenary rail types are available.
 
This can, for example, be used to introduce a third rail with catenary track type when both third rail and catenary rail types are available.
   
==Introduced rail type list (19)==
+
== Introduced rail type list (19) ==
   
 
List of rail types that get introduced when this rail type is introduced. For example, to make sure that when a fast rail type is introduced the slow variant exists.
 
List of rail types that get introduced when this rail type is introduced. For example, to make sure that when a fast rail type is introduced the slow variant exists.
Line 332: Line 332:
 
Same format as for property 0E above.
 
Same format as for property 0E above.
   
==Sort order (1A)==
+
== Sort order (1A) ==
   
 
Property for influencing the sort order of the drop down lists with rail types. Default values are as follows:
 
Property for influencing the sort order of the drop down lists with rail types. Default values are as follows:
Line 359: Line 359:
 
Thus the rail type that (internally) gets index 8 will get a default value of 87. These defaults are to keep the ordering when this property is not supported as they were.
 
Thus the rail type that (internally) gets index 8 will get a default value of 87. These defaults are to keep the ordering when this property is not supported as they were.
   
=Example=
+
= Example =
   
 
To be written
 
To be written

Revision as of 14:47, 15 June 2011

Action 0 properties for rail types

Action 0 - Properties for rail types

Defining properties of rail types.

Note: This feature is only available in OpenTTD > r18969

{maketoc}

Properties

Number Version Size Description
08 4*B Rail type label
09 W StringID: Build rail toolbar caption
0A W StringID: Rail construction dropdown text
0B W StringID: Build vehicle window caption
0C W StringID: Autoreplace text
0D W StringID: New engine text
0E B n*D Compatible rail type list
0F B n*D Powered rail type list
10 B Rail type flags
11 B Curve speed advantage multiplier
12 B Station (and depot) graphics
13 W (a) Construction costs
14 W Speed limit
15 B Acceleration model
16 r19307 B Minimap colour
17 r21842 D Introduction date
18 r21842 B n*D Introduction required rail type list
19 r21841 B n*D Introduced rail type list
1A r21866 B Sort order

(a) In r18969 to 19306 this property was byte-sized.

In NFO, rail type IDs will be GRF local, with an ID to label mapping. Therefore to modify an existing rail type, specify its label in property 08. To create a new rail type, again just specify its label in property 08. This way there is no need for complex GRM mechanisms to allocate IDs. If a label 'clashes' with another GRF, then one GRF will end up modifying the properties instead of creating a new rail type.

When a new rail type is created, it is populated with the information from the first rail type, except that the compatible and powered list contain only the rail type being created. However, no default values should be assumed, as the first rail type may have been modified.

Comments

Rail type label (08)

These are globally unique four-letter identifiers for specific rail types (analoguous to cargo labels), used to make various rail types accessible from train vehicle grfs. Reserved labels for default rail types are:

Label Rail Type
RAIL Normal Rail
ELRL Electrified Rail
MONO Mono Rail
MGLV Maglev Rail

Rail type sets may use up to 16 railtypes and have to specify their own labels.

See also Rail Type Translation Table for further info.

Build rail toolbar caption (09)

String ID of the name of the rail type as shown in the toolbar caption.

OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.

Rail construction dropdown text (0A)

String ID for text in the dropdown of all rail types.

This string must never start with a colour control code.

Build vehicle window caption (0B)

String ID for build vehicle window caption.

OpenTTD before r20342 and 1.0.3 require the string to start with the white control code. Later versions of OpenTTD will automatically default to white.

Autoreplace text (0C)

String ID for rail type shown in autoreplace window.

New engines (0D)

StringID to use for showing texts of the type "We have invented a new <rail type> engine".

Compatible rail type list (0E)

List of rail types on which trains of this rail type can run, even though they might not be powered. E.g. wagons/engines of "eletrified rail"-type are also compatible to "normal rail" and "third rail" type, but they are not powered (there need to be an other powered engine in the consist to move the train).

The format is:

0E <nvar> (<rail type label>){n}

That is you give the number of compatible rail types in a single byte followed by a list of that length of rail type labels. A rail type is automatically compatible (and powered) with itself, so you don't need to list the current rail type.

Note that these properties apply to trains of this rail type, not the track. If you want trains of other rail types to be able to run on your rail types, you must set the compatible rail types property for each rail type. Setting these properties behaves always incremental, so you only need to the set additional bits for each other rail type, you cannot remove compatibility/poweredness once it is set (by some other grf).

Powered rail type list (0F)

List of rail types on which trains of this rail type are powered. E.g. engines of "normal rail"-type are powered on "electrified rail"- and "third-rail"-type as well.

Same format as for property 0E above.

Rail type flags (10)

Flags to define properties related to the rail type:

Bit Value Meaning
0 1 Draw catenary for this rail
1 2 Disallow level crossings for this rail (OpenTTD since r20049)

Curve Speed advantage multiplier (11)

This property sets the multiplier to the curve speed advantage which all trains running on this track type get. The base curve speed advantage is given by the multiplication of the value of this property with the base speed advantage - which depends on the curve length in wagons:

Curve Length Base Speed Adv.
0 (90° turn) 30
1 (2x45° turn) 44
2 55
3 66
4 75
5 84
6 91
7 98
8 103
9 108
10 111
11 114
12+ 115

"Curve length" is the average number of wagons of the train between turns. However, very sharp turns (values 0 and 1) are not averaged out in longer trains.

The maximum speed for a train in a curve is defined by "base speed advantage" * (2 + "property 11"). Tilting trains get an additional bonus of 20% to this value.

For the default rail types this property is 0 for normal rail and electrified rail, 1 for monorail, and 2 for maglev.

Station (and depot) graphics (12)

This property defines the default graphics for the stations. If no depot sprites are defined, this also defines at the same time the depot sprites to be used. There are three kind of default stations (and depots), usually associated with rail, monorail and maglev tracks. Valid values are:

Value Meaning
0 Normal Rail
1 Monorail
2 Maglev

Speed limit (14)

Speed limit in mph*1.6 (approx. km/h). Set to "0" for no limit at all.

Acceleration model (15)

This property defines the acceleration model used. Valid values range from 0 to 2:

Value Meaning
0 Normal Rail
1 Monorail
2 Maglev

There is currently no difference between normal rail and monorail.

Map colour (16)

This property defines the colour this track type is drawn in the minimap view. The byte value specifies the colour entry in the DOS palette.

Introduction date (17)

This property defines the long date formatted introduction date of this rail type. With this property set the rail type will be introduced at (or after) this date when all of the introduction required rail types are available to the company of the player, or whenever a vehicle using this rail type gets introduced whichever is first.

Introduction required rail type list (18)

List of rail types on that need to be available to the company of the player for this rail type to be introduced at (or after) the introduction date. This limit does not apply when the rail type is introduced by the introduction of a vehicle.

Same format as for property 0E above.

This can, for example, be used to introduce a third rail with catenary track type when both third rail and catenary rail types are available.

Introduced rail type list (19)

List of rail types that get introduced when this rail type is introduced. For example, to make sure that when a fast rail type is introduced the slow variant exists.

Same format as for property 0E above.

Sort order (1A)

Property for influencing the sort order of the drop down lists with rail types. Default values are as follows:

Value Meaning
07 Normal Rail
17 Electrified Rail
27 Monorail
37 Maglev
n7 Railtype #n

Thus the rail type that (internally) gets index 8 will get a default value of 87. These defaults are to keep the ordering when this property is not supported as they were.

Example

To be written