<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://newgrf-specs.tt-wiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FooBar</id>
	<title>GRFSpecs - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://newgrf-specs.tt-wiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FooBar"/>
	<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/wiki/Special:Contributions/FooBar"/>
	<updated>2026-04-17T00:23:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;diff=3707</id>
		<title>CargoTypes</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;diff=3707"/>
		<updated>2016-01-17T12:06:17Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Added FIRS cargoes PHOS, PORE and VPTS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Cargo labels in OpenTTD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{grfFrom|8}} In GRF version 8 the value to be used in all vehicle and industry properties, and in [[Action3|action 3]], is the position of the cargo label in the [[Action0/Global_Settings#Cargo_translation_table_.2809.29|cargo translation table]] included in the GRF.&lt;br /&gt;
&lt;br /&gt;
{{grfTill|7}} GRF version 7 and below used different cargo properties for different properties (called &amp;quot;Type A&amp;quot; or &amp;quot;translated&amp;quot; and &amp;quot;Type B&amp;quot; or &amp;quot;untranslated&amp;quot; cargo slots), for historical reasons.  This method is deprecated as it meant relying blindly on cargos always using the same slots.  You can see the table of Type A and Type B slots [http://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;amp;oldid=2861 here] if you really want to.&lt;br /&gt;
&lt;br /&gt;
== Cargo Labels ==&lt;br /&gt;
&lt;br /&gt;
The following cargo labels have been defined so far:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Label&lt;br /&gt;
! Cargo Description&lt;br /&gt;
! [[Action0Cargos#CargoClasses_.2816.29|Cargo classes]]&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;TTD Default Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | These cargos are present when no NewGRF is used&lt;br /&gt;
|- &lt;br /&gt;
| PASS&lt;br /&gt;
| Passengers&lt;br /&gt;
| 0001 Passengers &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| COAL&lt;br /&gt;
| Coal&lt;br /&gt;
| 0010 Bulk&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| MAIL&lt;br /&gt;
| Mail&lt;br /&gt;
| 0002 Mail&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
|OIL_&lt;br /&gt;
| Oil&lt;br /&gt;
| 0040 Liquid&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| LVST&lt;br /&gt;
| Livestock&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GOOD&lt;br /&gt;
| Goods&lt;br /&gt;
| 0004 Express&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GRAI&lt;br /&gt;
| Grain&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
|  &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| Temperate; see also WHEA, MAIZ, CERE. YETI also adds 0200 Covered.&lt;br /&gt;
|-&lt;br /&gt;
| WOOD&lt;br /&gt;
| Wood&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IORE&lt;br /&gt;
| Iron Ore&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| STEL&lt;br /&gt;
| Steel&lt;br /&gt;
| 0020 Piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| Renamed &amp;quot;Metal&amp;quot; in FIRS, &amp;quot;Balls of Steel&amp;quot; in YETI&lt;br /&gt;
|-&lt;br /&gt;
| VALU&lt;br /&gt;
| Valuables&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Temperate; see also GOLD, DIAM&lt;br /&gt;
|-&lt;br /&gt;
| PAPR&lt;br /&gt;
| Paper&lt;br /&gt;
| 0020 Piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WHEA&lt;br /&gt;
| Wheat&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Arctic; see also GRAI, MAIZ, CERE&lt;br /&gt;
|-&lt;br /&gt;
| FOOD&lt;br /&gt;
| Food&lt;br /&gt;
| 0084 Express, refrigerated&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| YETI food has Refrigerated and Piece goods&lt;br /&gt;
|-&lt;br /&gt;
| GOLD&lt;br /&gt;
| Gold&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Arctic; see also VALU, DIAM&lt;br /&gt;
|-&lt;br /&gt;
| RUBR&lt;br /&gt;
|Rubber&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| FRUT&lt;br /&gt;
| Fruit&lt;br /&gt;
| 0090 Bulk, refrigerated&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| In FIRS: 00A4 Express, piece goods, refrigerated. In YETI: Piece goods, Covered.&lt;br /&gt;
|-&lt;br /&gt;
| MAIZ&lt;br /&gt;
| Maize&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Tropic; see also GRAI, WHEA, CERE&lt;br /&gt;
|-&lt;br /&gt;
| CORE&lt;br /&gt;
| Copper Ore&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WATR&lt;br /&gt;
| Water&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| DIAM&lt;br /&gt;
| Diamonds&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| Tropic; see also VALU, GOLD&lt;br /&gt;
|-&lt;br /&gt;
| SUGR&lt;br /&gt;
| Sugar&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| Toyland.  In FIRS 0030 Bulk, Piece Goods&lt;br /&gt;
|-&lt;br /&gt;
| TOYS&lt;br /&gt;
| Toys&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| BATT&lt;br /&gt;
| Batteries&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| SWET&lt;br /&gt;
|Sweets (Candy)&lt;br /&gt;
|0004 Express &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| TOFF&lt;br /&gt;
|Toffee&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| COLA&lt;br /&gt;
|Cola&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| CTCD&lt;br /&gt;
|Cotton Candy (Candyfloss)&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| BUBL&lt;br /&gt;
|Bubbles&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| PLST&lt;br /&gt;
|Plastic&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland; see also PLAS&lt;br /&gt;
|-&lt;br /&gt;
| FZDR&lt;br /&gt;
|Fizzy Drinks&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;New Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are only present when NewGRF industry sets are used&lt;br /&gt;
|-&lt;br /&gt;
| AORE&lt;br /&gt;
|Bauxite (Aluminium ore)&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| BEAN&lt;br /&gt;
|Beans&lt;br /&gt;
|0010 Bulk&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| BEER&lt;br /&gt;
|Alcohol&lt;br /&gt;
|0064 Express, piece goods, liquids &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| BDMT&lt;br /&gt;
|Building Materials&lt;br /&gt;
|0220 Piece goods, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| In FIRS: 0030 Bulk, piece goods. In YETI only Piece goods.&lt;br /&gt;
|-&lt;br /&gt;
| BRCK&lt;br /&gt;
|Bricks&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| CERA&lt;br /&gt;
|Ceramics&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| CERE&lt;br /&gt;
|Cereals&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CLAY&lt;br /&gt;
|Clay&lt;br /&gt;
|0210 Bulk covered/sheltered &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| CMNT&lt;br /&gt;
|Cement&lt;br /&gt;
| 0210 Bulk covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| COPR&lt;br /&gt;
|Copper&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| DYES&lt;br /&gt;
|Dyes&lt;br /&gt;
| 0060 Piece goods, liquids &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ENSP&lt;br /&gt;
|Engineering Supplies&lt;br /&gt;
|0024 Express, piece goods &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| EOIL&lt;br /&gt;
|Edible Oil&lt;br /&gt;
| 0060 Piece goods, liquids &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| Introduced in FIRS v1.4.5+ or 2.0&lt;br /&gt;
|-&lt;br /&gt;
| FERT&lt;br /&gt;
|Fertiliser&lt;br /&gt;
| 0030 Bulk, piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FICR&lt;br /&gt;
|Fibre crops&lt;br /&gt;
| 0030 Bulk, piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FISH&lt;br /&gt;
|Fish&lt;br /&gt;
| 0084 Express, refrigerated &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FMSP&lt;br /&gt;
|Farm Supplies&lt;br /&gt;
|0024 Express, piece goods &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GLAS&lt;br /&gt;
|Glass&lt;br /&gt;
| 0420 Piece goods, oversized &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GRVL&lt;br /&gt;
|Gravel / Ballast&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|Renamed &amp;quot;Stone&amp;quot; for YETI&lt;br /&gt;
|-&lt;br /&gt;
| JAVA&lt;br /&gt;
|Coffee&lt;br /&gt;
| 0020 Piece Goods &lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: black&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| Units in FIRS are &#039;bags&#039; &lt;br /&gt;
|-&lt;br /&gt;
| LIME&lt;br /&gt;
|Lime stone&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| MILK&lt;br /&gt;
|Milk&lt;br /&gt;
|00C4 Express, liquid, refrigerated &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| MNSP&lt;br /&gt;
|Manufacturing Supplies&lt;br /&gt;
|0024 Piece Goods, express &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| NITR&lt;br /&gt;
|Nitrate&lt;br /&gt;
|0010 Bulk&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| OLSD&lt;br /&gt;
|Oil seed&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PETR&lt;br /&gt;
|Petrol / Fuel Oil&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PHOS&lt;br /&gt;
|Phosphate&lt;br /&gt;
|0010 Bulk&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PLAS&lt;br /&gt;
|Plastic&lt;br /&gt;
| 0060 Piece goods, liquid&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PORE&lt;br /&gt;
|Pyrite Ore&lt;br /&gt;
|0010 Bulk&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| POTA&lt;br /&gt;
|Potash&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RCYC&lt;br /&gt;
|Recyclables&lt;br /&gt;
|0220 Piece Goods, covered&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| RFPR&lt;br /&gt;
|Refined products&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SAND&lt;br /&gt;
|Sand&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SCMT&lt;br /&gt;
|Scrap Metal&lt;br /&gt;
|1010 Bulk, non-pourable &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SGBT&lt;br /&gt;
|Sugar beet&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| not in tropical&lt;br /&gt;
|-&lt;br /&gt;
| SGCN&lt;br /&gt;
|Sugarcane&lt;br /&gt;
|1010 Bulk, non-pourable &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
| only tropical&lt;br /&gt;
|-&lt;br /&gt;
| SULP&lt;br /&gt;
|Sulphur&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot;&amp;gt;ECS cargo classes changed as of Dec 31, 2010&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| TOUR&lt;br /&gt;
|Tourists&lt;br /&gt;
| 0005 Passengers, express &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| URAN&lt;br /&gt;
|Uranium&lt;br /&gt;
|0110 Bulk, Hazardous&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| VEHI&lt;br /&gt;
|Vehicles&lt;br /&gt;
| 0420 Piece goods, oversized &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| VPTS&lt;br /&gt;
|Vehicle Parts&lt;br /&gt;
|0024 Piece Goods, express &lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| WDPR&lt;br /&gt;
|Wood Products&lt;br /&gt;
| 0030 Bulk, piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| WOOL&lt;br /&gt;
|Wool&lt;br /&gt;
| 0220 Piece goods, covered/sheltered&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| YETI&lt;br /&gt;
|Workers, YETI dudes&lt;br /&gt;
|0404 Express, Oversized&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background: #009fe3; color: black&amp;quot; | [[ttwiki:YETI|YETI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Special Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are for use outside industry sets and do not represent transporting anything&lt;br /&gt;
|-&lt;br /&gt;
| DFLT&lt;br /&gt;
|&#039;Default&#039;&lt;br /&gt;
| ---- None &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Used by andythenorth to identify default cargo graphics in newgrfs that use code/graphics generation. &lt;br /&gt;
&lt;br /&gt;
Not intended to be used as an actual cargo in translation tables.&lt;br /&gt;
|-&lt;br /&gt;
| GEAR&lt;br /&gt;
|Locomotive regearing&lt;br /&gt;
|8000 Special &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Using this cargo may make your vehicle set incompatible with some industry sets&lt;br /&gt;
&lt;br /&gt;
use CB36 instead to set capacity to 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Deprecated Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are not used by any current industry set, and are listed here for backwards compatibility&lt;br /&gt;
|-&lt;br /&gt;
| FRVG&lt;br /&gt;
|Fruit (and optionally Vegetables)&lt;br /&gt;
|00A4 Express, piece goods, refrigerated&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Deprecated FIRS cargo. Replaced by FRUT for FIRS &amp;gt; v1.3.0&lt;br /&gt;
|-&lt;br /&gt;
| FUEL&lt;br /&gt;
|Fuel&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|Use PETR for refined-oil fuel&lt;br /&gt;
|-&lt;br /&gt;
| RSGR&lt;br /&gt;
|Raw Sugar&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Deprecated in FIRS. See SGBT and SGCN&lt;br /&gt;
|-&lt;br /&gt;
| SCRP&lt;br /&gt;
|Scrap Metal&lt;br /&gt;
|0010 Piece Goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Deprecated in FIRS, use SCMT instead&lt;br /&gt;
|-&lt;br /&gt;
| TWOD&lt;br /&gt;
|Tropic Wood&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| formerly intended as a default cargo&lt;br /&gt;
|-&lt;br /&gt;
| WSTE&lt;br /&gt;
|Waste&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Deprecated in FIRS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you write or publish a NewGRF which introduces a new cargo label, please also add a comment where the new label is used.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Railtypes&amp;diff=3252</id>
		<title>NML:Railtypes</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Railtypes&amp;diff=3252"/>
		<updated>2012-07-29T12:20:06Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Add: default values for cost factors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Railtypes can only be defined in OpenTTD {{ottd|1.0|r18969}} or later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Railtype properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| label&lt;br /&gt;
| 4-byte string&lt;br /&gt;
| names of default rail types: &amp;quot;RAIL&amp;quot;, &amp;quot;ELRL&amp;quot;, &amp;quot;MONO&amp;quot;, &amp;quot;MGLV&amp;quot;. See the [[RailtypeLabels|List of railtype labels]] in the NewGRF Specs for currently defined custom labels.&lt;br /&gt;
|-&lt;br /&gt;
| introduction_date&lt;br /&gt;
| date(yyyy,mm,dd)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21842}} Valid range for yyyy is 0 ... 5000000.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
| Name of this railtype&lt;br /&gt;
|-&lt;br /&gt;
| toolbar_caption&lt;br /&gt;
| string&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=23129}} Caption of the build rail toolbar. In earlier versions this is the same as the &#039;name&#039;&lt;br /&gt;
|-&lt;br /&gt;
| menu_text&lt;br /&gt;
| string&lt;br /&gt;
| Shown in the dropdown menu for all railtypes&lt;br /&gt;
|-&lt;br /&gt;
| build_window_caption&lt;br /&gt;
| string&lt;br /&gt;
| Caption of the build vehicle window&lt;br /&gt;
|-&lt;br /&gt;
| autoreplace_text&lt;br /&gt;
| string&lt;br /&gt;
| String for the autoreplace window&lt;br /&gt;
|-&lt;br /&gt;
| new_engine_text&lt;br /&gt;
| string&lt;br /&gt;
| String for the &amp;quot;We have invented a new &amp;amp;lt;rail type&amp;amp;gt; engine&amp;quot; news message&lt;br /&gt;
|-&lt;br /&gt;
| compatible_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
| Provide a list of rail types that trains of this type can also run on. e.g. [&amp;quot;RAIL&amp;quot;, &amp;quot;ELRL&amp;quot;, &amp;quot;MONO&amp;quot;]&lt;br /&gt;
|-&lt;br /&gt;
| powered_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
| Provide a list of rail types that trains of this type are powered on.&lt;br /&gt;
|-&lt;br /&gt;
| railtype_flags&lt;br /&gt;
| bitmask(RAILTYPE_FLAG_XXX, ...)&lt;br /&gt;
| XXX = [CATENARY &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NO_LEVEL_CROSSING] Flags enable catenary and/or disable level crossings.&lt;br /&gt;
|-&lt;br /&gt;
| curve_speed_multiplier&lt;br /&gt;
| 0...65525&lt;br /&gt;
| max curve speed is defined as multiple of the base curve speed (see below)&lt;br /&gt;
|-&lt;br /&gt;
| station_graphics&lt;br /&gt;
| RAILTYPE_STATION_NORMAL, RAILTYPE_STATION_MONORAIL, RAILTYPE_STATION_MAGLEV&lt;br /&gt;
| Type of station graphics to use for the default stations&lt;br /&gt;
|-&lt;br /&gt;
| construction_cost&lt;br /&gt;
| 0 ... 65525&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r19307}} per piece of track as multiplier to PR_BUILD_RAIL base cost. Default cost factors are 8, 12, 16 and 24 for RAIL, ELRL, MONO and MGLV.&lt;br /&gt;
|-&lt;br /&gt;
| speed_limit&lt;br /&gt;
| 0 ... 65525 km/h (speed units)&lt;br /&gt;
| A speed limit of 0 means unlimited speed&lt;br /&gt;
|-&lt;br /&gt;
| acceleration_model&lt;br /&gt;
| ACC_MODEL_RAIL, ACC_MODEL_MONORAIL, ACC_MODEL_MAGLEV&lt;br /&gt;
| ACC_MODEL_RAIL and ACC_MODEL_MONORAIL behave the same currently&lt;br /&gt;
|-&lt;br /&gt;
| map_colour&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r19307}} entry in the colour palette.&lt;br /&gt;
|-&lt;br /&gt;
| requires_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21842}} 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.&lt;br /&gt;
|-&lt;br /&gt;
| introduces_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21841}} 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.&lt;br /&gt;
|-&lt;br /&gt;
| sort_order&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21866}} number which defines the sort order among rail types. If this entry is not defined, it gets assigned sort order n*10+7 for the n-th railtype.&lt;br /&gt;
|-&lt;br /&gt;
| maintenance_cost&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r23415}} Maintenance cost factor for each piece of tracks of this railtype. Default cost factors are 8, 12, 16 and 24 for RAIL, ELRL, MONO and MGLV.&lt;br /&gt;
|-&lt;br /&gt;
| alternative_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r23758}} List or rail types which this rail type will act as fallback for, if the corresponding rail type is not defined separately&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sort order===&lt;br /&gt;
&lt;br /&gt;
The sort_order influences the sort order of the drop down lists with rail types. Default values are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| normal rail&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| electrified rail&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| monorail&lt;br /&gt;
|-&lt;br /&gt;
| 37&lt;br /&gt;
| maglev&lt;br /&gt;
|-&lt;br /&gt;
| n7&lt;br /&gt;
| railtype #n&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Base speeds for curves===&lt;br /&gt;
&lt;br /&gt;
The base speeds relevant for the curve_speed_multiplier are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! curve length&lt;br /&gt;
! base speed [km/h]&lt;br /&gt;
|-&lt;br /&gt;
| 0 (90 degree turn)&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 84&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 91&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 98&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 103&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 108&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 111&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 114&lt;br /&gt;
|-&lt;br /&gt;
| 12+&lt;br /&gt;
| 115&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Railtype variables==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| terrain_type&lt;br /&gt;
| TILETYPE_NORMAL, TILETYPE_DESERT, TILETYPE_RAIN_FOREST, TILETYPE_SNOW&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enhanced_tunnels&lt;br /&gt;
| 0&lt;br /&gt;
| should custom tunnel entrances be modified other values than 0 might be returned&lt;br /&gt;
|-&lt;br /&gt;
| level_crossing_status&lt;br /&gt;
| LEVEL_CROSSING_CLOSED, LEVEL_CROSSING_OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| build_date&lt;br /&gt;
| 0 .. 5000000&lt;br /&gt;
| for depots only: build date of the depot in days since 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Railtype callbacks==&lt;br /&gt;
&lt;br /&gt;
For rail types a number of callbacks are used to define rail type graphics. Each should refer to a sprite set containing the relevant sprites. Refer to the [[#Example sprites|example sprites]] or the example railtype grf in the NML repository, for an example on what sprites are needed in what order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! callbacks&lt;br /&gt;
! number of sprites&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| gui&lt;br /&gt;
| 16&lt;br /&gt;
| 4 rail directions, autorail, depot, tunnel and convert rail sprites for rail menu&lt;br /&gt;
|-&lt;br /&gt;
| track_overlay&amp;lt;ref name=leftout&amp;gt;Either all or none of these sprites should be provided.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 10&lt;br /&gt;
| 6 flat and 4 slope sprites. Track without landscape&lt;br /&gt;
|-&lt;br /&gt;
| underlay&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 16&lt;br /&gt;
| 6 flat and 4 slope, one crossing WITH track, 5 junction pieces without track. Tracks with ballast but without landscape&lt;br /&gt;
|-&lt;br /&gt;
| tunnels&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 4&lt;br /&gt;
| 1 sprite for each direction. Sprite is overlay for track in existing tunnel graphics. The original ground sprite is drawn, then the overlay, then possibly a train and the original tunnel head is drawn over the top. This keeps compatibility with different landscape types. Sprite order: SW, NW, NE, SE.&lt;br /&gt;
|-&lt;br /&gt;
| catenary_wire&lt;br /&gt;
| 28&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| catenary_pylons&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bridge_surfaces&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| level_crossings&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 10&lt;br /&gt;
| For each direction: one track sprite and 4 sprites for road lights etc&lt;br /&gt;
|-&lt;br /&gt;
| depots&amp;lt;ref name=depotr22854&amp;gt;{{ottd|1.2|r22854}} In OpenTTD prior to r22854, depot sprites would not be used if the above &#039;all or none&#039; sprites were not supplied.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 6&lt;br /&gt;
| 2 sprites for each south-ish, 1 sprite for each north-ish depot. Like original depots.&lt;br /&gt;
|-&lt;br /&gt;
| fences&lt;br /&gt;
| 8&lt;br /&gt;
| x, y, vertical, horizontal, SW, SE, NE and NW slopes like original fences at sprite 1301&lt;br /&gt;
|-&lt;br /&gt;
| tunnel_overlay&amp;lt;ref name=tunnel_overlay&amp;gt;Above &#039;all or none&#039; sprites must be supplied, if these sprites are to be used.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 4&lt;br /&gt;
| If this callback is defined, tunnels for this railtype will be drawn differently. First, a grass underlay base sprite is drawn, then the &#039;tunnels&#039;-sprite. Next, train sprites if applicable and then a grass overlay and finally the sprite from this type (tunnel_overlay). The grass sprites are defined in the base set and do not contain any parts of the tracks or portal, so these have to be fully provided by the railtype sprites. &amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains 0 for normal tunnels, without any extra features (like tracks above). All other values are reserved for future extensions.&lt;br /&gt;
|-&lt;br /&gt;
| signals&lt;br /&gt;
| 8&lt;br /&gt;
| {{ottd|1.3|r24367}} 1 sprite for each direction, order is SW(-facing), NE, SE, NW, E, W, S, N. For more information, see [[#signals|below]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
If a callback is not implemented or fails, graphics from the fallback railtype (picked via the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;station_graphics&amp;lt;/code&amp;gt; property) will be used instead.&amp;lt;br /&amp;gt;&lt;br /&gt;
Note that there is no &amp;quot;default graphics&amp;quot;-callback.&lt;br /&gt;
&lt;br /&gt;
===Example sprites===&lt;br /&gt;
==== gui ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_gui.png]]&lt;br /&gt;
&lt;br /&gt;
==== track_overlay ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_overlay.png]]&lt;br /&gt;
&lt;br /&gt;
==== underlay ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_underlay.png]]&lt;br /&gt;
&lt;br /&gt;
==== level_crossings ====&lt;br /&gt;
&lt;br /&gt;
You can define a special track piece which crosses the road and for each of two directions and each of the corners of the tile a separate sprite for a light, sign, or whatever should go there.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sprite number for X&lt;br /&gt;
!Sprite number for Y&lt;br /&gt;
!Useage&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;1&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Rail overlay&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;3&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;North light&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;5&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;East light&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;7&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;West light&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;9&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;South light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_levelcrossing.png]]&lt;br /&gt;
&lt;br /&gt;
==== depots ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
!Sprite Number&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;NE wall for SE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for SE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;NW wall for SW-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for SW-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for NE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for NW-entry depot.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== fences ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_fences.png]]&lt;br /&gt;
&lt;br /&gt;
==== tunnel_overlay ====&lt;br /&gt;
&lt;br /&gt;
If this callback is defined, tunnels for this railtype will be drawn differently.&lt;br /&gt;
&lt;br /&gt;
First, a grass underlay base sprite is drawn, then the &#039;tunnels&#039;-sprite. Next, train sprites if applicable and then a grass overlay and finally the sprite from this callback. The grass sprites are defined in the base set and do not contain any parts of the tracks or portal, so these have to be fully provided by the railtype sprites.&lt;br /&gt;
&lt;br /&gt;
Illustration: [[File:RailtypeTunnelExample.png]]&lt;br /&gt;
&lt;br /&gt;
==== signals ====&lt;br /&gt;
&lt;br /&gt;
This callback can be used to supply custom signal graphics.&lt;br /&gt;
&lt;br /&gt;
The resulting sprite set must consist of 8 sprites, corresponding to the following signal directions: SW-facing, NE-facing, NW-facing, SE-facing, E-facing, W-facing, S-facing, N-facing. Variable &amp;lt;code style:darkgreen&amp;gt;extra_callback_info2&amp;lt;/code&amp;gt; contains information about the kind of signal to be drawn. If resolving fails or results in an empty sprite group, the matching base set sprite will be used instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format of extra_callback_info2:&#039;&#039;&#039; 0xRRTTVVSS&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! TT: Signal type !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal block signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Entry pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Exit pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Combo pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Two-way path signal&lt;br /&gt;
|-&lt;br /&gt;
| 5 || One-way path signal&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! VV: Signal variant !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Light (electric) signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Semaphore&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! SS: Signal state !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Red signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Green signal&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The most significant byte (RR) is reserved and must be and-masked out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; can be used to distinguish between map and GUI sprites:&lt;br /&gt;
{| |-&lt;br /&gt;
! Lowest byte of [[GlobalVariables#Extra_callback_info_.2810_.2F_-.29_and_.2818_.2F_-.29|variable 10]] !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Signal is drawn in a viewport, i.e. on the map.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Signal is drawn in the signal GUI. The returned sprite set must still have 8 sprites, but OpenTTD will only use the 7th sprite, so all other sprites can be empty.&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
The other bytes of &amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; are reserved, and must be masked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example code===&lt;br /&gt;
&lt;br /&gt;
A typical implementation for railtypes can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 item(FEAT_RAILTYPES, elrail, 0x01) {&lt;br /&gt;
     property {&lt;br /&gt;
         label:                      &amp;quot;SHIN&amp;quot;;&lt;br /&gt;
         name:                       string(STR_EL_RAIL);&lt;br /&gt;
         menu_text:                  string(STR_EL_RAIL);&lt;br /&gt;
         build_window_caption:       string(STR_BUILD_CAPTION);&lt;br /&gt;
         autoreplace_text:           string(STR_AUTOREPLACE);&lt;br /&gt;
         new_engine_text:            string(STR_NEW_ENGINE);&lt;br /&gt;
         compatile_railtype_list:    [&amp;quot;SHIN&amp;quot;,&amp;quot;RAIL&amp;quot;,&amp;quot;ELRL&amp;quot;];                   // Tracks of rail and electrified rail are compatible&lt;br /&gt;
         powered_railtype_list:      [&amp;quot;ELRL&amp;quot;,&amp;quot;SHIN&amp;quot;];                          // But we got only power when we have electricity&lt;br /&gt;
         railtype_flags:             bitmask(RAILTYPE_FLAG_NO_LEVEL_CROSSING); // High speed tracks should not have level crossings&lt;br /&gt;
         curve_speed_multiplier:     1;&lt;br /&gt;
         station_graphics:           RAILTYPE_STATION_MAGLEV;                  // We want the most modern stations&lt;br /&gt;
         construction_cost:          32;                                       // should be pretty steep&lt;br /&gt;
         speed_limit:                500 km/h;&lt;br /&gt;
         acceleration_model:         ACC_MODEL_RAIL;                           // This is still rail, though&lt;br /&gt;
     }&lt;br /&gt;
     graphics {&lt;br /&gt;
         track_overlay:   ground_switch_overlay;     // defines the sprites drawn as overlay for junctions and highlight&lt;br /&gt;
         underlay:        ground_switch_underlay;    // defines the usual tracks and the underlay for junctions&lt;br /&gt;
         level_crossings: level_crossing_switch;     // defines level crossings including traffic lights and blocking bars&lt;br /&gt;
         tunnels:         tunnel_switch;             // defines the tracks drawn on a funnel tile&lt;br /&gt;
         depots:          depot_switch_electric;     // defines the depot sprites&lt;br /&gt;
         bridge_surfaces: bridge_terrain_switch;     // defines the overlay drawn over bridges&lt;br /&gt;
         fences:          fences_set;                // defines the look of fences&lt;br /&gt;
         // we don&#039;t define catenery wire and pylons, thus we use the default which comes with the base graphics.&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The switches and graphics blocks are defined in the usual way as described in sections [[NML:Switch|switches]], [[NML:Random switch|random switches]] and [[NML:Graphics|graphics block]] sections.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:General&amp;diff=3231</id>
		<title>NML:General</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:General&amp;diff=3231"/>
		<updated>2012-07-17T14:04:57Z</updated>

		<summary type="html">&lt;p&gt;FooBar: loading_stage constants must be written as LOADINGSTAGE_XXX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==General variables==&lt;br /&gt;
&lt;br /&gt;
A number of global variables are available. Some are only available in switch-blocks, while others can be used in any expression. This is indicated by the second column in the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! Available outside switch blocks&lt;br /&gt;
! Value range&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ttd_platform&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;PLATFORM_TTDPATCH&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;PLATFORM_OPENTTD&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ttdpatch_version&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;openttd_version&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
| Use &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;version_openttd(MAJOR, MINOR, BUILD)&amp;lt;/code&amp;gt; to test and compare for a release version and &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;version_openttd(MAJOR, MINOR, BUILD, REVISION)&amp;lt;/code&amp;gt; to test for a specific svn version of OpenTTD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_palette&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;PALETTE_DOS&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;PALETTE_WIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| days since year 0&lt;br /&gt;
| Use &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date(year, month, day)&amp;lt;/code&amp;gt; to compare with.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_year&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| years since year 0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_month&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| 0 .. 11&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_day_of_month&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| 0 .. 30&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_day_of_year&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| 0 .. 364 (365 in leap years)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;is_leapyear&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date_loaded&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| days since year 0&lt;br /&gt;
| Set to the time of game load, which is the current date in single player, and the date the server started in multiplayer. This to prevent desyncs.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;year_loaded&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| years since year 0&lt;br /&gt;
| See &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date_loaded&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;starting_year&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| years since year 0&lt;br /&gt;
| Years before 1920 are clamped to 1920&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;animation_counter&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| 0 .. 65535&lt;br /&gt;
| Increased by 1 each tick&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;climate&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=gamechange&amp;gt;The value of these variables can change during the game. Reading them from a switch block (which reads the current value) may result in a different value than in the rest of the code (which is evaluated when the game is loaded).&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;CLIMATE_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TEMPERATE&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ARCTIC&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TROPICAL&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TOYLAND&amp;lt;/code&amp;gt;]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;game_mode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;GAMEMODE_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;MENU&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;GAME&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;EDITOR&amp;lt;/code&amp;gt;]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;loading_stage&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;LOADINGSTAGE_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;INITIALIZE&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;RESERVE&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ACTIVATE&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TEST&amp;lt;/code&amp;gt;]&lt;br /&gt;
| &#039;Phase&#039; of the GRF loading process.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;difficulty_level&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=gamechange /&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;DIFFICULTY_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;EASY&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;MEDIUM&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;HARD&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;CUSTOM&amp;lt;/code&amp;gt;]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;display_options&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| bitmask of &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;DISPLAY_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TOWN_NAMES&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;STATION_NAMES&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;SIGNS&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ANIMATION&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;FULL_DETAIL&amp;lt;/code&amp;gt;]&lt;br /&gt;
| Use &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;hasbit(display_options, DISPLAY_XXX)&amp;lt;/code&amp;gt; to test a particular bit.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;desert_paved_roads&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=readwrite&amp;gt;These variables can be written as well as read. Use a normal assignment, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 traininfo_y_offset = -2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 0 or 1&lt;br /&gt;
| If 1, desert roads have pavement and street lights.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;train_width_32_px&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=readwrite /&amp;gt;&lt;br /&gt;
| 0 or 1&lt;br /&gt;
| If 1, train vehicles are 32 instead of 29 pixels wide in the depot view.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;traininfo_y_offset&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=readwrite /&amp;gt;&lt;br /&gt;
| -128 .. 127&lt;br /&gt;
| Used to correctly position the depot view of trains.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;snowline_height&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| {{nml|0.2}} 16 .. 120 in steps of 8, or 0xFF if no snow.&lt;br /&gt;
{{nml|0.3}} 0..max_tile_height, or 0xFF if no snow.&lt;br /&gt;
| {{nml|0.2}} One tile height is equivalent to 8 units.&lt;br /&gt;
{{nml|0.3}} It&#039;s the height in tiles.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;traffic_side&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes &amp;lt;ref name=gamechange /&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TRAFFIC_SIDE_LEFT&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;TRAFFIC_SIDE_RIGHT&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;freight_trains&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 1 .. 255&lt;br /&gt;
| Weight multiplier for freight trains&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;plane_speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 1 .. 4&lt;br /&gt;
| Speed multiplier for planes. Value of 1 is equal to the original speed (1/4), while 4 means that planes move at full speed (4/4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ttdpatch_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;current_callback&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
| Set to the ID of the current callback, useful for old-style callbacks.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| Varies&lt;br /&gt;
| Extra callback information, meaning differs per callback.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_callback_info2&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
| Varies&lt;br /&gt;
| Extra callback information, meaning differs per callback.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;last_computed_result&amp;lt;/code&amp;gt;&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
| Result of the last (previously evaluated) switch block.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;base_sprite_2cc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 .. 65535&lt;br /&gt;
| Base sprite for 2cc (dual company colour) colour-maps&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;MAP_TYPE_XXX&amp;lt;/code&amp;gt; with &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;XXX&amp;lt;/code&amp;gt; = [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;RECTANGULAR&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;X_BIGGER&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;Y_BIGGER&amp;lt;/code&amp;gt;]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_min_edge&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 64 .. 2048&lt;br /&gt;
| Length of the smallest map edge (in tiles)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_max_edge&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 64 .. 2048&lt;br /&gt;
| Length of the biggest map edge (in tiles)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_x_edge&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 64 .. 2048&lt;br /&gt;
| Length of the x (top-left) map edge (in tiles)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_y_edge&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 64 .. 2048&lt;br /&gt;
| Length of the y (top-right) map edge (in tiles)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;map_size&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 64*64 .. 2048*2048&lt;br /&gt;
| Total number of tiles on the map&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;long_bridges&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;gradual_loading&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bridge_speed_limits&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;signals_on_traffic_side&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;electrified_railways&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;unified_maglev&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 .. 3 {{ottd|}} Always 3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;temperate_snowline&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;dynamic_engines&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 or 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;variable_runningcosts&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newtrains&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newrvs&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newships&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newplanes&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newhouses&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newindustries&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;newcargos&amp;lt;/code&amp;gt;&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ttdp|}} 0 or 1 {{ottd|}} Always 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3227</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3227"/>
		<updated>2012-07-13T12:30:55Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Add S eyecandy speedlimit class and list what sets use custom speed limit classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type !!Used by&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||colspan=&amp;quot;2&amp;quot;|reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special ||French Set Rails &lt;br /&gt;
|- &lt;br /&gt;
|S ||subterranean ||eyecandy ||Metro Track Set&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy ||Metro Track Set&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly.&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|T ||[http://en.wikipedia.org/wiki/Three-phase_AC_railway_electrification three phase AC electrification] || E&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you want multi-voltage/current vehicles in your set (i.e. a train that can run on both AC and DC current), you have to define a dedicated railtype for those vehicles. Without the railtype, it&#039;s not possible to define vehicles with this property. If you only have vehicles that can run on either one type of voltage/current or on all types of voltage/current (e.g. a 2-system if you only have &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;D&#039;&#039;&#039; tracks, or a 4-system in case of all &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;), then use the generic class &#039;&#039;&#039;E&#039;&#039;&#039; for vehicles that should be able to run on all different voltage/currents. Also the track set needs to have one at least one railtype with class &#039;&#039;&#039;E&#039;&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
Note that if you want more than one type of multi-voltage/current, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-voltage/current vehicle type a dedicated railtype is needed. If you want all possible combinations, then you need to define an additional 8 classes. It is not recommended to make your train/track set this complicated.&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set, with trains that can run on either one or all systems:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;br /&gt;
&lt;br /&gt;
==Forum topic==&lt;br /&gt;
If you want to discuss the standardized railtype scheme or have any questions about it, you can visit [http://www.tt-forums.net/viewtopic.php?t=59379 the forum topic].&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Railtypes&amp;diff=3225</id>
		<title>NML:Railtypes</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Railtypes&amp;diff=3225"/>
		<updated>2012-07-12T19:58:30Z</updated>

		<summary type="html">&lt;p&gt;FooBar: callback depot should be depots (plural)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Railtypes can only be defined in OpenTTD {{ottd|1.0|r18969}} or later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Railtype properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| label&lt;br /&gt;
| 4-byte string&lt;br /&gt;
| names of default rail types: &amp;quot;RAIL&amp;quot;, &amp;quot;ELRL&amp;quot;, &amp;quot;MONO&amp;quot;, &amp;quot;MGLV&amp;quot;. See the [[RailtypeLabels|List of railtype labels]] in the NewGRF Specs for currently defined custom labels.&lt;br /&gt;
|-&lt;br /&gt;
| introduction_date&lt;br /&gt;
| date(yyyy,mm,dd)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21842}} Valid range for yyyy is 0 ... 5000000.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
| Name of this railtype&lt;br /&gt;
|-&lt;br /&gt;
| toolbar_caption&lt;br /&gt;
| string&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=23129}} Caption of the build rail toolbar. In earlier versions this is the same as the &#039;name&#039;&lt;br /&gt;
|-&lt;br /&gt;
| menu_text&lt;br /&gt;
| string&lt;br /&gt;
| Shown in the dropdown menu for all railtypes&lt;br /&gt;
|-&lt;br /&gt;
| build_window_caption&lt;br /&gt;
| string&lt;br /&gt;
| Caption of the build vehicle window&lt;br /&gt;
|-&lt;br /&gt;
| autoreplace_text&lt;br /&gt;
| string&lt;br /&gt;
| String for the autoreplace window&lt;br /&gt;
|-&lt;br /&gt;
| new_engine_text&lt;br /&gt;
| string&lt;br /&gt;
| String for the &amp;quot;We have invented a new &amp;amp;lt;rail type&amp;amp;gt; engine&amp;quot; news message&lt;br /&gt;
|-&lt;br /&gt;
| compatible_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
| Provide a list of rail types that trains of this type can also run on. e.g. [&amp;quot;RAIL&amp;quot;, &amp;quot;ELRL&amp;quot;, &amp;quot;MONO&amp;quot;]&lt;br /&gt;
|-&lt;br /&gt;
| powered_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
| Provide a list of rail types that trains of this type are powered on.&lt;br /&gt;
|-&lt;br /&gt;
| railtype_flags&lt;br /&gt;
| bitmask(RAILTYPE_FLAG_XXX, ...)&lt;br /&gt;
| XXX = [CATENARY &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NO_LEVEL_CROSSING] Flags enable catenary and/or disable level crossings.&lt;br /&gt;
|-&lt;br /&gt;
| curve_speed_multiplier&lt;br /&gt;
| 0...65525&lt;br /&gt;
| max curve speed is defined as multiple of the base curve speed (see below)&lt;br /&gt;
|-&lt;br /&gt;
| station_graphics&lt;br /&gt;
| RAILTYPE_STATION_NORMAL, RAILTYPE_STATION_MONORAIL, RAILTYPE_STATION_MAGLEV&lt;br /&gt;
| Type of station graphics to use for the default stations&lt;br /&gt;
|-&lt;br /&gt;
| construction_cost&lt;br /&gt;
| 0 ... 65525&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r19307}} per piece of track as multiplier to PR_BUILD_RAIL base cost.&lt;br /&gt;
|-&lt;br /&gt;
| speed_limit&lt;br /&gt;
| 0 ... 65525 km/h (speed units)&lt;br /&gt;
| A speed limit of 0 means unlimited speed&lt;br /&gt;
|-&lt;br /&gt;
| acceleration_model&lt;br /&gt;
| ACC_MODEL_RAIL, ACC_MODEL_MONORAIL, ACC_MODEL_MAGLEV&lt;br /&gt;
| ACC_MODEL_RAIL and ACC_MODEL_MONORAIL behave the same currently&lt;br /&gt;
|-&lt;br /&gt;
| map_colour&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r19307}} entry in the colour palette.&lt;br /&gt;
|-&lt;br /&gt;
| requires_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21842}} 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.&lt;br /&gt;
|-&lt;br /&gt;
| introduces_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21841}} 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.&lt;br /&gt;
|-&lt;br /&gt;
| sort_order&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21866}} number which defines the sort order among rail types. If this entry is not defined, it gets assigned sort order n*10+7 for the n-th railtype.&lt;br /&gt;
|-&lt;br /&gt;
| maintenance_cost&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r23415}} Maintenance cost factor for each piece of tracks of this railtype&lt;br /&gt;
|-&lt;br /&gt;
| alternative_railtype_list&lt;br /&gt;
| list of railtype labels&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r23758}} List or rail types which this rail type will act as fallback for, if the corresponding rail type is not defined separately&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sort order===&lt;br /&gt;
&lt;br /&gt;
The sort_order influences the sort order of the drop down lists with rail types. Default values are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| normal rail&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| electrified rail&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| monorail&lt;br /&gt;
|-&lt;br /&gt;
| 37&lt;br /&gt;
| maglev&lt;br /&gt;
|-&lt;br /&gt;
| n7&lt;br /&gt;
| railtype #n&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Base speeds for curves===&lt;br /&gt;
&lt;br /&gt;
The base speeds relevant for the curve_speed_multiplier are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! curve length&lt;br /&gt;
! base speed [km/h]&lt;br /&gt;
|-&lt;br /&gt;
| 0 (90 degree turn)&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 84&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 91&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 98&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 103&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 108&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 111&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 114&lt;br /&gt;
|-&lt;br /&gt;
| 12+&lt;br /&gt;
| 115&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Railtype variables==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| terrain_type&lt;br /&gt;
| TILETYPE_NORMAL, TILETYPE_DESERT, TILETYPE_RAIN_FOREST, TILETYPE_SNOW&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enhanced_tunnels&lt;br /&gt;
| 0&lt;br /&gt;
| should custom tunnel entrances be modified other values than 0 might be returned&lt;br /&gt;
|-&lt;br /&gt;
| level_crossing_status&lt;br /&gt;
| LEVEL_CROSSING_CLOSED, LEVEL_CROSSING_OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| build_date&lt;br /&gt;
| 0 .. 5000000&lt;br /&gt;
| for depots only: build date of the depot in days since 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Railtype callbacks==&lt;br /&gt;
&lt;br /&gt;
For rail types a number of callbacks are used to define rail type graphics. Each should refer to a sprite set containing the relevant sprites. Refer to the [[#Example sprites|example sprites]] or the example railtype grf in the NML repository, for an example on what sprites are needed in what order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! callbacks&lt;br /&gt;
! number of sprites&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| gui&lt;br /&gt;
| 16&lt;br /&gt;
| 4 rail directions, autorail, depot, tunnel and convert rail sprites for rail menu&lt;br /&gt;
|-&lt;br /&gt;
| track_overlay&amp;lt;ref name=leftout&amp;gt;Either all or none of these sprites should be provided.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 10&lt;br /&gt;
| 6 flat and 4 slope sprites. Track without landscape&lt;br /&gt;
|-&lt;br /&gt;
| underlay&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 16&lt;br /&gt;
| 6 flat and 4 slope, one crossing WITH track, 5 junction pieces without track. Tracks with ballast but without landscape&lt;br /&gt;
|-&lt;br /&gt;
| tunnels&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 4&lt;br /&gt;
| 1 sprite for each direction. Sprite is overlay for track in existing tunnel graphics. The original ground sprite is drawn, then the overlay, then possibly a train and the original tunnel head is drawn over the top. This keeps compatibility with different landscape types. Sprite order: SW, NW, NE, SE.&lt;br /&gt;
|-&lt;br /&gt;
| catenary_wire&lt;br /&gt;
| 28&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| catenary_pylons&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bridge_surfaces&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| level_crossings&amp;lt;ref name=leftout /&amp;gt;&lt;br /&gt;
| 10&lt;br /&gt;
| For each direction: one track sprite and 4 sprites for road lights etc&lt;br /&gt;
|-&lt;br /&gt;
| depots&amp;lt;ref name=depotr22854&amp;gt;{{ottd|1.2|r22854}} In OpenTTD prior to r22854, depot sprites would not be used if the above &#039;all or none&#039; sprites were not supplied.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 6&lt;br /&gt;
| 2 sprites for each south-ish, 1 sprite for each north-ish depot. Like original depots.&lt;br /&gt;
|-&lt;br /&gt;
| fences&lt;br /&gt;
| 8&lt;br /&gt;
| x, y, vertical, horizontal, SW, SE, NE and NW slopes like original fences at sprite 1301&lt;br /&gt;
|-&lt;br /&gt;
| tunnel_overlay&amp;lt;ref name=tunnel_overlay&amp;gt;Above &#039;all or none&#039; sprites must be supplied, if these sprites are to be used.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 4&lt;br /&gt;
| If this callback is defined, tunnels for this railtype will be drawn differently. First, a grass underlay base sprite is drawn, then the &#039;tunnels&#039;-sprite. Next, train sprites if applicable and then a grass overlay and finally the sprite from this type (tunnel_overlay). The grass sprites are defined in the base set and do not contain any parts of the tracks or portal, so these have to be fully provided by the railtype sprites. &amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains 0 for normal tunnels, without any extra features (like tracks above). All other values are reserved for future extensions.&lt;br /&gt;
|-&lt;br /&gt;
| signals&lt;br /&gt;
| 8&lt;br /&gt;
| {{ottd|1.3|r24367}} 1 sprite for each direction, order is SW(-facing), NE, SE, NW, E, W, S, N. For more information, see [[#signals|below]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
If a callback is not implemented or fails, graphics from the fallback railtype (picked via the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;station_graphics&amp;lt;/code&amp;gt; property) will be used instead.&amp;lt;br /&amp;gt;&lt;br /&gt;
Note that there is no &amp;quot;default graphics&amp;quot;-callback.&lt;br /&gt;
&lt;br /&gt;
===Example sprites===&lt;br /&gt;
==== gui ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_gui.png]]&lt;br /&gt;
&lt;br /&gt;
==== track_overlay ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_overlay.png]]&lt;br /&gt;
&lt;br /&gt;
==== underlay ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_underlay.png]]&lt;br /&gt;
&lt;br /&gt;
==== level_crossings ====&lt;br /&gt;
&lt;br /&gt;
You can define a special track piece which crosses the road and for each of two directions and each of the corners of the tile a separate sprite for a light, sign, or whatever should go there.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sprite number for X&lt;br /&gt;
!Sprite number for Y&lt;br /&gt;
!Useage&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;1&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Rail overlay&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;3&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;North light&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;5&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;East light&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;7&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;West light&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;9&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;South light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_levelcrossing.png]]&lt;br /&gt;
&lt;br /&gt;
==== depot ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
!Sprite Number&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;NE wall for SE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for SE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;NW wall for SW-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for SW-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for NE-entry depot.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| &amp;amp;nbsp; &amp;amp;nbsp;Depot building for NW-entry depot.&lt;br /&gt;
|}&lt;br /&gt;
==== fences ====&lt;br /&gt;
&lt;br /&gt;
[[File:railtype_fences.png]]&lt;br /&gt;
&lt;br /&gt;
==== tunnel_overlay ====&lt;br /&gt;
&lt;br /&gt;
If this callback is defined, tunnels for this railtype will be drawn differently.&lt;br /&gt;
&lt;br /&gt;
First, a grass underlay base sprite is drawn, then the &#039;tunnels&#039;-sprite. Next, train sprites if applicable and then a grass overlay and finally the sprite from this callback. The grass sprites are defined in the base set and do not contain any parts of the tracks or portal, so these have to be fully provided by the railtype sprites.&lt;br /&gt;
&lt;br /&gt;
Illustration: [[File:RailtypeTunnelExample.png]]&lt;br /&gt;
&lt;br /&gt;
==== signals ====&lt;br /&gt;
&lt;br /&gt;
This callback can be used to supply custom signal graphics.&lt;br /&gt;
&lt;br /&gt;
The resulting sprite set must consist of 8 sprites, corresponding to the following signal directions: SW-facing, NE-facing, NW-facing, SE-facing, E-facing, W-facing, S-facing, N-facing. Variable &amp;lt;code style:darkgreen&amp;gt;extra_callback_info2&amp;lt;/code&amp;gt; contains information about the kind of signal to be drawn. If resolving fails or results in an empty sprite group, the matching base set sprite will be used instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format of extra_callback_info2:&#039;&#039;&#039; 0xRRTTVVSS&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! TT: Signal type !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal block signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Entry pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Exit pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Combo pre-signal&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Two-way path signal&lt;br /&gt;
|-&lt;br /&gt;
| 5 || One-way path signal&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! VV: Signal variant !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Light (electric) signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Semaphore&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! SS: Signal state !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Red signal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Green signal&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The most significant byte (RR) is reserved and must be and-masked out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; can be used to distinguish between map and GUI sprites:&lt;br /&gt;
{| |-&lt;br /&gt;
! Lowest byte of [[GlobalVariables#Extra_callback_info_.2810_.2F_-.29_and_.2818_.2F_-.29|variable 10]] !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Signal is drawn in a viewport, i.e. on the map.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Signal is drawn in the signal GUI. The returned sprite set must still have 8 sprites, but OpenTTD will only use the 7th sprite, so all other sprites can be empty.&lt;br /&gt;
|-&lt;br /&gt;
| all other values || Reserved&lt;br /&gt;
|}&lt;br /&gt;
The other bytes of &amp;lt;code style:darkgreen&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; are reserved, and must be masked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example code===&lt;br /&gt;
&lt;br /&gt;
A typical implementation for railtypes can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 item(FEAT_RAILTYPES, elrail, 0x01) {&lt;br /&gt;
     property {&lt;br /&gt;
         label:                      &amp;quot;SHIN&amp;quot;;&lt;br /&gt;
         name:                       string(STR_EL_RAIL);&lt;br /&gt;
         menu_text:                  string(STR_EL_RAIL);&lt;br /&gt;
         build_window_caption:       string(STR_BUILD_CAPTION);&lt;br /&gt;
         autoreplace_text:           string(STR_AUTOREPLACE);&lt;br /&gt;
         new_engine_text:            string(STR_NEW_ENGINE);&lt;br /&gt;
         compatile_railtype_list:    [&amp;quot;SHIN&amp;quot;,&amp;quot;RAIL&amp;quot;,&amp;quot;ELRL&amp;quot;];                   // Tracks of rail and electrified rail are compatible&lt;br /&gt;
         powered_railtype_list:      [&amp;quot;ELRL&amp;quot;,&amp;quot;SHIN&amp;quot;];                          // But we got only power when we have electricity&lt;br /&gt;
         railtype_flags:             bitmask(RAILTYPE_FLAG_NO_LEVEL_CROSSING); // High speed tracks should not have level crossings&lt;br /&gt;
         curve_speed_multiplier:     1;&lt;br /&gt;
         station_graphics:           RAILTYPE_STATION_MAGLEV;                  // We want the most modern stations&lt;br /&gt;
         construction_cost:          32;                                       // should be pretty steep&lt;br /&gt;
         speed_limit:                500 km/h;&lt;br /&gt;
         acceleration_model:         ACC_MODEL_RAIL;                           // This is still rail, though&lt;br /&gt;
     }&lt;br /&gt;
     graphics {&lt;br /&gt;
         track_overlay:   ground_switch_overlay;     // defines the sprites drawn as overlay for junctions and highlight&lt;br /&gt;
         underlay:        ground_switch_underlay;    // defines the usual tracks and the underlay for junctions&lt;br /&gt;
         level_crossings: level_crossing_switch;     // defines level crossings including traffic lights and blocking bars&lt;br /&gt;
         tunnels:         tunnel_switch;             // defines the tracks drawn on a funnel tile&lt;br /&gt;
         depots:          depot_switch_electric;     // defines the depot sprites&lt;br /&gt;
         bridge_surfaces: bridge_terrain_switch;     // defines the overlay drawn over bridges&lt;br /&gt;
         fences:          fences_set;                // defines the look of fences&lt;br /&gt;
         // we don&#039;t define catenery wire and pylons, thus we use the default which comes with the base graphics.&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The switches and graphics blocks are defined in the usual way as described in sections [[NML:Switch|switches]], [[NML:Random switch|random switches]] and [[NML:Graphics|graphics block]] sections.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Objects&amp;diff=3197</id>
		<title>NML:Objects</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Objects&amp;diff=3197"/>
		<updated>2012-06-25T10:26:44Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Object callbacks */ add example on how to return sound effect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Object properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| class&lt;br /&gt;
| String literal of length 4&lt;br /&gt;
|&lt;br /&gt;
Unlike station classes, there is currently no default yet. You have to set the class ID before any other property or graphics. Characters allowed in the IDs are A-Z, 0-9. While you are technically free to chose your own class, it&#039;s highly recommended you stick to one of the [[#Default object classes|default classes]].&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one object in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| climates_available&lt;br /&gt;
| bitmask(CLIMATE_XXX, CLIMATE_YYY, ...)&lt;br /&gt;
| XXX = [TEMPERATE &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ARCTIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TROPICAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TOYLAND], alternatively NO_CLIMATE or ALL_CLIMATES&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| [x, y]&lt;br /&gt;
| Size in x and y direction. Both x and y must be compiletime constants&lt;br /&gt;
|-&lt;br /&gt;
| build_cost_multiplier&lt;br /&gt;
|&lt;br /&gt;
| multiplicator to the base purchase cost&lt;br /&gt;
|-&lt;br /&gt;
| remove_cost_multiplier&lt;br /&gt;
|&lt;br /&gt;
| multiplicator to the base removal cost&lt;br /&gt;
|-&lt;br /&gt;
| introduction_date&lt;br /&gt;
| date&lt;br /&gt;
| The date this object becomes available to build.&lt;br /&gt;
|-&lt;br /&gt;
| end_of_life_date&lt;br /&gt;
| date&lt;br /&gt;
| The last date this object is buildable. Must be at least 365 days after introduction_date&lt;br /&gt;
|-&lt;br /&gt;
| object_flags&lt;br /&gt;
| bitmask(OBJ_FLAG_XXX, OBJ_FLAG_YYY)&lt;br /&gt;
|&lt;br /&gt;
See [[#List of object flags|list of object flags]]&lt;br /&gt;
|-&lt;br /&gt;
| animation_info&lt;br /&gt;
| Array [ANIMATION_XXX, frame-count]&lt;br /&gt;
| XXX = [LOOPING &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NON_LOOPING], 1..253 frames&lt;br /&gt;
|-&lt;br /&gt;
| animation_speed&lt;br /&gt;
| 0..16&lt;br /&gt;
|&lt;br /&gt;
Speed of animation, see [[NML:Animation speed|animation speed table]] for the meaning of the values.&lt;br /&gt;
|-&lt;br /&gt;
| animation_triggers&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(OBJ_CBF_XXX, OBJ_CBF_YYY)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| height&lt;br /&gt;
| 0..255&lt;br /&gt;
| Height of the object / 8. For example if your object is 16 pixels height you should set height to 2. In OpenTTD this property is used to determine the height of the build object window; the height for the object preview is set to 32 + &amp;quot;value of property&amp;quot; * 8. The property is also used to determine how high a bridge must be if it is allowed by the bit in object_flags.&lt;br /&gt;
|-&lt;br /&gt;
| num_views&lt;br /&gt;
| 1, 2 or 4&lt;br /&gt;
| Objects may have &amp;quot;views&amp;quot;, i.e. different graphical representations, e.g. used to show rotated views of an object. Number of views may be 1, 2, or 4. Default value is 1. For non-square objects, x and y sizes are swapped for odd views. Use variable &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;view&amp;lt;/code&amp;gt; to determine the view of a built object.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Default object classes===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[ObjectLabels|list of object labels]] in the NewGRF Specs. The default class names listed there are recommended, you still need to set the class name for at least one object in every class or you risk to end up with objects in a class without a name. If multiple NewGRFs define objects for the same class the name defined in the last NewGRF will be used.&lt;br /&gt;
&lt;br /&gt;
===List of object flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ONLY_SE&lt;br /&gt;
| Only available in the scenario editor (incompatible with OBJ_FLAG_ONLY_INGAME)&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_IRREMOVABLE&lt;br /&gt;
| Object cannot be removed with the normal dynamite tool. In OpenTTD you can only remove the object with the magic bulldozer cheat, in TTDPatch you can remove it by holding ctrl while using the bulldozer tool. The cost of removing this object is multiplied by 25.&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ANYTHING_REMOVE&lt;br /&gt;
| Anything can remove this object (owned land behavior)&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ON_WATER&lt;br /&gt;
| Allow construction of the object on water&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_REMOVE_IS_INCOME&lt;br /&gt;
| Removal cost is actually income (owned land behaviour)&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_NO_FOUNDATIONS&lt;br /&gt;
| Do not display foundations if on a slope&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ANIMATED&lt;br /&gt;
| Setting this flag will allow the object&#039;s animation counter to be increased, must be set if you plan to make use of animations.&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ONLY_INGAME&lt;br /&gt;
| Only available during game play (incompatible with OBJ_FLAG_ONLY_SE)&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_2CC&lt;br /&gt;
| Allows 2cc mapping for objects instead of the default 1cc&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_NOT_ON_LAND&lt;br /&gt;
| Disallows construction on land (implies OBJ_FLAG_ON_WATER)&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_DRAW_WATER&lt;br /&gt;
| Draws the water under the object. Only applies when built on top of a water tile, also replaces the ground tile of the object completely. Does not work when object built on sloped water tiles.&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_ALLOW_BRIDGE&lt;br /&gt;
| Allow bridge over the object taking the building height into account.&lt;br /&gt;
|-&lt;br /&gt;
| OBJ_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Random bits in the &amp;quot;next animation frame&amp;quot; callback&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object variables==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| relative_x&lt;br /&gt;
| 0..255&lt;br /&gt;
| X-coordinate (top right -&amp;amp;gt; bottom left) of the tile relative to the northernmost tile.&lt;br /&gt;
|-&lt;br /&gt;
| relative_y&lt;br /&gt;
| 0..255&lt;br /&gt;
| Y-coordinate (top left -&amp;amp;gt; bottom right) of the tile relative to the northernmost tile.&lt;br /&gt;
|-&lt;br /&gt;
| relative_pos&lt;br /&gt;
| 0xYYXX&lt;br /&gt;
|&lt;br /&gt;
A combination of relative_x and relative_y in the format 0xYYXX. Useful if you want to check for a single position. The [[NML:Builtin functions|builtin function]] relative_coord(x, y) may be useful when making comparisons.&lt;br /&gt;
|-&lt;br /&gt;
| terrain_type&lt;br /&gt;
| TILETYPE_NORMAL, TILETYPE_DESERT, TILETYPE_RAIN_FOREST, TILETYPE_SNOW&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tile_slope&lt;br /&gt;
| SLOPE_XXX&lt;br /&gt;
|&lt;br /&gt;
See [[NML:List of tile slopes|tile slopes]] for an overview of possible values&lt;br /&gt;
|-&lt;br /&gt;
| build_date&lt;br /&gt;
|&lt;br /&gt;
| The date this object was build.&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0..255&lt;br /&gt;
| Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
| company_colour&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
|&lt;br /&gt;
Colour used for the company colour mask. Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| owner&lt;br /&gt;
| 0..0x10&lt;br /&gt;
| CompanyID of the owner of the object or 0x10 if it was build in the scenario editor&lt;br /&gt;
|-&lt;br /&gt;
| town_manhattan_dist&lt;br /&gt;
|&lt;br /&gt;
| Manhattan distance to the nearest town&lt;br /&gt;
|-&lt;br /&gt;
| town_euclidean_dist&lt;br /&gt;
|&lt;br /&gt;
| Euclidean distance to the nearest town&lt;br /&gt;
|-&lt;br /&gt;
| town_zone&lt;br /&gt;
|&lt;br /&gt;
[[NML:List of town zones|town zone]]&lt;br /&gt;
| The town zone of the current tile. The town zone from the closest town (measured in manhattan distance) is used.&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| 0 .. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;num_views&amp;lt;/code&amp;gt; - 1&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.1|r21455}} The view of the particular object. See also the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;num_views&amp;lt;/code&amp;gt; property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Variables that require one or more parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! arguments&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_object_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| ID of the object on a nearby tile, if defined by the same grf. OBJECT_TYPE_OTHER_GRF if the object is defined by a different grf (or none at all). OBJECT_TYPE_NO_OBJECT if the tile does not contain an object.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_random_bits&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| Random bits of the given tile&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_slope&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| See tile_slope&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_same_object&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile part of the same object?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_water&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile a water tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_terrain_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| See terrain_type&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_water_class&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| WATER_CLASS_XXX&lt;br /&gt;
| XXX = [NONE &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; SEA &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; CANAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; RIVER] Note that tiles for which &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;nearby_tile_is_water&amp;lt;/code&amp;gt; is 0 may still have a water class, e.g. industry tiles with water beneath them.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_height&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 120&lt;br /&gt;
| The minimum height of the given tile. 8 units correspond to one height level&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_class&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
[[NML:List of tile classes|Tile class]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_animation_frame&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| See animation_frame&lt;br /&gt;
|-&lt;br /&gt;
| object_count&lt;br /&gt;
| object id [, grfid]&lt;br /&gt;
| 0..0xFFFF&lt;br /&gt;
|&lt;br /&gt;
Number of objects with the given object id currently on the map. Grfid is the grfid of the newgrf you want to check the object count of (default is current grf). Use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;str2number()&amp;lt;/code&amp;gt; to convert a grfid to its numeric representation.&lt;br /&gt;
|-&lt;br /&gt;
| object_distance&lt;br /&gt;
| object id [, grfid]&lt;br /&gt;
| 0..0xFFFF&lt;br /&gt;
|&lt;br /&gt;
Manhattan distance to the closest object of the given type. Grfid is the grfid of the newgrf you want to check the minimum object distance of (default is current grf). Use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;str2number()&amp;lt;/code&amp;gt; to convert a grfid to its numeric representation. If the given object type is not yet built, this will return 0xFFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object callbacks==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! callback&lt;br /&gt;
! return value&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| default&lt;br /&gt;
| Sprite layout&lt;br /&gt;
| Normal graphics for an object placed on the map&lt;br /&gt;
|-&lt;br /&gt;
| purchase*&lt;br /&gt;
| Sprite layout&lt;br /&gt;
| Graphics shown in the build menu&lt;br /&gt;
|-&lt;br /&gt;
| anim_next_frame&lt;br /&gt;
| Next animation frame or CB_RESULT_XXX&lt;br /&gt;
| Called for every animation frame, returns the next frame to display. Alternatively, return CB_RESULT_NEXT_FRAME or CB_RESULT_STOP_ANIMATION to show the next frame or stop animation, respectively. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains random bits if the object flag OBJ_FLAG_RANDOM_ANIMATION is set. Returning a sound effect in the high byte will cause that sound effect to be played (e.g. &amp;lt;code&amp;gt;return (sound(&amp;quot;mysound.wav&amp;quot;) &amp;amp;lt;&amp;amp;lt; 8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; CB_RESULT_NEXT_FRAME;&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| anim_control&lt;br /&gt;
| Next animation frame or CB_RESULT_XXX&lt;br /&gt;
|&lt;br /&gt;
Called whenever an object animation trigger happens. Return the animation frame to show, or CB_RESULT_XXX with XXX = [CB_RESULT_START_ANIMATION &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STOP_ANIMATION &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DO_NOTHING] to respectively start the animation in its current frame, stop the animation or do nothing. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains random bits if the object flag OBJ_FLAG_RANDOM_ANIMATION is set. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info2&amp;lt;/code&amp;gt; contains the reason to trigger the animation, see the [[#Animation triggers| table]] below. Returning a sound effect in the high byte will cause that sound effect to be played.&lt;br /&gt;
|-&lt;br /&gt;
| anim_speed&lt;br /&gt;
| 0 .. 16&lt;br /&gt;
| Decide the time an animation frame should last. Return value is interpreted as (num_ticks = 2^anim_speed), which each tick lasting 30 ms. Avoid using this callback if possible, since it has to be called each tick for every animated tile. This can be used to create animation frames that last between 30 ms and 33 minutes.&lt;br /&gt;
|-&lt;br /&gt;
| colour&lt;br /&gt;
| colour2*16 + colour1&lt;br /&gt;
|&lt;br /&gt;
Called once, just after construction. Variable &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains the colour scheme of the constructing company in the same format as the return value, or random colours if not available (scenario editor). If OBJ_FLAG_2CC is not set, colour2 is zero. This callback can be used to alter the colour scheme of an object. Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible colour values.&lt;br /&gt;
|-&lt;br /&gt;
| autoslope&lt;br /&gt;
| CB_RESULT[_NO]_AUTOSLOPE&lt;br /&gt;
| Return CB_RESULT_AUTOSLOPE to allow autoslope (altering the ground below a tile) or CB_RESULT_NO_AUTOSLOPE to disallow it.&lt;br /&gt;
|-&lt;br /&gt;
| tile_check*&lt;br /&gt;
|&lt;br /&gt;
Same as for the [[NML:Industries#Location check results|location_check]] industry callback&lt;br /&gt;
| Parameters: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains the slope in bits 0..4 (see below), all other bits are reserved and should be and-masked out. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info2&amp;lt;/code&amp;gt; contains the location of the tile within the object as 16*y + x. If this callback is not implemented or fails, the default behaviour is to allow building the object if it can be placed on a flat surface. This means that steep slopes are not allowed and that the highest corner of each tile of a multi-tile object should have the same height. Additionally, all tiles must be flat if &amp;quot;build on slopes&amp;quot; is disabled.&lt;br /&gt;
|-&lt;br /&gt;
| additional_text*&lt;br /&gt;
| String&lt;br /&gt;
| Additional text to show in the purchase menu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* These callbacks are called when the object is not yet built, so object- specific variables cannot be accessed. Trying to do so will result in undefined behaviour.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Animation triggers===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Animation trigger&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_OBJ_BUILT&lt;br /&gt;
| Object is built (all tiles at the same time)&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_OBJ_TILELOOP&lt;br /&gt;
| Object tile is processed in the tileloop (at different times for different tiles)&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_OBJ_256_TICKS&lt;br /&gt;
| Every 256 ticks (all tiles at the same time)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Vehicles&amp;diff=3186</id>
		<title>Action0/Vehicles</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Vehicles&amp;diff=3186"/>
		<updated>2012-05-13T10:47:52Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Load amount */ explain &amp;#039;unit of time&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; padding-left:12px; background:none;&amp;quot;&amp;gt;{{NFONavVehicles}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Action 0 properties common to all vehicle types:&lt;br /&gt;
The four vehicle types (trains, road vehicles, ships and planes) all have some common properties, which are described here.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Number !![[GRFActionsDetailed|Size]]!!Version !!Description !!Available for articulated parts&lt;br /&gt;
|-&lt;br /&gt;
|00 ||W||{{ottdp|0.6|2.0}}||date of introduction||no&lt;br /&gt;
|-&lt;br /&gt;
| 02||B||{{ottdp|0.6|2.0}}||reliability decay speed||no&lt;br /&gt;
|-&lt;br /&gt;
| 03||B||{{ottdp|0.6|2.0}}||vehicle life in years||no&lt;br /&gt;
|-&lt;br /&gt;
| 04||B||{{ottdp|0.6|2.0}}||model life in years||no&lt;br /&gt;
|-&lt;br /&gt;
| 06||B||{{ottdp|0.6|2.0}}||climate availability||should be zero&lt;br /&gt;
|-&lt;br /&gt;
| 07||B||{{ottdp|0.6|2.0}} {{grfFrom|2}}||load amount||yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In TTDPatch properties 00 to 06 only apply to new games, or when using [[ttwiki:ResetVehicleData|Cht: ResetVehicles]].&lt;br /&gt;
In OpenTTD the same holds for 00, 02, 04 and 06 (i.e. not for 03) unless using [[ottdwiki:Console#Other_commands|resetengines]].&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Date of introduction ===&lt;br /&gt;
&lt;br /&gt;
The date is specified as number of days since 1920 where TTD counts 365,25 days in a year. It will have a random number from 0 to 511 days added to it at the start of every new game, or after using [[ttwiki:ResetVehicleData|Cht: ResetVehicles]] (TTDPatch) resp. [[ottdwiki:Console#Other_commands|resetengines]] (OpenTTD).&lt;br /&gt;
&lt;br /&gt;
{{ottdp|&amp;amp;lt;0.7|}} Note that TTD stops updating vehicle type data after the game ends in 2050, so all dates of introduction should be no later than in 2044, to ensure that all vehicle types can be introduced and reach their maximum reliability. This restriction does not apply to OpenTTD 0.7 and newer.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|&amp;amp;lt;0.7| |ottdrev=before r16929}} If the property value is 729 (2D9h) or less, i.e. before 1922, the random number is not added and the vehicle is introduced at exactly the given date.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.7|no}} Since OpenTTD r16929 the start date is not randomised in the first two years after game-start (no matter whether before or after 1922).&lt;br /&gt;
&lt;br /&gt;
The \w&amp;amp;lt;date&amp;amp;gt; escape sequence is especially useful here. See [[GRFActionsDetailed#Byte order|the discussion of escape sequences]] for further information.&lt;br /&gt;
&lt;br /&gt;
=== Reliability decay speed ===&lt;br /&gt;
&lt;br /&gt;
The reliability decay speed is set when a new vehicle is bought, and specifies how quickly the reliability decays after servicing. &amp;amp;nbsp;The initial TTD default for all vehicles is 20. &amp;amp;nbsp;If a vehicle goes without servicing for a long time, or if it gets very, very old, this number increases, meaning faster decay and more breakdowns. &amp;amp;nbsp;Larger numbers mean faster decay, smaller number slower decay. If set to 0, reliability never decreases in normal operation.&lt;br /&gt;
&lt;br /&gt;
=== Vehicle life ===&lt;br /&gt;
&lt;br /&gt;
The number of years before a particular vehicle is considered too old and needs replacing,&lt;br /&gt;
&lt;br /&gt;
=== Model life ===&lt;br /&gt;
&lt;br /&gt;
The number of years that this model can be bought in the game (if PersistentEngines is off). &amp;amp;nbsp;Usually this should be at least twice or three times as &amp;amp;nbsp;long as the vehicle life. &amp;amp;nbsp;When starting a new game, a random amount between 31 months and 17 years is added to this as well.&lt;br /&gt;
&lt;br /&gt;
If the early retirement property (26/1B/16/16) is not set, the model life works like this:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Phase !!Duration !!Reliability&lt;br /&gt;
|-&lt;br /&gt;
|1||7 to 38 months||increases from 48-73% to 75-100%&lt;br /&gt;
|-&lt;br /&gt;
|2||prop. 04 less 8 years||stays constant at peak, 75-100%&lt;br /&gt;
|-&lt;br /&gt;
|3||10 to 20.5 years||decreases from peak to 25-50%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(the ranges in time and reliability are randomized at the start of each game)&lt;br /&gt;
&lt;br /&gt;
At the end of phase 3, the model is retired and removed from the purchase list. &amp;amp;nbsp;Note that when the model reliability starts dropping in phase 3, so does the reliability of every single vehicle of this make in the game.&lt;br /&gt;
&lt;br /&gt;
Setting this property to 0xFF means the model will never expire.&lt;br /&gt;
&lt;br /&gt;
If persistentengines is on, the model never gets to within two years of the end of phase 2, it is kept in phase 2 as long as at least one vehicle of this make is in the game.&lt;br /&gt;
&lt;br /&gt;
If the early retirement property is set, the vehicle is retired this many years before the end of phase 2 (can be negative if desired), but not if persistentengines would keep the model alive.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.7|2.5|ottdrev=r14680|ttdprev=2.5 beta 7}} This property also works for wagons since TTDPatch 2.5 beta 7 resp. OpenTTD r14680.&lt;br /&gt;
&lt;br /&gt;
=== Climate availability ===&lt;br /&gt;
&lt;br /&gt;
This is a bit mask of the climates in which this model is available. &amp;amp;nbsp;Simply add the values for the climates:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Bit!!Value!!Climate&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Temperate&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Arctic&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Tropical&lt;br /&gt;
|-&lt;br /&gt;
|3||8||Toyland&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example, 1+2+4 = 07 would make a vehicle available in all climates except Toyland.&lt;br /&gt;
&lt;br /&gt;
If you need a vehicle not to be available through the purchase menu, e.g. a locomotive tender being part of an articulated vehicle (locomotive and tender), you may use a value of zero for the bit mask.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no|2.5}} Same procedure works for vehicles to be used exlusively by [[Callback:_AI_construction/purchase_selection |TTDPatch&#039;s AI]], but not by a human player.&lt;br /&gt;
&lt;br /&gt;
=== Load amount ===&lt;br /&gt;
This is the amount of cargo transferred per unit of time if using gradualloading. &amp;amp;nbsp;The default is 5 for trains and road vehicles, 10 for ships and 20 for aircraft. This amount of cargo is loaded to or unloaded from the vehicle every 40 ticks for trains, every 20 ticks for road vehicles and aircraft and every 10 ticks for ships.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|&amp;amp;lt;0.7||ottdrev=before r14672}} For aircraft carrying both passengers and mail this property is broken (wrt. mail) in TTDPatch and OpenTTD before r14672. All aircraft effectively use the load amount of the train engine with ID 00.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.7|no|ottdrev=r14672}} Since OpenTTD r14672 this property is used for passengers, while mail uses 1/4 (rounded up). You can use [[Callbacks#Load amount (12)|callback 12]] to control load amounts for passengers and mail independently.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=3185</id>
		<title>NML:Vehicles</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=3185"/>
		<updated>2012-05-13T10:47:11Z</updated>

		<summary type="html">&lt;p&gt;FooBar: explain loading_speed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Properties common to all vehicle types==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
| (string)&lt;br /&gt;
| yes&lt;br /&gt;
| for example &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;string(STR_NAME_HEREFORD_TRAM)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;climates_available&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(CLIMATE_XXX, CLIMATE_YYY, ...)&lt;br /&gt;
| set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt;&lt;br /&gt;
| XXX = [TEMPERATE &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ARCTIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TROPICAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TOYLAND], alternatively &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES&amp;lt;/code&amp;gt;. To make a vehicle available in all climates except toyland you could use: &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES &amp;amp;amp; ~bitmask(CLIMATE_TOYLAND)&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;introduction_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date&amp;lt;/code&amp;gt;(yyyy,mm,dd)&lt;br /&gt;
| no&lt;br /&gt;
| Valid range for yyyy is 0 ... 5000000. In TTDPatch, dates after 2044 will be limited to 2044. Unless the engine is introduced within two years after game-start (always 1920 in TTDPatch), a random number of days between 0 and 511 will be added to this.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 254 (years) or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Number of years a model is &amp;quot;supported&amp;quot; by the manufacturer, see [[#Engine life cycle|below]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt;&lt;br /&gt;
| -128 ... 127 (years)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Retire the vehicle (make it unavailable in the purchase menu) this many years before reliability starts dropping, see [[#Engine life cycle|below]]. May be negative.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;vehicle_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (years)&lt;br /&gt;
| no&lt;br /&gt;
| Life length of an individual vehicle, before it is considered too old and in need of replacement.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;reliability_decay&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| Default vehicles use 20. The higher the value the faster reliability decays, the more frequent service is needed. 0 means reliability never decreases if the vehicle is not too old&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_BULK, CC_COVERED)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;non_refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_OVERSIZED, CC_SPECIAL)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_types&amp;lt;/code&amp;gt;&lt;br /&gt;
| bit mask of entries into the cargo translation table&lt;br /&gt;
| yes&lt;br /&gt;
| As of NML 0.3, do not use this. Use cargo_[dis]allow_refit (see below) instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_allow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to allow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[COAL, IORE]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_disallow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to disallow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[MAIL]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;loading_speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (cargo units)&lt;br /&gt;
| yes&lt;br /&gt;
| Units of cargo loaded per time unit. Default vehicles use 5 for trains and road vehicles, 10 for ships and 20 for aircraft. This amount of cargo is loaded to or unloaded from the vehicle every 40 ticks for trains, every 20 ticks for road vehicles and aircraft and every 10 ticks for ships.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base purchase cost&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base running costs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_age_period&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22713}} This property specifies after how many ticks cargo is aged. Default value is 185. 74 ticks is equal to 1 day.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Refittability===&lt;br /&gt;
&lt;br /&gt;
To determine whether your vehicle can be refitted to a certain cargo, OpenTTD uses the following table&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Cargo matches refittable_cargo_classes&lt;br /&gt;
! Cargo matches non_refittable_cargo_classes&lt;br /&gt;
! Cargo in cargo_allow_refit&lt;br /&gt;
! Cargo in cargo_disallow_refit&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| No&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Not refittable&lt;br /&gt;
|-&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Yes&lt;br /&gt;
| Not refittable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For those that prefer boolean logic, the formula is as follows:&lt;br /&gt;
&lt;br /&gt;
refittable = ((cargo classes in refittable_cargo_classes AND NOT cargo classes in non_refittable_cargo_classes) OR cargo in cargo_allow_refit) AND NOT (cargo in cargo_disallow_refit)&lt;br /&gt;
&lt;br /&gt;
In general, you should use refittable_cargo_classes and non_refittable_cargo_classes to decide to which cargos your vehicle is refittable, and only then use cargo_allow_refit and cargo_disallow_refit to allow/disallow specific cargos.&lt;br /&gt;
&lt;br /&gt;
===Engine life cycle===&lt;br /&gt;
&lt;br /&gt;
The life cycle of a vehicle model consists of three phases, as outlined in the following table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! phase&lt;br /&gt;
! duration&lt;br /&gt;
! reliability&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 7 to 38 months&lt;br /&gt;
| increases from 48-73% to 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; - 8 years&lt;br /&gt;
| stays constant at peak, 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 10 to 20.5 years&lt;br /&gt;
| decreases from peak to 25-50%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; is set to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;, the engine remains in phase 2 forever.&lt;br /&gt;
&lt;br /&gt;
Normally, the vehicle is removed from the purchase menu at the and of phase 3. However if you set the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt; property, it will be retired this many years before (or after, if the value is negative) the end of phase 2.&lt;br /&gt;
&lt;br /&gt;
==Sorting vehicles in the purchase list==&lt;br /&gt;
This is a special property that is not encoded in an item/property-block like most other properties but it has it&#039;s own block instead. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 sort(&amp;lt;feature&amp;gt;, [&amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;...]);&lt;br /&gt;
&lt;br /&gt;
The engines will be sorted in the given order on the position where originally the first element was. Say the original engine sorting is this: A B C D E and you use this code &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sort(FEAT_TRAINS, [D, B, A]);&amp;lt;/code&amp;gt; the final sorting will be this: C D B A E&lt;br /&gt;
&lt;br /&gt;
==Train properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;sprite_id&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;SPRITE_ID_NEW_TRAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
| Max speed for engines, speed limit for wagons&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;misc_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(TRAIN_FLAG_XXX, ...)&lt;br /&gt;
| FLIP should not be set, TILT and MU the same value&lt;br /&gt;
| XXX=[TILT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 2CC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MU &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FLIP &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; AUTOREFIT] which allows the train to enjoy the tilt bonus, use the 2nd company colour, act as a multiple unit (used for livery selection only) or allow the vehicle to be flipped (reversed) in the depot&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refit_cost&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 50% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;callback_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| item from railtypetable&lt;br /&gt;
| must be the same as front&lt;br /&gt;
| Default railtype table: RAIL, MONO, MGLV. If you install a railtypetable yourself you&#039;ll always get the railtype you specified. If you want a vehicle to run on electric rail and you don&#039;t have a railtypetable, set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt; to RAIL and make sure that you set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt; to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENGINE_CLASS_ELECTRIC&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_special_flag&amp;lt;/code&amp;gt;&lt;br /&gt;
| [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_CARGO&amp;lt;/code&amp;gt;]&lt;br /&gt;
| no&lt;br /&gt;
| Set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; to tell computer players that it&#039;s an engine that should only be used for passenger service.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;power&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_base&amp;lt;/code&amp;gt;&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| =0&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;dual_headed&amp;lt;/code&amp;gt;&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| =0 for both parts&lt;br /&gt;
| 1 = dual_headed, otherwise normal engine&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;weight&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 1279 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_engine_rank&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| TTDPatch only: Higher values make the engine for the TTDPatch AI more attractive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt;&lt;br /&gt;
| ENGINE_CLASS_XXX&lt;br /&gt;
| no&lt;br /&gt;
| XXX=[STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MONORAIL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MAGLEV]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
| Only wagons with a livery override for this engine will add power&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;tractive_effort_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;air_drag_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;length&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1 ... 8&lt;br /&gt;
| yes&lt;br /&gt;
| Length of the vehicle in arbitrary units. Use a value of 8 (equal to the predefined constant VEHICLE_LENGTH) for a full-length vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;(VISUAL_EFFECT_XXX, offset, &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENABLE_WAGON_POWER&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;DISABLE_WAGON_POWER&amp;lt;/code&amp;gt;)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means &amp;quot;take from engine_class property&amp;quot;. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_weight_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
| Adds extra weight for powered wagons, see &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span #id=&amp;quot;bitmask_vehicle_info&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_vehicle_info&amp;lt;/code&amp;gt;&lt;br /&gt;
| 8-bit bitmask&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Used for obtaining [[#bitmask consist info|&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_consist_info&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road vehicle properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_ROADVEH&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 514km/h (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(ROADVEH_FLAG_XXX, ...)&lt;br /&gt;
| partly; tram flag must the same&lt;br /&gt;
| The following flags are defined: ROADVEH_FLAG_TRAM, ROADVEH_FLAG_2CC, ROADVEH_FLAG_AUTOREFIT. Use 0 if you don&#039;t want to set any of these flags.&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 25% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_base&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| set to RUNNING_COST_NONE&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| 0 ... 2550hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| 0 ... 63.75ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| air_drag_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|-&lt;br /&gt;
| length&lt;br /&gt;
| 1 ... 8&lt;br /&gt;
| yes&lt;br /&gt;
| Length of the vehicle in arbitrary units. Use a value of 8 (equal to the predefined constant VEHICLE_LENGTH) for a full-length vehicle.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ship properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_SHIP&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 127 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(SHIP_FLAG_2CC, SHIP_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of the default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_refittable&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 0=false, 1=true. Note: if you do not set this property to 1, then refittable_cargo_classes / non_refittable_cargo_classes have no effect.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| For ships (unlike other vehicle types) the capacity set here is not affected by the cargo type.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| ocean_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on ocean tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| canal_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on canal tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this ship. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aircraft properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_AIRCRAFT&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 .. 3280 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| 0 .. 2894&lt;br /&gt;
| {{nml|0.3}} {{ottdp|1.2|no|ottdrev=r23504}} Maximum (euclidean) distance the aircraft can cover between two airports. Set to 0 for unlimited range.&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(AIRCRAFT_FLAG_2CC, AIRCRAFT_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable both&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_helicopter&lt;br /&gt;
| AIRCRAFT_TYPE_XXX&lt;br /&gt;
| XXX=[NORMAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; HELICOPTER]&lt;br /&gt;
|-&lt;br /&gt;
| is_large&lt;br /&gt;
| AIRCRAFT_SIZE_XXX&lt;br /&gt;
| XXX=[SMALL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; LARGE]. Set to AIRCRAFT_SIZE_SMALL for helicopters.&lt;br /&gt;
|-&lt;br /&gt;
| acceleration&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| In arbitrary units&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| 0 ... 65536&lt;br /&gt;
| Capacity for the passenger compartment. See also the notes at &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; below.&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Capacity for the mail compartment, if refitted to a cargo in the CC_PASSENGERS class. When refitted to other cargoes, this capacity is added to the passenger capacity to determine the base capacity. The actual capacity is set to this base capacity divided by 1 for mail, 2 for goods and 4 for all other cargoes. To override this effect, use the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;passenger_capacity&amp;lt;/code&amp;gt; and &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; callbacks.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Vehicle variables==&lt;br /&gt;
&lt;br /&gt;
Below an overview of all vehicle-specific variables. Not that in the purchase list, the vehicle is not built yet and as such many variables are not available. All general variables are available, refer to the table for info on vehicle-specific variables. Trying to access a non-available variable invokes undefined behaviour. Please note that while all variables are available for all vehicles types, some of them only make sense for one or more vehicle types. For example checking current_railtype for a non-rail vehicle doesn&#039;t make sense at all.&lt;br /&gt;
&lt;br /&gt;
===Variables without parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| The position of the current vehicle-part from the start of the vehicle. The engine will get value 0, the first wagon (or second engine) gets value 1, etc.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Same as position_in_consist but counted from the end. The last wagon will get value 0.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_consist&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| The total number of vehicles-parts in this vehicle. For aircraft this will include the shadow and the rotor.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist_from_end, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_vehid_chain&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| See num_vehs_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes_in_consist&lt;br /&gt;
| Bitmask of CC_XXX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
|-&lt;br /&gt;
| most_common_refit&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| No&lt;br /&gt;
| cargo class most often refit to&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_consist_info&lt;br /&gt;
| Bitmask 8 bit&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Binary OR of the values of [[#bitmask vehicle info|bitmask_vehicle_info]] of all vehicles (engines, wagons) in the consist. Only available for rail vehicles.&lt;br /&gt;
|-&lt;br /&gt;
| company_num&lt;br /&gt;
| 0 ... 14&lt;br /&gt;
| Yes&lt;br /&gt;
| company number of the vehicle owner. TTDPatch only supports up to 8 companies (0 ... 7)&lt;br /&gt;
|-&lt;br /&gt;
| company_type&lt;br /&gt;
| PLAYERTYPE_XX&lt;br /&gt;
| Yes&lt;br /&gt;
| PLAYERTYPE_HUMAN, PLAYERTYPE_AI, PLAYERTYPE_HUMAN_IN_AI (human managing AI company) or PLAYERTYPE_AI_IN_HUMAN (AI managing human company). OpenTTD only uses PLAYERTYPE_HUMAN and PLAYERTYPE_AI. If you cheat yourself to be part of an AI company OpenTTD will still report PLAYERTYPE_AI for the company with yourself and the AI and it&#039;ll report PLAYERTYPE_HUMAN for the now uncontrolled company.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour1&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour2&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Same as company_colour1, if no 2nd company colour is chosen. Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| aircraft_height&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Height difference between the aircraft and its shadow. 8 Units are equivalent to one height level on the map.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XX&lt;br /&gt;
| No&lt;br /&gt;
| AIRPORTTYPE_SMALL, AIRPORTTYPE_LARGE, AIRPORTTYPE_HELIPORT or AIRPORTTYPE_OILRIG&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_cur&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) vehicle and this vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_cur_next&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between this vehicle and the next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_next&lt;br /&gt;
| -4 ... 4&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) and next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees. Equal to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curve_invo_prev_cur + curv_info_cur_next&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info&lt;br /&gt;
| vehicle_curv_info(&#039;&#039;prev_cur&#039;&#039;, &#039;&#039;cur_next&#039;&#039;)&#039;&#039;&#039;&#039;&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Returns a magic number that represents the curvature state of the prev-cur-next vehicle triplet. Do not try to make sense of this magic number, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;vehicle_curv_info()&amp;lt;/code&amp;gt; instead to make comparisons. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curv_info == vehicle_curv_info(a, b)&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;(curv_info_prev_cur == a) &amp;amp;amp;&amp;amp;amp; (curv_info_cur_next == b)&amp;lt;/code&amp;gt;, however the former can easily be used in a switch-block.&lt;br /&gt;
|-&lt;br /&gt;
| motion_counter&lt;br /&gt;
| 0 ... 15&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Is increased every time the vehicle moves a single step on the map. Useful for animations.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_type_in_veh&lt;br /&gt;
| entry in cargo translation table&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| 0xFF if not present in the table&lt;br /&gt;
|-&lt;br /&gt;
| cargo_unit_weight&lt;br /&gt;
| weight per unit in 1/16t&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes&lt;br /&gt;
| Bitmask of [[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| class of the currently transported cargo&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_available&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is available on the open market&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_testing&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being tested&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_offered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being offered for exclusive preview&lt;br /&gt;
|-&lt;br /&gt;
| build_year&lt;br /&gt;
| 0 ... 5000000&lt;br /&gt;
| Yes&lt;br /&gt;
| 0-based year when the vehicle was built, current year if the vehicle is not built yet&lt;br /&gt;
|-&lt;br /&gt;
| direction&lt;br /&gt;
| DIRECTION_XX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
See [[NML:List of direction constants|here]] for an overview of possible values and their meaning.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Cargo capacity (number of units) of the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_count&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Number of cargo units of cargo in the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Cargo subtype, used to provide more than one refit option for the same cargo type. See also the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype_text&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power and is on the correct track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_not_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle is either on a wrong track type or it doesn&#039;t provide power at all&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_potentially_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power, if it is on a suitable track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_reversed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has reversed an odd number of times&lt;br /&gt;
|-&lt;br /&gt;
| built_during_preview&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle was built during the exclusive preview stage&lt;br /&gt;
|-&lt;br /&gt;
| current_railtype&lt;br /&gt;
| No&lt;br /&gt;
| Entry from railtype translation table or 0xFF&lt;br /&gt;
| Don&#039;t use this variable unless you&#039;ve defined a railtype translation table. If the train is running on a railtype that is not listed in your railtype translation table this variable will contain 0xFF. Available since OpenTTD r20164.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
|&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| random_bits&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random data that can be used to randomize certain descisions. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| grfid&lt;br /&gt;
| 0 ... 0xFFFFFFFF&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
GRFID that defined the [[NML:Graphics|graphics]]-block for this vehicle. To compare this with other grfids, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;str2number()&amp;lt;/code&amp;gt; to convert the other GRFID to a number as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_type_id&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| GRF-local ID of the vehicle, equal to the item ID. Note that vehicles from other NewGRFs may have the same ID, so you&#039;ll generally have to check the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;grfid&amp;lt;/code&amp;gt; as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_hidden&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is hidden in a depot or tunnel.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_stopped&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is stopped, or if it is braking for a stop (trains only).&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_crashed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has crashed.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_broken&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is broken down.&lt;br /&gt;
|-&lt;br /&gt;
| date_of_last_service&lt;br /&gt;
| date(year, month, day)&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| breakdowns_since_last_service&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Number of breakdowns since the last service&lt;br /&gt;
|-&lt;br /&gt;
| reliability&lt;br /&gt;
| 0 ... 100&lt;br /&gt;
| No&lt;br /&gt;
| Reliability (percentage)&lt;br /&gt;
|-&lt;br /&gt;
| age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| max_age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Maximum vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| current_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The current speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| max_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The maximum speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_in_depot&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is inside a depot&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Variables that require an argument===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! Argument&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| count_veh_id&lt;br /&gt;
| The vehicle ID to look for.&lt;br /&gt;
| 0..255&lt;br /&gt;
| No&lt;br /&gt;
| The number of vehicles in the current consist that have the given ID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vehicle callbacks==&lt;br /&gt;
The following table contains a list of available vehicle callbacks. Additionally, it&#039;s possible to provide cargo-specific graphics, using the identifier from the [[NML:Cargotable|cargo table]] as callback name. These callbacks will be used if the vehicle is refitted to the corresponding cargo type. If no cargo-specific graphics match the cargo that the vehicle is carrying, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;default&amp;lt;/code&amp;gt; callback is used instead. Cargo-specific graphics callbacks are never called from the purchase menu, refer to the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; callback below instead.&lt;br /&gt;
&lt;br /&gt;
Note that the above affects &#039;&#039;&#039;graphics only&#039;&#039;&#039;, other callbacks are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| default&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Sprite group&lt;br /&gt;
| &#039;Normal&#039; vehicle graphics, if no cargo-specific graphics apply.&lt;br /&gt;
|-&lt;br /&gt;
| purchase&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics to show in the buy menu (only the horizontal view is needed, except for dual-headed trains. With the &amp;lt;code&amp;gt;dual_headed&amp;lt;/code&amp;gt; property set, special rules for the purchase menu sprite apply: two sprites are drawn (for front and back) as if the vehicle is normally constructed. If you supply one purchase menu sprite, it will be used for both vehicle parts in the purchase menu. Provide a set of 8 sprites, and the 7th resp. 3rd sprite will be drawn; provide a set of 8 blank sprites except the 7th if you want to fully control a single purchase menu sprite for a dual-headed engine. )&lt;br /&gt;
|-&lt;br /&gt;
| rotor&lt;br /&gt;
| Aircraft (helicopters)&lt;br /&gt;
| No&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics for the helicopter rotor (4 sprites; 1 stopped and 3 moving)&lt;br /&gt;
|-&lt;br /&gt;
| random_trigger&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| N/A&lt;br /&gt;
| See [[NML:Random switch|random switch]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype_text&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String, or CB_RESULT_NO_TEXT&lt;br /&gt;
| With this callback, you can display extra text after the cargo in the vehicle information window. This callback is called during refitting, with succesively increased values of the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, until the callback returns CB_RESULT_NO_TEXT. All returned strings are then displayed as refit options. The chosen refit option is saved in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, so it can be used later for other things. In the HEQS grf for example, this mechanism is used to let the user choose between different capacities of the same vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| additional_text&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| String&lt;br /&gt;
| Additional text to show in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
| colour_mapping&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_colour_mapping&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Recolour sprite number&lt;br /&gt;
|&lt;br /&gt;
With this callback, you can use a different recolour sprite instead of the standard 1cc / 2cc company colour remappings. See [[NML:List of default colour translation palettes|here]] for a list of default palettes. See the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;reserve_sprites()&amp;lt;/code&amp;gt; for info on how to allocate your own sprite. For performance, the result is cached and only updated if the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt; every_32_days&amp;lt;/code&amp;gt; callback requires so. Add CB_RESULT_COLOUR_MAPPING_ADD_CC to the result to add the company colour to the sprites, this requires 16 (1cc) or 256 (2cc) sprites in total.&lt;br /&gt;
|-&lt;br /&gt;
| start_stop&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_NO_TEXT&lt;br /&gt;
| Called when starting or stopping a vehicle. Mainly useful to prevent vehicles from leaving the depot unless a certain condition is met. Return CB_RESULT_NO_TEXT to allow or a string (containing an error message) to disallow starting/stopping.&lt;br /&gt;
|-&lt;br /&gt;
| every_32_days&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| bitmask(CB_RESULT_32_DAYS_XXX, ...)&lt;br /&gt;
| Called every 32 days. Set CB_RESULT_32_DAYS_TRIGGER in the bitmask to trigger TRIGGER_VEHICLE_32_CALLBACK. Set CB_RESULT_32_DAYS_COLOUR_MAPPING in the bitmask to update the colour mapping by re-running the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;colour_mapping&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| SOUND_XXX, sound(&amp;quot;sound.wav&amp;quot;), import_sound(grfid, number) or CB_RESULT_NO_SOUND&lt;br /&gt;
|&lt;br /&gt;
Called to play various vehicle sounds. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains the sound event, see the [[#Sound events|table]] below. Return SOUND_XXX (see [[NML:List_of_sound_effects|here]]) to return a default sound. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sound(&amp;quot;soundfile&amp;quot;)&amp;lt;/code&amp;gt; imports a sound from a .wav file. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;import_sound(grfid, number)&amp;lt;/code&amp;gt; imports a sound from another grf. A failed (or not implemented) callback will cause the default sound to be played. Return CB_RESULT_NO_SOUND to play no sound at all.&lt;br /&gt;
|-&lt;br /&gt;
| articulated_part&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes (no separate callback)&lt;br /&gt;
| Vehicle ID, or CB_RESULT_NO_MORE_ARTICULATED_PARTS&lt;br /&gt;
| With this callback, you can add articulated parts (e.g. tenders) to your vehicle. Called repeatedly, until CB_RESULT_NO_MORE_ARTICULATED_PARTS is returned. After each call, the returned vehicleID is added to your vehicle. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains 1 during the first call, 2 during the second, etc. Note that callback may be called from the purchase list, using vehicle variables is not possible. Or CB_RESULT_REVERSED_VEHICLE to the returned vehicle ID to display the vehicle backwards. &lt;br /&gt;
&lt;br /&gt;
For NML 0.2 and lower the vehicle ID of the articulated part must be in the range 0 .. 127.&lt;br /&gt;
|-&lt;br /&gt;
| can_attach_wagon&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_ATTACH_XXX&lt;br /&gt;
| Called when a wagon is being attached, to allow or disallow attaching. This callback has to be defined at the engine. However, variables in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;SELF&amp;lt;/code&amp;gt; scope refer to the wagon being attached, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;PARENT&amp;lt;/code&amp;gt; scope refers to the engine that the wagon is being attached to. Return a string to disallow with the string as error message. Return CB_RESULT_ATTACH_DISALLOW to disallow with standard message (&amp;quot;incompatible railtypes&amp;quot;), CB_RESULT_ATTACH_ALLOW to allow or CB_RESULT_ATTACH_ALLOW_IF_RAILTYPES to allow if the railtypes match (default).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following callbacks all have an equivalent property. The property description applies here also, except where otherwise noted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| loading_speed&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_speed&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_running_cost_factor&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23089}} All&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 .. 16377 as refit cost. Add &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;CB_RESULT_AUTOREFIT&amp;lt;/code&amp;gt; if you want to allow autorefit.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_age_period&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| All except aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_cargo_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_passenger_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_mail_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_range&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect_and_powered&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| Road Vehicles, Ships&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_power&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_weight&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| length&lt;br /&gt;
| Trains, Road vehicles&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_tractive_effort_coefficient&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Value range is 0 .. 255 instead of 0 .. 1.&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_vehicle_info&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sound events===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Event&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_START&lt;br /&gt;
| Vehicle leaves station or depot, plane takes off&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TUNNEL&lt;br /&gt;
| Vehicle enters tunnel&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_BREAKDOWN&lt;br /&gt;
| Vehicle breaks down (not for planes)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING&lt;br /&gt;
| Once per engine tick, but no more than once per vehicle motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TOUCHDOWN&lt;br /&gt;
| Aircraft touches down&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_VISUAL_EFFECT&lt;br /&gt;
| Visual effect is generated (steam plume, diesel smoke, electric spark)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING_16&lt;br /&gt;
| Every 16 engine ticks if in motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_STOPPED&lt;br /&gt;
| Every 16 engine ticks if stopped&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_LOAD_UNLOAD&lt;br /&gt;
| Consist loads or unloads cargo&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3183</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3183"/>
		<updated>2012-05-06T17:12:23Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Axle load class [**X*] */ there are only five default classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly.&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|T ||[http://en.wikipedia.org/wiki/Three-phase_AC_railway_electrification three phase AC electrification] || E&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you want multi-voltage/current vehicles in your set (i.e. a train that can run on both AC and DC current), you have to define a dedicated railtype for those vehicles. Without the railtype, it&#039;s not possible to define vehicles with this property. If you only have vehicles that can run on either one type of voltage/current or on all types of voltage/current (e.g. a 2-system if you only have &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;D&#039;&#039;&#039; tracks, or a 4-system in case of all &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;), then use the generic class &#039;&#039;&#039;E&#039;&#039;&#039; for vehicles that should be able to run on all different voltage/currents. Also the track set needs to have one at least one railtype with class &#039;&#039;&#039;E&#039;&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
Note that if you want more than one type of multi-voltage/current, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-voltage/current vehicle type a dedicated railtype is needed. If you want all possible combinations, then you need to define an additional 8 classes. It is not recommended to make your train/track set this complicated.&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set, with trains that can run on either one or all systems:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;br /&gt;
&lt;br /&gt;
==Forum topic==&lt;br /&gt;
If you want to discuss the standardized railtype scheme or have any questions about it, you can visit [http://www.tt-forums.net/viewtopic.php?t=59379 the forum topic].&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3173</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3173"/>
		<updated>2012-04-21T15:33:39Z</updated>

		<summary type="html">&lt;p&gt;FooBar: add link to forum topic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|T ||[http://en.wikipedia.org/wiki/Three-phase_AC_railway_electrification three phase AC electrification] || E&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you want multi-voltage/current vehicles in your set (i.e. a train that can run on both AC and DC current), you have to define a dedicated railtype for those vehicles. Without the railtype, it&#039;s not possible to define vehicles with this property. If you only have vehicles that can run on either one type of voltage/current or on all types of voltage/current (e.g. a 2-system if you only have &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;D&#039;&#039;&#039; tracks, or a 4-system in case of all &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;), then use the generic class &#039;&#039;&#039;E&#039;&#039;&#039; for vehicles that should be able to run on all different voltage/currents. Also the track set needs to have one at least one railtype with class &#039;&#039;&#039;E&#039;&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
Note that if you want more than one type of multi-voltage/current, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-voltage/current vehicle type a dedicated railtype is needed. If you want all possible combinations, then you need to define an additional 8 classes. It is not recommended to make your train/track set this complicated.&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set, with trains that can run on either one or all systems:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;br /&gt;
&lt;br /&gt;
==Forum topic==&lt;br /&gt;
If you want to discuss the standardized railtype scheme or have any questions about it, you can visit [http://www.tt-forums.net/viewtopic.php?t=59379 the forum topic].&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=TracktypeLabels&amp;diff=3172</id>
		<title>TracktypeLabels</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=TracktypeLabels&amp;diff=3172"/>
		<updated>2012-04-21T15:32:12Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Add link to standardized scheme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists existing railtype labels.&lt;br /&gt;
&lt;br /&gt;
== Standardized railtype scheme ==&lt;br /&gt;
Several members of the TT-Forums came up with a railtype label scheme that allows for compatibility between train and track sets by different authors. At the same time it allows fancy stuff like axle weight limits, speed limits, different track and electrification types, etc. It is not mandatory to follow this scheme.&lt;br /&gt;
&lt;br /&gt;
See [[Standardized Railtype Scheme]].&lt;br /&gt;
&lt;br /&gt;
== Railtype labels defined outside the standardized scheme ==&lt;br /&gt;
&lt;br /&gt;
The following railtype labels have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&#039;&#039;&#039;Label&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Rail Type&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; | OpenTTD Default Railtypes&lt;br /&gt;
|-&lt;br /&gt;
|RAIL&lt;br /&gt;
|Normal rail&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ELRL&lt;br /&gt;
|electrified rail&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MONO&lt;br /&gt;
|Monorail tracks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MGLV&lt;br /&gt;
|Maglev tracks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; | New Railtypes&lt;br /&gt;
|-&lt;br /&gt;
|_040&lt;br /&gt;
|speed limit 40 km/h&lt;br /&gt;
|Slowrails, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|_080&lt;br /&gt;
|speed limit 80 km/h&lt;br /&gt;
|Slowrails, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|E040&lt;br /&gt;
|speed limit 40 km/h, with catenary&lt;br /&gt;
|Slowrails, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|E080&lt;br /&gt;
|speed limit 80 km/h, with catenary&lt;br /&gt;
|Slowrails, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|3RDR&lt;br /&gt;
|Tracks with third rail&lt;br /&gt;
|MetroTracks, NuTracks, UK Railway Set tracks, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|3RDC&lt;br /&gt;
|Tracks with third rail and catenary&lt;br /&gt;
|MetroTracks, NuTracks, UK Railway Set tracks, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|RLOW&lt;br /&gt;
|Low speed tracks&lt;br /&gt;
|NuTracks, SwedishRails, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|ELOW&lt;br /&gt;
|Low speed tracks with catenary&lt;br /&gt;
|NuTracks, SwedishRails, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|3LOW&lt;br /&gt;
|Low speed tracks with 3rd rail&lt;br /&gt;
|NuTracks,&lt;br /&gt;
|-&lt;br /&gt;
|CLOW&lt;br /&gt;
|Low speed tracks, 3rd rail and catenary&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|RMED&lt;br /&gt;
|Medium speed tracks&lt;br /&gt;
|NuTracks, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|EMED&lt;br /&gt;
|Medium speed tracks with catenary&lt;br /&gt;
|NuTracks, SwedishRails&lt;br /&gt;
|-&lt;br /&gt;
|3MED&lt;br /&gt;
|Medium speed tracks with 3rd rail&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|CMED&lt;br /&gt;
|Medium speed tracks, 3rd rail and catenary&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|RHIG&lt;br /&gt;
|High speed tracks&lt;br /&gt;
|NuTracks, SwedishRails, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|EHIG&lt;br /&gt;
|High speed tracks with catenary&lt;br /&gt;
|NuTracks, SwedishRails, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|HSTR&lt;br /&gt;
|Very high speed tracks with catenary&lt;br /&gt;
|NuTracks, SwedishRails, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|NGRL&lt;br /&gt;
|Narrow gauge tracks&lt;br /&gt;
|Narrow Gauge Track Types, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|ELNG&lt;br /&gt;
|Narrow gauge tracks with catenary&lt;br /&gt;
|Narrow Gauge Track Types, Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|PLAN&lt;br /&gt;
|Planning tracks (blue dotted lines)&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|MTRO&lt;br /&gt;
|Metro tracks&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|MTRC&lt;br /&gt;
|Metro tracks with concrete edges&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|MTRS&lt;br /&gt;
|Metro tracks with suburban buildings on top&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|MTRU&lt;br /&gt;
|Metro tracks with &#039;downtown&#039; buildings on top&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|MTRT&lt;br /&gt;
|Metro tracks with plain landscape on top&lt;br /&gt;
|NuTracks&lt;br /&gt;
|-&lt;br /&gt;
|DBNN&lt;br /&gt;
|branch line&lt;br /&gt;
|DBRails&lt;br /&gt;
|-&lt;br /&gt;
|DBNE&lt;br /&gt;
|branch line, electrified&lt;br /&gt;
|DBRails&lt;br /&gt;
|-&lt;br /&gt;
|DBHN&lt;br /&gt;
|main line&lt;br /&gt;
|DBRails&lt;br /&gt;
|-&lt;br /&gt;
|DBHE&lt;br /&gt;
|main line, electrified&lt;br /&gt;
|DBRails&lt;br /&gt;
|-&lt;br /&gt;
|DBHS&lt;br /&gt;
|high speed line electrified (NBS)&lt;br /&gt;
|DBRails&lt;br /&gt;
|-&lt;br /&gt;
|TRPD&lt;br /&gt;
|transrapid track&lt;br /&gt;
|Transrapid track type&lt;br /&gt;
|-&lt;br /&gt;
|NAAN&lt;br /&gt;
|Narrow gauge, unelectrified&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NAAE&lt;br /&gt;
|Narrow gauge, catenary powered&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NAA3&lt;br /&gt;
|Narrow gauge, third-rail powered&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NRAN&lt;br /&gt;
|Narrow gauge, unelectrified, rack rail&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NRAE&lt;br /&gt;
|Narrow gauge, catenary powered, rack rail&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NBAN&lt;br /&gt;
|Narrow gauge, unelectrified, high speed&lt;br /&gt;
|French Set Rails&lt;br /&gt;
|-&lt;br /&gt;
|NLOW&lt;br /&gt;
|Low speed narrow gauge tracks&lt;br /&gt;
|Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|ENLW&lt;br /&gt;
|Low speed narrow gauge tracks with catenary&lt;br /&gt;
|Japanese Track Set&lt;br /&gt;
|-&lt;br /&gt;
|ENHI&lt;br /&gt;
|Modern narrow gauge tracks with catenary&lt;br /&gt;
|Japanese Track Set&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=User:FooBar/Railtypelabels&amp;diff=3171</id>
		<title>User:FooBar/Railtypelabels</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=User:FooBar/Railtypelabels&amp;diff=3171"/>
		<updated>2012-04-21T15:25:12Z</updated>

		<summary type="html">&lt;p&gt;FooBar: moved User:FooBar/Railtypelabels to Standardized Railtype Scheme:&amp;amp;#32;no comments were recieved in the last week, time to make this definitive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Standardized Railtype Scheme]]&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3170</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3170"/>
		<updated>2012-04-21T15:25:12Z</updated>

		<summary type="html">&lt;p&gt;FooBar: moved User:FooBar/Railtypelabels to Standardized Railtype Scheme:&amp;amp;#32;no comments were recieved in the last week, time to make this definitive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|T ||[http://en.wikipedia.org/wiki/Three-phase_AC_railway_electrification three phase AC electrification] || E&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you want multi-voltage/current vehicles in your set (i.e. a train that can run on both AC and DC current), you have to define a dedicated railtype for those vehicles. Without the railtype, it&#039;s not possible to define vehicles with this property. If you only have vehicles that can run on either one type of voltage/current or on all types of voltage/current (e.g. a 2-system if you only have &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;D&#039;&#039;&#039; tracks, or a 4-system in case of all &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;), then use the generic class &#039;&#039;&#039;E&#039;&#039;&#039; for vehicles that should be able to run on all different voltage/currents. Also the track set needs to have one at least one railtype with class &#039;&#039;&#039;E&#039;&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
Note that if you want more than one type of multi-voltage/current, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-voltage/current vehicle type a dedicated railtype is needed. If you want all possible combinations, then you need to define an additional 8 classes. It is not recommended to make your train/track set this complicated.&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set, with trains that can run on either one or all systems:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3159</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3159"/>
		<updated>2012-04-07T17:48:46Z</updated>

		<summary type="html">&lt;p&gt;FooBar: update axle load classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|T ||[http://en.wikipedia.org/wiki/Three-phase_AC_railway_electrification three phase AC electrification] || E&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you want multi-voltage/current vehicles in your set (i.e. a train that can run on both AC and DC current), you have to define a dedicated railtype for those vehicles. Without the railtype, it&#039;s not possible to define vehicles with this property. If you only have vehicles that can run on either one type of voltage/current or on all types of voltage/current (e.g. a 2-system if you only have &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;D&#039;&#039;&#039; tracks, or a 4-system in case of all &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;), then use the generic class &#039;&#039;&#039;E&#039;&#039;&#039; for vehicles that should be able to run on all different voltage/currents. Also the track set needs to have one at least one railtype with class &#039;&#039;&#039;E&#039;&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
Note that if you want more than one type of multi-voltage/current, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-voltage/current vehicle type a dedicated railtype is needed. If you want all possible combinations, then you need to define an additional 8 classes. It is not recommended to make your train/track set this complicated.&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set, with trains that can run on either one or all systems:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3157</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3157"/>
		<updated>2012-04-07T11:56:20Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Reduced axle load classes to 5 and dropped the reference to numeric axle weights: all classes are relative&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. There are five axle load classes &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;. &#039;&#039;&#039;A&#039;&#039;&#039; is for the lowest axle load limit, &#039;&#039;&#039;E&#039;&#039;&#039; for the highest. The exact axle load attached to each class is relative to the track gauge/type and trains in the set. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits, even if you don&#039;t care about it for your trainset. Split all vehicles of a certain track gauge/type into five groups of similar axle weight. The group with the lowest axle weights will get class &#039;&#039;&#039;A&#039;&#039;&#039;, the second lowest class &#039;&#039;&#039;B&#039;&#039;&#039;, etc. up to the group with the highest axle weights which will get class &#039;&#039;&#039;E&#039;&#039;&#039;. Do the same for the other track gauge/types if your train set has those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A track set does not have to provide a dedicated track type for each axle weight limit. A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 2 axle load classes for standard gauge unelectrified with no speed limits, you can map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference between the two railtypes is high, or SA&#039;&#039;&#039;A&#039;&#039;&#039;N to SA&#039;&#039;&#039;B&#039;&#039;&#039;N and SA&#039;&#039;&#039;C&#039;&#039;&#039;N + SA&#039;&#039;&#039;D&#039;&#039;&#039;N to SA&#039;&#039;&#039;E&#039;&#039;&#039;N if the cost difference is low.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need more than five axle load class, you may use lowercase letters for very low axle loads and continue the uppercase letters for very high axle loads. Be advised that your train set may not assume the existance of any other class than &#039;&#039;&#039;A&#039;&#039;&#039; through &#039;&#039;&#039;E&#039;&#039;&#039;, so when the range make sure to program your railtype table such that trains with such a class will fall back to class &#039;&#039;&#039;A&#039;&#039;&#039; or &#039;&#039;&#039;E&#039;&#039;&#039;. If you make a track set with an extended range, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
For the lowercase letters, &#039;&#039;&#039;b&#039;&#039;&#039; is lower than &#039;&#039;&#039;a&#039;&#039;&#039;, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the axle load classes never map to a specific weight in tonnes. For that reason it does not make sense to add a numeric value for the axle load to the name of a track type or in the extended purchase info of a train. Instead use the relative expressions &#039;very low&#039;, &#039;low&#039;, &#039;medium&#039;, &#039;high&#039; and &#039;very high&#039; or use the class letters directly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some specialized energy type classes (like &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;T&#039;&#039;&#039; and &#039;&#039;&#039;Z&#039;&#039;&#039;) are meant for multi-current or multi-system vehicles. These are only necessary if you set has more than one type of multi-current/system. If your set only has one type of multi-current/system, the generic E class can be used for that. Note that if you want more than one type of multi-current/system, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-current/system type a dedicated railtype is needed (even though you may not want them in your track set).&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through E for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through E according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3156</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3156"/>
		<updated>2012-04-07T11:28:29Z</updated>

		<summary type="html">&lt;p&gt;FooBar: multi-system sets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a dedicated track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some specialized energy type classes (like &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;T&#039;&#039;&#039; and &#039;&#039;&#039;Z&#039;&#039;&#039;) are meant for multi-current or multi-system vehicles. These are only necessary if you set has more than one type of multi-current/system. If your set only has one type of multi-current/system, the generic E class can be used for that. Note that if you want more than one type of multi-current/system, you&#039;ll quickly get a combinatory explosion of railtype labels, so plan carefully or do not attempt it. For every different multi-current/system type a dedicated railtype is needed (even though you may not want them in your track set).&lt;br /&gt;
&lt;br /&gt;
Example approach for a 4-system set:&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;: generic catenary-powered electric engines. &amp;quot;universal&amp;quot; [4-system] if any of &#039;&#039;&#039;D&#039;&#039;&#039;/&#039;&#039;&#039;d&#039;&#039;&#039;/&#039;&#039;&#039;A&#039;&#039;&#039;/&#039;&#039;&#039;a&#039;&#039;&#039; are defined.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: generic AC catenary electric engines. 25kV only if &#039;&#039;&#039;a&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;A&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039;: 15kV AC catenary electric engines. Only defined if &#039;&#039;&#039;A&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;A&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;a&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: generic DC catenary electric engines. 3kV if &#039;&#039;&#039;d&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;D&#039;&#039;&#039;;&lt;br /&gt;
* &#039;&#039;&#039;d&#039;&#039;&#039;: 1.5kV DC catenary electric engines. Only defined if &#039;&#039;&#039;D&#039;&#039;&#039; also defined. Vehicle sets should use &#039;&#039;&#039;D&#039;&#039;&#039; and &#039;&#039;&#039;E&#039;&#039;&#039; as fallback, if defining an engine for &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
For a 2-system set, you can simply drop &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through G for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through G according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through G, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3155</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3155"/>
		<updated>2012-04-07T11:09:10Z</updated>

		<summary type="html">&lt;p&gt;FooBar: fallback via railtype table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A via the railtype table.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a dedicated track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through G for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through G according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through G, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3154</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3154"/>
		<updated>2012-04-07T11:07:42Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Speed limit class [*X**] */ special speed limit classes: the case of rack rail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrolled growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type.&lt;br /&gt;
&lt;br /&gt;
It is the explicit intent of this scheme to decouple track sets from vehicle sets to facilitate easy mixing. This way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed limit class may also be used for some advanced features of the label scheme, like specialized track types and eyecandy purposes. Be careful not to break the compatibility with other sets when using the speed limit class for these purposes.&lt;br /&gt;
&lt;br /&gt;
An example of a special use is rack rail. In the French set it is used to give rack rail engines a higher speed and TE than normal rail engines when used on rack rail. When defining trains with a special speed limit class, always allow a fallback to speed limit class A.&lt;br /&gt;
&lt;br /&gt;
An example of eyecandy use are urban tracks. These are a variation of regular tracks, but with concrete ground tiles to better match the urban environment. Train sets must not define vehicles for eyecandy classes.&lt;br /&gt;
&lt;br /&gt;
The following special and eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Description !!Type&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||speed limits ||reserved&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail ||special&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban ||eyecandy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a dedicated track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labels from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
As vehicles from NewGRFs that do not use explicit railtypes will end up on these standard railtypes, you should use RAIL instead of whatever type could be regarded as the most commonly used unelectrified type, ELRL instead of the most commonly used electrified type and so on. The label according to this scheme is then set as an alternate.&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
* If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.&lt;br /&gt;
; [*X**] Speed limit class&lt;br /&gt;
* Make sure class A is always available, either directly or via an alternate label.&lt;br /&gt;
* Use only class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through G for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class &amp;quot;A&amp;quot;, either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
** Specialized subtypes like &amp;quot;n&amp;quot; might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. &amp;quot;N&amp;quot;).&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through G according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through G, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3148</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3148"/>
		<updated>2012-04-03T16:18:37Z</updated>

		<summary type="html">&lt;p&gt;FooBar: save (final for now)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrollable growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type. Train sets that follow the scheme will be compatible with a large selection of track sets that also follow the scheme. That way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A track set may also use the speed limit class for eyecandy purposes, for instance when providing an urban track type with concrete gound tiles. The following eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Eyecandy class&lt;br /&gt;
|- &lt;br /&gt;
|A-H ||reserved for speed limits&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a dedicated track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]]. This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
It&#039;s not possible to undefine the standard railtypes RAIL, ELRL, MONO and MGLV. The game will always add those if there are vehicles defined for these track types. As a result, for a track set it&#039;s best not to ignore those standard labels, but rather work with them and define them in the set. If your track set does not have monorail or maglev tracks, there of course is no need to define those. But if your track set defines anything that resembles unelectrified or electrified rail, you should use the RAIL and ELRL labels. Matching labes from the above scheme will then be defined in property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
So in practice this means that you should RAIL instead of SAAN and ELRL instead of SAAE. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
This section summarizes the above for track sets.&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Define at least one track type for every track gauge/type class you want in your set.&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always define at least class A for every track type class / electrification combination;&lt;br /&gt;
* Only use class A if you don&#039;t want speed limits;&lt;br /&gt;
* With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;&lt;br /&gt;
* Use a letter high in the alphabet for additional eye-candy track types for this type class / electrification combination.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Always define all classes A through G for every track type class / electrification combination, either:&lt;br /&gt;
** Directly via a real railtype definition;&lt;br /&gt;
** Indirectly via the alternate rail type label list, property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
* Extend the predefined classes only if you also provide a train set that makes use of these.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.&lt;br /&gt;
* Map the equivalent labels from this scheme to the standard labels using property [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|1D (NFO)]] or [[NML:Railtypes#Railtype_properties|alternative_railtype_list (NML)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
This section summarizes the above for train sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [X***] Track gauge and type class&lt;br /&gt;
* Use the track type class that matches the vehicle;&lt;br /&gt;
* Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.&lt;br /&gt;
; [*X**] Speed limit class &lt;br /&gt;
* Always use class A for every vehicle.&lt;br /&gt;
; [**X*] Axle load class&lt;br /&gt;
* Use all classes A through G according to the maximum axle weight of the vehicle.&lt;br /&gt;
* Extend the predefined classes only if you also provide a track set that makes use of these;&lt;br /&gt;
** When extending the predefined classes A through G, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; [***X] Energy source type class&lt;br /&gt;
* Use the energy source type class that matches the vehicle;&lt;br /&gt;
* When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.&lt;br /&gt;
; Standard labels [RAIL, ELRL, MONO, MGLV]&lt;br /&gt;
* Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;br /&gt;
Adopting this scheme gives the player freedom to use any track set in combination with any train set that follow the scheme. &lt;br /&gt;
&lt;br /&gt;
This means that you can make your train set compatible with track sets that provide axle load classes, and track sets that provide speed limits, and at the same time with track sets that provide none of this. This way, the player can decide to play with or without axle load classes, or with or without speed limits, simply by loading a track set that does or does not provide these features.&lt;br /&gt;
&lt;br /&gt;
And for your track set, it means that you can make it as simple or as complicated as you want (within the 16 track type limit), while not having to worry about compatibility with train sets.&lt;br /&gt;
&lt;br /&gt;
Still not convinced? Feel free to use railtype labels of your own, but know that you will likely come to regret that at some point in the future.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3147</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3147"/>
		<updated>2012-04-02T20:24:45Z</updated>

		<summary type="html">&lt;p&gt;FooBar: save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrollable growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type. Train sets that follow the scheme will be compatible with a large selection of track sets that also follow the scheme. That way the player can select a track set of choice to go with a train set of choice. It allows the player to play with or without axle load classes, or with or without speed limit classes, simply by loading a track set that does or does not provide these features. In some cases it will also be possible to combine niche track sets, for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A track set may also use the speed limit class for eyecandy purposes, for instance when providing an urban track type with concrete gound tiles. The following eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Eyecandy class&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|property 1D]] (alternate rail type labels). This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property 1D.&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3146</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3146"/>
		<updated>2012-04-02T20:22:15Z</updated>

		<summary type="html">&lt;p&gt;FooBar: save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrollable growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type. Train sets that follow the scheme will be compatible with a large selection of track sets that also follow the scheme. That way the player can select a track set of choice to go with a train set. In some cases it will be even possible to combine for instance a standard gauge track set with a narrow gauge and a metro track set. It furthermore allows the player to play with or without axle load classes, or with or without speed limit classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type class (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit class&lt;br /&gt;
# Axle load class (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source type class&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type class [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type class. The following classes are currently defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|n ||Secondary narrow gauge rail (e.g. when providing both metre and cape gauge, always use N in case of just one type of narrow gauge)&lt;br /&gt;
|-&lt;br /&gt;
|D ||Dual gauge rail, standard+broad gauge&lt;br /&gt;
|-&lt;br /&gt;
|d ||Dual gauge rail, standard+narrow gauge&lt;br /&gt;
|-&lt;br /&gt;
|M ||Monorail&lt;br /&gt;
|-&lt;br /&gt;
|L ||Magnetic Levitation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A track set may also use the speed limit class for eyecandy purposes, for instance when providing an urban track type with concrete gound tiles. The following eyecandy classes have been defined so far:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Eyecandy class&lt;br /&gt;
|- &lt;br /&gt;
|U ||urban&lt;br /&gt;
|- &lt;br /&gt;
|R ||rack rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle load class [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The naming scheme followed here is derived from the European Standard [http://de.wikipedia.org/wiki/Streckenklasse EN 15528]. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29|property 1D]] (alternate rail type labels). This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property 1D.&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy source type class [***X] ===&lt;br /&gt;
The last position defines the energy source type class. This is split in generic energy source types like overhead wires and third rail and specialized types like alternating and direct current.&lt;br /&gt;
&lt;br /&gt;
A track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.&lt;br /&gt;
&lt;br /&gt;
A vehicle set that uses specialized types should define a generic type as fallback, via the railtype table. If such a fallback is omitted, please note that certain vehicles may be unavailable depending on track set loaded.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Generic energy type classes&lt;br /&gt;
|-&lt;br /&gt;
|N ||no electrification&lt;br /&gt;
|-&lt;br /&gt;
|E ||overhead wires/catenary electrification&lt;br /&gt;
|-&lt;br /&gt;
|3 ||3rd rail electrification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Specialized energy type classes !!Vehicle set fallback&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4th rail electrification || 3&lt;br /&gt;
|-&lt;br /&gt;
|Z ||3rd rail and catenary electrification || 3 or E&lt;br /&gt;
|-&lt;br /&gt;
|D ||DC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|d ||low voltage DC catenary electrification (only when D also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|A ||AC catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|a ||low voltage AC catenary electrification (only when A also used in set) || E&lt;br /&gt;
|-&lt;br /&gt;
|C ||two phase catenary electrification || E&lt;br /&gt;
|-&lt;br /&gt;
|T ||three phase catenary electrification || E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard labels: RAIL, ELRL, MONO, MGLV ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary for track sets ==&lt;br /&gt;
&lt;br /&gt;
== Summary for train sets ==&lt;br /&gt;
&lt;br /&gt;
== In case you&#039;re not convinced by this scheme ==&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3145</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3145"/>
		<updated>2012-04-02T18:09:01Z</updated>

		<summary type="html">&lt;p&gt;FooBar: save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrollable growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type. Train sets that follow the scheme will be compatible with a large selection of track sets that also follow the scheme. That way the player can select a track set of choice to go with a train set. In some cases it will be even possible to combine for instance a standard gauge track set with a narrow gauge and a metro track set. It furthermore allows the player to play with or without axle load classes, or with or without speed limit classes.&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit&lt;br /&gt;
# Axle weight (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type. The following characters are currently defined for this position:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Axle weight [**X*] ===&lt;br /&gt;
The third position defines the axle weight limit. Heavy trains cannot run on tracks with a low axle weight limit; these trains need more expensive tracks with a heigher weight limit. A track set does not have to provide a track type for each axle weight limit. A train set should set the appropriate axle weight for each train via the railtype label, as to make the set work with track sets that do provide tracks with different weight limits.&lt;br /&gt;
&lt;br /&gt;
The lettering scheme followed here is derived from the European Standard EN 15528. Note that the limits in the table below are not set in stone. If for your train set it makes more sense to deviate slightly from it, then you may do so. Example: you have engines with axle loads 15 t, 17 t, 18 t and 21 t. According to EN 15528 you would get classes A, B and D, but for gameplay reasons it may be more interesting to put the 18 t engines in class C.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Axle load limit&lt;br /&gt;
|-&lt;br /&gt;
|A ||16 t&lt;br /&gt;
|-&lt;br /&gt;
|B ||18 t&lt;br /&gt;
|-&lt;br /&gt;
|C ||20 t&lt;br /&gt;
|-&lt;br /&gt;
|D ||22.5 t&lt;br /&gt;
|-&lt;br /&gt;
|E ||25 t&lt;br /&gt;
|-&lt;br /&gt;
|F ||27.5 t&lt;br /&gt;
|-&lt;br /&gt;
|G ||30 t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A track set that does not provide a dedicated track for each axle load class, must make sure to map all undefined axle load classes to a real railtype using [[Action0/Railtypes#Alternate_rail_type_labels_.281D.29 property 1D]] (alternate rail type labels). This way a train set can rely on all labels for all axle load classes being available. Example: if you only want to provide 20 t and 30 t axle load classes for standard gauge unelectrified with no speed limits, you map SA&#039;&#039;&#039;A&#039;&#039;&#039;N + SA&#039;&#039;&#039;B&#039;&#039;&#039;N to SA&#039;&#039;&#039;C&#039;&#039;&#039;N and SA&#039;&#039;&#039;D&#039;&#039;&#039;N + SA&#039;&#039;&#039;E&#039;&#039;&#039;N to SA&#039;&#039;&#039;G&#039;&#039;&#039;N.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to provide any axle load classes in your track set, it doesn&#039;t really matter what axle load class you choose for the track, as you&#039;ll be mapping all other classes to this track anyways. But the lowest or highest class are the obvious choice. Example: if your track set only provides narrow gauge unelectrified track with no speed limits and no axle load limits, you may use NA&#039;&#039;&#039;A&#039;&#039;&#039;N for the track label, and provide NA&#039;&#039;&#039;B&#039;&#039;&#039;N, NA&#039;&#039;&#039;C&#039;&#039;&#039;N, NA&#039;&#039;&#039;D&#039;&#039;&#039;N, NA&#039;&#039;&#039;E&#039;&#039;&#039;N, NA&#039;&#039;&#039;F&#039;&#039;&#039;N, NA&#039;&#039;&#039;G&#039;&#039;&#039;N in property 1D.&lt;br /&gt;
&lt;br /&gt;
If you want a axle load class lower than 16 t, you may use lowercase letter a for that, or a and b if you want to split it even further (b is a lower limit than a, so for increasing axle load limits: b &amp;lt; a &amp;lt; A &amp;lt; B &amp;lt; C etc.). Be advised that your train set may not assume the existance of any other class than listed above, so when using lowercase class letters make sure to program your railtype table such that trains with such a class will fall back to class A if the lowercase class is not defined. If you make a track set with very low axle load limits, be aware that not all train sets will define trains for these tracks. In general: only do this in case of a train set with a matching track set.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3144</id>
		<title>Standardized Railtype Scheme</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Standardized_Railtype_Scheme&amp;diff=3144"/>
		<updated>2012-04-02T17:32:11Z</updated>

		<summary type="html">&lt;p&gt;FooBar: save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This railtype label scheme aims to bring order to the uncontrollable growth of railtype labels. It groups the rail types into what matters from a technical perspective. The scheme provides a standardized way of defining railtype labels, based on track gauge and type, speed class, allowable axle weight and electrification type. Train sets that follow the scheme will be compatible with a large selection of track sets that also follow the scheme. That way the player can select a track set of choice to go with a train set. In some cases it will be even possible to combine for instance a standard gauge track set with a narrow gauge and a metro track set.&lt;br /&gt;
&lt;br /&gt;
== The Label Scheme ==&lt;br /&gt;
A railtype label consists of four characters. In this scheme, each position has a different purpose:&lt;br /&gt;
# Track gauge and type (e.g. standard gauge rail, narrow gauge rail, monorail)&lt;br /&gt;
# Speed limit&lt;br /&gt;
# Axle weight (maximum allowed axle weight for this track)&lt;br /&gt;
# Energy source&lt;br /&gt;
&lt;br /&gt;
In the next sections, each of the four positions will be explained.&lt;br /&gt;
&lt;br /&gt;
=== Track gauge and type [X***] ===&lt;br /&gt;
The first position in the railtype label defines track gauge and/or track type. The following characters are currently defined for this position:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! !!Track type/gauge&lt;br /&gt;
|- &lt;br /&gt;
|S ||Standard gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|B ||Broad gauge rail&lt;br /&gt;
|-&lt;br /&gt;
|N ||Narrow gauge rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Speed limit class [*X**] ===&lt;br /&gt;
The second position in the railtype label defines the speed limit class. These classes do not map to a fixed numeric value, but are used to define an internal speed limit order for the track set. This means that if your track set has two different speed limits for track types that are otherwise identical, you&#039;ll use letters A and B here. In case of three different speed limits, use A, B and C. In case your track set does not employ speed limits, always use A. Train sets do not care about the speed limit, and will always set the lowest speed class, i.e. A.&lt;br /&gt;
&lt;br /&gt;
This gives for instance the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||no speed limits&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;OR&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! !!Speed limit class&lt;br /&gt;
|- &lt;br /&gt;
|A ||low speed&lt;br /&gt;
|-&lt;br /&gt;
|B ||medium speed&lt;br /&gt;
|-&lt;br /&gt;
|C ||high speed&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;etc.&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=User:FooBar&amp;diff=3143</id>
		<title>User:FooBar</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=User:FooBar&amp;diff=3143"/>
		<updated>2012-04-02T17:03:02Z</updated>

		<summary type="html">&lt;p&gt;FooBar: Created page with &amp;quot;User:FooBar/Railtypelabels&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:FooBar/Railtypelabels]]&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=3076</id>
		<title>NML:Vehicles</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=3076"/>
		<updated>2012-03-25T12:28:16Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Vehicle callbacks */ details on purchase menu sprite for dual-headed trains&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Properties common to all vehicle types==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
| (string)&lt;br /&gt;
| yes&lt;br /&gt;
| for example &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;string(STR_NAME_HEREFORD_TRAM)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;climates_available&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(CLIMATE_XXX, CLIMATE_YYY, ...)&lt;br /&gt;
| set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt;&lt;br /&gt;
| XXX = [TEMPERATE &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ARCTIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TROPICAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TOYLAND], alternatively &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES&amp;lt;/code&amp;gt;. To make a vehicle available in all climates except toyland you could use: &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES &amp;amp;amp; ~bitmask(CLIMATE_TOYLAND)&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;introduction_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date&amp;lt;/code&amp;gt;(yyyy,mm,dd)&lt;br /&gt;
| no&lt;br /&gt;
| Valid range for yyyy is 0 ... 5000000. In TTDPatch, dates after 2044 will be limited to 2044. Unless the engine is introduced within two years after game-start (always 1920 in TTDPatch), a random number of days between 0 and 511 will be added to this.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 254 (years) or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Number of years a model is &amp;quot;supported&amp;quot; by the manufacturer, see [[#Engine life cycle|below]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt;&lt;br /&gt;
| -128 ... 127 (years)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Retire the vehicle (make it unavailable in the purchase menu) this many years before reliability starts dropping, see [[#Engine life cycle|below]]. May be negative.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;vehicle_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (years)&lt;br /&gt;
| no&lt;br /&gt;
| Life length of an individual vehicle, before it is considered too old and in need of replacement.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;reliability_decay&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| Default vehicles use 20. The higher the value the faster reliability decays, the more frequent service is needed. 0 means reliability never decreases if the vehicle is not too old&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_BULK, CC_COVERED)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;non_refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_OVERSIZED, CC_SPECIAL)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_types&amp;lt;/code&amp;gt;&lt;br /&gt;
| bit mask of entries into the cargo translation table&lt;br /&gt;
| yes&lt;br /&gt;
| As of NML 0.3, do not use this. Use cargo_[dis]allow_refit (see below) instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_allow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to allow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[COAL, IORE]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_disallow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to disallow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[MAIL]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;loading_speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (cargo units)&lt;br /&gt;
| yes&lt;br /&gt;
| Units of cargo loaded per tick. Default vehicles use 5 for trains and road vehicles, 10 for ships and 20 for aircraft&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base purchase cost&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base running costs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_age_period&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22713}} This property specifies after how many ticks cargo is aged. Default value is 185. 74 ticks is equal to 1 day.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Refittability===&lt;br /&gt;
&lt;br /&gt;
To determine whether your vehicle can be refitted to a certain cargo, OpenTTD uses the following table&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Cargo matches refittable_cargo_classes&lt;br /&gt;
! Cargo matches non_refittable_cargo_classes&lt;br /&gt;
! Cargo in cargo_allow_refit&lt;br /&gt;
! Cargo in cargo_disallow_refit&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| No&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Not refittable&lt;br /&gt;
|-&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Yes&lt;br /&gt;
| Not refittable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For those that prefer boolean logic, the formula is as follows:&lt;br /&gt;
&lt;br /&gt;
refittable = ((cargo classes in refittable_cargo_classes AND NOT cargo classes in non_refittable_cargo_classes) OR cargo in cargo_allow_refit) AND NOT (cargo in cargo_disallow_refit)&lt;br /&gt;
&lt;br /&gt;
In general, you should use refittable_cargo_classes and non_refittable_cargo_classes to decide to which cargos your vehicle is refittable, and only then use cargo_allow_refit and cargo_disallow_refit to allow/disallow specific cargos.&lt;br /&gt;
&lt;br /&gt;
===Engine life cycle===&lt;br /&gt;
&lt;br /&gt;
The life cycle of a vehicle model consists of three phases, as outlined in the following table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! phase&lt;br /&gt;
! duration&lt;br /&gt;
! reliability&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 7 to 38 months&lt;br /&gt;
| increases from 48-73% to 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; - 8 years&lt;br /&gt;
| stays constant at peak, 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 10 to 20.5 years&lt;br /&gt;
| decreases from peak to 25-50%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; is set to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;, the engine remains in phase 2 forever.&lt;br /&gt;
&lt;br /&gt;
Normally, the vehicle is removed from the purchase menu at the and of phase 3. However if you set the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt; property, it will be retired this many years before (or after, if the value is negative) the end of phase 2.&lt;br /&gt;
&lt;br /&gt;
==Sorting vehicles in the purchase list==&lt;br /&gt;
This is a special property that is not encoded in an item/property-block like most other properties but it has it&#039;s own block instead. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 sort(&amp;lt;feature&amp;gt;, [&amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;...]);&lt;br /&gt;
&lt;br /&gt;
The engines will be sorted in the given order on the position where originally the first element was. Say the original engine sorting is this: A B C D E and you use this code &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sort(FEAT_TRAINS, [D, B, A]);&amp;lt;/code&amp;gt; the final sorting will be this: C D B A E&lt;br /&gt;
&lt;br /&gt;
==Train properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;sprite_id&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;SPRITE_ID_NEW_TRAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
| Max speed for engines, speed limit for wagons&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;misc_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(TRAIN_FLAG_XXX, ...)&lt;br /&gt;
| FLIP should not be set, TILT and MU the same value&lt;br /&gt;
| XXX=[TILT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 2CC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MU &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FLIP &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; AUTOREFIT] which allows the train to enjoy the tilt bonus, use the 2nd company colour, act as a multiple unit (used for livery selection only) or allow the vehicle to be flipped (reversed) in the depot&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refit_cost&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 50% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;callback_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| item from railtypetable&lt;br /&gt;
| must be the same as front&lt;br /&gt;
| Default railtype table: RAIL, MONO, MGLV. If you install a railtypetable yourself you&#039;ll always get the railtype you specified. If you want a vehicle to run on electric rail and you don&#039;t have a railtypetable, set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt; to RAIL and make sure that you set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt; to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENGINE_CLASS_ELECTRIC&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_special_flag&amp;lt;/code&amp;gt;&lt;br /&gt;
| [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_CARGO&amp;lt;/code&amp;gt;]&lt;br /&gt;
| no&lt;br /&gt;
| Set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; to tell computer players that it&#039;s an engine that should only be used for passenger service.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;power&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_base&amp;lt;/code&amp;gt;&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| =0&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;dual_headed&amp;lt;/code&amp;gt;&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| =0 for both parts&lt;br /&gt;
| 1 = dual_headed, otherwise normal engine&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;weight&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 1279 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_engine_rank&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| TTDPatch only: Higher values make the engine for the TTDPatch AI more attractive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt;&lt;br /&gt;
| ENGINE_CLASS_XXX&lt;br /&gt;
| no&lt;br /&gt;
| XXX=[STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MONORAIL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MAGLEV]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
| Only wagons with a livery override for this engine will add power&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;tractive_effort_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;air_drag_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;length&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1 ... 8&lt;br /&gt;
| yes&lt;br /&gt;
| Length of the vehicle in arbitrary units. Use a value of 8 (equal to the predefined constant VEHICLE_LENGTH) for a full-length vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;(VISUAL_EFFECT_XXX, offset, &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENABLE_WAGON_POWER&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;DISABLE_WAGON_POWER&amp;lt;/code&amp;gt;)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means &amp;quot;take from engine_class property&amp;quot;. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_weight_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
| Adds extra weight for powered wagons, see &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span #id=&amp;quot;bitmask_vehicle_info&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_vehicle_info&amp;lt;/code&amp;gt;&lt;br /&gt;
| 8-bit bitmask&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Used for obtaining [[#bitmask consist info|&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_consist_info&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road vehicle properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_ROADVEH&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 514km/h (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(ROADVEH_FLAG_XXX, ...)&lt;br /&gt;
| partly; tram flag must the same&lt;br /&gt;
| The following flags are defined: ROADVEH_FLAG_TRAM, ROADVEH_FLAG_2CC, ROADVEH_FLAG_AUTOREFIT. Use 0 if you don&#039;t want to set any of these flags.&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 25% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_base&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| set to RUNNING_COST_NONE&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| 0 ... 2550hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| 0 ... 63.75ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| air_drag_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|-&lt;br /&gt;
| length&lt;br /&gt;
| 1 ... 8&lt;br /&gt;
| yes&lt;br /&gt;
| Length of the vehicle in arbitrary units. Use a value of 8 (equal to the predefined constant VEHICLE_LENGTH) for a full-length vehicle.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ship properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_SHIP&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 127 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(SHIP_FLAG_2CC, SHIP_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of the default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_refittable&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 0=false, 1=true. Note: if you do not set this property to 1, then refittable_cargo_classes / non_refittable_cargo_classes have no effect.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;default_cargo_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| An identifier from the [[NML:Cargotable|cargo table]], or DEFAULT_CARGO_FIRST_REFITTABLE&lt;br /&gt;
| Yes&lt;br /&gt;
| If the vehicle is refittable to at least one cargo, but the chosen default cargo is not available or is set to DEFAULT_CARGO_FIRST_REFITTABLE, then the first refittable cargo is used. The first refittable is chosen according to the order in your [[NML:Cargotable|cargo table]]. If this property is set to a valid cargo but the vehicle cannot refit to any cargo type, then the vehicle will be able to carry only this cargo, but it cannot be refitted (like e.g. the default train wagons).&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| For ships (unlike other vehicle types) the capacity set here is not affected by the cargo type.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| ocean_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on ocean tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| canal_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on canal tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this ship. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aircraft properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_AIRCRAFT&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 .. 3280 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| 0 .. 2894&lt;br /&gt;
| {{nml|0.3}} {{ottdp|1.2|no|ottdrev=r23504}} Maximum (euclidean) distance the aircraft can cover between two airports. Set to 0 for unlimited range.&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(AIRCRAFT_FLAG_2CC, AIRCRAFT_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable both&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_helicopter&lt;br /&gt;
| AIRCRAFT_TYPE_XXX&lt;br /&gt;
| XXX=[NORMAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; HELICOPTER]&lt;br /&gt;
|-&lt;br /&gt;
| is_large&lt;br /&gt;
| AIRCRAFT_SIZE_XXX&lt;br /&gt;
| XXX=[SMALL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; LARGE]. Set to AIRCRAFT_SIZE_SMALL for helicopters.&lt;br /&gt;
|-&lt;br /&gt;
| acceleration&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| In arbitrary units&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| 0 ... 65536&lt;br /&gt;
| Capacity for the passenger compartment. See also the notes at &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; below.&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Capacity for the mail compartment, if refitted to a cargo in the CC_PASSENGERS class. When refitted to other cargoes, this capacity is added to the passenger capacity to determine the base capacity. The actual capacity is set to this base capacity divided by 1 for mail, 2 for goods and 4 for all other cargoes. To override this effect, use the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;passenger_capacity&amp;lt;/code&amp;gt; and &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; callbacks.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Vehicle variables==&lt;br /&gt;
&lt;br /&gt;
Below an overview of all vehicle-specific variables. Not that in the purchase list, the vehicle is not built yet and as such many variables are not available. All general variables are available, refer to the table for info on vehicle-specific variables. Trying to access a non-available variable invokes undefined behaviour. Please note that while all variables are available for all vehicles types, some of them only make sense for one or more vehicle types. For example checking current_railtype for a non-rail vehicle doesn&#039;t make sense at all.&lt;br /&gt;
&lt;br /&gt;
===Variables without parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| The position of the current vehicle-part from the start of the vehicle. The engine will get value 0, the first wagon (or second engine) gets value 1, etc.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Same as position_in_consist but counted from the end. The last wagon will get value 0.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_consist&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| The total number of vehicles-parts in this vehicle. For aircraft this will include the shadow and the rotor.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist_from_end, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_vehid_chain&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| See num_vehs_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes_in_consist&lt;br /&gt;
| Bitmask of CC_XXX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
|-&lt;br /&gt;
| most_common_refit&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| No&lt;br /&gt;
| cargo class most often refit to&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_consist_info&lt;br /&gt;
| Bitmask 8 bit&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Binary OR of the values of [[#bitmask vehicle info|bitmask_vehicle_info]] of all vehicles (engines, wagons) in the consist. Only available for rail vehicles.&lt;br /&gt;
|-&lt;br /&gt;
| company_num&lt;br /&gt;
| 0 ... 14&lt;br /&gt;
| Yes&lt;br /&gt;
| company number of the vehicle owner. TTDPatch only supports up to 8 companies (0 ... 7)&lt;br /&gt;
|-&lt;br /&gt;
| company_type&lt;br /&gt;
| PLAYERTYPE_XX&lt;br /&gt;
| Yes&lt;br /&gt;
| PLAYERTYPE_HUMAN, PLAYERTYPE_AI, PLAYERTYPE_HUMAN_IN_AI (human managing AI company) or PLAYERTYPE_AI_IN_HUMAN (AI managing human company). OpenTTD only uses PLAYERTYPE_HUMAN and PLAYERTYPE_AI. If you cheat yourself to be part of an AI company OpenTTD will still report PLAYERTYPE_AI for the company with yourself and the AI and it&#039;ll report PLAYERTYPE_HUMAN for the now uncontrolled company.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour1&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour2&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Same as company_colour1, if no 2nd company colour is chosen. Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| aircraft_height&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Height difference between the aircraft and its shadow. 8 Units are equivalent to one height level on the map.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XX&lt;br /&gt;
| No&lt;br /&gt;
| AIRPORTTYPE_SMALL, AIRPORTTYPE_LARGE, AIRPORTTYPE_HELIPORT or AIRPORTTYPE_OILRIG&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_cur&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) vehicle and this vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_cur_next&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between this vehicle and the next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_next&lt;br /&gt;
| -4 ... 4&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) and next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees. Equal to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curve_invo_prev_cur + curv_info_cur_next&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info&lt;br /&gt;
| vehicle_curv_info(&#039;&#039;prev_cur&#039;&#039;, &#039;&#039;cur_next&#039;&#039;)&#039;&#039;&#039;&#039;&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Returns a magic number that represents the curvature state of the prev-cur-next vehicle triplet. Do not try to make sense of this magic number, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;vehicle_curv_info()&amp;lt;/code&amp;gt; instead to make comparisons. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curv_info == vehicle_curv_info(a, b)&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;(curv_info_prev_cur == a) &amp;amp;amp;&amp;amp;amp; (curv_info_cur_next == b)&amp;lt;/code&amp;gt;, however the former can easily be used in a switch-block.&lt;br /&gt;
|-&lt;br /&gt;
| motion_counter&lt;br /&gt;
| 0 ... 15&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Is increased every time the vehicle moves a single step on the map. Useful for animations.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_type_in_veh&lt;br /&gt;
| entry in cargo translation table&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| 0xFF if not present in the table&lt;br /&gt;
|-&lt;br /&gt;
| cargo_unit_weight&lt;br /&gt;
| weight per unit in 1/16t&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes&lt;br /&gt;
| Bitmask of [[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| class of the currently transported cargo&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_available&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is available on the open market&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_testing&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being tested&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_offered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being offered for exclusive preview&lt;br /&gt;
|-&lt;br /&gt;
| build_year&lt;br /&gt;
| 0 ... 5000000&lt;br /&gt;
| Yes&lt;br /&gt;
| 0-based year when the vehicle was built, current year if the vehicle is not built yet&lt;br /&gt;
|-&lt;br /&gt;
| direction&lt;br /&gt;
| DIRECTION_XX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
See [[NML:List of direction constants|here]] for an overview of possible values and their meaning.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Cargo capacity (number of units) of the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_count&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Number of cargo units of cargo in the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Cargo subtype, used to provide more than one refit option for the same cargo type. See also the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype_text&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power and is on the correct track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_not_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle is either on a wrong track type or it doesn&#039;t provide power at all&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_potentially_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power, if it is on a suitable track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_reversed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has reversed an odd number of times&lt;br /&gt;
|-&lt;br /&gt;
| built_during_preview&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle was built during the exclusive preview stage&lt;br /&gt;
|-&lt;br /&gt;
| current_railtype&lt;br /&gt;
| No&lt;br /&gt;
| Entry from railtype translation table or 0xFF&lt;br /&gt;
| Don&#039;t use this variable unless you&#039;ve defined a railtype translation table. If the train is running on a railtype that is not listed in your railtype translation table this variable will contain 0xFF. Available since OpenTTD r20164.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
|&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| random_bits&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random data that can be used to randomize certain descisions. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| grfid&lt;br /&gt;
| 0 ... 0xFFFFFFFF&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
GRFID that defined the [[NML:Graphics|graphics]]-block for this vehicle. To compare this with other grfids, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;str2number()&amp;lt;/code&amp;gt; to convert the other GRFID to a number as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_type_id&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| GRF-local ID of the vehicle, equal to the item ID. Note that vehicles from other NewGRFs may have the same ID, so you&#039;ll generally have to check the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;grfid&amp;lt;/code&amp;gt; as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_hidden&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is hidden in a depot or tunnel.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_stopped&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is stopped, or if it is braking for a stop (trains only).&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_crashed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has crashed.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_broken&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is broken down.&lt;br /&gt;
|-&lt;br /&gt;
| date_of_last_service&lt;br /&gt;
| date(year, month, day)&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| breakdowns_since_last_service&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Number of breakdowns since the last service&lt;br /&gt;
|-&lt;br /&gt;
| reliability&lt;br /&gt;
| 0 ... 100&lt;br /&gt;
| No&lt;br /&gt;
| Reliability (percentage)&lt;br /&gt;
|-&lt;br /&gt;
| age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| max_age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Maximum vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| current_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The current speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| max_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The maximum speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_in_depot&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is inside a depot&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Variables that require an argument===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! Argument&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| count_veh_id&lt;br /&gt;
| The vehicle ID to look for.&lt;br /&gt;
| 0..255&lt;br /&gt;
| No&lt;br /&gt;
| The number of vehicles in the current consist that have the given ID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vehicle callbacks==&lt;br /&gt;
The following table contains a list of available vehicle callbacks. Additionally, it&#039;s possible to provide cargo-specific graphics, using the identifier from the [[NML:Cargotable|cargo table]] as callback name. These callbacks will be used if the vehicle is refitted to the corresponding cargo type. If no cargo-specific graphics match the cargo that the vehicle is carrying, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;default&amp;lt;/code&amp;gt; callback is used instead. Cargo-specific graphics callbacks are never called from the purchase menu, refer to the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; callback below instead.&lt;br /&gt;
&lt;br /&gt;
Note that the above affects &#039;&#039;&#039;graphics only&#039;&#039;&#039;, other callbacks are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| default&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Sprite group&lt;br /&gt;
| &#039;Normal&#039; vehicle graphics, if no cargo-specific graphics apply.&lt;br /&gt;
|-&lt;br /&gt;
| purchase&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics to show in the buy menu (only the horizontal view is needed, except for dual-headed trains. With the &amp;lt;code&amp;gt;dual_headed&amp;lt;/code&amp;gt; property set, special rules for the purchase menu sprite apply: two sprites are drawn (for front and back) as if the vehicle is normally constructed. If you supply one purchase menu sprite, it will be used for both vehicle parts in the purchase menu. Provide a set of 8 sprites, and the 7th resp. 3rd sprite will be drawn; provide a set of 8 blank sprites except the 7th if you want to fully control a single purchase menu sprite for a dual-headed engine. )&lt;br /&gt;
|-&lt;br /&gt;
| rotor&lt;br /&gt;
| Aircraft (helicopters)&lt;br /&gt;
| No&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics for the helicopter rotor (4 sprites; 1 stopped and 3 moving)&lt;br /&gt;
|-&lt;br /&gt;
| random_trigger&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| N/A&lt;br /&gt;
| See [[NML:Random switch|random switch]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype_text&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String, or CB_RESULT_NO_TEXT&lt;br /&gt;
| With this callback, you can display extra text after the cargo in the vehicle information window. This callback is called during refitting, with succesively increased values of the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, until the callback returns CB_RESULT_NO_TEXT. All returned strings are then displayed as refit options. The chosen refit option is saved in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, so it can be used later for other things. In the HEQS grf for example, this mechanism is used to let the user choose between different capacities of the same vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| additional_text&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| String&lt;br /&gt;
| Additional text to show in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
| colour_mapping&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_colour_mapping&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Recolour sprite number&lt;br /&gt;
|&lt;br /&gt;
With this callback, you can use a different recolour sprite instead of the standard 1cc / 2cc company colour remappings. See [[NML:List of default colour translation palettes|here]] for a list of default palettes. See the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;reserve_sprites()&amp;lt;/code&amp;gt; for info on how to allocate your own sprite. For performance, the result is cached and only updated if the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt; every_32_days&amp;lt;/code&amp;gt; callback requires so. Add CB_RESULT_COLOUR_MAPPING_ADD_CC to the result to add the company colour to the sprites, this requires 16 (1cc) or 256 (2cc) sprites in total.&lt;br /&gt;
|-&lt;br /&gt;
| start_stop&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_NO_TEXT&lt;br /&gt;
| Called when starting or stopping a vehicle. Mainly useful to prevent vehicles from leaving the depot unless a certain condition is met. Return CB_RESULT_NO_TEXT to allow or a string (containing an error message) to disallow starting/stopping.&lt;br /&gt;
|-&lt;br /&gt;
| every_32_days&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| bitmask(CB_RESULT_32_DAYS_XXX, ...)&lt;br /&gt;
| Called every 32 days. Set CB_RESULT_32_DAYS_TRIGGER in the bitmask to trigger TRIGGER_VEHICLE_32_CALLBACK. Set CB_RESULT_32_DAYS_COLOUR_MAPPING in the bitmask to update the colour mapping by re-running the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;colour_mapping&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| SOUND_XXX, sound(&amp;quot;sound.wav&amp;quot;), import_sound(grfid, number) or CB_RESULT_NO_SOUND&lt;br /&gt;
|&lt;br /&gt;
Called to play various vehicle sounds. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains the sound event, see the [[#Sound events|table]] below. Return SOUND_XXX (see [[NML:List_of_sound_effects|here]]) to return a default sound. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sound(&amp;quot;soundfile&amp;quot;)&amp;lt;/code&amp;gt; imports a sound from a .wav file. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;import_sound(grfid, number)&amp;lt;/code&amp;gt; imports a sound from another grf. A failed (or not implemented) callback will cause the default sound to be played. Return CB_RESULT_NO_SOUND to play no sound at all.&lt;br /&gt;
|-&lt;br /&gt;
| articulated_part&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes (no separate callback)&lt;br /&gt;
| Vehicle ID, or CB_RESULT_NO_MORE_ARTICULATED_PARTS&lt;br /&gt;
| With this callback, you can add articulated parts (e.g. tenders) to your vehicle. Called repeatedly, until CB_RESULT_NO_MORE_ARTICULATED_PARTS is returned. After each call, the returned vehicleID is added to your vehicle. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains 1 during the first call, 2 during the second, etc. Note that callback may be called from the purchase list, using vehicle variables is not possible. Or CB_RESULT_REVERSED_VEHICLE to the returned vehicle ID to display the vehicle backwards. &lt;br /&gt;
&lt;br /&gt;
For NML 0.2 and lower the vehicle ID of the articulated part must be in the range 0 .. 127.&lt;br /&gt;
|-&lt;br /&gt;
| can_attach_wagon&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_ATTACH_XXX&lt;br /&gt;
| Called when a wagon is being attached, to allow or disallow attaching. This callback has to be defined at the engine. However, variables in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;SELF&amp;lt;/code&amp;gt; scope refer to the wagon being attached, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;PARENT&amp;lt;/code&amp;gt; scope refers to the engine that the wagon is being attached to. Return a string to disallow with the string as error message. Return CB_RESULT_ATTACH_DISALLOW to disallow with standard message (&amp;quot;incompatible railtypes&amp;quot;), CB_RESULT_ATTACH_ALLOW to allow or CB_RESULT_ATTACH_ALLOW_IF_RAILTYPES to allow if the railtypes match (default).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following callbacks all have an equivalent property. The property description applies here also, except where otherwise noted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| loading_speed&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_speed&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_running_cost_factor&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23089}} All&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 .. 16377 as refit cost. Add &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;CB_RESULT_AUTOREFIT&amp;lt;/code&amp;gt; if you want to allow autorefit.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_age_period&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| All except aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_cargo_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_passenger_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_mail_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_range&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect_and_powered&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| Road Vehicles, Ships&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_power&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_weight&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| length&lt;br /&gt;
| Trains, Road vehicles&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_tractive_effort_coefficient&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Value range is 0 .. 255 instead of 0 .. 1.&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_vehicle_info&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sound events===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Event&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_START&lt;br /&gt;
| Vehicle leaves station or depot, plane takes off&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TUNNEL&lt;br /&gt;
| Vehicle enters tunnel&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_BREAKDOWN&lt;br /&gt;
| Vehicle breaks down (not for planes)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING&lt;br /&gt;
| Once per engine tick, but no more than once per vehicle motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TOUCHDOWN&lt;br /&gt;
| Aircraft touches down&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_VISUAL_EFFECT&lt;br /&gt;
| Visual effect is generated (steam plume, diesel smoke, electric spark)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING_16&lt;br /&gt;
| Every 16 engine ticks if in motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_STOPPED&lt;br /&gt;
| Every 16 engine ticks if stopped&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_LOAD_UNLOAD&lt;br /&gt;
| Consist loads or unloads cargo&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=3075</id>
		<title>Action3</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=3075"/>
		<updated>2012-03-25T12:22:23Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* cargo-type */ clarification on purchase menu sprite for dual-headed trains, thanks to Pikka (http://www.tt-forums.net/viewtopic.php?p=1003439#p1003439)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action 3 assigns graphics sets (referenced to by (chains of) [[Action2|action 2(s]]) to feature IDs (vehicles, stations, houses, industries, ...).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The format of the data is feature-dependent.&lt;br /&gt;
&lt;br /&gt;
The data is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;amp;lt;Sprite-number&amp;amp;gt; * &amp;amp;lt;Length&amp;amp;gt; 03 &amp;amp;lt;feature&amp;amp;gt; &amp;amp;lt;n-id&amp;amp;gt; &amp;amp;lt;ids...&amp;amp;gt; &amp;amp;lt;num-cid&amp;amp;gt; (&amp;amp;lt;cargo-type&amp;amp;gt; &amp;amp;lt;set-ID&amp;amp;gt;)... &amp;amp;lt;default set-ID&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]&lt;br /&gt;
!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;Sprite-number&amp;amp;gt;&lt;br /&gt;
|dec&lt;br /&gt;
|A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;length&amp;amp;gt;&lt;br /&gt;
|dec&lt;br /&gt;
|The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|03&lt;br /&gt;
|B&lt;br /&gt;
|Defines action 03&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;feature&amp;amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|What type of feature the IDs refer to&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;n-id&amp;amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|Number of IDs this action 3 associates graphics with&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;ids...&amp;amp;gt;&lt;br /&gt;
|B/B*&lt;br /&gt;
|IDs of the current feature this action 3 associates graphics with. There must be as many IDs as &amp;amp;lt;n-id&amp;amp;gt; specifies&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;num-cid&amp;amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|Number of different cargo types to support&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;cargo-type&amp;amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|Cargo type for which to use the following set-ID&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;set-ID&amp;amp;gt;&lt;br /&gt;
|W&lt;br /&gt;
|Set-ID (from action 2 or from a varaction2 chain) to use for this cargo type&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;default set-ID&amp;amp;gt;&lt;br /&gt;
|W&lt;br /&gt;
|Default set-ID to use if none of the above matches&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Sprite-number ===&lt;br /&gt;
&lt;br /&gt;
This is just the number you are at.&lt;br /&gt;
&lt;br /&gt;
=== Length ===&lt;br /&gt;
&lt;br /&gt;
Count the number of bytes in this action.&lt;br /&gt;
&lt;br /&gt;
=== Feature ===&lt;br /&gt;
&lt;br /&gt;
This sets the type of [[Features|feature]] that you wish to change. Set it to:&lt;br /&gt;
&lt;br /&gt;
{|- |&lt;br /&gt;
!Value!![[Features|Feature]]&lt;br /&gt;
|-&lt;br /&gt;
|00||Trains&lt;br /&gt;
|-&lt;br /&gt;
|01||Road Vehicles&lt;br /&gt;
|-&lt;br /&gt;
|02||Ships&lt;br /&gt;
|-&lt;br /&gt;
|03||Aircraft&lt;br /&gt;
|-&lt;br /&gt;
|04||Stations&lt;br /&gt;
|-&lt;br /&gt;
|05||[[Action3/Canals|Canals/Rivers]]&lt;br /&gt;
|-&lt;br /&gt;
|07||Houses&lt;br /&gt;
|-&lt;br /&gt;
|09||Industry Tiles&lt;br /&gt;
|-&lt;br /&gt;
|0A||Industries&lt;br /&gt;
|-&lt;br /&gt;
|0B||Cargos&lt;br /&gt;
|-&lt;br /&gt;
|0C||Sound Effects (generic callback only)&lt;br /&gt;
|-&lt;br /&gt;
|0D||Airports&lt;br /&gt;
|-&lt;br /&gt;
|0E||Signals (generic callback only)&lt;br /&gt;
|-&lt;br /&gt;
|0F||Objects&lt;br /&gt;
|-&lt;br /&gt;
|10||[[Action3/Railtypes|Railtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|11||Airport Tiles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== n-id ===&lt;br /&gt;
&lt;br /&gt;
How many items of the current feature this action 3 defines new graphics for. If this is more than one, all items listed will get the same graphics. If this value has bit 7 set (i.e. 80 added), it is a wagon override. See [[Action3LiveryOverride|Action 3 - Livery Override]] for more info on this feature.&lt;br /&gt;
&lt;br /&gt;
You can make a definition with n-id equal to zero (and thus no ids that follow). &amp;amp;nbsp;This creates a generic feature-specific definition not associated with any particular item. &amp;amp;nbsp;At the moment, this is used for generic callbacks, but might be extended to other functions eventually.&lt;br /&gt;
&lt;br /&gt;
=== ids ===&lt;br /&gt;
&lt;br /&gt;
Feature IDs to use this action 3 for. All IDs are counted from the first of their class, i.e. the first road vehicle has 00, as does the first plane, the first ship, and the first train vehicle.&lt;br /&gt;
&lt;br /&gt;
In OpenTTD since r13482, each ID is an extended byte for vehicles, otherwise the ID is a regular byte.&lt;br /&gt;
&lt;br /&gt;
For canals and rivers the id has a special meaning, see its [[Action3/Canals|own Action 3 page]]&lt;br /&gt;
&lt;br /&gt;
For town buildings, the IDs are the house IDs, and specifying a house ID that haven&#039;t been defined before (by setting its property 08) doesn&#039;t do anything, but doesn&#039;t cause an error, either. Note that you don&#039;t necessarily have to assign a set-ID to a house ID, the old TTD sprite of the substitute type will be used if you don&#039;t do so. &amp;amp;nbsp;Industry tile IDs work in the same manner.&lt;br /&gt;
&lt;br /&gt;
=== num-cid ===&lt;br /&gt;
&lt;br /&gt;
Number of cargo type definitions that follow. Can be zero if only the default follows.&lt;br /&gt;
&lt;br /&gt;
For features 05 (canals/rivers), 07 (houses), 09 (industry tiles), 0A (industries), and 0B (cargoes) this must always be zero.&lt;br /&gt;
&lt;br /&gt;
=== cargo-type ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;For vehicles (features 00 .. 03) and stations (feature 04)&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cargo-type for which the set-ID applies. &amp;amp;nbsp;If the item is built to use this type of cargo, or if it is refitted for it, the given set-ID is used as its graphics. &amp;amp;nbsp;See column &amp;quot;type A&amp;quot; in the table at [[CargoTypes]] for a list of cargo-type values.&lt;br /&gt;
&lt;br /&gt;
If the grf file has installed a [[Action0/Global Settings#Cargo translation table 09|cargo translation table]], the cargo type here refers to the cargo with the label in the given slot of the translation table, e.g. if you use cargo-type=08, it refers to the cargo that has the label in the ninth slot (numbered 08) in the translation table.&lt;br /&gt;
&lt;br /&gt;
If defined, cargo-type FF is used for graphics shown in the purchase or construction window.&lt;br /&gt;
: Note that for dual-headed trains (prop 13) special rules for the purchase menu sprite apply: two sprites are drawn (for front and back) as if the vehicle is normally constructed. If you supply one purchase menu sprite, it will be used for both vehicle parts in the purchase menu. Provide a set of 8 sprites, and the 7th resp. 3rd sprite will be drawn; provide a set of 8 blank sprites except the 7th if you want to fully control a single purchase menu sprite for a dual-headed engine.&lt;br /&gt;
&lt;br /&gt;
For stations, you can additionally define a special cargo-type of FE which prevents the default from being used (which would show the sum of all cargo). &amp;amp;nbsp;Instead, the given set-ID is displayed with no cargo at all.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Railtypes are available only in OpenTTD &amp;amp;gt; r19056 and its action 3 re-uses the &#039;cargo&#039;-type definition.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For details see its [[Action3/Railtypes|own Action 3 page]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;For canals/rivers, houses, industry tiles, industries and cargoes (features 05, 07, 09, 0A and 0B)&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As &amp;amp;lt;num-cid&amp;amp;gt; is zero for features 05 (canals/rivers), 07 (houses), 09 (industry tiles), 0A (industries), and 0B (cargoes), &amp;amp;lt;cargo-type&amp;amp;gt; and &amp;amp;lt;set-ID&amp;amp;gt; need to be skipped and you only have to set &amp;amp;lt;default set-ID&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;For objects (feature 0F)&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objects support a buy menu sprite similar to vehicles (cargo-type FF).&lt;br /&gt;
&lt;br /&gt;
=== default set-ID ===&lt;br /&gt;
&lt;br /&gt;
Default set-ID if no entry from the cargo-type list above matches, or if there are no special cargo-types listed at all.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Below is an example of what a real action 3 pseudo-sprite could look like for a train engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; 13 * 7 &amp;amp;nbsp; 03 00 01 02 00 00 00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&#039;&#039;&#039;Byte&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|&amp;amp;lt;sprite-number&amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|&amp;amp;lt;length&amp;amp;gt; of the action in bytes; start counting at 03 (&amp;amp;lt;action&amp;amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|03&lt;br /&gt;
|&amp;amp;lt;action&amp;amp;gt;: sets this pseudo-sprite to function as action 3&lt;br /&gt;
|-&lt;br /&gt;
|00&lt;br /&gt;
|&amp;amp;lt;feature&amp;amp;gt;: 00 for trains&lt;br /&gt;
|-&lt;br /&gt;
|01&lt;br /&gt;
|&amp;amp;lt;n-id&amp;amp;gt;: One ID to change in this case&lt;br /&gt;
|-&lt;br /&gt;
|02&lt;br /&gt;
|&amp;amp;lt;ids...&amp;amp;gt;: vehicle ID (02 - Ploddyphut Choo-Choo)&lt;br /&gt;
|-&lt;br /&gt;
|00&lt;br /&gt;
|&amp;amp;lt;num-cid&amp;amp;gt;: this engine doesn&#039;t have cargo-specific graphics&lt;br /&gt;
|-&lt;br /&gt;
|00 00&lt;br /&gt;
|&amp;amp;lt;default set-ID&amp;amp;gt;: Use action 2 ID 00, because it is a word value you add 00&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;diff=3068</id>
		<title>CargoTypes</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;diff=3068"/>
		<updated>2012-03-18T13:20:53Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Cargo Labels */ Update FIRS definitions to r2712&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Cargo labels in OpenTTD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{grf|8}} In GRF version 8 the value to be used in all vehicle and industry properties, and in [[Action3|action 3]], is the position of the cargo label in the [[Action0/Global_Settings#Cargo_translation_table_.2809.29|cargo translation table]] included in the GRF.&lt;br /&gt;
&lt;br /&gt;
{{grf|7}} GRF version 7 and below used different cargo properties for different properties (called &amp;quot;Type A&amp;quot; or &amp;quot;translated&amp;quot; and &amp;quot;Type B&amp;quot; or &amp;quot;untranslated&amp;quot; cargo slots), for historical reasons.  This method is deprecated as it meant relying blindly on cargos always using the same slots.  You can see the table of Type A and Type B slots [http://newgrf-specs.tt-wiki.net/index.php?title=CargoTypes&amp;amp;oldid=2861 here] if you really want to.&lt;br /&gt;
&lt;br /&gt;
== Cargo Labels ==&lt;br /&gt;
&lt;br /&gt;
The following cargo labels have been defined so far:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Label&lt;br /&gt;
! Cargo Description&lt;br /&gt;
! [[Action0Cargos#Cargo classes 16|Cargo classes]]&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;TTD Default Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | These cargos are present when no NewGRF is used&lt;br /&gt;
|- &lt;br /&gt;
| PASS&lt;br /&gt;
| Passengers&lt;br /&gt;
| 0001 Passengers &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| COAL&lt;br /&gt;
| Coal&lt;br /&gt;
| 0010 Bulk&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| MAIL&lt;br /&gt;
| Mail&lt;br /&gt;
| 0002 Mail&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
|OIL_&lt;br /&gt;
| Oil&lt;br /&gt;
| 0040 Liquid&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| LVST&lt;br /&gt;
| Livestock&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GOOD&lt;br /&gt;
| Goods&lt;br /&gt;
| 0004 Express&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GRAI&lt;br /&gt;
| Grain&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
|  &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| Temperate; see also WHEA, MAIZ, CERE&lt;br /&gt;
|-&lt;br /&gt;
| WOOD&lt;br /&gt;
| Wood&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IORE&lt;br /&gt;
| Iron Ore&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| STEL&lt;br /&gt;
| Steel&lt;br /&gt;
| 0020 Piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| Renamed &amp;quot;Metal&amp;quot; in FIRS.&lt;br /&gt;
|-&lt;br /&gt;
| VALU&lt;br /&gt;
| Valuables&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| Temperate; see also GOLD, DIAM&lt;br /&gt;
|-&lt;br /&gt;
| PAPR&lt;br /&gt;
| Paper&lt;br /&gt;
| 0020 Piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WHEA&lt;br /&gt;
| Wheat&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Arctic; see also GRAI, MAIZ, CERE&lt;br /&gt;
|-&lt;br /&gt;
| FOOD&lt;br /&gt;
| Food&lt;br /&gt;
| 0084 Express, refrigerated&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| GOLD&lt;br /&gt;
| Gold&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| Arctic; see also VALU, DIAM&lt;br /&gt;
|-&lt;br /&gt;
| RUBR&lt;br /&gt;
|Rubber&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| FRUT&lt;br /&gt;
| Fruit&lt;br /&gt;
| 0090 Bulk, refrigerated&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| MAIZ&lt;br /&gt;
| Maize&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Tropic; see also GRAI, WHEA, CERE&lt;br /&gt;
|-&lt;br /&gt;
| CORE&lt;br /&gt;
| Copper Ore&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WATR&lt;br /&gt;
| Water&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| DIAM&lt;br /&gt;
| Diamonds&lt;br /&gt;
| 0008 Armoured&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
| Tropic; see also VALU, GOLD&lt;br /&gt;
|-&lt;br /&gt;
| SUGR&lt;br /&gt;
| Sugar&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| TOYS&lt;br /&gt;
| Toys&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| BATT&lt;br /&gt;
| Batteries&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| SWET&lt;br /&gt;
|Sweets (Candy)&lt;br /&gt;
|0004 Express &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| TOFF&lt;br /&gt;
|Toffee&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| COLA&lt;br /&gt;
|Cola&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| CTCD&lt;br /&gt;
|Cotton Candy (Candyfloss)&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| BUBL&lt;br /&gt;
|Bubbles&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| PLST&lt;br /&gt;
|Plastic&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland; see also PLAS&lt;br /&gt;
|-&lt;br /&gt;
| FZDR&lt;br /&gt;
|Fizzy Drinks&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Toyland&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;New Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are only present when NewGRF industry sets are used&lt;br /&gt;
|-&lt;br /&gt;
| AORE&lt;br /&gt;
|Bauxite (Aluminium ore)&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| BEER&lt;br /&gt;
|Alcohol&lt;br /&gt;
|0064 Express, piece goods, liquids &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| BDMT&lt;br /&gt;
|Building Materials&lt;br /&gt;
|0220 Piece goods, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| In FIRS: 0030 Bulk, piece goods&lt;br /&gt;
|-&lt;br /&gt;
| BRCK&lt;br /&gt;
|Bricks&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| CERA&lt;br /&gt;
|Ceramics&lt;br /&gt;
| 0020 Piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| CERE&lt;br /&gt;
|Cereals&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CLAY&lt;br /&gt;
|Clay&lt;br /&gt;
|0210 Bulk covered/sheltered &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| In FIRS: 0010 Bulk&lt;br /&gt;
|-&lt;br /&gt;
| CMNT&lt;br /&gt;
|Cement&lt;br /&gt;
| 0210 Bulk covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| COPR&lt;br /&gt;
|Copper&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| DYES&lt;br /&gt;
|Dyes&lt;br /&gt;
| 0060 Piece goods, liquids &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ENSP&lt;br /&gt;
|Engineering Supplies&lt;br /&gt;
|0024 Express, piece goods &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FERT&lt;br /&gt;
|Fertiliser&lt;br /&gt;
| 0030 Bulk, piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FICR&lt;br /&gt;
|Fibre crops&lt;br /&gt;
| 0030 Bulk, piece goods&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FISH&lt;br /&gt;
|Fish&lt;br /&gt;
| 0084 Express, refrigerated &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FMSP&lt;br /&gt;
|Farm Supplies&lt;br /&gt;
|0024 Express, piece goods &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FRVG&lt;br /&gt;
|Fruit (and optionally Vegetables)&lt;br /&gt;
|00A4 Express, piece goods, refrigerated&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GLAS&lt;br /&gt;
|Glass&lt;br /&gt;
| 0420 Piece goods, oversized &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| GRVL&lt;br /&gt;
|Gravel / Ballast&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LIME&lt;br /&gt;
|Lime stone&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| MILK&lt;br /&gt;
|Milk&lt;br /&gt;
|00C4 Express, liquid, refrigerated &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| MNSP&lt;br /&gt;
|Manufacturing Supplies&lt;br /&gt;
|0024 Piece Goods, express &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| OLSD&lt;br /&gt;
|Oil seed&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PETR&lt;br /&gt;
|Petrol / Fuel Oil&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PLAS&lt;br /&gt;
|Plastic&lt;br /&gt;
| 0060 Piece goods, liquid&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| POTA&lt;br /&gt;
|Potash&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RCYC&lt;br /&gt;
|Recyclables&lt;br /&gt;
|0220 Piece Goods, covered&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| RFPR&lt;br /&gt;
|Refined products&lt;br /&gt;
| 0040 Liquid &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SAND&lt;br /&gt;
|Sand&lt;br /&gt;
| 0010 Bulk &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SCMT&lt;br /&gt;
|Scrap Metal&lt;br /&gt;
|1010 Bulk, non-pourable &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| SGBT&lt;br /&gt;
|Sugar beet&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| not in tropical&lt;br /&gt;
|-&lt;br /&gt;
| SGCN&lt;br /&gt;
|Sugarcane&lt;br /&gt;
|1010 Bulk, non-pourable &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| only tropical&lt;br /&gt;
|-&lt;br /&gt;
| SULP&lt;br /&gt;
|Sulphur&lt;br /&gt;
| 0210 Bulk, covered/sheltered &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot;&amp;gt;ECS cargo classes changed as of Dec 31, 2010&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| TOUR&lt;br /&gt;
|Tourists&lt;br /&gt;
| 0005 Passengers, express &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| VEHI&lt;br /&gt;
|Vehicles&lt;br /&gt;
| 0420 Piece goods, oversized &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| WDPR&lt;br /&gt;
|Wood Products&lt;br /&gt;
| 0030 Bulk, piece goods &lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WOOL&lt;br /&gt;
|Wool&lt;br /&gt;
| 0220 Piece goods, covered/sheltered&lt;br /&gt;
| style=&amp;quot;background: #FFCC00; color: black&amp;quot; | [[ttwiki:ECS|ECS]]&lt;br /&gt;
| style=&amp;quot;background: #1AD74C; color: white&amp;quot; | [[ttwiki:FIRS|FIRS]]&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;ecs_cargo_change&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Special Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are for use outside industry sets and do not represent transporting anything&lt;br /&gt;
|-&lt;br /&gt;
| GEAR&lt;br /&gt;
|Locomotive regearing&lt;br /&gt;
|8000 Special &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Using this cargo may make your vehicle set incompatible with some industry sets&lt;br /&gt;
&lt;br /&gt;
use CB36 instead to set capacity to 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Deprecated Cargos&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; | these cargos are not used by any current industry set, and are listed here for backwards compatibility&lt;br /&gt;
|-&lt;br /&gt;
| FUEL&lt;br /&gt;
|Fuel&lt;br /&gt;
|0040 Liquid &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|Use PETR for refined-oil fuel&lt;br /&gt;
|-&lt;br /&gt;
| RSGR&lt;br /&gt;
|Raw Sugar&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Deprecated in FIRS. See SGBT and SGCN&lt;br /&gt;
|-&lt;br /&gt;
| SCRP&lt;br /&gt;
|Scrap Metal&lt;br /&gt;
|0010 Piece Goods &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Deprecated in FIRS, use SCMT instead&lt;br /&gt;
|-&lt;br /&gt;
| TWOD&lt;br /&gt;
|Tropic Wood&lt;br /&gt;
|0020 Piece goods &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| formerly intended as a default cargo&lt;br /&gt;
|-&lt;br /&gt;
| WSTE&lt;br /&gt;
|Waste&lt;br /&gt;
|0010 Bulk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Deprecated in FIRS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you write or publish a NewGRF which introduces a new cargo label, please also add a comment where the new label is used.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFResourceManagement&amp;diff=3010</id>
		<title>GRFResourceManagement</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFResourceManagement&amp;diff=3010"/>
		<updated>2012-02-13T13:45:42Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Description of GRM-ops */ note on not splitting blocks for OpenTTD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Preventing conflicts with limited resources&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since TTDPatch 2.0.1 alpha 51, it has been possible to use action D to participate in cooperative resource management.&lt;br /&gt;
&lt;br /&gt;
This feature is useful for avoiding resource conflicts between grf files. A file may query the available resources, check whether certain IDs are available, and/or mark them as reserved. Then, an action 6 will enter the actual values in the appropriate action entries, for example action 0 or 3 for vehicles, and action A for sprites. Alternatively, one can use another action D to set variable 99 and have it adjust the IDs of the relevant actions appropriately.&lt;br /&gt;
&lt;br /&gt;
If the requested resources are not available, the grf file will be deactivated and be shown with an orange colour in the GRF Status Window, as well as a message indicating the type of resource that was not available. Note that previously allocated resources will not be freed if this happens, therefore you must first &#039;&#039;check&#039;&#039; that &#039;&#039;all&#039;&#039; of the resources are available before reserving &#039;&#039;any&#039;&#039; of them. This means if you have more than one type of resource that is required, you need two action D entries for each type, first one action D for each type using the &amp;quot;check&amp;quot; or &amp;quot;find&amp;quot; operation, after all of which follow the action D entries for each type using the &amp;quot;reserve&amp;quot; or &amp;quot;mark&amp;quot; operation.&lt;br /&gt;
&lt;br /&gt;
This type of action D is ignored during initialisation (because the resources are not initialised yet either), and the target parameter will be set to 0 in that case.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note:&#039;&#039;&#039; This resource management is cooperative. That means that grf files that do not use it can still access all IDs, and the patch will never know about it. Only those grf files that use this resource management will &amp;quot;know&amp;quot; of each other and can be sure not to use conflicting resources. If another grf file then uses a &amp;quot;reserved&amp;quot; ID without telling the patch via an action D, there is nothing that will prevent it from doing so.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 0D &amp;lt;target&amp;gt; 00 &amp;lt;GRM-op&amp;gt; FE FF &amp;lt;feature&amp;gt; &amp;lt;count&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0D||B||Defines action 0D&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;target&amp;gt;||B||Target parameter. See also below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|00||B||Assignment&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;GRM-op&amp;gt;||B||Resource operation to perform. See below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|FE||B||Defines a special variable access&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|FF||B||Prevent conflicts with ReadingOtherGRFParameters&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||Feature to operate on. See below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;count&amp;gt;||W||Number of IDs to operate on.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the check, mark, no-fail check, and get-owner operations, &amp;lt;target&amp;gt; must contain the first ID to be operated on.&lt;br /&gt;
&lt;br /&gt;
== Description of GRM-ops ==&lt;br /&gt;
&lt;br /&gt;
The following operations are available:&lt;br /&gt;
&lt;br /&gt;
Each operation also has a corresponding escape sequence, as listed. See [[GRFActionsDetailed#Byte order|the discussion of escape sequences]] for further information on escape sequences in general.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Number!!Escape!!Operation!!Result!!Meaning&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|00||\DR||Reserve||First found ID||find available resource ID and mark as in use&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|01||\DF||Find||First found ID||find available resource ID but do not mark&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|02||\DC||Check||(none)||check whether given resources (ID stored in the &amp;lt;target&amp;gt; variable) are available&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|03||\DM||Mark||(none)||check that the given resources are available, and if so mark as in use&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|04||\DnF||No-fail Find||(see below)||like &amp;quot;Find&amp;quot;, but does not deactive the grf if no IDs found&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|05||\DnC||No-fail Check||(see below)||like &amp;quot;Check&amp;quot;, but does not deactive the grf if there is a conflict&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|06||\DO||Get Owner||GRF-ID of owner||Retrieve GRFID that has reserved the given ID (or 0 if not reserved)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Action D returns its result (if any) in the given &amp;lt;target&amp;gt; parameter. If the result is marked as &amp;quot;(none)&amp;quot; in the above table, the &amp;lt;target&amp;gt; parameter is not modified.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;reserve&amp;quot; and &amp;quot;find&amp;quot; operations will try to find a contiguous block of &amp;lt;count&amp;gt; entries, and store the first number in the target parameter of the action D. If not enough entries can be found, the grf file is deactivated. For OpenTTD it&#039;s not useful to split large blocks into multiple smaller blocks, as it is unlikely that even a large block can&#039;t be found in the 16777216 allocatable sprites.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;check&amp;quot; and &amp;quot;mark&amp;quot; operations use the value stored in the &#039;&#039;target&#039;&#039; parameter of the action D, and check/mark the block of &amp;lt;count&amp;gt; entries starting from that number. If not all entries are available, the grf file is deactivated.&lt;br /&gt;
&lt;br /&gt;
The no-fail versions work exactly like their regular counterparts, but they set the &amp;lt;target&amp;gt; parameter to -1 (FFFFFFFF) if the resources are unavailable, which can be checked with action 7 afterwards. They do not deactivate the grf file. If successful, they do nothing. They are useful if the file wants to voluntarily skip certain modifications in case other files have changed them already.&lt;br /&gt;
&lt;br /&gt;
Typically, the &amp;quot;reserve&amp;quot; or &amp;quot;find&amp;quot; operations will be used for files that modify only a few vehicles. For (mostly) complete sets, the &amp;quot;check&amp;quot; and &amp;quot;mark&amp;quot; operations are more useful, because it is often not feasible to remap the IDs of an entire set, so these operations will simply make sure that all needed IDs are available.&lt;br /&gt;
&lt;br /&gt;
For each feature, multiple &amp;quot;find&amp;quot; operations will check for different size blocks, but will always return the same base entry number, so &amp;quot;find&amp;quot; should only be called once for each feature.&lt;br /&gt;
&lt;br /&gt;
== Support for features ==&lt;br /&gt;
&lt;br /&gt;
The following features and feature/GRM-op combinations are supported:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Feature!!Reserve!!Find!!Check!!Mark!!Get!!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|00 (trains)||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|01 (road vehicles)||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|02 (ships)||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|03 (aircraft)||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|08 (general sprites)||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;*&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;*&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0B (cargos)||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;X&amp;lt;/center&amp;gt;||see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
0 = unsafe, the IDs may change when loading game&lt;br /&gt;
&lt;br /&gt;
X = safe to use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; = safe but useless&lt;br /&gt;
&lt;br /&gt;
- = do not use&lt;br /&gt;
&lt;br /&gt;
For newcargos, IDs 00..1F refer to the cargo IDs themselves (e.g. ID 0B is available in the temperate climate, and 0C..1F in all climates), whereas IDs 20..3F refer to the bit number from prop. 08 plus 20 (e.g. ID 2D, being bit number 0D=fruit, is available in all climates except tropical). You need to check and mark both ID types for correct operation.&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=2993</id>
		<title>NML:Vehicles</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Vehicles&amp;diff=2993"/>
		<updated>2012-01-29T16:01:24Z</updated>

		<summary type="html">&lt;p&gt;FooBar: /* Variables without parameter */ note that cargo_classes requires a bitmask&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Properties common to all vehicle types==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
| (string)&lt;br /&gt;
| yes&lt;br /&gt;
| for example &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;string(STR_NAME_HEREFORD_TRAM)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;climates_available&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(CLIMATE_XXX, CLIMATE_YYY, ...)&lt;br /&gt;
| set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt;&lt;br /&gt;
| XXX = [TEMPERATE &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ARCTIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TROPICAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TOYLAND], alternatively &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;NO_CLIMATE&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES&amp;lt;/code&amp;gt;. To make a vehicle available in all climates except toyland you could use: &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ALL_CLIMATES &amp;amp;amp; ~bitmask(CLIMATE_TOYLAND)&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;introduction_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;date&amp;lt;/code&amp;gt;(yyyy,mm,dd)&lt;br /&gt;
| no&lt;br /&gt;
| Valid range for yyyy is 0 ... 5000000. In TTDPatch, dates after 2044 will be limited to 2044. Unless the engine is introduced within two years after game-start (always 1920 in TTDPatch), a random number of days between 0 and 511 will be added to this.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 254 (years) or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Number of years a model is &amp;quot;supported&amp;quot; by the manufacturer, see [[#Engine life cycle|below]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt;&lt;br /&gt;
| -128 ... 127 (years)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
Retire the vehicle (make it unavailable in the purchase menu) this many years before reliability starts dropping, see [[#Engine life cycle|below]]. May be negative.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;vehicle_life&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (years)&lt;br /&gt;
| no&lt;br /&gt;
| Life length of an individual vehicle, before it is considered too old and in need of replacement.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;reliability_decay&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| Default vehicles use 20. The higher the value the faster reliability decays, the more frequent service is needed. 0 means reliability never decreases if the vehicle is not too old&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_BULK, CC_COVERED)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;non_refittable_cargo_classes&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
bit set of [[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
| yes&lt;br /&gt;
| for example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_OVERSIZED, CC_SPECIAL)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refittable_cargo_types&amp;lt;/code&amp;gt;&lt;br /&gt;
| bit mask of entries into the cargo translation table&lt;br /&gt;
| yes&lt;br /&gt;
| example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(PASS, MAIL, GOOD)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_allow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to allow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[COAL, IORE]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_disallow_refit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Yes&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23291}} A list of cargo types to disallow refitting to, irrespective of cargo classes. Example: &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;[MAIL]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;loading_speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 (cargo units)&lt;br /&gt;
| yes&lt;br /&gt;
| Units of cargo loaded per tick. Default vehicles use 5 for trains and road vehicles, 10 for ships and 20 for aircraft&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base purchase cost&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_factor&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| =0&lt;br /&gt;
| multiplier to the base running costs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_age_period&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22713}} This property specifies after how many ticks cargo is aged. Default value is 185. 74 ticks is equal to 1 day.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Refittability===&lt;br /&gt;
&lt;br /&gt;
To determine whether your vehicle can be refitted to a certain cargo, OpenTTD uses the following table&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Cargo matches refittable_cargo_classes&lt;br /&gt;
! Cargo matches non_refittable_cargo_classes&lt;br /&gt;
! Cargo in refittable_cargo_types&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| No&lt;br /&gt;
| Not refittable&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Doesn&#039;t matter&lt;br /&gt;
| Yes&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Refittable&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Not refittable&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Not refittable&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Refittable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The results from the above table are always overriden by cargo_allow_refit and cargo_disallow_refit. Whatever the table says, if the cargo is in cargo_allow_refit the vehicle will always be refitable to that cargo.&lt;br /&gt;
&lt;br /&gt;
You should use refittable_cargo_classes and non_refittable_cargo_classes to decide to which cargos your vehicle is refittable, and only use refittable_cargo_types as a last resort to include/exclude some cargo type. &lt;br /&gt;
&lt;br /&gt;
Note that the default cargo cannot be selected explicitly. Instead it is automatically set to use the first refittable cargo, whenever one of the refitting properties is set.&lt;br /&gt;
&lt;br /&gt;
===Engine life cycle===&lt;br /&gt;
&lt;br /&gt;
The life cycle of a vehicle model consists of three phases, as outlined in the following table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! phase&lt;br /&gt;
! duration&lt;br /&gt;
! reliability&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 7 to 38 months&lt;br /&gt;
| increases from 48-73% to 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; - 8 years&lt;br /&gt;
| stays constant at peak, 75-100%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 10 to 20.5 years&lt;br /&gt;
| decreases from peak to 25-50%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;model_life&amp;lt;/code&amp;gt; is set to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;VEHICLE_NEVER_EXPIRES&amp;lt;/code&amp;gt;, the engine remains in phase 2 forever.&lt;br /&gt;
&lt;br /&gt;
Normally, the vehicle is removed from the purchase menu at the and of phase 3. However if you set the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;retire_early&amp;lt;/code&amp;gt; property, it will be retired this many years before (or after, if the value is negative) the end of phase 2.&lt;br /&gt;
&lt;br /&gt;
==Sorting vehicles in the purchase list==&lt;br /&gt;
This is a special property that is not encoded in an item/property-block like most other properties but it has it&#039;s own block instead. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 sort(&amp;lt;feature&amp;gt;, [&amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;, &amp;lt;ID&amp;gt;...]);&lt;br /&gt;
&lt;br /&gt;
The engines will be sorted in the given order on the position where originally the first element was. Say the original engine sorting is this: A B C D E and you use this code &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sort(FEAT_TRAINS, [D, B, A]);&amp;lt;/code&amp;gt; the final sorting will be this: C D B A E&lt;br /&gt;
&lt;br /&gt;
==Train properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;sprite_id&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;SPRITE_ID_NEW_TRAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;speed&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
| Max speed for engines, speed limit for wagons&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;misc_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(TRAIN_FLAG_XXX, ...)&lt;br /&gt;
| FLIP should not be set, TILT and MU the same value&lt;br /&gt;
| XXX=[TILT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 2CC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MU &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FLIP &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; AUTOREFIT] which allows the train to enjoy the tilt bonus, use the 2nd company colour, act as a multiple unit (used for livery selection only) or allow the vehicle to be flipped (reversed) in the depot&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;refit_cost&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 50% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;callback_flags&amp;lt;/code&amp;gt;&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt;&lt;br /&gt;
| item from railtypetable&lt;br /&gt;
| must be the same as front&lt;br /&gt;
| Default railtype table: RAIL, MONO, MGLV. If you install a railtypetable yourself you&#039;ll always get the railtype you specified. If you want a vehicle to run on electric rail and you don&#039;t have a railtypetable, set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;track_type&amp;lt;/code&amp;gt; to RAIL and make sure that you set &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt; to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENGINE_CLASS_ELECTRIC&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_special_flag&amp;lt;/code&amp;gt;&lt;br /&gt;
| [&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_CARGO&amp;lt;/code&amp;gt;]&lt;br /&gt;
| no&lt;br /&gt;
| Set to &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;AI_FLAG_PASSENGER&amp;lt;/code&amp;gt; to tell computer players that it&#039;s an engine that should only be used for passenger service.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;power&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;running_cost_base&amp;lt;/code&amp;gt;&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| =0&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;dual_headed&amp;lt;/code&amp;gt;&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| =0 for both parts&lt;br /&gt;
| 1 = dual_headed, otherwise normal engine&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;weight&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 .. 1279 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ai_engine_rank&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| no&lt;br /&gt;
| TTDPatch only: Higher values make the engine for the TTDPatch AI more attractive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;engine_class&amp;lt;/code&amp;gt;&lt;br /&gt;
| ENGINE_CLASS_XXX&lt;br /&gt;
| no&lt;br /&gt;
| XXX=[STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MONORAIL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; MAGLEV]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 65000 hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
| Only wagons with a livery override for this engine will add power&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;tractive_effort_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;air_drag_coefficient&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;shorten_vehicle&amp;lt;/code&amp;gt;&lt;br /&gt;
| SHORTEN_TO_XXX&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[8_8 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 7_8 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ... &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1_8]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;visual_effect_and_powered&amp;lt;/code&amp;gt;(VISUAL_EFFECT_XXX, offset, &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;ENABLE_WAGON_POWER&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;DISABLE_WAGON_POWER&amp;lt;/code&amp;gt;)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means &amp;quot;take from engine_class property&amp;quot;. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_weight_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0 ... 255 ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
| Adds extra weight for powered wagons, see &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;extra_power_per_wagon&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span #id=&amp;quot;bitmask_vehicle_info&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_vehicle_info&amp;lt;/code&amp;gt;&lt;br /&gt;
| 8-bit bitmask&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Used for obtaining [[#bitmask consist info|&amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;bitmask_consist_info&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road vehicle properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! available for&amp;lt;br /&amp;gt;articulated&amp;lt;br /&amp;gt;vehicle&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_ROADVEH&lt;br /&gt;
| yes&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 514km/h (float, speed units)&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(ROADVEH_FLAG_XXX, ...)&lt;br /&gt;
| partly; tram flag must the same&lt;br /&gt;
| The following flags are defined: ROADVEH_FLAG_TRAM, ROADVEH_FLAG_2CC, ROADVEH_FLAG_AUTOREFIT. Use 0 if you don&#039;t want to set any of these flags.&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| in 25% units of the purchase price cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
| yes&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_base&lt;br /&gt;
| RUNNING_COST_XXX&lt;br /&gt;
| set to RUNNING_COST_NONE&lt;br /&gt;
| XXX = [STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ROADVEH &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; NONE]&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| 0 ... 2550hp (float, power units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| 0 ... 63.75ton (float, mass units)&lt;br /&gt;
| =0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Fraction of the vehicle weight that is available as tractive effort. Tractive effort (in kN) is calculated as (TE coefficient) * 10 * weight (in tons), with 10 being an approximation of the acceleration of gravity (9.81 m/s). Default value is 0.3.&lt;br /&gt;
|-&lt;br /&gt;
| air_drag_coefficient&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
| =0&lt;br /&gt;
| Coefficient of the relative air drag, in arbitrary units. The default value is approximately (8 / max_speed), with max_speed in km/h, clamped to the range 0.004 .. 0.75.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| yes&lt;br /&gt;
| By default, passenger capacity is 4x, and mail/goods capacity 2x larger than capacity for other cargoes. The capacity set here is used for the default (i.e. first refittable) cargo. Use the &amp;lt;code style=&amp;quot;color:green&amp;quot;&amp;gt;cargo_capacity&amp;lt;/code&amp;gt; callback to avoid this effect.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
| no&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| yes&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this vehicle. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ship properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_SHIP&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 ... 127 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(SHIP_FLAG_2CC, SHIP_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of the default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_refittable&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 0=false, 1=true. Note: if you do not set this property to 1, then refittable_cargo_classes / non_refittable_cargo_classes have no effect.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| For ships (unlike other vehicle types) the capacity set here is not affected by the cargo type.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|-&lt;br /&gt;
| ocean_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on ocean tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| canal_speed_fraction&lt;br /&gt;
| 0 ... 1 (float)&lt;br /&gt;
|&lt;br /&gt;
{{ottd|1.2|r22639}} fraction of base speed on canal tiles (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| visual_effect(VISUAL_EFFECT_XXX, offset)&lt;br /&gt;
| XXX=[DEFAULT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; STEAM &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DIESEL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ELECTRIC &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; DISABLE], it is the type of the visual effect you want for this ship. Default means no effect. Offset is the position of the effect. 0 is default, negative values mean more to the front and positive values are backwards. Minimum offset is -8, maximum is 7.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aircraft properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! property&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| sprite_id&lt;br /&gt;
| SPRITE_ID_NEW_AIRCRAFT&lt;br /&gt;
| Set this property to enable new graphics&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| 0 .. 3280 km/h (float, speed units)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| 0 .. 2894&lt;br /&gt;
| {{nml|0.3}} {{ottdp|1.2|no|ottdrev=r23504}} Maximum (euclidean) distance the aircraft can cover between two airports. Set to 0 for unlimited range.&lt;br /&gt;
|-&lt;br /&gt;
| misc_flags&lt;br /&gt;
| bitmask(AIRCRAFT_FLAG_2CC, AIRCRAFT_FLAG_AUTOREFIT)&lt;br /&gt;
| Bitmask with two possible flags, set to 0 to disable both&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| in 1/32 of default refit cost base&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(VEH_CBF_XXX, ...)&lt;br /&gt;
|&lt;br /&gt;
Do not set this, unless you use [[NML:Old style callbacks|old-style callbacks]].&lt;br /&gt;
|-&lt;br /&gt;
| is_helicopter&lt;br /&gt;
| AIRCRAFT_TYPE_XXX&lt;br /&gt;
| XXX=[NORMAL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; HELICOPTER]&lt;br /&gt;
|-&lt;br /&gt;
| is_large&lt;br /&gt;
| AIRCRAFT_SIZE_XXX&lt;br /&gt;
| XXX=[SMALL &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; LARGE]. Set to AIRCRAFT_SIZE_SMALL for helicopters.&lt;br /&gt;
|-&lt;br /&gt;
| acceleration&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| In arbitrary units&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| 0 ... 65536&lt;br /&gt;
| Capacity for the passenger compartment. See also the notes at &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; below.&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Capacity for the mail compartment, if refitted to a cargo in the CC_PASSENGERS class. When refitted to other cargoes, this capacity is added to the passenger capacity to determine the base capacity. The actual capacity is set to this base capacity divided by 1 for mail, 2 for goods and 4 for all other cargoes. To override this effect, use the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;passenger_capacity&amp;lt;/code&amp;gt; and &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;mail_capacity&amp;lt;/code&amp;gt; callbacks.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| SOUND_XXX&lt;br /&gt;
|&lt;br /&gt;
See available [[NML:List of sound effects|sound effects]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Vehicle variables==&lt;br /&gt;
&lt;br /&gt;
Below an overview of all vehicle-specific variables. Not that in the purchase list, the vehicle is not built yet and as such many variables are not available. All general variables are available, refer to the table for info on vehicle-specific variables. Trying to access a non-available variable invokes undefined behaviour. Please note that while all variables are available for all vehicles types, some of them only make sense for one or more vehicle types. For example checking current_railtype for a non-rail vehicle doesn&#039;t make sense at all.&lt;br /&gt;
&lt;br /&gt;
===Variables without parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| The position of the current vehicle-part from the start of the vehicle. The engine will get value 0, the first wagon (or second engine) gets value 1, etc.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_consist_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Same as position_in_consist but counted from the end. The last wagon will get value 0.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_consist&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| The total number of vehicles-parts in this vehicle. For aircraft this will include the shadow and the rotor.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| position_in_vehid_chain_from_end&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| See position_in_consist_from_end, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| num_vehs_in_vehid_chain&lt;br /&gt;
| 1 ... 256&lt;br /&gt;
| No&lt;br /&gt;
| See num_vehs_in_consist, but not of the complete vehicle but only all consecutive parts with the same id.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes_in_consist&lt;br /&gt;
| Bitmask of CC_XXX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo classes|cargo classes]]&lt;br /&gt;
|-&lt;br /&gt;
| most_common_refit&lt;br /&gt;
|&lt;br /&gt;
[[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| No&lt;br /&gt;
| cargo class most often refit to&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_consist_info&lt;br /&gt;
| Bitmask 8 bit&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Binary OR of the values of [[#bitmask vehicle info|bitmask_vehicle_info]] of all vehicles (engines, wagons) in the consist. Only available for rail vehicles.&lt;br /&gt;
|-&lt;br /&gt;
| company_num&lt;br /&gt;
| 0 ... 14&lt;br /&gt;
| Yes&lt;br /&gt;
| company number of the vehicle owner. TTDPatch only supports up to 8 companies (0 ... 7)&lt;br /&gt;
|-&lt;br /&gt;
| company_type&lt;br /&gt;
| PLAYERTYPE_XX&lt;br /&gt;
| Yes&lt;br /&gt;
| PLAYERTYPE_HUMAN, PLAYERTYPE_AI, PLAYERTYPE_HUMAN_IN_AI (human managing AI company) or PLAYERTYPE_AI_IN_HUMAN (AI managing human company). OpenTTD only uses PLAYERTYPE_HUMAN and PLAYERTYPE_AI. If you cheat yourself to be part of an AI company OpenTTD will still report PLAYERTYPE_AI for the company with yourself and the AI and it&#039;ll report PLAYERTYPE_HUMAN for the now uncontrolled company.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour1&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| company_colour2&lt;br /&gt;
| COLOUR_XXX&lt;br /&gt;
| Yes&lt;br /&gt;
|&lt;br /&gt;
Same as company_colour1, if no 2nd company colour is chosen. Refer to the table [[NML:List of default colour translation palettes#Company colour helper functions|here]] for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| aircraft_height&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Height difference between the aircraft and its shadow. 8 Units are equivalent to one height level on the map.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XX&lt;br /&gt;
| No&lt;br /&gt;
| AIRPORTTYPE_SMALL, AIRPORTTYPE_LARGE, AIRPORTTYPE_HELIPORT or AIRPORTTYPE_OILRIG&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_cur&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) vehicle and this vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_cur_next&lt;br /&gt;
| -2 ... 2&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between this vehicle and the next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info_prev_next&lt;br /&gt;
| -4 ... 4&lt;br /&gt;
| No&lt;br /&gt;
| Difference in direction between the previous (towards engine) and next (towards rear end) vehicle. Curvature to the right is positive. 1 unit is 45 degrees. Equal to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curve_invo_prev_cur + curv_info_cur_next&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| curv_info&lt;br /&gt;
| vehicle_curv_info(&#039;&#039;prev_cur&#039;&#039;, &#039;&#039;cur_next&#039;&#039;)&#039;&#039;&#039;&#039;&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Returns a magic number that represents the curvature state of the prev-cur-next vehicle triplet. Do not try to make sense of this magic number, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;vehicle_curv_info()&amp;lt;/code&amp;gt; instead to make comparisons. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;curv_info == vehicle_curv_info(a, b)&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;(curv_info_prev_cur == a) &amp;amp;amp;&amp;amp;amp; (curv_info_cur_next == b)&amp;lt;/code&amp;gt;, however the former can easily be used in a switch-block.&lt;br /&gt;
|-&lt;br /&gt;
| motion_counter&lt;br /&gt;
| 0 ... 15&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Is increased every time the vehicle moves a single step on the map. Useful for animations.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_type_in_veh&lt;br /&gt;
| entry in cargo translation table&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| 0xFF if not present in the table&lt;br /&gt;
|-&lt;br /&gt;
| cargo_unit_weight&lt;br /&gt;
| weight per unit in 1/16t&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes&lt;br /&gt;
| Bitmask of [[NML:Cargos#Cargo properties|cargo class]]&lt;br /&gt;
| Yes, for the default cargo&lt;br /&gt;
| class of the currently transported cargo&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_available&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is available on the open market&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_testing&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being tested&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_offered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Yes&lt;br /&gt;
| Value is 1 if the vehicle is currently being offered for exclusive preview&lt;br /&gt;
|-&lt;br /&gt;
| build_year&lt;br /&gt;
| 0 ... 5000000&lt;br /&gt;
| Yes&lt;br /&gt;
| 0-based year when the vehicle was built, current year if the vehicle is not built yet&lt;br /&gt;
|-&lt;br /&gt;
| direction&lt;br /&gt;
| DIRECTION_XX&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
See [[NML:List of direction constants|here]] for an overview of possible values and their meaning.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Cargo capacity (number of units) of the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_count&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Number of cargo units of cargo in the vehicle&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| Yes, always 0&lt;br /&gt;
| Cargo subtype, used to provide more than one refit option for the same cargo type. See also the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype_text&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power and is on the correct track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_not_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle is either on a wrong track type or it doesn&#039;t provide power at all&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_potentially_powered&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle provides power, if it is on a suitable track type&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_reversed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has reversed an odd number of times&lt;br /&gt;
|-&lt;br /&gt;
| built_during_preview&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle was built during the exclusive preview stage&lt;br /&gt;
|-&lt;br /&gt;
| current_railtype&lt;br /&gt;
| No&lt;br /&gt;
| Entry from railtype translation table or 0xFF&lt;br /&gt;
| Don&#039;t use this variable unless you&#039;ve defined a railtype translation table. If the train is running on a railtype that is not listed in your railtype translation table this variable will contain 0xFF. Available since OpenTTD r20164.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
|&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| random_bits&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
Random data that can be used to randomize certain descisions. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| grfid&lt;br /&gt;
| 0 ... 0xFFFFFFFF&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
GRFID that defined the [[NML:Graphics|graphics]]-block for this vehicle. To compare this with other grfids, use the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;str2number()&amp;lt;/code&amp;gt; to convert the other GRFID to a number as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_type_id&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| GRF-local ID of the vehicle, equal to the item ID. Note that vehicles from other NewGRFs may have the same ID, so you&#039;ll generally have to check the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;grfid&amp;lt;/code&amp;gt; as well.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_hidden&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is hidden in a depot or tunnel.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_stopped&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is stopped, or if it is braking for a stop (trains only).&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_crashed&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle has crashed.&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_broken&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is broken down.&lt;br /&gt;
|-&lt;br /&gt;
| date_of_last_service&lt;br /&gt;
| date(year, month, day)&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| breakdowns_since_last_service&lt;br /&gt;
| 0 ... 255&lt;br /&gt;
| No&lt;br /&gt;
| Number of breakdowns since the last service&lt;br /&gt;
|-&lt;br /&gt;
| reliability&lt;br /&gt;
| 0 ... 100&lt;br /&gt;
| No&lt;br /&gt;
| Reliability (percentage)&lt;br /&gt;
|-&lt;br /&gt;
| age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| max_age_in_days&lt;br /&gt;
| 0 ... 65535&lt;br /&gt;
| No&lt;br /&gt;
| Maximum vehicle age in days.&lt;br /&gt;
|-&lt;br /&gt;
| current_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The current speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| max_speed&lt;br /&gt;
| (speed units)&lt;br /&gt;
| No&lt;br /&gt;
| The maximum speed of the vehicle in m/s&lt;br /&gt;
|-&lt;br /&gt;
| vehicle_is_in_depot&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| No&lt;br /&gt;
| Value is 1 if the vehicle is inside a depot&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Variables that require an argument===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! Argument&lt;br /&gt;
! value range&lt;br /&gt;
! available in&amp;lt;br /&amp;gt;purchase list?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| count_veh_id&lt;br /&gt;
| The vehicle ID to look for.&lt;br /&gt;
| 0..255&lt;br /&gt;
| No&lt;br /&gt;
| The number of vehicles in the current consist that have the given ID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vehicle callbacks==&lt;br /&gt;
The following table contains a list of available vehicle callbacks. Additionally, it&#039;s possible to provide cargo-specific graphics, using the identifier from the [[NML:Cargotable|cargo table]] as callback name. These callbacks will be used if the vehicle is refitted to the corresponding cargo type. If no cargo-specific graphics match the cargo that the vehicle is carrying, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;default&amp;lt;/code&amp;gt; callback is used instead. Cargo-specific graphics callbacks are never called from the purchase menu, refer to the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; callback below instead.&lt;br /&gt;
&lt;br /&gt;
Note that the above affects &#039;&#039;&#039;graphics only&#039;&#039;&#039;, other callbacks are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| default&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Sprite group&lt;br /&gt;
| &#039;Normal&#039; vehicle graphics, if no cargo-specific graphics apply.&lt;br /&gt;
|-&lt;br /&gt;
| purchase&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics to show in the buy menu (only the horizontal view is needed)&lt;br /&gt;
|-&lt;br /&gt;
| rotor&lt;br /&gt;
| Aircraft (helicopters)&lt;br /&gt;
| No&lt;br /&gt;
| Sprite group&lt;br /&gt;
| Graphics for the helicopter rotor (4 sprites; 1 stopped and 3 moving)&lt;br /&gt;
|-&lt;br /&gt;
| random_trigger&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| N/A&lt;br /&gt;
| See [[NML:Random switch|random switch]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_subtype_text&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String, or CB_RESULT_NO_TEXT&lt;br /&gt;
| With this callback, you can display extra text after the cargo in the vehicle information window. This callback is called during refitting, with succesively increased values of the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, until the callback returns CB_RESULT_NO_TEXT. All returned strings are then displayed as refit options. The chosen refit option is saved in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;cargo_subtype&amp;lt;/code&amp;gt; variable, so it can be used later for other things. In the HEQS grf for example, this mechanism is used to let the user choose between different capacities of the same vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| additional_text&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
| String&lt;br /&gt;
| Additional text to show in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
| colour_mapping&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_colour_mapping&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Recolour sprite number&lt;br /&gt;
|&lt;br /&gt;
With this callback, you can use a different recolour sprite instead of the standard 1cc / 2cc company colour remappings. See [[NML:List of default colour translation palettes|here]] for a list of default palettes. See the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;reserve_sprites()&amp;lt;/code&amp;gt; for info on how to allocate your own sprite. For performance, the result is cached and only updated if the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt; every_32_days&amp;lt;/code&amp;gt; callback requires so. Add CB_RESULT_COLOUR_MAPPING_ADD_CC to the result to add the company colour to the sprites, this requires 16 (1cc) or 256 (2cc) sprites in total.&lt;br /&gt;
|-&lt;br /&gt;
| start_stop&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_NO_TEXT&lt;br /&gt;
| Called when starting or stopping a vehicle. Mainly useful to prevent vehicles from leaving the depot unless a certain condition is met. Return CB_RESULT_NO_TEXT to allow or a string (containing an error message) to disallow starting/stopping.&lt;br /&gt;
|-&lt;br /&gt;
| every_32_days&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| bitmask(CB_RESULT_32_DAYS_XXX, ...)&lt;br /&gt;
| Called every 32 days. Set CB_RESULT_32_DAYS_TRIGGER in the bitmask to trigger TRIGGER_VEHICLE_32_CALLBACK. Set CB_RESULT_32_DAYS_COLOUR_MAPPING in the bitmask to update the colour mapping by re-running the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;colour_mapping&amp;lt;/code&amp;gt; callback.&lt;br /&gt;
|-&lt;br /&gt;
| sound_effect&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
| SOUND_XXX, sound(&amp;quot;sound.wav&amp;quot;), import_sound(grfid, number) or CB_RESULT_NO_SOUND&lt;br /&gt;
|&lt;br /&gt;
Called to play various vehicle sounds. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains the sound event, see the [[#Sound events|table]] below. Return SOUND_XXX (see [[NML:List_of_sound_effects|here]]) to return a default sound. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sound(&amp;quot;soundfile&amp;quot;)&amp;lt;/code&amp;gt; imports a sound from a .wav file. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;import_sound(grfid, number)&amp;lt;/code&amp;gt; imports a sound from another grf. A failed (or not implemented) callback will cause the default sound to be played. Return CB_RESULT_NO_SOUND to play no sound at all.&lt;br /&gt;
|-&lt;br /&gt;
| articulated_part&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes (no separate callback)&lt;br /&gt;
| Vehicle ID, or CB_RESULT_NO_MORE_ARTICULATED_PARTS&lt;br /&gt;
| With this callback, you can add articulated parts (e.g. tenders) to your vehicle. Called repeatedly, until CB_RESULT_NO_MORE_ARTICULATED_PARTS is returned. After each call, the returned vehicleID is added to your vehicle. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt; contains 1 during the first call, 2 during the second, etc. Note that callback may be called from the purchase list, using vehicle variables is not possible. Or CB_RESULT_REVERSED_VEHICLE to the returned vehicle ID to display the vehicle backwards. &lt;br /&gt;
&lt;br /&gt;
For NML 0.2 and lower the vehicle ID of the articulated part must be in the range 0 .. 127.&lt;br /&gt;
|-&lt;br /&gt;
| can_attach_wagon&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
| String or CB_RESULT_ATTACH_XXX&lt;br /&gt;
| Called when a wagon is being attached, to allow or disallow attaching. This callback has to be defined at the engine. However, variables in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;SELF&amp;lt;/code&amp;gt; scope refer to the wagon being attached, the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;PARENT&amp;lt;/code&amp;gt; scope refers to the engine that the wagon is being attached to. Return a string to disallow with the string as error message. Return CB_RESULT_ATTACH_DISALLOW to disallow with standard message (&amp;quot;incompatible railtypes&amp;quot;), CB_RESULT_ATTACH_ALLOW to allow or CB_RESULT_ATTACH_ALLOW_IF_RAILTYPES to allow if the railtypes match (default).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following callbacks all have an equivalent property. The property description applies here also, except where otherwise noted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Available for&lt;br /&gt;
! In purchase menu?&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| loading_speed&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_speed&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, only&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| running_cost_factor&lt;br /&gt;
| All&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_running_cost_factor&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| refit_cost&lt;br /&gt;
| {{ottdp|1.2|no|ottdrev=r23089}} All&lt;br /&gt;
| Yes&lt;br /&gt;
| 0 .. 16377 as refit cost. Add &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;CB_RESULT_AUTOREFIT&amp;lt;/code&amp;gt; if you want to allow autorefit.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_age_period&lt;br /&gt;
| All&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| cargo_capacity&lt;br /&gt;
| All except aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_cargo_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| passenger_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_passenger_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mail_capacity&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_mail_capacity&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| range&lt;br /&gt;
| Aircraft&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_range&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect_and_powered&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visual_effect&lt;br /&gt;
| Road Vehicles, Ships&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_power&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_weight&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Units are not (yet) available&lt;br /&gt;
|-&lt;br /&gt;
| shorten_vehicle&lt;br /&gt;
| Trains, Road vehicles&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tractive_effort_coefficient&lt;br /&gt;
| Trains, Road Vehicles&lt;br /&gt;
| Yes, unless &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;purchase_tractive_effort_coefficient&amp;lt;/code&amp;gt; is set separately&lt;br /&gt;
| Value range is 0 .. 255 instead of 0 .. 1.&lt;br /&gt;
|-&lt;br /&gt;
| bitmask_vehicle_info&lt;br /&gt;
| Trains&lt;br /&gt;
| No&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sound events===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Event&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_START&lt;br /&gt;
| Vehicle leaves station or depot, plane takes off&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TUNNEL&lt;br /&gt;
| Vehicle enters tunnel&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_BREAKDOWN&lt;br /&gt;
| Vehicle breaks down (not for planes)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING&lt;br /&gt;
| Once per engine tick, but no more than once per vehicle motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_TOUCHDOWN&lt;br /&gt;
| Aircraft touches down&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_VISUAL_EFFECT&lt;br /&gt;
| Visual effect is generated (steam plume, diesel smoke, electric spark)&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_RUNNING_16&lt;br /&gt;
| Every 16 engine ticks if in motion&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_STOPPED&lt;br /&gt;
| Every 16 engine ticks if stopped&lt;br /&gt;
|-&lt;br /&gt;
| SOUND_EVENT_LOAD_UNLOAD&lt;br /&gt;
| Consist loads or unloads cargo&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=ObjectLabels&amp;diff=2964</id>
		<title>ObjectLabels</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=ObjectLabels&amp;diff=2964"/>
		<updated>2012-01-14T19:40:22Z</updated>

		<summary type="html">&lt;p&gt;FooBar: add new Dutch Road Furniture sublabels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Object labels=&lt;br /&gt;
&lt;br /&gt;
Defining Object Class Label Recommendations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recommendations - Predefined ==&lt;br /&gt;
&lt;br /&gt;
# Predefined labels are best used for single objects that are not part of a comprehensive set&lt;br /&gt;
# It is possible to have a label for each object. This would make for a very ungainly menu.&lt;br /&gt;
# A labeling system allows a coder/author to make their works much more user friendly.&lt;br /&gt;
# To keep the numbers more manageable, the classes are as generic as possible.&lt;br /&gt;
# While being generic, assigning objects to a label should be intuitive.&lt;br /&gt;
# Assuming that there will be special circumstances where a coder/author needs to deviate from the norm, &#039;&#039;&#039;the Recommendation is not mandatory&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!colspan=3|PREDEFINED RECOMMENDATIONS&lt;br /&gt;
|-&lt;br /&gt;
!Label!!Action4 Text!!Description&lt;br /&gt;
|-&lt;br /&gt;
|STRU||Structures||Multitile engineered objects that don&#039;t quite fit in as industries, houses or stations - dams etc.&lt;br /&gt;
|-&lt;br /&gt;
|INFR||Infrastructure||light poles, communication towers, transmission towers, road signs, etc.&lt;br /&gt;
|-&lt;br /&gt;
|BLDG||Buildings||Normally accommodated by industries, houses or stations but the author feels there are limiting circumstances.&lt;br /&gt;
|-&lt;br /&gt;
|NATR||Natural objects||caves, coral reefs, swamps, etc.&lt;br /&gt;
|-&lt;br /&gt;
|PARK||Public areas||Normally accommodated by towns or industries (tourist stuff ...) but the author feels there are limiting circumstances - Parks, statues, etc.&lt;br /&gt;
|-&lt;br /&gt;
|ARTF||Artifacts||They really don&#039;t fit under any of the above - shipwrecks, etc.&lt;br /&gt;
|-&lt;br /&gt;
|MISC||Miscellaneous||For the author who is unable to accommodate his/her object under any of the previous labels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Recommendations - Author defined ==&lt;br /&gt;
&lt;br /&gt;
# Author defined labels are best used for comprehensive object sets that consist of several obviously related objects.&lt;br /&gt;
# Each label must consist of four (4) alphanumeric characters.&lt;br /&gt;
# To prevent menu confusion, new labels should be unique and should not duplicate predefined labels (see chart above) nor previously selected author defined labels (see chart below).&lt;br /&gt;
# The author should add their label(s) to the following chart in alphanumeric order.&lt;br /&gt;
# If an author is uncomfortable with adding a label to the chart, they can PM their request to [http://www.tt-forums.net/ucp.php?i=pm&amp;amp;amp;mode;=compose&amp;amp;amp;action; wallyweb].&lt;br /&gt;
# The chart will be regularly reviewed for duplications.&lt;br /&gt;
# The chart will be regularly edited for alphanumeric sequence.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!colspan=5|AUTHOR DEFINED RECOMMENDATIONS&lt;br /&gt;
|-&lt;br /&gt;
!Label!!Action4 Text!!Description!!Author!!TT-Forums link&lt;br /&gt;
|-&lt;br /&gt;
|EXM1||Example 1||An example label listing||your name here||Forum link goes here&lt;br /&gt;
|-&lt;br /&gt;
|NLRA||Dutch Road Furniture: Matrix Activators||Activators for matrix signs for Dutch Road Furniture||FooBar||http://www.tt-forums.net/viewtopic.php?t=56316&lt;br /&gt;
|-&lt;br /&gt;
|NLRF||Dutch Road Furniture||For Dutch road related objects (generic label)||FooBar||http://www.tt-forums.net/viewtopic.php?t=56316&lt;br /&gt;
|-&lt;br /&gt;
|NLRM||Dutch Road Furniture: Motorways||Motorway related objects for Dutch Road Furniture||FooBar||http://www.tt-forums.net/viewtopic.php?t=56316&lt;br /&gt;
|-&lt;br /&gt;
|NLRS||Dutch Road Furniture: Signs and Fingerposts||Road signs and fingerposts for Dutch Road Furniture||FooBar||http://www.tt-forums.net/viewtopic.php?t=56316&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Dospal.png&amp;diff=2895</id>
		<title>File:Dospal.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Dospal.png&amp;diff=2895"/>
		<updated>2011-12-04T13:18:49Z</updated>

		<summary type="html">&lt;p&gt;FooBar: uploaded a new version of &amp;quot;File:Dospal.png&amp;quot;:&amp;amp;#32;File actually had WIN palette applied and as a result some colours were missing. Now fixed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DOS palette (=OpenTTD default)&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:TTD_Palettes.png&amp;diff=2894</id>
		<title>File:TTD Palettes.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:TTD_Palettes.png&amp;diff=2894"/>
		<updated>2011-12-04T13:07:47Z</updated>

		<summary type="html">&lt;p&gt;FooBar: uploaded a new version of &amp;quot;File:TTD Palettes.png&amp;quot;:&amp;amp;#32;A number of colours in the DOS image were incorrect, most notably the water cycles.
Colours in both palettes are now correct, except magic pink.
DOS palette applied to PNG file.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;palettes and indices&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Realsprites&amp;diff=2628</id>
		<title>NML:Realsprites</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Realsprites&amp;diff=2628"/>
		<updated>2011-09-08T18:54:35Z</updated>

		<summary type="html">&lt;p&gt;FooBar: When there&amp;#039;s only one flag, there&amp;#039;s nothing to combine with OR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavBlocksyntax}}&lt;br /&gt;
&lt;br /&gt;
Several features will need to reference actual graphics from files you created. You can provide real sprites in many different formats, all detailed below. There is a lot of information you&#039;ll need to provide. Most important are the filename and the location of the sprite in that file. Since most blocks that reference realsprites will allow you to specify a default filename, you don&#039;t often need to give a filename for every separate sprite.&lt;br /&gt;
&lt;br /&gt;
Allowed formats:&lt;br /&gt;
&lt;br /&gt;
 [left_x, upper_y, width, height, offset_x, offset_y]&lt;br /&gt;
 [left_x, upper_y, width, height, offset_x, offset_y, compression]&lt;br /&gt;
 [left_x, upper_y, width, height, offset_x, offset_y, filename]&lt;br /&gt;
 [left_x, upper_y, width, height, offset_x, offset_y, compression, filename]&lt;br /&gt;
 [offset_x, offset_y]&lt;br /&gt;
 [offset_x, offset_y, compression]&lt;br /&gt;
 [offset_x, offset_y, filename]&lt;br /&gt;
 [offset_x, offset_y, compression, filename]&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t specify left_x, upper_y, width and height it&#039;ll default to the complete file. If you don&#039;t specify the filename it&#039;ll take the filename from the block containing this realsprite. It&#039;s a fatal error not to specify a filename for either the block containing a realsprite or the realsprite itself. For possible values of compression, see the table below.&lt;br /&gt;
&lt;br /&gt;
For all parameters you can use expressions as complex as you want as long as they can be resolved at compile time.&lt;br /&gt;
&lt;br /&gt;
As of NML r1654 the compression bit has only two possible values. When ommitted it will take the default value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CROP (default) or NOCROP&lt;br /&gt;
| Whether to crop the sprites when the -c command line option is set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 [0, 0, 64, 31, -31, 0, TILE]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:List_of_tile_slopes&amp;diff=2626</id>
		<title>NML:List of tile slopes</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:List_of_tile_slopes&amp;diff=2626"/>
		<updated>2011-09-06T13:58:35Z</updated>

		<summary type="html">&lt;p&gt;FooBar: added slope sprites to slope constant table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavAdditionalreferences}}&lt;br /&gt;
&lt;br /&gt;
Tiles in TTD can have various slopes. The slope is a bitmask that may contain the following bits:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! bit flag&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| CORNER_W&lt;br /&gt;
| west corner is above the lowest corner.&lt;br /&gt;
|-&lt;br /&gt;
| CORNER_S&lt;br /&gt;
| south corner is above the lowest corner.&lt;br /&gt;
|-&lt;br /&gt;
| CORNER_E&lt;br /&gt;
| east corner is above the lowest corner.&lt;br /&gt;
|-&lt;br /&gt;
| CORNER_N&lt;br /&gt;
| north corner is above the lowest corner.&lt;br /&gt;
|-&lt;br /&gt;
| IS_STEEP_SLOPE&lt;br /&gt;
| this tile is a steep slope (the corner opposite to the lowest corner is 2 units higher).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The resulting, possible values of this bitmask are given in the following table. The image below that illustrates them graphically. See also the [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;num_corners_raised(&#039;&#039;slope&#039;&#039;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sprites for slopes are always in the same order in TTD. For example, &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUND_SPRITE_NORMAL&amp;lt;/code&amp;gt; is the sprite number of a flat grass tile. It is followed by 18 other sprites, that display a flat grass tile for each possible slope. The order of these sprites is given in the last column of the table. The [[NML:Builtin functions|builtin function]] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;slope_to_sprite_offset(&#039;&#039;slope&#039;&#039;)&amp;lt;/code&amp;gt; can be used to determine the sprite offset of a given slope.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Sprite&lt;br /&gt;
! Named constant&lt;br /&gt;
! Equivalent bitmask&lt;br /&gt;
! Numerical value&lt;br /&gt;
! Sprite offset&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3981.png]]&lt;br /&gt;
| SLOPE_FLAT&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask()&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3982.png]]&lt;br /&gt;
| SLOPE_W&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_W)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3983.png]]&lt;br /&gt;
| SLOPE_S&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_S)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3985.png]]&lt;br /&gt;
| SLOPE_E&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_E)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3989.png]]&lt;br /&gt;
| SLOPE_N&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3990.png]]&lt;br /&gt;
| SLOPE_NW&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N, CORNER_W)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 9&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3984.png]]&lt;br /&gt;
| SLOPE_SW&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_S, CORNER_W)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3987.png]]&lt;br /&gt;
| SLOPE_SE&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_S, CORNER_E)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 6&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3993.png]]&lt;br /&gt;
| SLOPE_NE&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N, CORNER_E)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 12&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3986.png]]&lt;br /&gt;
| SLOPE_EW&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_E, CORNER_W)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3991.png]]&lt;br /&gt;
| SLOPE_NS&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N, CORNER_S)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 10&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3992.png]]&lt;br /&gt;
| SLOPE_NWS&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N, CORNER_W, CORNER_S)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 11&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3988.png]]&lt;br /&gt;
| SLOPE_WSE&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_W, CORNER_S, CORNER_E)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 7&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3995.png]]&lt;br /&gt;
| SLOPE_SEN&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_S, CORNER_E, CORNER_N)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 14&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3994.png]]&lt;br /&gt;
| SLOPE_ENW&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_E, CORNER_N, CORNER_W)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 13&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3998.png]]&lt;br /&gt;
| SLOPE_STEEP_W&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_N, CORNER_W, CORNER_S, IS_STEEP_SLOPE)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 27&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3997.png]]&lt;br /&gt;
| SLOPE_STEEP_S&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_W, CORNER_S, CORNER_E, IS_STEEP_SLOPE)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 23&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3999.png]]&lt;br /&gt;
| SLOPE_STEEP_E&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_S, CORNER_E, CORNER_N, IS_STEEP_SLOPE)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 30&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Sprite3996.png]]&lt;br /&gt;
| SLOPE_STEEP_N&lt;br /&gt;
| &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CORNER_E, CORNER_N, CORNER_W, IS_STEEP_SLOPE)&amp;lt;/code&amp;gt;&lt;br /&gt;
| 29&lt;br /&gt;
| 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;[[Image:Industrytile var60.png|frame|left|tile slopes]]&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3999.png&amp;diff=2625</id>
		<title>File:Sprite3999.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3999.png&amp;diff=2625"/>
		<updated>2011-09-06T13:55:15Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3998.png&amp;diff=2624</id>
		<title>File:Sprite3998.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3998.png&amp;diff=2624"/>
		<updated>2011-09-06T13:55:08Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3997.png&amp;diff=2623</id>
		<title>File:Sprite3997.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3997.png&amp;diff=2623"/>
		<updated>2011-09-06T13:55:00Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3996.png&amp;diff=2622</id>
		<title>File:Sprite3996.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3996.png&amp;diff=2622"/>
		<updated>2011-09-06T13:54:53Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3995.png&amp;diff=2621</id>
		<title>File:Sprite3995.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3995.png&amp;diff=2621"/>
		<updated>2011-09-06T13:54:47Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3994.png&amp;diff=2620</id>
		<title>File:Sprite3994.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3994.png&amp;diff=2620"/>
		<updated>2011-09-06T13:54:39Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3993.png&amp;diff=2619</id>
		<title>File:Sprite3993.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3993.png&amp;diff=2619"/>
		<updated>2011-09-06T13:54:31Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3992.png&amp;diff=2618</id>
		<title>File:Sprite3992.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3992.png&amp;diff=2618"/>
		<updated>2011-09-06T13:54:24Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3991.png&amp;diff=2617</id>
		<title>File:Sprite3991.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3991.png&amp;diff=2617"/>
		<updated>2011-09-06T13:54:17Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3990.png&amp;diff=2616</id>
		<title>File:Sprite3990.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3990.png&amp;diff=2616"/>
		<updated>2011-09-06T13:54:10Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3989.png&amp;diff=2615</id>
		<title>File:Sprite3989.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3989.png&amp;diff=2615"/>
		<updated>2011-09-06T13:54:01Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3988.png&amp;diff=2614</id>
		<title>File:Sprite3988.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3988.png&amp;diff=2614"/>
		<updated>2011-09-06T13:53:54Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3987.png&amp;diff=2613</id>
		<title>File:Sprite3987.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3987.png&amp;diff=2613"/>
		<updated>2011-09-06T13:53:45Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3985.png&amp;diff=2612</id>
		<title>File:Sprite3985.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3985.png&amp;diff=2612"/>
		<updated>2011-09-06T13:53:37Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3986.png&amp;diff=2611</id>
		<title>File:Sprite3986.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3986.png&amp;diff=2611"/>
		<updated>2011-09-06T13:52:55Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3984.png&amp;diff=2610</id>
		<title>File:Sprite3984.png</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=File:Sprite3984.png&amp;diff=2610"/>
		<updated>2011-09-06T13:52:44Z</updated>

		<summary type="html">&lt;p&gt;FooBar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FooBar</name></author>
	</entry>
</feed>